[Taspring-linux-commit] r5904 - in site/trunk/www-root/wiki: . inc inc/auth inc/geshi inc/lang/ar inc/lang/bg inc/lang/ca inc/lang/cs inc/lang/da inc/lang/de inc/lang/el inc/lang/en inc/lang/eo inc/lang/es inc/lang/et inc/lang/eu inc/lang/fi inc/lang/fo inc/lang/fr inc/lang/gl inc/lang/he inc/lang/hr inc/lang/hu inc/lang/id inc/lang/it inc/lang/ja inc/lang/ko inc/lang/ku inc/lang/lt inc/lang/lv inc/lang/mg inc/lang/nl inc/lang/no inc/lang/pl inc/lang/pt inc/lang/pt-br inc/lang/ro inc/lang/ru inc/lang/sk inc/lang/sl inc/lang/sr inc/lang/sv inc/lang/tr inc/lang/uk inc/lang/vi inc/lang/zh inc/lang/zh-tw inc/parser lib/exe lib/images/fileicons lib/plugins lib/plugins/acl lib/plugins/acl/lang/ar lib/plugins/acl/lang/bg lib/plugins/acl/lang/ca lib/plugins/acl/lang/cs lib/plugins/acl/lang/da lib/plugins/acl/lang/de lib/plugins/acl/lang/el lib/plugins/acl/lang/en lib/plugins/acl/lang/eo lib/plugins/acl/lang/es lib/plugins/acl/lang/et lib/tpl/spring
taspring-linux-commit at lists.berlios.de
taspring-linux-commit at lists.berlios.de
Sun May 18 01:28:17 CEST 2008
Author: tnowell
Date: 2008-05-18 01:27:47 +0200 (Sun, 18 May 2008)
New Revision: 5904
Modified:
site/trunk/www-root/wiki/.htaccess
site/trunk/www-root/wiki/doku.php
site/trunk/www-root/wiki/feed.php
site/trunk/www-root/wiki/inc/DifferenceEngine.php
site/trunk/www-root/wiki/inc/FeedParser.php
site/trunk/www-root/wiki/inc/HTTPClient.php
site/trunk/www-root/wiki/inc/IXR_Library.php
site/trunk/www-root/wiki/inc/JSON.php
site/trunk/www-root/wiki/inc/JpegMeta.php
site/trunk/www-root/wiki/inc/SimplePie.php
site/trunk/www-root/wiki/inc/TarLib.class.php
site/trunk/www-root/wiki/inc/ZipLib.class.php
site/trunk/www-root/wiki/inc/actions.php
site/trunk/www-root/wiki/inc/auth.php
site/trunk/www-root/wiki/inc/auth/basic.class.php
site/trunk/www-root/wiki/inc/auth/ldap.class.php
site/trunk/www-root/wiki/inc/auth/mysql.class.php
site/trunk/www-root/wiki/inc/auth/pgsql.class.php
site/trunk/www-root/wiki/inc/auth/plain.class.php
site/trunk/www-root/wiki/inc/auth/punbb.class.php
site/trunk/www-root/wiki/inc/blowfish.php
site/trunk/www-root/wiki/inc/cache.php
site/trunk/www-root/wiki/inc/changelog.php
site/trunk/www-root/wiki/inc/cliopts.php
site/trunk/www-root/wiki/inc/common.php
site/trunk/www-root/wiki/inc/confutils.php
site/trunk/www-root/wiki/inc/events.php
site/trunk/www-root/wiki/inc/feedcreator.class.php
site/trunk/www-root/wiki/inc/form.php
site/trunk/www-root/wiki/inc/fulltext.php
site/trunk/www-root/wiki/inc/geshi.php
site/trunk/www-root/wiki/inc/geshi/abap.php
site/trunk/www-root/wiki/inc/geshi/actionscript-french.php
site/trunk/www-root/wiki/inc/geshi/actionscript.php
site/trunk/www-root/wiki/inc/geshi/ada.php
site/trunk/www-root/wiki/inc/geshi/apache.php
site/trunk/www-root/wiki/inc/geshi/applescript.php
site/trunk/www-root/wiki/inc/geshi/asm.php
site/trunk/www-root/wiki/inc/geshi/asp.php
site/trunk/www-root/wiki/inc/geshi/autoit.php
site/trunk/www-root/wiki/inc/geshi/bash.php
site/trunk/www-root/wiki/inc/geshi/basic4gl.php
site/trunk/www-root/wiki/inc/geshi/blitzbasic.php
site/trunk/www-root/wiki/inc/geshi/bnf.php
site/trunk/www-root/wiki/inc/geshi/c.php
site/trunk/www-root/wiki/inc/geshi/c_mac.php
site/trunk/www-root/wiki/inc/geshi/caddcl.php
site/trunk/www-root/wiki/inc/geshi/cadlisp.php
site/trunk/www-root/wiki/inc/geshi/cfdg.php
site/trunk/www-root/wiki/inc/geshi/cfm.php
site/trunk/www-root/wiki/inc/geshi/cpp-qt.php
site/trunk/www-root/wiki/inc/geshi/cpp.php
site/trunk/www-root/wiki/inc/geshi/csharp.php
site/trunk/www-root/wiki/inc/geshi/css.php
site/trunk/www-root/wiki/inc/geshi/d.php
site/trunk/www-root/wiki/inc/geshi/delphi.php
site/trunk/www-root/wiki/inc/geshi/diff.php
site/trunk/www-root/wiki/inc/geshi/div.php
site/trunk/www-root/wiki/inc/geshi/dos.php
site/trunk/www-root/wiki/inc/geshi/dot.php
site/trunk/www-root/wiki/inc/geshi/eiffel.php
site/trunk/www-root/wiki/inc/geshi/fortran.php
site/trunk/www-root/wiki/inc/geshi/freebasic.php
site/trunk/www-root/wiki/inc/geshi/genero.php
site/trunk/www-root/wiki/inc/geshi/gml.php
site/trunk/www-root/wiki/inc/geshi/groovy.php
site/trunk/www-root/wiki/inc/geshi/haskell.php
site/trunk/www-root/wiki/inc/geshi/html4strict.php
site/trunk/www-root/wiki/inc/geshi/idl.php
site/trunk/www-root/wiki/inc/geshi/ini.php
site/trunk/www-root/wiki/inc/geshi/inno.php
site/trunk/www-root/wiki/inc/geshi/io.php
site/trunk/www-root/wiki/inc/geshi/java.php
site/trunk/www-root/wiki/inc/geshi/java5.php
site/trunk/www-root/wiki/inc/geshi/javascript.php
site/trunk/www-root/wiki/inc/geshi/latex.php
site/trunk/www-root/wiki/inc/geshi/lisp.php
site/trunk/www-root/wiki/inc/geshi/lua.php
site/trunk/www-root/wiki/inc/geshi/m68k.php
site/trunk/www-root/wiki/inc/geshi/matlab.php
site/trunk/www-root/wiki/inc/geshi/mirc.php
site/trunk/www-root/wiki/inc/geshi/mpasm.php
site/trunk/www-root/wiki/inc/geshi/mysql.php
site/trunk/www-root/wiki/inc/geshi/nsis.php
site/trunk/www-root/wiki/inc/geshi/objc.php
site/trunk/www-root/wiki/inc/geshi/ocaml-brief.php
site/trunk/www-root/wiki/inc/geshi/ocaml.php
site/trunk/www-root/wiki/inc/geshi/oobas.php
site/trunk/www-root/wiki/inc/geshi/oracle8.php
site/trunk/www-root/wiki/inc/geshi/pascal.php
site/trunk/www-root/wiki/inc/geshi/per.php
site/trunk/www-root/wiki/inc/geshi/perl.php
site/trunk/www-root/wiki/inc/geshi/php-brief.php
site/trunk/www-root/wiki/inc/geshi/php.php
site/trunk/www-root/wiki/inc/geshi/plsql.php
site/trunk/www-root/wiki/inc/geshi/python.php
site/trunk/www-root/wiki/inc/geshi/qbasic.php
site/trunk/www-root/wiki/inc/geshi/rails.php
site/trunk/www-root/wiki/inc/geshi/reg.php
site/trunk/www-root/wiki/inc/geshi/robots.php
site/trunk/www-root/wiki/inc/geshi/ruby.php
site/trunk/www-root/wiki/inc/geshi/sas.php
site/trunk/www-root/wiki/inc/geshi/scheme.php
site/trunk/www-root/wiki/inc/geshi/sdlbasic.php
site/trunk/www-root/wiki/inc/geshi/smalltalk.php
site/trunk/www-root/wiki/inc/geshi/smarty.php
site/trunk/www-root/wiki/inc/geshi/sql.php
site/trunk/www-root/wiki/inc/geshi/tcl.php
site/trunk/www-root/wiki/inc/geshi/text.php
site/trunk/www-root/wiki/inc/geshi/thinbasic.php
site/trunk/www-root/wiki/inc/geshi/tsql.php
site/trunk/www-root/wiki/inc/geshi/vb.php
site/trunk/www-root/wiki/inc/geshi/vbnet.php
site/trunk/www-root/wiki/inc/geshi/vhdl.php
site/trunk/www-root/wiki/inc/geshi/visualfoxpro.php
site/trunk/www-root/wiki/inc/geshi/winbatch.php
site/trunk/www-root/wiki/inc/geshi/xml.php
site/trunk/www-root/wiki/inc/geshi/xpp.php
site/trunk/www-root/wiki/inc/geshi/z80.php
site/trunk/www-root/wiki/inc/html.php
site/trunk/www-root/wiki/inc/indexer.php
site/trunk/www-root/wiki/inc/infoutils.php
site/trunk/www-root/wiki/inc/init.php
site/trunk/www-root/wiki/inc/io.php
site/trunk/www-root/wiki/inc/lang/ar/admin.txt
site/trunk/www-root/wiki/inc/lang/ar/backlinks.txt
site/trunk/www-root/wiki/inc/lang/ar/conflict.txt
site/trunk/www-root/wiki/inc/lang/ar/denied.txt
site/trunk/www-root/wiki/inc/lang/ar/diff.txt
site/trunk/www-root/wiki/inc/lang/ar/draft.txt
site/trunk/www-root/wiki/inc/lang/ar/editrev.txt
site/trunk/www-root/wiki/inc/lang/ar/index.txt
site/trunk/www-root/wiki/inc/lang/ar/lang.php
site/trunk/www-root/wiki/inc/lang/ar/locked.txt
site/trunk/www-root/wiki/inc/lang/ar/login.txt
site/trunk/www-root/wiki/inc/lang/ar/mailtext.txt
site/trunk/www-root/wiki/inc/lang/ar/newpage.txt
site/trunk/www-root/wiki/inc/lang/ar/norev.txt
site/trunk/www-root/wiki/inc/lang/ar/password.txt
site/trunk/www-root/wiki/inc/lang/ar/preview.txt
site/trunk/www-root/wiki/inc/lang/ar/recent.txt
site/trunk/www-root/wiki/inc/lang/ar/register.txt
site/trunk/www-root/wiki/inc/lang/ar/revisions.txt
site/trunk/www-root/wiki/inc/lang/ar/searchpage.txt
site/trunk/www-root/wiki/inc/lang/ar/showrev.txt
site/trunk/www-root/wiki/inc/lang/ar/stopwords.txt
site/trunk/www-root/wiki/inc/lang/ar/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/ar/wordblock.txt
site/trunk/www-root/wiki/inc/lang/bg/admin.txt
site/trunk/www-root/wiki/inc/lang/bg/backlinks.txt
site/trunk/www-root/wiki/inc/lang/bg/conflict.txt
site/trunk/www-root/wiki/inc/lang/bg/denied.txt
site/trunk/www-root/wiki/inc/lang/bg/diff.txt
site/trunk/www-root/wiki/inc/lang/bg/draft.txt
site/trunk/www-root/wiki/inc/lang/bg/edit.txt
site/trunk/www-root/wiki/inc/lang/bg/editrev.txt
site/trunk/www-root/wiki/inc/lang/bg/index.txt
site/trunk/www-root/wiki/inc/lang/bg/install.html
site/trunk/www-root/wiki/inc/lang/bg/lang.php
site/trunk/www-root/wiki/inc/lang/bg/locked.txt
site/trunk/www-root/wiki/inc/lang/bg/login.txt
site/trunk/www-root/wiki/inc/lang/bg/mailtext.txt
site/trunk/www-root/wiki/inc/lang/bg/newpage.txt
site/trunk/www-root/wiki/inc/lang/bg/norev.txt
site/trunk/www-root/wiki/inc/lang/bg/password.txt
site/trunk/www-root/wiki/inc/lang/bg/preview.txt
site/trunk/www-root/wiki/inc/lang/bg/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/bg/read.txt
site/trunk/www-root/wiki/inc/lang/bg/recent.txt
site/trunk/www-root/wiki/inc/lang/bg/register.txt
site/trunk/www-root/wiki/inc/lang/bg/registermail.txt
site/trunk/www-root/wiki/inc/lang/bg/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/bg/revisions.txt
site/trunk/www-root/wiki/inc/lang/bg/searchpage.txt
site/trunk/www-root/wiki/inc/lang/bg/showrev.txt
site/trunk/www-root/wiki/inc/lang/bg/stopwords.txt
site/trunk/www-root/wiki/inc/lang/bg/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/bg/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/bg/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/bg/wordblock.txt
site/trunk/www-root/wiki/inc/lang/ca/admin.txt
site/trunk/www-root/wiki/inc/lang/ca/backlinks.txt
site/trunk/www-root/wiki/inc/lang/ca/conflict.txt
site/trunk/www-root/wiki/inc/lang/ca/denied.txt
site/trunk/www-root/wiki/inc/lang/ca/diff.txt
site/trunk/www-root/wiki/inc/lang/ca/draft.txt
site/trunk/www-root/wiki/inc/lang/ca/edit.txt
site/trunk/www-root/wiki/inc/lang/ca/editrev.txt
site/trunk/www-root/wiki/inc/lang/ca/index.txt
site/trunk/www-root/wiki/inc/lang/ca/install.html
site/trunk/www-root/wiki/inc/lang/ca/lang.php
site/trunk/www-root/wiki/inc/lang/ca/locked.txt
site/trunk/www-root/wiki/inc/lang/ca/login.txt
site/trunk/www-root/wiki/inc/lang/ca/mailtext.txt
site/trunk/www-root/wiki/inc/lang/ca/newpage.txt
site/trunk/www-root/wiki/inc/lang/ca/norev.txt
site/trunk/www-root/wiki/inc/lang/ca/password.txt
site/trunk/www-root/wiki/inc/lang/ca/preview.txt
site/trunk/www-root/wiki/inc/lang/ca/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/ca/read.txt
site/trunk/www-root/wiki/inc/lang/ca/recent.txt
site/trunk/www-root/wiki/inc/lang/ca/register.txt
site/trunk/www-root/wiki/inc/lang/ca/registermail.txt
site/trunk/www-root/wiki/inc/lang/ca/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/ca/revisions.txt
site/trunk/www-root/wiki/inc/lang/ca/searchpage.txt
site/trunk/www-root/wiki/inc/lang/ca/showrev.txt
site/trunk/www-root/wiki/inc/lang/ca/stopwords.txt
site/trunk/www-root/wiki/inc/lang/ca/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/ca/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/ca/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/ca/wordblock.txt
site/trunk/www-root/wiki/inc/lang/cs/admin.txt
site/trunk/www-root/wiki/inc/lang/cs/backlinks.txt
site/trunk/www-root/wiki/inc/lang/cs/conflict.txt
site/trunk/www-root/wiki/inc/lang/cs/denied.txt
site/trunk/www-root/wiki/inc/lang/cs/diff.txt
site/trunk/www-root/wiki/inc/lang/cs/draft.txt
site/trunk/www-root/wiki/inc/lang/cs/edit.txt
site/trunk/www-root/wiki/inc/lang/cs/editrev.txt
site/trunk/www-root/wiki/inc/lang/cs/index.txt
site/trunk/www-root/wiki/inc/lang/cs/install.html
site/trunk/www-root/wiki/inc/lang/cs/lang.php
site/trunk/www-root/wiki/inc/lang/cs/locked.txt
site/trunk/www-root/wiki/inc/lang/cs/login.txt
site/trunk/www-root/wiki/inc/lang/cs/mailtext.txt
site/trunk/www-root/wiki/inc/lang/cs/newpage.txt
site/trunk/www-root/wiki/inc/lang/cs/norev.txt
site/trunk/www-root/wiki/inc/lang/cs/password.txt
site/trunk/www-root/wiki/inc/lang/cs/preview.txt
site/trunk/www-root/wiki/inc/lang/cs/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/cs/read.txt
site/trunk/www-root/wiki/inc/lang/cs/recent.txt
site/trunk/www-root/wiki/inc/lang/cs/register.txt
site/trunk/www-root/wiki/inc/lang/cs/registermail.txt
site/trunk/www-root/wiki/inc/lang/cs/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/cs/revisions.txt
site/trunk/www-root/wiki/inc/lang/cs/searchpage.txt
site/trunk/www-root/wiki/inc/lang/cs/showrev.txt
site/trunk/www-root/wiki/inc/lang/cs/stopwords.txt
site/trunk/www-root/wiki/inc/lang/cs/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/cs/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/cs/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/cs/wordblock.txt
site/trunk/www-root/wiki/inc/lang/da/admin.txt
site/trunk/www-root/wiki/inc/lang/da/backlinks.txt
site/trunk/www-root/wiki/inc/lang/da/conflict.txt
site/trunk/www-root/wiki/inc/lang/da/denied.txt
site/trunk/www-root/wiki/inc/lang/da/diff.txt
site/trunk/www-root/wiki/inc/lang/da/draft.txt
site/trunk/www-root/wiki/inc/lang/da/edit.txt
site/trunk/www-root/wiki/inc/lang/da/editrev.txt
site/trunk/www-root/wiki/inc/lang/da/index.txt
site/trunk/www-root/wiki/inc/lang/da/install.html
site/trunk/www-root/wiki/inc/lang/da/lang.php
site/trunk/www-root/wiki/inc/lang/da/locked.txt
site/trunk/www-root/wiki/inc/lang/da/login.txt
site/trunk/www-root/wiki/inc/lang/da/mailtext.txt
site/trunk/www-root/wiki/inc/lang/da/newpage.txt
site/trunk/www-root/wiki/inc/lang/da/norev.txt
site/trunk/www-root/wiki/inc/lang/da/password.txt
site/trunk/www-root/wiki/inc/lang/da/preview.txt
site/trunk/www-root/wiki/inc/lang/da/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/da/read.txt
site/trunk/www-root/wiki/inc/lang/da/recent.txt
site/trunk/www-root/wiki/inc/lang/da/register.txt
site/trunk/www-root/wiki/inc/lang/da/registermail.txt
site/trunk/www-root/wiki/inc/lang/da/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/da/revisions.txt
site/trunk/www-root/wiki/inc/lang/da/searchpage.txt
site/trunk/www-root/wiki/inc/lang/da/showrev.txt
site/trunk/www-root/wiki/inc/lang/da/stopwords.txt
site/trunk/www-root/wiki/inc/lang/da/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/da/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/da/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/da/wordblock.txt
site/trunk/www-root/wiki/inc/lang/de/admin.txt
site/trunk/www-root/wiki/inc/lang/de/backlinks.txt
site/trunk/www-root/wiki/inc/lang/de/conflict.txt
site/trunk/www-root/wiki/inc/lang/de/denied.txt
site/trunk/www-root/wiki/inc/lang/de/diff.txt
site/trunk/www-root/wiki/inc/lang/de/draft.txt
site/trunk/www-root/wiki/inc/lang/de/edit.txt
site/trunk/www-root/wiki/inc/lang/de/editrev.txt
site/trunk/www-root/wiki/inc/lang/de/index.txt
site/trunk/www-root/wiki/inc/lang/de/install.html
site/trunk/www-root/wiki/inc/lang/de/lang.php
site/trunk/www-root/wiki/inc/lang/de/locked.txt
site/trunk/www-root/wiki/inc/lang/de/login.txt
site/trunk/www-root/wiki/inc/lang/de/mailtext.txt
site/trunk/www-root/wiki/inc/lang/de/newpage.txt
site/trunk/www-root/wiki/inc/lang/de/norev.txt
site/trunk/www-root/wiki/inc/lang/de/password.txt
site/trunk/www-root/wiki/inc/lang/de/preview.txt
site/trunk/www-root/wiki/inc/lang/de/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/de/read.txt
site/trunk/www-root/wiki/inc/lang/de/recent.txt
site/trunk/www-root/wiki/inc/lang/de/register.txt
site/trunk/www-root/wiki/inc/lang/de/registermail.txt
site/trunk/www-root/wiki/inc/lang/de/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/de/revisions.txt
site/trunk/www-root/wiki/inc/lang/de/searchpage.txt
site/trunk/www-root/wiki/inc/lang/de/showrev.txt
site/trunk/www-root/wiki/inc/lang/de/stopwords.txt
site/trunk/www-root/wiki/inc/lang/de/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/de/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/de/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/de/wordblock.txt
site/trunk/www-root/wiki/inc/lang/el/admin.txt
site/trunk/www-root/wiki/inc/lang/el/backlinks.txt
site/trunk/www-root/wiki/inc/lang/el/conflict.txt
site/trunk/www-root/wiki/inc/lang/el/denied.txt
site/trunk/www-root/wiki/inc/lang/el/diff.txt
site/trunk/www-root/wiki/inc/lang/el/draft.txt
site/trunk/www-root/wiki/inc/lang/el/edit.txt
site/trunk/www-root/wiki/inc/lang/el/editrev.txt
site/trunk/www-root/wiki/inc/lang/el/index.txt
site/trunk/www-root/wiki/inc/lang/el/install.html
site/trunk/www-root/wiki/inc/lang/el/lang.php
site/trunk/www-root/wiki/inc/lang/el/locked.txt
site/trunk/www-root/wiki/inc/lang/el/login.txt
site/trunk/www-root/wiki/inc/lang/el/mailtext.txt
site/trunk/www-root/wiki/inc/lang/el/newpage.txt
site/trunk/www-root/wiki/inc/lang/el/norev.txt
site/trunk/www-root/wiki/inc/lang/el/password.txt
site/trunk/www-root/wiki/inc/lang/el/preview.txt
site/trunk/www-root/wiki/inc/lang/el/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/el/read.txt
site/trunk/www-root/wiki/inc/lang/el/recent.txt
site/trunk/www-root/wiki/inc/lang/el/register.txt
site/trunk/www-root/wiki/inc/lang/el/registermail.txt
site/trunk/www-root/wiki/inc/lang/el/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/el/revisions.txt
site/trunk/www-root/wiki/inc/lang/el/searchpage.txt
site/trunk/www-root/wiki/inc/lang/el/showrev.txt
site/trunk/www-root/wiki/inc/lang/el/stopwords.txt
site/trunk/www-root/wiki/inc/lang/el/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/el/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/el/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/el/wordblock.txt
site/trunk/www-root/wiki/inc/lang/en/admin.txt
site/trunk/www-root/wiki/inc/lang/en/backlinks.txt
site/trunk/www-root/wiki/inc/lang/en/conflict.txt
site/trunk/www-root/wiki/inc/lang/en/denied.txt
site/trunk/www-root/wiki/inc/lang/en/diff.txt
site/trunk/www-root/wiki/inc/lang/en/draft.txt
site/trunk/www-root/wiki/inc/lang/en/edit.txt
site/trunk/www-root/wiki/inc/lang/en/editrev.txt
site/trunk/www-root/wiki/inc/lang/en/index.txt
site/trunk/www-root/wiki/inc/lang/en/install.html
site/trunk/www-root/wiki/inc/lang/en/lang.php
site/trunk/www-root/wiki/inc/lang/en/locked.txt
site/trunk/www-root/wiki/inc/lang/en/login.txt
site/trunk/www-root/wiki/inc/lang/en/mailtext.txt
site/trunk/www-root/wiki/inc/lang/en/newpage.txt
site/trunk/www-root/wiki/inc/lang/en/norev.txt
site/trunk/www-root/wiki/inc/lang/en/password.txt
site/trunk/www-root/wiki/inc/lang/en/preview.txt
site/trunk/www-root/wiki/inc/lang/en/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/en/read.txt
site/trunk/www-root/wiki/inc/lang/en/recent.txt
site/trunk/www-root/wiki/inc/lang/en/register.txt
site/trunk/www-root/wiki/inc/lang/en/registermail.txt
site/trunk/www-root/wiki/inc/lang/en/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/en/revisions.txt
site/trunk/www-root/wiki/inc/lang/en/searchpage.txt
site/trunk/www-root/wiki/inc/lang/en/showrev.txt
site/trunk/www-root/wiki/inc/lang/en/stopwords.txt
site/trunk/www-root/wiki/inc/lang/en/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/en/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/en/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/en/wordblock.txt
site/trunk/www-root/wiki/inc/lang/eo/admin.txt
site/trunk/www-root/wiki/inc/lang/eo/backlinks.txt
site/trunk/www-root/wiki/inc/lang/eo/conflict.txt
site/trunk/www-root/wiki/inc/lang/eo/denied.txt
site/trunk/www-root/wiki/inc/lang/eo/diff.txt
site/trunk/www-root/wiki/inc/lang/eo/draft.txt
site/trunk/www-root/wiki/inc/lang/eo/edit.txt
site/trunk/www-root/wiki/inc/lang/eo/editrev.txt
site/trunk/www-root/wiki/inc/lang/eo/install.html
site/trunk/www-root/wiki/inc/lang/eo/lang.php
site/trunk/www-root/wiki/inc/lang/eo/locked.txt
site/trunk/www-root/wiki/inc/lang/eo/login.txt
site/trunk/www-root/wiki/inc/lang/eo/mailtext.txt
site/trunk/www-root/wiki/inc/lang/eo/newpage.txt
site/trunk/www-root/wiki/inc/lang/eo/norev.txt
site/trunk/www-root/wiki/inc/lang/eo/password.txt
site/trunk/www-root/wiki/inc/lang/eo/preview.txt
site/trunk/www-root/wiki/inc/lang/eo/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/eo/read.txt
site/trunk/www-root/wiki/inc/lang/eo/recent.txt
site/trunk/www-root/wiki/inc/lang/eo/register.txt
site/trunk/www-root/wiki/inc/lang/eo/registermail.txt
site/trunk/www-root/wiki/inc/lang/eo/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/eo/revisions.txt
site/trunk/www-root/wiki/inc/lang/eo/searchpage.txt
site/trunk/www-root/wiki/inc/lang/eo/showrev.txt
site/trunk/www-root/wiki/inc/lang/eo/stopwords.txt
site/trunk/www-root/wiki/inc/lang/eo/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/eo/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/eo/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/eo/wordblock.txt
site/trunk/www-root/wiki/inc/lang/es/admin.txt
site/trunk/www-root/wiki/inc/lang/es/backlinks.txt
site/trunk/www-root/wiki/inc/lang/es/conflict.txt
site/trunk/www-root/wiki/inc/lang/es/denied.txt
site/trunk/www-root/wiki/inc/lang/es/diff.txt
site/trunk/www-root/wiki/inc/lang/es/draft.txt
site/trunk/www-root/wiki/inc/lang/es/edit.txt
site/trunk/www-root/wiki/inc/lang/es/editrev.txt
site/trunk/www-root/wiki/inc/lang/es/index.txt
site/trunk/www-root/wiki/inc/lang/es/install.html
site/trunk/www-root/wiki/inc/lang/es/lang.php
site/trunk/www-root/wiki/inc/lang/es/locked.txt
site/trunk/www-root/wiki/inc/lang/es/login.txt
site/trunk/www-root/wiki/inc/lang/es/mailtext.txt
site/trunk/www-root/wiki/inc/lang/es/newpage.txt
site/trunk/www-root/wiki/inc/lang/es/norev.txt
site/trunk/www-root/wiki/inc/lang/es/password.txt
site/trunk/www-root/wiki/inc/lang/es/preview.txt
site/trunk/www-root/wiki/inc/lang/es/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/es/read.txt
site/trunk/www-root/wiki/inc/lang/es/recent.txt
site/trunk/www-root/wiki/inc/lang/es/register.txt
site/trunk/www-root/wiki/inc/lang/es/registermail.txt
site/trunk/www-root/wiki/inc/lang/es/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/es/revisions.txt
site/trunk/www-root/wiki/inc/lang/es/searchpage.txt
site/trunk/www-root/wiki/inc/lang/es/showrev.txt
site/trunk/www-root/wiki/inc/lang/es/stopwords.txt
site/trunk/www-root/wiki/inc/lang/es/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/es/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/es/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/es/wordblock.txt
site/trunk/www-root/wiki/inc/lang/et/admin.txt
site/trunk/www-root/wiki/inc/lang/et/backlinks.txt
site/trunk/www-root/wiki/inc/lang/et/conflict.txt
site/trunk/www-root/wiki/inc/lang/et/denied.txt
site/trunk/www-root/wiki/inc/lang/et/diff.txt
site/trunk/www-root/wiki/inc/lang/et/draft.txt
site/trunk/www-root/wiki/inc/lang/et/edit.txt
site/trunk/www-root/wiki/inc/lang/et/editrev.txt
site/trunk/www-root/wiki/inc/lang/et/index.txt
site/trunk/www-root/wiki/inc/lang/et/lang.php
site/trunk/www-root/wiki/inc/lang/et/locked.txt
site/trunk/www-root/wiki/inc/lang/et/login.txt
site/trunk/www-root/wiki/inc/lang/et/mailtext.txt
site/trunk/www-root/wiki/inc/lang/et/newpage.txt
site/trunk/www-root/wiki/inc/lang/et/norev.txt
site/trunk/www-root/wiki/inc/lang/et/password.txt
site/trunk/www-root/wiki/inc/lang/et/preview.txt
site/trunk/www-root/wiki/inc/lang/et/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/et/read.txt
site/trunk/www-root/wiki/inc/lang/et/recent.txt
site/trunk/www-root/wiki/inc/lang/et/register.txt
site/trunk/www-root/wiki/inc/lang/et/registermail.txt
site/trunk/www-root/wiki/inc/lang/et/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/et/revisions.txt
site/trunk/www-root/wiki/inc/lang/et/searchpage.txt
site/trunk/www-root/wiki/inc/lang/et/showrev.txt
site/trunk/www-root/wiki/inc/lang/et/stopwords.txt
site/trunk/www-root/wiki/inc/lang/et/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/et/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/et/wordblock.txt
site/trunk/www-root/wiki/inc/lang/eu/admin.txt
site/trunk/www-root/wiki/inc/lang/eu/denied.txt
site/trunk/www-root/wiki/inc/lang/eu/diff.txt
site/trunk/www-root/wiki/inc/lang/eu/edit.txt
site/trunk/www-root/wiki/inc/lang/eu/editrev.txt
site/trunk/www-root/wiki/inc/lang/eu/index.txt
site/trunk/www-root/wiki/inc/lang/eu/lang.php
site/trunk/www-root/wiki/inc/lang/eu/locked.txt
site/trunk/www-root/wiki/inc/lang/eu/login.txt
site/trunk/www-root/wiki/inc/lang/eu/mailtext.txt
site/trunk/www-root/wiki/inc/lang/eu/newpage.txt
site/trunk/www-root/wiki/inc/lang/eu/norev.txt
site/trunk/www-root/wiki/inc/lang/eu/password.txt
site/trunk/www-root/wiki/inc/lang/eu/preview.txt
site/trunk/www-root/wiki/inc/lang/eu/read.txt
site/trunk/www-root/wiki/inc/lang/eu/recent.txt
site/trunk/www-root/wiki/inc/lang/eu/revisions.txt
site/trunk/www-root/wiki/inc/lang/eu/searchpage.txt
site/trunk/www-root/wiki/inc/lang/eu/showrev.txt
site/trunk/www-root/wiki/inc/lang/eu/wordblock.txt
site/trunk/www-root/wiki/inc/lang/fi/admin.txt
site/trunk/www-root/wiki/inc/lang/fi/backlinks.txt
site/trunk/www-root/wiki/inc/lang/fi/conflict.txt
site/trunk/www-root/wiki/inc/lang/fi/denied.txt
site/trunk/www-root/wiki/inc/lang/fi/diff.txt
site/trunk/www-root/wiki/inc/lang/fi/draft.txt
site/trunk/www-root/wiki/inc/lang/fi/edit.txt
site/trunk/www-root/wiki/inc/lang/fi/editrev.txt
site/trunk/www-root/wiki/inc/lang/fi/index.txt
site/trunk/www-root/wiki/inc/lang/fi/install.html
site/trunk/www-root/wiki/inc/lang/fi/lang.php
site/trunk/www-root/wiki/inc/lang/fi/locked.txt
site/trunk/www-root/wiki/inc/lang/fi/login.txt
site/trunk/www-root/wiki/inc/lang/fi/mailtext.txt
site/trunk/www-root/wiki/inc/lang/fi/newpage.txt
site/trunk/www-root/wiki/inc/lang/fi/norev.txt
site/trunk/www-root/wiki/inc/lang/fi/password.txt
site/trunk/www-root/wiki/inc/lang/fi/preview.txt
site/trunk/www-root/wiki/inc/lang/fi/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/fi/read.txt
site/trunk/www-root/wiki/inc/lang/fi/recent.txt
site/trunk/www-root/wiki/inc/lang/fi/register.txt
site/trunk/www-root/wiki/inc/lang/fi/registermail.txt
site/trunk/www-root/wiki/inc/lang/fi/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/fi/revisions.txt
site/trunk/www-root/wiki/inc/lang/fi/searchpage.txt
site/trunk/www-root/wiki/inc/lang/fi/showrev.txt
site/trunk/www-root/wiki/inc/lang/fi/stopwords.txt
site/trunk/www-root/wiki/inc/lang/fi/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/fi/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/fi/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/fi/wordblock.txt
site/trunk/www-root/wiki/inc/lang/fo/admin.txt
site/trunk/www-root/wiki/inc/lang/fo/backlinks.txt
site/trunk/www-root/wiki/inc/lang/fo/conflict.txt
site/trunk/www-root/wiki/inc/lang/fo/denied.txt
site/trunk/www-root/wiki/inc/lang/fo/diff.txt
site/trunk/www-root/wiki/inc/lang/fo/edit.txt
site/trunk/www-root/wiki/inc/lang/fo/editrev.txt
site/trunk/www-root/wiki/inc/lang/fo/index.txt
site/trunk/www-root/wiki/inc/lang/fo/lang.php
site/trunk/www-root/wiki/inc/lang/fo/locked.txt
site/trunk/www-root/wiki/inc/lang/fo/login.txt
site/trunk/www-root/wiki/inc/lang/fo/mailtext.txt
site/trunk/www-root/wiki/inc/lang/fo/newpage.txt
site/trunk/www-root/wiki/inc/lang/fo/norev.txt
site/trunk/www-root/wiki/inc/lang/fo/password.txt
site/trunk/www-root/wiki/inc/lang/fo/preview.txt
site/trunk/www-root/wiki/inc/lang/fo/read.txt
site/trunk/www-root/wiki/inc/lang/fo/recent.txt
site/trunk/www-root/wiki/inc/lang/fo/register.txt
site/trunk/www-root/wiki/inc/lang/fo/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/fo/revisions.txt
site/trunk/www-root/wiki/inc/lang/fo/searchpage.txt
site/trunk/www-root/wiki/inc/lang/fo/showrev.txt
site/trunk/www-root/wiki/inc/lang/fo/stopwords.txt
site/trunk/www-root/wiki/inc/lang/fo/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/fo/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/fo/wordblock.txt
site/trunk/www-root/wiki/inc/lang/fr/admin.txt
site/trunk/www-root/wiki/inc/lang/fr/backlinks.txt
site/trunk/www-root/wiki/inc/lang/fr/conflict.txt
site/trunk/www-root/wiki/inc/lang/fr/denied.txt
site/trunk/www-root/wiki/inc/lang/fr/diff.txt
site/trunk/www-root/wiki/inc/lang/fr/draft.txt
site/trunk/www-root/wiki/inc/lang/fr/edit.txt
site/trunk/www-root/wiki/inc/lang/fr/editrev.txt
site/trunk/www-root/wiki/inc/lang/fr/index.txt
site/trunk/www-root/wiki/inc/lang/fr/install.html
site/trunk/www-root/wiki/inc/lang/fr/lang.php
site/trunk/www-root/wiki/inc/lang/fr/locked.txt
site/trunk/www-root/wiki/inc/lang/fr/login.txt
site/trunk/www-root/wiki/inc/lang/fr/mailtext.txt
site/trunk/www-root/wiki/inc/lang/fr/newpage.txt
site/trunk/www-root/wiki/inc/lang/fr/norev.txt
site/trunk/www-root/wiki/inc/lang/fr/password.txt
site/trunk/www-root/wiki/inc/lang/fr/preview.txt
site/trunk/www-root/wiki/inc/lang/fr/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/fr/read.txt
site/trunk/www-root/wiki/inc/lang/fr/recent.txt
site/trunk/www-root/wiki/inc/lang/fr/register.txt
site/trunk/www-root/wiki/inc/lang/fr/registermail.txt
site/trunk/www-root/wiki/inc/lang/fr/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/fr/revisions.txt
site/trunk/www-root/wiki/inc/lang/fr/searchpage.txt
site/trunk/www-root/wiki/inc/lang/fr/showrev.txt
site/trunk/www-root/wiki/inc/lang/fr/stopwords.txt
site/trunk/www-root/wiki/inc/lang/fr/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/fr/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/fr/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/fr/wordblock.txt
site/trunk/www-root/wiki/inc/lang/gl/admin.txt
site/trunk/www-root/wiki/inc/lang/gl/backlinks.txt
site/trunk/www-root/wiki/inc/lang/gl/conflict.txt
site/trunk/www-root/wiki/inc/lang/gl/denied.txt
site/trunk/www-root/wiki/inc/lang/gl/diff.txt
site/trunk/www-root/wiki/inc/lang/gl/draft.txt
site/trunk/www-root/wiki/inc/lang/gl/edit.txt
site/trunk/www-root/wiki/inc/lang/gl/editrev.txt
site/trunk/www-root/wiki/inc/lang/gl/index.txt
site/trunk/www-root/wiki/inc/lang/gl/install.html
site/trunk/www-root/wiki/inc/lang/gl/lang.php
site/trunk/www-root/wiki/inc/lang/gl/locked.txt
site/trunk/www-root/wiki/inc/lang/gl/login.txt
site/trunk/www-root/wiki/inc/lang/gl/mailtext.txt
site/trunk/www-root/wiki/inc/lang/gl/newpage.txt
site/trunk/www-root/wiki/inc/lang/gl/norev.txt
site/trunk/www-root/wiki/inc/lang/gl/password.txt
site/trunk/www-root/wiki/inc/lang/gl/preview.txt
site/trunk/www-root/wiki/inc/lang/gl/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/gl/read.txt
site/trunk/www-root/wiki/inc/lang/gl/recent.txt
site/trunk/www-root/wiki/inc/lang/gl/register.txt
site/trunk/www-root/wiki/inc/lang/gl/registermail.txt
site/trunk/www-root/wiki/inc/lang/gl/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/gl/revisions.txt
site/trunk/www-root/wiki/inc/lang/gl/searchpage.txt
site/trunk/www-root/wiki/inc/lang/gl/showrev.txt
site/trunk/www-root/wiki/inc/lang/gl/stopwords.txt
site/trunk/www-root/wiki/inc/lang/gl/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/gl/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/gl/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/gl/wordblock.txt
site/trunk/www-root/wiki/inc/lang/he/admin.txt
site/trunk/www-root/wiki/inc/lang/he/backlinks.txt
site/trunk/www-root/wiki/inc/lang/he/conflict.txt
site/trunk/www-root/wiki/inc/lang/he/denied.txt
site/trunk/www-root/wiki/inc/lang/he/diff.txt
site/trunk/www-root/wiki/inc/lang/he/draft.txt
site/trunk/www-root/wiki/inc/lang/he/edit.txt
site/trunk/www-root/wiki/inc/lang/he/editrev.txt
site/trunk/www-root/wiki/inc/lang/he/index.txt
site/trunk/www-root/wiki/inc/lang/he/install.html
site/trunk/www-root/wiki/inc/lang/he/lang.php
site/trunk/www-root/wiki/inc/lang/he/locked.txt
site/trunk/www-root/wiki/inc/lang/he/login.txt
site/trunk/www-root/wiki/inc/lang/he/mailtext.txt
site/trunk/www-root/wiki/inc/lang/he/newpage.txt
site/trunk/www-root/wiki/inc/lang/he/norev.txt
site/trunk/www-root/wiki/inc/lang/he/password.txt
site/trunk/www-root/wiki/inc/lang/he/preview.txt
site/trunk/www-root/wiki/inc/lang/he/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/he/read.txt
site/trunk/www-root/wiki/inc/lang/he/recent.txt
site/trunk/www-root/wiki/inc/lang/he/register.txt
site/trunk/www-root/wiki/inc/lang/he/registermail.txt
site/trunk/www-root/wiki/inc/lang/he/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/he/revisions.txt
site/trunk/www-root/wiki/inc/lang/he/searchpage.txt
site/trunk/www-root/wiki/inc/lang/he/showrev.txt
site/trunk/www-root/wiki/inc/lang/he/stopwords.txt
site/trunk/www-root/wiki/inc/lang/he/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/he/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/he/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/he/wordblock.txt
site/trunk/www-root/wiki/inc/lang/hr/admin.txt
site/trunk/www-root/wiki/inc/lang/hr/backlinks.txt
site/trunk/www-root/wiki/inc/lang/hr/conflict.txt
site/trunk/www-root/wiki/inc/lang/hr/denied.txt
site/trunk/www-root/wiki/inc/lang/hr/diff.txt
site/trunk/www-root/wiki/inc/lang/hr/edit.txt
site/trunk/www-root/wiki/inc/lang/hr/editrev.txt
site/trunk/www-root/wiki/inc/lang/hr/index.txt
site/trunk/www-root/wiki/inc/lang/hr/lang.php
site/trunk/www-root/wiki/inc/lang/hr/locked.txt
site/trunk/www-root/wiki/inc/lang/hr/login.txt
site/trunk/www-root/wiki/inc/lang/hr/mailtext.txt
site/trunk/www-root/wiki/inc/lang/hr/newpage.txt
site/trunk/www-root/wiki/inc/lang/hr/norev.txt
site/trunk/www-root/wiki/inc/lang/hr/password.txt
site/trunk/www-root/wiki/inc/lang/hr/preview.txt
site/trunk/www-root/wiki/inc/lang/hr/read.txt
site/trunk/www-root/wiki/inc/lang/hr/recent.txt
site/trunk/www-root/wiki/inc/lang/hr/register.txt
site/trunk/www-root/wiki/inc/lang/hr/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/hr/revisions.txt
site/trunk/www-root/wiki/inc/lang/hr/searchpage.txt
site/trunk/www-root/wiki/inc/lang/hr/showrev.txt
site/trunk/www-root/wiki/inc/lang/hr/stopwords.txt
site/trunk/www-root/wiki/inc/lang/hr/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/hr/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/hr/wordblock.txt
site/trunk/www-root/wiki/inc/lang/hu/admin.txt
site/trunk/www-root/wiki/inc/lang/hu/backlinks.txt
site/trunk/www-root/wiki/inc/lang/hu/conflict.txt
site/trunk/www-root/wiki/inc/lang/hu/denied.txt
site/trunk/www-root/wiki/inc/lang/hu/diff.txt
site/trunk/www-root/wiki/inc/lang/hu/draft.txt
site/trunk/www-root/wiki/inc/lang/hu/edit.txt
site/trunk/www-root/wiki/inc/lang/hu/editrev.txt
site/trunk/www-root/wiki/inc/lang/hu/index.txt
site/trunk/www-root/wiki/inc/lang/hu/install.html
site/trunk/www-root/wiki/inc/lang/hu/lang.php
site/trunk/www-root/wiki/inc/lang/hu/locked.txt
site/trunk/www-root/wiki/inc/lang/hu/login.txt
site/trunk/www-root/wiki/inc/lang/hu/mailtext.txt
site/trunk/www-root/wiki/inc/lang/hu/newpage.txt
site/trunk/www-root/wiki/inc/lang/hu/norev.txt
site/trunk/www-root/wiki/inc/lang/hu/password.txt
site/trunk/www-root/wiki/inc/lang/hu/preview.txt
site/trunk/www-root/wiki/inc/lang/hu/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/hu/read.txt
site/trunk/www-root/wiki/inc/lang/hu/recent.txt
site/trunk/www-root/wiki/inc/lang/hu/register.txt
site/trunk/www-root/wiki/inc/lang/hu/registermail.txt
site/trunk/www-root/wiki/inc/lang/hu/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/hu/revisions.txt
site/trunk/www-root/wiki/inc/lang/hu/searchpage.txt
site/trunk/www-root/wiki/inc/lang/hu/showrev.txt
site/trunk/www-root/wiki/inc/lang/hu/stopwords.txt
site/trunk/www-root/wiki/inc/lang/hu/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/hu/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/hu/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/hu/wordblock.txt
site/trunk/www-root/wiki/inc/lang/id/admin.txt
site/trunk/www-root/wiki/inc/lang/id/backlinks.txt
site/trunk/www-root/wiki/inc/lang/id/conflict.txt
site/trunk/www-root/wiki/inc/lang/id/denied.txt
site/trunk/www-root/wiki/inc/lang/id/diff.txt
site/trunk/www-root/wiki/inc/lang/id/draft.txt
site/trunk/www-root/wiki/inc/lang/id/edit.txt
site/trunk/www-root/wiki/inc/lang/id/editrev.txt
site/trunk/www-root/wiki/inc/lang/id/index.txt
site/trunk/www-root/wiki/inc/lang/id/install.html
site/trunk/www-root/wiki/inc/lang/id/lang.php
site/trunk/www-root/wiki/inc/lang/id/locked.txt
site/trunk/www-root/wiki/inc/lang/id/login.txt
site/trunk/www-root/wiki/inc/lang/id/mailtext.txt
site/trunk/www-root/wiki/inc/lang/id/newpage.txt
site/trunk/www-root/wiki/inc/lang/id/norev.txt
site/trunk/www-root/wiki/inc/lang/id/password.txt
site/trunk/www-root/wiki/inc/lang/id/preview.txt
site/trunk/www-root/wiki/inc/lang/id/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/id/read.txt
site/trunk/www-root/wiki/inc/lang/id/recent.txt
site/trunk/www-root/wiki/inc/lang/id/register.txt
site/trunk/www-root/wiki/inc/lang/id/registermail.txt
site/trunk/www-root/wiki/inc/lang/id/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/id/revisions.txt
site/trunk/www-root/wiki/inc/lang/id/searchpage.txt
site/trunk/www-root/wiki/inc/lang/id/showrev.txt
site/trunk/www-root/wiki/inc/lang/id/stopwords.txt
site/trunk/www-root/wiki/inc/lang/id/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/id/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/id/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/id/wordblock.txt
site/trunk/www-root/wiki/inc/lang/it/admin.txt
site/trunk/www-root/wiki/inc/lang/it/backlinks.txt
site/trunk/www-root/wiki/inc/lang/it/conflict.txt
site/trunk/www-root/wiki/inc/lang/it/denied.txt
site/trunk/www-root/wiki/inc/lang/it/diff.txt
site/trunk/www-root/wiki/inc/lang/it/draft.txt
site/trunk/www-root/wiki/inc/lang/it/edit.txt
site/trunk/www-root/wiki/inc/lang/it/editrev.txt
site/trunk/www-root/wiki/inc/lang/it/index.txt
site/trunk/www-root/wiki/inc/lang/it/install.html
site/trunk/www-root/wiki/inc/lang/it/lang.php
site/trunk/www-root/wiki/inc/lang/it/locked.txt
site/trunk/www-root/wiki/inc/lang/it/login.txt
site/trunk/www-root/wiki/inc/lang/it/mailtext.txt
site/trunk/www-root/wiki/inc/lang/it/newpage.txt
site/trunk/www-root/wiki/inc/lang/it/norev.txt
site/trunk/www-root/wiki/inc/lang/it/password.txt
site/trunk/www-root/wiki/inc/lang/it/preview.txt
site/trunk/www-root/wiki/inc/lang/it/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/it/read.txt
site/trunk/www-root/wiki/inc/lang/it/recent.txt
site/trunk/www-root/wiki/inc/lang/it/register.txt
site/trunk/www-root/wiki/inc/lang/it/registermail.txt
site/trunk/www-root/wiki/inc/lang/it/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/it/revisions.txt
site/trunk/www-root/wiki/inc/lang/it/searchpage.txt
site/trunk/www-root/wiki/inc/lang/it/showrev.txt
site/trunk/www-root/wiki/inc/lang/it/stopwords.txt
site/trunk/www-root/wiki/inc/lang/it/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/it/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/it/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/it/wordblock.txt
site/trunk/www-root/wiki/inc/lang/ja/admin.txt
site/trunk/www-root/wiki/inc/lang/ja/backlinks.txt
site/trunk/www-root/wiki/inc/lang/ja/conflict.txt
site/trunk/www-root/wiki/inc/lang/ja/denied.txt
site/trunk/www-root/wiki/inc/lang/ja/diff.txt
site/trunk/www-root/wiki/inc/lang/ja/draft.txt
site/trunk/www-root/wiki/inc/lang/ja/edit.txt
site/trunk/www-root/wiki/inc/lang/ja/editrev.txt
site/trunk/www-root/wiki/inc/lang/ja/index.txt
site/trunk/www-root/wiki/inc/lang/ja/install.html
site/trunk/www-root/wiki/inc/lang/ja/lang.php
site/trunk/www-root/wiki/inc/lang/ja/locked.txt
site/trunk/www-root/wiki/inc/lang/ja/login.txt
site/trunk/www-root/wiki/inc/lang/ja/mailtext.txt
site/trunk/www-root/wiki/inc/lang/ja/newpage.txt
site/trunk/www-root/wiki/inc/lang/ja/norev.txt
site/trunk/www-root/wiki/inc/lang/ja/password.txt
site/trunk/www-root/wiki/inc/lang/ja/preview.txt
site/trunk/www-root/wiki/inc/lang/ja/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/ja/read.txt
site/trunk/www-root/wiki/inc/lang/ja/recent.txt
site/trunk/www-root/wiki/inc/lang/ja/register.txt
site/trunk/www-root/wiki/inc/lang/ja/registermail.txt
site/trunk/www-root/wiki/inc/lang/ja/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/ja/revisions.txt
site/trunk/www-root/wiki/inc/lang/ja/searchpage.txt
site/trunk/www-root/wiki/inc/lang/ja/showrev.txt
site/trunk/www-root/wiki/inc/lang/ja/stopwords.txt
site/trunk/www-root/wiki/inc/lang/ja/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/ja/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/ja/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/ja/wordblock.txt
site/trunk/www-root/wiki/inc/lang/ko/admin.txt
site/trunk/www-root/wiki/inc/lang/ko/backlinks.txt
site/trunk/www-root/wiki/inc/lang/ko/conflict.txt
site/trunk/www-root/wiki/inc/lang/ko/denied.txt
site/trunk/www-root/wiki/inc/lang/ko/diff.txt
site/trunk/www-root/wiki/inc/lang/ko/draft.txt
site/trunk/www-root/wiki/inc/lang/ko/edit.txt
site/trunk/www-root/wiki/inc/lang/ko/editrev.txt
site/trunk/www-root/wiki/inc/lang/ko/index.txt
site/trunk/www-root/wiki/inc/lang/ko/install.html
site/trunk/www-root/wiki/inc/lang/ko/lang.php
site/trunk/www-root/wiki/inc/lang/ko/locked.txt
site/trunk/www-root/wiki/inc/lang/ko/login.txt
site/trunk/www-root/wiki/inc/lang/ko/mailtext.txt
site/trunk/www-root/wiki/inc/lang/ko/newpage.txt
site/trunk/www-root/wiki/inc/lang/ko/norev.txt
site/trunk/www-root/wiki/inc/lang/ko/password.txt
site/trunk/www-root/wiki/inc/lang/ko/preview.txt
site/trunk/www-root/wiki/inc/lang/ko/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/ko/read.txt
site/trunk/www-root/wiki/inc/lang/ko/recent.txt
site/trunk/www-root/wiki/inc/lang/ko/register.txt
site/trunk/www-root/wiki/inc/lang/ko/registermail.txt
site/trunk/www-root/wiki/inc/lang/ko/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/ko/revisions.txt
site/trunk/www-root/wiki/inc/lang/ko/searchpage.txt
site/trunk/www-root/wiki/inc/lang/ko/showrev.txt
site/trunk/www-root/wiki/inc/lang/ko/stopwords.txt
site/trunk/www-root/wiki/inc/lang/ko/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/ko/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/ko/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/ko/wordblock.txt
site/trunk/www-root/wiki/inc/lang/ku/admin.txt
site/trunk/www-root/wiki/inc/lang/ku/admin_acl.txt
site/trunk/www-root/wiki/inc/lang/ku/backlinks.txt
site/trunk/www-root/wiki/inc/lang/ku/conflict.txt
site/trunk/www-root/wiki/inc/lang/ku/denied.txt
site/trunk/www-root/wiki/inc/lang/ku/diff.txt
site/trunk/www-root/wiki/inc/lang/ku/edit.txt
site/trunk/www-root/wiki/inc/lang/ku/editrev.txt
site/trunk/www-root/wiki/inc/lang/ku/index.txt
site/trunk/www-root/wiki/inc/lang/ku/lang.php
site/trunk/www-root/wiki/inc/lang/ku/locked.txt
site/trunk/www-root/wiki/inc/lang/ku/login.txt
site/trunk/www-root/wiki/inc/lang/ku/mailtext.txt
site/trunk/www-root/wiki/inc/lang/ku/newpage.txt
site/trunk/www-root/wiki/inc/lang/ku/norev.txt
site/trunk/www-root/wiki/inc/lang/ku/password.txt
site/trunk/www-root/wiki/inc/lang/ku/preview.txt
site/trunk/www-root/wiki/inc/lang/ku/read.txt
site/trunk/www-root/wiki/inc/lang/ku/recent.txt
site/trunk/www-root/wiki/inc/lang/ku/register.txt
site/trunk/www-root/wiki/inc/lang/ku/revisions.txt
site/trunk/www-root/wiki/inc/lang/ku/searchpage.txt
site/trunk/www-root/wiki/inc/lang/ku/showrev.txt
site/trunk/www-root/wiki/inc/lang/ku/stopwords.txt
site/trunk/www-root/wiki/inc/lang/ku/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/ku/wordblock.txt
site/trunk/www-root/wiki/inc/lang/lt/admin.txt
site/trunk/www-root/wiki/inc/lang/lt/backlinks.txt
site/trunk/www-root/wiki/inc/lang/lt/conflict.txt
site/trunk/www-root/wiki/inc/lang/lt/denied.txt
site/trunk/www-root/wiki/inc/lang/lt/diff.txt
site/trunk/www-root/wiki/inc/lang/lt/edit.txt
site/trunk/www-root/wiki/inc/lang/lt/editrev.txt
site/trunk/www-root/wiki/inc/lang/lt/index.txt
site/trunk/www-root/wiki/inc/lang/lt/lang.php
site/trunk/www-root/wiki/inc/lang/lt/locked.txt
site/trunk/www-root/wiki/inc/lang/lt/login.txt
site/trunk/www-root/wiki/inc/lang/lt/mailtext.txt
site/trunk/www-root/wiki/inc/lang/lt/newpage.txt
site/trunk/www-root/wiki/inc/lang/lt/norev.txt
site/trunk/www-root/wiki/inc/lang/lt/password.txt
site/trunk/www-root/wiki/inc/lang/lt/preview.txt
site/trunk/www-root/wiki/inc/lang/lt/read.txt
site/trunk/www-root/wiki/inc/lang/lt/recent.txt
site/trunk/www-root/wiki/inc/lang/lt/register.txt
site/trunk/www-root/wiki/inc/lang/lt/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/lt/revisions.txt
site/trunk/www-root/wiki/inc/lang/lt/searchpage.txt
site/trunk/www-root/wiki/inc/lang/lt/showrev.txt
site/trunk/www-root/wiki/inc/lang/lt/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/lt/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/lt/wordblock.txt
site/trunk/www-root/wiki/inc/lang/lv/admin.txt
site/trunk/www-root/wiki/inc/lang/lv/backlinks.txt
site/trunk/www-root/wiki/inc/lang/lv/conflict.txt
site/trunk/www-root/wiki/inc/lang/lv/denied.txt
site/trunk/www-root/wiki/inc/lang/lv/diff.txt
site/trunk/www-root/wiki/inc/lang/lv/draft.txt
site/trunk/www-root/wiki/inc/lang/lv/edit.txt
site/trunk/www-root/wiki/inc/lang/lv/editrev.txt
site/trunk/www-root/wiki/inc/lang/lv/index.txt
site/trunk/www-root/wiki/inc/lang/lv/install.html
site/trunk/www-root/wiki/inc/lang/lv/lang.php
site/trunk/www-root/wiki/inc/lang/lv/locked.txt
site/trunk/www-root/wiki/inc/lang/lv/login.txt
site/trunk/www-root/wiki/inc/lang/lv/mailtext.txt
site/trunk/www-root/wiki/inc/lang/lv/newpage.txt
site/trunk/www-root/wiki/inc/lang/lv/norev.txt
site/trunk/www-root/wiki/inc/lang/lv/password.txt
site/trunk/www-root/wiki/inc/lang/lv/preview.txt
site/trunk/www-root/wiki/inc/lang/lv/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/lv/read.txt
site/trunk/www-root/wiki/inc/lang/lv/recent.txt
site/trunk/www-root/wiki/inc/lang/lv/register.txt
site/trunk/www-root/wiki/inc/lang/lv/registermail.txt
site/trunk/www-root/wiki/inc/lang/lv/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/lv/revisions.txt
site/trunk/www-root/wiki/inc/lang/lv/searchpage.txt
site/trunk/www-root/wiki/inc/lang/lv/showrev.txt
site/trunk/www-root/wiki/inc/lang/lv/stopwords.txt
site/trunk/www-root/wiki/inc/lang/lv/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/lv/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/lv/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/lv/wordblock.txt
site/trunk/www-root/wiki/inc/lang/mg/lang.php
site/trunk/www-root/wiki/inc/lang/nl/admin.txt
site/trunk/www-root/wiki/inc/lang/nl/backlinks.txt
site/trunk/www-root/wiki/inc/lang/nl/conflict.txt
site/trunk/www-root/wiki/inc/lang/nl/denied.txt
site/trunk/www-root/wiki/inc/lang/nl/diff.txt
site/trunk/www-root/wiki/inc/lang/nl/draft.txt
site/trunk/www-root/wiki/inc/lang/nl/edit.txt
site/trunk/www-root/wiki/inc/lang/nl/editrev.txt
site/trunk/www-root/wiki/inc/lang/nl/index.txt
site/trunk/www-root/wiki/inc/lang/nl/install.html
site/trunk/www-root/wiki/inc/lang/nl/lang.php
site/trunk/www-root/wiki/inc/lang/nl/locked.txt
site/trunk/www-root/wiki/inc/lang/nl/login.txt
site/trunk/www-root/wiki/inc/lang/nl/mailtext.txt
site/trunk/www-root/wiki/inc/lang/nl/newpage.txt
site/trunk/www-root/wiki/inc/lang/nl/norev.txt
site/trunk/www-root/wiki/inc/lang/nl/password.txt
site/trunk/www-root/wiki/inc/lang/nl/preview.txt
site/trunk/www-root/wiki/inc/lang/nl/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/nl/read.txt
site/trunk/www-root/wiki/inc/lang/nl/recent.txt
site/trunk/www-root/wiki/inc/lang/nl/register.txt
site/trunk/www-root/wiki/inc/lang/nl/registermail.txt
site/trunk/www-root/wiki/inc/lang/nl/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/nl/revisions.txt
site/trunk/www-root/wiki/inc/lang/nl/searchpage.txt
site/trunk/www-root/wiki/inc/lang/nl/showrev.txt
site/trunk/www-root/wiki/inc/lang/nl/stopwords.txt
site/trunk/www-root/wiki/inc/lang/nl/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/nl/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/nl/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/nl/wordblock.txt
site/trunk/www-root/wiki/inc/lang/no/admin.txt
site/trunk/www-root/wiki/inc/lang/no/backlinks.txt
site/trunk/www-root/wiki/inc/lang/no/conflict.txt
site/trunk/www-root/wiki/inc/lang/no/denied.txt
site/trunk/www-root/wiki/inc/lang/no/diff.txt
site/trunk/www-root/wiki/inc/lang/no/draft.txt
site/trunk/www-root/wiki/inc/lang/no/edit.txt
site/trunk/www-root/wiki/inc/lang/no/editrev.txt
site/trunk/www-root/wiki/inc/lang/no/index.txt
site/trunk/www-root/wiki/inc/lang/no/install.html
site/trunk/www-root/wiki/inc/lang/no/lang.php
site/trunk/www-root/wiki/inc/lang/no/locked.txt
site/trunk/www-root/wiki/inc/lang/no/login.txt
site/trunk/www-root/wiki/inc/lang/no/mailtext.txt
site/trunk/www-root/wiki/inc/lang/no/newpage.txt
site/trunk/www-root/wiki/inc/lang/no/norev.txt
site/trunk/www-root/wiki/inc/lang/no/password.txt
site/trunk/www-root/wiki/inc/lang/no/preview.txt
site/trunk/www-root/wiki/inc/lang/no/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/no/read.txt
site/trunk/www-root/wiki/inc/lang/no/recent.txt
site/trunk/www-root/wiki/inc/lang/no/register.txt
site/trunk/www-root/wiki/inc/lang/no/registermail.txt
site/trunk/www-root/wiki/inc/lang/no/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/no/revisions.txt
site/trunk/www-root/wiki/inc/lang/no/searchpage.txt
site/trunk/www-root/wiki/inc/lang/no/showrev.txt
site/trunk/www-root/wiki/inc/lang/no/stopwords.txt
site/trunk/www-root/wiki/inc/lang/no/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/no/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/no/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/no/wordblock.txt
site/trunk/www-root/wiki/inc/lang/pl/admin.txt
site/trunk/www-root/wiki/inc/lang/pl/backlinks.txt
site/trunk/www-root/wiki/inc/lang/pl/conflict.txt
site/trunk/www-root/wiki/inc/lang/pl/denied.txt
site/trunk/www-root/wiki/inc/lang/pl/diff.txt
site/trunk/www-root/wiki/inc/lang/pl/draft.txt
site/trunk/www-root/wiki/inc/lang/pl/edit.txt
site/trunk/www-root/wiki/inc/lang/pl/editrev.txt
site/trunk/www-root/wiki/inc/lang/pl/index.txt
site/trunk/www-root/wiki/inc/lang/pl/install.html
site/trunk/www-root/wiki/inc/lang/pl/lang.php
site/trunk/www-root/wiki/inc/lang/pl/locked.txt
site/trunk/www-root/wiki/inc/lang/pl/login.txt
site/trunk/www-root/wiki/inc/lang/pl/mailtext.txt
site/trunk/www-root/wiki/inc/lang/pl/newpage.txt
site/trunk/www-root/wiki/inc/lang/pl/norev.txt
site/trunk/www-root/wiki/inc/lang/pl/password.txt
site/trunk/www-root/wiki/inc/lang/pl/preview.txt
site/trunk/www-root/wiki/inc/lang/pl/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/pl/read.txt
site/trunk/www-root/wiki/inc/lang/pl/recent.txt
site/trunk/www-root/wiki/inc/lang/pl/register.txt
site/trunk/www-root/wiki/inc/lang/pl/registermail.txt
site/trunk/www-root/wiki/inc/lang/pl/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/pl/revisions.txt
site/trunk/www-root/wiki/inc/lang/pl/searchpage.txt
site/trunk/www-root/wiki/inc/lang/pl/showrev.txt
site/trunk/www-root/wiki/inc/lang/pl/stopwords.txt
site/trunk/www-root/wiki/inc/lang/pl/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/pl/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/pl/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/pl/wordblock.txt
site/trunk/www-root/wiki/inc/lang/pt-br/admin.txt
site/trunk/www-root/wiki/inc/lang/pt-br/backlinks.txt
site/trunk/www-root/wiki/inc/lang/pt-br/conflict.txt
site/trunk/www-root/wiki/inc/lang/pt-br/denied.txt
site/trunk/www-root/wiki/inc/lang/pt-br/diff.txt
site/trunk/www-root/wiki/inc/lang/pt-br/draft.txt
site/trunk/www-root/wiki/inc/lang/pt-br/edit.txt
site/trunk/www-root/wiki/inc/lang/pt-br/editrev.txt
site/trunk/www-root/wiki/inc/lang/pt-br/index.txt
site/trunk/www-root/wiki/inc/lang/pt-br/install.html
site/trunk/www-root/wiki/inc/lang/pt-br/lang.php
site/trunk/www-root/wiki/inc/lang/pt-br/locked.txt
site/trunk/www-root/wiki/inc/lang/pt-br/login.txt
site/trunk/www-root/wiki/inc/lang/pt-br/mailtext.txt
site/trunk/www-root/wiki/inc/lang/pt-br/newpage.txt
site/trunk/www-root/wiki/inc/lang/pt-br/norev.txt
site/trunk/www-root/wiki/inc/lang/pt-br/password.txt
site/trunk/www-root/wiki/inc/lang/pt-br/preview.txt
site/trunk/www-root/wiki/inc/lang/pt-br/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/pt-br/read.txt
site/trunk/www-root/wiki/inc/lang/pt-br/recent.txt
site/trunk/www-root/wiki/inc/lang/pt-br/register.txt
site/trunk/www-root/wiki/inc/lang/pt-br/registermail.txt
site/trunk/www-root/wiki/inc/lang/pt-br/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/pt-br/revisions.txt
site/trunk/www-root/wiki/inc/lang/pt-br/searchpage.txt
site/trunk/www-root/wiki/inc/lang/pt-br/showrev.txt
site/trunk/www-root/wiki/inc/lang/pt-br/stopwords.txt
site/trunk/www-root/wiki/inc/lang/pt-br/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/pt-br/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/pt-br/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/pt-br/wordblock.txt
site/trunk/www-root/wiki/inc/lang/pt/admin.txt
site/trunk/www-root/wiki/inc/lang/pt/backlinks.txt
site/trunk/www-root/wiki/inc/lang/pt/conflict.txt
site/trunk/www-root/wiki/inc/lang/pt/denied.txt
site/trunk/www-root/wiki/inc/lang/pt/diff.txt
site/trunk/www-root/wiki/inc/lang/pt/draft.txt
site/trunk/www-root/wiki/inc/lang/pt/edit.txt
site/trunk/www-root/wiki/inc/lang/pt/editrev.txt
site/trunk/www-root/wiki/inc/lang/pt/index.txt
site/trunk/www-root/wiki/inc/lang/pt/install.html
site/trunk/www-root/wiki/inc/lang/pt/lang.php
site/trunk/www-root/wiki/inc/lang/pt/locked.txt
site/trunk/www-root/wiki/inc/lang/pt/login.txt
site/trunk/www-root/wiki/inc/lang/pt/mailtext.txt
site/trunk/www-root/wiki/inc/lang/pt/newpage.txt
site/trunk/www-root/wiki/inc/lang/pt/norev.txt
site/trunk/www-root/wiki/inc/lang/pt/password.txt
site/trunk/www-root/wiki/inc/lang/pt/preview.txt
site/trunk/www-root/wiki/inc/lang/pt/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/pt/read.txt
site/trunk/www-root/wiki/inc/lang/pt/recent.txt
site/trunk/www-root/wiki/inc/lang/pt/register.txt
site/trunk/www-root/wiki/inc/lang/pt/registermail.txt
site/trunk/www-root/wiki/inc/lang/pt/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/pt/revisions.txt
site/trunk/www-root/wiki/inc/lang/pt/searchpage.txt
site/trunk/www-root/wiki/inc/lang/pt/showrev.txt
site/trunk/www-root/wiki/inc/lang/pt/stopwords.txt
site/trunk/www-root/wiki/inc/lang/pt/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/pt/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/pt/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/pt/wordblock.txt
site/trunk/www-root/wiki/inc/lang/ro/admin.txt
site/trunk/www-root/wiki/inc/lang/ro/backlinks.txt
site/trunk/www-root/wiki/inc/lang/ro/conflict.txt
site/trunk/www-root/wiki/inc/lang/ro/denied.txt
site/trunk/www-root/wiki/inc/lang/ro/diff.txt
site/trunk/www-root/wiki/inc/lang/ro/draft.txt
site/trunk/www-root/wiki/inc/lang/ro/edit.txt
site/trunk/www-root/wiki/inc/lang/ro/editrev.txt
site/trunk/www-root/wiki/inc/lang/ro/index.txt
site/trunk/www-root/wiki/inc/lang/ro/install.html
site/trunk/www-root/wiki/inc/lang/ro/lang.php
site/trunk/www-root/wiki/inc/lang/ro/locked.txt
site/trunk/www-root/wiki/inc/lang/ro/login.txt
site/trunk/www-root/wiki/inc/lang/ro/mailtext.txt
site/trunk/www-root/wiki/inc/lang/ro/newpage.txt
site/trunk/www-root/wiki/inc/lang/ro/norev.txt
site/trunk/www-root/wiki/inc/lang/ro/password.txt
site/trunk/www-root/wiki/inc/lang/ro/preview.txt
site/trunk/www-root/wiki/inc/lang/ro/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/ro/read.txt
site/trunk/www-root/wiki/inc/lang/ro/recent.txt
site/trunk/www-root/wiki/inc/lang/ro/register.txt
site/trunk/www-root/wiki/inc/lang/ro/registermail.txt
site/trunk/www-root/wiki/inc/lang/ro/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/ro/revisions.txt
site/trunk/www-root/wiki/inc/lang/ro/searchpage.txt
site/trunk/www-root/wiki/inc/lang/ro/showrev.txt
site/trunk/www-root/wiki/inc/lang/ro/stopwords.txt
site/trunk/www-root/wiki/inc/lang/ro/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/ro/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/ro/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/ro/wordblock.txt
site/trunk/www-root/wiki/inc/lang/ru/admin.txt
site/trunk/www-root/wiki/inc/lang/ru/backlinks.txt
site/trunk/www-root/wiki/inc/lang/ru/conflict.txt
site/trunk/www-root/wiki/inc/lang/ru/denied.txt
site/trunk/www-root/wiki/inc/lang/ru/diff.txt
site/trunk/www-root/wiki/inc/lang/ru/draft.txt
site/trunk/www-root/wiki/inc/lang/ru/edit.txt
site/trunk/www-root/wiki/inc/lang/ru/editrev.txt
site/trunk/www-root/wiki/inc/lang/ru/index.txt
site/trunk/www-root/wiki/inc/lang/ru/install.html
site/trunk/www-root/wiki/inc/lang/ru/lang.php
site/trunk/www-root/wiki/inc/lang/ru/locked.txt
site/trunk/www-root/wiki/inc/lang/ru/login.txt
site/trunk/www-root/wiki/inc/lang/ru/mailtext.txt
site/trunk/www-root/wiki/inc/lang/ru/newpage.txt
site/trunk/www-root/wiki/inc/lang/ru/norev.txt
site/trunk/www-root/wiki/inc/lang/ru/password.txt
site/trunk/www-root/wiki/inc/lang/ru/preview.txt
site/trunk/www-root/wiki/inc/lang/ru/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/ru/read.txt
site/trunk/www-root/wiki/inc/lang/ru/recent.txt
site/trunk/www-root/wiki/inc/lang/ru/register.txt
site/trunk/www-root/wiki/inc/lang/ru/registermail.txt
site/trunk/www-root/wiki/inc/lang/ru/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/ru/revisions.txt
site/trunk/www-root/wiki/inc/lang/ru/searchpage.txt
site/trunk/www-root/wiki/inc/lang/ru/showrev.txt
site/trunk/www-root/wiki/inc/lang/ru/stopwords.txt
site/trunk/www-root/wiki/inc/lang/ru/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/ru/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/ru/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/ru/wordblock.txt
site/trunk/www-root/wiki/inc/lang/sk/admin.txt
site/trunk/www-root/wiki/inc/lang/sk/backlinks.txt
site/trunk/www-root/wiki/inc/lang/sk/conflict.txt
site/trunk/www-root/wiki/inc/lang/sk/denied.txt
site/trunk/www-root/wiki/inc/lang/sk/diff.txt
site/trunk/www-root/wiki/inc/lang/sk/draft.txt
site/trunk/www-root/wiki/inc/lang/sk/edit.txt
site/trunk/www-root/wiki/inc/lang/sk/editrev.txt
site/trunk/www-root/wiki/inc/lang/sk/index.txt
site/trunk/www-root/wiki/inc/lang/sk/install.html
site/trunk/www-root/wiki/inc/lang/sk/lang.php
site/trunk/www-root/wiki/inc/lang/sk/locked.txt
site/trunk/www-root/wiki/inc/lang/sk/login.txt
site/trunk/www-root/wiki/inc/lang/sk/mailtext.txt
site/trunk/www-root/wiki/inc/lang/sk/newpage.txt
site/trunk/www-root/wiki/inc/lang/sk/norev.txt
site/trunk/www-root/wiki/inc/lang/sk/password.txt
site/trunk/www-root/wiki/inc/lang/sk/preview.txt
site/trunk/www-root/wiki/inc/lang/sk/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/sk/read.txt
site/trunk/www-root/wiki/inc/lang/sk/recent.txt
site/trunk/www-root/wiki/inc/lang/sk/register.txt
site/trunk/www-root/wiki/inc/lang/sk/registermail.txt
site/trunk/www-root/wiki/inc/lang/sk/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/sk/revisions.txt
site/trunk/www-root/wiki/inc/lang/sk/searchpage.txt
site/trunk/www-root/wiki/inc/lang/sk/showrev.txt
site/trunk/www-root/wiki/inc/lang/sk/stopwords.txt
site/trunk/www-root/wiki/inc/lang/sk/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/sk/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/sk/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/sk/wordblock.txt
site/trunk/www-root/wiki/inc/lang/sl/backlinks.txt
site/trunk/www-root/wiki/inc/lang/sl/conflict.txt
site/trunk/www-root/wiki/inc/lang/sl/denied.txt
site/trunk/www-root/wiki/inc/lang/sl/diff.txt
site/trunk/www-root/wiki/inc/lang/sl/edit.txt
site/trunk/www-root/wiki/inc/lang/sl/editrev.txt
site/trunk/www-root/wiki/inc/lang/sl/index.txt
site/trunk/www-root/wiki/inc/lang/sl/lang.php
site/trunk/www-root/wiki/inc/lang/sl/locked.txt
site/trunk/www-root/wiki/inc/lang/sl/login.txt
site/trunk/www-root/wiki/inc/lang/sl/mailtext.txt
site/trunk/www-root/wiki/inc/lang/sl/newpage.txt
site/trunk/www-root/wiki/inc/lang/sl/norev.txt
site/trunk/www-root/wiki/inc/lang/sl/password.txt
site/trunk/www-root/wiki/inc/lang/sl/preview.txt
site/trunk/www-root/wiki/inc/lang/sl/read.txt
site/trunk/www-root/wiki/inc/lang/sl/recent.txt
site/trunk/www-root/wiki/inc/lang/sl/register.txt
site/trunk/www-root/wiki/inc/lang/sl/revisions.txt
site/trunk/www-root/wiki/inc/lang/sl/searchpage.txt
site/trunk/www-root/wiki/inc/lang/sl/showrev.txt
site/trunk/www-root/wiki/inc/lang/sl/wordblock.txt
site/trunk/www-root/wiki/inc/lang/sr/admin.txt
site/trunk/www-root/wiki/inc/lang/sr/backlinks.txt
site/trunk/www-root/wiki/inc/lang/sr/conflict.txt
site/trunk/www-root/wiki/inc/lang/sr/denied.txt
site/trunk/www-root/wiki/inc/lang/sr/diff.txt
site/trunk/www-root/wiki/inc/lang/sr/edit.txt
site/trunk/www-root/wiki/inc/lang/sr/editrev.txt
site/trunk/www-root/wiki/inc/lang/sr/index.txt
site/trunk/www-root/wiki/inc/lang/sr/lang.php
site/trunk/www-root/wiki/inc/lang/sr/locked.txt
site/trunk/www-root/wiki/inc/lang/sr/login.txt
site/trunk/www-root/wiki/inc/lang/sr/mailtext.txt
site/trunk/www-root/wiki/inc/lang/sr/newpage.txt
site/trunk/www-root/wiki/inc/lang/sr/norev.txt
site/trunk/www-root/wiki/inc/lang/sr/password.txt
site/trunk/www-root/wiki/inc/lang/sr/preview.txt
site/trunk/www-root/wiki/inc/lang/sr/read.txt
site/trunk/www-root/wiki/inc/lang/sr/recent.txt
site/trunk/www-root/wiki/inc/lang/sr/register.txt
site/trunk/www-root/wiki/inc/lang/sr/revisions.txt
site/trunk/www-root/wiki/inc/lang/sr/searchpage.txt
site/trunk/www-root/wiki/inc/lang/sr/showrev.txt
site/trunk/www-root/wiki/inc/lang/sr/stopwords.txt
site/trunk/www-root/wiki/inc/lang/sr/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/sr/wordblock.txt
site/trunk/www-root/wiki/inc/lang/sv/admin.txt
site/trunk/www-root/wiki/inc/lang/sv/backlinks.txt
site/trunk/www-root/wiki/inc/lang/sv/conflict.txt
site/trunk/www-root/wiki/inc/lang/sv/denied.txt
site/trunk/www-root/wiki/inc/lang/sv/diff.txt
site/trunk/www-root/wiki/inc/lang/sv/draft.txt
site/trunk/www-root/wiki/inc/lang/sv/edit.txt
site/trunk/www-root/wiki/inc/lang/sv/editrev.txt
site/trunk/www-root/wiki/inc/lang/sv/index.txt
site/trunk/www-root/wiki/inc/lang/sv/install.html
site/trunk/www-root/wiki/inc/lang/sv/lang.php
site/trunk/www-root/wiki/inc/lang/sv/locked.txt
site/trunk/www-root/wiki/inc/lang/sv/login.txt
site/trunk/www-root/wiki/inc/lang/sv/mailtext.txt
site/trunk/www-root/wiki/inc/lang/sv/newpage.txt
site/trunk/www-root/wiki/inc/lang/sv/norev.txt
site/trunk/www-root/wiki/inc/lang/sv/password.txt
site/trunk/www-root/wiki/inc/lang/sv/preview.txt
site/trunk/www-root/wiki/inc/lang/sv/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/sv/read.txt
site/trunk/www-root/wiki/inc/lang/sv/recent.txt
site/trunk/www-root/wiki/inc/lang/sv/register.txt
site/trunk/www-root/wiki/inc/lang/sv/registermail.txt
site/trunk/www-root/wiki/inc/lang/sv/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/sv/revisions.txt
site/trunk/www-root/wiki/inc/lang/sv/searchpage.txt
site/trunk/www-root/wiki/inc/lang/sv/showrev.txt
site/trunk/www-root/wiki/inc/lang/sv/stopwords.txt
site/trunk/www-root/wiki/inc/lang/sv/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/sv/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/sv/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/sv/wordblock.txt
site/trunk/www-root/wiki/inc/lang/tr/admin.txt
site/trunk/www-root/wiki/inc/lang/tr/backlinks.txt
site/trunk/www-root/wiki/inc/lang/tr/conflict.txt
site/trunk/www-root/wiki/inc/lang/tr/denied.txt
site/trunk/www-root/wiki/inc/lang/tr/diff.txt
site/trunk/www-root/wiki/inc/lang/tr/draft.txt
site/trunk/www-root/wiki/inc/lang/tr/edit.txt
site/trunk/www-root/wiki/inc/lang/tr/editrev.txt
site/trunk/www-root/wiki/inc/lang/tr/index.txt
site/trunk/www-root/wiki/inc/lang/tr/install.html
site/trunk/www-root/wiki/inc/lang/tr/lang.php
site/trunk/www-root/wiki/inc/lang/tr/locked.txt
site/trunk/www-root/wiki/inc/lang/tr/login.txt
site/trunk/www-root/wiki/inc/lang/tr/mailtext.txt
site/trunk/www-root/wiki/inc/lang/tr/newpage.txt
site/trunk/www-root/wiki/inc/lang/tr/norev.txt
site/trunk/www-root/wiki/inc/lang/tr/password.txt
site/trunk/www-root/wiki/inc/lang/tr/preview.txt
site/trunk/www-root/wiki/inc/lang/tr/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/tr/read.txt
site/trunk/www-root/wiki/inc/lang/tr/recent.txt
site/trunk/www-root/wiki/inc/lang/tr/register.txt
site/trunk/www-root/wiki/inc/lang/tr/registermail.txt
site/trunk/www-root/wiki/inc/lang/tr/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/tr/revisions.txt
site/trunk/www-root/wiki/inc/lang/tr/searchpage.txt
site/trunk/www-root/wiki/inc/lang/tr/showrev.txt
site/trunk/www-root/wiki/inc/lang/tr/stopwords.txt
site/trunk/www-root/wiki/inc/lang/tr/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/tr/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/tr/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/tr/wordblock.txt
site/trunk/www-root/wiki/inc/lang/uk/admin.txt
site/trunk/www-root/wiki/inc/lang/uk/backlinks.txt
site/trunk/www-root/wiki/inc/lang/uk/conflict.txt
site/trunk/www-root/wiki/inc/lang/uk/denied.txt
site/trunk/www-root/wiki/inc/lang/uk/diff.txt
site/trunk/www-root/wiki/inc/lang/uk/draft.txt
site/trunk/www-root/wiki/inc/lang/uk/edit.txt
site/trunk/www-root/wiki/inc/lang/uk/editrev.txt
site/trunk/www-root/wiki/inc/lang/uk/index.txt
site/trunk/www-root/wiki/inc/lang/uk/install.html
site/trunk/www-root/wiki/inc/lang/uk/lang.php
site/trunk/www-root/wiki/inc/lang/uk/locked.txt
site/trunk/www-root/wiki/inc/lang/uk/login.txt
site/trunk/www-root/wiki/inc/lang/uk/mailtext.txt
site/trunk/www-root/wiki/inc/lang/uk/newpage.txt
site/trunk/www-root/wiki/inc/lang/uk/norev.txt
site/trunk/www-root/wiki/inc/lang/uk/password.txt
site/trunk/www-root/wiki/inc/lang/uk/preview.txt
site/trunk/www-root/wiki/inc/lang/uk/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/uk/read.txt
site/trunk/www-root/wiki/inc/lang/uk/recent.txt
site/trunk/www-root/wiki/inc/lang/uk/register.txt
site/trunk/www-root/wiki/inc/lang/uk/registermail.txt
site/trunk/www-root/wiki/inc/lang/uk/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/uk/revisions.txt
site/trunk/www-root/wiki/inc/lang/uk/searchpage.txt
site/trunk/www-root/wiki/inc/lang/uk/showrev.txt
site/trunk/www-root/wiki/inc/lang/uk/stopwords.txt
site/trunk/www-root/wiki/inc/lang/uk/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/uk/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/uk/wordblock.txt
site/trunk/www-root/wiki/inc/lang/vi/admin.txt
site/trunk/www-root/wiki/inc/lang/vi/backlinks.txt
site/trunk/www-root/wiki/inc/lang/vi/conflict.txt
site/trunk/www-root/wiki/inc/lang/vi/denied.txt
site/trunk/www-root/wiki/inc/lang/vi/diff.txt
site/trunk/www-root/wiki/inc/lang/vi/edit.txt
site/trunk/www-root/wiki/inc/lang/vi/editrev.txt
site/trunk/www-root/wiki/inc/lang/vi/index.txt
site/trunk/www-root/wiki/inc/lang/vi/lang.php
site/trunk/www-root/wiki/inc/lang/vi/locked.txt
site/trunk/www-root/wiki/inc/lang/vi/login.txt
site/trunk/www-root/wiki/inc/lang/vi/mailtext.txt
site/trunk/www-root/wiki/inc/lang/vi/newpage.txt
site/trunk/www-root/wiki/inc/lang/vi/norev.txt
site/trunk/www-root/wiki/inc/lang/vi/password.txt
site/trunk/www-root/wiki/inc/lang/vi/preview.txt
site/trunk/www-root/wiki/inc/lang/vi/read.txt
site/trunk/www-root/wiki/inc/lang/vi/recent.txt
site/trunk/www-root/wiki/inc/lang/vi/register.txt
site/trunk/www-root/wiki/inc/lang/vi/revisions.txt
site/trunk/www-root/wiki/inc/lang/vi/searchpage.txt
site/trunk/www-root/wiki/inc/lang/vi/showrev.txt
site/trunk/www-root/wiki/inc/lang/vi/wordblock.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/admin.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/backlinks.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/conflict.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/denied.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/diff.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/edit.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/editrev.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/index.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/lang.php
site/trunk/www-root/wiki/inc/lang/zh-tw/locked.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/login.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/mailtext.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/newpage.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/norev.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/password.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/preview.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/read.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/recent.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/register.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/revisions.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/searchpage.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/showrev.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/stopwords.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/zh-tw/wordblock.txt
site/trunk/www-root/wiki/inc/lang/zh/admin.txt
site/trunk/www-root/wiki/inc/lang/zh/backlinks.txt
site/trunk/www-root/wiki/inc/lang/zh/conflict.txt
site/trunk/www-root/wiki/inc/lang/zh/denied.txt
site/trunk/www-root/wiki/inc/lang/zh/diff.txt
site/trunk/www-root/wiki/inc/lang/zh/draft.txt
site/trunk/www-root/wiki/inc/lang/zh/editrev.txt
site/trunk/www-root/wiki/inc/lang/zh/index.txt
site/trunk/www-root/wiki/inc/lang/zh/install.html
site/trunk/www-root/wiki/inc/lang/zh/lang.php
site/trunk/www-root/wiki/inc/lang/zh/locked.txt
site/trunk/www-root/wiki/inc/lang/zh/login.txt
site/trunk/www-root/wiki/inc/lang/zh/mailtext.txt
site/trunk/www-root/wiki/inc/lang/zh/newpage.txt
site/trunk/www-root/wiki/inc/lang/zh/norev.txt
site/trunk/www-root/wiki/inc/lang/zh/password.txt
site/trunk/www-root/wiki/inc/lang/zh/preview.txt
site/trunk/www-root/wiki/inc/lang/zh/pwconfirm.txt
site/trunk/www-root/wiki/inc/lang/zh/read.txt
site/trunk/www-root/wiki/inc/lang/zh/recent.txt
site/trunk/www-root/wiki/inc/lang/zh/register.txt
site/trunk/www-root/wiki/inc/lang/zh/registermail.txt
site/trunk/www-root/wiki/inc/lang/zh/resendpwd.txt
site/trunk/www-root/wiki/inc/lang/zh/revisions.txt
site/trunk/www-root/wiki/inc/lang/zh/searchpage.txt
site/trunk/www-root/wiki/inc/lang/zh/showrev.txt
site/trunk/www-root/wiki/inc/lang/zh/stopwords.txt
site/trunk/www-root/wiki/inc/lang/zh/subscribermail.txt
site/trunk/www-root/wiki/inc/lang/zh/updateprofile.txt
site/trunk/www-root/wiki/inc/lang/zh/uploadmail.txt
site/trunk/www-root/wiki/inc/lang/zh/wordblock.txt
site/trunk/www-root/wiki/inc/mail.php
site/trunk/www-root/wiki/inc/media.php
site/trunk/www-root/wiki/inc/pageutils.php
site/trunk/www-root/wiki/inc/parser/handler.php
site/trunk/www-root/wiki/inc/parser/lexer.php
site/trunk/www-root/wiki/inc/parser/metadata.php
site/trunk/www-root/wiki/inc/parser/parser.php
site/trunk/www-root/wiki/inc/parser/renderer.php
site/trunk/www-root/wiki/inc/parser/xhtml.php
site/trunk/www-root/wiki/inc/parser/xhtmlsummary.php
site/trunk/www-root/wiki/inc/parserutils.php
site/trunk/www-root/wiki/inc/plugin.php
site/trunk/www-root/wiki/inc/pluginutils.php
site/trunk/www-root/wiki/inc/search.php
site/trunk/www-root/wiki/inc/template.php
site/trunk/www-root/wiki/inc/toolbar.php
site/trunk/www-root/wiki/inc/utf8.php
site/trunk/www-root/wiki/index.php
site/trunk/www-root/wiki/lib/exe/ajax.php
site/trunk/www-root/wiki/lib/exe/css.php
site/trunk/www-root/wiki/lib/exe/detail.php
site/trunk/www-root/wiki/lib/exe/fetch.php
site/trunk/www-root/wiki/lib/exe/indexer.php
site/trunk/www-root/wiki/lib/exe/js.php
site/trunk/www-root/wiki/lib/exe/mediamanager.php
site/trunk/www-root/wiki/lib/exe/opensearch.php
site/trunk/www-root/wiki/lib/exe/xmlrpc.php
site/trunk/www-root/wiki/lib/images/fileicons/index.php
site/trunk/www-root/wiki/lib/plugins/acl/admin.php
site/trunk/www-root/wiki/lib/plugins/acl/ajax.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/ar/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/bg/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/help.txt
site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/help.txt
site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/da/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/de/help.txt
site/trunk/www-root/wiki/lib/plugins/acl/lang/de/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/el/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/en/help.txt
site/trunk/www-root/wiki/lib/plugins/acl/lang/en/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/help.txt
site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/es/help.txt
site/trunk/www-root/wiki/lib/plugins/acl/lang/es/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/lang/et/lang.php
site/trunk/www-root/wiki/lib/plugins/acl/script.js
site/trunk/www-root/wiki/lib/plugins/acl/style.css
site/trunk/www-root/wiki/lib/plugins/action.php
site/trunk/www-root/wiki/lib/plugins/admin.php
site/trunk/www-root/wiki/lib/plugins/syntax.php
site/trunk/www-root/wiki/lib/tpl/spring/main.php
Log:
- updated dokuwiki
- the spring favicon is now used instead of the dokuwiki favicon
Modified: site/trunk/www-root/wiki/.htaccess
===================================================================
--- site/trunk/www-root/wiki/.htaccess 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/.htaccess 2008-05-17 23:27:47 UTC (rev 5904)
@@ -18,8 +18,14 @@
## Not all installations will require the following line. If you do,
## change "/dokuwiki" to the path to your dokuwiki directory relative
## to your document root.
-#RewriteBase /wiki
+RewriteBase /wiki
#
+## If you enable DokuWikis XML-RPC interface, you should consider to
+## restrict access to it over HTTPS only! Uncomment the following two
+## rules if your server setup allows HTTPS.
+#RewriteCond %{HTTPS} !=on
+#RewriteRule ^lib/exe/xmlrpc.php$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
+#
RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L]
RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L]
RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L]
Modified: site/trunk/www-root/wiki/doku.php
===================================================================
--- site/trunk/www-root/wiki/doku.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/doku.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,82 +1,82 @@
-<?php
-/**
- * DokuWiki mainscript
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-// xdebug_start_profiling();
-
- if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/');
- require_once(DOKU_INC.'inc/init.php');
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/events.php');
- require_once(DOKU_INC.'inc/pageutils.php');
- require_once(DOKU_INC.'inc/html.php');
- require_once(DOKU_INC.'inc/auth.php');
- require_once(DOKU_INC.'inc/actions.php');
-
- //import variables
- $QUERY = trim($_REQUEST['id']);
- $ID = getID();
- $NS = getNS($ID);
- $REV = $_REQUEST['rev'];
- $ACT = $_REQUEST['do'];
- $IDX = $_REQUEST['idx'];
- $DATE = $_REQUEST['date'];
- $RANGE = $_REQUEST['lines'];
- $HIGH = $_REQUEST['s'];
- if(empty($HIGH)) $HIGH = getGoogleQuery();
-
- $TEXT = cleanText($_POST['wikitext']);
- $PRE = cleanText($_POST['prefix']);
- $SUF = cleanText($_POST['suffix']);
- $SUM = $_REQUEST['summary'];
-
- //sanitize revision
- $REV = preg_replace('/[^0-9]/','',$REV);
-
- //we accept the do param as HTTP header, too:
- if(!empty($_SERVER['HTTP_X_DOKUWIKI_DO'])){
- $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO']));
- }
-
- if(!empty($IDX)) $ACT='index';
- //set default #FIXME not needed here? done in actions?
- if(empty($ACT)) $ACT = 'show';
-
- //make infos about the selected page available
- $INFO = pageinfo();
-
- // handle debugging
- if($conf['allowdebug'] && $ACT == 'debug'){
- html_debug();
- exit;
- }
-
- //send 404 for missing pages if configured
- if($conf['send404'] &&
- ($ACT == 'show' || substr($ACT,0,7) == 'export_') &&
- !$INFO['exists']){
- header('HTTP/1.0 404 Not Found');
- }
-
- //prepare breadcrumbs (initialize a static var)
- breadcrumbs();
-
- // check upstream
- checkUpdateMessages();
-
- trigger_event('DOKUWIKI_STARTED',$tmp=array());
-
- //close session
- session_write_close();
-
- //do the work
- act_dispatch($ACT);
-
- trigger_event('DOKUWIKI_DONE', $tmp=array());
-
-// xdebug_dump_function_profile(1);
-?>
+<?php
+/**
+ * DokuWiki mainscript
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+// xdebug_start_profiling();
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/');
+ require_once(DOKU_INC.'inc/init.php');
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/events.php');
+ require_once(DOKU_INC.'inc/pageutils.php');
+ require_once(DOKU_INC.'inc/html.php');
+ require_once(DOKU_INC.'inc/auth.php');
+ require_once(DOKU_INC.'inc/actions.php');
+
+ //import variables
+ $QUERY = trim($_REQUEST['id']);
+ $ID = getID();
+ $NS = getNS($ID);
+ $REV = $_REQUEST['rev'];
+ $ACT = $_REQUEST['do'];
+ $IDX = $_REQUEST['idx'];
+ $DATE = $_REQUEST['date'];
+ $RANGE = $_REQUEST['lines'];
+ $HIGH = $_REQUEST['s'];
+ if(empty($HIGH)) $HIGH = getGoogleQuery();
+
+ $TEXT = cleanText($_POST['wikitext']);
+ $PRE = cleanText($_POST['prefix']);
+ $SUF = cleanText($_POST['suffix']);
+ $SUM = $_REQUEST['summary'];
+
+ //sanitize revision
+ $REV = preg_replace('/[^0-9]/','',$REV);
+
+ //we accept the do param as HTTP header, too:
+ if(!empty($_SERVER['HTTP_X_DOKUWIKI_DO'])){
+ $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO']));
+ }
+
+ if(!empty($IDX)) $ACT='index';
+ //set default #FIXME not needed here? done in actions?
+ if(empty($ACT)) $ACT = 'show';
+
+ //make infos about the selected page available
+ $INFO = pageinfo();
+
+ // handle debugging
+ if($conf['allowdebug'] && $ACT == 'debug'){
+ html_debug();
+ exit;
+ }
+
+ //send 404 for missing pages if configured
+ if($conf['send404'] &&
+ ($ACT == 'show' || substr($ACT,0,7) == 'export_') &&
+ !$INFO['exists']){
+ header('HTTP/1.0 404 Not Found');
+ }
+
+ //prepare breadcrumbs (initialize a static var)
+ breadcrumbs();
+
+ // check upstream
+ checkUpdateMessages();
+
+ trigger_event('DOKUWIKI_STARTED',$tmp=array());
+
+ //close session
+ session_write_close();
+
+ //do the work
+ act_dispatch($ACT);
+
+ trigger_event('DOKUWIKI_DONE', $tmp=array());
+
+// xdebug_dump_function_profile(1);
+?>
Modified: site/trunk/www-root/wiki/feed.php
===================================================================
--- site/trunk/www-root/wiki/feed.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/feed.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,327 +1,327 @@
-<?php
-/**
- * XML feed export
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/');
- require_once(DOKU_INC.'inc/init.php');
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/events.php');
- require_once(DOKU_INC.'inc/parserutils.php');
- require_once(DOKU_INC.'inc/feedcreator.class.php');
- require_once(DOKU_INC.'inc/auth.php');
- require_once(DOKU_INC.'inc/pageutils.php');
-
- //close session
- session_write_close();
-
- // get params
- $opt = rss_parseOptions();
-
- // the feed is dynamic - we need a cache for each combo
- // (but most people just use the default feed so it's still effective)
- $cache = getCacheName(join('',array_values($opt)).$_SERVER['REMOTE_USER'],'.feed');
- $cmod = @filemtime($cache); // 0 if not exists
- if ($cmod && (@filemtime(DOKU_CONF.'local.php')>$cmod || @filemtime(DOKU_CONF.'dokuwiki.php')>$cmod)) {
- // ignore cache if feed prefs may have changed
- $cmod = 0;
- }
-
- // check cacheage and deliver if nothing has changed since last
- // time or the update interval has not passed, also handles conditional requests
- header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
- header('Pragma: public');
- header('Content-Type: application/xml; charset=utf-8');
- if($cmod && (($cmod+$conf['rss_update']>time()) || ($cmod>@filemtime($conf['changelog'])))){
- http_conditionalRequest($cmod);
- if($conf['allowdebug']) header("X-CacheUsed: $cache");
- print io_readFile($cache);
- exit;
- } else {
- http_conditionalRequest(time());
- }
-
- // create new feed
- $rss = new DokuWikiFeedCreator();
- $rss->title = $conf['title'].(($opt['namespace']) ? ' '.$opt['namespace'] : '');
- $rss->link = DOKU_URL;
- $rss->syndicationURL = DOKU_URL.'feed.php';
- $rss->cssStyleSheet = DOKU_URL.'lib/exe/css.php?s=feed';
-
- $image = new FeedImage();
- $image->title = $conf['title'];
- $image->url = DOKU_URL."lib/images/favicon.ico";
- $image->link = DOKU_URL;
- $rss->image = $image;
-
- if($opt['feed_mode'] == 'list'){
- rssListNamespace($rss,$opt);
- }elseif($opt['feed_mode'] == 'search'){
- rssSearch($rss,$opt);
- }else{
- rssRecentChanges($rss,$opt);
- }
-
- $feed = $rss->createFeed($opt['feed_type'],'utf-8');
-
- // save cachefile
- io_saveFile($cache,$feed);
-
- // finally deliver
- print $feed;
-
-// ---------------------------------------------------------------- //
-
-/**
- * Get URL parameters and config options and return a initialized option array
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function rss_parseOptions(){
- global $conf;
-
- $opt['items'] = (int) $_REQUEST['num'];
- $opt['feed_type'] = $_REQUEST['type'];
- $opt['feed_mode'] = $_REQUEST['mode'];
- $opt['show_minor'] = $_REQUEST['minor'];
- $opt['namespace'] = $_REQUEST['ns'];
- $opt['link_to'] = $_REQUEST['linkto'];
- $opt['item_content'] = $_REQUEST['content'];
- $opt['search_query'] = $_REQUEST['q'];
-
- if(!$opt['feed_type']) $opt['feed_type'] = $conf['rss_type'];
- if(!$opt['item_content']) $opt['item_content'] = $conf['rss_content'];
- if(!$opt['link_to']) $opt['link_to'] = $conf['rss_linkto'];
- if(!$opt['items']) $opt['items'] = $conf['recent'];
- $opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none');
-
- switch ($opt['feed_type']){
- case 'rss':
- $opt['feed_type'] = 'RSS0.91';
- $opt['mime_type'] = 'text/xml';
- break;
- case 'rss2':
- $opt['feed_type'] = 'RSS2.0';
- $opt['mime_type'] = 'text/xml';
- break;
- case 'atom':
- $opt['feed_type'] = 'ATOM0.3';
- $opt['mime_type'] = 'application/xml';
- break;
- case 'atom1':
- $opt['feed_type'] = 'ATOM1.0';
- $opt['mime_type'] = 'application/atom+xml';
- break;
- default:
- $opt['feed_type'] = 'RSS1.0';
- $opt['mime_type'] = 'application/xml';
- }
- return $opt;
-}
-
-/**
- * Add recent changed pages to a feed object
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @param object $rss - the FeedCreator Object
- * @param array $data - the items to add
- * @param array $opt - the feed options
- */
-function rss_buildItems(&$rss,&$data,$opt){
- global $conf;
- global $lang;
-
-
- foreach($data as $ditem){
- if(!is_array($ditem)){
- // not an array? then only a list of IDs was given
- $ditem = array( 'id' => $ditem );
- }
-
- $item = new FeedItem();
- $id = $ditem['id'];
- $meta = p_get_metadata($id);
-
- // add date
- if($ditem['date']){
- $date = $ditem['date'];
- }elseif($meta['date']['modified']){
- $date = $meta['date']['modified'];
- }else{
- $date = @filemtime(wikiFN($id));
- }
- if($date) $item->date = date('r',$date);
-
- // add title
- if($conf['useheading'] && $meta['title']){
- $item->title = $meta['title'];
- }else{
- $item->title = $ditem['id'];
- }
- if($conf['rss_show_summary'] && !empty($ditem['sum'])){
- $item->title .= ' - '.strip_tags($ditem['sum']);
- }
-
- // add item link
- switch ($opt['link_to']){
- case 'page':
- $item->link = wl($id,'rev='.$date,true,'&');
- break;
- case 'rev':
- $item->link = wl($id,'do=revisions&rev='.$date,true,'&');
- break;
- case 'current':
- $item->link = wl($id, '', true,'&');
- break;
- case 'diff':
- default:
- $item->link = wl($id,'rev='.$date.'&do=diff',true,'&');
- }
-
- // add item content
- switch ($opt['item_content']){
- case 'diff':
- case 'htmldiff':
- require_once(DOKU_INC.'inc/DifferenceEngine.php');
- $revs = getRevisions($id, 0, 1);
- $rev = $revs[0];
-
- if($rev){
- $df = new Diff(explode("\n",htmlspecialchars(rawWiki($id,$rev))),
- explode("\n",htmlspecialchars(rawWiki($id,''))));
- }else{
- $df = new Diff(array(''),
- explode("\n",htmlspecialchars(rawWiki($id,''))));
- }
-
- if($opt['item_content'] == 'htmldiff'){
- $tdf = new TableDiffFormatter();
- $content = '<table>';
- $content .= '<tr><th colspan="2" width="50%">'.$rev.'</th>';
- $content .= '<th colspan="2" width="50%">'.$lang['current'].'</th></tr>';
- $content .= $tdf->format($df);
- $content .= '</table>';
- }else{
- $udf = new UnifiedDiffFormatter();
- $content = "<pre>\n".$udf->format($df)."\n</pre>";
- }
- break;
- case 'html':
- $content = p_wiki_xhtml($id,$date,false);
- // no TOC in feeds
- $content = preg_replace('/(<!-- TOC START -->).*(<!-- TOC END -->)/s','',$content);
-
- // make URLs work when canonical is not set, regexp instead of rerendering!
- if(!$conf['canonical']){
- $base = preg_quote(DOKU_REL,'/');
- $content = preg_replace('/(<a href|<img src)="('.$base.')/s','$1="'.DOKU_URL,$content);
- }
-
- break;
- case 'abstract':
- default:
- $content = $meta['description']['abstract'];
- }
- $item->description = $content; //FIXME a plugin hook here could be senseful
-
-
- // add user
- # FIXME should the user be pulled from metadata as well?
- $user = null;
- $user = @$ditem['user']; // the @ spares time repeating lookup
- $item->author = '';
- if($user && $conf['useacl'] && $auth){
- $userInfo = $auth->getUserData($user);
- $item->author = $userInfo['name'];
- if($userInfo && !$opt['guardmail']){
- $item->authorEmail = $userInfo['mail'];
- }else{
- //cannot obfuscate because some RSS readers may check validity
- $item->authorEmail = $user.'@'.$recent['ip'];
- }
- }elseif($user){
- // this happens when no ACL but some Apache auth is used
- $item->author = $user;
- $item->authorEmail = $user.'@'.$recent['ip'];
- }else{
- $item->authorEmail = 'anonymous@'.$recent['ip'];
- }
-
- // add category
- if($meta['subject']){
- $item->category = $meta['subject'];
- }else{
- $cat = getNS($id);
- if($cat) $item->category = $cat;
- }
-
- // finally add the item to the feed object, after handing it to registered plugins
- $evdata = array('item' => &$item,
- 'opt' => &$opt,
- 'ditem' => &$ditem,
- 'rss' => &$rss);
- $evt = new Doku_Event('FEED_ITEM_ADD', $evdata);
- if ($evt->advise_before()){
- $rss->addItem($item);
- }
- $evt->advise_after(); // for completeness
- }
-}
-
-
-/**
- * Add recent changed pages to the feed object
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function rssRecentChanges(&$rss,$opt){
- global $conf;
- global $auth;
-
- $flags = RECENTS_SKIP_DELETED;
- if(!$opt['show_minor']) $flags += RECENTS_SKIP_MINORS;
-
- $recents = getRecents(0,$opt['items'],$opt['namespace'],$flags);
-
- rss_buildItems($rss,$recents,$opt);
-}
-
-/**
- * Add all pages of a namespace to the feed object
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function rssListNamespace(&$rss,$opt){
- require_once(DOKU_INC.'inc/search.php');
- global $conf;
-
- $ns=':'.cleanID($opt['namespace']);
- $ns=str_replace(':','/',$ns);
-
- $data = array();
- sort($data);
- search($data,$conf['datadir'],'search_list','',$ns);
-
- rss_buildItems($rss,$data,$opt);
-}
-
-/**
- * Add the result of a full text search to the feed object
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function rssSearch(&$rss,$opt){
- if(!$opt['search_query']) return;
-
- require_once(DOKU_INC.'inc/fulltext.php');
- $data = array();
- $data = ft_pageSearch($opt['search_query'],$poswords);
- $data = array_keys($data);
- rss_buildItems($rss,$data,$opt);
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
-?>
+<?php
+/**
+ * XML feed export
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/');
+ require_once(DOKU_INC.'inc/init.php');
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/events.php');
+ require_once(DOKU_INC.'inc/parserutils.php');
+ require_once(DOKU_INC.'inc/feedcreator.class.php');
+ require_once(DOKU_INC.'inc/auth.php');
+ require_once(DOKU_INC.'inc/pageutils.php');
+
+ //close session
+ session_write_close();
+
+ // get params
+ $opt = rss_parseOptions();
+
+ // the feed is dynamic - we need a cache for each combo
+ // (but most people just use the default feed so it's still effective)
+ $cache = getCacheName(join('',array_values($opt)).$_SERVER['REMOTE_USER'],'.feed');
+ $cmod = @filemtime($cache); // 0 if not exists
+ if ($cmod && (@filemtime(DOKU_CONF.'local.php')>$cmod || @filemtime(DOKU_CONF.'dokuwiki.php')>$cmod)) {
+ // ignore cache if feed prefs may have changed
+ $cmod = 0;
+ }
+
+ // check cacheage and deliver if nothing has changed since last
+ // time or the update interval has not passed, also handles conditional requests
+ header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+ header('Pragma: public');
+ header('Content-Type: application/xml; charset=utf-8');
+ if($cmod && (($cmod+$conf['rss_update']>time()) || ($cmod>@filemtime($conf['changelog'])))){
+ http_conditionalRequest($cmod);
+ if($conf['allowdebug']) header("X-CacheUsed: $cache");
+ print io_readFile($cache);
+ exit;
+ } else {
+ http_conditionalRequest(time());
+ }
+
+ // create new feed
+ $rss = new DokuWikiFeedCreator();
+ $rss->title = $conf['title'].(($opt['namespace']) ? ' '.$opt['namespace'] : '');
+ $rss->link = DOKU_URL;
+ $rss->syndicationURL = DOKU_URL.'feed.php';
+ $rss->cssStyleSheet = DOKU_URL.'lib/exe/css.php?s=feed';
+
+ $image = new FeedImage();
+ $image->title = $conf['title'];
+ $image->url = DOKU_URL."lib/images/favicon.ico";
+ $image->link = DOKU_URL;
+ $rss->image = $image;
+
+ if($opt['feed_mode'] == 'list'){
+ rssListNamespace($rss,$opt);
+ }elseif($opt['feed_mode'] == 'search'){
+ rssSearch($rss,$opt);
+ }else{
+ rssRecentChanges($rss,$opt);
+ }
+
+ $feed = $rss->createFeed($opt['feed_type'],'utf-8');
+
+ // save cachefile
+ io_saveFile($cache,$feed);
+
+ // finally deliver
+ print $feed;
+
+// ---------------------------------------------------------------- //
+
+/**
+ * Get URL parameters and config options and return a initialized option array
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function rss_parseOptions(){
+ global $conf;
+
+ $opt['items'] = (int) $_REQUEST['num'];
+ $opt['feed_type'] = $_REQUEST['type'];
+ $opt['feed_mode'] = $_REQUEST['mode'];
+ $opt['show_minor'] = $_REQUEST['minor'];
+ $opt['namespace'] = $_REQUEST['ns'];
+ $opt['link_to'] = $_REQUEST['linkto'];
+ $opt['item_content'] = $_REQUEST['content'];
+ $opt['search_query'] = $_REQUEST['q'];
+
+ if(!$opt['feed_type']) $opt['feed_type'] = $conf['rss_type'];
+ if(!$opt['item_content']) $opt['item_content'] = $conf['rss_content'];
+ if(!$opt['link_to']) $opt['link_to'] = $conf['rss_linkto'];
+ if(!$opt['items']) $opt['items'] = $conf['recent'];
+ $opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none');
+
+ switch ($opt['feed_type']){
+ case 'rss':
+ $opt['feed_type'] = 'RSS0.91';
+ $opt['mime_type'] = 'text/xml';
+ break;
+ case 'rss2':
+ $opt['feed_type'] = 'RSS2.0';
+ $opt['mime_type'] = 'text/xml';
+ break;
+ case 'atom':
+ $opt['feed_type'] = 'ATOM0.3';
+ $opt['mime_type'] = 'application/xml';
+ break;
+ case 'atom1':
+ $opt['feed_type'] = 'ATOM1.0';
+ $opt['mime_type'] = 'application/atom+xml';
+ break;
+ default:
+ $opt['feed_type'] = 'RSS1.0';
+ $opt['mime_type'] = 'application/xml';
+ }
+ return $opt;
+}
+
+/**
+ * Add recent changed pages to a feed object
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @param object $rss - the FeedCreator Object
+ * @param array $data - the items to add
+ * @param array $opt - the feed options
+ */
+function rss_buildItems(&$rss,&$data,$opt){
+ global $conf;
+ global $lang;
+
+
+ foreach($data as $ditem){
+ if(!is_array($ditem)){
+ // not an array? then only a list of IDs was given
+ $ditem = array( 'id' => $ditem );
+ }
+
+ $item = new FeedItem();
+ $id = $ditem['id'];
+ $meta = p_get_metadata($id);
+
+ // add date
+ if($ditem['date']){
+ $date = $ditem['date'];
+ }elseif($meta['date']['modified']){
+ $date = $meta['date']['modified'];
+ }else{
+ $date = @filemtime(wikiFN($id));
+ }
+ if($date) $item->date = date('r',$date);
+
+ // add title
+ if($conf['useheading'] && $meta['title']){
+ $item->title = $meta['title'];
+ }else{
+ $item->title = $ditem['id'];
+ }
+ if($conf['rss_show_summary'] && !empty($ditem['sum'])){
+ $item->title .= ' - '.strip_tags($ditem['sum']);
+ }
+
+ // add item link
+ switch ($opt['link_to']){
+ case 'page':
+ $item->link = wl($id,'rev='.$date,true,'&');
+ break;
+ case 'rev':
+ $item->link = wl($id,'do=revisions&rev='.$date,true,'&');
+ break;
+ case 'current':
+ $item->link = wl($id, '', true,'&');
+ break;
+ case 'diff':
+ default:
+ $item->link = wl($id,'rev='.$date.'&do=diff',true,'&');
+ }
+
+ // add item content
+ switch ($opt['item_content']){
+ case 'diff':
+ case 'htmldiff':
+ require_once(DOKU_INC.'inc/DifferenceEngine.php');
+ $revs = getRevisions($id, 0, 1);
+ $rev = $revs[0];
+
+ if($rev){
+ $df = new Diff(explode("\n",htmlspecialchars(rawWiki($id,$rev))),
+ explode("\n",htmlspecialchars(rawWiki($id,''))));
+ }else{
+ $df = new Diff(array(''),
+ explode("\n",htmlspecialchars(rawWiki($id,''))));
+ }
+
+ if($opt['item_content'] == 'htmldiff'){
+ $tdf = new TableDiffFormatter();
+ $content = '<table>';
+ $content .= '<tr><th colspan="2" width="50%">'.$rev.'</th>';
+ $content .= '<th colspan="2" width="50%">'.$lang['current'].'</th></tr>';
+ $content .= $tdf->format($df);
+ $content .= '</table>';
+ }else{
+ $udf = new UnifiedDiffFormatter();
+ $content = "<pre>\n".$udf->format($df)."\n</pre>";
+ }
+ break;
+ case 'html':
+ $content = p_wiki_xhtml($id,$date,false);
+ // no TOC in feeds
+ $content = preg_replace('/(<!-- TOC START -->).*(<!-- TOC END -->)/s','',$content);
+
+ // make URLs work when canonical is not set, regexp instead of rerendering!
+ if(!$conf['canonical']){
+ $base = preg_quote(DOKU_REL,'/');
+ $content = preg_replace('/(<a href|<img src)="('.$base.')/s','$1="'.DOKU_URL,$content);
+ }
+
+ break;
+ case 'abstract':
+ default:
+ $content = $meta['description']['abstract'];
+ }
+ $item->description = $content; //FIXME a plugin hook here could be senseful
+
+
+ // add user
+ # FIXME should the user be pulled from metadata as well?
+ $user = null;
+ $user = @$ditem['user']; // the @ spares time repeating lookup
+ $item->author = '';
+ if($user && $conf['useacl'] && $auth){
+ $userInfo = $auth->getUserData($user);
+ $item->author = $userInfo['name'];
+ if($userInfo && !$opt['guardmail']){
+ $item->authorEmail = $userInfo['mail'];
+ }else{
+ //cannot obfuscate because some RSS readers may check validity
+ $item->authorEmail = $user.'@'.$recent['ip'];
+ }
+ }elseif($user){
+ // this happens when no ACL but some Apache auth is used
+ $item->author = $user;
+ $item->authorEmail = $user.'@'.$recent['ip'];
+ }else{
+ $item->authorEmail = 'anonymous@'.$recent['ip'];
+ }
+
+ // add category
+ if($meta['subject']){
+ $item->category = $meta['subject'];
+ }else{
+ $cat = getNS($id);
+ if($cat) $item->category = $cat;
+ }
+
+ // finally add the item to the feed object, after handing it to registered plugins
+ $evdata = array('item' => &$item,
+ 'opt' => &$opt,
+ 'ditem' => &$ditem,
+ 'rss' => &$rss);
+ $evt = new Doku_Event('FEED_ITEM_ADD', $evdata);
+ if ($evt->advise_before()){
+ $rss->addItem($item);
+ }
+ $evt->advise_after(); // for completeness
+ }
+}
+
+
+/**
+ * Add recent changed pages to the feed object
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function rssRecentChanges(&$rss,$opt){
+ global $conf;
+ global $auth;
+
+ $flags = RECENTS_SKIP_DELETED;
+ if(!$opt['show_minor']) $flags += RECENTS_SKIP_MINORS;
+
+ $recents = getRecents(0,$opt['items'],$opt['namespace'],$flags);
+
+ rss_buildItems($rss,$recents,$opt);
+}
+
+/**
+ * Add all pages of a namespace to the feed object
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function rssListNamespace(&$rss,$opt){
+ require_once(DOKU_INC.'inc/search.php');
+ global $conf;
+
+ $ns=':'.cleanID($opt['namespace']);
+ $ns=str_replace(':','/',$ns);
+
+ $data = array();
+ sort($data);
+ search($data,$conf['datadir'],'search_list','',$ns);
+
+ rss_buildItems($rss,$data,$opt);
+}
+
+/**
+ * Add the result of a full text search to the feed object
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function rssSearch(&$rss,$opt){
+ if(!$opt['search_query']) return;
+
+ require_once(DOKU_INC.'inc/fulltext.php');
+ $data = array();
+ $data = ft_pageSearch($opt['search_query'],$poswords);
+ $data = array_keys($data);
+ rss_buildItems($rss,$data,$opt);
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
+?>
Modified: site/trunk/www-root/wiki/inc/DifferenceEngine.php
===================================================================
--- site/trunk/www-root/wiki/inc/DifferenceEngine.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/DifferenceEngine.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1062 +1,1062 @@
-<?php
-/**
- * A PHP diff engine for phpwiki. (Taken from phpwiki-1.3.3)
- *
- * Additions by Axel Boldt for MediaWiki
- *
- * @copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki at dairiki.org>
- * @license You may copy this code freely under the conditions of the GPL.
- */
-define('USE_ASSERTS', function_exists('assert'));
-
-class _DiffOp {
- var $type;
- var $orig;
- var $closing;
-
- function reverse() {
- trigger_error("pure virtual", E_USER_ERROR);
- }
-
- function norig() {
- return $this->orig ? sizeof($this->orig) : 0;
- }
-
- function nclosing() {
- return $this->closing ? sizeof($this->closing) : 0;
- }
-}
-
-class _DiffOp_Copy extends _DiffOp {
- var $type = 'copy';
-
- function _DiffOp_Copy ($orig, $closing = false) {
- if (!is_array($closing))
- $closing = $orig;
- $this->orig = $orig;
- $this->closing = $closing;
- }
-
- function reverse() {
- return new _DiffOp_Copy($this->closing, $this->orig);
- }
-}
-
-class _DiffOp_Delete extends _DiffOp {
- var $type = 'delete';
-
- function _DiffOp_Delete ($lines) {
- $this->orig = $lines;
- $this->closing = false;
- }
-
- function reverse() {
- return new _DiffOp_Add($this->orig);
- }
-}
-
-class _DiffOp_Add extends _DiffOp {
- var $type = 'add';
-
- function _DiffOp_Add ($lines) {
- $this->closing = $lines;
- $this->orig = false;
- }
-
- function reverse() {
- return new _DiffOp_Delete($this->closing);
- }
-}
-
-class _DiffOp_Change extends _DiffOp {
- var $type = 'change';
-
- function _DiffOp_Change ($orig, $closing) {
- $this->orig = $orig;
- $this->closing = $closing;
- }
-
- function reverse() {
- return new _DiffOp_Change($this->closing, $this->orig);
- }
-}
-
-
-/**
- * Class used internally by Diff to actually compute the diffs.
- *
- * The algorithm used here is mostly lifted from the perl module
- * Algorithm::Diff (version 1.06) by Ned Konz, which is available at:
- * http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
- *
- * More ideas are taken from:
- * http://www.ics.uci.edu/~eppstein/161/960229.html
- *
- * Some ideas are (and a bit of code) are from from analyze.c, from GNU
- * diffutils-2.7, which can be found at:
- * ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
- *
- * closingly, some ideas (subdivision by NCHUNKS > 2, and some optimizations)
- * are my own.
- *
- * @author Geoffrey T. Dairiki
- * @access private
- */
-class _DiffEngine
-{
- function diff ($from_lines, $to_lines) {
- $n_from = sizeof($from_lines);
- $n_to = sizeof($to_lines);
-
- $this->xchanged = $this->ychanged = array();
- $this->xv = $this->yv = array();
- $this->xind = $this->yind = array();
- unset($this->seq);
- unset($this->in_seq);
- unset($this->lcs);
-
- // Skip leading common lines.
- for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) {
- if ($from_lines[$skip] != $to_lines[$skip])
- break;
- $this->xchanged[$skip] = $this->ychanged[$skip] = false;
- }
- // Skip trailing common lines.
- $xi = $n_from; $yi = $n_to;
- for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) {
- if ($from_lines[$xi] != $to_lines[$yi])
- break;
- $this->xchanged[$xi] = $this->ychanged[$yi] = false;
- }
-
- // Ignore lines which do not exist in both files.
- for ($xi = $skip; $xi < $n_from - $endskip; $xi++)
- $xhash[$from_lines[$xi]] = 1;
- for ($yi = $skip; $yi < $n_to - $endskip; $yi++) {
- $line = $to_lines[$yi];
- if ( ($this->ychanged[$yi] = empty($xhash[$line])) )
- continue;
- $yhash[$line] = 1;
- $this->yv[] = $line;
- $this->yind[] = $yi;
- }
- for ($xi = $skip; $xi < $n_from - $endskip; $xi++) {
- $line = $from_lines[$xi];
- if ( ($this->xchanged[$xi] = empty($yhash[$line])) )
- continue;
- $this->xv[] = $line;
- $this->xind[] = $xi;
- }
-
- // Find the LCS.
- $this->_compareseq(0, sizeof($this->xv), 0, sizeof($this->yv));
-
- // Merge edits when possible
- $this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged);
- $this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged);
-
- // Compute the edit operations.
- $edits = array();
- $xi = $yi = 0;
- while ($xi < $n_from || $yi < $n_to) {
- USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]);
- USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]);
-
- // Skip matching "snake".
- $copy = array();
- while ( $xi < $n_from && $yi < $n_to
- && !$this->xchanged[$xi] && !$this->ychanged[$yi]) {
- $copy[] = $from_lines[$xi++];
- ++$yi;
- }
- if ($copy)
- $edits[] = new _DiffOp_Copy($copy);
-
- // Find deletes & adds.
- $delete = array();
- while ($xi < $n_from && $this->xchanged[$xi])
- $delete[] = $from_lines[$xi++];
-
- $add = array();
- while ($yi < $n_to && $this->ychanged[$yi])
- $add[] = $to_lines[$yi++];
-
- if ($delete && $add)
- $edits[] = new _DiffOp_Change($delete, $add);
- elseif ($delete)
- $edits[] = new _DiffOp_Delete($delete);
- elseif ($add)
- $edits[] = new _DiffOp_Add($add);
- }
- return $edits;
- }
-
-
- /**
- * Divide the Largest Common Subsequence (LCS) of the sequences
- * [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally
- * sized segments.
- *
- * Returns (LCS, PTS). LCS is the length of the LCS. PTS is an
- * array of NCHUNKS+1 (X, Y) indexes giving the diving points between
- * sub sequences. The first sub-sequence is contained in [X0, X1),
- * [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note
- * that (X0, Y0) == (XOFF, YOFF) and
- * (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM).
- *
- * This function assumes that the first lines of the specified portions
- * of the two files do not match, and likewise that the last lines do not
- * match. The caller must trim matching lines from the beginning and end
- * of the portions it is going to specify.
- */
- function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) {
- $flip = false;
-
- if ($xlim - $xoff > $ylim - $yoff) {
- // Things seems faster (I'm not sure I understand why)
- // when the shortest sequence in X.
- $flip = true;
- list ($xoff, $xlim, $yoff, $ylim)
- = array( $yoff, $ylim, $xoff, $xlim);
- }
-
- if ($flip)
- for ($i = $ylim - 1; $i >= $yoff; $i--)
- $ymatches[$this->xv[$i]][] = $i;
- else
- for ($i = $ylim - 1; $i >= $yoff; $i--)
- $ymatches[$this->yv[$i]][] = $i;
-
- $this->lcs = 0;
- $this->seq[0]= $yoff - 1;
- $this->in_seq = array();
- $ymids[0] = array();
-
- $numer = $xlim - $xoff + $nchunks - 1;
- $x = $xoff;
- for ($chunk = 0; $chunk < $nchunks; $chunk++) {
- if ($chunk > 0)
- for ($i = 0; $i <= $this->lcs; $i++)
- $ymids[$i][$chunk-1] = $this->seq[$i];
-
- $x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks);
- for ( ; $x < $x1; $x++) {
- $line = $flip ? $this->yv[$x] : $this->xv[$x];
- if (empty($ymatches[$line]))
- continue;
- $matches = $ymatches[$line];
- reset($matches);
- while (list ($junk, $y) = each($matches))
- if (empty($this->in_seq[$y])) {
- $k = $this->_lcs_pos($y);
- USE_ASSERTS && assert($k > 0);
- $ymids[$k] = $ymids[$k-1];
- break;
- }
- while (list ($junk, $y) = each($matches)) {
- if ($y > $this->seq[$k-1]) {
- USE_ASSERTS && assert($y < $this->seq[$k]);
- // Optimization: this is a common case:
- // next match is just replacing previous match.
- $this->in_seq[$this->seq[$k]] = false;
- $this->seq[$k] = $y;
- $this->in_seq[$y] = 1;
- }
- else if (empty($this->in_seq[$y])) {
- $k = $this->_lcs_pos($y);
- USE_ASSERTS && assert($k > 0);
- $ymids[$k] = $ymids[$k-1];
- }
- }
- }
- }
-
- $seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff);
- $ymid = $ymids[$this->lcs];
- for ($n = 0; $n < $nchunks - 1; $n++) {
- $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks);
- $y1 = $ymid[$n] + 1;
- $seps[] = $flip ? array($y1, $x1) : array($x1, $y1);
- }
- $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim);
-
- return array($this->lcs, $seps);
- }
-
- function _lcs_pos ($ypos) {
- $end = $this->lcs;
- if ($end == 0 || $ypos > $this->seq[$end]) {
- $this->seq[++$this->lcs] = $ypos;
- $this->in_seq[$ypos] = 1;
- return $this->lcs;
- }
-
- $beg = 1;
- while ($beg < $end) {
- $mid = (int)(($beg + $end) / 2);
- if ( $ypos > $this->seq[$mid] )
- $beg = $mid + 1;
- else
- $end = $mid;
- }
-
- USE_ASSERTS && assert($ypos != $this->seq[$end]);
-
- $this->in_seq[$this->seq[$end]] = false;
- $this->seq[$end] = $ypos;
- $this->in_seq[$ypos] = 1;
- return $end;
- }
-
- /**
- * Find LCS of two sequences.
- *
- * The results are recorded in the vectors $this->{x,y}changed[], by
- * storing a 1 in the element for each line that is an insertion
- * or deletion (ie. is not in the LCS).
- *
- * The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1.
- *
- * Note that XLIM, YLIM are exclusive bounds.
- * All line numbers are origin-0 and discarded lines are not counted.
- */
- function _compareseq ($xoff, $xlim, $yoff, $ylim) {
- // Slide down the bottom initial diagonal.
- while ($xoff < $xlim && $yoff < $ylim
- && $this->xv[$xoff] == $this->yv[$yoff]) {
- ++$xoff;
- ++$yoff;
- }
-
- // Slide up the top initial diagonal.
- while ($xlim > $xoff && $ylim > $yoff
- && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) {
- --$xlim;
- --$ylim;
- }
-
- if ($xoff == $xlim || $yoff == $ylim)
- $lcs = 0;
- else {
- // This is ad hoc but seems to work well.
- //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5);
- //$nchunks = max(2,min(8,(int)$nchunks));
- $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1;
- list ($lcs, $seps)
- = $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks);
- }
-
- if ($lcs == 0) {
- // X and Y sequences have no common subsequence:
- // mark all changed.
- while ($yoff < $ylim)
- $this->ychanged[$this->yind[$yoff++]] = 1;
- while ($xoff < $xlim)
- $this->xchanged[$this->xind[$xoff++]] = 1;
- }
- else {
- // Use the partitions to split this problem into subproblems.
- reset($seps);
- $pt1 = $seps[0];
- while ($pt2 = next($seps)) {
- $this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]);
- $pt1 = $pt2;
- }
- }
- }
-
- /**
- * Adjust inserts/deletes of identical lines to join changes
- * as much as possible.
- *
- * We do something when a run of changed lines include a
- * line at one end and has an excluded, identical line at the other.
- * We are free to choose which identical line is included.
- * `compareseq' usually chooses the one at the beginning,
- * but usually it is cleaner to consider the following identical line
- * to be the "change".
- *
- * This is extracted verbatim from analyze.c (GNU diffutils-2.7).
- */
- function _shift_boundaries ($lines, &$changed, $other_changed) {
- $i = 0;
- $j = 0;
-
- USE_ASSERTS && assert('sizeof($lines) == sizeof($changed)');
- $len = sizeof($lines);
- $other_len = sizeof($other_changed);
-
- while (1) {
- /*
- * Scan forwards to find beginning of another run of changes.
- * Also keep track of the corresponding point in the other file.
- *
- * Throughout this code, $i and $j are adjusted together so that
- * the first $i elements of $changed and the first $j elements
- * of $other_changed both contain the same number of zeros
- * (unchanged lines).
- * Furthermore, $j is always kept so that $j == $other_len or
- * $other_changed[$j] == false.
- */
- while ($j < $other_len && $other_changed[$j])
- $j++;
-
- while ($i < $len && ! $changed[$i]) {
- USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
- $i++; $j++;
- while ($j < $other_len && $other_changed[$j])
- $j++;
- }
-
- if ($i == $len)
- break;
-
- $start = $i;
-
- // Find the end of this run of changes.
- while (++$i < $len && $changed[$i])
- continue;
-
- do {
- /*
- * Record the length of this run of changes, so that
- * we can later determine whether the run has grown.
- */
- $runlength = $i - $start;
-
- /*
- * Move the changed region back, so long as the
- * previous unchanged line matches the last changed one.
- * This merges with previous changed regions.
- */
- while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) {
- $changed[--$start] = 1;
- $changed[--$i] = false;
- while ($start > 0 && $changed[$start - 1])
- $start--;
- USE_ASSERTS && assert('$j > 0');
- while ($other_changed[--$j])
- continue;
- USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
- }
-
- /*
- * Set CORRESPONDING to the end of the changed run, at the last
- * point where it corresponds to a changed run in the other file.
- * CORRESPONDING == LEN means no such point has been found.
- */
- $corresponding = $j < $other_len ? $i : $len;
-
- /*
- * Move the changed region forward, so long as the
- * first changed line matches the following unchanged one.
- * This merges with following changed regions.
- * Do this second, so that if there are no merges,
- * the changed region is moved forward as far as possible.
- */
- while ($i < $len && $lines[$start] == $lines[$i]) {
- $changed[$start++] = false;
- $changed[$i++] = 1;
- while ($i < $len && $changed[$i])
- $i++;
-
- USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
- $j++;
- if ($j < $other_len && $other_changed[$j]) {
- $corresponding = $i;
- while ($j < $other_len && $other_changed[$j])
- $j++;
- }
- }
- } while ($runlength != $i - $start);
-
- /*
- * If possible, move the fully-merged run of changes
- * back to a corresponding run in the other file.
- */
- while ($corresponding < $i) {
- $changed[--$start] = 1;
- $changed[--$i] = 0;
- USE_ASSERTS && assert('$j > 0');
- while ($other_changed[--$j])
- continue;
- USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
- }
- }
- }
-}
-
-/**
- * Class representing a 'diff' between two sequences of strings.
- */
-class Diff
-{
- var $edits;
-
- /**
- * Constructor.
- * Computes diff between sequences of strings.
- *
- * @param $from_lines array An array of strings.
- * (Typically these are lines from a file.)
- * @param $to_lines array An array of strings.
- */
- function Diff($from_lines, $to_lines) {
- $eng = new _DiffEngine;
- $this->edits = $eng->diff($from_lines, $to_lines);
- //$this->_check($from_lines, $to_lines);
- }
-
- /**
- * Compute reversed Diff.
- *
- * SYNOPSIS:
- *
- * $diff = new Diff($lines1, $lines2);
- * $rev = $diff->reverse();
- * @return object A Diff object representing the inverse of the
- * original diff.
- */
- function reverse () {
- $rev = $this;
- $rev->edits = array();
- foreach ($this->edits as $edit) {
- $rev->edits[] = $edit->reverse();
- }
- return $rev;
- }
-
- /**
- * Check for empty diff.
- *
- * @return bool True iff two sequences were identical.
- */
- function isEmpty () {
- foreach ($this->edits as $edit) {
- if ($edit->type != 'copy')
- return false;
- }
- return true;
- }
-
- /**
- * Compute the length of the Longest Common Subsequence (LCS).
- *
- * This is mostly for diagnostic purposed.
- *
- * @return int The length of the LCS.
- */
- function lcs () {
- $lcs = 0;
- foreach ($this->edits as $edit) {
- if ($edit->type == 'copy')
- $lcs += sizeof($edit->orig);
- }
- return $lcs;
- }
-
- /**
- * Get the original set of lines.
- *
- * This reconstructs the $from_lines parameter passed to the
- * constructor.
- *
- * @return array The original sequence of strings.
- */
- function orig() {
- $lines = array();
-
- foreach ($this->edits as $edit) {
- if ($edit->orig)
- array_splice($lines, sizeof($lines), 0, $edit->orig);
- }
- return $lines;
- }
-
- /**
- * Get the closing set of lines.
- *
- * This reconstructs the $to_lines parameter passed to the
- * constructor.
- *
- * @return array The sequence of strings.
- */
- function closing() {
- $lines = array();
-
- foreach ($this->edits as $edit) {
- if ($edit->closing)
- array_splice($lines, sizeof($lines), 0, $edit->closing);
- }
- return $lines;
- }
-
- /**
- * Check a Diff for validity.
- *
- * This is here only for debugging purposes.
- */
- function _check ($from_lines, $to_lines) {
- if (serialize($from_lines) != serialize($this->orig()))
- trigger_error("Reconstructed original doesn't match", E_USER_ERROR);
- if (serialize($to_lines) != serialize($this->closing()))
- trigger_error("Reconstructed closing doesn't match", E_USER_ERROR);
-
- $rev = $this->reverse();
- if (serialize($to_lines) != serialize($rev->orig()))
- trigger_error("Reversed original doesn't match", E_USER_ERROR);
- if (serialize($from_lines) != serialize($rev->closing()))
- trigger_error("Reversed closing doesn't match", E_USER_ERROR);
-
-
- $prevtype = 'none';
- foreach ($this->edits as $edit) {
- if ( $prevtype == $edit->type )
- trigger_error("Edit sequence is non-optimal", E_USER_ERROR);
- $prevtype = $edit->type;
- }
-
- $lcs = $this->lcs();
- trigger_error("Diff okay: LCS = $lcs", E_USER_NOTICE);
- }
-}
-
-/**
- * FIXME: bad name.
- */
-class MappedDiff
-extends Diff
-{
- /**
- * Constructor.
- *
- * Computes diff between sequences of strings.
- *
- * This can be used to compute things like
- * case-insensitve diffs, or diffs which ignore
- * changes in white-space.
- *
- * @param $from_lines array An array of strings.
- * (Typically these are lines from a file.)
- *
- * @param $to_lines array An array of strings.
- *
- * @param $mapped_from_lines array This array should
- * have the same size number of elements as $from_lines.
- * The elements in $mapped_from_lines and
- * $mapped_to_lines are what is actually compared
- * when computing the diff.
- *
- * @param $mapped_to_lines array This array should
- * have the same number of elements as $to_lines.
- */
- function MappedDiff($from_lines, $to_lines,
- $mapped_from_lines, $mapped_to_lines) {
-
- assert(sizeof($from_lines) == sizeof($mapped_from_lines));
- assert(sizeof($to_lines) == sizeof($mapped_to_lines));
-
- $this->Diff($mapped_from_lines, $mapped_to_lines);
-
- $xi = $yi = 0;
- for ($i = 0; $i < sizeof($this->edits); $i++) {
- $orig = &$this->edits[$i]->orig;
- if (is_array($orig)) {
- $orig = array_slice($from_lines, $xi, sizeof($orig));
- $xi += sizeof($orig);
- }
-
- $closing = &$this->edits[$i]->closing;
- if (is_array($closing)) {
- $closing = array_slice($to_lines, $yi, sizeof($closing));
- $yi += sizeof($closing);
- }
- }
- }
-}
-
-/**
- * A class to format Diffs
- *
- * This class formats the diff in classic diff format.
- * It is intended that this class be customized via inheritance,
- * to obtain fancier outputs.
- */
-class DiffFormatter
-{
- /**
- * Number of leading context "lines" to preserve.
- *
- * This should be left at zero for this class, but subclasses
- * may want to set this to other values.
- */
- var $leading_context_lines = 0;
-
- /**
- * Number of trailing context "lines" to preserve.
- *
- * This should be left at zero for this class, but subclasses
- * may want to set this to other values.
- */
- var $trailing_context_lines = 0;
-
- /**
- * Format a diff.
- *
- * @param $diff object A Diff object.
- * @return string The formatted output.
- */
- function format($diff) {
-
- $xi = $yi = 1;
- $block = false;
- $context = array();
-
- $nlead = $this->leading_context_lines;
- $ntrail = $this->trailing_context_lines;
-
- $this->_start_diff();
-
- foreach ($diff->edits as $edit) {
- if ($edit->type == 'copy') {
- if (is_array($block)) {
- if (sizeof($edit->orig) <= $nlead + $ntrail) {
- $block[] = $edit;
- }
- else{
- if ($ntrail) {
- $context = array_slice($edit->orig, 0, $ntrail);
- $block[] = new _DiffOp_Copy($context);
- }
- $this->_block($x0, $ntrail + $xi - $x0,
- $y0, $ntrail + $yi - $y0,
- $block);
- $block = false;
- }
- }
- $context = $edit->orig;
- }
- else {
- if (! is_array($block)) {
- $context = array_slice($context, sizeof($context) - $nlead);
- $x0 = $xi - sizeof($context);
- $y0 = $yi - sizeof($context);
- $block = array();
- if ($context)
- $block[] = new _DiffOp_Copy($context);
- }
- $block[] = $edit;
- }
-
- if ($edit->orig)
- $xi += sizeof($edit->orig);
- if ($edit->closing)
- $yi += sizeof($edit->closing);
- }
-
- if (is_array($block))
- $this->_block($x0, $xi - $x0,
- $y0, $yi - $y0,
- $block);
-
- return $this->_end_diff();
- }
-
- function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) {
- $this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen));
- foreach ($edits as $edit) {
- if ($edit->type == 'copy')
- $this->_context($edit->orig);
- elseif ($edit->type == 'add')
- $this->_added($edit->closing);
- elseif ($edit->type == 'delete')
- $this->_deleted($edit->orig);
- elseif ($edit->type == 'change')
- $this->_changed($edit->orig, $edit->closing);
- else
- trigger_error("Unknown edit type", E_USER_ERROR);
- }
- $this->_end_block();
- }
-
- function _start_diff() {
- ob_start();
- }
-
- function _end_diff() {
- $val = ob_get_contents();
- ob_end_clean();
- return $val;
- }
-
- function _block_header($xbeg, $xlen, $ybeg, $ylen) {
- if ($xlen > 1)
- $xbeg .= "," . ($xbeg + $xlen - 1);
- if ($ylen > 1)
- $ybeg .= "," . ($ybeg + $ylen - 1);
-
- return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg;
- }
-
- function _start_block($header) {
- echo $header;
- }
-
- function _end_block() {
- }
-
- function _lines($lines, $prefix = ' ') {
- foreach ($lines as $line)
- echo "$prefix $line\n";
- }
-
- function _context($lines) {
- $this->_lines($lines);
- }
-
- function _added($lines) {
- $this->_lines($lines, ">");
- }
- function _deleted($lines) {
- $this->_lines($lines, "<");
- }
-
- function _changed($orig, $closing) {
- $this->_deleted($orig);
- echo "---\n";
- $this->_added($closing);
- }
-}
-
-
-/**
- * Additions by Axel Boldt follow, partly taken from diff.php, phpwiki-1.3.3
- *
- */
-
-define('NBSP', "\xC2\xA0"); // utf-8 non-breaking space.
-
-class _HWLDF_WordAccumulator {
- function _HWLDF_WordAccumulator () {
- $this->_lines = array();
- $this->_line = '';
- $this->_group = '';
- $this->_tag = '';
- }
-
- function _flushGroup ($new_tag) {
- if ($this->_group !== '') {
- if ($this->_tag == 'mark')
- $this->_line .= '<strong>'.$this->_group.'</strong>';
- else
- $this->_line .= $this->_group;
- }
- $this->_group = '';
- $this->_tag = $new_tag;
- }
-
- function _flushLine ($new_tag) {
- $this->_flushGroup($new_tag);
- if ($this->_line != '')
- $this->_lines[] = $this->_line;
- $this->_line = '';
- }
-
- function addWords ($words, $tag = '') {
- if ($tag != $this->_tag)
- $this->_flushGroup($tag);
-
- foreach ($words as $word) {
- // new-line should only come as first char of word.
- if ($word == '')
- continue;
- if ($word[0] == "\n") {
- $this->_group .= NBSP;
- $this->_flushLine($tag);
- $word = substr($word, 1);
- }
- assert(!strstr($word, "\n"));
- $this->_group .= $word;
- }
- }
-
- function getLines() {
- $this->_flushLine('~done');
- return $this->_lines;
- }
-}
-
-class WordLevelDiff extends MappedDiff
-{
- function WordLevelDiff ($orig_lines, $closing_lines) {
- list ($orig_words, $orig_stripped) = $this->_split($orig_lines);
- list ($closing_words, $closing_stripped) = $this->_split($closing_lines);
-
-
- $this->MappedDiff($orig_words, $closing_words,
- $orig_stripped, $closing_stripped);
- }
-
- function _split($lines) {
- // FIXME: fix POSIX char class.
-# if (!preg_match_all('/ ( [^\S\n]+ | [[:alnum:]]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
- if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
- implode("\n", $lines),
- $m)) {
- return array(array(''), array(''));
- }
- return array($m[0], $m[1]);
- }
-
- function orig () {
- $orig = new _HWLDF_WordAccumulator;
-
- foreach ($this->edits as $edit) {
- if ($edit->type == 'copy')
- $orig->addWords($edit->orig);
- elseif ($edit->orig)
- $orig->addWords($edit->orig, 'mark');
- }
- return $orig->getLines();
- }
-
- function closing () {
- $closing = new _HWLDF_WordAccumulator;
-
- foreach ($this->edits as $edit) {
- if ($edit->type == 'copy')
- $closing->addWords($edit->closing);
- elseif ($edit->closing)
- $closing->addWords($edit->closing, 'mark');
- }
- return $closing->getLines();
- }
-}
-
-/**
- * "Unified" diff formatter.
- *
- * This class formats the diff in classic "unified diff" format.
- */
-class UnifiedDiffFormatter extends DiffFormatter
-{
- function UnifiedDiffFormatter($context_lines = 4) {
- $this->leading_context_lines = $context_lines;
- $this->trailing_context_lines = $context_lines;
- }
-
- function _block_header($xbeg, $xlen, $ybeg, $ylen) {
- if ($xlen != 1)
- $xbeg .= "," . $xlen;
- if ($ylen != 1)
- $ybeg .= "," . $ylen;
- return "@@ -$xbeg +$ybeg @@\n";
- }
-
- function _added($lines) {
- $this->_lines($lines, "+");
- }
- function _deleted($lines) {
- $this->_lines($lines, "-");
- }
- function _changed($orig, $final) {
- $this->_deleted($orig);
- $this->_added($final);
- }
-}
-
-/**
- * Wikipedia Table style diff formatter.
- *
- */
-class TableDiffFormatter extends DiffFormatter
-{
- function TableDiffFormatter() {
- $this->leading_context_lines = 2;
- $this->trailing_context_lines = 2;
- }
-
- function _pre($text){
- $text = htmlspecialchars($text);
- $text = str_replace(' ',' ',$text);
- return $text;
- }
-
- function _block_header( $xbeg, $xlen, $ybeg, $ylen ) {
- global $lang;
- $l1 = $lang['line'].' '.$xbeg;
- $l2 = $lang['line'].' '.$ybeg;
- $r = '<tr><td class="diff-blockheader" colspan="2">'.$l1.":</td>\n" .
- '<td class="diff-blockheader" colspan="2">'.$l2.":</td></tr>\n";
- return $r;
- }
-
- function _start_block( $header ) {
- print( $header );
- }
-
- function _end_block() {
- }
-
- function _lines( $lines, $prefix=' ', $color="white" ) {
- }
-
- function addedLine( $line ) {
- $line = str_replace(' ',' ',$line);
- return '<td>+</td><td class="diff-addedline">' .
- $line.'</td>';
- }
-
- function deletedLine( $line ) {
- $line = str_replace(' ',' ',$line);
- return '<td>-</td><td class="diff-deletedline">' .
- $line.'</td>';
- }
-
- function emptyLine() {
- //$line = str_replace(' ',' ',$line);
- return '<td colspan="2"> </td>';
- }
-
- function contextLine( $line ) {
- $line = str_replace(' ',' ',$line);
- return '<td> </td><td class="diff-context">'.$line.'</td>';
- }
-
- function _added($lines) {
- foreach ($lines as $line) {
- print( '<tr>' . $this->emptyLine() .
- $this->addedLine( $line ) . "</tr>\n" );
- }
- }
-
- function _deleted($lines) {
- foreach ($lines as $line) {
- print( '<tr>' . $this->deletedLine( $line ) .
- $this->emptyLine() . "</tr>\n" );
- }
- }
-
- function _context( $lines ) {
- foreach ($lines as $line) {
- print( '<tr>' . $this->contextLine( $line ) .
- $this->contextLine( $line ) . "</tr>\n" );
- }
- }
-
- function _changed( $orig, $closing ) {
- $diff = new WordLevelDiff( $orig, $closing );
- $del = $diff->orig();
- $add = $diff->closing();
-
- while ( $line = array_shift( $del ) ) {
- $aline = array_shift( $add );
- print( '<tr>' . $this->deletedLine( $line ) .
- $this->addedLine( $aline ) . "</tr>\n" );
- }
- $this->_added( $add ); # If any leftovers
- }
-}
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * A PHP diff engine for phpwiki. (Taken from phpwiki-1.3.3)
+ *
+ * Additions by Axel Boldt for MediaWiki
+ *
+ * @copyright (C) 2000, 2001 Geoffrey T. Dairiki <dairiki at dairiki.org>
+ * @license You may copy this code freely under the conditions of the GPL.
+ */
+define('USE_ASSERTS', function_exists('assert'));
+
+class _DiffOp {
+ var $type;
+ var $orig;
+ var $closing;
+
+ function reverse() {
+ trigger_error("pure virtual", E_USER_ERROR);
+ }
+
+ function norig() {
+ return $this->orig ? sizeof($this->orig) : 0;
+ }
+
+ function nclosing() {
+ return $this->closing ? sizeof($this->closing) : 0;
+ }
+}
+
+class _DiffOp_Copy extends _DiffOp {
+ var $type = 'copy';
+
+ function _DiffOp_Copy ($orig, $closing = false) {
+ if (!is_array($closing))
+ $closing = $orig;
+ $this->orig = $orig;
+ $this->closing = $closing;
+ }
+
+ function reverse() {
+ return new _DiffOp_Copy($this->closing, $this->orig);
+ }
+}
+
+class _DiffOp_Delete extends _DiffOp {
+ var $type = 'delete';
+
+ function _DiffOp_Delete ($lines) {
+ $this->orig = $lines;
+ $this->closing = false;
+ }
+
+ function reverse() {
+ return new _DiffOp_Add($this->orig);
+ }
+}
+
+class _DiffOp_Add extends _DiffOp {
+ var $type = 'add';
+
+ function _DiffOp_Add ($lines) {
+ $this->closing = $lines;
+ $this->orig = false;
+ }
+
+ function reverse() {
+ return new _DiffOp_Delete($this->closing);
+ }
+}
+
+class _DiffOp_Change extends _DiffOp {
+ var $type = 'change';
+
+ function _DiffOp_Change ($orig, $closing) {
+ $this->orig = $orig;
+ $this->closing = $closing;
+ }
+
+ function reverse() {
+ return new _DiffOp_Change($this->closing, $this->orig);
+ }
+}
+
+
+/**
+ * Class used internally by Diff to actually compute the diffs.
+ *
+ * The algorithm used here is mostly lifted from the perl module
+ * Algorithm::Diff (version 1.06) by Ned Konz, which is available at:
+ * http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip
+ *
+ * More ideas are taken from:
+ * http://www.ics.uci.edu/~eppstein/161/960229.html
+ *
+ * Some ideas are (and a bit of code) are from from analyze.c, from GNU
+ * diffutils-2.7, which can be found at:
+ * ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz
+ *
+ * closingly, some ideas (subdivision by NCHUNKS > 2, and some optimizations)
+ * are my own.
+ *
+ * @author Geoffrey T. Dairiki
+ * @access private
+ */
+class _DiffEngine
+{
+ function diff ($from_lines, $to_lines) {
+ $n_from = sizeof($from_lines);
+ $n_to = sizeof($to_lines);
+
+ $this->xchanged = $this->ychanged = array();
+ $this->xv = $this->yv = array();
+ $this->xind = $this->yind = array();
+ unset($this->seq);
+ unset($this->in_seq);
+ unset($this->lcs);
+
+ // Skip leading common lines.
+ for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) {
+ if ($from_lines[$skip] != $to_lines[$skip])
+ break;
+ $this->xchanged[$skip] = $this->ychanged[$skip] = false;
+ }
+ // Skip trailing common lines.
+ $xi = $n_from; $yi = $n_to;
+ for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) {
+ if ($from_lines[$xi] != $to_lines[$yi])
+ break;
+ $this->xchanged[$xi] = $this->ychanged[$yi] = false;
+ }
+
+ // Ignore lines which do not exist in both files.
+ for ($xi = $skip; $xi < $n_from - $endskip; $xi++)
+ $xhash[$from_lines[$xi]] = 1;
+ for ($yi = $skip; $yi < $n_to - $endskip; $yi++) {
+ $line = $to_lines[$yi];
+ if ( ($this->ychanged[$yi] = empty($xhash[$line])) )
+ continue;
+ $yhash[$line] = 1;
+ $this->yv[] = $line;
+ $this->yind[] = $yi;
+ }
+ for ($xi = $skip; $xi < $n_from - $endskip; $xi++) {
+ $line = $from_lines[$xi];
+ if ( ($this->xchanged[$xi] = empty($yhash[$line])) )
+ continue;
+ $this->xv[] = $line;
+ $this->xind[] = $xi;
+ }
+
+ // Find the LCS.
+ $this->_compareseq(0, sizeof($this->xv), 0, sizeof($this->yv));
+
+ // Merge edits when possible
+ $this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged);
+ $this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged);
+
+ // Compute the edit operations.
+ $edits = array();
+ $xi = $yi = 0;
+ while ($xi < $n_from || $yi < $n_to) {
+ USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]);
+ USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]);
+
+ // Skip matching "snake".
+ $copy = array();
+ while ( $xi < $n_from && $yi < $n_to
+ && !$this->xchanged[$xi] && !$this->ychanged[$yi]) {
+ $copy[] = $from_lines[$xi++];
+ ++$yi;
+ }
+ if ($copy)
+ $edits[] = new _DiffOp_Copy($copy);
+
+ // Find deletes & adds.
+ $delete = array();
+ while ($xi < $n_from && $this->xchanged[$xi])
+ $delete[] = $from_lines[$xi++];
+
+ $add = array();
+ while ($yi < $n_to && $this->ychanged[$yi])
+ $add[] = $to_lines[$yi++];
+
+ if ($delete && $add)
+ $edits[] = new _DiffOp_Change($delete, $add);
+ elseif ($delete)
+ $edits[] = new _DiffOp_Delete($delete);
+ elseif ($add)
+ $edits[] = new _DiffOp_Add($add);
+ }
+ return $edits;
+ }
+
+
+ /**
+ * Divide the Largest Common Subsequence (LCS) of the sequences
+ * [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally
+ * sized segments.
+ *
+ * Returns (LCS, PTS). LCS is the length of the LCS. PTS is an
+ * array of NCHUNKS+1 (X, Y) indexes giving the diving points between
+ * sub sequences. The first sub-sequence is contained in [X0, X1),
+ * [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note
+ * that (X0, Y0) == (XOFF, YOFF) and
+ * (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM).
+ *
+ * This function assumes that the first lines of the specified portions
+ * of the two files do not match, and likewise that the last lines do not
+ * match. The caller must trim matching lines from the beginning and end
+ * of the portions it is going to specify.
+ */
+ function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) {
+ $flip = false;
+
+ if ($xlim - $xoff > $ylim - $yoff) {
+ // Things seems faster (I'm not sure I understand why)
+ // when the shortest sequence in X.
+ $flip = true;
+ list ($xoff, $xlim, $yoff, $ylim)
+ = array( $yoff, $ylim, $xoff, $xlim);
+ }
+
+ if ($flip)
+ for ($i = $ylim - 1; $i >= $yoff; $i--)
+ $ymatches[$this->xv[$i]][] = $i;
+ else
+ for ($i = $ylim - 1; $i >= $yoff; $i--)
+ $ymatches[$this->yv[$i]][] = $i;
+
+ $this->lcs = 0;
+ $this->seq[0]= $yoff - 1;
+ $this->in_seq = array();
+ $ymids[0] = array();
+
+ $numer = $xlim - $xoff + $nchunks - 1;
+ $x = $xoff;
+ for ($chunk = 0; $chunk < $nchunks; $chunk++) {
+ if ($chunk > 0)
+ for ($i = 0; $i <= $this->lcs; $i++)
+ $ymids[$i][$chunk-1] = $this->seq[$i];
+
+ $x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks);
+ for ( ; $x < $x1; $x++) {
+ $line = $flip ? $this->yv[$x] : $this->xv[$x];
+ if (empty($ymatches[$line]))
+ continue;
+ $matches = $ymatches[$line];
+ reset($matches);
+ while (list ($junk, $y) = each($matches))
+ if (empty($this->in_seq[$y])) {
+ $k = $this->_lcs_pos($y);
+ USE_ASSERTS && assert($k > 0);
+ $ymids[$k] = $ymids[$k-1];
+ break;
+ }
+ while (list ($junk, $y) = each($matches)) {
+ if ($y > $this->seq[$k-1]) {
+ USE_ASSERTS && assert($y < $this->seq[$k]);
+ // Optimization: this is a common case:
+ // next match is just replacing previous match.
+ $this->in_seq[$this->seq[$k]] = false;
+ $this->seq[$k] = $y;
+ $this->in_seq[$y] = 1;
+ }
+ else if (empty($this->in_seq[$y])) {
+ $k = $this->_lcs_pos($y);
+ USE_ASSERTS && assert($k > 0);
+ $ymids[$k] = $ymids[$k-1];
+ }
+ }
+ }
+ }
+
+ $seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff);
+ $ymid = $ymids[$this->lcs];
+ for ($n = 0; $n < $nchunks - 1; $n++) {
+ $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks);
+ $y1 = $ymid[$n] + 1;
+ $seps[] = $flip ? array($y1, $x1) : array($x1, $y1);
+ }
+ $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim);
+
+ return array($this->lcs, $seps);
+ }
+
+ function _lcs_pos ($ypos) {
+ $end = $this->lcs;
+ if ($end == 0 || $ypos > $this->seq[$end]) {
+ $this->seq[++$this->lcs] = $ypos;
+ $this->in_seq[$ypos] = 1;
+ return $this->lcs;
+ }
+
+ $beg = 1;
+ while ($beg < $end) {
+ $mid = (int)(($beg + $end) / 2);
+ if ( $ypos > $this->seq[$mid] )
+ $beg = $mid + 1;
+ else
+ $end = $mid;
+ }
+
+ USE_ASSERTS && assert($ypos != $this->seq[$end]);
+
+ $this->in_seq[$this->seq[$end]] = false;
+ $this->seq[$end] = $ypos;
+ $this->in_seq[$ypos] = 1;
+ return $end;
+ }
+
+ /**
+ * Find LCS of two sequences.
+ *
+ * The results are recorded in the vectors $this->{x,y}changed[], by
+ * storing a 1 in the element for each line that is an insertion
+ * or deletion (ie. is not in the LCS).
+ *
+ * The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1.
+ *
+ * Note that XLIM, YLIM are exclusive bounds.
+ * All line numbers are origin-0 and discarded lines are not counted.
+ */
+ function _compareseq ($xoff, $xlim, $yoff, $ylim) {
+ // Slide down the bottom initial diagonal.
+ while ($xoff < $xlim && $yoff < $ylim
+ && $this->xv[$xoff] == $this->yv[$yoff]) {
+ ++$xoff;
+ ++$yoff;
+ }
+
+ // Slide up the top initial diagonal.
+ while ($xlim > $xoff && $ylim > $yoff
+ && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) {
+ --$xlim;
+ --$ylim;
+ }
+
+ if ($xoff == $xlim || $yoff == $ylim)
+ $lcs = 0;
+ else {
+ // This is ad hoc but seems to work well.
+ //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5);
+ //$nchunks = max(2,min(8,(int)$nchunks));
+ $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1;
+ list ($lcs, $seps)
+ = $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks);
+ }
+
+ if ($lcs == 0) {
+ // X and Y sequences have no common subsequence:
+ // mark all changed.
+ while ($yoff < $ylim)
+ $this->ychanged[$this->yind[$yoff++]] = 1;
+ while ($xoff < $xlim)
+ $this->xchanged[$this->xind[$xoff++]] = 1;
+ }
+ else {
+ // Use the partitions to split this problem into subproblems.
+ reset($seps);
+ $pt1 = $seps[0];
+ while ($pt2 = next($seps)) {
+ $this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]);
+ $pt1 = $pt2;
+ }
+ }
+ }
+
+ /**
+ * Adjust inserts/deletes of identical lines to join changes
+ * as much as possible.
+ *
+ * We do something when a run of changed lines include a
+ * line at one end and has an excluded, identical line at the other.
+ * We are free to choose which identical line is included.
+ * `compareseq' usually chooses the one at the beginning,
+ * but usually it is cleaner to consider the following identical line
+ * to be the "change".
+ *
+ * This is extracted verbatim from analyze.c (GNU diffutils-2.7).
+ */
+ function _shift_boundaries ($lines, &$changed, $other_changed) {
+ $i = 0;
+ $j = 0;
+
+ USE_ASSERTS && assert('sizeof($lines) == sizeof($changed)');
+ $len = sizeof($lines);
+ $other_len = sizeof($other_changed);
+
+ while (1) {
+ /*
+ * Scan forwards to find beginning of another run of changes.
+ * Also keep track of the corresponding point in the other file.
+ *
+ * Throughout this code, $i and $j are adjusted together so that
+ * the first $i elements of $changed and the first $j elements
+ * of $other_changed both contain the same number of zeros
+ * (unchanged lines).
+ * Furthermore, $j is always kept so that $j == $other_len or
+ * $other_changed[$j] == false.
+ */
+ while ($j < $other_len && $other_changed[$j])
+ $j++;
+
+ while ($i < $len && ! $changed[$i]) {
+ USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
+ $i++; $j++;
+ while ($j < $other_len && $other_changed[$j])
+ $j++;
+ }
+
+ if ($i == $len)
+ break;
+
+ $start = $i;
+
+ // Find the end of this run of changes.
+ while (++$i < $len && $changed[$i])
+ continue;
+
+ do {
+ /*
+ * Record the length of this run of changes, so that
+ * we can later determine whether the run has grown.
+ */
+ $runlength = $i - $start;
+
+ /*
+ * Move the changed region back, so long as the
+ * previous unchanged line matches the last changed one.
+ * This merges with previous changed regions.
+ */
+ while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) {
+ $changed[--$start] = 1;
+ $changed[--$i] = false;
+ while ($start > 0 && $changed[$start - 1])
+ $start--;
+ USE_ASSERTS && assert('$j > 0');
+ while ($other_changed[--$j])
+ continue;
+ USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
+ }
+
+ /*
+ * Set CORRESPONDING to the end of the changed run, at the last
+ * point where it corresponds to a changed run in the other file.
+ * CORRESPONDING == LEN means no such point has been found.
+ */
+ $corresponding = $j < $other_len ? $i : $len;
+
+ /*
+ * Move the changed region forward, so long as the
+ * first changed line matches the following unchanged one.
+ * This merges with following changed regions.
+ * Do this second, so that if there are no merges,
+ * the changed region is moved forward as far as possible.
+ */
+ while ($i < $len && $lines[$start] == $lines[$i]) {
+ $changed[$start++] = false;
+ $changed[$i++] = 1;
+ while ($i < $len && $changed[$i])
+ $i++;
+
+ USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]');
+ $j++;
+ if ($j < $other_len && $other_changed[$j]) {
+ $corresponding = $i;
+ while ($j < $other_len && $other_changed[$j])
+ $j++;
+ }
+ }
+ } while ($runlength != $i - $start);
+
+ /*
+ * If possible, move the fully-merged run of changes
+ * back to a corresponding run in the other file.
+ */
+ while ($corresponding < $i) {
+ $changed[--$start] = 1;
+ $changed[--$i] = 0;
+ USE_ASSERTS && assert('$j > 0');
+ while ($other_changed[--$j])
+ continue;
+ USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]');
+ }
+ }
+ }
+}
+
+/**
+ * Class representing a 'diff' between two sequences of strings.
+ */
+class Diff
+{
+ var $edits;
+
+ /**
+ * Constructor.
+ * Computes diff between sequences of strings.
+ *
+ * @param $from_lines array An array of strings.
+ * (Typically these are lines from a file.)
+ * @param $to_lines array An array of strings.
+ */
+ function Diff($from_lines, $to_lines) {
+ $eng = new _DiffEngine;
+ $this->edits = $eng->diff($from_lines, $to_lines);
+ //$this->_check($from_lines, $to_lines);
+ }
+
+ /**
+ * Compute reversed Diff.
+ *
+ * SYNOPSIS:
+ *
+ * $diff = new Diff($lines1, $lines2);
+ * $rev = $diff->reverse();
+ * @return object A Diff object representing the inverse of the
+ * original diff.
+ */
+ function reverse () {
+ $rev = $this;
+ $rev->edits = array();
+ foreach ($this->edits as $edit) {
+ $rev->edits[] = $edit->reverse();
+ }
+ return $rev;
+ }
+
+ /**
+ * Check for empty diff.
+ *
+ * @return bool True iff two sequences were identical.
+ */
+ function isEmpty () {
+ foreach ($this->edits as $edit) {
+ if ($edit->type != 'copy')
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Compute the length of the Longest Common Subsequence (LCS).
+ *
+ * This is mostly for diagnostic purposed.
+ *
+ * @return int The length of the LCS.
+ */
+ function lcs () {
+ $lcs = 0;
+ foreach ($this->edits as $edit) {
+ if ($edit->type == 'copy')
+ $lcs += sizeof($edit->orig);
+ }
+ return $lcs;
+ }
+
+ /**
+ * Get the original set of lines.
+ *
+ * This reconstructs the $from_lines parameter passed to the
+ * constructor.
+ *
+ * @return array The original sequence of strings.
+ */
+ function orig() {
+ $lines = array();
+
+ foreach ($this->edits as $edit) {
+ if ($edit->orig)
+ array_splice($lines, sizeof($lines), 0, $edit->orig);
+ }
+ return $lines;
+ }
+
+ /**
+ * Get the closing set of lines.
+ *
+ * This reconstructs the $to_lines parameter passed to the
+ * constructor.
+ *
+ * @return array The sequence of strings.
+ */
+ function closing() {
+ $lines = array();
+
+ foreach ($this->edits as $edit) {
+ if ($edit->closing)
+ array_splice($lines, sizeof($lines), 0, $edit->closing);
+ }
+ return $lines;
+ }
+
+ /**
+ * Check a Diff for validity.
+ *
+ * This is here only for debugging purposes.
+ */
+ function _check ($from_lines, $to_lines) {
+ if (serialize($from_lines) != serialize($this->orig()))
+ trigger_error("Reconstructed original doesn't match", E_USER_ERROR);
+ if (serialize($to_lines) != serialize($this->closing()))
+ trigger_error("Reconstructed closing doesn't match", E_USER_ERROR);
+
+ $rev = $this->reverse();
+ if (serialize($to_lines) != serialize($rev->orig()))
+ trigger_error("Reversed original doesn't match", E_USER_ERROR);
+ if (serialize($from_lines) != serialize($rev->closing()))
+ trigger_error("Reversed closing doesn't match", E_USER_ERROR);
+
+
+ $prevtype = 'none';
+ foreach ($this->edits as $edit) {
+ if ( $prevtype == $edit->type )
+ trigger_error("Edit sequence is non-optimal", E_USER_ERROR);
+ $prevtype = $edit->type;
+ }
+
+ $lcs = $this->lcs();
+ trigger_error("Diff okay: LCS = $lcs", E_USER_NOTICE);
+ }
+}
+
+/**
+ * FIXME: bad name.
+ */
+class MappedDiff
+extends Diff
+{
+ /**
+ * Constructor.
+ *
+ * Computes diff between sequences of strings.
+ *
+ * This can be used to compute things like
+ * case-insensitve diffs, or diffs which ignore
+ * changes in white-space.
+ *
+ * @param $from_lines array An array of strings.
+ * (Typically these are lines from a file.)
+ *
+ * @param $to_lines array An array of strings.
+ *
+ * @param $mapped_from_lines array This array should
+ * have the same size number of elements as $from_lines.
+ * The elements in $mapped_from_lines and
+ * $mapped_to_lines are what is actually compared
+ * when computing the diff.
+ *
+ * @param $mapped_to_lines array This array should
+ * have the same number of elements as $to_lines.
+ */
+ function MappedDiff($from_lines, $to_lines,
+ $mapped_from_lines, $mapped_to_lines) {
+
+ assert(sizeof($from_lines) == sizeof($mapped_from_lines));
+ assert(sizeof($to_lines) == sizeof($mapped_to_lines));
+
+ $this->Diff($mapped_from_lines, $mapped_to_lines);
+
+ $xi = $yi = 0;
+ for ($i = 0; $i < sizeof($this->edits); $i++) {
+ $orig = &$this->edits[$i]->orig;
+ if (is_array($orig)) {
+ $orig = array_slice($from_lines, $xi, sizeof($orig));
+ $xi += sizeof($orig);
+ }
+
+ $closing = &$this->edits[$i]->closing;
+ if (is_array($closing)) {
+ $closing = array_slice($to_lines, $yi, sizeof($closing));
+ $yi += sizeof($closing);
+ }
+ }
+ }
+}
+
+/**
+ * A class to format Diffs
+ *
+ * This class formats the diff in classic diff format.
+ * It is intended that this class be customized via inheritance,
+ * to obtain fancier outputs.
+ */
+class DiffFormatter
+{
+ /**
+ * Number of leading context "lines" to preserve.
+ *
+ * This should be left at zero for this class, but subclasses
+ * may want to set this to other values.
+ */
+ var $leading_context_lines = 0;
+
+ /**
+ * Number of trailing context "lines" to preserve.
+ *
+ * This should be left at zero for this class, but subclasses
+ * may want to set this to other values.
+ */
+ var $trailing_context_lines = 0;
+
+ /**
+ * Format a diff.
+ *
+ * @param $diff object A Diff object.
+ * @return string The formatted output.
+ */
+ function format($diff) {
+
+ $xi = $yi = 1;
+ $block = false;
+ $context = array();
+
+ $nlead = $this->leading_context_lines;
+ $ntrail = $this->trailing_context_lines;
+
+ $this->_start_diff();
+
+ foreach ($diff->edits as $edit) {
+ if ($edit->type == 'copy') {
+ if (is_array($block)) {
+ if (sizeof($edit->orig) <= $nlead + $ntrail) {
+ $block[] = $edit;
+ }
+ else{
+ if ($ntrail) {
+ $context = array_slice($edit->orig, 0, $ntrail);
+ $block[] = new _DiffOp_Copy($context);
+ }
+ $this->_block($x0, $ntrail + $xi - $x0,
+ $y0, $ntrail + $yi - $y0,
+ $block);
+ $block = false;
+ }
+ }
+ $context = $edit->orig;
+ }
+ else {
+ if (! is_array($block)) {
+ $context = array_slice($context, sizeof($context) - $nlead);
+ $x0 = $xi - sizeof($context);
+ $y0 = $yi - sizeof($context);
+ $block = array();
+ if ($context)
+ $block[] = new _DiffOp_Copy($context);
+ }
+ $block[] = $edit;
+ }
+
+ if ($edit->orig)
+ $xi += sizeof($edit->orig);
+ if ($edit->closing)
+ $yi += sizeof($edit->closing);
+ }
+
+ if (is_array($block))
+ $this->_block($x0, $xi - $x0,
+ $y0, $yi - $y0,
+ $block);
+
+ return $this->_end_diff();
+ }
+
+ function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) {
+ $this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen));
+ foreach ($edits as $edit) {
+ if ($edit->type == 'copy')
+ $this->_context($edit->orig);
+ elseif ($edit->type == 'add')
+ $this->_added($edit->closing);
+ elseif ($edit->type == 'delete')
+ $this->_deleted($edit->orig);
+ elseif ($edit->type == 'change')
+ $this->_changed($edit->orig, $edit->closing);
+ else
+ trigger_error("Unknown edit type", E_USER_ERROR);
+ }
+ $this->_end_block();
+ }
+
+ function _start_diff() {
+ ob_start();
+ }
+
+ function _end_diff() {
+ $val = ob_get_contents();
+ ob_end_clean();
+ return $val;
+ }
+
+ function _block_header($xbeg, $xlen, $ybeg, $ylen) {
+ if ($xlen > 1)
+ $xbeg .= "," . ($xbeg + $xlen - 1);
+ if ($ylen > 1)
+ $ybeg .= "," . ($ybeg + $ylen - 1);
+
+ return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg;
+ }
+
+ function _start_block($header) {
+ echo $header;
+ }
+
+ function _end_block() {
+ }
+
+ function _lines($lines, $prefix = ' ') {
+ foreach ($lines as $line)
+ echo "$prefix $line\n";
+ }
+
+ function _context($lines) {
+ $this->_lines($lines);
+ }
+
+ function _added($lines) {
+ $this->_lines($lines, ">");
+ }
+ function _deleted($lines) {
+ $this->_lines($lines, "<");
+ }
+
+ function _changed($orig, $closing) {
+ $this->_deleted($orig);
+ echo "---\n";
+ $this->_added($closing);
+ }
+}
+
+
+/**
+ * Additions by Axel Boldt follow, partly taken from diff.php, phpwiki-1.3.3
+ *
+ */
+
+define('NBSP', "\xC2\xA0"); // utf-8 non-breaking space.
+
+class _HWLDF_WordAccumulator {
+ function _HWLDF_WordAccumulator () {
+ $this->_lines = array();
+ $this->_line = '';
+ $this->_group = '';
+ $this->_tag = '';
+ }
+
+ function _flushGroup ($new_tag) {
+ if ($this->_group !== '') {
+ if ($this->_tag == 'mark')
+ $this->_line .= '<strong>'.$this->_group.'</strong>';
+ else
+ $this->_line .= $this->_group;
+ }
+ $this->_group = '';
+ $this->_tag = $new_tag;
+ }
+
+ function _flushLine ($new_tag) {
+ $this->_flushGroup($new_tag);
+ if ($this->_line != '')
+ $this->_lines[] = $this->_line;
+ $this->_line = '';
+ }
+
+ function addWords ($words, $tag = '') {
+ if ($tag != $this->_tag)
+ $this->_flushGroup($tag);
+
+ foreach ($words as $word) {
+ // new-line should only come as first char of word.
+ if ($word == '')
+ continue;
+ if ($word[0] == "\n") {
+ $this->_group .= NBSP;
+ $this->_flushLine($tag);
+ $word = substr($word, 1);
+ }
+ assert(!strstr($word, "\n"));
+ $this->_group .= $word;
+ }
+ }
+
+ function getLines() {
+ $this->_flushLine('~done');
+ return $this->_lines;
+ }
+}
+
+class WordLevelDiff extends MappedDiff
+{
+ function WordLevelDiff ($orig_lines, $closing_lines) {
+ list ($orig_words, $orig_stripped) = $this->_split($orig_lines);
+ list ($closing_words, $closing_stripped) = $this->_split($closing_lines);
+
+
+ $this->MappedDiff($orig_words, $closing_words,
+ $orig_stripped, $closing_stripped);
+ }
+
+ function _split($lines) {
+ // FIXME: fix POSIX char class.
+# if (!preg_match_all('/ ( [^\S\n]+ | [[:alnum:]]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
+ if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
+ implode("\n", $lines),
+ $m)) {
+ return array(array(''), array(''));
+ }
+ return array($m[0], $m[1]);
+ }
+
+ function orig () {
+ $orig = new _HWLDF_WordAccumulator;
+
+ foreach ($this->edits as $edit) {
+ if ($edit->type == 'copy')
+ $orig->addWords($edit->orig);
+ elseif ($edit->orig)
+ $orig->addWords($edit->orig, 'mark');
+ }
+ return $orig->getLines();
+ }
+
+ function closing () {
+ $closing = new _HWLDF_WordAccumulator;
+
+ foreach ($this->edits as $edit) {
+ if ($edit->type == 'copy')
+ $closing->addWords($edit->closing);
+ elseif ($edit->closing)
+ $closing->addWords($edit->closing, 'mark');
+ }
+ return $closing->getLines();
+ }
+}
+
+/**
+ * "Unified" diff formatter.
+ *
+ * This class formats the diff in classic "unified diff" format.
+ */
+class UnifiedDiffFormatter extends DiffFormatter
+{
+ function UnifiedDiffFormatter($context_lines = 4) {
+ $this->leading_context_lines = $context_lines;
+ $this->trailing_context_lines = $context_lines;
+ }
+
+ function _block_header($xbeg, $xlen, $ybeg, $ylen) {
+ if ($xlen != 1)
+ $xbeg .= "," . $xlen;
+ if ($ylen != 1)
+ $ybeg .= "," . $ylen;
+ return "@@ -$xbeg +$ybeg @@\n";
+ }
+
+ function _added($lines) {
+ $this->_lines($lines, "+");
+ }
+ function _deleted($lines) {
+ $this->_lines($lines, "-");
+ }
+ function _changed($orig, $final) {
+ $this->_deleted($orig);
+ $this->_added($final);
+ }
+}
+
+/**
+ * Wikipedia Table style diff formatter.
+ *
+ */
+class TableDiffFormatter extends DiffFormatter
+{
+ function TableDiffFormatter() {
+ $this->leading_context_lines = 2;
+ $this->trailing_context_lines = 2;
+ }
+
+ function _pre($text){
+ $text = htmlspecialchars($text);
+ $text = str_replace(' ',' ',$text);
+ return $text;
+ }
+
+ function _block_header( $xbeg, $xlen, $ybeg, $ylen ) {
+ global $lang;
+ $l1 = $lang['line'].' '.$xbeg;
+ $l2 = $lang['line'].' '.$ybeg;
+ $r = '<tr><td class="diff-blockheader" colspan="2">'.$l1.":</td>\n" .
+ '<td class="diff-blockheader" colspan="2">'.$l2.":</td></tr>\n";
+ return $r;
+ }
+
+ function _start_block( $header ) {
+ print( $header );
+ }
+
+ function _end_block() {
+ }
+
+ function _lines( $lines, $prefix=' ', $color="white" ) {
+ }
+
+ function addedLine( $line ) {
+ $line = str_replace(' ',' ',$line);
+ return '<td>+</td><td class="diff-addedline">' .
+ $line.'</td>';
+ }
+
+ function deletedLine( $line ) {
+ $line = str_replace(' ',' ',$line);
+ return '<td>-</td><td class="diff-deletedline">' .
+ $line.'</td>';
+ }
+
+ function emptyLine() {
+ //$line = str_replace(' ',' ',$line);
+ return '<td colspan="2"> </td>';
+ }
+
+ function contextLine( $line ) {
+ $line = str_replace(' ',' ',$line);
+ return '<td> </td><td class="diff-context">'.$line.'</td>';
+ }
+
+ function _added($lines) {
+ foreach ($lines as $line) {
+ print( '<tr>' . $this->emptyLine() .
+ $this->addedLine( $line ) . "</tr>\n" );
+ }
+ }
+
+ function _deleted($lines) {
+ foreach ($lines as $line) {
+ print( '<tr>' . $this->deletedLine( $line ) .
+ $this->emptyLine() . "</tr>\n" );
+ }
+ }
+
+ function _context( $lines ) {
+ foreach ($lines as $line) {
+ print( '<tr>' . $this->contextLine( $line ) .
+ $this->contextLine( $line ) . "</tr>\n" );
+ }
+ }
+
+ function _changed( $orig, $closing ) {
+ $diff = new WordLevelDiff( $orig, $closing );
+ $del = $diff->orig();
+ $add = $diff->closing();
+
+ while ( $line = array_shift( $del ) ) {
+ $aline = array_shift( $add );
+ print( '<tr>' . $this->deletedLine( $line ) .
+ $this->addedLine( $aline ) . "</tr>\n" );
+ }
+ $this->_added( $add ); # If any leftovers
+ }
+}
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/FeedParser.php
===================================================================
--- site/trunk/www-root/wiki/inc/FeedParser.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/FeedParser.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,76 +1,76 @@
-<?php
-/**
- * Class used to parse RSS and ATOM feeds
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-require_once(DOKU_INC.'inc/HTTPClient.php');
-require_once(DOKU_INC.'inc/SimplePie.php');
-
-
-/**
- * We override some methods of the original SimplePie class here
- */
-class FeedParser extends SimplePie {
-
- /**
- * Constructor. Set some defaults
- */
- function FeedParser(){
- $this->SimplePie();
- $this->enable_cache(false);
- $this->set_file_class('FeedParser_File');
- }
-
- /**
- * Backward compatibility for older plugins
- */
- function feed_url($url){
- $this->set_feed_url($url);
- }
-}
-
-/**
- * Fetch an URL using our own HTTPClient
- *
- * Replaces SimplePie's own class
- */
-class FeedParser_File extends SimplePie_File {
- var $http;
- var $useragent;
- var $success = true;
- var $headers = array();
- var $body;
- var $error;
-
- /**
- * Inititializes the HTTPClient
- *
- * We ignore all given parameters - they are set in DokuHTTPClient
- */
- function FeedParser_File($url, $timeout=10, $redirects=5,
- $headers=null, $useragent=null, $force_fsockopen=false) {
- $this->http = new DokuHTTPClient();
- $this->success = $this->http->sendRequest($url);
-
- $this->headers = $this->http->resp_headers;
- $this->body = $this->http->resp_body;
- $this->error = $this->http->error;
- return $this->success;
- }
-
- function headers(){
- return $this->headers;
- }
-
- function body(){
- return $this->body;
- }
-
- function close(){
- return true;
- }
-
-}
+<?php
+/**
+ * Class used to parse RSS and ATOM feeds
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+require_once(DOKU_INC.'inc/HTTPClient.php');
+require_once(DOKU_INC.'inc/SimplePie.php');
+
+
+/**
+ * We override some methods of the original SimplePie class here
+ */
+class FeedParser extends SimplePie {
+
+ /**
+ * Constructor. Set some defaults
+ */
+ function FeedParser(){
+ $this->SimplePie();
+ $this->enable_cache(false);
+ $this->set_file_class('FeedParser_File');
+ }
+
+ /**
+ * Backward compatibility for older plugins
+ */
+ function feed_url($url){
+ $this->set_feed_url($url);
+ }
+}
+
+/**
+ * Fetch an URL using our own HTTPClient
+ *
+ * Replaces SimplePie's own class
+ */
+class FeedParser_File extends SimplePie_File {
+ var $http;
+ var $useragent;
+ var $success = true;
+ var $headers = array();
+ var $body;
+ var $error;
+
+ /**
+ * Inititializes the HTTPClient
+ *
+ * We ignore all given parameters - they are set in DokuHTTPClient
+ */
+ function FeedParser_File($url, $timeout=10, $redirects=5,
+ $headers=null, $useragent=null, $force_fsockopen=false) {
+ $this->http = new DokuHTTPClient();
+ $this->success = $this->http->sendRequest($url);
+
+ $this->headers = $this->http->resp_headers;
+ $this->body = $this->http->resp_body;
+ $this->error = $this->http->error;
+ return $this->success;
+ }
+
+ function headers(){
+ return $this->headers;
+ }
+
+ function body(){
+ return $this->body;
+ }
+
+ function close(){
+ return true;
+ }
+
+}
Modified: site/trunk/www-root/wiki/inc/HTTPClient.php
===================================================================
--- site/trunk/www-root/wiki/inc/HTTPClient.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/HTTPClient.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,467 +1,468 @@
-<?php
-/**
- * HTTP Client
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Goetz <cpuidle at gmx.de>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-require_once(DOKU_CONF.'dokuwiki.php');
-
-define('HTTP_NL',"\r\n");
-
-
-/**
- * Adds DokuWiki specific configs to the HTTP client
- *
- * @author Andreas Goetz <cpuidle at gmx.de>
- */
-class DokuHTTPClient extends HTTPClient {
-
- /**
- * Constructor.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function DokuHTTPClient(){
- global $conf;
-
- // call parent constructor
- $this->HTTPClient();
-
- // set some values from the config
- $this->proxy_host = $conf['proxy']['host'];
- $this->proxy_port = $conf['proxy']['port'];
- $this->proxy_user = $conf['proxy']['user'];
- $this->proxy_pass = $conf['proxy']['pass'];
- $this->proxy_ssl = $conf['proxy']['ssl'];
- }
-}
-
-/**
- * This class implements a basic HTTP client
- *
- * It supports POST and GET, Proxy usage, basic authentication,
- * handles cookies and referers. It is based upon the httpclient
- * function from the VideoDB project.
- *
- * @link http://www.splitbrain.org/go/videodb
- * @author Andreas Goetz <cpuidle at gmx.de>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-class HTTPClient {
- //set these if you like
- var $agent; // User agent
- var $http; // HTTP version defaults to 1.0
- var $timeout; // read timeout (seconds)
- var $cookies;
- var $referer;
- var $max_redirect;
- var $max_bodysize; // abort if the response body is bigger than this
- var $header_regexp; // if set this RE must match against the headers, else abort
- var $headers;
- var $debug;
- var $start = 0; // for timings
-
- // don't set these, read on error
- var $error;
- var $redirect_count;
-
- // read these after a successful request
- var $resp_status;
- var $resp_body;
- var $resp_headers;
-
- // set these to do basic authentication
- var $user;
- var $pass;
-
- // set these if you need to use a proxy
- var $proxy_host;
- var $proxy_port;
- var $proxy_user;
- var $proxy_pass;
- var $proxy_ssl; //boolean set to true if your proxy needs SSL
-
- /**
- * Constructor.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function HTTPClient(){
- $this->agent = 'Mozilla/4.0 (compatible; DokuWiki HTTP Client; '.PHP_OS.')';
- $this->timeout = 15;
- $this->cookies = array();
- $this->referer = '';
- $this->max_redirect = 3;
- $this->redirect_count = 0;
- $this->status = 0;
- $this->headers = array();
- $this->http = '1.0';
- $this->debug = false;
- $this->max_bodysize = 0;
- $this->header_regexp= '';
- if(extension_loaded('zlib')) $this->headers['Accept-encoding'] = 'gzip';
- $this->headers['Accept'] = 'text/xml,application/xml,application/xhtml+xml,'.
- 'text/html,text/plain,image/png,image/jpeg,image/gif,*/*';
- $this->headers['Accept-Language'] = 'en-us';
- }
-
-
- /**
- * Simple function to do a GET request
- *
- * Returns the wanted page or false on an error;
- *
- * @param string $url The URL to fetch
- * @param bool $sloppy304 Return body on 304 not modified
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function get($url,$sloppy304=false){
- if(!$this->sendRequest($url)) return false;
- if($this->status == 304 && $sloppy304) return $this->resp_body;
- if($this->status != 200) return false;
- return $this->resp_body;
- }
-
- /**
- * Simple function to do a POST request
- *
- * Returns the resulting page or false on an error;
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function post($url,$data){
- if(!$this->sendRequest($url,$data,'POST')) return false;
- if($this->status != 200) return false;
- return $this->resp_body;
- }
-
- /**
- * Send an HTTP request
- *
- * This method handles the whole HTTP communication. It respects set proxy settings,
- * builds the request headers, follows redirects and parses the response.
- *
- * Post data should be passed as associative array. When passed as string it will be
- * sent as is. You will need to setup your own Content-Type header then.
- *
- * @param string $url - the complete URL
- * @param mixed $data - the post data
- * @param string $method - HTTP Method usually GET or POST.
- * @return bool - true on success
- * @author Andreas Goetz <cpuidle at gmx.de>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function sendRequest($url,$data=array(),$method='GET'){
- $this->start = $this->_time();
- $this->error = '';
- $this->status = 0;
-
- // parse URL into bits
- $uri = parse_url($url);
- $server = $uri['host'];
- $path = $uri['path'];
- if(empty($path)) $path = '/';
- if(!empty($uri['query'])) $path .= '?'.$uri['query'];
- $port = $uri['port'];
- if($uri['user']) $this->user = $uri['user'];
- if($uri['pass']) $this->pass = $uri['pass'];
-
- // proxy setup
- if($this->proxy_host){
- $request_url = $url;
- $server = $this->proxy_host;
- $port = $this->proxy_port;
- if (empty($port)) $port = 8080;
- }else{
- $request_url = $path;
- $server = $server;
- if (empty($port)) $port = ($uri['scheme'] == 'https') ? 443 : 80;
- }
-
- // add SSL stream prefix if needed - needs SSL support in PHP
- if($port == 443 || $this->proxy_ssl) $server = 'ssl://'.$server;
-
- // prepare headers
- $headers = $this->headers;
- $headers['Host'] = $uri['host'];
- $headers['User-Agent'] = $this->agent;
- $headers['Referer'] = $this->referer;
- $headers['Connection'] = 'Close';
- if($method == 'POST'){
- if(is_array($data)){
- $headers['Content-Type'] = 'application/x-www-form-urlencoded';
- $data = $this->_postEncode($data);
- }
- $headers['Content-Length'] = strlen($data);
- $rmethod = 'POST';
- }
- if($this->user) {
- $headers['Authorization'] = 'Basic '.base64_encode($this->user.':'.$this->pass);
- }
- if($this->proxy_user) {
- $headers['Proxy-Authorization'] = 'Basic '.base64_encode($this->proxy_user.':'.$this->proxy_pass);
- }
-
- // stop time
- $start = time();
-
- // open socket
- $socket = @fsockopen($server,$port,$errno, $errstr, $this->timeout);
- if (!$socket){
- $resp->status = '-100';
- $this->error = "Could not connect to $server:$port\n$errstr ($errno)";
- return false;
- }
- //set non blocking
- stream_set_blocking($socket,0);
-
- // build request
- $request = "$method $request_url HTTP/".$this->http.HTTP_NL;
- $request .= $this->_buildHeaders($headers);
- $request .= $this->_getCookies();
- $request .= HTTP_NL;
- $request .= $data;
-
- $this->_debug('request',$request);
-
- // send request
- fputs($socket, $request);
- // read headers from socket
- $r_headers = '';
- do{
- if(time()-$start > $this->timeout){
- $this->status = -100;
- $this->error = sprintf('Timeout while reading headers (%.3fs)',$this->_time() - $this->start);
- return false;
- }
- if(feof($socket)){
- $this->error = 'Premature End of File (socket)';
- return false;
- }
- $r_headers .= fgets($socket,1024);
- usleep(1000);
- }while(!preg_match('/\r?\n\r?\n$/',$r_headers));
-
- $this->_debug('response headers',$r_headers);
-
- // check if expected body size exceeds allowance
- if($this->max_bodysize && preg_match('/\r?\nContent-Length:\s*(\d+)\r?\n/i',$r_headers,$match)){
- if($match[1] > $this->max_bodysize){
- $this->error = 'Reported content length exceeds allowed response size';
- return false;
- }
- }
-
- // get Status
- if (!preg_match('/^HTTP\/(\d\.\d)\s*(\d+).*?\n/', $r_headers, $m)) {
- $this->error = 'Server returned bad answer';
- return false;
- }
- $this->status = $m[2];
-
- // handle headers and cookies
- $this->resp_headers = $this->_parseHeaders($r_headers);
- if(isset($this->resp_headers['set-cookie'])){
- foreach ((array) $this->resp_headers['set-cookie'] as $c){
- list($key, $value, $foo) = split('=', $cookie);
- $this->cookies[$key] = $value;
- }
- }
-
- $this->_debug('Object headers',$this->resp_headers);
-
- // check server status code to follow redirect
- if($this->status == 301 || $this->status == 302 ){
- if (empty($this->resp_headers['location'])){
- $this->error = 'Redirect but no Location Header found';
- return false;
- }elseif($this->redirect_count == $this->max_redirect){
- $this->error = 'Maximum number of redirects exceeded';
- return false;
- }else{
- $this->redirect_count++;
- $this->referer = $url;
- if (!preg_match('/^http/i', $this->resp_headers['location'])){
- $this->resp_headers['location'] = $uri['scheme'].'://'.$uri['host'].
- $this->resp_headers['location'];
- }
- // perform redirected request, always via GET (required by RFC)
- return $this->sendRequest($this->resp_headers['location'],array(),'GET');
- }
- }
-
- // check if headers are as expected
- if($this->header_regexp && !preg_match($this->header_regexp,$r_headers)){
- $this->error = 'The received headers did not match the given regexp';
- return false;
- }
-
- //read body (with chunked encoding if needed)
- $r_body = '';
- if(preg_match('/transfer\-(en)?coding:\s*chunked\r\n/i',$r_header)){
- do {
- unset($chunk_size);
- do {
- if(feof($socket)){
- $this->error = 'Premature End of File (socket)';
- return false;
- }
- if(time()-$start > $this->timeout){
- $this->status = -100;
- $this->error = sprintf('Timeout while reading chunk (%.3fs)',$this->_time() - $this->start);
- return false;
- }
- $byte = fread($socket,1);
- $chunk_size .= $byte;
- } while (preg_match('/[a-zA-Z0-9]/',$byte)); // read chunksize including \r
-
- $byte = fread($socket,1); // readtrailing \n
- $chunk_size = hexdec($chunk_size);
- $this_chunk = fread($socket,$chunk_size);
- $r_body .= $this_chunk;
- if ($chunk_size) $byte = fread($socket,2); // read trailing \r\n
-
- if($this->max_bodysize && strlen($r_body) > $this->max_bodysize){
- $this->error = 'Allowed response size exceeded';
- return false;
- }
- usleep(1000);
- } while ($chunk_size);
- }else{
- // read entire socket
- while (!feof($socket)) {
- if(time()-$start > $this->timeout){
- $this->status = -100;
- $this->error = sprintf('Timeout while reading response (%.3fs)',$this->_time() - $this->start);
- return false;
- }
- $r_body .= fread($socket,4096);
- $r_size = strlen($r_body);
- if($this->max_bodysize && $r_size > $this->max_bodysize){
- $this->error = 'Allowed response size exceeded';
- return false;
- }
- if($this->resp_headers['content-length'] && !$this->resp_headers['transfer-encoding'] &&
- $this->resp_headers['content-length'] == $r_size){
- // we read the content-length, finish here
- break;
- }
- usleep(1000);
- }
- }
-
- // close socket
- $status = socket_get_status($socket);
- fclose($socket);
-
- // decode gzip if needed
- if($this->resp_headers['content-encoding'] == 'gzip'){
- $this->resp_body = gzinflate(substr($r_body, 10));
- }else{
- $this->resp_body = $r_body;
- }
-
- $this->_debug('response body',$this->resp_body);
- $this->redirect_count = 0;
- return true;
- }
-
- /**
- * print debug info
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _debug($info,$var){
- if(!$this->debug) return;
- print '<b>'.$info.'</b> '.($this->_time() - $this->start).'s<br />';
- ob_start();
- print_r($var);
- $content = htmlspecialchars(ob_get_contents());
- ob_end_clean();
- print '<pre>'.$content.'</pre>';
- }
-
- /**
- * Return current timestamp in microsecond resolution
- */
- function _time(){
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
-
- /**
- * convert given header string to Header array
- *
- * All Keys are lowercased.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _parseHeaders($string){
- $headers = array();
- $lines = explode("\n",$string);
- foreach($lines as $line){
- list($key,$val) = explode(':',$line,2);
- $key = strtolower(trim($key));
- $val = trim($val);
- if(empty($val)) continue;
- if(isset($headers[$key])){
- if(is_array($headers[$key])){
- $headers[$key][] = $val;
- }else{
- $headers[$key] = array($headers[$key],$val);
- }
- }else{
- $headers[$key] = $val;
- }
- }
- return $headers;
- }
-
- /**
- * convert given header array to header string
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _buildHeaders($headers){
- $string = '';
- foreach($headers as $key => $value){
- if(empty($value)) continue;
- $string .= $key.': '.$value.HTTP_NL;
- }
- return $string;
- }
-
- /**
- * get cookies as http header string
- *
- * @author Andreas Goetz <cpuidle at gmx.de>
- */
- function _getCookies(){
- foreach ($this->cookies as $key => $val){
- if ($headers) $headers .= '; ';
- $headers .= $key.'='.$val;
- }
-
- if ($headers) $headers = "Cookie: $headers".HTTP_NL;
- return $headers;
- }
-
- /**
- * Encode data for posting
- *
- * @todo handle mixed encoding for file upoads
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _postEncode($data){
- foreach($data as $key => $val){
- if($url) $url .= '&';
- $url .= $key.'='.urlencode($val);
- }
- return $url;
- }
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * HTTP Client
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Goetz <cpuidle at gmx.de>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+require_once(DOKU_CONF.'dokuwiki.php');
+
+define('HTTP_NL',"\r\n");
+
+
+/**
+ * Adds DokuWiki specific configs to the HTTP client
+ *
+ * @author Andreas Goetz <cpuidle at gmx.de>
+ */
+class DokuHTTPClient extends HTTPClient {
+
+ /**
+ * Constructor.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function DokuHTTPClient(){
+ global $conf;
+
+ // call parent constructor
+ $this->HTTPClient();
+
+ // set some values from the config
+ $this->proxy_host = $conf['proxy']['host'];
+ $this->proxy_port = $conf['proxy']['port'];
+ $this->proxy_user = $conf['proxy']['user'];
+ $this->proxy_pass = $conf['proxy']['pass'];
+ $this->proxy_ssl = $conf['proxy']['ssl'];
+ }
+}
+
+/**
+ * This class implements a basic HTTP client
+ *
+ * It supports POST and GET, Proxy usage, basic authentication,
+ * handles cookies and referers. It is based upon the httpclient
+ * function from the VideoDB project.
+ *
+ * @link http://www.splitbrain.org/go/videodb
+ * @author Andreas Goetz <cpuidle at gmx.de>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+class HTTPClient {
+ //set these if you like
+ var $agent; // User agent
+ var $http; // HTTP version defaults to 1.0
+ var $timeout; // read timeout (seconds)
+ var $cookies;
+ var $referer;
+ var $max_redirect;
+ var $max_bodysize; // abort if the response body is bigger than this
+ var $header_regexp; // if set this RE must match against the headers, else abort
+ var $headers;
+ var $debug;
+ var $start = 0; // for timings
+
+ // don't set these, read on error
+ var $error;
+ var $redirect_count;
+
+ // read these after a successful request
+ var $resp_status;
+ var $resp_body;
+ var $resp_headers;
+
+ // set these to do basic authentication
+ var $user;
+ var $pass;
+
+ // set these if you need to use a proxy
+ var $proxy_host;
+ var $proxy_port;
+ var $proxy_user;
+ var $proxy_pass;
+ var $proxy_ssl; //boolean set to true if your proxy needs SSL
+
+ /**
+ * Constructor.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function HTTPClient(){
+ $this->agent = 'Mozilla/4.0 (compatible; DokuWiki HTTP Client; '.PHP_OS.')';
+ $this->timeout = 15;
+ $this->cookies = array();
+ $this->referer = '';
+ $this->max_redirect = 3;
+ $this->redirect_count = 0;
+ $this->status = 0;
+ $this->headers = array();
+ $this->http = '1.0';
+ $this->debug = false;
+ $this->max_bodysize = 0;
+ $this->header_regexp= '';
+ if(extension_loaded('zlib')) $this->headers['Accept-encoding'] = 'gzip';
+ $this->headers['Accept'] = 'text/xml,application/xml,application/xhtml+xml,'.
+ 'text/html,text/plain,image/png,image/jpeg,image/gif,*/*';
+ $this->headers['Accept-Language'] = 'en-us';
+ }
+
+
+ /**
+ * Simple function to do a GET request
+ *
+ * Returns the wanted page or false on an error;
+ *
+ * @param string $url The URL to fetch
+ * @param bool $sloppy304 Return body on 304 not modified
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function get($url,$sloppy304=false){
+ if(!$this->sendRequest($url)) return false;
+ if($this->status == 304 && $sloppy304) return $this->resp_body;
+ if($this->status != 200) return false;
+ return $this->resp_body;
+ }
+
+ /**
+ * Simple function to do a POST request
+ *
+ * Returns the resulting page or false on an error;
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function post($url,$data){
+ if(!$this->sendRequest($url,$data,'POST')) return false;
+ if($this->status != 200) return false;
+ return $this->resp_body;
+ }
+
+ /**
+ * Send an HTTP request
+ *
+ * This method handles the whole HTTP communication. It respects set proxy settings,
+ * builds the request headers, follows redirects and parses the response.
+ *
+ * Post data should be passed as associative array. When passed as string it will be
+ * sent as is. You will need to setup your own Content-Type header then.
+ *
+ * @param string $url - the complete URL
+ * @param mixed $data - the post data either as array or raw data
+ * @param string $method - HTTP Method usually GET or POST.
+ * @return bool - true on success
+ * @author Andreas Goetz <cpuidle at gmx.de>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function sendRequest($url,$data='',$method='GET'){
+ $this->start = $this->_time();
+ $this->error = '';
+ $this->status = 0;
+
+ // parse URL into bits
+ $uri = parse_url($url);
+ $server = $uri['host'];
+ $path = $uri['path'];
+ if(empty($path)) $path = '/';
+ if(!empty($uri['query'])) $path .= '?'.$uri['query'];
+ $port = $uri['port'];
+ if($uri['user']) $this->user = $uri['user'];
+ if($uri['pass']) $this->pass = $uri['pass'];
+
+ // proxy setup
+ if($this->proxy_host){
+ $request_url = $url;
+ $server = $this->proxy_host;
+ $port = $this->proxy_port;
+ if (empty($port)) $port = 8080;
+ }else{
+ $request_url = $path;
+ $server = $server;
+ if (empty($port)) $port = ($uri['scheme'] == 'https') ? 443 : 80;
+ }
+
+ // add SSL stream prefix if needed - needs SSL support in PHP
+ if($port == 443 || $this->proxy_ssl) $server = 'ssl://'.$server;
+
+ // prepare headers
+ $headers = $this->headers;
+ $headers['Host'] = $uri['host'];
+ $headers['User-Agent'] = $this->agent;
+ $headers['Referer'] = $this->referer;
+ $headers['Connection'] = 'Close';
+ if($method == 'POST'){
+ if(is_array($data)){
+ $headers['Content-Type'] = 'application/x-www-form-urlencoded';
+ $data = $this->_postEncode($data);
+ }
+ $headers['Content-Length'] = strlen($data);
+ $rmethod = 'POST';
+ }elseif($method == 'GET'){
+ $data = ''; //no data allowed on GET requests
+ }
+ if($this->user) {
+ $headers['Authorization'] = 'Basic '.base64_encode($this->user.':'.$this->pass);
+ }
+ if($this->proxy_user) {
+ $headers['Proxy-Authorization'] = 'Basic '.base64_encode($this->proxy_user.':'.$this->proxy_pass);
+ }
+
+ // stop time
+ $start = time();
+
+ // open socket
+ $socket = @fsockopen($server,$port,$errno, $errstr, $this->timeout);
+ if (!$socket){
+ $resp->status = '-100';
+ $this->error = "Could not connect to $server:$port\n$errstr ($errno)";
+ return false;
+ }
+ //set non blocking
+ stream_set_blocking($socket,0);
+
+ // build request
+ $request = "$method $request_url HTTP/".$this->http.HTTP_NL;
+ $request .= $this->_buildHeaders($headers);
+ $request .= $this->_getCookies();
+ $request .= HTTP_NL;
+ $request .= $data;
+
+ $this->_debug('request',$request);
+
+ // send request
+ fputs($socket, $request);
+ // read headers from socket
+ $r_headers = '';
+ do{
+ if(time()-$start > $this->timeout){
+ $this->status = -100;
+ $this->error = sprintf('Timeout while reading headers (%.3fs)',$this->_time() - $this->start);
+ return false;
+ }
+ if(feof($socket)){
+ $this->error = 'Premature End of File (socket)';
+ return false;
+ }
+ $r_headers .= fgets($socket,1024);
+ }while(!preg_match('/\r?\n\r?\n$/',$r_headers));
+
+ $this->_debug('response headers',$r_headers);
+
+ // check if expected body size exceeds allowance
+ if($this->max_bodysize && preg_match('/\r?\nContent-Length:\s*(\d+)\r?\n/i',$r_headers,$match)){
+ if($match[1] > $this->max_bodysize){
+ $this->error = 'Reported content length exceeds allowed response size';
+ return false;
+ }
+ }
+
+ // get Status
+ if (!preg_match('/^HTTP\/(\d\.\d)\s*(\d+).*?\n/', $r_headers, $m)) {
+ $this->error = 'Server returned bad answer';
+ return false;
+ }
+ $this->status = $m[2];
+
+ // handle headers and cookies
+ $this->resp_headers = $this->_parseHeaders($r_headers);
+ if(isset($this->resp_headers['set-cookie'])){
+ foreach ((array) $this->resp_headers['set-cookie'] as $c){
+ list($key, $value, $foo) = split('=', $cookie);
+ $this->cookies[$key] = $value;
+ }
+ }
+
+ $this->_debug('Object headers',$this->resp_headers);
+
+ // check server status code to follow redirect
+ if($this->status == 301 || $this->status == 302 ){
+ if (empty($this->resp_headers['location'])){
+ $this->error = 'Redirect but no Location Header found';
+ return false;
+ }elseif($this->redirect_count == $this->max_redirect){
+ $this->error = 'Maximum number of redirects exceeded';
+ return false;
+ }else{
+ $this->redirect_count++;
+ $this->referer = $url;
+ if (!preg_match('/^http/i', $this->resp_headers['location'])){
+ $this->resp_headers['location'] = $uri['scheme'].'://'.$uri['host'].
+ $this->resp_headers['location'];
+ }
+ // perform redirected request, always via GET (required by RFC)
+ return $this->sendRequest($this->resp_headers['location'],array(),'GET');
+ }
+ }
+
+ // check if headers are as expected
+ if($this->header_regexp && !preg_match($this->header_regexp,$r_headers)){
+ $this->error = 'The received headers did not match the given regexp';
+ return false;
+ }
+
+ //read body (with chunked encoding if needed)
+ $r_body = '';
+ if(preg_match('/transfer\-(en)?coding:\s*chunked\r\n/i',$r_header)){
+ do {
+ unset($chunk_size);
+ do {
+ if(feof($socket)){
+ $this->error = 'Premature End of File (socket)';
+ return false;
+ }
+ if(time()-$start > $this->timeout){
+ $this->status = -100;
+ $this->error = sprintf('Timeout while reading chunk (%.3fs)',$this->_time() - $this->start);
+ return false;
+ }
+ $byte = fread($socket,1);
+ $chunk_size .= $byte;
+ } while (preg_match('/[a-zA-Z0-9]/',$byte)); // read chunksize including \r
+
+ $byte = fread($socket,1); // readtrailing \n
+ $chunk_size = hexdec($chunk_size);
+ $this_chunk = fread($socket,$chunk_size);
+ $r_body .= $this_chunk;
+ if ($chunk_size) $byte = fread($socket,2); // read trailing \r\n
+
+ if($this->max_bodysize && strlen($r_body) > $this->max_bodysize){
+ $this->error = 'Allowed response size exceeded';
+ return false;
+ }
+ } while ($chunk_size);
+ }else{
+ // read entire socket
+ while (!feof($socket)) {
+ if(time()-$start > $this->timeout){
+ $this->status = -100;
+ $this->error = sprintf('Timeout while reading response (%.3fs)',$this->_time() - $this->start);
+ return false;
+ }
+ $r_body .= fread($socket,4096);
+ $r_size = strlen($r_body);
+ if($this->max_bodysize && $r_size > $this->max_bodysize){
+ $this->error = 'Allowed response size exceeded';
+ return false;
+ }
+ if($this->resp_headers['content-length'] && !$this->resp_headers['transfer-encoding'] &&
+ $this->resp_headers['content-length'] == $r_size){
+ // we read the content-length, finish here
+ break;
+ }
+ }
+ }
+
+ // close socket
+ $status = socket_get_status($socket);
+ fclose($socket);
+
+ // decode gzip if needed
+ if($this->resp_headers['content-encoding'] == 'gzip'){
+ $this->resp_body = gzinflate(substr($r_body, 10));
+ }else{
+ $this->resp_body = $r_body;
+ }
+
+ $this->_debug('response body',$this->resp_body);
+ $this->redirect_count = 0;
+ return true;
+ }
+
+ /**
+ * print debug info
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _debug($info,$var=null){
+ if(!$this->debug) return;
+ print '<b>'.$info.'</b> '.($this->_time() - $this->start).'s<br />';
+ if(!is_null($var)){
+ ob_start();
+ print_r($var);
+ $content = htmlspecialchars(ob_get_contents());
+ ob_end_clean();
+ print '<pre>'.$content.'</pre>';
+ }
+ }
+
+ /**
+ * Return current timestamp in microsecond resolution
+ */
+ function _time(){
+ list($usec, $sec) = explode(" ", microtime());
+ return ((float)$usec + (float)$sec);
+ }
+
+ /**
+ * convert given header string to Header array
+ *
+ * All Keys are lowercased.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _parseHeaders($string){
+ $headers = array();
+ $lines = explode("\n",$string);
+ foreach($lines as $line){
+ list($key,$val) = explode(':',$line,2);
+ $key = strtolower(trim($key));
+ $val = trim($val);
+ if(empty($val)) continue;
+ if(isset($headers[$key])){
+ if(is_array($headers[$key])){
+ $headers[$key][] = $val;
+ }else{
+ $headers[$key] = array($headers[$key],$val);
+ }
+ }else{
+ $headers[$key] = $val;
+ }
+ }
+ return $headers;
+ }
+
+ /**
+ * convert given header array to header string
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _buildHeaders($headers){
+ $string = '';
+ foreach($headers as $key => $value){
+ if(empty($value)) continue;
+ $string .= $key.': '.$value.HTTP_NL;
+ }
+ return $string;
+ }
+
+ /**
+ * get cookies as http header string
+ *
+ * @author Andreas Goetz <cpuidle at gmx.de>
+ */
+ function _getCookies(){
+ foreach ($this->cookies as $key => $val){
+ if ($headers) $headers .= '; ';
+ $headers .= $key.'='.$val;
+ }
+
+ if ($headers) $headers = "Cookie: $headers".HTTP_NL;
+ return $headers;
+ }
+
+ /**
+ * Encode data for posting
+ *
+ * @todo handle mixed encoding for file upoads
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _postEncode($data){
+ foreach($data as $key => $val){
+ if($url) $url .= '&';
+ $url .= $key.'='.urlencode($val);
+ }
+ return $url;
+ }
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/IXR_Library.php
===================================================================
--- site/trunk/www-root/wiki/inc/IXR_Library.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/IXR_Library.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,792 +1,793 @@
-<?php
-/**
- * IXR - The Inutio XML-RPC Library - (c) Incutio Ltd 2002
- *
- * @version 1.61
- * @author Simon Willison
- * @date 11th July 2003
- * @link http://scripts.incutio.com/xmlrpc/
- * @link http://scripts.incutio.com/xmlrpc/manual.php
- * @license Artistic License http://www.opensource.org/licenses/artistic-license.php
- *
- * Modified for DokuWiki
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-
-class IXR_Value {
- var $data;
- var $type;
- function IXR_Value ($data, $type = false) {
- $this->data = $data;
- if (!$type) {
- $type = $this->calculateType();
- }
- $this->type = $type;
- if ($type == 'struct') {
- /* Turn all the values in the array in to new IXR_Value objects */
- foreach ($this->data as $key => $value) {
- $this->data[$key] = new IXR_Value($value);
- }
- }
- if ($type == 'array') {
- for ($i = 0, $j = count($this->data); $i < $j; $i++) {
- $this->data[$i] = new IXR_Value($this->data[$i]);
- }
- }
- }
- function calculateType() {
- if ($this->data === true || $this->data === false) {
- return 'boolean';
- }
- if (is_integer($this->data)) {
- return 'int';
- }
- if (is_double($this->data)) {
- return 'double';
- }
- // Deal with IXR object types base64 and date
- if (is_object($this->data) && is_a($this->data, 'IXR_Date')) {
- return 'date';
- }
- if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) {
- return 'base64';
- }
- // If it is a normal PHP object convert it in to a struct
- if (is_object($this->data)) {
-
- $this->data = get_object_vars($this->data);
- return 'struct';
- }
- if (!is_array($this->data)) {
- return 'string';
- }
- /* We have an array - is it an array or a struct ? */
- if ($this->isStruct($this->data)) {
- return 'struct';
- } else {
- return 'array';
- }
- }
- function getXml() {
- /* Return XML for this value */
- switch ($this->type) {
- case 'boolean':
- return '<boolean>'.(($this->data) ? '1' : '0').'</boolean>';
- break;
- case 'int':
- return '<int>'.$this->data.'</int>';
- break;
- case 'double':
- return '<double>'.$this->data.'</double>';
- break;
- case 'string':
- return '<string>'.htmlspecialchars($this->data).'</string>';
- break;
- case 'array':
- $return = '<array><data>'."\n";
- foreach ($this->data as $item) {
- $return .= ' <value>'.$item->getXml()."</value>\n";
- }
- $return .= '</data></array>';
- return $return;
- break;
- case 'struct':
- $return = '<struct>'."\n";
- foreach ($this->data as $name => $value) {
- $return .= " <member><name>$name</name><value>";
- $return .= $value->getXml()."</value></member>\n";
- }
- $return .= '</struct>';
- return $return;
- break;
- case 'date':
- case 'base64':
- return $this->data->getXml();
- break;
- }
- return false;
- }
- function isStruct($array) {
- /* Nasty function to check if an array is a struct or not */
- $expected = 0;
- foreach ($array as $key => $value) {
- if ((string)$key != (string)$expected) {
- return true;
- }
- $expected++;
- }
- return false;
- }
-}
-
-
-class IXR_Message {
- var $message;
- var $messageType; // methodCall / methodResponse / fault
- var $faultCode;
- var $faultString;
- var $methodName;
- var $params;
- // Current variable stacks
- var $_arraystructs = array(); // The stack used to keep track of the current array/struct
- var $_arraystructstypes = array(); // Stack keeping track of if things are structs or array
- var $_currentStructName = array(); // A stack as well
- var $_param;
- var $_value;
- var $_currentTag;
- var $_currentTagContents;
- // The XML parser
- var $_parser;
- function IXR_Message ($message) {
- $this->message = $message;
- }
- function parse() {
- // first remove the XML declaration
- $this->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $this->message);
- if (trim($this->message) == '') {
- return false;
- }
- $this->_parser = xml_parser_create();
- // Set XML parser to take the case of tags in to account
- xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);
- // Set XML parser callback functions
- xml_set_object($this->_parser, $this);
- xml_set_element_handler($this->_parser, 'tag_open', 'tag_close');
- xml_set_character_data_handler($this->_parser, 'cdata');
- if (!xml_parse($this->_parser, $this->message)) {
- /* die(sprintf('XML error: %s at line %d',
- xml_error_string(xml_get_error_code($this->_parser)),
- xml_get_current_line_number($this->_parser))); */
- return false;
- }
- xml_parser_free($this->_parser);
- // Grab the error messages, if any
- if ($this->messageType == 'fault') {
- $this->faultCode = $this->params[0]['faultCode'];
- $this->faultString = $this->params[0]['faultString'];
- }
- return true;
- }
- function tag_open($parser, $tag, $attr) {
- $this->currentTag = $tag;
- switch($tag) {
- case 'methodCall':
- case 'methodResponse':
- case 'fault':
- $this->messageType = $tag;
- break;
- /* Deal with stacks of arrays and structs */
- case 'data': // data is to all intents and puposes more interesting than array
- $this->_arraystructstypes[] = 'array';
- $this->_arraystructs[] = array();
- break;
- case 'struct':
- $this->_arraystructstypes[] = 'struct';
- $this->_arraystructs[] = array();
- break;
- }
- }
- function cdata($parser, $cdata) {
- $this->_currentTagContents .= $cdata;
- }
- function tag_close($parser, $tag) {
- $valueFlag = false;
- switch($tag) {
- case 'int':
- case 'i4':
- $value = (int)trim($this->_currentTagContents);
- $this->_currentTagContents = '';
- $valueFlag = true;
- break;
- case 'double':
- $value = (double)trim($this->_currentTagContents);
- $this->_currentTagContents = '';
- $valueFlag = true;
- break;
- case 'string':
- $value = (string)trim($this->_currentTagContents);
- $this->_currentTagContents = '';
- $valueFlag = true;
- break;
- case 'dateTime.iso8601':
- $value = new IXR_Date(trim($this->_currentTagContents));
- // $value = $iso->getTimestamp();
- $this->_currentTagContents = '';
- $valueFlag = true;
- break;
- case 'value':
- // "If no type is indicated, the type is string."
- if (trim($this->_currentTagContents) != '') {
- $value = (string)$this->_currentTagContents;
- $this->_currentTagContents = '';
- $valueFlag = true;
- }
- break;
- case 'boolean':
- $value = (boolean)trim($this->_currentTagContents);
- $this->_currentTagContents = '';
- $valueFlag = true;
- break;
- case 'base64':
- $value = base64_decode($this->_currentTagContents);
- $this->_currentTagContents = '';
- $valueFlag = true;
- break;
- /* Deal with stacks of arrays and structs */
- case 'data':
- case 'struct':
- $value = array_pop($this->_arraystructs);
- array_pop($this->_arraystructstypes);
- $valueFlag = true;
- break;
- case 'member':
- array_pop($this->_currentStructName);
- break;
- case 'name':
- $this->_currentStructName[] = trim($this->_currentTagContents);
- $this->_currentTagContents = '';
- break;
- case 'methodName':
- $this->methodName = trim($this->_currentTagContents);
- $this->_currentTagContents = '';
- break;
- }
- if ($valueFlag) {
- /*
- if (!is_array($value) && !is_object($value)) {
- $value = trim($value);
- }
- */
- if (count($this->_arraystructs) > 0) {
- // Add value to struct or array
- if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
- // Add to struct
- $this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = $value;
- } else {
- // Add to array
- $this->_arraystructs[count($this->_arraystructs)-1][] = $value;
- }
- } else {
- // Just add as a paramater
- $this->params[] = $value;
- }
- }
- }
-}
-
-
-class IXR_Server {
- var $data;
- var $callbacks = array();
- var $message;
- var $capabilities;
- function IXR_Server($callbacks = false, $data = false) {
- $this->setCapabilities();
- if ($callbacks) {
- $this->callbacks = $callbacks;
- }
- $this->setCallbacks();
- $this->serve($data);
- }
- function serve($data = false) {
- if (!$data) {
- global $HTTP_RAW_POST_DATA;
- if (!$HTTP_RAW_POST_DATA) {
- die('XML-RPC server accepts POST requests only.');
- }
- $data = $HTTP_RAW_POST_DATA;
- }
- $this->message = new IXR_Message($data);
- if (!$this->message->parse()) {
- $this->error(-32700, 'parse error. not well formed');
- }
- if ($this->message->messageType != 'methodCall') {
- $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall');
- }
- $result = $this->call($this->message->methodName, $this->message->params);
- // Is the result an error?
- if (is_a($result, 'IXR_Error')) {
- $this->error($result);
- }
- // Encode the result
- $r = new IXR_Value($result);
- $resultxml = $r->getXml();
- // Create the XML
- $xml = <<<EOD
-<methodResponse>
- <params>
- <param>
- <value>
- $resultxml
- </value>
- </param>
- </params>
-</methodResponse>
-
-EOD;
- // Send it
- $this->output($xml);
- }
- function call($methodname, $args) {
- if (!$this->hasMethod($methodname)) {
- return new IXR_Error(-32601, 'server error. requested method '.$methodname.' does not exist.');
- }
- $method = $this->callbacks[$methodname];
- // Perform the callback and send the response
-
-# Removed for DokuWiki to have a more consistent interface
-# if (count($args) == 1) {
-# // If only one paramater just send that instead of the whole array
-# $args = $args[0];
-# }
-
-
-# Adjusted for DokuWiki to use call_user_func_array
-
- // Are we dealing with a function or a method?
- if (substr($method, 0, 5) == 'this:') {
- // It's a class method - check it exists
- $method = substr($method, 5);
- if (!method_exists($this, $method)) {
- return new IXR_Error(-32601, 'server error. requested class method "'.$method.'" does not exist.');
- }
- // Call the method
- #$result = $this->$method($args);
- $result = call_user_func_array(array(&$this,$method),$args);
- } else {
- // It's a function - does it exist?
- if (!function_exists($method)) {
- return new IXR_Error(-32601, 'server error. requested function "'.$method.'" does not exist.');
- }
- // Call the function
- #$result = $method($args);
- $result = call_user_func_array($method,$args);
- }
- return $result;
- }
-
- function error($error, $message = false) {
- // Accepts either an error object or an error code and message
- if ($message && !is_object($error)) {
- $error = new IXR_Error($error, $message);
- }
- $this->output($error->getXml());
- }
- function output($xml) {
- $xml = '<?xml version="1.0"?>'."\n".$xml;
- $length = strlen($xml);
- header('Connection: close');
- header('Content-Length: '.$length);
- header('Content-Type: text/xml');
- header('Date: '.date('r'));
- echo $xml;
- exit;
- }
- function hasMethod($method) {
- return in_array($method, array_keys($this->callbacks));
- }
- function setCapabilities() {
- // Initialises capabilities array
- $this->capabilities = array(
- 'xmlrpc' => array(
- 'specUrl' => 'http://www.xmlrpc.com/spec',
- 'specVersion' => 1
- ),
- 'faults_interop' => array(
- 'specUrl' => 'http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php',
- 'specVersion' => 20010516
- ),
- 'system.multicall' => array(
- 'specUrl' => 'http://www.xmlrpc.com/discuss/msgReader$1208',
- 'specVersion' => 1
- ),
- );
- }
- function getCapabilities() {
- return $this->capabilities;
- }
- function setCallbacks() {
- $this->callbacks['system.getCapabilities'] = 'this:getCapabilities';
- $this->callbacks['system.listMethods'] = 'this:listMethods';
- $this->callbacks['system.multicall'] = 'this:multiCall';
- }
- function listMethods() {
- // Returns a list of methods - uses array_reverse to ensure user defined
- // methods are listed before server defined methods
- return array_reverse(array_keys($this->callbacks));
- }
- function multiCall($methodcalls) {
- // See http://www.xmlrpc.com/discuss/msgReader$1208
- $return = array();
- foreach ($methodcalls as $call) {
- $method = $call['methodName'];
- $params = $call['params'];
- if ($method == 'system.multicall') {
- $result = new IXR_Error(-32600, 'Recursive calls to system.multicall are forbidden');
- } else {
- $result = $this->call($method, $params);
- }
- if (is_a($result, 'IXR_Error')) {
- $return[] = array(
- 'faultCode' => $result->code,
- 'faultString' => $result->message
- );
- } else {
- $return[] = array($result);
- }
- }
- return $return;
- }
-}
-
-class IXR_Request {
- var $method;
- var $args;
- var $xml;
- function IXR_Request($method, $args) {
- $this->method = $method;
- $this->args = $args;
- $this->xml = <<<EOD
-<?xml version="1.0"?>
-<methodCall>
-<methodName>{$this->method}</methodName>
-<params>
-
-EOD;
- foreach ($this->args as $arg) {
- $this->xml .= '<param><value>';
- $v = new IXR_Value($arg);
- $this->xml .= $v->getXml();
- $this->xml .= "</value></param>\n";
- }
- $this->xml .= '</params></methodCall>';
- }
- function getLength() {
- return strlen($this->xml);
- }
- function getXml() {
- return $this->xml;
- }
-}
-
-/**
- * Changed for DokuWiki to use DokuHTTPClient
- *
- * This should be compatible to the original class, but uses DokuWiki's
- * HTTP client library which will respect proxy settings
- *
- * Because the XMLRPC client is not used in DokuWiki currently this is completely
- * untested
- */
-class IXR_Client extends DokuHTTPClient {
- var $posturl = '';
- var $message = false;
- var $xmlerror = false;
-
- function IXR_Client($server, $path = false, $port = 80) {
- if (!$path) {
- // Assume we have been given a URL instead
- $this->posturl = $server;
- }else{
- $this->posturl = 'http://'.$server.':'.$port.$path;
- }
- }
-
- function query() {
- $args = func_get_args();
- $method = array_shift($args);
- $request = new IXR_Request($method, $args);
- $xml = $request->getXml();
-
- $this->$headers['Content-Type'] = 'text/xml';
- if(!$this->sendRequest($this->posturl,$xml,'RAW')){
- $this->xmlerror = new IXR_Error(-32300, 'transport error - '.$this->error);
- return false;
- }
-
- // Now parse what we've got back
- $this->message = new IXR_Message($this->resp_body);
- if (!$this->message->parse()) {
- // XML error
- $this->error = new IXR_Error(-32700, 'parse error. not well formed');
- return false;
- }
- // Is the message a fault?
- if ($this->message->messageType == 'fault') {
- $this->error = new IXR_Error($this->message->faultCode, $this->message->faultString);
- return false;
- }
- // Message must be OK
- return true;
- }
- function getResponse() {
- // methodResponses can only have one param - return that
- return $this->message->params[0];
- }
- function isError() {
- return (is_object($this->xmlerror));
- }
- function getErrorCode() {
- return $this->xmlerror->code;
- }
- function getErrorMessage() {
- return $this->xmlerror->message;
- }
-}
-
-
-class IXR_Error {
- var $code;
- var $message;
- function IXR_Error($code, $message) {
- $this->code = $code;
- $this->message = $message;
- }
- function getXml() {
- $xml = <<<EOD
-<methodResponse>
- <fault>
- <value>
- <struct>
- <member>
- <name>faultCode</name>
- <value><int>{$this->code}</int></value>
- </member>
- <member>
- <name>faultString</name>
- <value><string>{$this->message}</string></value>
- </member>
- </struct>
- </value>
- </fault>
-</methodResponse>
-
-EOD;
- return $xml;
- }
-}
-
-
-class IXR_Date {
- var $year;
- var $month;
- var $day;
- var $hour;
- var $minute;
- var $second;
- function IXR_Date($time) {
- // $time can be a PHP timestamp or an ISO one
- if (is_numeric($time)) {
- $this->parseTimestamp($time);
- } else {
- $this->parseIso($time);
- }
- }
- function parseTimestamp($timestamp) {
- $this->year = date('Y', $timestamp);
- $this->month = date('m', $timestamp);
- $this->day = date('d', $timestamp);
- $this->hour = date('H', $timestamp);
- $this->minute = date('i', $timestamp);
- $this->second = date('s', $timestamp);
- }
- function parseIso($iso) {
- $this->year = substr($iso, 0, 4);
- $this->month = substr($iso, 4, 2);
- $this->day = substr($iso, 6, 2);
- $this->hour = substr($iso, 9, 2);
- $this->minute = substr($iso, 12, 2);
- $this->second = substr($iso, 15, 2);
- }
- function getIso() {
- return $this->year.'-'.$this->month.'-'.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second;
- }
- function getXml() {
- return '<dateTime.iso8601>'.$this->getIso().'</dateTime.iso8601>';
- }
- function getTimestamp() {
- return mktime($this->hour, $this->minute, $this->second, $this->month, $this->day, $this->year);
- }
-}
-
-
-class IXR_Base64 {
- var $data;
- function IXR_Base64($data) {
- $this->data = $data;
- }
- function getXml() {
- return '<base64>'.base64_encode($this->data).'</base64>';
- }
-}
-
-
-class IXR_IntrospectionServer extends IXR_Server {
- var $signatures;
- var $help;
- function IXR_IntrospectionServer() {
- $this->setCallbacks();
- $this->setCapabilities();
- $this->capabilities['introspection'] = array(
- 'specUrl' => 'http://xmlrpc.usefulinc.com/doc/reserved.html',
- 'specVersion' => 1
- );
- $this->addCallback(
- 'system.methodSignature',
- 'this:methodSignature',
- array('array', 'string'),
- 'Returns an array describing the return type and required parameters of a method'
- );
- $this->addCallback(
- 'system.getCapabilities',
- 'this:getCapabilities',
- array('struct'),
- 'Returns a struct describing the XML-RPC specifications supported by this server'
- );
- $this->addCallback(
- 'system.listMethods',
- 'this:listMethods',
- array('array'),
- 'Returns an array of available methods on this server'
- );
- $this->addCallback(
- 'system.methodHelp',
- 'this:methodHelp',
- array('string', 'string'),
- 'Returns a documentation string for the specified method'
- );
- }
- function addCallback($method, $callback, $args, $help) {
- $this->callbacks[$method] = $callback;
- $this->signatures[$method] = $args;
- $this->help[$method] = $help;
- }
- function call($methodname, $args) {
- // Make sure it's in an array
- if ($args && !is_array($args)) {
- $args = array($args);
- }
- // Over-rides default call method, adds signature check
- if (!$this->hasMethod($methodname)) {
- return new IXR_Error(-32601, 'server error. requested method "'.$this->message->methodName.'" not specified.');
- }
- $method = $this->callbacks[$methodname];
- $signature = $this->signatures[$methodname];
- $returnType = array_shift($signature);
- // Check the number of arguments. Check only, if the minimum count of parameters is specified. More parameters are possible.
- // This is a hack to allow optional parameters...
- if (count($args) < count($signature)) {
- // print 'Num of args: '.count($args).' Num in signature: '.count($signature);
- return new IXR_Error(-32602, 'server error. wrong number of method parameters');
- }
- // Check the argument types
- $ok = true;
- $argsbackup = $args;
- for ($i = 0, $j = count($args); $i < $j; $i++) {
- $arg = array_shift($args);
- $type = array_shift($signature);
- switch ($type) {
- case 'int':
- case 'i4':
- if (is_array($arg) || !is_int($arg)) {
- $ok = false;
- }
- break;
- case 'base64':
- case 'string':
- if (!is_string($arg)) {
- $ok = false;
- }
- break;
- case 'boolean':
- if ($arg !== false && $arg !== true) {
- $ok = false;
- }
- break;
- case 'float':
- case 'double':
- if (!is_float($arg)) {
- $ok = false;
- }
- break;
- case 'date':
- case 'dateTime.iso8601':
- if (!is_a($arg, 'IXR_Date')) {
- $ok = false;
- }
- break;
- }
- if (!$ok) {
- return new IXR_Error(-32602, 'server error. invalid method parameters');
- }
- }
- // It passed the test - run the "real" method call
- return parent::call($methodname, $argsbackup);
- }
- function methodSignature($method) {
- if (!$this->hasMethod($method)) {
- return new IXR_Error(-32601, 'server error. requested method "'.$method.'" not specified.');
- }
- // We should be returning an array of types
- $types = $this->signatures[$method];
- $return = array();
- foreach ($types as $type) {
- switch ($type) {
- case 'string':
- $return[] = 'string';
- break;
- case 'int':
- case 'i4':
- $return[] = 42;
- break;
- case 'double':
- $return[] = 3.1415;
- break;
- case 'dateTime.iso8601':
- $return[] = new IXR_Date(time());
- break;
- case 'boolean':
- $return[] = true;
- break;
- case 'base64':
- $return[] = new IXR_Base64('base64');
- break;
- case 'array':
- $return[] = array('array');
- break;
- case 'struct':
- $return[] = array('struct' => 'struct');
- break;
- }
- }
- return $return;
- }
- function methodHelp($method) {
- return $this->help[$method];
- }
-}
-
-
-class IXR_ClientMulticall extends IXR_Client {
- var $calls = array();
- function IXR_ClientMulticall($server, $path = false, $port = 80) {
- parent::IXR_Client($server, $path, $port);
- //$this->useragent = 'The Incutio XML-RPC PHP Library (multicall client)';
- }
- function addCall() {
- $args = func_get_args();
- $methodName = array_shift($args);
- $struct = array(
- 'methodName' => $methodName,
- 'params' => $args
- );
- $this->calls[] = $struct;
- }
- function query() {
- // Prepare multicall, then call the parent::query() method
- return parent::query('system.multicall', $this->calls);
- }
-}
-
-?>
+<?php
+/**
+ * IXR - The Inutio XML-RPC Library - (c) Incutio Ltd 2002
+ *
+ * @version 1.61
+ * @author Simon Willison
+ * @date 11th July 2003
+ * @link http://scripts.incutio.com/xmlrpc/
+ * @link http://scripts.incutio.com/xmlrpc/manual.php
+ * @license Artistic License http://www.opensource.org/licenses/artistic-license.php
+ *
+ * Modified for DokuWiki
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+
+class IXR_Value {
+ var $data;
+ var $type;
+ function IXR_Value ($data, $type = false) {
+ $this->data = $data;
+ if (!$type) {
+ $type = $this->calculateType();
+ }
+ $this->type = $type;
+ if ($type == 'struct') {
+ /* Turn all the values in the array in to new IXR_Value objects */
+ foreach ($this->data as $key => $value) {
+ $this->data[$key] = new IXR_Value($value);
+ }
+ }
+ if ($type == 'array') {
+ for ($i = 0, $j = count($this->data); $i < $j; $i++) {
+ $this->data[$i] = new IXR_Value($this->data[$i]);
+ }
+ }
+ }
+ function calculateType() {
+ if ($this->data === true || $this->data === false) {
+ return 'boolean';
+ }
+ if (is_integer($this->data)) {
+ return 'int';
+ }
+ if (is_double($this->data)) {
+ return 'double';
+ }
+ // Deal with IXR object types base64 and date
+ if (is_object($this->data) && is_a($this->data, 'IXR_Date')) {
+ return 'date';
+ }
+ if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) {
+ return 'base64';
+ }
+ // If it is a normal PHP object convert it in to a struct
+ if (is_object($this->data)) {
+
+ $this->data = get_object_vars($this->data);
+ return 'struct';
+ }
+ if (!is_array($this->data)) {
+ return 'string';
+ }
+ /* We have an array - is it an array or a struct ? */
+ if ($this->isStruct($this->data)) {
+ return 'struct';
+ } else {
+ return 'array';
+ }
+ }
+ function getXml() {
+ /* Return XML for this value */
+ switch ($this->type) {
+ case 'boolean':
+ return '<boolean>'.(($this->data) ? '1' : '0').'</boolean>';
+ break;
+ case 'int':
+ return '<int>'.$this->data.'</int>';
+ break;
+ case 'double':
+ return '<double>'.$this->data.'</double>';
+ break;
+ case 'string':
+ return '<string>'.htmlspecialchars($this->data).'</string>';
+ break;
+ case 'array':
+ $return = '<array><data>'."\n";
+ foreach ($this->data as $item) {
+ $return .= ' <value>'.$item->getXml()."</value>\n";
+ }
+ $return .= '</data></array>';
+ return $return;
+ break;
+ case 'struct':
+ $return = '<struct>'."\n";
+ foreach ($this->data as $name => $value) {
+ $return .= " <member><name>$name</name><value>";
+ $return .= $value->getXml()."</value></member>\n";
+ }
+ $return .= '</struct>';
+ return $return;
+ break;
+ case 'date':
+ case 'base64':
+ return $this->data->getXml();
+ break;
+ }
+ return false;
+ }
+ function isStruct($array) {
+ /* Nasty function to check if an array is a struct or not */
+ $expected = 0;
+ foreach ($array as $key => $value) {
+ if ((string)$key != (string)$expected) {
+ return true;
+ }
+ $expected++;
+ }
+ return false;
+ }
+}
+
+
+class IXR_Message {
+ var $message;
+ var $messageType; // methodCall / methodResponse / fault
+ var $faultCode;
+ var $faultString;
+ var $methodName;
+ var $params;
+ // Current variable stacks
+ var $_arraystructs = array(); // The stack used to keep track of the current array/struct
+ var $_arraystructstypes = array(); // Stack keeping track of if things are structs or array
+ var $_currentStructName = array(); // A stack as well
+ var $_param;
+ var $_value;
+ var $_currentTag;
+ var $_currentTagContents;
+ // The XML parser
+ var $_parser;
+ function IXR_Message ($message) {
+ $this->message = $message;
+ }
+ function parse() {
+ // first remove the XML declaration
+ $this->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $this->message);
+ if (trim($this->message) == '') {
+ return false;
+ }
+ $this->_parser = xml_parser_create();
+ // Set XML parser to take the case of tags in to account
+ xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);
+ // Set XML parser callback functions
+ xml_set_object($this->_parser, $this);
+ xml_set_element_handler($this->_parser, 'tag_open', 'tag_close');
+ xml_set_character_data_handler($this->_parser, 'cdata');
+ if (!xml_parse($this->_parser, $this->message)) {
+ /* die(sprintf('XML error: %s at line %d',
+ xml_error_string(xml_get_error_code($this->_parser)),
+ xml_get_current_line_number($this->_parser))); */
+ return false;
+ }
+ xml_parser_free($this->_parser);
+ // Grab the error messages, if any
+ if ($this->messageType == 'fault') {
+ $this->faultCode = $this->params[0]['faultCode'];
+ $this->faultString = $this->params[0]['faultString'];
+ }
+ return true;
+ }
+ function tag_open($parser, $tag, $attr) {
+ $this->currentTag = $tag;
+ switch($tag) {
+ case 'methodCall':
+ case 'methodResponse':
+ case 'fault':
+ $this->messageType = $tag;
+ break;
+ /* Deal with stacks of arrays and structs */
+ case 'data': // data is to all intents and puposes more interesting than array
+ $this->_arraystructstypes[] = 'array';
+ $this->_arraystructs[] = array();
+ break;
+ case 'struct':
+ $this->_arraystructstypes[] = 'struct';
+ $this->_arraystructs[] = array();
+ break;
+ }
+ }
+ function cdata($parser, $cdata) {
+ $this->_currentTagContents .= $cdata;
+ }
+ function tag_close($parser, $tag) {
+ $valueFlag = false;
+ switch($tag) {
+ case 'int':
+ case 'i4':
+ $value = (int)trim($this->_currentTagContents);
+ $this->_currentTagContents = '';
+ $valueFlag = true;
+ break;
+ case 'double':
+ $value = (double)trim($this->_currentTagContents);
+ $this->_currentTagContents = '';
+ $valueFlag = true;
+ break;
+ case 'string':
+ $value = (string)trim($this->_currentTagContents);
+ $this->_currentTagContents = '';
+ $valueFlag = true;
+ break;
+ case 'dateTime.iso8601':
+ $value = new IXR_Date(trim($this->_currentTagContents));
+ // $value = $iso->getTimestamp();
+ $this->_currentTagContents = '';
+ $valueFlag = true;
+ break;
+ case 'value':
+ // "If no type is indicated, the type is string."
+ if (trim($this->_currentTagContents) != '') {
+ $value = (string)$this->_currentTagContents;
+ $this->_currentTagContents = '';
+ $valueFlag = true;
+ }
+ break;
+ case 'boolean':
+ $value = (boolean)trim($this->_currentTagContents);
+ $this->_currentTagContents = '';
+ $valueFlag = true;
+ break;
+ case 'base64':
+ $value = base64_decode($this->_currentTagContents);
+ $this->_currentTagContents = '';
+ $valueFlag = true;
+ break;
+ /* Deal with stacks of arrays and structs */
+ case 'data':
+ case 'struct':
+ $value = array_pop($this->_arraystructs);
+ array_pop($this->_arraystructstypes);
+ $valueFlag = true;
+ break;
+ case 'member':
+ array_pop($this->_currentStructName);
+ break;
+ case 'name':
+ $this->_currentStructName[] = trim($this->_currentTagContents);
+ $this->_currentTagContents = '';
+ break;
+ case 'methodName':
+ $this->methodName = trim($this->_currentTagContents);
+ $this->_currentTagContents = '';
+ break;
+ }
+ if ($valueFlag) {
+ /*
+ if (!is_array($value) && !is_object($value)) {
+ $value = trim($value);
+ }
+ */
+ if (count($this->_arraystructs) > 0) {
+ // Add value to struct or array
+ if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
+ // Add to struct
+ $this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = $value;
+ } else {
+ // Add to array
+ $this->_arraystructs[count($this->_arraystructs)-1][] = $value;
+ }
+ } else {
+ // Just add as a paramater
+ $this->params[] = $value;
+ }
+ }
+ }
+}
+
+
+class IXR_Server {
+ var $data;
+ var $callbacks = array();
+ var $message;
+ var $capabilities;
+ function IXR_Server($callbacks = false, $data = false) {
+ $this->setCapabilities();
+ if ($callbacks) {
+ $this->callbacks = $callbacks;
+ }
+ $this->setCallbacks();
+ $this->serve($data);
+ }
+ function serve($data = false) {
+ if (!$data) {
+ global $HTTP_RAW_POST_DATA;
+ if (!$HTTP_RAW_POST_DATA) {
+ die('XML-RPC server accepts POST requests only.');
+ }
+ $data = $HTTP_RAW_POST_DATA;
+ }
+ $this->message = new IXR_Message($data);
+ if (!$this->message->parse()) {
+ $this->error(-32700, 'parse error. not well formed');
+ }
+ if ($this->message->messageType != 'methodCall') {
+ $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall');
+ }
+ $result = $this->call($this->message->methodName, $this->message->params);
+ // Is the result an error?
+ if (is_a($result, 'IXR_Error')) {
+ $this->error($result);
+ }
+ // Encode the result
+ $r = new IXR_Value($result);
+ $resultxml = $r->getXml();
+ // Create the XML
+ $xml = <<<EOD
+<methodResponse>
+ <params>
+ <param>
+ <value>
+ $resultxml
+ </value>
+ </param>
+ </params>
+</methodResponse>
+
+EOD;
+ // Send it
+ $this->output($xml);
+ }
+ function call($methodname, $args) {
+ if (!$this->hasMethod($methodname)) {
+ return new IXR_Error(-32601, 'server error. requested method '.$methodname.' does not exist.');
+ }
+ $method = $this->callbacks[$methodname];
+ // Perform the callback and send the response
+
+# Removed for DokuWiki to have a more consistent interface
+# if (count($args) == 1) {
+# // If only one paramater just send that instead of the whole array
+# $args = $args[0];
+# }
+
+
+# Adjusted for DokuWiki to use call_user_func_array
+
+ // Are we dealing with a function or a method?
+ if (substr($method, 0, 5) == 'this:') {
+ // It's a class method - check it exists
+ $method = substr($method, 5);
+ if (!method_exists($this, $method)) {
+ return new IXR_Error(-32601, 'server error. requested class method "'.$method.'" does not exist.');
+ }
+ // Call the method
+ #$result = $this->$method($args);
+ $result = call_user_func_array(array(&$this,$method),$args);
+ } else {
+ // It's a function - does it exist?
+ if (!function_exists($method)) {
+ return new IXR_Error(-32601, 'server error. requested function "'.$method.'" does not exist.');
+ }
+ // Call the function
+ #$result = $method($args);
+ $result = call_user_func_array($method,$args);
+ }
+ return $result;
+ }
+
+ function error($error, $message = false) {
+ // Accepts either an error object or an error code and message
+ if ($message && !is_object($error)) {
+ $error = new IXR_Error($error, $message);
+ }
+ $this->output($error->getXml());
+ }
+ function output($xml) {
+ $xml = '<?xml version="1.0"?>'."\n".$xml;
+ $length = strlen($xml);
+ header('Connection: close');
+ header('Content-Length: '.$length);
+ header('Content-Type: text/xml');
+ header('Date: '.date('r'));
+ echo $xml;
+ exit;
+ }
+ function hasMethod($method) {
+ return in_array($method, array_keys($this->callbacks));
+ }
+ function setCapabilities() {
+ // Initialises capabilities array
+ $this->capabilities = array(
+ 'xmlrpc' => array(
+ 'specUrl' => 'http://www.xmlrpc.com/spec',
+ 'specVersion' => 1
+ ),
+ 'faults_interop' => array(
+ 'specUrl' => 'http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php',
+ 'specVersion' => 20010516
+ ),
+ 'system.multicall' => array(
+ 'specUrl' => 'http://www.xmlrpc.com/discuss/msgReader$1208',
+ 'specVersion' => 1
+ ),
+ );
+ }
+ function getCapabilities() {
+ return $this->capabilities;
+ }
+ function setCallbacks() {
+ $this->callbacks['system.getCapabilities'] = 'this:getCapabilities';
+ $this->callbacks['system.listMethods'] = 'this:listMethods';
+ $this->callbacks['system.multicall'] = 'this:multiCall';
+ }
+ function listMethods() {
+ // Returns a list of methods - uses array_reverse to ensure user defined
+ // methods are listed before server defined methods
+ return array_reverse(array_keys($this->callbacks));
+ }
+ function multiCall($methodcalls) {
+ // See http://www.xmlrpc.com/discuss/msgReader$1208
+ $return = array();
+ foreach ($methodcalls as $call) {
+ $method = $call['methodName'];
+ $params = $call['params'];
+ if ($method == 'system.multicall') {
+ $result = new IXR_Error(-32600, 'Recursive calls to system.multicall are forbidden');
+ } else {
+ $result = $this->call($method, $params);
+ }
+ if (is_a($result, 'IXR_Error')) {
+ $return[] = array(
+ 'faultCode' => $result->code,
+ 'faultString' => $result->message
+ );
+ } else {
+ $return[] = array($result);
+ }
+ }
+ return $return;
+ }
+}
+
+class IXR_Request {
+ var $method;
+ var $args;
+ var $xml;
+ function IXR_Request($method, $args) {
+ $this->method = $method;
+ $this->args = $args;
+ $this->xml = <<<EOD
+<?xml version="1.0"?>
+<methodCall>
+<methodName>{$this->method}</methodName>
+<params>
+
+EOD;
+ foreach ($this->args as $arg) {
+ $this->xml .= '<param><value>';
+ $v = new IXR_Value($arg);
+ $this->xml .= $v->getXml();
+ $this->xml .= "</value></param>\n";
+ }
+ $this->xml .= '</params></methodCall>';
+ }
+ function getLength() {
+ return strlen($this->xml);
+ }
+ function getXml() {
+ return $this->xml;
+ }
+}
+
+/**
+ * Changed for DokuWiki to use DokuHTTPClient
+ *
+ * This should be compatible to the original class, but uses DokuWiki's
+ * HTTP client library which will respect proxy settings
+ *
+ * Because the XMLRPC client is not used in DokuWiki currently this is completely
+ * untested
+ */
+class IXR_Client extends DokuHTTPClient {
+ var $posturl = '';
+ var $message = false;
+ var $xmlerror = false;
+
+ function IXR_Client($server, $path = false, $port = 80) {
+ $this->DokuHTTPClient();
+ if (!$path) {
+ // Assume we have been given a URL instead
+ $this->posturl = $server;
+ }else{
+ $this->posturl = 'http://'.$server.':'.$port.$path;
+ }
+ }
+
+ function query() {
+ $args = func_get_args();
+ $method = array_shift($args);
+ $request = new IXR_Request($method, $args);
+ $xml = $request->getXml();
+
+ $this->headers['Content-Type'] = 'text/xml';
+ if(!$this->sendRequest($this->posturl,$xml,'POST')){
+ $this->xmlerror = new IXR_Error(-32300, 'transport error - '.$this->error);
+ return false;
+ }
+
+ // Now parse what we've got back
+ $this->message = new IXR_Message($this->resp_body);
+ if (!$this->message->parse()) {
+ // XML error
+ $this->error = new IXR_Error(-32700, 'parse error. not well formed');
+ return false;
+ }
+ // Is the message a fault?
+ if ($this->message->messageType == 'fault') {
+ $this->error = new IXR_Error($this->message->faultCode, $this->message->faultString);
+ return false;
+ }
+ // Message must be OK
+ return true;
+ }
+ function getResponse() {
+ // methodResponses can only have one param - return that
+ return $this->message->params[0];
+ }
+ function isError() {
+ return (is_object($this->xmlerror));
+ }
+ function getErrorCode() {
+ return $this->xmlerror->code;
+ }
+ function getErrorMessage() {
+ return $this->xmlerror->message;
+ }
+}
+
+
+class IXR_Error {
+ var $code;
+ var $message;
+ function IXR_Error($code, $message) {
+ $this->code = $code;
+ $this->message = $message;
+ }
+ function getXml() {
+ $xml = <<<EOD
+<methodResponse>
+ <fault>
+ <value>
+ <struct>
+ <member>
+ <name>faultCode</name>
+ <value><int>{$this->code}</int></value>
+ </member>
+ <member>
+ <name>faultString</name>
+ <value><string>{$this->message}</string></value>
+ </member>
+ </struct>
+ </value>
+ </fault>
+</methodResponse>
+
+EOD;
+ return $xml;
+ }
+}
+
+
+class IXR_Date {
+ var $year;
+ var $month;
+ var $day;
+ var $hour;
+ var $minute;
+ var $second;
+ function IXR_Date($time) {
+ // $time can be a PHP timestamp or an ISO one
+ if (is_numeric($time)) {
+ $this->parseTimestamp($time);
+ } else {
+ $this->parseIso($time);
+ }
+ }
+ function parseTimestamp($timestamp) {
+ $this->year = date('Y', $timestamp);
+ $this->month = date('m', $timestamp);
+ $this->day = date('d', $timestamp);
+ $this->hour = date('H', $timestamp);
+ $this->minute = date('i', $timestamp);
+ $this->second = date('s', $timestamp);
+ }
+ function parseIso($iso) {
+ $this->year = substr($iso, 0, 4);
+ $this->month = substr($iso, 4, 2);
+ $this->day = substr($iso, 6, 2);
+ $this->hour = substr($iso, 9, 2);
+ $this->minute = substr($iso, 12, 2);
+ $this->second = substr($iso, 15, 2);
+ }
+ function getIso() {
+ return $this->year.'-'.$this->month.'-'.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second;
+ }
+ function getXml() {
+ return '<dateTime.iso8601>'.$this->getIso().'</dateTime.iso8601>';
+ }
+ function getTimestamp() {
+ return mktime($this->hour, $this->minute, $this->second, $this->month, $this->day, $this->year);
+ }
+}
+
+
+class IXR_Base64 {
+ var $data;
+ function IXR_Base64($data) {
+ $this->data = $data;
+ }
+ function getXml() {
+ return '<base64>'.base64_encode($this->data).'</base64>';
+ }
+}
+
+
+class IXR_IntrospectionServer extends IXR_Server {
+ var $signatures;
+ var $help;
+ function IXR_IntrospectionServer() {
+ $this->setCallbacks();
+ $this->setCapabilities();
+ $this->capabilities['introspection'] = array(
+ 'specUrl' => 'http://xmlrpc.usefulinc.com/doc/reserved.html',
+ 'specVersion' => 1
+ );
+ $this->addCallback(
+ 'system.methodSignature',
+ 'this:methodSignature',
+ array('array', 'string'),
+ 'Returns an array describing the return type and required parameters of a method'
+ );
+ $this->addCallback(
+ 'system.getCapabilities',
+ 'this:getCapabilities',
+ array('struct'),
+ 'Returns a struct describing the XML-RPC specifications supported by this server'
+ );
+ $this->addCallback(
+ 'system.listMethods',
+ 'this:listMethods',
+ array('array'),
+ 'Returns an array of available methods on this server'
+ );
+ $this->addCallback(
+ 'system.methodHelp',
+ 'this:methodHelp',
+ array('string', 'string'),
+ 'Returns a documentation string for the specified method'
+ );
+ }
+ function addCallback($method, $callback, $args, $help) {
+ $this->callbacks[$method] = $callback;
+ $this->signatures[$method] = $args;
+ $this->help[$method] = $help;
+ }
+ function call($methodname, $args) {
+ // Make sure it's in an array
+ if ($args && !is_array($args)) {
+ $args = array($args);
+ }
+ // Over-rides default call method, adds signature check
+ if (!$this->hasMethod($methodname)) {
+ return new IXR_Error(-32601, 'server error. requested method "'.$this->message->methodName.'" not specified.');
+ }
+ $method = $this->callbacks[$methodname];
+ $signature = $this->signatures[$methodname];
+ $returnType = array_shift($signature);
+ // Check the number of arguments. Check only, if the minimum count of parameters is specified. More parameters are possible.
+ // This is a hack to allow optional parameters...
+ if (count($args) < count($signature)) {
+ // print 'Num of args: '.count($args).' Num in signature: '.count($signature);
+ return new IXR_Error(-32602, 'server error. wrong number of method parameters');
+ }
+ // Check the argument types
+ $ok = true;
+ $argsbackup = $args;
+ for ($i = 0, $j = count($args); $i < $j; $i++) {
+ $arg = array_shift($args);
+ $type = array_shift($signature);
+ switch ($type) {
+ case 'int':
+ case 'i4':
+ if (is_array($arg) || !is_int($arg)) {
+ $ok = false;
+ }
+ break;
+ case 'base64':
+ case 'string':
+ if (!is_string($arg)) {
+ $ok = false;
+ }
+ break;
+ case 'boolean':
+ if ($arg !== false && $arg !== true) {
+ $ok = false;
+ }
+ break;
+ case 'float':
+ case 'double':
+ if (!is_float($arg)) {
+ $ok = false;
+ }
+ break;
+ case 'date':
+ case 'dateTime.iso8601':
+ if (!is_a($arg, 'IXR_Date')) {
+ $ok = false;
+ }
+ break;
+ }
+ if (!$ok) {
+ return new IXR_Error(-32602, 'server error. invalid method parameters');
+ }
+ }
+ // It passed the test - run the "real" method call
+ return parent::call($methodname, $argsbackup);
+ }
+ function methodSignature($method) {
+ if (!$this->hasMethod($method)) {
+ return new IXR_Error(-32601, 'server error. requested method "'.$method.'" not specified.');
+ }
+ // We should be returning an array of types
+ $types = $this->signatures[$method];
+ $return = array();
+ foreach ($types as $type) {
+ switch ($type) {
+ case 'string':
+ $return[] = 'string';
+ break;
+ case 'int':
+ case 'i4':
+ $return[] = 42;
+ break;
+ case 'double':
+ $return[] = 3.1415;
+ break;
+ case 'dateTime.iso8601':
+ $return[] = new IXR_Date(time());
+ break;
+ case 'boolean':
+ $return[] = true;
+ break;
+ case 'base64':
+ $return[] = new IXR_Base64('base64');
+ break;
+ case 'array':
+ $return[] = array('array');
+ break;
+ case 'struct':
+ $return[] = array('struct' => 'struct');
+ break;
+ }
+ }
+ return $return;
+ }
+ function methodHelp($method) {
+ return $this->help[$method];
+ }
+}
+
+
+class IXR_ClientMulticall extends IXR_Client {
+ var $calls = array();
+ function IXR_ClientMulticall($server, $path = false, $port = 80) {
+ parent::IXR_Client($server, $path, $port);
+ //$this->useragent = 'The Incutio XML-RPC PHP Library (multicall client)';
+ }
+ function addCall() {
+ $args = func_get_args();
+ $methodName = array_shift($args);
+ $struct = array(
+ 'methodName' => $methodName,
+ 'params' => $args
+ );
+ $this->calls[] = $struct;
+ }
+ function query() {
+ // Prepare multicall, then call the parent::query() method
+ return parent::query('system.multicall', $this->calls);
+ }
+}
+
+?>
Modified: site/trunk/www-root/wiki/inc/JSON.php
===================================================================
--- site/trunk/www-root/wiki/inc/JSON.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/JSON.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,625 +1,625 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Converts to and from JSON format.
- *
- * JSON (JavaScript Object Notation) is a lightweight data-interchange
- * format. It is easy for humans to read and write. It is easy for machines
- * to parse and generate. It is based on a subset of the JavaScript
- * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
- * This feature can also be found in Python. JSON is a text format that is
- * completely language independent but uses conventions that are familiar
- * to programmers of the C-family of languages, including C, C++, C#, Java,
- * JavaScript, Perl, TCL, and many others. These properties make JSON an
- * ideal data-interchange language.
- *
- * This package provides a simple encoder and decoder for JSON notation. It
- * is intended for use with client-side Javascript applications that make
- * use of HTTPRequest to perform server communication functions - data can
- * be encoded into JSON notation for use in a client-side javascript, or
- * decoded from incoming Javascript requests. JSON format is native to
- * Javascript, and can be directly eval()'ed with no further parsing
- * overhead
- *
- * All strings should be in ASCII or UTF-8 format!
- *
- * PHP versions 4 and 5
- *
- * LICENSE: Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met: Redistributions of source code must retain the
- * above copyright notice, this list of conditions and the following
- * disclaimer. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- * @category
- * @package
- * @author Michal Migurski <mike-json at teczno.com>
- * @author Matt Knapp <mdknapp[at]gmail[dot]com>
- * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
- * @copyright 2005 Michal Migurski
- * @license http://www.freebsd.org/copyright/freebsd-license.html
- * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
- */
-
-// for DokuWiki
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-require_once(DOKU_INC.'inc/utf8.php');
-
-/**
- * Marker constant for JSON::decode(), used to flag stack state
- */
-define('JSON_SLICE', 1);
-
-/**
- * Marker constant for JSON::decode(), used to flag stack state
- */
-define('JSON_IN_STR', 2);
-
-/**
- * Marker constant for JSON::decode(), used to flag stack state
- */
-define('JSON_IN_ARR', 4);
-
-/**
- * Marker constant for JSON::decode(), used to flag stack state
- */
-define('JSON_IN_OBJ', 8);
-
-/**
- * Marker constant for JSON::decode(), used to flag stack state
- */
-define('JSON_IN_CMT', 16);
-
-/**
- * Behavior switch for JSON::decode()
- */
-define('JSON_LOOSE_TYPE', 10);
-
-/**
- * Behavior switch for JSON::decode()
- */
-define('JSON_STRICT_TYPE', 11);
-
-/**
- * Converts to and from JSON format.
- *
- * @category
- * @package
- * @author Michal Migurski <mike-json at teczno.com>
- * @author Matt Knapp <mdknapp[at]gmail[dot]com>
- * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
- * @copyright 2005 Michal Migurski
- * @license http://www.php.net/license/3_0.txt PHP License 3.0
- * @version
- * @link
- * @see
- * @since
- * @deprecated
- */
-class JSON
-{
- /**
- * constructs a new JSON instance
- *
- * @param int $use object behavior: when encoding or decoding,
- * be loose or strict about object/array usage
- *
- * possible values:
- * JSON_STRICT_TYPE - strict typing, default
- * "{...}" syntax creates objects in decode.
- * JSON_LOOSE_TYPE - loose typing
- * "{...}" syntax creates associative arrays in decode.
- */
- function JSON($use=JSON_STRICT_TYPE)
- {
- $this->use = $use;
- }
-
- /**
- * encodes an arbitrary variable into JSON format
- *
- * @param mixed $var any number, boolean, string, array, or object to be encoded.
- * see argument 1 to JSON() above for array-parsing behavior.
- * if var is a strng, note that encode() always expects it
- * to be in ASCII or UTF-8 format!
- *
- * @return string JSON string representation of input var
- * @access public
- */
- function encode($var)
- {
- switch (gettype($var)) {
- case 'boolean':
- return $var ? 'true' : 'false';
-
- case 'NULL':
- return 'null';
-
- case 'integer':
- return sprintf('%d', $var);
-
- case 'double':
- case 'float':
- return sprintf('%f', $var);
-
- case 'string':
- // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
- $ascii = '';
- $strlen_var = strlen($var);
-
- /*
- * Iterate over every character in the string,
- * escaping with a slash or encoding to UTF-8 where necessary
- */
- for ($c = 0; $c < $strlen_var; ++$c) {
-
- $ord_var_c = ord($var{$c});
-
- switch ($ord_var_c) {
- case 0x08: $ascii .= '\b'; break;
- case 0x09: $ascii .= '\t'; break;
- case 0x0A: $ascii .= '\n'; break;
- case 0x0C: $ascii .= '\f'; break;
- case 0x0D: $ascii .= '\r'; break;
-
- case 0x22:
- case 0x2F:
- case 0x5C:
- // double quote, slash, slosh
- $ascii .= '\\'.$var{$c};
- break;
-
- case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
- // characters U-00000000 - U-0000007F (same as ASCII)
- $ascii .= $var{$c};
- break;
-
- case (($ord_var_c & 0xE0) == 0xC0):
- // characters U-00000080 - U-000007FF, mask 110XXXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c, ord($var{$c+1}));
- $c+=1;
- //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
- $utf16 = utf8_to_utf16be($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF0) == 0xE0):
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c+1}),
- ord($var{$c+2}));
- $c+=2;
- //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
- $utf16 = utf8_to_utf16be($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xF8) == 0xF0):
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c+1}),
- ord($var{$c+2}),
- ord($var{$c+3}));
- $c+=3;
- //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
- $utf16 = utf8_to_utf16be($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xFC) == 0xF8):
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c+1}),
- ord($var{$c+2}),
- ord($var{$c+3}),
- ord($var{$c+4}));
- $c+=4;
- //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
- $utf16 = utf8_to_utf16be($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
-
- case (($ord_var_c & 0xFE) == 0xFC):
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c,
- ord($var{$c+1}),
- ord($var{$c+2}),
- ord($var{$c+3}),
- ord($var{$c+4}),
- ord($var{$c+5}));
- $c+=5;
- //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
- $utf16 = utf8_to_utf16be($char);
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
- break;
- }
- }
-
- return '"'.$ascii.'"';
-
- case 'array':
- /*
- * As per JSON spec if any array key is not an integer
- * we must treat the the whole array as an object. We
- * also try to catch a sparsely populated associative
- * array with numeric keys here because some JS engines
- * will create an array with empty indexes up to
- * max_index which can cause memory issues and because
- * the keys, which may be relevant, will be remapped
- * otherwise.
- *
- * As per the ECMA and JSON specification an object may
- * have any string as a property. Unfortunately due to
- * a hole in the ECMA specification if the key is a
- * ECMA reserved word or starts with a digit the
- * parameter is only accessible using ECMAScript's
- * bracket notation.
- */
-
- // treat as a JSON object
- if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
- return sprintf('{%s}', join(',', array_map(array($this, 'name_value'),
- array_keys($var),
- array_values($var))));
- }
-
- // treat it like a regular array
- return sprintf('[%s]', join(',', array_map(array($this, 'encode'), $var)));
-
- case 'object':
- $vars = get_object_vars($var);
- return sprintf('{%s}', join(',', array_map(array($this, 'name_value'),
- array_keys($vars),
- array_values($vars))));
-
- default:
- return '';
- }
- }
-
- /**
- * encodes an arbitrary variable into JSON format, alias for encode()
- */
- function enc($var)
- {
- return $this->encode($var);
- }
-
- /** function name_value
- * array-walking function for use in generating JSON-formatted name-value pairs
- *
- * @param string $name name of key to use
- * @param mixed $value reference to an array element to be encoded
- *
- * @return string JSON-formatted name-value pair, like '"name":value'
- * @access private
- */
- function name_value($name, $value)
- {
- return (sprintf("%s:%s", $this->encode(strval($name)), $this->encode($value)));
- }
-
- /**
- * reduce a string by removing leading and trailing comments and whitespace
- *
- * @param $str string string value to strip of comments and whitespace
- *
- * @return string string value stripped of comments and whitespace
- * @access private
- */
- function reduce_string($str)
- {
- $str = preg_replace(array(
-
- // eliminate single line comments in '// ...' form
- '#^\s*//(.+)$#m',
-
- // eliminate multi-line comments in '/* ... */' form, at start of string
- '#^\s*/\*(.+)\*/#Us',
-
- // eliminate multi-line comments in '/* ... */' form, at end of string
- '#/\*(.+)\*/\s*$#Us'
-
- ), '', $str);
-
- // eliminate extraneous space
- return trim($str);
- }
-
- /**
- * decodes a JSON string into appropriate variable
- *
- * @param string $str JSON-formatted string
- *
- * @return mixed number, boolean, string, array, or object
- * corresponding to given JSON input string.
- * See argument 1 to JSON() above for object-output behavior.
- * Note that decode() always returns strings
- * in ASCII or UTF-8 format!
- * @access public
- */
- function decode($str)
- {
- $str = $this->reduce_string($str);
-
- switch (strtolower($str)) {
- case 'true':
- return true;
-
- case 'false':
- return false;
-
- case 'null':
- return null;
-
- default:
- if (is_numeric($str)) {
- // Lookie-loo, it's a number
-
- // This would work on its own, but I'm trying to be
- // good about returning integers where appropriate:
- // return (float)$str;
-
- // Return float or int, as appropriate
- return ((float)$str == (integer)$str)
- ? (integer)$str
- : (float)$str;
-
- } elseif (preg_match('/^("|\').+("|\')$/s', $str, $m) && $m[1] == $m[2]) {
- // STRINGS RETURNED IN UTF-8 FORMAT
- $delim = substr($str, 0, 1);
- $chrs = substr($str, 1, -1);
- $utf8 = '';
- $strlen_chrs = strlen($chrs);
-
- for ($c = 0; $c < $strlen_chrs; ++$c) {
-
- $substr_chrs_c_2 = substr($chrs, $c, 2);
- $ord_chrs_c = ord($chrs{$c});
-
- switch ($substr_chrs_c_2) {
- case '\b': $utf8 .= chr(0x08); $c+=1; break;
- case '\t': $utf8 .= chr(0x09); $c+=1; break;
- case '\n': $utf8 .= chr(0x0A); $c+=1; break;
- case '\f': $utf8 .= chr(0x0C); $c+=1; break;
- case '\r': $utf8 .= chr(0x0D); $c+=1; break;
-
- case '\\"':
- case '\\\'':
- case '\\\\':
- case '\\/':
- if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
- ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
- $utf8 .= $chrs{++$c};
- }
- break;
-
- default:
- if (preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6))) {
- // single, escaped unicode character
- $utf16 = chr(hexdec(substr($chrs, ($c+2), 2)))
- . chr(hexdec(substr($chrs, ($c+4), 2)));
- //$utf8 .= mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
- $utf8 .= utf16be_to_utf8($utf16);
- $c+=5;
-
- } elseif(($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F)) {
- $utf8 .= $chrs{$c};
-
- } elseif(($ord_chrs_c & 0xE0) == 0xC0) {
- // characters U-00000080 - U-000007FF, mask 110XXXXX
- //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 2); $c += 1;
-
- } elseif(($ord_chrs_c & 0xF0) == 0xE0) {
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 3); $c += 2;
-
- } elseif(($ord_chrs_c & 0xF8) == 0xF0) {
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 4); $c += 3;
-
- } elseif(($ord_chrs_c & 0xFC) == 0xF8) {
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 5); $c += 4;
-
- } elseif(($ord_chrs_c & 0xFE) == 0xFC) {
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $utf8 .= substr($chrs, $c, 6); $c += 5;
-
- }
- break;
-
- }
-
- }
-
- return $utf8;
-
- } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
- // array, or object notation
-
- if ($str{0} == '[') {
- $stk = array(JSON_IN_ARR);
- $arr = array();
- } else {
- if ($this->use == JSON_LOOSE_TYPE) {
- $stk = array(JSON_IN_OBJ);
- $obj = array();
- } else {
- $stk = array(JSON_IN_OBJ);
- $obj = new stdClass();
- }
- }
-
- array_push($stk, array('what' => JSON_SLICE,
- 'where' => 0,
- 'delim' => false));
-
- $chrs = substr($str, 1, -1);
- $chrs = $this->reduce_string($chrs);
-
- if ($chrs == '') {
- if (reset($stk) == JSON_IN_ARR) {
- return $arr;
-
- } else {
- return $obj;
-
- }
- }
-
- //print("\nparsing {$chrs}\n");
-
- $strlen_chrs = strlen($chrs);
-
- for ($c = 0; $c <= $strlen_chrs; ++$c) {
-
- $top = end($stk);
- $substr_chrs_c_2 = substr($chrs, $c, 2);
-
- if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == JSON_SLICE))) {
- // found a comma that is not inside a string, array, etc.,
- // OR we've reached the end of the character list
- $slice = substr($chrs, $top['where'], ($c - $top['where']));
- array_push($stk, array('what' => JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
- //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- if (reset($stk) == JSON_IN_ARR) {
- // we are in an array, so just push an element onto the stack
- array_push($arr, $this->decode($slice));
-
- } elseif (reset($stk) == JSON_IN_OBJ) {
- // we are in an object, so figure
- // out the property name and set an
- // element in an associative array,
- // for now
- if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
- // "name":value pair
- $key = $this->decode($parts[1]);
- $val = $this->decode($parts[2]);
-
- if ($this->use == JSON_LOOSE_TYPE) {
- $obj[$key] = $val;
- } else {
- $obj->$key = $val;
- }
- } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
- // name:value pair, where name is unquoted
- $key = $parts[1];
- $val = $this->decode($parts[2]);
-
- if ($this->use == JSON_LOOSE_TYPE) {
- $obj[$key] = $val;
- } else {
- $obj->$key = $val;
- }
- }
-
- }
-
- } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) &&
- in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
- // found a quote, and we are not inside a string
- array_push($stk, array('what' => JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
- //print("Found start of string at {$c}\n");
-
- } elseif (($chrs{$c} == $top['delim']) &&
- ($top['what'] == JSON_IN_STR) &&
- (($chrs{$c - 1} != "\\") ||
- ($chrs{$c - 1} == "\\" && $chrs{$c - 2} == "\\"))) {
- // found a quote, we're in a string, and it's not escaped
- array_pop($stk);
- //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
-
- } elseif (($chrs{$c} == '[') &&
- in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
- // found a left-bracket, and we are in an array, object, or slice
- array_push($stk, array('what' => JSON_IN_ARR, 'where' => $c, 'delim' => false));
- //print("Found start of array at {$c}\n");
-
- } elseif (($chrs{$c} == ']') && ($top['what'] == JSON_IN_ARR)) {
- // found a right-bracket, and we're in an array
- array_pop($stk);
- //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- } elseif (($chrs{$c} == '{') &&
- in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
- // found a left-brace, and we are in an array, object, or slice
- array_push($stk, array('what' => JSON_IN_OBJ, 'where' => $c, 'delim' => false));
- //print("Found start of object at {$c}\n");
-
- } elseif (($chrs{$c} == '}') && ($top['what'] == JSON_IN_OBJ)) {
- // found a right-brace, and we're in an object
- array_pop($stk);
- //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- } elseif (($substr_chrs_c_2 == '/*') &&
- in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
- // found a comment start, and we are in an array, object, or slice
- array_push($stk, array('what' => JSON_IN_CMT, 'where' => $c, 'delim' => false));
- $c++;
- //print("Found start of comment at {$c}\n");
-
- } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == JSON_IN_CMT)) {
- // found a comment end, and we're in one now
- array_pop($stk);
- $c++;
-
- for ($i = $top['where']; $i <= $c; ++$i)
- $chrs = substr_replace($chrs, ' ', $i, 1);
-
- //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
-
- }
-
- }
-
- if (reset($stk) == JSON_IN_ARR) {
- return $arr;
-
- } elseif (reset($stk) == JSON_IN_OBJ) {
- return $obj;
-
- }
-
- }
- }
- }
-
- /**
- * decodes a JSON string into appropriate variable; alias for decode()
- */
- function dec($var)
- {
- return $this->decode($var);
- }
-
-}
-
-?>
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package
+ * @author Michal Migurski <mike-json at teczno.com>
+ * @author Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright 2005 Michal Migurski
+ * @license http://www.freebsd.org/copyright/freebsd-license.html
+ * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+// for DokuWiki
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+require_once(DOKU_INC.'inc/utf8.php');
+
+/**
+ * Marker constant for JSON::decode(), used to flag stack state
+ */
+define('JSON_SLICE', 1);
+
+/**
+ * Marker constant for JSON::decode(), used to flag stack state
+ */
+define('JSON_IN_STR', 2);
+
+/**
+ * Marker constant for JSON::decode(), used to flag stack state
+ */
+define('JSON_IN_ARR', 4);
+
+/**
+ * Marker constant for JSON::decode(), used to flag stack state
+ */
+define('JSON_IN_OBJ', 8);
+
+/**
+ * Marker constant for JSON::decode(), used to flag stack state
+ */
+define('JSON_IN_CMT', 16);
+
+/**
+ * Behavior switch for JSON::decode()
+ */
+define('JSON_LOOSE_TYPE', 10);
+
+/**
+ * Behavior switch for JSON::decode()
+ */
+define('JSON_STRICT_TYPE', 11);
+
+/**
+ * Converts to and from JSON format.
+ *
+ * @category
+ * @package
+ * @author Michal Migurski <mike-json at teczno.com>
+ * @author Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @copyright 2005 Michal Migurski
+ * @license http://www.php.net/license/3_0.txt PHP License 3.0
+ * @version
+ * @link
+ * @see
+ * @since
+ * @deprecated
+ */
+class JSON
+{
+ /**
+ * constructs a new JSON instance
+ *
+ * @param int $use object behavior: when encoding or decoding,
+ * be loose or strict about object/array usage
+ *
+ * possible values:
+ * JSON_STRICT_TYPE - strict typing, default
+ * "{...}" syntax creates objects in decode.
+ * JSON_LOOSE_TYPE - loose typing
+ * "{...}" syntax creates associative arrays in decode.
+ */
+ function JSON($use=JSON_STRICT_TYPE)
+ {
+ $this->use = $use;
+ }
+
+ /**
+ * encodes an arbitrary variable into JSON format
+ *
+ * @param mixed $var any number, boolean, string, array, or object to be encoded.
+ * see argument 1 to JSON() above for array-parsing behavior.
+ * if var is a strng, note that encode() always expects it
+ * to be in ASCII or UTF-8 format!
+ *
+ * @return string JSON string representation of input var
+ * @access public
+ */
+ function encode($var)
+ {
+ switch (gettype($var)) {
+ case 'boolean':
+ return $var ? 'true' : 'false';
+
+ case 'NULL':
+ return 'null';
+
+ case 'integer':
+ return sprintf('%d', $var);
+
+ case 'double':
+ case 'float':
+ return sprintf('%f', $var);
+
+ case 'string':
+ // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+ $ascii = '';
+ $strlen_var = strlen($var);
+
+ /*
+ * Iterate over every character in the string,
+ * escaping with a slash or encoding to UTF-8 where necessary
+ */
+ for ($c = 0; $c < $strlen_var; ++$c) {
+
+ $ord_var_c = ord($var{$c});
+
+ switch ($ord_var_c) {
+ case 0x08: $ascii .= '\b'; break;
+ case 0x09: $ascii .= '\t'; break;
+ case 0x0A: $ascii .= '\n'; break;
+ case 0x0C: $ascii .= '\f'; break;
+ case 0x0D: $ascii .= '\r'; break;
+
+ case 0x22:
+ case 0x2F:
+ case 0x5C:
+ // double quote, slash, slosh
+ $ascii .= '\\'.$var{$c};
+ break;
+
+ case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+ // characters U-00000000 - U-0000007F (same as ASCII)
+ $ascii .= $var{$c};
+ break;
+
+ case (($ord_var_c & 0xE0) == 0xC0):
+ // characters U-00000080 - U-000007FF, mask 110XXXXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c, ord($var{$c+1}));
+ $c+=1;
+ //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
+ $utf16 = utf8_to_utf16be($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xF0) == 0xE0):
+ // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c+1}),
+ ord($var{$c+2}));
+ $c+=2;
+ //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
+ $utf16 = utf8_to_utf16be($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xF8) == 0xF0):
+ // characters U-00010000 - U-001FFFFF, mask 11110XXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c+1}),
+ ord($var{$c+2}),
+ ord($var{$c+3}));
+ $c+=3;
+ //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
+ $utf16 = utf8_to_utf16be($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xFC) == 0xF8):
+ // characters U-00200000 - U-03FFFFFF, mask 111110XX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c+1}),
+ ord($var{$c+2}),
+ ord($var{$c+3}),
+ ord($var{$c+4}));
+ $c+=4;
+ //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
+ $utf16 = utf8_to_utf16be($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xFE) == 0xFC):
+ // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c+1}),
+ ord($var{$c+2}),
+ ord($var{$c+3}),
+ ord($var{$c+4}),
+ ord($var{$c+5}));
+ $c+=5;
+ //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8');
+ $utf16 = utf8_to_utf16be($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+ }
+ }
+
+ return '"'.$ascii.'"';
+
+ case 'array':
+ /*
+ * As per JSON spec if any array key is not an integer
+ * we must treat the the whole array as an object. We
+ * also try to catch a sparsely populated associative
+ * array with numeric keys here because some JS engines
+ * will create an array with empty indexes up to
+ * max_index which can cause memory issues and because
+ * the keys, which may be relevant, will be remapped
+ * otherwise.
+ *
+ * As per the ECMA and JSON specification an object may
+ * have any string as a property. Unfortunately due to
+ * a hole in the ECMA specification if the key is a
+ * ECMA reserved word or starts with a digit the
+ * parameter is only accessible using ECMAScript's
+ * bracket notation.
+ */
+
+ // treat as a JSON object
+ if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+ return sprintf('{%s}', join(',', array_map(array($this, 'name_value'),
+ array_keys($var),
+ array_values($var))));
+ }
+
+ // treat it like a regular array
+ return sprintf('[%s]', join(',', array_map(array($this, 'encode'), $var)));
+
+ case 'object':
+ $vars = get_object_vars($var);
+ return sprintf('{%s}', join(',', array_map(array($this, 'name_value'),
+ array_keys($vars),
+ array_values($vars))));
+
+ default:
+ return '';
+ }
+ }
+
+ /**
+ * encodes an arbitrary variable into JSON format, alias for encode()
+ */
+ function enc($var)
+ {
+ return $this->encode($var);
+ }
+
+ /** function name_value
+ * array-walking function for use in generating JSON-formatted name-value pairs
+ *
+ * @param string $name name of key to use
+ * @param mixed $value reference to an array element to be encoded
+ *
+ * @return string JSON-formatted name-value pair, like '"name":value'
+ * @access private
+ */
+ function name_value($name, $value)
+ {
+ return (sprintf("%s:%s", $this->encode(strval($name)), $this->encode($value)));
+ }
+
+ /**
+ * reduce a string by removing leading and trailing comments and whitespace
+ *
+ * @param $str string string value to strip of comments and whitespace
+ *
+ * @return string string value stripped of comments and whitespace
+ * @access private
+ */
+ function reduce_string($str)
+ {
+ $str = preg_replace(array(
+
+ // eliminate single line comments in '// ...' form
+ '#^\s*//(.+)$#m',
+
+ // eliminate multi-line comments in '/* ... */' form, at start of string
+ '#^\s*/\*(.+)\*/#Us',
+
+ // eliminate multi-line comments in '/* ... */' form, at end of string
+ '#/\*(.+)\*/\s*$#Us'
+
+ ), '', $str);
+
+ // eliminate extraneous space
+ return trim($str);
+ }
+
+ /**
+ * decodes a JSON string into appropriate variable
+ *
+ * @param string $str JSON-formatted string
+ *
+ * @return mixed number, boolean, string, array, or object
+ * corresponding to given JSON input string.
+ * See argument 1 to JSON() above for object-output behavior.
+ * Note that decode() always returns strings
+ * in ASCII or UTF-8 format!
+ * @access public
+ */
+ function decode($str)
+ {
+ $str = $this->reduce_string($str);
+
+ switch (strtolower($str)) {
+ case 'true':
+ return true;
+
+ case 'false':
+ return false;
+
+ case 'null':
+ return null;
+
+ default:
+ if (is_numeric($str)) {
+ // Lookie-loo, it's a number
+
+ // This would work on its own, but I'm trying to be
+ // good about returning integers where appropriate:
+ // return (float)$str;
+
+ // Return float or int, as appropriate
+ return ((float)$str == (integer)$str)
+ ? (integer)$str
+ : (float)$str;
+
+ } elseif (preg_match('/^("|\').+("|\')$/s', $str, $m) && $m[1] == $m[2]) {
+ // STRINGS RETURNED IN UTF-8 FORMAT
+ $delim = substr($str, 0, 1);
+ $chrs = substr($str, 1, -1);
+ $utf8 = '';
+ $strlen_chrs = strlen($chrs);
+
+ for ($c = 0; $c < $strlen_chrs; ++$c) {
+
+ $substr_chrs_c_2 = substr($chrs, $c, 2);
+ $ord_chrs_c = ord($chrs{$c});
+
+ switch ($substr_chrs_c_2) {
+ case '\b': $utf8 .= chr(0x08); $c+=1; break;
+ case '\t': $utf8 .= chr(0x09); $c+=1; break;
+ case '\n': $utf8 .= chr(0x0A); $c+=1; break;
+ case '\f': $utf8 .= chr(0x0C); $c+=1; break;
+ case '\r': $utf8 .= chr(0x0D); $c+=1; break;
+
+ case '\\"':
+ case '\\\'':
+ case '\\\\':
+ case '\\/':
+ if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
+ ($delim == "'" && $substr_chrs_c_2 != '\\"')) {
+ $utf8 .= $chrs{++$c};
+ }
+ break;
+
+ default:
+ if (preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6))) {
+ // single, escaped unicode character
+ $utf16 = chr(hexdec(substr($chrs, ($c+2), 2)))
+ . chr(hexdec(substr($chrs, ($c+4), 2)));
+ //$utf8 .= mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
+ $utf8 .= utf16be_to_utf8($utf16);
+ $c+=5;
+
+ } elseif(($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F)) {
+ $utf8 .= $chrs{$c};
+
+ } elseif(($ord_chrs_c & 0xE0) == 0xC0) {
+ // characters U-00000080 - U-000007FF, mask 110XXXXX
+ //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $utf8 .= substr($chrs, $c, 2); $c += 1;
+
+ } elseif(($ord_chrs_c & 0xF0) == 0xE0) {
+ // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $utf8 .= substr($chrs, $c, 3); $c += 2;
+
+ } elseif(($ord_chrs_c & 0xF8) == 0xF0) {
+ // characters U-00010000 - U-001FFFFF, mask 11110XXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $utf8 .= substr($chrs, $c, 4); $c += 3;
+
+ } elseif(($ord_chrs_c & 0xFC) == 0xF8) {
+ // characters U-00200000 - U-03FFFFFF, mask 111110XX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $utf8 .= substr($chrs, $c, 5); $c += 4;
+
+ } elseif(($ord_chrs_c & 0xFE) == 0xFC) {
+ // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $utf8 .= substr($chrs, $c, 6); $c += 5;
+
+ }
+ break;
+
+ }
+
+ }
+
+ return $utf8;
+
+ } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
+ // array, or object notation
+
+ if ($str{0} == '[') {
+ $stk = array(JSON_IN_ARR);
+ $arr = array();
+ } else {
+ if ($this->use == JSON_LOOSE_TYPE) {
+ $stk = array(JSON_IN_OBJ);
+ $obj = array();
+ } else {
+ $stk = array(JSON_IN_OBJ);
+ $obj = new stdClass();
+ }
+ }
+
+ array_push($stk, array('what' => JSON_SLICE,
+ 'where' => 0,
+ 'delim' => false));
+
+ $chrs = substr($str, 1, -1);
+ $chrs = $this->reduce_string($chrs);
+
+ if ($chrs == '') {
+ if (reset($stk) == JSON_IN_ARR) {
+ return $arr;
+
+ } else {
+ return $obj;
+
+ }
+ }
+
+ //print("\nparsing {$chrs}\n");
+
+ $strlen_chrs = strlen($chrs);
+
+ for ($c = 0; $c <= $strlen_chrs; ++$c) {
+
+ $top = end($stk);
+ $substr_chrs_c_2 = substr($chrs, $c, 2);
+
+ if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == JSON_SLICE))) {
+ // found a comma that is not inside a string, array, etc.,
+ // OR we've reached the end of the character list
+ $slice = substr($chrs, $top['where'], ($c - $top['where']));
+ array_push($stk, array('what' => JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
+ //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+ if (reset($stk) == JSON_IN_ARR) {
+ // we are in an array, so just push an element onto the stack
+ array_push($arr, $this->decode($slice));
+
+ } elseif (reset($stk) == JSON_IN_OBJ) {
+ // we are in an object, so figure
+ // out the property name and set an
+ // element in an associative array,
+ // for now
+ if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+ // "name":value pair
+ $key = $this->decode($parts[1]);
+ $val = $this->decode($parts[2]);
+
+ if ($this->use == JSON_LOOSE_TYPE) {
+ $obj[$key] = $val;
+ } else {
+ $obj->$key = $val;
+ }
+ } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
+ // name:value pair, where name is unquoted
+ $key = $parts[1];
+ $val = $this->decode($parts[2]);
+
+ if ($this->use == JSON_LOOSE_TYPE) {
+ $obj[$key] = $val;
+ } else {
+ $obj->$key = $val;
+ }
+ }
+
+ }
+
+ } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) &&
+ in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
+ // found a quote, and we are not inside a string
+ array_push($stk, array('what' => JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+ //print("Found start of string at {$c}\n");
+
+ } elseif (($chrs{$c} == $top['delim']) &&
+ ($top['what'] == JSON_IN_STR) &&
+ (($chrs{$c - 1} != "\\") ||
+ ($chrs{$c - 1} == "\\" && $chrs{$c - 2} == "\\"))) {
+ // found a quote, we're in a string, and it's not escaped
+ array_pop($stk);
+ //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
+
+ } elseif (($chrs{$c} == '[') &&
+ in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
+ // found a left-bracket, and we are in an array, object, or slice
+ array_push($stk, array('what' => JSON_IN_ARR, 'where' => $c, 'delim' => false));
+ //print("Found start of array at {$c}\n");
+
+ } elseif (($chrs{$c} == ']') && ($top['what'] == JSON_IN_ARR)) {
+ // found a right-bracket, and we're in an array
+ array_pop($stk);
+ //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+ } elseif (($chrs{$c} == '{') &&
+ in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
+ // found a left-brace, and we are in an array, object, or slice
+ array_push($stk, array('what' => JSON_IN_OBJ, 'where' => $c, 'delim' => false));
+ //print("Found start of object at {$c}\n");
+
+ } elseif (($chrs{$c} == '}') && ($top['what'] == JSON_IN_OBJ)) {
+ // found a right-brace, and we're in an object
+ array_pop($stk);
+ //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+ } elseif (($substr_chrs_c_2 == '/*') &&
+ in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) {
+ // found a comment start, and we are in an array, object, or slice
+ array_push($stk, array('what' => JSON_IN_CMT, 'where' => $c, 'delim' => false));
+ $c++;
+ //print("Found start of comment at {$c}\n");
+
+ } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == JSON_IN_CMT)) {
+ // found a comment end, and we're in one now
+ array_pop($stk);
+ $c++;
+
+ for ($i = $top['where']; $i <= $c; ++$i)
+ $chrs = substr_replace($chrs, ' ', $i, 1);
+
+ //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
+
+ }
+
+ }
+
+ if (reset($stk) == JSON_IN_ARR) {
+ return $arr;
+
+ } elseif (reset($stk) == JSON_IN_OBJ) {
+ return $obj;
+
+ }
+
+ }
+ }
+ }
+
+ /**
+ * decodes a JSON string into appropriate variable; alias for decode()
+ */
+ function dec($var)
+ {
+ return $this->decode($var);
+ }
+
+}
+
+?>
Modified: site/trunk/www-root/wiki/inc/JpegMeta.php
===================================================================
--- site/trunk/www-root/wiki/inc/JpegMeta.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/JpegMeta.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2982 +1,2982 @@
-<?php
-/**
- * JPEG metadata reader/writer
- *
- * @license PHP license 2.0 (http://www.php.net/license/2_02.txt)
- * @link http://www.zonageek.com/software/php/jpeg/index.php
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- * @todo Add support for Maker Notes, Extend for GIF and PNG metadata
- */
-
-// This class is a modified and enhanced version of the JPEG class by
-// Sebastian Delmont. Original Copyright notice follows:
-//
-// +----------------------------------------------------------------------+
-// | PHP version 4.0 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.0 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license at php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Authors: Sebastian Delmont <sdelmont at zonageek.com> |
-// +----------------------------------------------------------------------+
-
-class JpegMeta
-{
- var $_fileName;
- var $_fp = null;
- var $_type = 'unknown';
-
- var $_markers;
- var $_info;
-
-
- /**
- * Constructor
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function JpegMeta($fileName)
- {
-
- $this->_fileName = $fileName;
-
- $this->_fp = null;
- $this->_type = 'unknown';
-
- unset($this->_info);
- unset($this->_markers);
- }
-
- /**
- * Returns all gathered info as multidim array
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function & getRawInfo()
- {
- $this->_parseAll();
-
- if ($this->_markers == null) {
- return false;
- }
-
- return $this->_info;
- }
-
- /**
- * Returns basic image info
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function & getBasicInfo()
- {
- $this->_parseAll();
-
- $info = array();
-
- if ($this->_markers == null) {
- return false;
- }
-
- $info['Name'] = $this->_info['file']['Name'];
- if (isset($this->_info['file']['Url'])) {
- $info['Url'] = $this->_info['file']['Url'];
- $info['NiceSize'] = "???KB";
- }
- else {
- $info['Size'] = $this->_info['file']['Size'];
- $info['NiceSize'] = $this->_info['file']['NiceSize'];
- }
-
- if (@isset($this->_info['sof']['Format'])) {
- $info['Format'] = $this->_info['sof']['Format'] . " JPEG";
- }
- else {
- $info['Format'] = $this->_info['sof']['Format'] . " JPEG";
- }
-
- if (@isset($this->_info['sof']['ColorChannels'])) {
- $info['ColorMode'] = ($this->_info['sof']['ColorChannels'] > 1) ? "Color" : "B&W";
- }
-
- $info['Width'] = $this->getWidth();
- $info['Height'] = $this->getHeight();
- $info['DimStr'] = $this->getDimStr();
-
- $dates = $this->getDates();
-
- $info['DateTime'] = $dates['EarliestTime'];
- $info['DateTimeStr'] = $dates['EarliestTimeStr'];
-
- $info['HasThumbnail'] = $this->hasThumbnail();
-
- return $info;
- }
-
-
- /**
- * Convinience function to access nearly all available Data
- * through one function
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function getField($fields)
- {
- if(!is_array($fields)) $fields = array($fields);
- $info = false;
- foreach($fields as $field){
- if(strtolower(substr($field,0,5)) == 'iptc.'){
- $info = $this->getIPTCField(substr($field,5));
- }elseif(strtolower(substr($field,0,5)) == 'exif.'){
- $info = $this->getExifField(substr($field,5));
- }elseif(strtolower(substr($field,0,5)) == 'file.'){
- $info = $this->getFileField(substr($field,5));
- }elseif(strtolower(substr($field,0,5)) == 'date.'){
- $info = $this->getDateField(substr($field,5));
- }elseif(strtolower($field) == 'simple.camera'){
- $info = $this->getCamera();
- }elseif(strtolower($field) == 'simple.raw'){
- return $this->getRawInfo();
- }elseif(strtolower($field) == 'simple.title'){
- $info = $this->getTitle();
- }elseif(strtolower($field) == 'simple.shutterspeed'){
- $info = $this->getShutterSpeed();
- }else{
- $info = $this->getExifField($field);
- }
- if($info != false) break;
- }
-
- if($info === false) $info = $alt;
- if(is_array($info)){
- if(isset($info['val'])){
- $info = $info['val'];
- }else{
- $info = join(', ',$info);
- }
- }
- return trim($info);
- }
-
- /**
- * Convinience function to set nearly all available Data
- * through one function
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function setField($field, $value)
- {
- if(strtolower(substr($field,0,5)) == 'iptc.'){
- return $this->setIPTCField(substr($field,5),$value);
- }elseif(strtolower(substr($field,0,5)) == 'exif.'){
- return $this->setExifField(substr($field,5),$value);
- }else{
- return $this->setExifField($field,$value);
- }
- }
-
- /**
- * Convinience function to delete nearly all available Data
- * through one function
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function deleteField($field)
- {
- if(strtolower(substr($field,0,5)) == 'iptc.'){
- return $this->deleteIPTCField(substr($field,5));
- }elseif(strtolower(substr($field,0,5)) == 'exif.'){
- return $this->deleteExifField(substr($field,5));
- }else{
- return $this->deleteExifField($field);
- }
- }
-
- /**
- * Return a date field
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function getDateField($field)
- {
- if (!isset($this->_info['dates'])) {
- $this->_info['dates'] = $this->getDates();
- }
-
- if (isset($this->_info['dates'][$field])) {
- return $this->_info['dates'][$field];
- }
-
- return false;
- }
-
- /**
- * Return a file info field
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function getFileField($field)
- {
- if (!isset($this->_info['file'])) {
- $this->_parseFileInfo();
- }
-
- if (isset($this->_info['file'][$field])) {
- return $this->_info['file'][$field];
- }
-
- return false;
- }
-
- /**
- * Return the camera info (Maker and Model)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @todo handle makernotes
- */
- function getCamera(){
- $make = $this->getField(array('Exif.Make','Exif.TIFFMake'));
- $model = $this->getField(array('Exif.Model','Exif.TIFFModel'));
- $cam = trim("$make $model");
- if(empty($cam)) return false;
- return $cam;
- }
-
- /**
- * Return shutter speed as a ratio
- *
- * @author Joe Lapp <joe.lapp at pobox.com>
- */
- function getShutterSpeed()
- {
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
- if(!isset($this->_info['exif']['ExposureTime'])){
- return '';
- }
-
- $field = $this->_info['exif']['ExposureTime'];
- if($field['den'] == 1) return $field['num'];
- return $field['num'].'/'.$field['den'];
- }
-
- /**
- * Return an EXIF field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function getExifField($field)
- {
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['exif'][$field])) {
- return $this->_info['exif'][$field];
- }
-
- return false;
- }
-
- /**
- * Return an Adobe Field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function getAdobeField($field)
- {
- if (!isset($this->_info['adobe'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['adobe'][$field])) {
- return $this->_info['adobe'][$field];
- }
-
- return false;
- }
-
- /**
- * Return an IPTC field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function getIPTCField($field)
- {
- if (!isset($this->_info['iptc'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['iptc'][$field])) {
- return $this->_info['iptc'][$field];
- }
-
- return false;
- }
-
- /**
- * Set an EXIF field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- * @author Joe Lapp <joe.lapp at pobox.com>
- */
- function setExifField($field, $value)
- {
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if ($this->_info['exif'] == false) {
- $this->_info['exif'] = array();
- }
-
- // make sure datetimes are in correct format
- if(strlen($field) >= 8 && strtolower(substr($field, 0, 8)) == 'datetime') {
- if(strlen($value) < 8 || $value{4} != ':' || $value{7} != ':') {
- $value = date('Y:m:d H:i:s', strtotime($value));
- }
- }
-
- $this->_info['exif'][$field] = $value;
-
- return true;
- }
-
- /**
- * Set an Adobe Field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function setAdobeField($field, $value)
- {
- if (!isset($this->_info['adobe'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if ($this->_info['adobe'] == false) {
- $this->_info['adobe'] = array();
- }
-
- $this->_info['adobe'][$field] = $value;
-
- return true;
- }
-
- /**
- * Calculates the multiplier needed to resize the image to the given
- * dimensions
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function getResizeRatio($maxwidth,$maxheight=0){
- if(!$maxheight) $maxheight = $maxwidth;
-
- $w = $this->getField('File.Width');
- $h = $this->getField('File.Height');
-
- $ratio = 1;
- if($w >= $h){
- if($w >= $maxwidth){
- $ratio = $maxwidth/$w;
- }elseif($h > $maxheight){
- $ratio = $maxheight/$h;
- }
- }else{
- if($h >= $maxheight){
- $ratio = $maxheight/$h;
- }elseif($w > $maxwidth){
- $ratio = $maxwidth/$w;
- }
- }
- return $ratio;
- }
-
-
- /**
- * Set an IPTC field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function setIPTCField($field, $value)
- {
- if (!isset($this->_info['iptc'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if ($this->_info['iptc'] == false) {
- $this->_info['iptc'] = array();
- }
-
- $this->_info['iptc'][$field] = $value;
-
- return true;
- }
-
- /**
- * Delete an EXIF field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function deleteExifField($field)
- {
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if ($this->_info['exif'] != false) {
- unset($this->_info['exif'][$field]);
- }
-
- return true;
- }
-
- /**
- * Delete an Adobe field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function deleteAdobeField($field)
- {
- if (!isset($this->_info['adobe'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if ($this->_info['adobe'] != false) {
- unset($this->_info['adobe'][$field]);
- }
-
- return true;
- }
-
- /**
- * Delete an IPTC field
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function deleteIPTCField($field)
- {
- if (!isset($this->_info['iptc'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if ($this->_info['iptc'] != false) {
- unset($this->_info['iptc'][$field]);
- }
-
- return true;
- }
-
- /**
- * Get the image's title, tries various fields
- *
- * @param int $max maximum number chars (keeps words)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function getTitle($max=80){
- $cap = '';
-
- // try various fields
- $cap = $this->getField(array('Iptc.Headline',
- 'Iptc.Caption',
- 'Exif.UserComment',
- 'Exif.TIFFUserComment',
- 'Exif.TIFFImageDescription',
- 'File.Name'));
- if (empty($cap)) return false;
-
- if(!$max) return $cap;
- // Shorten to 80 chars (keeping words)
- $new = preg_replace('/\n.+$/','',wordwrap($cap, $max));
- if($new != $cap) $new .= '...';
-
- return $new;
- }
-
- /**
- * Gather various date fields
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function getDates()
- {
- $this->_parseAll();
-
- if ($this->_markers == null) {
- return false;
- }
-
- $dates = array();
-
- $latestTime = 0;
- $latestTimeSource = "";
- $earliestTime = time();
- $earliestTimeSource = "";
-
- if (@isset($this->_info['exif']['DateTime'])) {
- $dates['ExifDateTime'] = $this->_info['exif']['DateTime'];
-
- $aux = $this->_info['exif']['DateTime'];
- $aux{4} = "-";
- $aux{7} = "-";
- $t = strtotime($aux);
-
- if ($t > $latestTime) {
- $latestTime = $t;
- $latestTimeSource = "ExifDateTime";
- }
-
- if ($t < $earliestTime) {
- $earliestTime = $t;
- $earliestTimeSource = "ExifDateTime";
- }
- }
-
- if (@isset($this->_info['exif']['DateTimeOriginal'])) {
- $dates['ExifDateTimeOriginal'] = $this->_info['exif']['DateTime'];
-
- $aux = $this->_info['exif']['DateTimeOriginal'];
- $aux{4} = "-";
- $aux{7} = "-";
- $t = strtotime($aux);
-
- if ($t > $latestTime) {
- $latestTime = $t;
- $latestTimeSource = "ExifDateTimeOriginal";
- }
-
- if ($t < $earliestTime) {
- $earliestTime = $t;
- $earliestTimeSource = "ExifDateTimeOriginal";
- }
- }
-
- if (@isset($this->_info['exif']['DateTimeDigitized'])) {
- $dates['ExifDateTimeDigitized'] = $this->_info['exif']['DateTime'];
-
- $aux = $this->_info['exif']['DateTimeDigitized'];
- $aux{4} = "-";
- $aux{7} = "-";
- $t = strtotime($aux);
-
- if ($t > $latestTime) {
- $latestTime = $t;
- $latestTimeSource = "ExifDateTimeDigitized";
- }
-
- if ($t < $earliestTime) {
- $earliestTime = $t;
- $earliestTimeSource = "ExifDateTimeDigitized";
- }
- }
-
- if (@isset($this->_info['iptc']['DateCreated'])) {
- $dates['IPTCDateCreated'] = $this->_info['iptc']['DateCreated'];
-
- $aux = $this->_info['iptc']['DateCreated'];
- $aux = substr($aux, 0, 4) . "-" . substr($aux, 4, 2) . "-" . substr($aux, 6, 2);
- $t = strtotime($aux);
-
- if ($t > $latestTime) {
- $latestTime = $t;
- $latestTimeSource = "IPTCDateCreated";
- }
-
- if ($t < $earliestTime) {
- $earliestTime = $t;
- $earliestTimeSource = "IPTCDateCreated";
- }
- }
-
- if (@isset($this->_info['file']['UnixTime'])) {
- $dates['FileModified'] = $this->_info['file']['UnixTime'];
-
- $t = $this->_info['file']['UnixTime'];
-
- if ($t > $latestTime) {
- $latestTime = $t;
- $latestTimeSource = "FileModified";
- }
-
- if ($t < $earliestTime) {
- $earliestTime = $t;
- $earliestTimeSource = "FileModified";
- }
- }
-
- $dates['Time'] = $earliestTime;
- $dates['TimeSource'] = $earliestTimeSource;
- $dates['TimeStr'] = date("Y-m-d H:i:s", $earliestTime);
- $dates['EarliestTime'] = $earliestTime;
- $dates['EarliestTimeSource'] = $earliestTimeSource;
- $dates['EarliestTimeStr'] = date("Y-m-d H:i:s", $earliestTime);
- $dates['LatestTime'] = $latestTime;
- $dates['LatestTimeSource'] = $latestTimeSource;
- $dates['LatestTimeStr'] = date("Y-m-d H:i:s", $latestTime);
-
- return $dates;
- }
-
- /**
- * Get the image width, tries various fields
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function getWidth()
- {
- if (!isset($this->_info['sof'])) {
- $this->_parseMarkerSOF();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['sof']['ImageWidth'])) {
- return $this->_info['sof']['ImageWidth'];
- }
-
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
-
- if (isset($this->_info['exif']['PixelXDimension'])) {
- return $this->_info['exif']['PixelXDimension'];
- }
-
- return false;
- }
-
- /**
- * Get the image height, tries various fields
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function getHeight()
- {
- if (!isset($this->_info['sof'])) {
- $this->_parseMarkerSOF();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['sof']['ImageHeight'])) {
- return $this->_info['sof']['ImageHeight'];
- }
-
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
-
- if (isset($this->_info['exif']['PixelYDimension'])) {
- return $this->_info['exif']['PixelYDimension'];
- }
-
- return false;
- }
-
- /**
- * Get an dimension string for use in img tag
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function getDimStr()
- {
- if ($this->_markers == null) {
- return false;
- }
-
- $w = $this->getWidth();
- $h = $this->getHeight();
-
- return "width='" . $w . "' height='" . $h . "'";
- }
-
- /**
- * Checks for an embedded thumbnail
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function hasThumbnail($which = 'any')
- {
- if (($which == 'any') || ($which == 'exif')) {
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['exif']) && is_array($this->_info['exif'])) {
- if (isset($this->_info['exif']['JFIFThumbnail'])) {
- return 'exif';
- }
- }
- }
-
- if ($which == 'adobe') {
- if (!isset($this->_info['adobe'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['adobe']) && is_array($this->_info['adobe'])) {
- if (isset($this->_info['adobe']['ThumbnailData'])) {
- return 'exif';
- }
- }
- }
-
- return false;
- }
-
- /**
- * Send embedded thumbnail to browser
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- */
- function sendThumbnail($which = 'any')
- {
- $data = null;
-
- if (($which == 'any') || ($which == 'exif')) {
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['exif']) && is_array($this->_info['exif'])) {
- if (isset($this->_info['exif']['JFIFThumbnail'])) {
- $data =& $this->_info['exif']['JFIFThumbnail'];
- }
- }
- }
-
- if (($which == 'adobe') || ($data == null)){
- if (!isset($this->_info['adobe'])) {
- $this->_parseMarkerAdobe();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (isset($this->_info['adobe']) && is_array($this->_info['adobe'])) {
- if (isset($this->_info['adobe']['ThumbnailData'])) {
- $data =& $this->_info['adobe']['ThumbnailData'];
- }
- }
- }
-
- if ($data != null) {
- header("Content-type: image/jpeg");
- echo $data;
- return true;
- }
-
- return false;
- }
-
- /**
- * Save changed Metadata
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function save($fileName = "") {
- if ($fileName == "") {
- $tmpName = tempnam(dirname($this->_fileName),'_metatemp_');
- $this->_writeJPEG($tmpName);
- if (@file_exists($tmpName)) {
- return io_rename($tmpName, $this->_fileName);
- }
- } else {
- return $this->_writeJPEG($fileName);
- }
- return false;
- }
-
- /*************************************************************/
- /* PRIVATE FUNCTIONS (Internal Use Only!) */
- /*************************************************************/
-
- /*************************************************************/
- function _dispose()
- {
- $this->_fileName = $fileName;
-
- $this->_fp = null;
- $this->_type = 'unknown';
-
- unset($this->_markers);
- unset($this->_info);
- }
-
- /*************************************************************/
- function _readJPEG()
- {
- unset($this->_markers);
- unset($this->_info);
- $this->_markers = array();
- $this->_info = array();
-
- $this->_fp = @fopen($this->_fileName, 'rb');
- if ($this->_fp) {
- if (file_exists($this->_fileName)) {
- $this->_type = 'file';
- }
- else {
- $this->_type = 'url';
- }
- }
- else {
- $this->_fp = null;
- return false; // ERROR: Can't open file
- }
-
- // Check for the JPEG signature
- $c1 = ord(fgetc($this->_fp));
- $c2 = ord(fgetc($this->_fp));
-
- if ($c1 != 0xFF || $c2 != 0xD8) { // (0xFF + SOI)
- $this->_markers = null;
- return false; // ERROR: File is not a JPEG
- }
-
- $count = 0;
-
- $done = false;
- $ok = true;
-
- while (!$done) {
- $capture = false;
-
- // First, skip any non 0xFF bytes
- $discarded = 0;
- $c = ord(fgetc($this->_fp));
- while (!feof($this->_fp) && ($c != 0xFF)) {
- $discarded++;
- $c = ord(fgetc($this->_fp));
- }
- // Then skip all 0xFF until the marker byte
- do {
- $marker = ord(fgetc($this->_fp));
- } while (!feof($this->_fp) && ($marker == 0xFF));
-
- if (feof($this->_fp)) {
- return false; // ERROR: Unexpected EOF
- }
- if ($discarded != 0) {
- return false; // ERROR: Extraneous data
- }
-
- $length = ord(fgetc($this->_fp)) * 256 + ord(fgetc($this->_fp));
- if (feof($this->_fp)) {
- return false; // ERROR: Unexpected EOF
- }
- if ($length < 2) {
- return false; // ERROR: Extraneous data
- }
- $length = $length - 2; // The length we got counts itself
-
- switch ($marker) {
- case 0xC0: // SOF0
- case 0xC1: // SOF1
- case 0xC2: // SOF2
- case 0xC9: // SOF9
- case 0xE0: // APP0: JFIF data
- case 0xE1: // APP1: EXIF data
- case 0xED: // APP13: IPTC / Photoshop data
- $capture = true;
- break;
- case 0xDA: // SOS: Start of scan... the image itself and the last block on the file
- $capture = false;
- $length = -1; // This field has no length... it includes all data until EOF
- $done = true;
- break;
- default:
- $capture = true;//false;
- break;
- }
-
- $this->_markers[$count] = array();
- $this->_markers[$count]['marker'] = $marker;
- $this->_markers[$count]['length'] = $length;
-
- if ($capture) {
- $this->_markers[$count]['data'] =& fread($this->_fp, $length);
- }
- elseif (!$done) {
- $result = @fseek($this->_fp, $length, SEEK_CUR);
- // fseek doesn't seem to like HTTP 'files', but fgetc has no problem
- if (!($result === 0)) {
- for ($i = 0; $i < $length; $i++) {
- fgetc($this->_fp);
- }
- }
- }
- $count++;
- }
-
- if ($this->_fp) {
- fclose($this->_fp);
- $this->_fp = null;
- }
-
- return $ok;
- }
-
- /*************************************************************/
- function _parseAll()
- {
- if (!isset($this->_markers)) {
- $this->_readJPEG();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- if (!isset($this->_info['jfif'])) {
- $this->_parseMarkerJFIF();
- }
- if (!isset($this->_info['jpeg'])) {
- $this->_parseMarkerSOF();
- }
- if (!isset($this->_info['exif'])) {
- $this->_parseMarkerExif();
- }
- if (!isset($this->_info['adobe'])) {
- $this->_parseMarkerAdobe();
- }
- if (!isset($this->_info['file'])) {
- $this->_parseFileInfo();
- }
- }
-
- /*************************************************************/
- function _writeJPEG($outputName)
- {
- $this->_parseAll();
-
- $wroteEXIF = false;
- $wroteAdobe = false;
-
- $this->_fp = @fopen($this->_fileName, 'r');
- if ($this->_fp) {
- if (file_exists($this->_fileName)) {
- $this->_type = 'file';
- }
- else {
- $this->_type = 'url';
- }
- }
- else {
- $this->_fp = null;
- return false; // ERROR: Can't open file
- }
-
- $this->_fpout = fopen($outputName, 'wb');
- if ($this->_fpout) {
- }
- else {
- $this->_fpout = null;
- fclose($this->_fp);
- $this->_fp = null;
- return false; // ERROR: Can't open output file
- }
-
- // Check for the JPEG signature
- $c1 = ord(fgetc($this->_fp));
- $c2 = ord(fgetc($this->_fp));
-
- if ($c1 != 0xFF || $c2 != 0xD8) { // (0xFF + SOI)
- return false; // ERROR: File is not a JPEG
- }
-
- fputs($this->_fpout, chr(0xFF), 1);
- fputs($this->_fpout, chr(0xD8), 1); // (0xFF + SOI)
-
- $count = 0;
-
- $done = false;
- $ok = true;
-
- while (!$done) {
- // First, skip any non 0xFF bytes
- $discarded = 0;
- $c = ord(fgetc($this->_fp));
- while (!feof($this->_fp) && ($c != 0xFF)) {
- $discarded++;
- $c = ord(fgetc($this->_fp));
- }
- // Then skip all 0xFF until the marker byte
- do {
- $marker = ord(fgetc($this->_fp));
- } while (!feof($this->_fp) && ($marker == 0xFF));
-
- if (feof($this->_fp)) {
- $ok = false;
- break; // ERROR: Unexpected EOF
- }
- if ($discarded != 0) {
- $ok = false;
- break; // ERROR: Extraneous data
- }
-
- $length = ord(fgetc($this->_fp)) * 256 + ord(fgetc($this->_fp));
- if (feof($this->_fp)) {
- $ok = false;
- break; // ERROR: Unexpected EOF
- }
- if ($length < 2) {
- $ok = false;
- break; // ERROR: Extraneous data
- }
- $length = $length - 2; // The length we got counts itself
-
- unset($data);
- if ($marker == 0xE1) { // APP1: EXIF data
- $data =& $this->_createMarkerEXIF();
- $wroteEXIF = true;
- }
- elseif ($marker == 0xED) { // APP13: IPTC / Photoshop data
- $data =& $this->_createMarkerAdobe();
- $wroteAdobe = true;
- }
- elseif ($marker == 0xDA) { // SOS: Start of scan... the image itself and the last block on the file
- $done = true;
- }
-
- if (!$wroteEXIF && (($marker < 0xE0) || ($marker > 0xEF))) {
- if (isset($this->_info['exif']) && is_array($this->_info['exif'])) {
- $exif =& $this->_createMarkerEXIF();
- $this->_writeJPEGMarker(0xE1, strlen($exif), $exif, 0);
- unset($exif);
- }
- $wroteEXIF = true;
- }
-
- if (!$wroteAdobe && (($marker < 0xE0) || ($marker > 0xEF))) {
- if ((isset($this->_info['adobe']) && is_array($this->_info['adobe']))
- || (isset($this->_info['iptc']) && is_array($this->_info['iptc']))) {
- $adobe =& $this->_createMarkerAdobe();
- $this->_writeJPEGMarker(0xED, strlen($adobe), $adobe, 0);
- unset($adobe);
- }
- $wroteAdobe = true;
- }
-
- $origLength = $length;
- if (isset($data)) {
- $length = strlen($data);
- }
-
- if ($marker != -1) {
- $this->_writeJPEGMarker($marker, $length, $data, $origLength);
- }
- }
-
- if ($this->_fp) {
- fclose($this->_fp);
- $this->_fp = null;
- }
-
- if ($this->_fpout) {
- fclose($this->_fpout);
- $this->_fpout = null;
- }
-
- return $ok;
- }
-
- /*************************************************************/
- function _writeJPEGMarker($marker, $length, &$data, $origLength)
- {
- if ($length <= 0) {
- return false;
- }
-
- fputs($this->_fpout, chr(0xFF), 1);
- fputs($this->_fpout, chr($marker), 1);
- fputs($this->_fpout, chr((($length + 2) & 0x0000FF00) >> 8), 1);
- fputs($this->_fpout, chr((($length + 2) & 0x000000FF) >> 0), 1);
-
- if (isset($data)) {
- // Copy the generated data
- fputs($this->_fpout, $data, $length);
-
- if ($origLength > 0) { // Skip the original data
- $result = @fseek($this->_fp, $origLength, SEEK_CUR);
- // fseek doesn't seem to like HTTP 'files', but fgetc has no problem
- if ($result != 0) {
- for ($i = 0; $i < $origLength; $i++) {
- fgetc($this->_fp);
- }
- }
- }
- }
- else {
- if ($marker == 0xDA) { // Copy until EOF
- while (!feof($this->_fp)) {
- $data =& fread($this->_fp, 1024 * 16);
- fputs($this->_fpout, $data, strlen($data));
- }
- }
- else { // Copy only $length bytes
- $data =& fread($this->_fp, $length);
- fputs($this->_fpout, $data, $length);
- }
- }
-
- return true;
- }
-
- /**
- * Gets basic info from the file - should work with non-JPEGs
- *
- * @author Sebastian Delmont <sdelmont at zonageek.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _parseFileInfo()
- {
- if (file_exists($this->_fileName)) {
- $this->_info['file'] = array();
- $this->_info['file']['Name'] = basename($this->_fileName);
- $this->_info['file']['Path'] = fullpath($this->_fileName);
- $this->_info['file']['Size'] = filesize($this->_fileName);
- if ($this->_info['file']['Size'] < 1024) {
- $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B';
- }
- elseif ($this->_info['file']['Size'] < (1024 * 1024)) {
- $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / 1024) . 'KB';
- }
- elseif ($this->_info['file']['Size'] < (1024 * 1024 * 1024)) {
- $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / (1024*1024)) . 'MB';
- }
- else {
- $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B';
- }
- $this->_info['file']['UnixTime'] = filemtime($this->_fileName);
-
- // get image size directly from file
- $size = getimagesize($this->_fileName);
- $this->_info['file']['Width'] = $size[0];
- $this->_info['file']['Height'] = $size[1];
- // set mime types and formats
- // http://www.php.net/manual/en/function.getimagesize.php
- // http://www.php.net/manual/en/function.image-type-to-mime-type.php
- switch ($size[2]){
- case 1:
- $this->_info['file']['Mime'] = 'image/gif';
- $this->_info['file']['Format'] = 'GIF';
- break;
- case 2:
- $this->_info['file']['Mime'] = 'image/jpeg';
- $this->_info['file']['Format'] = 'JPEG';
- break;
- case 3:
- $this->_info['file']['Mime'] = 'image/png';
- $this->_info['file']['Format'] = 'PNG';
- break;
- case 4:
- $this->_info['file']['Mime'] = 'application/x-shockwave-flash';
- $this->_info['file']['Format'] = 'SWF';
- break;
- case 5:
- $this->_info['file']['Mime'] = 'image/psd';
- $this->_info['file']['Format'] = 'PSD';
- break;
- case 6:
- $this->_info['file']['Mime'] = 'image/bmp';
- $this->_info['file']['Format'] = 'BMP';
- break;
- case 7:
- $this->_info['file']['Mime'] = 'image/tiff';
- $this->_info['file']['Format'] = 'TIFF (Intel)';
- break;
- case 8:
- $this->_info['file']['Mime'] = 'image/tiff';
- $this->_info['file']['Format'] = 'TIFF (Motorola)';
- break;
- case 9:
- $this->_info['file']['Mime'] = 'application/octet-stream';
- $this->_info['file']['Format'] = 'JPC';
- break;
- case 10:
- $this->_info['file']['Mime'] = 'image/jp2';
- $this->_info['file']['Format'] = 'JP2';
- break;
- case 11:
- $this->_info['file']['Mime'] = 'application/octet-stream';
- $this->_info['file']['Format'] = 'JPX';
- break;
- case 12:
- $this->_info['file']['Mime'] = 'application/octet-stream';
- $this->_info['file']['Format'] = 'JB2';
- break;
- case 13:
- $this->_info['file']['Mime'] = 'application/x-shockwave-flash';
- $this->_info['file']['Format'] = 'SWC';
- break;
- case 14:
- $this->_info['file']['Mime'] = 'image/iff';
- $this->_info['file']['Format'] = 'IFF';
- break;
- case 15:
- $this->_info['file']['Mime'] = 'image/vnd.wap.wbmp';
- $this->_info['file']['Format'] = 'WBMP';
- break;
- case 16:
- $this->_info['file']['Mime'] = 'image/xbm';
- $this->_info['file']['Format'] = 'XBM';
- break;
- default:
- $this->_info['file']['Mime'] = 'image/unknown';
- }
- }
- else {
- $this->_info['file'] = array();
- $this->_info['file']['Name'] = basename($this->_fileName);
- $this->_info['file']['Url'] = $this->_fileName;
- }
-
- return true;
- }
-
- /*************************************************************/
- function _parseMarkerJFIF()
- {
- if (!isset($this->_markers)) {
- $this->_readJPEG();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- $data = null;
- $count = count($this->_markers);
- for ($i = 0; $i < $count; $i++) {
- if ($this->_markers[$i]['marker'] == 0xE0) {
- $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 4);
- if ($signature == 'JFIF') {
- $data =& $this->_markers[$i]['data'];
- break;
- }
- }
- }
-
- if ($data == null) {
- $this->_info['jfif'] = false;
- return false;
- }
-
- $pos = 0;
- $this->_info['jfif'] = array();
-
-
- $vmaj = $this->_getByte($data, 5);
- $vmin = $this->_getByte($data, 6);
-
- $this->_info['jfif']['Version'] = sprintf('%d.%02d', $vmaj, $vmin);
-
- $units = $this->_getByte($data, 7);
- switch ($units) {
- case 0:
- $this->_info['jfif']['Units'] = 'pixels';
- break;
- case 1:
- $this->_info['jfif']['Units'] = 'dpi';
- break;
- case 2:
- $this->_info['jfif']['Units'] = 'dpcm';
- break;
- default:
- $this->_info['jfif']['Units'] = 'unknown';
- break;
- }
-
- $xdens = $this->_getShort($data, 8);
- $ydens = $this->_getShort($data, 10);
-
- $this->_info['jfif']['XDensity'] = $xdens;
- $this->_info['jfif']['YDensity'] = $ydens;
-
- $thumbx = $this->_getByte($data, 12);
- $thumby = $this->_getByte($data, 13);
-
- $this->_info['jfif']['ThumbnailWidth'] = $thumbx;
- $this->_info['jfif']['ThumbnailHeight'] = $thumby;
-
- return true;
- }
-
- /*************************************************************/
- function _parseMarkerSOF()
- {
- if (!isset($this->_markers)) {
- $this->_readJPEG();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- $data = null;
- $count = count($this->_markers);
- for ($i = 0; $i < $count; $i++) {
- switch ($this->_markers[$i]['marker']) {
- case 0xC0: // SOF0
- case 0xC1: // SOF1
- case 0xC2: // SOF2
- case 0xC9: // SOF9
- $data =& $this->_markers[$i]['data'];
- $marker = $this->_markers[$i]['marker'];
- break;
- }
- }
-
- if ($data == null) {
- $this->_info['sof'] = false;
- return false;
- }
-
- $pos = 0;
- $this->_info['sof'] = array();
-
-
- switch ($marker) {
- case 0xC0: // SOF0
- $format = 'Baseline';
- break;
- case 0xC1: // SOF1
- $format = 'Progessive';
- break;
- case 0xC2: // SOF2
- $format = 'Non-baseline';
- break;
- case 0xC9: // SOF9
- $format = 'Arithmetic';
- break;
- default:
- return false;
- break;
- }
-
-
- $this->_info['sof']['Format'] = $format;
-
- $this->_info['sof']['SamplePrecision'] = $this->_getByte($data, $pos + 0);
- $this->_info['sof']['ImageHeight'] = $this->_getShort($data, $pos + 1);
- $this->_info['sof']['ImageWidth'] = $this->_getShort($data, $pos + 3);
- $this->_info['sof']['ColorChannels'] = $this->_getByte($data, $pos + 5);
-
- return true;
- }
-
- /*************************************************************/
- function _parseMarkerExif()
- {
- if (!isset($this->_markers)) {
- $this->_readJPEG();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- $data = null;
- $count = count($this->_markers);
- for ($i = 0; $i < $count; $i++) {
- if ($this->_markers[$i]['marker'] == 0xE1) {
- $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 6);
- if ($signature == "Exif\0\0") {
- $data =& $this->_markers[$i]['data'];
- break;
- }
- }
- }
-
- if ($data == null) {
- $this->_info['exif'] = false;
- return false;
- }
- $pos = 6;
- $this->_info['exif'] = array();
-
- // We don't increment $pos after this because Exif uses offsets relative to this point
-
- $byteAlign = $this->_getShort($data, $pos + 0);
-
- if ($byteAlign == 0x4949) { // "II"
- $isBigEndian = false;
- }
- elseif ($byteAlign == 0x4D4D) { // "MM"
- $isBigEndian = true;
- }
- else {
- return false; // Unexpected data
- }
-
- $alignCheck = $this->_getShort($data, $pos + 2, $isBigEndian);
- if ($alignCheck != 0x002A) // That's the expected value
- return false; // Unexpected data
-
- if ($isBigEndian) {
- $this->_info['exif']['ByteAlign'] = "Big Endian";
- }
- else {
- $this->_info['exif']['ByteAlign'] = "Little Endian";
- }
-
- $offsetIFD0 = $this->_getLong($data, $pos + 4, $isBigEndian);
- if ($offsetIFD0 < 8)
- return false; // Unexpected data
-
- $offsetIFD1 = $this->_readIFD($data, $pos, $offsetIFD0, $isBigEndian, 'ifd0');
- if ($offsetIFD1 != 0)
- $this->_readIFD($data, $pos, $offsetIFD1, $isBigEndian, 'ifd1');
-
- return true;
- }
-
- /*************************************************************/
- function _readIFD($data, $base, $offset, $isBigEndian, $mode)
- {
- $EXIFTags = $this->_exifTagNames($mode);
-
- $numEntries = $this->_getShort($data, $base + $offset, $isBigEndian);
- $offset += 2;
-
- $exifTIFFOffset = 0;
- $exifTIFFLength = 0;
- $exifThumbnailOffset = 0;
- $exifThumbnailLength = 0;
-
- for ($i = 0; $i < $numEntries; $i++) {
- $tag = $this->_getShort($data, $base + $offset, $isBigEndian);
- $offset += 2;
- $type = $this->_getShort($data, $base + $offset, $isBigEndian);
- $offset += 2;
- $count = $this->_getLong($data, $base + $offset, $isBigEndian);
- $offset += 4;
-
- if (($type < 1) || ($type > 12))
- return false; // Unexpected Type
-
- $typeLengths = array( -1, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8 );
-
- $dataLength = $typeLengths[$type] * $count;
- if ($dataLength > 4) {
- $dataOffset = $this->_getLong($data, $base + $offset, $isBigEndian);
- $rawValue = $this->_getFixedString($data, $base + $dataOffset, $dataLength);
- }
- else {
- $rawValue = $this->_getFixedString($data, $base + $offset, $dataLength);
- }
- $offset += 4;
-
- switch ($type) {
- case 1: // UBYTE
- if ($count == 1) {
- $value = $this->_getByte($rawValue, 0);
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++)
- $value[$j] = $this->_getByte($rawValue, $j);
- }
- break;
- case 2: // ASCII
- $value = $rawValue;
- break;
- case 3: // USHORT
- if ($count == 1) {
- $value = $this->_getShort($rawValue, 0, $isBigEndian);
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++)
- $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian);
- }
- break;
- case 4: // ULONG
- if ($count == 1) {
- $value = $this->_getLong($rawValue, 0, $isBigEndian);
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++)
- $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian);
- }
- break;
- case 5: // URATIONAL
- if ($count == 1) {
- $a = $this->_getLong($rawValue, 0, $isBigEndian);
- $b = $this->_getLong($rawValue, 4, $isBigEndian);
- $value = array();
- $value['val'] = 0;
- $value['num'] = $a;
- $value['den'] = $b;
- if (($a != 0) && ($b != 0)) {
- $value['val'] = $a / $b;
- }
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++) {
- $a = $this->_getLong($rawValue, $j * 8, $isBigEndian);
- $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian);
- $value = array();
- $value[$j]['val'] = 0;
- $value[$j]['num'] = $a;
- $value[$j]['den'] = $b;
- if (($a != 0) && ($b != 0))
- $value[$j]['val'] = $a / $b;
- }
- }
- break;
- case 6: // SBYTE
- if ($count == 1) {
- $value = $this->_getByte($rawValue, 0);
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++)
- $value[$j] = $this->_getByte($rawValue, $j);
- }
- break;
- case 7: // UNDEFINED
- $value = $rawValue;
- break;
- case 8: // SSHORT
- if ($count == 1) {
- $value = $this->_getShort($rawValue, 0, $isBigEndian);
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++)
- $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian);
- }
- break;
- case 9: // SLONG
- if ($count == 1) {
- $value = $this->_getLong($rawValue, 0, $isBigEndian);
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++)
- $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian);
- }
- break;
- case 10: // SRATIONAL
- if ($count == 1) {
- $a = $this->_getLong($rawValue, 0, $isBigEndian);
- $b = $this->_getLong($rawValue, 4, $isBigEndian);
- $value = array();
- $value['val'] = 0;
- $value['num'] = $a;
- $value['den'] = $b;
- if (($a != 0) && ($b != 0))
- $value['val'] = $a / $b;
- }
- else {
- $value = array();
- for ($j = 0; $j < $count; $j++) {
- $a = $this->_getLong($rawValue, $j * 8, $isBigEndian);
- $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian);
- $value = array();
- $value[$j]['val'] = 0;
- $value[$j]['num'] = $a;
- $value[$j]['den'] = $b;
- if (($a != 0) && ($b != 0))
- $value[$j]['val'] = $a / $b;
- }
- }
- break;
- case 11: // FLOAT
- $value = $rawValue;
- break;
-
- case 12: // DFLOAT
- $value = $rawValue;
- break;
- default:
- return false; // Unexpected Type
- }
-
- $tagName = '';
- if (($mode == 'ifd0') && ($tag == 0x8769)) { // ExifIFDOffset
- $this->_readIFD($data, $base, $value, $isBigEndian, 'exif');
- }
- elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset
- $this->_readIFD($data, $base, $value, $isBigEndian, 'gps');
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets
- $exifTIFFOffset = $value;
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts
- $exifTIFFLength = $value;
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset
- $exifThumbnailOffset = $value;
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength
- $exifThumbnailLength = $value;
- }
- elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset
- $this->_readIFD($data, $base, $value, $isBigEndian, 'interop');
- }
- // elseif (($mode == 'exif') && ($tag == 0x927C)) { // MakerNote
- // }
- else {
- if (isset($EXIFTags[$tag])) {
- $tagName = $EXIFTags[$tag];
- if (isset($this->_info['exif'][$tagName])) {
- if (!is_array($this->_info['exif'][$tagName])) {
- $aux = array();
- $aux[0] = $this->_info['exif'][$tagName];
- $this->_info['exif'][$tagName] = $aux;
- }
-
- $this->_info['exif'][$tagName][count($this->_info['exif'][$tagName])] = $value;
- }
- else {
- $this->_info['exif'][$tagName] = $value;
- }
- }
- else {
-#echo sprintf("<h1>Unknown tag %02x (t: %d l: %d) %s in %s</h1>", $tag, $type, $count, $mode, $this->_fileName);
- // Unknown Tags will be ignored!!!
- // That's because the tag might be a pointer (like the Exif tag)
- // and saving it without saving the data it points to might
- // create an invalid file.
- }
- }
- }
-
- if (($exifThumbnailOffset > 0) && ($exifThumbnailLength > 0)) {
- $this->_info['exif']['JFIFThumbnail'] = $this->_getFixedString($data, $base + $exifThumbnailOffset, $exifThumbnailLength);
- }
-
- if (($exifTIFFOffset > 0) && ($exifTIFFLength > 0)) {
- $this->_info['exif']['TIFFStrips'] = $this->_getFixedString($data, $base + $exifTIFFOffset, $exifTIFFLength);
- }
-
- $nextOffset = $this->_getLong($data, $base + $offset, $isBigEndian);
- return $nextOffset;
- }
-
- /*************************************************************/
- function & _createMarkerExif()
- {
- $data = null;
- $count = count($this->_markers);
- for ($i = 0; $i < $count; $i++) {
- if ($this->_markers[$i]['marker'] == 0xE1) {
- $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 6);
- if ($signature == "Exif\0\0") {
- $data =& $this->_markers[$i]['data'];
- break;
- }
- }
- }
-
- if (!isset($this->_info['exif'])) {
- return false;
- }
-
- $data = "Exif\0\0";
- $pos = 6;
- $offsetBase = 6;
-
- if (isset($this->_info['exif']['ByteAlign']) && ($this->_info['exif']['ByteAlign'] == "Big Endian")) {
- $isBigEndian = true;
- $aux = "MM";
- $pos = $this->_putString($data, $pos, $aux);
- }
- else {
- $isBigEndian = false;
- $aux = "II";
- $pos = $this->_putString($data, $pos, $aux);
- }
- $pos = $this->_putShort($data, $pos, 0x002A, $isBigEndian);
- $pos = $this->_putLong($data, $pos, 0x00000008, $isBigEndian); // IFD0 Offset is always 8
-
- $ifd0 =& $this->_getIFDEntries($isBigEndian, 'ifd0');
- $ifd1 =& $this->_getIFDEntries($isBigEndian, 'ifd1');
-
- $pos = $this->_writeIFD($data, $pos, $offsetBase, $ifd0, $isBigEndian, true);
- $pos = $this->_writeIFD($data, $pos, $offsetBase, $ifd1, $isBigEndian, false);
-
- return $data;
- }
-
- /*************************************************************/
- function _writeIFD(&$data, $pos, $offsetBase, &$entries, $isBigEndian, $hasNext)
- {
- $tiffData = null;
- $tiffDataOffsetPos = -1;
-
- $entryCount = count($entries);
-
- $dataPos = $pos + 2 + ($entryCount * 12) + 4;
- $pos = $this->_putShort($data, $pos, $entryCount, $isBigEndian);
-
- for ($i = 0; $i < $entryCount; $i++) {
- $tag = $entries[$i]['tag'];
- $type = $entries[$i]['type'];
-
- if ($type == -99) { // SubIFD
- $pos = $this->_putShort($data, $pos, $tag, $isBigEndian);
- $pos = $this->_putShort($data, $pos, 0x04, $isBigEndian); // LONG
- $pos = $this->_putLong($data, $pos, 0x01, $isBigEndian); // Count = 1
- $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian);
-
- $dataPos = $this->_writeIFD($data, $dataPos, $offsetBase, $entries[$i]['value'], $isBigEndian, false);
- }
- elseif ($type == -98) { // TIFF Data
- $pos = $this->_putShort($data, $pos, $tag, $isBigEndian);
- $pos = $this->_putShort($data, $pos, 0x04, $isBigEndian); // LONG
- $pos = $this->_putLong($data, $pos, 0x01, $isBigEndian); // Count = 1
- $tiffDataOffsetPos = $pos;
- $pos = $this->_putLong($data, $pos, 0x00, $isBigEndian); // For Now
- $tiffData =& $entries[$i]['value'] ;
- }
- else { // Regular Entry
- $pos = $this->_putShort($data, $pos, $tag, $isBigEndian);
- $pos = $this->_putShort($data, $pos, $type, $isBigEndian);
- $pos = $this->_putLong($data, $pos, $entries[$i]['count'], $isBigEndian);
- if (strlen($entries[$i]['value']) > 4) {
- $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian);
- $dataPos = $this->_putString($data, $dataPos, $entries[$i]['value']);
- }
- else {
- $val = str_pad($entries[$i]['value'], 4, "\0");
- $pos = $this->_putString($data, $pos, $val);
- }
- }
- }
-
- if ($tiffData != null) {
- $this->_putLong($data, $tiffDataOffsetPos, $dataPos - $offsetBase, $isBigEndian);
- $dataPos = $this->_putString($data, $dataPos, $tiffData);
- }
-
- if ($hasNext) {
- $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian);
- }
- else {
- $pos = $this->_putLong($data, $pos, 0, $isBigEndian);
- }
-
- return $dataPos;
- }
-
- /*************************************************************/
- function & _getIFDEntries($isBigEndian, $mode)
- {
- $EXIFNames = $this->_exifTagNames($mode);
- $EXIFTags = $this->_exifNameTags($mode);
- $EXIFTypeInfo = $this->_exifTagTypes($mode);
-
- $ifdEntries = array();
- $entryCount = 0;
-
- reset($EXIFNames);
- while (list($tag, $name) = each($EXIFNames)) {
- $type = $EXIFTypeInfo[$tag][0];
- $count = $EXIFTypeInfo[$tag][1];
- $value = null;
-
- if (($mode == 'ifd0') && ($tag == 0x8769)) { // ExifIFDOffset
- if (isset($this->_info['exif']['EXIFVersion'])) {
- $value =& $this->_getIFDEntries($isBigEndian, "exif");
- $type = -99;
- }
- else {
- $value = null;
- }
- }
- elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset
- if (isset($this->_info['exif']['GPSVersionID'])) {
- $value =& $this->_getIFDEntries($isBigEndian, "gps");
- $type = -99;
- }
- else {
- $value = null;
- }
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets
- if (isset($this->_info['exif']['TIFFStrips'])) {
- $value =& $this->_info['exif']['TIFFStrips'];
- $type = -98;
- }
- else {
- $value = null;
- }
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts
- if (isset($this->_info['exif']['TIFFStrips'])) {
- $value = strlen($this->_info['exif']['TIFFStrips']);
- }
- else {
- $value = null;
- }
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset
- if (isset($this->_info['exif']['JFIFThumbnail'])) {
- $value =& $this->_info['exif']['JFIFThumbnail'];
- $type = -98;
- }
- else {
- $value = null;
- }
- }
- elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength
- if (isset($this->_info['exif']['JFIFThumbnail'])) {
- $value = strlen($this->_info['exif']['JFIFThumbnail']);
- }
- else {
- $value = null;
- }
- }
- elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset
- if (isset($this->_info['exif']['InteroperabilityIndex'])) {
- $value =& $this->_getIFDEntries($isBigEndian, "interop");
- $type = -99;
- }
- else {
- $value = null;
- }
- }
- elseif (isset($this->_info['exif'][$name])) {
- $origValue =& $this->_info['exif'][$name];
-
- // This makes it easier to process variable size elements
- if (!is_array($origValue) || isset($origValue['val'])) {
- unset($origValue); // Break the reference
- $origValue = array($this->_info['exif'][$name]);
- }
- $origCount = count($origValue);
-
- if ($origCount == 0 ) {
- $type = -1; // To ignore this field
- }
-
- $value = " ";
-
- switch ($type) {
- case 1: // UBYTE
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
-
- $this->_putByte($value, $j, $origValue[$j]);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putByte($value, $j, 0);
- $j++;
- }
- break;
- case 2: // ASCII
- $v = strval($origValue[0]);
- if (($count != 0) && (strlen($v) > $count)) {
- $v = substr($v, 0, $count);
- }
- elseif (($count > 0) && (strlen($v) < $count)) {
- $v = str_pad($v, $count, "\0");
- }
-
- $count = strlen($v);
-
- $this->_putString($value, 0, $v);
- break;
- case 3: // USHORT
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putShort($value, $j * 2, 0, $isBigEndian);
- $j++;
- }
- break;
- case 4: // ULONG
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putLong($value, $j * 4, 0, $isBigEndian);
- $j++;
- }
- break;
- case 5: // URATIONAL
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $v = $origValue[$j];
- if (is_array($v)) {
- $a = $v['num'];
- $b = $v['den'];
- }
- else {
- $a = 0;
- $b = 0;
- // TODO: Allow other types and convert them
- }
- $this->_putLong($value, $j * 8, $a, $isBigEndian);
- $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putLong($value, $j * 8, 0, $isBigEndian);
- $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian);
- $j++;
- }
- break;
- case 6: // SBYTE
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $this->_putByte($value, $j, $origValue[$j]);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putByte($value, $j, 0);
- $j++;
- }
- break;
- case 7: // UNDEFINED
- $v = strval($origValue[0]);
- if (($count != 0) && (strlen($v) > $count)) {
- $v = substr($v, 0, $count);
- }
- elseif (($count > 0) && (strlen($v) < $count)) {
- $v = str_pad($v, $count, "\0");
- }
-
- $count = strlen($v);
-
- $this->_putString($value, 0, $v);
- break;
- case 8: // SSHORT
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putShort($value, $j * 2, 0, $isBigEndian);
- $j++;
- }
- break;
- case 9: // SLONG
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putLong($value, $j * 4, 0, $isBigEndian);
- $j++;
- }
- break;
- case 10: // SRATIONAL
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $v = $origValue[$j];
- if (is_array($v)) {
- $a = $v['num'];
- $b = $v['den'];
- }
- else {
- $a = 0;
- $b = 0;
- // TODO: Allow other types and convert them
- }
-
- $this->_putLong($value, $j * 8, $a, $isBigEndian);
- $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putLong($value, $j * 8, 0, $isBigEndian);
- $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian);
- $j++;
- }
- break;
- case 11: // FLOAT
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $v = strval($origValue[$j]);
- if (strlen($v) > 4) {
- $v = substr($v, 0, 4);
- }
- elseif (strlen($v) < 4) {
- $v = str_pad($v, 4, "\0");
- }
- $this->_putString($value, $j * 4, $v);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putString($value, $j * 4, "\0\0\0\0");
- $j++;
- }
- break;
- case 12: // DFLOAT
- if ($count == 0) {
- $count = $origCount;
- }
-
- $j = 0;
- while (($j < $count) && ($j < $origCount)) {
- $v = strval($origValue[$j]);
- if (strlen($v) > 8) {
- $v = substr($v, 0, 8);
- }
- elseif (strlen($v) < 8) {
- $v = str_pad($v, 8, "\0");
- }
- $this->_putString($value, $j * 8, $v);
- $j++;
- }
-
- while ($j < $count) {
- $this->_putString($value, $j * 8, "\0\0\0\0\0\0\0\0");
- $j++;
- }
- break;
- default:
- $value = null;
- break;
- }
- }
-
- if ($value != null) {
- $ifdEntries[$entryCount] = array();
- $ifdEntries[$entryCount]['tag'] = $tag;
- $ifdEntries[$entryCount]['type'] = $type;
- $ifdEntries[$entryCount]['count'] = $count;
- $ifdEntries[$entryCount]['value'] = $value;
-
- $entryCount++;
- }
- }
-
- return $ifdEntries;
- }
-
- /*************************************************************/
- function _parseMarkerAdobe()
- {
- if (!isset($this->_markers)) {
- $this->_readJPEG();
- }
-
- if ($this->_markers == null) {
- return false;
- }
-
- $data = null;
- $count = count($this->_markers);
- for ($i = 0; $i < $count; $i++) {
- if ($this->_markers[$i]['marker'] == 0xED) {
- $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 14);
- if ($signature == "Photoshop 3.0\0") {
- $data =& $this->_markers[$i]['data'];
- break;
- }
- }
- }
-
- if ($data == null) {
- $this->_info['adobe'] = false;
- $this->_info['iptc'] = false;
- return false;
- }
- $pos = 14;
- $this->_info['adobe'] = array();
- $this->_info['adobe']['raw'] = array();
- $this->_info['iptc'] = array();
-
- $datasize = strlen($data);
-
- while ($pos < $datasize) {
- $signature = $this->_getFixedString($data, $pos, 4);
- if ($signature != '8BIM')
- return false;
- $pos += 4;
-
- $type = $this->_getShort($data, $pos);
- $pos += 2;
-
- $strlen = $this->_getByte($data, $pos);
- $pos += 1;
- $header = '';
- for ($i = 0; $i < $strlen; $i++) {
- $header .= $data{$pos + $i};
- }
- $pos += $strlen + 1 - ($strlen % 2); // The string is padded to even length, counting the length byte itself
-
- $length = $this->_getLong($data, $pos);
- $pos += 4;
-
- $basePos = $pos;
-
- switch ($type) {
- case 0x0404: // Caption (IPTC Data)
- $pos = $this->_readIPTC($data, $pos);
- if ($pos == false)
- return false;
- break;
- case 0x040A: // CopyrightFlag
- $this->_info['adobe']['CopyrightFlag'] = $this->_getByte($data, $pos);
- $pos += $length;
- break;
- case 0x040B: // ImageURL
- $this->_info['adobe']['ImageURL'] = $this->_getFixedString($data, $pos, $length);
- $pos += $length;
- break;
- case 0x040C: // Thumbnail
- $aux = $this->_getLong($data, $pos);
- $pos += 4;
- if ($aux == 1) {
- $this->_info['adobe']['ThumbnailWidth'] = $this->_getLong($data, $pos);
- $pos += 4;
- $this->_info['adobe']['ThumbnailHeight'] = $this->_getLong($data, $pos);
- $pos += 4;
-
- $pos += 16; // Skip some data
-
- $this->_info['adobe']['ThumbnailData'] = $this->_getFixedString($data, $pos, $length - 28);
- $pos += $length - 28;
- }
- break;
- default:
- break;
- }
-
- // We save all blocks, even those we recognized
- $label = sprintf('8BIM_0x%04x', $type);
- $this->_info['adobe']['raw'][$label] = array();
- $this->_info['adobe']['raw'][$label]['type'] = $type;
- $this->_info['adobe']['raw'][$label]['header'] = $header;
- $this->_info['adobe']['raw'][$label]['data'] =& $this->_getFixedString($data, $basePos, $length);
-
- $pos = $basePos + $length + ($length % 2); // Even padding
- }
-
- }
-
- /*************************************************************/
- function _readIPTC(&$data, $pos = 0)
- {
- $totalLength = strlen($data);
-
- $IPTCTags =& $this->_iptcTagNames();
-
- while ($pos < ($totalLength - 5)) {
- $signature = $this->_getShort($data, $pos);
- if ($signature != 0x1C02)
- return $pos;
- $pos += 2;
-
- $type = $this->_getByte($data, $pos);
- $pos += 1;
- $length = $this->_getShort($data, $pos);
- $pos += 2;
-
- $basePos = $pos;
- $label = '';
-
- if (isset($IPTCTags[$type])) {
- $label = $IPTCTags[$type];
- }
- else {
- $label = sprintf('IPTC_0x%02x', $type);
- }
-
- if ($label != '') {
- if (isset($this->_info['iptc'][$label])) {
- if (!is_array($this->_info['iptc'][$label])) {
- $aux = array();
- $aux[0] = $this->_info['iptc'][$label];
- $this->_info['iptc'][$label] = $aux;
- }
- $this->_info['iptc'][$label][ count($this->_info['iptc'][$label]) ] = $this->_getFixedString($data, $pos, $length);
- }
- else {
- $this->_info['iptc'][$label] = $this->_getFixedString($data, $pos, $length);
- }
- }
-
- $pos = $basePos + $length; // No padding
- }
- return $pos;
- }
-
- /*************************************************************/
- function & _createMarkerAdobe()
- {
- if (isset($this->_info['iptc'])) {
- if (!isset($this->_info['adobe'])) {
- $this->_info['adobe'] = array();
- }
- if (!isset($this->_info['adobe']['raw'])) {
- $this->_info['adobe']['raw'] = array();
- }
- if (!isset($this->_info['adobe']['raw']['8BIM_0x0404'])) {
- $this->_info['adobe']['raw']['8BIM_0x0404'] = array();
- }
- $this->_info['adobe']['raw']['8BIM_0x0404']['type'] = 0x0404;
- $this->_info['adobe']['raw']['8BIM_0x0404']['header'] = "Caption";
- $this->_info['adobe']['raw']['8BIM_0x0404']['data'] =& $this->_writeIPTC();
- }
-
- if (isset($this->_info['adobe']['raw']) && (count($this->_info['adobe']['raw']) > 0)) {
- $data = "Photoshop 3.0\0";
- $pos = 14;
-
- reset($this->_info['adobe']['raw']);
- while (list($key) = each($this->_info['adobe']['raw'])) {
- $pos = $this->_write8BIM(
- $data,
- $pos,
- $this->_info['adobe']['raw'][$key]['type'],
- $this->_info['adobe']['raw'][$key]['header'],
- $this->_info['adobe']['raw'][$key]['data'] );
- }
- }
-
- return $data;
- }
-
- /*************************************************************/
- function _write8BIM(&$data, $pos, $type, $header, &$value)
- {
- $signature = "8BIM";
-
- $pos = $this->_putString($data, $pos, $signature);
- $pos = $this->_putShort($data, $pos, $type);
-
- $len = strlen($header);
-
- $pos = $this->_putByte($data, $pos, $len);
- $pos = $this->_putString($data, $pos, $header);
- if (($len % 2) == 0) { // Even padding, including the length byte
- $pos = $this->_putByte($data, $pos, 0);
- }
-
- $len = strlen($value);
- $pos = $this->_putLong($data, $pos, $len);
- $pos = $this->_putString($data, $pos, $value);
- if (($len % 2) != 0) { // Even padding
- $pos = $this->_putByte($data, $pos, 0);
- }
- return $pos;
- }
-
- /*************************************************************/
- function & _writeIPTC()
- {
- $data = " ";
- $pos = 0;
-
- $IPTCNames =& $this->_iptcNameTags();
-
- reset($this->_info['iptc']);
-
-
- while (list($label) = each($this->_info['iptc'])) {
- $value =& $this->_info['iptc'][$label];
- $type = -1;
-
- if (isset($IPTCNames[$label])) {
- $type = $IPTCNames[$label];
- }
- elseif (substr($label, 0, 7) == "IPTC_0x") {
- $type = hexdec(substr($label, 7, 2));
- }
-
- if ($type != -1) {
- if (is_array($value)) {
- for ($i = 0; $i < count($value); $i++) {
- $pos = $this->_writeIPTCEntry($data, $pos, $type, $value[$i]);
- }
- }
- else {
- $pos = $this->_writeIPTCEntry($data, $pos, $type, $value);
- }
- }
- }
-
- return $data;
- }
-
- /*************************************************************/
- function _writeIPTCEntry(&$data, $pos, $type, &$value)
- {
- $pos = $this->_putShort($data, $pos, 0x1C02);
- $pos = $this->_putByte($data, $pos, $type);
- $pos = $this->_putShort($data, $pos, strlen($value));
- $pos = $this->_putString($data, $pos, $value);
-
- return $pos;
- }
-
- /*************************************************************/
- function _exifTagNames($mode)
- {
- $tags = array();
-
- if ($mode == 'ifd0') {
- $tags[0x010E] = 'ImageDescription';
- $tags[0x010F] = 'Make';
- $tags[0x0110] = 'Model';
- $tags[0x0112] = 'Orientation';
- $tags[0x011A] = 'XResolution';
- $tags[0x011B] = 'YResolution';
- $tags[0x0128] = 'ResolutionUnit';
- $tags[0x0131] = 'Software';
- $tags[0x0132] = 'DateTime';
- $tags[0x013B] = 'Artist';
- $tags[0x013E] = 'WhitePoint';
- $tags[0x013F] = 'PrimaryChromaticities';
- $tags[0x0211] = 'YCbCrCoefficients';
- $tags[0x0212] = 'YCbCrSubSampling';
- $tags[0x0213] = 'YCbCrPositioning';
- $tags[0x0214] = 'ReferenceBlackWhite';
- $tags[0x8298] = 'Copyright';
- $tags[0x8769] = 'ExifIFDOffset';
- $tags[0x8825] = 'GPSIFDOffset';
- }
- if ($mode == 'ifd1') {
- $tags[0x00FE] = 'TIFFNewSubfileType';
- $tags[0x00FF] = 'TIFFSubfileType';
- $tags[0x0100] = 'TIFFImageWidth';
- $tags[0x0101] = 'TIFFImageHeight';
- $tags[0x0102] = 'TIFFBitsPerSample';
- $tags[0x0103] = 'TIFFCompression';
- $tags[0x0106] = 'TIFFPhotometricInterpretation';
- $tags[0x0107] = 'TIFFThreshholding';
- $tags[0x0108] = 'TIFFCellWidth';
- $tags[0x0109] = 'TIFFCellLength';
- $tags[0x010A] = 'TIFFFillOrder';
- $tags[0x010E] = 'TIFFImageDescription';
- $tags[0x010F] = 'TIFFMake';
- $tags[0x0110] = 'TIFFModel';
- $tags[0x0111] = 'TIFFStripOffsets';
- $tags[0x0112] = 'TIFFOrientation';
- $tags[0x0115] = 'TIFFSamplesPerPixel';
- $tags[0x0116] = 'TIFFRowsPerStrip';
- $tags[0x0117] = 'TIFFStripByteCounts';
- $tags[0x0118] = 'TIFFMinSampleValue';
- $tags[0x0119] = 'TIFFMaxSampleValue';
- $tags[0x011A] = 'TIFFXResolution';
- $tags[0x011B] = 'TIFFYResolution';
- $tags[0x011C] = 'TIFFPlanarConfiguration';
- $tags[0x0122] = 'TIFFGrayResponseUnit';
- $tags[0x0123] = 'TIFFGrayResponseCurve';
- $tags[0x0128] = 'TIFFResolutionUnit';
- $tags[0x0131] = 'TIFFSoftware';
- $tags[0x0132] = 'TIFFDateTime';
- $tags[0x013B] = 'TIFFArtist';
- $tags[0x013C] = 'TIFFHostComputer';
- $tags[0x0140] = 'TIFFColorMap';
- $tags[0x0152] = 'TIFFExtraSamples';
- $tags[0x0201] = 'TIFFJFIFOffset';
- $tags[0x0202] = 'TIFFJFIFLength';
- $tags[0x0211] = 'TIFFYCbCrCoefficients';
- $tags[0x0212] = 'TIFFYCbCrSubSampling';
- $tags[0x0213] = 'TIFFYCbCrPositioning';
- $tags[0x0214] = 'TIFFReferenceBlackWhite';
- $tags[0x8298] = 'TIFFCopyright';
- $tags[0x9286] = 'TIFFUserComment';
- }
- elseif ($mode == 'exif') {
- $tags[0x829A] = 'ExposureTime';
- $tags[0x829D] = 'FNumber';
- $tags[0x8822] = 'ExposureProgram';
- $tags[0x8824] = 'SpectralSensitivity';
- $tags[0x8827] = 'ISOSpeedRatings';
- $tags[0x8828] = 'OECF';
- $tags[0x9000] = 'EXIFVersion';
- $tags[0x9003] = 'DatetimeOriginal';
- $tags[0x9004] = 'DatetimeDigitized';
- $tags[0x9101] = 'ComponentsConfiguration';
- $tags[0x9102] = 'CompressedBitsPerPixel';
- $tags[0x9201] = 'ShutterSpeedValue';
- $tags[0x9202] = 'ApertureValue';
- $tags[0x9203] = 'BrightnessValue';
- $tags[0x9204] = 'ExposureBiasValue';
- $tags[0x9205] = 'MaxApertureValue';
- $tags[0x9206] = 'SubjectDistance';
- $tags[0x9207] = 'MeteringMode';
- $tags[0x9208] = 'LightSource';
- $tags[0x9209] = 'Flash';
- $tags[0x920A] = 'FocalLength';
- $tags[0x927C] = 'MakerNote';
- $tags[0x9286] = 'UserComment';
- $tags[0x9290] = 'SubSecTime';
- $tags[0x9291] = 'SubSecTimeOriginal';
- $tags[0x9292] = 'SubSecTimeDigitized';
- $tags[0xA000] = 'FlashPixVersion';
- $tags[0xA001] = 'ColorSpace';
- $tags[0xA002] = 'PixelXDimension';
- $tags[0xA003] = 'PixelYDimension';
- $tags[0xA004] = 'RelatedSoundFile';
- $tags[0xA005] = 'InteropIFDOffset';
- $tags[0xA20B] = 'FlashEnergy';
- $tags[0xA20C] = 'SpatialFrequencyResponse';
- $tags[0xA20E] = 'FocalPlaneXResolution';
- $tags[0xA20F] = 'FocalPlaneYResolution';
- $tags[0xA210] = 'FocalPlaneResolutionUnit';
- $tags[0xA214] = 'SubjectLocation';
- $tags[0xA215] = 'ExposureIndex';
- $tags[0xA217] = 'SensingMethod';
- $tags[0xA300] = 'FileSource';
- $tags[0xA301] = 'SceneType';
- $tags[0xA302] = 'CFAPattern';
- }
- elseif ($mode == 'interop') {
- $tags[0x0001] = 'InteroperabilityIndex';
- $tags[0x0002] = 'InteroperabilityVersion';
- $tags[0x1000] = 'RelatedImageFileFormat';
- $tags[0x1001] = 'RelatedImageWidth';
- $tags[0x1002] = 'RelatedImageLength';
- }
- elseif ($mode == 'gps') {
- $tags[0x0000] = 'GPSVersionID';
- $tags[0x0001] = 'GPSLatitudeRef';
- $tags[0x0002] = 'GPSLatitude';
- $tags[0x0003] = 'GPSLongitudeRef';
- $tags[0x0004] = 'GPSLongitude';
- $tags[0x0005] = 'GPSAltitudeRef';
- $tags[0x0006] = 'GPSAltitude';
- $tags[0x0007] = 'GPSTimeStamp';
- $tags[0x0008] = 'GPSSatellites';
- $tags[0x0009] = 'GPSStatus';
- $tags[0x000A] = 'GPSMeasureMode';
- $tags[0x000B] = 'GPSDOP';
- $tags[0x000C] = 'GPSSpeedRef';
- $tags[0x000D] = 'GPSSpeed';
- $tags[0x000E] = 'GPSTrackRef';
- $tags[0x000F] = 'GPSTrack';
- $tags[0x0010] = 'GPSImgDirectionRef';
- $tags[0x0011] = 'GPSImgDirection';
- $tags[0x0012] = 'GPSMapDatum';
- $tags[0x0013] = 'GPSDestLatitudeRef';
- $tags[0x0014] = 'GPSDestLatitude';
- $tags[0x0015] = 'GPSDestLongitudeRef';
- $tags[0x0016] = 'GPSDestLongitude';
- $tags[0x0017] = 'GPSDestBearingRef';
- $tags[0x0018] = 'GPSDestBearing';
- $tags[0x0019] = 'GPSDestDistanceRef';
- $tags[0x001A] = 'GPSDestDistance';
- }
-
- return $tags;
- }
-
- /*************************************************************/
- function _exifTagTypes($mode)
- {
- $tags = array();
-
- if ($mode == 'ifd0') {
- $tags[0x010E] = array(2, 0); // ImageDescription -> ASCII, Any
- $tags[0x010F] = array(2, 0); // Make -> ASCII, Any
- $tags[0x0110] = array(2, 0); // Model -> ASCII, Any
- $tags[0x0112] = array(3, 1); // Orientation -> SHORT, 1
- $tags[0x011A] = array(5, 1); // XResolution -> RATIONAL, 1
- $tags[0x011B] = array(5, 1); // YResolution -> RATIONAL, 1
- $tags[0x0128] = array(3, 1); // ResolutionUnit -> SHORT
- $tags[0x0131] = array(2, 0); // Software -> ASCII, Any
- $tags[0x0132] = array(2, 20); // DateTime -> ASCII, 20
- $tags[0x013B] = array(2, 0); // Artist -> ASCII, Any
- $tags[0x013E] = array(5, 2); // WhitePoint -> RATIONAL, 2
- $tags[0x013F] = array(5, 6); // PrimaryChromaticities -> RATIONAL, 6
- $tags[0x0211] = array(5, 3); // YCbCrCoefficients -> RATIONAL, 3
- $tags[0x0212] = array(3, 2); // YCbCrSubSampling -> SHORT, 2
- $tags[0x0213] = array(3, 1); // YCbCrPositioning -> SHORT, 1
- $tags[0x0214] = array(5, 6); // ReferenceBlackWhite -> RATIONAL, 6
- $tags[0x8298] = array(2, 0); // Copyright -> ASCII, Any
- $tags[0x8769] = array(4, 1); // ExifIFDOffset -> LONG, 1
- $tags[0x8825] = array(4, 1); // GPSIFDOffset -> LONG, 1
- }
- if ($mode == 'ifd1') {
- $tags[0x00FE] = array(4, 1); // TIFFNewSubfileType -> LONG, 1
- $tags[0x00FF] = array(3, 1); // TIFFSubfileType -> SHORT, 1
- $tags[0x0100] = array(4, 1); // TIFFImageWidth -> LONG (or SHORT), 1
- $tags[0x0101] = array(4, 1); // TIFFImageHeight -> LONG (or SHORT), 1
- $tags[0x0102] = array(3, 3); // TIFFBitsPerSample -> SHORT, 3
- $tags[0x0103] = array(3, 1); // TIFFCompression -> SHORT, 1
- $tags[0x0106] = array(3, 1); // TIFFPhotometricInterpretation -> SHORT, 1
- $tags[0x0107] = array(3, 1); // TIFFThreshholding -> SHORT, 1
- $tags[0x0108] = array(3, 1); // TIFFCellWidth -> SHORT, 1
- $tags[0x0109] = array(3, 1); // TIFFCellLength -> SHORT, 1
- $tags[0x010A] = array(3, 1); // TIFFFillOrder -> SHORT, 1
- $tags[0x010E] = array(2, 0); // TIFFImageDescription -> ASCII, Any
- $tags[0x010F] = array(2, 0); // TIFFMake -> ASCII, Any
- $tags[0x0110] = array(2, 0); // TIFFModel -> ASCII, Any
- $tags[0x0111] = array(4, 0); // TIFFStripOffsets -> LONG (or SHORT), Any (one per strip)
- $tags[0x0112] = array(3, 1); // TIFFOrientation -> SHORT, 1
- $tags[0x0115] = array(3, 1); // TIFFSamplesPerPixel -> SHORT, 1
- $tags[0x0116] = array(4, 1); // TIFFRowsPerStrip -> LONG (or SHORT), 1
- $tags[0x0117] = array(4, 0); // TIFFStripByteCounts -> LONG (or SHORT), Any (one per strip)
- $tags[0x0118] = array(3, 0); // TIFFMinSampleValue -> SHORT, Any (SamplesPerPixel)
- $tags[0x0119] = array(3, 0); // TIFFMaxSampleValue -> SHORT, Any (SamplesPerPixel)
- $tags[0x011A] = array(5, 1); // TIFFXResolution -> RATIONAL, 1
- $tags[0x011B] = array(5, 1); // TIFFYResolution -> RATIONAL, 1
- $tags[0x011C] = array(3, 1); // TIFFPlanarConfiguration -> SHORT, 1
- $tags[0x0122] = array(3, 1); // TIFFGrayResponseUnit -> SHORT, 1
- $tags[0x0123] = array(3, 0); // TIFFGrayResponseCurve -> SHORT, Any (2^BitsPerSample)
- $tags[0x0128] = array(3, 1); // TIFFResolutionUnit -> SHORT, 1
- $tags[0x0131] = array(2, 0); // TIFFSoftware -> ASCII, Any
- $tags[0x0132] = array(2, 20); // TIFFDateTime -> ASCII, 20
- $tags[0x013B] = array(2, 0); // TIFFArtist -> ASCII, Any
- $tags[0x013C] = array(2, 0); // TIFFHostComputer -> ASCII, Any
- $tags[0x0140] = array(3, 0); // TIFFColorMap -> SHORT, Any (3 * 2^BitsPerSample)
- $tags[0x0152] = array(3, 0); // TIFFExtraSamples -> SHORT, Any (SamplesPerPixel - 3)
- $tags[0x0201] = array(4, 1); // TIFFJFIFOffset -> LONG, 1
- $tags[0x0202] = array(4, 1); // TIFFJFIFLength -> LONG, 1
- $tags[0x0211] = array(5, 3); // TIFFYCbCrCoefficients -> RATIONAL, 3
- $tags[0x0212] = array(3, 2); // TIFFYCbCrSubSampling -> SHORT, 2
- $tags[0x0213] = array(3, 1); // TIFFYCbCrPositioning -> SHORT, 1
- $tags[0x0214] = array(5, 6); // TIFFReferenceBlackWhite -> RATIONAL, 6
- $tags[0x8298] = array(2, 0); // TIFFCopyright -> ASCII, Any
- $tags[0x9286] = array(2, 0); // TIFFUserComment -> ASCII, Any
- }
- elseif ($mode == 'exif') {
- $tags[0x829A] = array(5, 1); // ExposureTime -> RATIONAL, 1
- $tags[0x829D] = array(5, 1); // FNumber -> RATIONAL, 1
- $tags[0x8822] = array(3, 1); // ExposureProgram -> SHORT, 1
- $tags[0x8824] = array(2, 0); // SpectralSensitivity -> ASCII, Any
- $tags[0x8827] = array(3, 0); // ISOSpeedRatings -> SHORT, Any
- $tags[0x8828] = array(7, 0); // OECF -> UNDEFINED, Any
- $tags[0x9000] = array(7, 4); // EXIFVersion -> UNDEFINED, 4
- $tags[0x9003] = array(2, 20); // DatetimeOriginal -> ASCII, 20
- $tags[0x9004] = array(2, 20); // DatetimeDigitized -> ASCII, 20
- $tags[0x9101] = array(7, 4); // ComponentsConfiguration -> UNDEFINED, 4
- $tags[0x9102] = array(5, 1); // CompressedBitsPerPixel -> RATIONAL, 1
- $tags[0x9201] = array(10, 1); // ShutterSpeedValue -> SRATIONAL, 1
- $tags[0x9202] = array(5, 1); // ApertureValue -> RATIONAL, 1
- $tags[0x9203] = array(10, 1); // BrightnessValue -> SRATIONAL, 1
- $tags[0x9204] = array(10, 1); // ExposureBiasValue -> SRATIONAL, 1
- $tags[0x9205] = array(5, 1); // MaxApertureValue -> RATIONAL, 1
- $tags[0x9206] = array(5, 1); // SubjectDistance -> RATIONAL, 1
- $tags[0x9207] = array(3, 1); // MeteringMode -> SHORT, 1
- $tags[0x9208] = array(3, 1); // LightSource -> SHORT, 1
- $tags[0x9209] = array(3, 1); // Flash -> SHORT, 1
- $tags[0x920A] = array(5, 1); // FocalLength -> RATIONAL, 1
- $tags[0x927C] = array(7, 0); // MakerNote -> UNDEFINED, Any
- $tags[0x9286] = array(7, 0); // UserComment -> UNDEFINED, Any
- $tags[0x9290] = array(2, 0); // SubSecTime -> ASCII, Any
- $tags[0x9291] = array(2, 0); // SubSecTimeOriginal -> ASCII, Any
- $tags[0x9292] = array(2, 0); // SubSecTimeDigitized -> ASCII, Any
- $tags[0xA000] = array(7, 4); // FlashPixVersion -> UNDEFINED, 4
- $tags[0xA001] = array(3, 1); // ColorSpace -> SHORT, 1
- $tags[0xA002] = array(4, 1); // PixelXDimension -> LONG (or SHORT), 1
- $tags[0xA003] = array(4, 1); // PixelYDimension -> LONG (or SHORT), 1
- $tags[0xA004] = array(2, 13); // RelatedSoundFile -> ASCII, 13
- $tags[0xA005] = array(4, 1); // InteropIFDOffset -> LONG, 1
- $tags[0xA20B] = array(5, 1); // FlashEnergy -> RATIONAL, 1
- $tags[0xA20C] = array(7, 0); // SpatialFrequencyResponse -> UNDEFINED, Any
- $tags[0xA20E] = array(5, 1); // FocalPlaneXResolution -> RATIONAL, 1
- $tags[0xA20F] = array(5, 1); // FocalPlaneYResolution -> RATIONAL, 1
- $tags[0xA210] = array(3, 1); // FocalPlaneResolutionUnit -> SHORT, 1
- $tags[0xA214] = array(3, 2); // SubjectLocation -> SHORT, 2
- $tags[0xA215] = array(5, 1); // ExposureIndex -> RATIONAL, 1
- $tags[0xA217] = array(3, 1); // SensingMethod -> SHORT, 1
- $tags[0xA300] = array(7, 1); // FileSource -> UNDEFINED, 1
- $tags[0xA301] = array(7, 1); // SceneType -> UNDEFINED, 1
- $tags[0xA302] = array(7, 0); // CFAPattern -> UNDEFINED, Any
- }
- elseif ($mode == 'interop') {
- $tags[0x0001] = array(2, 0); // InteroperabilityIndex -> ASCII, Any
- $tags[0x0002] = array(7, 4); // InteroperabilityVersion -> UNKNOWN, 4
- $tags[0x1000] = array(2, 0); // RelatedImageFileFormat -> ASCII, Any
- $tags[0x1001] = array(4, 1); // RelatedImageWidth -> LONG (or SHORT), 1
- $tags[0x1002] = array(4, 1); // RelatedImageLength -> LONG (or SHORT), 1
- }
- elseif ($mode == 'gps') {
- $tags[0x0000] = array(1, 4); // GPSVersionID -> BYTE, 4
- $tags[0x0001] = array(2, 2); // GPSLatitudeRef -> ASCII, 2
- $tags[0x0002] = array(5, 3); // GPSLatitude -> RATIONAL, 3
- $tags[0x0003] = array(2, 2); // GPSLongitudeRef -> ASCII, 2
- $tags[0x0004] = array(5, 3); // GPSLongitude -> RATIONAL, 3
- $tags[0x0005] = array(2, 2); // GPSAltitudeRef -> ASCII, 2
- $tags[0x0006] = array(5, 1); // GPSAltitude -> RATIONAL, 1
- $tags[0x0007] = array(5, 3); // GPSTimeStamp -> RATIONAL, 3
- $tags[0x0008] = array(2, 0); // GPSSatellites -> ASCII, Any
- $tags[0x0009] = array(2, 2); // GPSStatus -> ASCII, 2
- $tags[0x000A] = array(2, 2); // GPSMeasureMode -> ASCII, 2
- $tags[0x000B] = array(5, 1); // GPSDOP -> RATIONAL, 1
- $tags[0x000C] = array(2, 2); // GPSSpeedRef -> ASCII, 2
- $tags[0x000D] = array(5, 1); // GPSSpeed -> RATIONAL, 1
- $tags[0x000E] = array(2, 2); // GPSTrackRef -> ASCII, 2
- $tags[0x000F] = array(5, 1); // GPSTrack -> RATIONAL, 1
- $tags[0x0010] = array(2, 2); // GPSImgDirectionRef -> ASCII, 2
- $tags[0x0011] = array(5, 1); // GPSImgDirection -> RATIONAL, 1
- $tags[0x0012] = array(2, 0); // GPSMapDatum -> ASCII, Any
- $tags[0x0013] = array(2, 2); // GPSDestLatitudeRef -> ASCII, 2
- $tags[0x0014] = array(5, 3); // GPSDestLatitude -> RATIONAL, 3
- $tags[0x0015] = array(2, 2); // GPSDestLongitudeRef -> ASCII, 2
- $tags[0x0016] = array(5, 3); // GPSDestLongitude -> RATIONAL, 3
- $tags[0x0017] = array(2, 2); // GPSDestBearingRef -> ASCII, 2
- $tags[0x0018] = array(5, 1); // GPSDestBearing -> RATIONAL, 1
- $tags[0x0019] = array(2, 2); // GPSDestDistanceRef -> ASCII, 2
- $tags[0x001A] = array(5, 1); // GPSDestDistance -> RATIONAL, 1
- }
-
- return $tags;
- }
-
- /*************************************************************/
- function _exifNameTags($mode)
- {
- $tags = $this->_exifTagNames($mode);
- return $this->_names2Tags($tags);
- }
-
- /*************************************************************/
- function _iptcTagNames()
- {
- $tags = array();
- $tags[0x14] = 'SuplementalCategories';
- $tags[0x19] = 'Keywords';
- $tags[0x78] = 'Caption';
- $tags[0x7A] = 'CaptionWriter';
- $tags[0x69] = 'Headline';
- $tags[0x28] = 'SpecialInstructions';
- $tags[0x0F] = 'Category';
- $tags[0x50] = 'Byline';
- $tags[0x55] = 'BylineTitle';
- $tags[0x6E] = 'Credit';
- $tags[0x73] = 'Source';
- $tags[0x74] = 'CopyrightNotice';
- $tags[0x05] = 'ObjectName';
- $tags[0x5A] = 'City';
- $tags[0x5C] = 'Sublocation';
- $tags[0x5F] = 'ProvinceState';
- $tags[0x65] = 'CountryName';
- $tags[0x67] = 'OriginalTransmissionReference';
- $tags[0x37] = 'DateCreated';
- $tags[0x0A] = 'CopyrightFlag';
-
- return $tags;
- }
-
- /*************************************************************/
- function & _iptcNameTags()
- {
- $tags = $this->_iptcTagNames();
- return $this->_names2Tags($tags);
- }
-
- /*************************************************************/
- function _names2Tags($tags2Names)
- {
- $names2Tags = array();
- reset($tags2Names);
- while (list($tag, $name) = each($tags2Names)) {
- $names2Tags[$name] = $tag;
- }
-
- return $names2Tags;
- }
-
- /*************************************************************/
- function _getByte(&$data, $pos)
- {
- return ord($data{$pos});
- }
-
- /*************************************************************/
- function _putByte(&$data, $pos, $val)
- {
- $val = intval($val);
-
- $data{$pos} = chr($val);
-
- return $pos + 1;
- }
-
- /*************************************************************/
- function _getShort(&$data, $pos, $bigEndian = true)
- {
- if ($bigEndian) {
- return (ord($data{$pos}) << 8)
- + ord($data{$pos + 1});
- }
- else {
- return ord($data{$pos})
- + (ord($data{$pos + 1}) << 8);
- }
- }
-
- /*************************************************************/
- function _putShort(&$data, $pos = 0, $val, $bigEndian = true)
- {
- $val = intval($val);
-
- if ($bigEndian) {
- $data{$pos + 0} = chr(($val & 0x0000FF00) >> 8);
- $data{$pos + 1} = chr(($val & 0x000000FF) >> 0);
- }
- else {
- $data{$pos + 0} = chr(($val & 0x00FF) >> 0);
- $data{$pos + 1} = chr(($val & 0xFF00) >> 8);
- }
-
- return $pos + 2;
- }
-
- /*************************************************************/
- function _getLong(&$data, $pos, $bigEndian = true)
- {
- if ($bigEndian) {
- return (ord($data{$pos}) << 24)
- + (ord($data{$pos + 1}) << 16)
- + (ord($data{$pos + 2}) << 8)
- + ord($data{$pos + 3});
- }
- else {
- return ord($data{$pos})
- + (ord($data{$pos + 1}) << 8)
- + (ord($data{$pos + 2}) << 16)
- + (ord($data{$pos + 3}) << 24);
- }
- }
-
- /*************************************************************/
- function _putLong(&$data, $pos, $val, $bigEndian = true)
- {
- $val = intval($val);
-
- if ($bigEndian) {
- $data{$pos + 0} = chr(($val & 0xFF000000) >> 24);
- $data{$pos + 1} = chr(($val & 0x00FF0000) >> 16);
- $data{$pos + 2} = chr(($val & 0x0000FF00) >> 8);
- $data{$pos + 3} = chr(($val & 0x000000FF) >> 0);
- }
- else {
- $data{$pos + 0} = chr(($val & 0x000000FF) >> 0);
- $data{$pos + 1} = chr(($val & 0x0000FF00) >> 8);
- $data{$pos + 2} = chr(($val & 0x00FF0000) >> 16);
- $data{$pos + 3} = chr(($val & 0xFF000000) >> 24);
- }
-
- return $pos + 4;
- }
-
- /*************************************************************/
- function & _getNullString(&$data, $pos)
- {
- $str = '';
- $max = strlen($data);
-
- while ($pos < $max) {
- if (ord($data{$pos}) == 0) {
- return $str;
- }
- else {
- $str .= $data{$pos};
- }
- $pos++;
- }
-
- return $str;
- }
-
- /*************************************************************/
- function & _getFixedString(&$data, $pos, $length = -1)
- {
- if ($length == -1) {
- $length = strlen($data) - $pos;
- }
-
- return substr($data, $pos, $length);
- }
-
- /*************************************************************/
- function _putString(&$data, $pos, &$str)
- {
- $len = strlen($str);
- for ($i = 0; $i < $len; $i++) {
- $data{$pos + $i} = $str{$i};
- }
-
- return $pos + $len;
- }
-
- /*************************************************************/
- function _hexDump(&$data, $start = 0, $length = -1)
- {
- if (($length == -1) || (($length + $start) > strlen($data))) {
- $end = strlen($data);
- }
- else {
- $end = $start + $length;
- }
-
- $ascii = '';
- $count = 0;
-
- echo "<tt>\n";
-
- while ($start < $end) {
- if (($count % 16) == 0) {
- echo sprintf('%04d', $count) . ': ';
- }
-
- $c = ord($data{$start});
- $count++;
- $start++;
-
- $aux = dechex($c);
- if (strlen($aux) == 1)
- echo '0';
- echo $aux . ' ';
-
- if ($c == 60)
- $ascii .= '<';
- elseif ($c == 62)
- $ascii .= '>';
- elseif ($c == 32)
- $ascii .= ' ';
- elseif ($c > 32)
- $ascii .= chr($c);
- else
- $ascii .= '.';
-
- if (($count % 4) == 0) {
- echo ' - ';
- }
-
- if (($count % 16) == 0) {
- echo ': ' . $ascii . "<br>\n";
- $ascii = '';
- }
- }
-
- if ($ascii != '') {
- while (($count % 16) != 0) {
- echo '-- ';
- $count++;
- if (($count % 4) == 0) {
- echo ' - ';
- }
- }
- echo ': ' . $ascii . "<br>\n";
- }
-
- echo "</tt>\n";
- }
-
-/*****************************************************************/
-}
-
-/* vim: set expandtab tabstop=4 shiftwidth=4: */
-
+<?php
+/**
+ * JPEG metadata reader/writer
+ *
+ * @license PHP license 2.0 (http://www.php.net/license/2_02.txt)
+ * @link http://www.zonageek.com/software/php/jpeg/index.php
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @todo Add support for Maker Notes, Extend for GIF and PNG metadata
+ */
+
+// This class is a modified and enhanced version of the JPEG class by
+// Sebastian Delmont. Original Copyright notice follows:
+//
+// +----------------------------------------------------------------------+
+// | PHP version 4.0 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/2_02.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license at php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Sebastian Delmont <sdelmont at zonageek.com> |
+// +----------------------------------------------------------------------+
+
+class JpegMeta
+{
+ var $_fileName;
+ var $_fp = null;
+ var $_type = 'unknown';
+
+ var $_markers;
+ var $_info;
+
+
+ /**
+ * Constructor
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function JpegMeta($fileName)
+ {
+
+ $this->_fileName = $fileName;
+
+ $this->_fp = null;
+ $this->_type = 'unknown';
+
+ unset($this->_info);
+ unset($this->_markers);
+ }
+
+ /**
+ * Returns all gathered info as multidim array
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function & getRawInfo()
+ {
+ $this->_parseAll();
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ return $this->_info;
+ }
+
+ /**
+ * Returns basic image info
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function & getBasicInfo()
+ {
+ $this->_parseAll();
+
+ $info = array();
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ $info['Name'] = $this->_info['file']['Name'];
+ if (isset($this->_info['file']['Url'])) {
+ $info['Url'] = $this->_info['file']['Url'];
+ $info['NiceSize'] = "???KB";
+ }
+ else {
+ $info['Size'] = $this->_info['file']['Size'];
+ $info['NiceSize'] = $this->_info['file']['NiceSize'];
+ }
+
+ if (@isset($this->_info['sof']['Format'])) {
+ $info['Format'] = $this->_info['sof']['Format'] . " JPEG";
+ }
+ else {
+ $info['Format'] = $this->_info['sof']['Format'] . " JPEG";
+ }
+
+ if (@isset($this->_info['sof']['ColorChannels'])) {
+ $info['ColorMode'] = ($this->_info['sof']['ColorChannels'] > 1) ? "Color" : "B&W";
+ }
+
+ $info['Width'] = $this->getWidth();
+ $info['Height'] = $this->getHeight();
+ $info['DimStr'] = $this->getDimStr();
+
+ $dates = $this->getDates();
+
+ $info['DateTime'] = $dates['EarliestTime'];
+ $info['DateTimeStr'] = $dates['EarliestTimeStr'];
+
+ $info['HasThumbnail'] = $this->hasThumbnail();
+
+ return $info;
+ }
+
+
+ /**
+ * Convinience function to access nearly all available Data
+ * through one function
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function getField($fields)
+ {
+ if(!is_array($fields)) $fields = array($fields);
+ $info = false;
+ foreach($fields as $field){
+ if(strtolower(substr($field,0,5)) == 'iptc.'){
+ $info = $this->getIPTCField(substr($field,5));
+ }elseif(strtolower(substr($field,0,5)) == 'exif.'){
+ $info = $this->getExifField(substr($field,5));
+ }elseif(strtolower(substr($field,0,5)) == 'file.'){
+ $info = $this->getFileField(substr($field,5));
+ }elseif(strtolower(substr($field,0,5)) == 'date.'){
+ $info = $this->getDateField(substr($field,5));
+ }elseif(strtolower($field) == 'simple.camera'){
+ $info = $this->getCamera();
+ }elseif(strtolower($field) == 'simple.raw'){
+ return $this->getRawInfo();
+ }elseif(strtolower($field) == 'simple.title'){
+ $info = $this->getTitle();
+ }elseif(strtolower($field) == 'simple.shutterspeed'){
+ $info = $this->getShutterSpeed();
+ }else{
+ $info = $this->getExifField($field);
+ }
+ if($info != false) break;
+ }
+
+ if($info === false) $info = $alt;
+ if(is_array($info)){
+ if(isset($info['val'])){
+ $info = $info['val'];
+ }else{
+ $info = join(', ',$info);
+ }
+ }
+ return trim($info);
+ }
+
+ /**
+ * Convinience function to set nearly all available Data
+ * through one function
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function setField($field, $value)
+ {
+ if(strtolower(substr($field,0,5)) == 'iptc.'){
+ return $this->setIPTCField(substr($field,5),$value);
+ }elseif(strtolower(substr($field,0,5)) == 'exif.'){
+ return $this->setExifField(substr($field,5),$value);
+ }else{
+ return $this->setExifField($field,$value);
+ }
+ }
+
+ /**
+ * Convinience function to delete nearly all available Data
+ * through one function
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function deleteField($field)
+ {
+ if(strtolower(substr($field,0,5)) == 'iptc.'){
+ return $this->deleteIPTCField(substr($field,5));
+ }elseif(strtolower(substr($field,0,5)) == 'exif.'){
+ return $this->deleteExifField(substr($field,5));
+ }else{
+ return $this->deleteExifField($field);
+ }
+ }
+
+ /**
+ * Return a date field
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function getDateField($field)
+ {
+ if (!isset($this->_info['dates'])) {
+ $this->_info['dates'] = $this->getDates();
+ }
+
+ if (isset($this->_info['dates'][$field])) {
+ return $this->_info['dates'][$field];
+ }
+
+ return false;
+ }
+
+ /**
+ * Return a file info field
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function getFileField($field)
+ {
+ if (!isset($this->_info['file'])) {
+ $this->_parseFileInfo();
+ }
+
+ if (isset($this->_info['file'][$field])) {
+ return $this->_info['file'][$field];
+ }
+
+ return false;
+ }
+
+ /**
+ * Return the camera info (Maker and Model)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @todo handle makernotes
+ */
+ function getCamera(){
+ $make = $this->getField(array('Exif.Make','Exif.TIFFMake'));
+ $model = $this->getField(array('Exif.Model','Exif.TIFFModel'));
+ $cam = trim("$make $model");
+ if(empty($cam)) return false;
+ return $cam;
+ }
+
+ /**
+ * Return shutter speed as a ratio
+ *
+ * @author Joe Lapp <joe.lapp at pobox.com>
+ */
+ function getShutterSpeed()
+ {
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+ if(!isset($this->_info['exif']['ExposureTime'])){
+ return '';
+ }
+
+ $field = $this->_info['exif']['ExposureTime'];
+ if($field['den'] == 1) return $field['num'];
+ return $field['num'].'/'.$field['den'];
+ }
+
+ /**
+ * Return an EXIF field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function getExifField($field)
+ {
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['exif'][$field])) {
+ return $this->_info['exif'][$field];
+ }
+
+ return false;
+ }
+
+ /**
+ * Return an Adobe Field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function getAdobeField($field)
+ {
+ if (!isset($this->_info['adobe'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['adobe'][$field])) {
+ return $this->_info['adobe'][$field];
+ }
+
+ return false;
+ }
+
+ /**
+ * Return an IPTC field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function getIPTCField($field)
+ {
+ if (!isset($this->_info['iptc'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['iptc'][$field])) {
+ return $this->_info['iptc'][$field];
+ }
+
+ return false;
+ }
+
+ /**
+ * Set an EXIF field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ * @author Joe Lapp <joe.lapp at pobox.com>
+ */
+ function setExifField($field, $value)
+ {
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if ($this->_info['exif'] == false) {
+ $this->_info['exif'] = array();
+ }
+
+ // make sure datetimes are in correct format
+ if(strlen($field) >= 8 && strtolower(substr($field, 0, 8)) == 'datetime') {
+ if(strlen($value) < 8 || $value{4} != ':' || $value{7} != ':') {
+ $value = date('Y:m:d H:i:s', strtotime($value));
+ }
+ }
+
+ $this->_info['exif'][$field] = $value;
+
+ return true;
+ }
+
+ /**
+ * Set an Adobe Field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function setAdobeField($field, $value)
+ {
+ if (!isset($this->_info['adobe'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if ($this->_info['adobe'] == false) {
+ $this->_info['adobe'] = array();
+ }
+
+ $this->_info['adobe'][$field] = $value;
+
+ return true;
+ }
+
+ /**
+ * Calculates the multiplier needed to resize the image to the given
+ * dimensions
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function getResizeRatio($maxwidth,$maxheight=0){
+ if(!$maxheight) $maxheight = $maxwidth;
+
+ $w = $this->getField('File.Width');
+ $h = $this->getField('File.Height');
+
+ $ratio = 1;
+ if($w >= $h){
+ if($w >= $maxwidth){
+ $ratio = $maxwidth/$w;
+ }elseif($h > $maxheight){
+ $ratio = $maxheight/$h;
+ }
+ }else{
+ if($h >= $maxheight){
+ $ratio = $maxheight/$h;
+ }elseif($w > $maxwidth){
+ $ratio = $maxwidth/$w;
+ }
+ }
+ return $ratio;
+ }
+
+
+ /**
+ * Set an IPTC field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function setIPTCField($field, $value)
+ {
+ if (!isset($this->_info['iptc'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if ($this->_info['iptc'] == false) {
+ $this->_info['iptc'] = array();
+ }
+
+ $this->_info['iptc'][$field] = $value;
+
+ return true;
+ }
+
+ /**
+ * Delete an EXIF field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function deleteExifField($field)
+ {
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if ($this->_info['exif'] != false) {
+ unset($this->_info['exif'][$field]);
+ }
+
+ return true;
+ }
+
+ /**
+ * Delete an Adobe field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function deleteAdobeField($field)
+ {
+ if (!isset($this->_info['adobe'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if ($this->_info['adobe'] != false) {
+ unset($this->_info['adobe'][$field]);
+ }
+
+ return true;
+ }
+
+ /**
+ * Delete an IPTC field
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function deleteIPTCField($field)
+ {
+ if (!isset($this->_info['iptc'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if ($this->_info['iptc'] != false) {
+ unset($this->_info['iptc'][$field]);
+ }
+
+ return true;
+ }
+
+ /**
+ * Get the image's title, tries various fields
+ *
+ * @param int $max maximum number chars (keeps words)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function getTitle($max=80){
+ $cap = '';
+
+ // try various fields
+ $cap = $this->getField(array('Iptc.Headline',
+ 'Iptc.Caption',
+ 'Exif.UserComment',
+ 'Exif.TIFFUserComment',
+ 'Exif.TIFFImageDescription',
+ 'File.Name'));
+ if (empty($cap)) return false;
+
+ if(!$max) return $cap;
+ // Shorten to 80 chars (keeping words)
+ $new = preg_replace('/\n.+$/','',wordwrap($cap, $max));
+ if($new != $cap) $new .= '...';
+
+ return $new;
+ }
+
+ /**
+ * Gather various date fields
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function getDates()
+ {
+ $this->_parseAll();
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ $dates = array();
+
+ $latestTime = 0;
+ $latestTimeSource = "";
+ $earliestTime = time();
+ $earliestTimeSource = "";
+
+ if (@isset($this->_info['exif']['DateTime'])) {
+ $dates['ExifDateTime'] = $this->_info['exif']['DateTime'];
+
+ $aux = $this->_info['exif']['DateTime'];
+ $aux{4} = "-";
+ $aux{7} = "-";
+ $t = strtotime($aux);
+
+ if ($t > $latestTime) {
+ $latestTime = $t;
+ $latestTimeSource = "ExifDateTime";
+ }
+
+ if ($t < $earliestTime) {
+ $earliestTime = $t;
+ $earliestTimeSource = "ExifDateTime";
+ }
+ }
+
+ if (@isset($this->_info['exif']['DateTimeOriginal'])) {
+ $dates['ExifDateTimeOriginal'] = $this->_info['exif']['DateTime'];
+
+ $aux = $this->_info['exif']['DateTimeOriginal'];
+ $aux{4} = "-";
+ $aux{7} = "-";
+ $t = strtotime($aux);
+
+ if ($t > $latestTime) {
+ $latestTime = $t;
+ $latestTimeSource = "ExifDateTimeOriginal";
+ }
+
+ if ($t < $earliestTime) {
+ $earliestTime = $t;
+ $earliestTimeSource = "ExifDateTimeOriginal";
+ }
+ }
+
+ if (@isset($this->_info['exif']['DateTimeDigitized'])) {
+ $dates['ExifDateTimeDigitized'] = $this->_info['exif']['DateTime'];
+
+ $aux = $this->_info['exif']['DateTimeDigitized'];
+ $aux{4} = "-";
+ $aux{7} = "-";
+ $t = strtotime($aux);
+
+ if ($t > $latestTime) {
+ $latestTime = $t;
+ $latestTimeSource = "ExifDateTimeDigitized";
+ }
+
+ if ($t < $earliestTime) {
+ $earliestTime = $t;
+ $earliestTimeSource = "ExifDateTimeDigitized";
+ }
+ }
+
+ if (@isset($this->_info['iptc']['DateCreated'])) {
+ $dates['IPTCDateCreated'] = $this->_info['iptc']['DateCreated'];
+
+ $aux = $this->_info['iptc']['DateCreated'];
+ $aux = substr($aux, 0, 4) . "-" . substr($aux, 4, 2) . "-" . substr($aux, 6, 2);
+ $t = strtotime($aux);
+
+ if ($t > $latestTime) {
+ $latestTime = $t;
+ $latestTimeSource = "IPTCDateCreated";
+ }
+
+ if ($t < $earliestTime) {
+ $earliestTime = $t;
+ $earliestTimeSource = "IPTCDateCreated";
+ }
+ }
+
+ if (@isset($this->_info['file']['UnixTime'])) {
+ $dates['FileModified'] = $this->_info['file']['UnixTime'];
+
+ $t = $this->_info['file']['UnixTime'];
+
+ if ($t > $latestTime) {
+ $latestTime = $t;
+ $latestTimeSource = "FileModified";
+ }
+
+ if ($t < $earliestTime) {
+ $earliestTime = $t;
+ $earliestTimeSource = "FileModified";
+ }
+ }
+
+ $dates['Time'] = $earliestTime;
+ $dates['TimeSource'] = $earliestTimeSource;
+ $dates['TimeStr'] = date("Y-m-d H:i:s", $earliestTime);
+ $dates['EarliestTime'] = $earliestTime;
+ $dates['EarliestTimeSource'] = $earliestTimeSource;
+ $dates['EarliestTimeStr'] = date("Y-m-d H:i:s", $earliestTime);
+ $dates['LatestTime'] = $latestTime;
+ $dates['LatestTimeSource'] = $latestTimeSource;
+ $dates['LatestTimeStr'] = date("Y-m-d H:i:s", $latestTime);
+
+ return $dates;
+ }
+
+ /**
+ * Get the image width, tries various fields
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function getWidth()
+ {
+ if (!isset($this->_info['sof'])) {
+ $this->_parseMarkerSOF();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['sof']['ImageWidth'])) {
+ return $this->_info['sof']['ImageWidth'];
+ }
+
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+
+ if (isset($this->_info['exif']['PixelXDimension'])) {
+ return $this->_info['exif']['PixelXDimension'];
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the image height, tries various fields
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function getHeight()
+ {
+ if (!isset($this->_info['sof'])) {
+ $this->_parseMarkerSOF();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['sof']['ImageHeight'])) {
+ return $this->_info['sof']['ImageHeight'];
+ }
+
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+
+ if (isset($this->_info['exif']['PixelYDimension'])) {
+ return $this->_info['exif']['PixelYDimension'];
+ }
+
+ return false;
+ }
+
+ /**
+ * Get an dimension string for use in img tag
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function getDimStr()
+ {
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ $w = $this->getWidth();
+ $h = $this->getHeight();
+
+ return "width='" . $w . "' height='" . $h . "'";
+ }
+
+ /**
+ * Checks for an embedded thumbnail
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function hasThumbnail($which = 'any')
+ {
+ if (($which == 'any') || ($which == 'exif')) {
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['exif']) && is_array($this->_info['exif'])) {
+ if (isset($this->_info['exif']['JFIFThumbnail'])) {
+ return 'exif';
+ }
+ }
+ }
+
+ if ($which == 'adobe') {
+ if (!isset($this->_info['adobe'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['adobe']) && is_array($this->_info['adobe'])) {
+ if (isset($this->_info['adobe']['ThumbnailData'])) {
+ return 'exif';
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Send embedded thumbnail to browser
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ */
+ function sendThumbnail($which = 'any')
+ {
+ $data = null;
+
+ if (($which == 'any') || ($which == 'exif')) {
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['exif']) && is_array($this->_info['exif'])) {
+ if (isset($this->_info['exif']['JFIFThumbnail'])) {
+ $data =& $this->_info['exif']['JFIFThumbnail'];
+ }
+ }
+ }
+
+ if (($which == 'adobe') || ($data == null)){
+ if (!isset($this->_info['adobe'])) {
+ $this->_parseMarkerAdobe();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (isset($this->_info['adobe']) && is_array($this->_info['adobe'])) {
+ if (isset($this->_info['adobe']['ThumbnailData'])) {
+ $data =& $this->_info['adobe']['ThumbnailData'];
+ }
+ }
+ }
+
+ if ($data != null) {
+ header("Content-type: image/jpeg");
+ echo $data;
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Save changed Metadata
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function save($fileName = "") {
+ if ($fileName == "") {
+ $tmpName = tempnam(dirname($this->_fileName),'_metatemp_');
+ $this->_writeJPEG($tmpName);
+ if (@file_exists($tmpName)) {
+ return io_rename($tmpName, $this->_fileName);
+ }
+ } else {
+ return $this->_writeJPEG($fileName);
+ }
+ return false;
+ }
+
+ /*************************************************************/
+ /* PRIVATE FUNCTIONS (Internal Use Only!) */
+ /*************************************************************/
+
+ /*************************************************************/
+ function _dispose()
+ {
+ $this->_fileName = $fileName;
+
+ $this->_fp = null;
+ $this->_type = 'unknown';
+
+ unset($this->_markers);
+ unset($this->_info);
+ }
+
+ /*************************************************************/
+ function _readJPEG()
+ {
+ unset($this->_markers);
+ unset($this->_info);
+ $this->_markers = array();
+ $this->_info = array();
+
+ $this->_fp = @fopen($this->_fileName, 'rb');
+ if ($this->_fp) {
+ if (file_exists($this->_fileName)) {
+ $this->_type = 'file';
+ }
+ else {
+ $this->_type = 'url';
+ }
+ }
+ else {
+ $this->_fp = null;
+ return false; // ERROR: Can't open file
+ }
+
+ // Check for the JPEG signature
+ $c1 = ord(fgetc($this->_fp));
+ $c2 = ord(fgetc($this->_fp));
+
+ if ($c1 != 0xFF || $c2 != 0xD8) { // (0xFF + SOI)
+ $this->_markers = null;
+ return false; // ERROR: File is not a JPEG
+ }
+
+ $count = 0;
+
+ $done = false;
+ $ok = true;
+
+ while (!$done) {
+ $capture = false;
+
+ // First, skip any non 0xFF bytes
+ $discarded = 0;
+ $c = ord(fgetc($this->_fp));
+ while (!feof($this->_fp) && ($c != 0xFF)) {
+ $discarded++;
+ $c = ord(fgetc($this->_fp));
+ }
+ // Then skip all 0xFF until the marker byte
+ do {
+ $marker = ord(fgetc($this->_fp));
+ } while (!feof($this->_fp) && ($marker == 0xFF));
+
+ if (feof($this->_fp)) {
+ return false; // ERROR: Unexpected EOF
+ }
+ if ($discarded != 0) {
+ return false; // ERROR: Extraneous data
+ }
+
+ $length = ord(fgetc($this->_fp)) * 256 + ord(fgetc($this->_fp));
+ if (feof($this->_fp)) {
+ return false; // ERROR: Unexpected EOF
+ }
+ if ($length < 2) {
+ return false; // ERROR: Extraneous data
+ }
+ $length = $length - 2; // The length we got counts itself
+
+ switch ($marker) {
+ case 0xC0: // SOF0
+ case 0xC1: // SOF1
+ case 0xC2: // SOF2
+ case 0xC9: // SOF9
+ case 0xE0: // APP0: JFIF data
+ case 0xE1: // APP1: EXIF data
+ case 0xED: // APP13: IPTC / Photoshop data
+ $capture = true;
+ break;
+ case 0xDA: // SOS: Start of scan... the image itself and the last block on the file
+ $capture = false;
+ $length = -1; // This field has no length... it includes all data until EOF
+ $done = true;
+ break;
+ default:
+ $capture = true;//false;
+ break;
+ }
+
+ $this->_markers[$count] = array();
+ $this->_markers[$count]['marker'] = $marker;
+ $this->_markers[$count]['length'] = $length;
+
+ if ($capture) {
+ $this->_markers[$count]['data'] =& fread($this->_fp, $length);
+ }
+ elseif (!$done) {
+ $result = @fseek($this->_fp, $length, SEEK_CUR);
+ // fseek doesn't seem to like HTTP 'files', but fgetc has no problem
+ if (!($result === 0)) {
+ for ($i = 0; $i < $length; $i++) {
+ fgetc($this->_fp);
+ }
+ }
+ }
+ $count++;
+ }
+
+ if ($this->_fp) {
+ fclose($this->_fp);
+ $this->_fp = null;
+ }
+
+ return $ok;
+ }
+
+ /*************************************************************/
+ function _parseAll()
+ {
+ if (!isset($this->_markers)) {
+ $this->_readJPEG();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ if (!isset($this->_info['jfif'])) {
+ $this->_parseMarkerJFIF();
+ }
+ if (!isset($this->_info['jpeg'])) {
+ $this->_parseMarkerSOF();
+ }
+ if (!isset($this->_info['exif'])) {
+ $this->_parseMarkerExif();
+ }
+ if (!isset($this->_info['adobe'])) {
+ $this->_parseMarkerAdobe();
+ }
+ if (!isset($this->_info['file'])) {
+ $this->_parseFileInfo();
+ }
+ }
+
+ /*************************************************************/
+ function _writeJPEG($outputName)
+ {
+ $this->_parseAll();
+
+ $wroteEXIF = false;
+ $wroteAdobe = false;
+
+ $this->_fp = @fopen($this->_fileName, 'r');
+ if ($this->_fp) {
+ if (file_exists($this->_fileName)) {
+ $this->_type = 'file';
+ }
+ else {
+ $this->_type = 'url';
+ }
+ }
+ else {
+ $this->_fp = null;
+ return false; // ERROR: Can't open file
+ }
+
+ $this->_fpout = fopen($outputName, 'wb');
+ if ($this->_fpout) {
+ }
+ else {
+ $this->_fpout = null;
+ fclose($this->_fp);
+ $this->_fp = null;
+ return false; // ERROR: Can't open output file
+ }
+
+ // Check for the JPEG signature
+ $c1 = ord(fgetc($this->_fp));
+ $c2 = ord(fgetc($this->_fp));
+
+ if ($c1 != 0xFF || $c2 != 0xD8) { // (0xFF + SOI)
+ return false; // ERROR: File is not a JPEG
+ }
+
+ fputs($this->_fpout, chr(0xFF), 1);
+ fputs($this->_fpout, chr(0xD8), 1); // (0xFF + SOI)
+
+ $count = 0;
+
+ $done = false;
+ $ok = true;
+
+ while (!$done) {
+ // First, skip any non 0xFF bytes
+ $discarded = 0;
+ $c = ord(fgetc($this->_fp));
+ while (!feof($this->_fp) && ($c != 0xFF)) {
+ $discarded++;
+ $c = ord(fgetc($this->_fp));
+ }
+ // Then skip all 0xFF until the marker byte
+ do {
+ $marker = ord(fgetc($this->_fp));
+ } while (!feof($this->_fp) && ($marker == 0xFF));
+
+ if (feof($this->_fp)) {
+ $ok = false;
+ break; // ERROR: Unexpected EOF
+ }
+ if ($discarded != 0) {
+ $ok = false;
+ break; // ERROR: Extraneous data
+ }
+
+ $length = ord(fgetc($this->_fp)) * 256 + ord(fgetc($this->_fp));
+ if (feof($this->_fp)) {
+ $ok = false;
+ break; // ERROR: Unexpected EOF
+ }
+ if ($length < 2) {
+ $ok = false;
+ break; // ERROR: Extraneous data
+ }
+ $length = $length - 2; // The length we got counts itself
+
+ unset($data);
+ if ($marker == 0xE1) { // APP1: EXIF data
+ $data =& $this->_createMarkerEXIF();
+ $wroteEXIF = true;
+ }
+ elseif ($marker == 0xED) { // APP13: IPTC / Photoshop data
+ $data =& $this->_createMarkerAdobe();
+ $wroteAdobe = true;
+ }
+ elseif ($marker == 0xDA) { // SOS: Start of scan... the image itself and the last block on the file
+ $done = true;
+ }
+
+ if (!$wroteEXIF && (($marker < 0xE0) || ($marker > 0xEF))) {
+ if (isset($this->_info['exif']) && is_array($this->_info['exif'])) {
+ $exif =& $this->_createMarkerEXIF();
+ $this->_writeJPEGMarker(0xE1, strlen($exif), $exif, 0);
+ unset($exif);
+ }
+ $wroteEXIF = true;
+ }
+
+ if (!$wroteAdobe && (($marker < 0xE0) || ($marker > 0xEF))) {
+ if ((isset($this->_info['adobe']) && is_array($this->_info['adobe']))
+ || (isset($this->_info['iptc']) && is_array($this->_info['iptc']))) {
+ $adobe =& $this->_createMarkerAdobe();
+ $this->_writeJPEGMarker(0xED, strlen($adobe), $adobe, 0);
+ unset($adobe);
+ }
+ $wroteAdobe = true;
+ }
+
+ $origLength = $length;
+ if (isset($data)) {
+ $length = strlen($data);
+ }
+
+ if ($marker != -1) {
+ $this->_writeJPEGMarker($marker, $length, $data, $origLength);
+ }
+ }
+
+ if ($this->_fp) {
+ fclose($this->_fp);
+ $this->_fp = null;
+ }
+
+ if ($this->_fpout) {
+ fclose($this->_fpout);
+ $this->_fpout = null;
+ }
+
+ return $ok;
+ }
+
+ /*************************************************************/
+ function _writeJPEGMarker($marker, $length, &$data, $origLength)
+ {
+ if ($length <= 0) {
+ return false;
+ }
+
+ fputs($this->_fpout, chr(0xFF), 1);
+ fputs($this->_fpout, chr($marker), 1);
+ fputs($this->_fpout, chr((($length + 2) & 0x0000FF00) >> 8), 1);
+ fputs($this->_fpout, chr((($length + 2) & 0x000000FF) >> 0), 1);
+
+ if (isset($data)) {
+ // Copy the generated data
+ fputs($this->_fpout, $data, $length);
+
+ if ($origLength > 0) { // Skip the original data
+ $result = @fseek($this->_fp, $origLength, SEEK_CUR);
+ // fseek doesn't seem to like HTTP 'files', but fgetc has no problem
+ if ($result != 0) {
+ for ($i = 0; $i < $origLength; $i++) {
+ fgetc($this->_fp);
+ }
+ }
+ }
+ }
+ else {
+ if ($marker == 0xDA) { // Copy until EOF
+ while (!feof($this->_fp)) {
+ $data =& fread($this->_fp, 1024 * 16);
+ fputs($this->_fpout, $data, strlen($data));
+ }
+ }
+ else { // Copy only $length bytes
+ $data =& fread($this->_fp, $length);
+ fputs($this->_fpout, $data, $length);
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Gets basic info from the file - should work with non-JPEGs
+ *
+ * @author Sebastian Delmont <sdelmont at zonageek.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _parseFileInfo()
+ {
+ if (file_exists($this->_fileName)) {
+ $this->_info['file'] = array();
+ $this->_info['file']['Name'] = basename($this->_fileName);
+ $this->_info['file']['Path'] = fullpath($this->_fileName);
+ $this->_info['file']['Size'] = filesize($this->_fileName);
+ if ($this->_info['file']['Size'] < 1024) {
+ $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B';
+ }
+ elseif ($this->_info['file']['Size'] < (1024 * 1024)) {
+ $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / 1024) . 'KB';
+ }
+ elseif ($this->_info['file']['Size'] < (1024 * 1024 * 1024)) {
+ $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / (1024*1024)) . 'MB';
+ }
+ else {
+ $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B';
+ }
+ $this->_info['file']['UnixTime'] = filemtime($this->_fileName);
+
+ // get image size directly from file
+ $size = getimagesize($this->_fileName);
+ $this->_info['file']['Width'] = $size[0];
+ $this->_info['file']['Height'] = $size[1];
+ // set mime types and formats
+ // http://www.php.net/manual/en/function.getimagesize.php
+ // http://www.php.net/manual/en/function.image-type-to-mime-type.php
+ switch ($size[2]){
+ case 1:
+ $this->_info['file']['Mime'] = 'image/gif';
+ $this->_info['file']['Format'] = 'GIF';
+ break;
+ case 2:
+ $this->_info['file']['Mime'] = 'image/jpeg';
+ $this->_info['file']['Format'] = 'JPEG';
+ break;
+ case 3:
+ $this->_info['file']['Mime'] = 'image/png';
+ $this->_info['file']['Format'] = 'PNG';
+ break;
+ case 4:
+ $this->_info['file']['Mime'] = 'application/x-shockwave-flash';
+ $this->_info['file']['Format'] = 'SWF';
+ break;
+ case 5:
+ $this->_info['file']['Mime'] = 'image/psd';
+ $this->_info['file']['Format'] = 'PSD';
+ break;
+ case 6:
+ $this->_info['file']['Mime'] = 'image/bmp';
+ $this->_info['file']['Format'] = 'BMP';
+ break;
+ case 7:
+ $this->_info['file']['Mime'] = 'image/tiff';
+ $this->_info['file']['Format'] = 'TIFF (Intel)';
+ break;
+ case 8:
+ $this->_info['file']['Mime'] = 'image/tiff';
+ $this->_info['file']['Format'] = 'TIFF (Motorola)';
+ break;
+ case 9:
+ $this->_info['file']['Mime'] = 'application/octet-stream';
+ $this->_info['file']['Format'] = 'JPC';
+ break;
+ case 10:
+ $this->_info['file']['Mime'] = 'image/jp2';
+ $this->_info['file']['Format'] = 'JP2';
+ break;
+ case 11:
+ $this->_info['file']['Mime'] = 'application/octet-stream';
+ $this->_info['file']['Format'] = 'JPX';
+ break;
+ case 12:
+ $this->_info['file']['Mime'] = 'application/octet-stream';
+ $this->_info['file']['Format'] = 'JB2';
+ break;
+ case 13:
+ $this->_info['file']['Mime'] = 'application/x-shockwave-flash';
+ $this->_info['file']['Format'] = 'SWC';
+ break;
+ case 14:
+ $this->_info['file']['Mime'] = 'image/iff';
+ $this->_info['file']['Format'] = 'IFF';
+ break;
+ case 15:
+ $this->_info['file']['Mime'] = 'image/vnd.wap.wbmp';
+ $this->_info['file']['Format'] = 'WBMP';
+ break;
+ case 16:
+ $this->_info['file']['Mime'] = 'image/xbm';
+ $this->_info['file']['Format'] = 'XBM';
+ break;
+ default:
+ $this->_info['file']['Mime'] = 'image/unknown';
+ }
+ }
+ else {
+ $this->_info['file'] = array();
+ $this->_info['file']['Name'] = basename($this->_fileName);
+ $this->_info['file']['Url'] = $this->_fileName;
+ }
+
+ return true;
+ }
+
+ /*************************************************************/
+ function _parseMarkerJFIF()
+ {
+ if (!isset($this->_markers)) {
+ $this->_readJPEG();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ $data = null;
+ $count = count($this->_markers);
+ for ($i = 0; $i < $count; $i++) {
+ if ($this->_markers[$i]['marker'] == 0xE0) {
+ $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 4);
+ if ($signature == 'JFIF') {
+ $data =& $this->_markers[$i]['data'];
+ break;
+ }
+ }
+ }
+
+ if ($data == null) {
+ $this->_info['jfif'] = false;
+ return false;
+ }
+
+ $pos = 0;
+ $this->_info['jfif'] = array();
+
+
+ $vmaj = $this->_getByte($data, 5);
+ $vmin = $this->_getByte($data, 6);
+
+ $this->_info['jfif']['Version'] = sprintf('%d.%02d', $vmaj, $vmin);
+
+ $units = $this->_getByte($data, 7);
+ switch ($units) {
+ case 0:
+ $this->_info['jfif']['Units'] = 'pixels';
+ break;
+ case 1:
+ $this->_info['jfif']['Units'] = 'dpi';
+ break;
+ case 2:
+ $this->_info['jfif']['Units'] = 'dpcm';
+ break;
+ default:
+ $this->_info['jfif']['Units'] = 'unknown';
+ break;
+ }
+
+ $xdens = $this->_getShort($data, 8);
+ $ydens = $this->_getShort($data, 10);
+
+ $this->_info['jfif']['XDensity'] = $xdens;
+ $this->_info['jfif']['YDensity'] = $ydens;
+
+ $thumbx = $this->_getByte($data, 12);
+ $thumby = $this->_getByte($data, 13);
+
+ $this->_info['jfif']['ThumbnailWidth'] = $thumbx;
+ $this->_info['jfif']['ThumbnailHeight'] = $thumby;
+
+ return true;
+ }
+
+ /*************************************************************/
+ function _parseMarkerSOF()
+ {
+ if (!isset($this->_markers)) {
+ $this->_readJPEG();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ $data = null;
+ $count = count($this->_markers);
+ for ($i = 0; $i < $count; $i++) {
+ switch ($this->_markers[$i]['marker']) {
+ case 0xC0: // SOF0
+ case 0xC1: // SOF1
+ case 0xC2: // SOF2
+ case 0xC9: // SOF9
+ $data =& $this->_markers[$i]['data'];
+ $marker = $this->_markers[$i]['marker'];
+ break;
+ }
+ }
+
+ if ($data == null) {
+ $this->_info['sof'] = false;
+ return false;
+ }
+
+ $pos = 0;
+ $this->_info['sof'] = array();
+
+
+ switch ($marker) {
+ case 0xC0: // SOF0
+ $format = 'Baseline';
+ break;
+ case 0xC1: // SOF1
+ $format = 'Progessive';
+ break;
+ case 0xC2: // SOF2
+ $format = 'Non-baseline';
+ break;
+ case 0xC9: // SOF9
+ $format = 'Arithmetic';
+ break;
+ default:
+ return false;
+ break;
+ }
+
+
+ $this->_info['sof']['Format'] = $format;
+
+ $this->_info['sof']['SamplePrecision'] = $this->_getByte($data, $pos + 0);
+ $this->_info['sof']['ImageHeight'] = $this->_getShort($data, $pos + 1);
+ $this->_info['sof']['ImageWidth'] = $this->_getShort($data, $pos + 3);
+ $this->_info['sof']['ColorChannels'] = $this->_getByte($data, $pos + 5);
+
+ return true;
+ }
+
+ /*************************************************************/
+ function _parseMarkerExif()
+ {
+ if (!isset($this->_markers)) {
+ $this->_readJPEG();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ $data = null;
+ $count = count($this->_markers);
+ for ($i = 0; $i < $count; $i++) {
+ if ($this->_markers[$i]['marker'] == 0xE1) {
+ $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 6);
+ if ($signature == "Exif\0\0") {
+ $data =& $this->_markers[$i]['data'];
+ break;
+ }
+ }
+ }
+
+ if ($data == null) {
+ $this->_info['exif'] = false;
+ return false;
+ }
+ $pos = 6;
+ $this->_info['exif'] = array();
+
+ // We don't increment $pos after this because Exif uses offsets relative to this point
+
+ $byteAlign = $this->_getShort($data, $pos + 0);
+
+ if ($byteAlign == 0x4949) { // "II"
+ $isBigEndian = false;
+ }
+ elseif ($byteAlign == 0x4D4D) { // "MM"
+ $isBigEndian = true;
+ }
+ else {
+ return false; // Unexpected data
+ }
+
+ $alignCheck = $this->_getShort($data, $pos + 2, $isBigEndian);
+ if ($alignCheck != 0x002A) // That's the expected value
+ return false; // Unexpected data
+
+ if ($isBigEndian) {
+ $this->_info['exif']['ByteAlign'] = "Big Endian";
+ }
+ else {
+ $this->_info['exif']['ByteAlign'] = "Little Endian";
+ }
+
+ $offsetIFD0 = $this->_getLong($data, $pos + 4, $isBigEndian);
+ if ($offsetIFD0 < 8)
+ return false; // Unexpected data
+
+ $offsetIFD1 = $this->_readIFD($data, $pos, $offsetIFD0, $isBigEndian, 'ifd0');
+ if ($offsetIFD1 != 0)
+ $this->_readIFD($data, $pos, $offsetIFD1, $isBigEndian, 'ifd1');
+
+ return true;
+ }
+
+ /*************************************************************/
+ function _readIFD($data, $base, $offset, $isBigEndian, $mode)
+ {
+ $EXIFTags = $this->_exifTagNames($mode);
+
+ $numEntries = $this->_getShort($data, $base + $offset, $isBigEndian);
+ $offset += 2;
+
+ $exifTIFFOffset = 0;
+ $exifTIFFLength = 0;
+ $exifThumbnailOffset = 0;
+ $exifThumbnailLength = 0;
+
+ for ($i = 0; $i < $numEntries; $i++) {
+ $tag = $this->_getShort($data, $base + $offset, $isBigEndian);
+ $offset += 2;
+ $type = $this->_getShort($data, $base + $offset, $isBigEndian);
+ $offset += 2;
+ $count = $this->_getLong($data, $base + $offset, $isBigEndian);
+ $offset += 4;
+
+ if (($type < 1) || ($type > 12))
+ return false; // Unexpected Type
+
+ $typeLengths = array( -1, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8 );
+
+ $dataLength = $typeLengths[$type] * $count;
+ if ($dataLength > 4) {
+ $dataOffset = $this->_getLong($data, $base + $offset, $isBigEndian);
+ $rawValue = $this->_getFixedString($data, $base + $dataOffset, $dataLength);
+ }
+ else {
+ $rawValue = $this->_getFixedString($data, $base + $offset, $dataLength);
+ }
+ $offset += 4;
+
+ switch ($type) {
+ case 1: // UBYTE
+ if ($count == 1) {
+ $value = $this->_getByte($rawValue, 0);
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++)
+ $value[$j] = $this->_getByte($rawValue, $j);
+ }
+ break;
+ case 2: // ASCII
+ $value = $rawValue;
+ break;
+ case 3: // USHORT
+ if ($count == 1) {
+ $value = $this->_getShort($rawValue, 0, $isBigEndian);
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++)
+ $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian);
+ }
+ break;
+ case 4: // ULONG
+ if ($count == 1) {
+ $value = $this->_getLong($rawValue, 0, $isBigEndian);
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++)
+ $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian);
+ }
+ break;
+ case 5: // URATIONAL
+ if ($count == 1) {
+ $a = $this->_getLong($rawValue, 0, $isBigEndian);
+ $b = $this->_getLong($rawValue, 4, $isBigEndian);
+ $value = array();
+ $value['val'] = 0;
+ $value['num'] = $a;
+ $value['den'] = $b;
+ if (($a != 0) && ($b != 0)) {
+ $value['val'] = $a / $b;
+ }
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++) {
+ $a = $this->_getLong($rawValue, $j * 8, $isBigEndian);
+ $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian);
+ $value = array();
+ $value[$j]['val'] = 0;
+ $value[$j]['num'] = $a;
+ $value[$j]['den'] = $b;
+ if (($a != 0) && ($b != 0))
+ $value[$j]['val'] = $a / $b;
+ }
+ }
+ break;
+ case 6: // SBYTE
+ if ($count == 1) {
+ $value = $this->_getByte($rawValue, 0);
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++)
+ $value[$j] = $this->_getByte($rawValue, $j);
+ }
+ break;
+ case 7: // UNDEFINED
+ $value = $rawValue;
+ break;
+ case 8: // SSHORT
+ if ($count == 1) {
+ $value = $this->_getShort($rawValue, 0, $isBigEndian);
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++)
+ $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian);
+ }
+ break;
+ case 9: // SLONG
+ if ($count == 1) {
+ $value = $this->_getLong($rawValue, 0, $isBigEndian);
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++)
+ $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian);
+ }
+ break;
+ case 10: // SRATIONAL
+ if ($count == 1) {
+ $a = $this->_getLong($rawValue, 0, $isBigEndian);
+ $b = $this->_getLong($rawValue, 4, $isBigEndian);
+ $value = array();
+ $value['val'] = 0;
+ $value['num'] = $a;
+ $value['den'] = $b;
+ if (($a != 0) && ($b != 0))
+ $value['val'] = $a / $b;
+ }
+ else {
+ $value = array();
+ for ($j = 0; $j < $count; $j++) {
+ $a = $this->_getLong($rawValue, $j * 8, $isBigEndian);
+ $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian);
+ $value = array();
+ $value[$j]['val'] = 0;
+ $value[$j]['num'] = $a;
+ $value[$j]['den'] = $b;
+ if (($a != 0) && ($b != 0))
+ $value[$j]['val'] = $a / $b;
+ }
+ }
+ break;
+ case 11: // FLOAT
+ $value = $rawValue;
+ break;
+
+ case 12: // DFLOAT
+ $value = $rawValue;
+ break;
+ default:
+ return false; // Unexpected Type
+ }
+
+ $tagName = '';
+ if (($mode == 'ifd0') && ($tag == 0x8769)) { // ExifIFDOffset
+ $this->_readIFD($data, $base, $value, $isBigEndian, 'exif');
+ }
+ elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset
+ $this->_readIFD($data, $base, $value, $isBigEndian, 'gps');
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets
+ $exifTIFFOffset = $value;
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts
+ $exifTIFFLength = $value;
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset
+ $exifThumbnailOffset = $value;
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength
+ $exifThumbnailLength = $value;
+ }
+ elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset
+ $this->_readIFD($data, $base, $value, $isBigEndian, 'interop');
+ }
+ // elseif (($mode == 'exif') && ($tag == 0x927C)) { // MakerNote
+ // }
+ else {
+ if (isset($EXIFTags[$tag])) {
+ $tagName = $EXIFTags[$tag];
+ if (isset($this->_info['exif'][$tagName])) {
+ if (!is_array($this->_info['exif'][$tagName])) {
+ $aux = array();
+ $aux[0] = $this->_info['exif'][$tagName];
+ $this->_info['exif'][$tagName] = $aux;
+ }
+
+ $this->_info['exif'][$tagName][count($this->_info['exif'][$tagName])] = $value;
+ }
+ else {
+ $this->_info['exif'][$tagName] = $value;
+ }
+ }
+ else {
+#echo sprintf("<h1>Unknown tag %02x (t: %d l: %d) %s in %s</h1>", $tag, $type, $count, $mode, $this->_fileName);
+ // Unknown Tags will be ignored!!!
+ // That's because the tag might be a pointer (like the Exif tag)
+ // and saving it without saving the data it points to might
+ // create an invalid file.
+ }
+ }
+ }
+
+ if (($exifThumbnailOffset > 0) && ($exifThumbnailLength > 0)) {
+ $this->_info['exif']['JFIFThumbnail'] = $this->_getFixedString($data, $base + $exifThumbnailOffset, $exifThumbnailLength);
+ }
+
+ if (($exifTIFFOffset > 0) && ($exifTIFFLength > 0)) {
+ $this->_info['exif']['TIFFStrips'] = $this->_getFixedString($data, $base + $exifTIFFOffset, $exifTIFFLength);
+ }
+
+ $nextOffset = $this->_getLong($data, $base + $offset, $isBigEndian);
+ return $nextOffset;
+ }
+
+ /*************************************************************/
+ function & _createMarkerExif()
+ {
+ $data = null;
+ $count = count($this->_markers);
+ for ($i = 0; $i < $count; $i++) {
+ if ($this->_markers[$i]['marker'] == 0xE1) {
+ $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 6);
+ if ($signature == "Exif\0\0") {
+ $data =& $this->_markers[$i]['data'];
+ break;
+ }
+ }
+ }
+
+ if (!isset($this->_info['exif'])) {
+ return false;
+ }
+
+ $data = "Exif\0\0";
+ $pos = 6;
+ $offsetBase = 6;
+
+ if (isset($this->_info['exif']['ByteAlign']) && ($this->_info['exif']['ByteAlign'] == "Big Endian")) {
+ $isBigEndian = true;
+ $aux = "MM";
+ $pos = $this->_putString($data, $pos, $aux);
+ }
+ else {
+ $isBigEndian = false;
+ $aux = "II";
+ $pos = $this->_putString($data, $pos, $aux);
+ }
+ $pos = $this->_putShort($data, $pos, 0x002A, $isBigEndian);
+ $pos = $this->_putLong($data, $pos, 0x00000008, $isBigEndian); // IFD0 Offset is always 8
+
+ $ifd0 =& $this->_getIFDEntries($isBigEndian, 'ifd0');
+ $ifd1 =& $this->_getIFDEntries($isBigEndian, 'ifd1');
+
+ $pos = $this->_writeIFD($data, $pos, $offsetBase, $ifd0, $isBigEndian, true);
+ $pos = $this->_writeIFD($data, $pos, $offsetBase, $ifd1, $isBigEndian, false);
+
+ return $data;
+ }
+
+ /*************************************************************/
+ function _writeIFD(&$data, $pos, $offsetBase, &$entries, $isBigEndian, $hasNext)
+ {
+ $tiffData = null;
+ $tiffDataOffsetPos = -1;
+
+ $entryCount = count($entries);
+
+ $dataPos = $pos + 2 + ($entryCount * 12) + 4;
+ $pos = $this->_putShort($data, $pos, $entryCount, $isBigEndian);
+
+ for ($i = 0; $i < $entryCount; $i++) {
+ $tag = $entries[$i]['tag'];
+ $type = $entries[$i]['type'];
+
+ if ($type == -99) { // SubIFD
+ $pos = $this->_putShort($data, $pos, $tag, $isBigEndian);
+ $pos = $this->_putShort($data, $pos, 0x04, $isBigEndian); // LONG
+ $pos = $this->_putLong($data, $pos, 0x01, $isBigEndian); // Count = 1
+ $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian);
+
+ $dataPos = $this->_writeIFD($data, $dataPos, $offsetBase, $entries[$i]['value'], $isBigEndian, false);
+ }
+ elseif ($type == -98) { // TIFF Data
+ $pos = $this->_putShort($data, $pos, $tag, $isBigEndian);
+ $pos = $this->_putShort($data, $pos, 0x04, $isBigEndian); // LONG
+ $pos = $this->_putLong($data, $pos, 0x01, $isBigEndian); // Count = 1
+ $tiffDataOffsetPos = $pos;
+ $pos = $this->_putLong($data, $pos, 0x00, $isBigEndian); // For Now
+ $tiffData =& $entries[$i]['value'] ;
+ }
+ else { // Regular Entry
+ $pos = $this->_putShort($data, $pos, $tag, $isBigEndian);
+ $pos = $this->_putShort($data, $pos, $type, $isBigEndian);
+ $pos = $this->_putLong($data, $pos, $entries[$i]['count'], $isBigEndian);
+ if (strlen($entries[$i]['value']) > 4) {
+ $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian);
+ $dataPos = $this->_putString($data, $dataPos, $entries[$i]['value']);
+ }
+ else {
+ $val = str_pad($entries[$i]['value'], 4, "\0");
+ $pos = $this->_putString($data, $pos, $val);
+ }
+ }
+ }
+
+ if ($tiffData != null) {
+ $this->_putLong($data, $tiffDataOffsetPos, $dataPos - $offsetBase, $isBigEndian);
+ $dataPos = $this->_putString($data, $dataPos, $tiffData);
+ }
+
+ if ($hasNext) {
+ $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian);
+ }
+ else {
+ $pos = $this->_putLong($data, $pos, 0, $isBigEndian);
+ }
+
+ return $dataPos;
+ }
+
+ /*************************************************************/
+ function & _getIFDEntries($isBigEndian, $mode)
+ {
+ $EXIFNames = $this->_exifTagNames($mode);
+ $EXIFTags = $this->_exifNameTags($mode);
+ $EXIFTypeInfo = $this->_exifTagTypes($mode);
+
+ $ifdEntries = array();
+ $entryCount = 0;
+
+ reset($EXIFNames);
+ while (list($tag, $name) = each($EXIFNames)) {
+ $type = $EXIFTypeInfo[$tag][0];
+ $count = $EXIFTypeInfo[$tag][1];
+ $value = null;
+
+ if (($mode == 'ifd0') && ($tag == 0x8769)) { // ExifIFDOffset
+ if (isset($this->_info['exif']['EXIFVersion'])) {
+ $value =& $this->_getIFDEntries($isBigEndian, "exif");
+ $type = -99;
+ }
+ else {
+ $value = null;
+ }
+ }
+ elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset
+ if (isset($this->_info['exif']['GPSVersionID'])) {
+ $value =& $this->_getIFDEntries($isBigEndian, "gps");
+ $type = -99;
+ }
+ else {
+ $value = null;
+ }
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets
+ if (isset($this->_info['exif']['TIFFStrips'])) {
+ $value =& $this->_info['exif']['TIFFStrips'];
+ $type = -98;
+ }
+ else {
+ $value = null;
+ }
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts
+ if (isset($this->_info['exif']['TIFFStrips'])) {
+ $value = strlen($this->_info['exif']['TIFFStrips']);
+ }
+ else {
+ $value = null;
+ }
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset
+ if (isset($this->_info['exif']['JFIFThumbnail'])) {
+ $value =& $this->_info['exif']['JFIFThumbnail'];
+ $type = -98;
+ }
+ else {
+ $value = null;
+ }
+ }
+ elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength
+ if (isset($this->_info['exif']['JFIFThumbnail'])) {
+ $value = strlen($this->_info['exif']['JFIFThumbnail']);
+ }
+ else {
+ $value = null;
+ }
+ }
+ elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset
+ if (isset($this->_info['exif']['InteroperabilityIndex'])) {
+ $value =& $this->_getIFDEntries($isBigEndian, "interop");
+ $type = -99;
+ }
+ else {
+ $value = null;
+ }
+ }
+ elseif (isset($this->_info['exif'][$name])) {
+ $origValue =& $this->_info['exif'][$name];
+
+ // This makes it easier to process variable size elements
+ if (!is_array($origValue) || isset($origValue['val'])) {
+ unset($origValue); // Break the reference
+ $origValue = array($this->_info['exif'][$name]);
+ }
+ $origCount = count($origValue);
+
+ if ($origCount == 0 ) {
+ $type = -1; // To ignore this field
+ }
+
+ $value = " ";
+
+ switch ($type) {
+ case 1: // UBYTE
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+
+ $this->_putByte($value, $j, $origValue[$j]);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putByte($value, $j, 0);
+ $j++;
+ }
+ break;
+ case 2: // ASCII
+ $v = strval($origValue[0]);
+ if (($count != 0) && (strlen($v) > $count)) {
+ $v = substr($v, 0, $count);
+ }
+ elseif (($count > 0) && (strlen($v) < $count)) {
+ $v = str_pad($v, $count, "\0");
+ }
+
+ $count = strlen($v);
+
+ $this->_putString($value, 0, $v);
+ break;
+ case 3: // USHORT
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putShort($value, $j * 2, 0, $isBigEndian);
+ $j++;
+ }
+ break;
+ case 4: // ULONG
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putLong($value, $j * 4, 0, $isBigEndian);
+ $j++;
+ }
+ break;
+ case 5: // URATIONAL
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $v = $origValue[$j];
+ if (is_array($v)) {
+ $a = $v['num'];
+ $b = $v['den'];
+ }
+ else {
+ $a = 0;
+ $b = 0;
+ // TODO: Allow other types and convert them
+ }
+ $this->_putLong($value, $j * 8, $a, $isBigEndian);
+ $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putLong($value, $j * 8, 0, $isBigEndian);
+ $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian);
+ $j++;
+ }
+ break;
+ case 6: // SBYTE
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $this->_putByte($value, $j, $origValue[$j]);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putByte($value, $j, 0);
+ $j++;
+ }
+ break;
+ case 7: // UNDEFINED
+ $v = strval($origValue[0]);
+ if (($count != 0) && (strlen($v) > $count)) {
+ $v = substr($v, 0, $count);
+ }
+ elseif (($count > 0) && (strlen($v) < $count)) {
+ $v = str_pad($v, $count, "\0");
+ }
+
+ $count = strlen($v);
+
+ $this->_putString($value, 0, $v);
+ break;
+ case 8: // SSHORT
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putShort($value, $j * 2, 0, $isBigEndian);
+ $j++;
+ }
+ break;
+ case 9: // SLONG
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putLong($value, $j * 4, 0, $isBigEndian);
+ $j++;
+ }
+ break;
+ case 10: // SRATIONAL
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $v = $origValue[$j];
+ if (is_array($v)) {
+ $a = $v['num'];
+ $b = $v['den'];
+ }
+ else {
+ $a = 0;
+ $b = 0;
+ // TODO: Allow other types and convert them
+ }
+
+ $this->_putLong($value, $j * 8, $a, $isBigEndian);
+ $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putLong($value, $j * 8, 0, $isBigEndian);
+ $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian);
+ $j++;
+ }
+ break;
+ case 11: // FLOAT
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $v = strval($origValue[$j]);
+ if (strlen($v) > 4) {
+ $v = substr($v, 0, 4);
+ }
+ elseif (strlen($v) < 4) {
+ $v = str_pad($v, 4, "\0");
+ }
+ $this->_putString($value, $j * 4, $v);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putString($value, $j * 4, "\0\0\0\0");
+ $j++;
+ }
+ break;
+ case 12: // DFLOAT
+ if ($count == 0) {
+ $count = $origCount;
+ }
+
+ $j = 0;
+ while (($j < $count) && ($j < $origCount)) {
+ $v = strval($origValue[$j]);
+ if (strlen($v) > 8) {
+ $v = substr($v, 0, 8);
+ }
+ elseif (strlen($v) < 8) {
+ $v = str_pad($v, 8, "\0");
+ }
+ $this->_putString($value, $j * 8, $v);
+ $j++;
+ }
+
+ while ($j < $count) {
+ $this->_putString($value, $j * 8, "\0\0\0\0\0\0\0\0");
+ $j++;
+ }
+ break;
+ default:
+ $value = null;
+ break;
+ }
+ }
+
+ if ($value != null) {
+ $ifdEntries[$entryCount] = array();
+ $ifdEntries[$entryCount]['tag'] = $tag;
+ $ifdEntries[$entryCount]['type'] = $type;
+ $ifdEntries[$entryCount]['count'] = $count;
+ $ifdEntries[$entryCount]['value'] = $value;
+
+ $entryCount++;
+ }
+ }
+
+ return $ifdEntries;
+ }
+
+ /*************************************************************/
+ function _parseMarkerAdobe()
+ {
+ if (!isset($this->_markers)) {
+ $this->_readJPEG();
+ }
+
+ if ($this->_markers == null) {
+ return false;
+ }
+
+ $data = null;
+ $count = count($this->_markers);
+ for ($i = 0; $i < $count; $i++) {
+ if ($this->_markers[$i]['marker'] == 0xED) {
+ $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 14);
+ if ($signature == "Photoshop 3.0\0") {
+ $data =& $this->_markers[$i]['data'];
+ break;
+ }
+ }
+ }
+
+ if ($data == null) {
+ $this->_info['adobe'] = false;
+ $this->_info['iptc'] = false;
+ return false;
+ }
+ $pos = 14;
+ $this->_info['adobe'] = array();
+ $this->_info['adobe']['raw'] = array();
+ $this->_info['iptc'] = array();
+
+ $datasize = strlen($data);
+
+ while ($pos < $datasize) {
+ $signature = $this->_getFixedString($data, $pos, 4);
+ if ($signature != '8BIM')
+ return false;
+ $pos += 4;
+
+ $type = $this->_getShort($data, $pos);
+ $pos += 2;
+
+ $strlen = $this->_getByte($data, $pos);
+ $pos += 1;
+ $header = '';
+ for ($i = 0; $i < $strlen; $i++) {
+ $header .= $data{$pos + $i};
+ }
+ $pos += $strlen + 1 - ($strlen % 2); // The string is padded to even length, counting the length byte itself
+
+ $length = $this->_getLong($data, $pos);
+ $pos += 4;
+
+ $basePos = $pos;
+
+ switch ($type) {
+ case 0x0404: // Caption (IPTC Data)
+ $pos = $this->_readIPTC($data, $pos);
+ if ($pos == false)
+ return false;
+ break;
+ case 0x040A: // CopyrightFlag
+ $this->_info['adobe']['CopyrightFlag'] = $this->_getByte($data, $pos);
+ $pos += $length;
+ break;
+ case 0x040B: // ImageURL
+ $this->_info['adobe']['ImageURL'] = $this->_getFixedString($data, $pos, $length);
+ $pos += $length;
+ break;
+ case 0x040C: // Thumbnail
+ $aux = $this->_getLong($data, $pos);
+ $pos += 4;
+ if ($aux == 1) {
+ $this->_info['adobe']['ThumbnailWidth'] = $this->_getLong($data, $pos);
+ $pos += 4;
+ $this->_info['adobe']['ThumbnailHeight'] = $this->_getLong($data, $pos);
+ $pos += 4;
+
+ $pos += 16; // Skip some data
+
+ $this->_info['adobe']['ThumbnailData'] = $this->_getFixedString($data, $pos, $length - 28);
+ $pos += $length - 28;
+ }
+ break;
+ default:
+ break;
+ }
+
+ // We save all blocks, even those we recognized
+ $label = sprintf('8BIM_0x%04x', $type);
+ $this->_info['adobe']['raw'][$label] = array();
+ $this->_info['adobe']['raw'][$label]['type'] = $type;
+ $this->_info['adobe']['raw'][$label]['header'] = $header;
+ $this->_info['adobe']['raw'][$label]['data'] =& $this->_getFixedString($data, $basePos, $length);
+
+ $pos = $basePos + $length + ($length % 2); // Even padding
+ }
+
+ }
+
+ /*************************************************************/
+ function _readIPTC(&$data, $pos = 0)
+ {
+ $totalLength = strlen($data);
+
+ $IPTCTags =& $this->_iptcTagNames();
+
+ while ($pos < ($totalLength - 5)) {
+ $signature = $this->_getShort($data, $pos);
+ if ($signature != 0x1C02)
+ return $pos;
+ $pos += 2;
+
+ $type = $this->_getByte($data, $pos);
+ $pos += 1;
+ $length = $this->_getShort($data, $pos);
+ $pos += 2;
+
+ $basePos = $pos;
+ $label = '';
+
+ if (isset($IPTCTags[$type])) {
+ $label = $IPTCTags[$type];
+ }
+ else {
+ $label = sprintf('IPTC_0x%02x', $type);
+ }
+
+ if ($label != '') {
+ if (isset($this->_info['iptc'][$label])) {
+ if (!is_array($this->_info['iptc'][$label])) {
+ $aux = array();
+ $aux[0] = $this->_info['iptc'][$label];
+ $this->_info['iptc'][$label] = $aux;
+ }
+ $this->_info['iptc'][$label][ count($this->_info['iptc'][$label]) ] = $this->_getFixedString($data, $pos, $length);
+ }
+ else {
+ $this->_info['iptc'][$label] = $this->_getFixedString($data, $pos, $length);
+ }
+ }
+
+ $pos = $basePos + $length; // No padding
+ }
+ return $pos;
+ }
+
+ /*************************************************************/
+ function & _createMarkerAdobe()
+ {
+ if (isset($this->_info['iptc'])) {
+ if (!isset($this->_info['adobe'])) {
+ $this->_info['adobe'] = array();
+ }
+ if (!isset($this->_info['adobe']['raw'])) {
+ $this->_info['adobe']['raw'] = array();
+ }
+ if (!isset($this->_info['adobe']['raw']['8BIM_0x0404'])) {
+ $this->_info['adobe']['raw']['8BIM_0x0404'] = array();
+ }
+ $this->_info['adobe']['raw']['8BIM_0x0404']['type'] = 0x0404;
+ $this->_info['adobe']['raw']['8BIM_0x0404']['header'] = "Caption";
+ $this->_info['adobe']['raw']['8BIM_0x0404']['data'] =& $this->_writeIPTC();
+ }
+
+ if (isset($this->_info['adobe']['raw']) && (count($this->_info['adobe']['raw']) > 0)) {
+ $data = "Photoshop 3.0\0";
+ $pos = 14;
+
+ reset($this->_info['adobe']['raw']);
+ while (list($key) = each($this->_info['adobe']['raw'])) {
+ $pos = $this->_write8BIM(
+ $data,
+ $pos,
+ $this->_info['adobe']['raw'][$key]['type'],
+ $this->_info['adobe']['raw'][$key]['header'],
+ $this->_info['adobe']['raw'][$key]['data'] );
+ }
+ }
+
+ return $data;
+ }
+
+ /*************************************************************/
+ function _write8BIM(&$data, $pos, $type, $header, &$value)
+ {
+ $signature = "8BIM";
+
+ $pos = $this->_putString($data, $pos, $signature);
+ $pos = $this->_putShort($data, $pos, $type);
+
+ $len = strlen($header);
+
+ $pos = $this->_putByte($data, $pos, $len);
+ $pos = $this->_putString($data, $pos, $header);
+ if (($len % 2) == 0) { // Even padding, including the length byte
+ $pos = $this->_putByte($data, $pos, 0);
+ }
+
+ $len = strlen($value);
+ $pos = $this->_putLong($data, $pos, $len);
+ $pos = $this->_putString($data, $pos, $value);
+ if (($len % 2) != 0) { // Even padding
+ $pos = $this->_putByte($data, $pos, 0);
+ }
+ return $pos;
+ }
+
+ /*************************************************************/
+ function & _writeIPTC()
+ {
+ $data = " ";
+ $pos = 0;
+
+ $IPTCNames =& $this->_iptcNameTags();
+
+ reset($this->_info['iptc']);
+
+
+ while (list($label) = each($this->_info['iptc'])) {
+ $value =& $this->_info['iptc'][$label];
+ $type = -1;
+
+ if (isset($IPTCNames[$label])) {
+ $type = $IPTCNames[$label];
+ }
+ elseif (substr($label, 0, 7) == "IPTC_0x") {
+ $type = hexdec(substr($label, 7, 2));
+ }
+
+ if ($type != -1) {
+ if (is_array($value)) {
+ for ($i = 0; $i < count($value); $i++) {
+ $pos = $this->_writeIPTCEntry($data, $pos, $type, $value[$i]);
+ }
+ }
+ else {
+ $pos = $this->_writeIPTCEntry($data, $pos, $type, $value);
+ }
+ }
+ }
+
+ return $data;
+ }
+
+ /*************************************************************/
+ function _writeIPTCEntry(&$data, $pos, $type, &$value)
+ {
+ $pos = $this->_putShort($data, $pos, 0x1C02);
+ $pos = $this->_putByte($data, $pos, $type);
+ $pos = $this->_putShort($data, $pos, strlen($value));
+ $pos = $this->_putString($data, $pos, $value);
+
+ return $pos;
+ }
+
+ /*************************************************************/
+ function _exifTagNames($mode)
+ {
+ $tags = array();
+
+ if ($mode == 'ifd0') {
+ $tags[0x010E] = 'ImageDescription';
+ $tags[0x010F] = 'Make';
+ $tags[0x0110] = 'Model';
+ $tags[0x0112] = 'Orientation';
+ $tags[0x011A] = 'XResolution';
+ $tags[0x011B] = 'YResolution';
+ $tags[0x0128] = 'ResolutionUnit';
+ $tags[0x0131] = 'Software';
+ $tags[0x0132] = 'DateTime';
+ $tags[0x013B] = 'Artist';
+ $tags[0x013E] = 'WhitePoint';
+ $tags[0x013F] = 'PrimaryChromaticities';
+ $tags[0x0211] = 'YCbCrCoefficients';
+ $tags[0x0212] = 'YCbCrSubSampling';
+ $tags[0x0213] = 'YCbCrPositioning';
+ $tags[0x0214] = 'ReferenceBlackWhite';
+ $tags[0x8298] = 'Copyright';
+ $tags[0x8769] = 'ExifIFDOffset';
+ $tags[0x8825] = 'GPSIFDOffset';
+ }
+ if ($mode == 'ifd1') {
+ $tags[0x00FE] = 'TIFFNewSubfileType';
+ $tags[0x00FF] = 'TIFFSubfileType';
+ $tags[0x0100] = 'TIFFImageWidth';
+ $tags[0x0101] = 'TIFFImageHeight';
+ $tags[0x0102] = 'TIFFBitsPerSample';
+ $tags[0x0103] = 'TIFFCompression';
+ $tags[0x0106] = 'TIFFPhotometricInterpretation';
+ $tags[0x0107] = 'TIFFThreshholding';
+ $tags[0x0108] = 'TIFFCellWidth';
+ $tags[0x0109] = 'TIFFCellLength';
+ $tags[0x010A] = 'TIFFFillOrder';
+ $tags[0x010E] = 'TIFFImageDescription';
+ $tags[0x010F] = 'TIFFMake';
+ $tags[0x0110] = 'TIFFModel';
+ $tags[0x0111] = 'TIFFStripOffsets';
+ $tags[0x0112] = 'TIFFOrientation';
+ $tags[0x0115] = 'TIFFSamplesPerPixel';
+ $tags[0x0116] = 'TIFFRowsPerStrip';
+ $tags[0x0117] = 'TIFFStripByteCounts';
+ $tags[0x0118] = 'TIFFMinSampleValue';
+ $tags[0x0119] = 'TIFFMaxSampleValue';
+ $tags[0x011A] = 'TIFFXResolution';
+ $tags[0x011B] = 'TIFFYResolution';
+ $tags[0x011C] = 'TIFFPlanarConfiguration';
+ $tags[0x0122] = 'TIFFGrayResponseUnit';
+ $tags[0x0123] = 'TIFFGrayResponseCurve';
+ $tags[0x0128] = 'TIFFResolutionUnit';
+ $tags[0x0131] = 'TIFFSoftware';
+ $tags[0x0132] = 'TIFFDateTime';
+ $tags[0x013B] = 'TIFFArtist';
+ $tags[0x013C] = 'TIFFHostComputer';
+ $tags[0x0140] = 'TIFFColorMap';
+ $tags[0x0152] = 'TIFFExtraSamples';
+ $tags[0x0201] = 'TIFFJFIFOffset';
+ $tags[0x0202] = 'TIFFJFIFLength';
+ $tags[0x0211] = 'TIFFYCbCrCoefficients';
+ $tags[0x0212] = 'TIFFYCbCrSubSampling';
+ $tags[0x0213] = 'TIFFYCbCrPositioning';
+ $tags[0x0214] = 'TIFFReferenceBlackWhite';
+ $tags[0x8298] = 'TIFFCopyright';
+ $tags[0x9286] = 'TIFFUserComment';
+ }
+ elseif ($mode == 'exif') {
+ $tags[0x829A] = 'ExposureTime';
+ $tags[0x829D] = 'FNumber';
+ $tags[0x8822] = 'ExposureProgram';
+ $tags[0x8824] = 'SpectralSensitivity';
+ $tags[0x8827] = 'ISOSpeedRatings';
+ $tags[0x8828] = 'OECF';
+ $tags[0x9000] = 'EXIFVersion';
+ $tags[0x9003] = 'DatetimeOriginal';
+ $tags[0x9004] = 'DatetimeDigitized';
+ $tags[0x9101] = 'ComponentsConfiguration';
+ $tags[0x9102] = 'CompressedBitsPerPixel';
+ $tags[0x9201] = 'ShutterSpeedValue';
+ $tags[0x9202] = 'ApertureValue';
+ $tags[0x9203] = 'BrightnessValue';
+ $tags[0x9204] = 'ExposureBiasValue';
+ $tags[0x9205] = 'MaxApertureValue';
+ $tags[0x9206] = 'SubjectDistance';
+ $tags[0x9207] = 'MeteringMode';
+ $tags[0x9208] = 'LightSource';
+ $tags[0x9209] = 'Flash';
+ $tags[0x920A] = 'FocalLength';
+ $tags[0x927C] = 'MakerNote';
+ $tags[0x9286] = 'UserComment';
+ $tags[0x9290] = 'SubSecTime';
+ $tags[0x9291] = 'SubSecTimeOriginal';
+ $tags[0x9292] = 'SubSecTimeDigitized';
+ $tags[0xA000] = 'FlashPixVersion';
+ $tags[0xA001] = 'ColorSpace';
+ $tags[0xA002] = 'PixelXDimension';
+ $tags[0xA003] = 'PixelYDimension';
+ $tags[0xA004] = 'RelatedSoundFile';
+ $tags[0xA005] = 'InteropIFDOffset';
+ $tags[0xA20B] = 'FlashEnergy';
+ $tags[0xA20C] = 'SpatialFrequencyResponse';
+ $tags[0xA20E] = 'FocalPlaneXResolution';
+ $tags[0xA20F] = 'FocalPlaneYResolution';
+ $tags[0xA210] = 'FocalPlaneResolutionUnit';
+ $tags[0xA214] = 'SubjectLocation';
+ $tags[0xA215] = 'ExposureIndex';
+ $tags[0xA217] = 'SensingMethod';
+ $tags[0xA300] = 'FileSource';
+ $tags[0xA301] = 'SceneType';
+ $tags[0xA302] = 'CFAPattern';
+ }
+ elseif ($mode == 'interop') {
+ $tags[0x0001] = 'InteroperabilityIndex';
+ $tags[0x0002] = 'InteroperabilityVersion';
+ $tags[0x1000] = 'RelatedImageFileFormat';
+ $tags[0x1001] = 'RelatedImageWidth';
+ $tags[0x1002] = 'RelatedImageLength';
+ }
+ elseif ($mode == 'gps') {
+ $tags[0x0000] = 'GPSVersionID';
+ $tags[0x0001] = 'GPSLatitudeRef';
+ $tags[0x0002] = 'GPSLatitude';
+ $tags[0x0003] = 'GPSLongitudeRef';
+ $tags[0x0004] = 'GPSLongitude';
+ $tags[0x0005] = 'GPSAltitudeRef';
+ $tags[0x0006] = 'GPSAltitude';
+ $tags[0x0007] = 'GPSTimeStamp';
+ $tags[0x0008] = 'GPSSatellites';
+ $tags[0x0009] = 'GPSStatus';
+ $tags[0x000A] = 'GPSMeasureMode';
+ $tags[0x000B] = 'GPSDOP';
+ $tags[0x000C] = 'GPSSpeedRef';
+ $tags[0x000D] = 'GPSSpeed';
+ $tags[0x000E] = 'GPSTrackRef';
+ $tags[0x000F] = 'GPSTrack';
+ $tags[0x0010] = 'GPSImgDirectionRef';
+ $tags[0x0011] = 'GPSImgDirection';
+ $tags[0x0012] = 'GPSMapDatum';
+ $tags[0x0013] = 'GPSDestLatitudeRef';
+ $tags[0x0014] = 'GPSDestLatitude';
+ $tags[0x0015] = 'GPSDestLongitudeRef';
+ $tags[0x0016] = 'GPSDestLongitude';
+ $tags[0x0017] = 'GPSDestBearingRef';
+ $tags[0x0018] = 'GPSDestBearing';
+ $tags[0x0019] = 'GPSDestDistanceRef';
+ $tags[0x001A] = 'GPSDestDistance';
+ }
+
+ return $tags;
+ }
+
+ /*************************************************************/
+ function _exifTagTypes($mode)
+ {
+ $tags = array();
+
+ if ($mode == 'ifd0') {
+ $tags[0x010E] = array(2, 0); // ImageDescription -> ASCII, Any
+ $tags[0x010F] = array(2, 0); // Make -> ASCII, Any
+ $tags[0x0110] = array(2, 0); // Model -> ASCII, Any
+ $tags[0x0112] = array(3, 1); // Orientation -> SHORT, 1
+ $tags[0x011A] = array(5, 1); // XResolution -> RATIONAL, 1
+ $tags[0x011B] = array(5, 1); // YResolution -> RATIONAL, 1
+ $tags[0x0128] = array(3, 1); // ResolutionUnit -> SHORT
+ $tags[0x0131] = array(2, 0); // Software -> ASCII, Any
+ $tags[0x0132] = array(2, 20); // DateTime -> ASCII, 20
+ $tags[0x013B] = array(2, 0); // Artist -> ASCII, Any
+ $tags[0x013E] = array(5, 2); // WhitePoint -> RATIONAL, 2
+ $tags[0x013F] = array(5, 6); // PrimaryChromaticities -> RATIONAL, 6
+ $tags[0x0211] = array(5, 3); // YCbCrCoefficients -> RATIONAL, 3
+ $tags[0x0212] = array(3, 2); // YCbCrSubSampling -> SHORT, 2
+ $tags[0x0213] = array(3, 1); // YCbCrPositioning -> SHORT, 1
+ $tags[0x0214] = array(5, 6); // ReferenceBlackWhite -> RATIONAL, 6
+ $tags[0x8298] = array(2, 0); // Copyright -> ASCII, Any
+ $tags[0x8769] = array(4, 1); // ExifIFDOffset -> LONG, 1
+ $tags[0x8825] = array(4, 1); // GPSIFDOffset -> LONG, 1
+ }
+ if ($mode == 'ifd1') {
+ $tags[0x00FE] = array(4, 1); // TIFFNewSubfileType -> LONG, 1
+ $tags[0x00FF] = array(3, 1); // TIFFSubfileType -> SHORT, 1
+ $tags[0x0100] = array(4, 1); // TIFFImageWidth -> LONG (or SHORT), 1
+ $tags[0x0101] = array(4, 1); // TIFFImageHeight -> LONG (or SHORT), 1
+ $tags[0x0102] = array(3, 3); // TIFFBitsPerSample -> SHORT, 3
+ $tags[0x0103] = array(3, 1); // TIFFCompression -> SHORT, 1
+ $tags[0x0106] = array(3, 1); // TIFFPhotometricInterpretation -> SHORT, 1
+ $tags[0x0107] = array(3, 1); // TIFFThreshholding -> SHORT, 1
+ $tags[0x0108] = array(3, 1); // TIFFCellWidth -> SHORT, 1
+ $tags[0x0109] = array(3, 1); // TIFFCellLength -> SHORT, 1
+ $tags[0x010A] = array(3, 1); // TIFFFillOrder -> SHORT, 1
+ $tags[0x010E] = array(2, 0); // TIFFImageDescription -> ASCII, Any
+ $tags[0x010F] = array(2, 0); // TIFFMake -> ASCII, Any
+ $tags[0x0110] = array(2, 0); // TIFFModel -> ASCII, Any
+ $tags[0x0111] = array(4, 0); // TIFFStripOffsets -> LONG (or SHORT), Any (one per strip)
+ $tags[0x0112] = array(3, 1); // TIFFOrientation -> SHORT, 1
+ $tags[0x0115] = array(3, 1); // TIFFSamplesPerPixel -> SHORT, 1
+ $tags[0x0116] = array(4, 1); // TIFFRowsPerStrip -> LONG (or SHORT), 1
+ $tags[0x0117] = array(4, 0); // TIFFStripByteCounts -> LONG (or SHORT), Any (one per strip)
+ $tags[0x0118] = array(3, 0); // TIFFMinSampleValue -> SHORT, Any (SamplesPerPixel)
+ $tags[0x0119] = array(3, 0); // TIFFMaxSampleValue -> SHORT, Any (SamplesPerPixel)
+ $tags[0x011A] = array(5, 1); // TIFFXResolution -> RATIONAL, 1
+ $tags[0x011B] = array(5, 1); // TIFFYResolution -> RATIONAL, 1
+ $tags[0x011C] = array(3, 1); // TIFFPlanarConfiguration -> SHORT, 1
+ $tags[0x0122] = array(3, 1); // TIFFGrayResponseUnit -> SHORT, 1
+ $tags[0x0123] = array(3, 0); // TIFFGrayResponseCurve -> SHORT, Any (2^BitsPerSample)
+ $tags[0x0128] = array(3, 1); // TIFFResolutionUnit -> SHORT, 1
+ $tags[0x0131] = array(2, 0); // TIFFSoftware -> ASCII, Any
+ $tags[0x0132] = array(2, 20); // TIFFDateTime -> ASCII, 20
+ $tags[0x013B] = array(2, 0); // TIFFArtist -> ASCII, Any
+ $tags[0x013C] = array(2, 0); // TIFFHostComputer -> ASCII, Any
+ $tags[0x0140] = array(3, 0); // TIFFColorMap -> SHORT, Any (3 * 2^BitsPerSample)
+ $tags[0x0152] = array(3, 0); // TIFFExtraSamples -> SHORT, Any (SamplesPerPixel - 3)
+ $tags[0x0201] = array(4, 1); // TIFFJFIFOffset -> LONG, 1
+ $tags[0x0202] = array(4, 1); // TIFFJFIFLength -> LONG, 1
+ $tags[0x0211] = array(5, 3); // TIFFYCbCrCoefficients -> RATIONAL, 3
+ $tags[0x0212] = array(3, 2); // TIFFYCbCrSubSampling -> SHORT, 2
+ $tags[0x0213] = array(3, 1); // TIFFYCbCrPositioning -> SHORT, 1
+ $tags[0x0214] = array(5, 6); // TIFFReferenceBlackWhite -> RATIONAL, 6
+ $tags[0x8298] = array(2, 0); // TIFFCopyright -> ASCII, Any
+ $tags[0x9286] = array(2, 0); // TIFFUserComment -> ASCII, Any
+ }
+ elseif ($mode == 'exif') {
+ $tags[0x829A] = array(5, 1); // ExposureTime -> RATIONAL, 1
+ $tags[0x829D] = array(5, 1); // FNumber -> RATIONAL, 1
+ $tags[0x8822] = array(3, 1); // ExposureProgram -> SHORT, 1
+ $tags[0x8824] = array(2, 0); // SpectralSensitivity -> ASCII, Any
+ $tags[0x8827] = array(3, 0); // ISOSpeedRatings -> SHORT, Any
+ $tags[0x8828] = array(7, 0); // OECF -> UNDEFINED, Any
+ $tags[0x9000] = array(7, 4); // EXIFVersion -> UNDEFINED, 4
+ $tags[0x9003] = array(2, 20); // DatetimeOriginal -> ASCII, 20
+ $tags[0x9004] = array(2, 20); // DatetimeDigitized -> ASCII, 20
+ $tags[0x9101] = array(7, 4); // ComponentsConfiguration -> UNDEFINED, 4
+ $tags[0x9102] = array(5, 1); // CompressedBitsPerPixel -> RATIONAL, 1
+ $tags[0x9201] = array(10, 1); // ShutterSpeedValue -> SRATIONAL, 1
+ $tags[0x9202] = array(5, 1); // ApertureValue -> RATIONAL, 1
+ $tags[0x9203] = array(10, 1); // BrightnessValue -> SRATIONAL, 1
+ $tags[0x9204] = array(10, 1); // ExposureBiasValue -> SRATIONAL, 1
+ $tags[0x9205] = array(5, 1); // MaxApertureValue -> RATIONAL, 1
+ $tags[0x9206] = array(5, 1); // SubjectDistance -> RATIONAL, 1
+ $tags[0x9207] = array(3, 1); // MeteringMode -> SHORT, 1
+ $tags[0x9208] = array(3, 1); // LightSource -> SHORT, 1
+ $tags[0x9209] = array(3, 1); // Flash -> SHORT, 1
+ $tags[0x920A] = array(5, 1); // FocalLength -> RATIONAL, 1
+ $tags[0x927C] = array(7, 0); // MakerNote -> UNDEFINED, Any
+ $tags[0x9286] = array(7, 0); // UserComment -> UNDEFINED, Any
+ $tags[0x9290] = array(2, 0); // SubSecTime -> ASCII, Any
+ $tags[0x9291] = array(2, 0); // SubSecTimeOriginal -> ASCII, Any
+ $tags[0x9292] = array(2, 0); // SubSecTimeDigitized -> ASCII, Any
+ $tags[0xA000] = array(7, 4); // FlashPixVersion -> UNDEFINED, 4
+ $tags[0xA001] = array(3, 1); // ColorSpace -> SHORT, 1
+ $tags[0xA002] = array(4, 1); // PixelXDimension -> LONG (or SHORT), 1
+ $tags[0xA003] = array(4, 1); // PixelYDimension -> LONG (or SHORT), 1
+ $tags[0xA004] = array(2, 13); // RelatedSoundFile -> ASCII, 13
+ $tags[0xA005] = array(4, 1); // InteropIFDOffset -> LONG, 1
+ $tags[0xA20B] = array(5, 1); // FlashEnergy -> RATIONAL, 1
+ $tags[0xA20C] = array(7, 0); // SpatialFrequencyResponse -> UNDEFINED, Any
+ $tags[0xA20E] = array(5, 1); // FocalPlaneXResolution -> RATIONAL, 1
+ $tags[0xA20F] = array(5, 1); // FocalPlaneYResolution -> RATIONAL, 1
+ $tags[0xA210] = array(3, 1); // FocalPlaneResolutionUnit -> SHORT, 1
+ $tags[0xA214] = array(3, 2); // SubjectLocation -> SHORT, 2
+ $tags[0xA215] = array(5, 1); // ExposureIndex -> RATIONAL, 1
+ $tags[0xA217] = array(3, 1); // SensingMethod -> SHORT, 1
+ $tags[0xA300] = array(7, 1); // FileSource -> UNDEFINED, 1
+ $tags[0xA301] = array(7, 1); // SceneType -> UNDEFINED, 1
+ $tags[0xA302] = array(7, 0); // CFAPattern -> UNDEFINED, Any
+ }
+ elseif ($mode == 'interop') {
+ $tags[0x0001] = array(2, 0); // InteroperabilityIndex -> ASCII, Any
+ $tags[0x0002] = array(7, 4); // InteroperabilityVersion -> UNKNOWN, 4
+ $tags[0x1000] = array(2, 0); // RelatedImageFileFormat -> ASCII, Any
+ $tags[0x1001] = array(4, 1); // RelatedImageWidth -> LONG (or SHORT), 1
+ $tags[0x1002] = array(4, 1); // RelatedImageLength -> LONG (or SHORT), 1
+ }
+ elseif ($mode == 'gps') {
+ $tags[0x0000] = array(1, 4); // GPSVersionID -> BYTE, 4
+ $tags[0x0001] = array(2, 2); // GPSLatitudeRef -> ASCII, 2
+ $tags[0x0002] = array(5, 3); // GPSLatitude -> RATIONAL, 3
+ $tags[0x0003] = array(2, 2); // GPSLongitudeRef -> ASCII, 2
+ $tags[0x0004] = array(5, 3); // GPSLongitude -> RATIONAL, 3
+ $tags[0x0005] = array(2, 2); // GPSAltitudeRef -> ASCII, 2
+ $tags[0x0006] = array(5, 1); // GPSAltitude -> RATIONAL, 1
+ $tags[0x0007] = array(5, 3); // GPSTimeStamp -> RATIONAL, 3
+ $tags[0x0008] = array(2, 0); // GPSSatellites -> ASCII, Any
+ $tags[0x0009] = array(2, 2); // GPSStatus -> ASCII, 2
+ $tags[0x000A] = array(2, 2); // GPSMeasureMode -> ASCII, 2
+ $tags[0x000B] = array(5, 1); // GPSDOP -> RATIONAL, 1
+ $tags[0x000C] = array(2, 2); // GPSSpeedRef -> ASCII, 2
+ $tags[0x000D] = array(5, 1); // GPSSpeed -> RATIONAL, 1
+ $tags[0x000E] = array(2, 2); // GPSTrackRef -> ASCII, 2
+ $tags[0x000F] = array(5, 1); // GPSTrack -> RATIONAL, 1
+ $tags[0x0010] = array(2, 2); // GPSImgDirectionRef -> ASCII, 2
+ $tags[0x0011] = array(5, 1); // GPSImgDirection -> RATIONAL, 1
+ $tags[0x0012] = array(2, 0); // GPSMapDatum -> ASCII, Any
+ $tags[0x0013] = array(2, 2); // GPSDestLatitudeRef -> ASCII, 2
+ $tags[0x0014] = array(5, 3); // GPSDestLatitude -> RATIONAL, 3
+ $tags[0x0015] = array(2, 2); // GPSDestLongitudeRef -> ASCII, 2
+ $tags[0x0016] = array(5, 3); // GPSDestLongitude -> RATIONAL, 3
+ $tags[0x0017] = array(2, 2); // GPSDestBearingRef -> ASCII, 2
+ $tags[0x0018] = array(5, 1); // GPSDestBearing -> RATIONAL, 1
+ $tags[0x0019] = array(2, 2); // GPSDestDistanceRef -> ASCII, 2
+ $tags[0x001A] = array(5, 1); // GPSDestDistance -> RATIONAL, 1
+ }
+
+ return $tags;
+ }
+
+ /*************************************************************/
+ function _exifNameTags($mode)
+ {
+ $tags = $this->_exifTagNames($mode);
+ return $this->_names2Tags($tags);
+ }
+
+ /*************************************************************/
+ function _iptcTagNames()
+ {
+ $tags = array();
+ $tags[0x14] = 'SuplementalCategories';
+ $tags[0x19] = 'Keywords';
+ $tags[0x78] = 'Caption';
+ $tags[0x7A] = 'CaptionWriter';
+ $tags[0x69] = 'Headline';
+ $tags[0x28] = 'SpecialInstructions';
+ $tags[0x0F] = 'Category';
+ $tags[0x50] = 'Byline';
+ $tags[0x55] = 'BylineTitle';
+ $tags[0x6E] = 'Credit';
+ $tags[0x73] = 'Source';
+ $tags[0x74] = 'CopyrightNotice';
+ $tags[0x05] = 'ObjectName';
+ $tags[0x5A] = 'City';
+ $tags[0x5C] = 'Sublocation';
+ $tags[0x5F] = 'ProvinceState';
+ $tags[0x65] = 'CountryName';
+ $tags[0x67] = 'OriginalTransmissionReference';
+ $tags[0x37] = 'DateCreated';
+ $tags[0x0A] = 'CopyrightFlag';
+
+ return $tags;
+ }
+
+ /*************************************************************/
+ function & _iptcNameTags()
+ {
+ $tags = $this->_iptcTagNames();
+ return $this->_names2Tags($tags);
+ }
+
+ /*************************************************************/
+ function _names2Tags($tags2Names)
+ {
+ $names2Tags = array();
+ reset($tags2Names);
+ while (list($tag, $name) = each($tags2Names)) {
+ $names2Tags[$name] = $tag;
+ }
+
+ return $names2Tags;
+ }
+
+ /*************************************************************/
+ function _getByte(&$data, $pos)
+ {
+ return ord($data{$pos});
+ }
+
+ /*************************************************************/
+ function _putByte(&$data, $pos, $val)
+ {
+ $val = intval($val);
+
+ $data{$pos} = chr($val);
+
+ return $pos + 1;
+ }
+
+ /*************************************************************/
+ function _getShort(&$data, $pos, $bigEndian = true)
+ {
+ if ($bigEndian) {
+ return (ord($data{$pos}) << 8)
+ + ord($data{$pos + 1});
+ }
+ else {
+ return ord($data{$pos})
+ + (ord($data{$pos + 1}) << 8);
+ }
+ }
+
+ /*************************************************************/
+ function _putShort(&$data, $pos = 0, $val, $bigEndian = true)
+ {
+ $val = intval($val);
+
+ if ($bigEndian) {
+ $data{$pos + 0} = chr(($val & 0x0000FF00) >> 8);
+ $data{$pos + 1} = chr(($val & 0x000000FF) >> 0);
+ }
+ else {
+ $data{$pos + 0} = chr(($val & 0x00FF) >> 0);
+ $data{$pos + 1} = chr(($val & 0xFF00) >> 8);
+ }
+
+ return $pos + 2;
+ }
+
+ /*************************************************************/
+ function _getLong(&$data, $pos, $bigEndian = true)
+ {
+ if ($bigEndian) {
+ return (ord($data{$pos}) << 24)
+ + (ord($data{$pos + 1}) << 16)
+ + (ord($data{$pos + 2}) << 8)
+ + ord($data{$pos + 3});
+ }
+ else {
+ return ord($data{$pos})
+ + (ord($data{$pos + 1}) << 8)
+ + (ord($data{$pos + 2}) << 16)
+ + (ord($data{$pos + 3}) << 24);
+ }
+ }
+
+ /*************************************************************/
+ function _putLong(&$data, $pos, $val, $bigEndian = true)
+ {
+ $val = intval($val);
+
+ if ($bigEndian) {
+ $data{$pos + 0} = chr(($val & 0xFF000000) >> 24);
+ $data{$pos + 1} = chr(($val & 0x00FF0000) >> 16);
+ $data{$pos + 2} = chr(($val & 0x0000FF00) >> 8);
+ $data{$pos + 3} = chr(($val & 0x000000FF) >> 0);
+ }
+ else {
+ $data{$pos + 0} = chr(($val & 0x000000FF) >> 0);
+ $data{$pos + 1} = chr(($val & 0x0000FF00) >> 8);
+ $data{$pos + 2} = chr(($val & 0x00FF0000) >> 16);
+ $data{$pos + 3} = chr(($val & 0xFF000000) >> 24);
+ }
+
+ return $pos + 4;
+ }
+
+ /*************************************************************/
+ function & _getNullString(&$data, $pos)
+ {
+ $str = '';
+ $max = strlen($data);
+
+ while ($pos < $max) {
+ if (ord($data{$pos}) == 0) {
+ return $str;
+ }
+ else {
+ $str .= $data{$pos};
+ }
+ $pos++;
+ }
+
+ return $str;
+ }
+
+ /*************************************************************/
+ function & _getFixedString(&$data, $pos, $length = -1)
+ {
+ if ($length == -1) {
+ $length = strlen($data) - $pos;
+ }
+
+ return substr($data, $pos, $length);
+ }
+
+ /*************************************************************/
+ function _putString(&$data, $pos, &$str)
+ {
+ $len = strlen($str);
+ for ($i = 0; $i < $len; $i++) {
+ $data{$pos + $i} = $str{$i};
+ }
+
+ return $pos + $len;
+ }
+
+ /*************************************************************/
+ function _hexDump(&$data, $start = 0, $length = -1)
+ {
+ if (($length == -1) || (($length + $start) > strlen($data))) {
+ $end = strlen($data);
+ }
+ else {
+ $end = $start + $length;
+ }
+
+ $ascii = '';
+ $count = 0;
+
+ echo "<tt>\n";
+
+ while ($start < $end) {
+ if (($count % 16) == 0) {
+ echo sprintf('%04d', $count) . ': ';
+ }
+
+ $c = ord($data{$start});
+ $count++;
+ $start++;
+
+ $aux = dechex($c);
+ if (strlen($aux) == 1)
+ echo '0';
+ echo $aux . ' ';
+
+ if ($c == 60)
+ $ascii .= '<';
+ elseif ($c == 62)
+ $ascii .= '>';
+ elseif ($c == 32)
+ $ascii .= ' ';
+ elseif ($c > 32)
+ $ascii .= chr($c);
+ else
+ $ascii .= '.';
+
+ if (($count % 4) == 0) {
+ echo ' - ';
+ }
+
+ if (($count % 16) == 0) {
+ echo ': ' . $ascii . "<br>\n";
+ $ascii = '';
+ }
+ }
+
+ if ($ascii != '') {
+ while (($count % 16) != 0) {
+ echo '-- ';
+ $count++;
+ if (($count % 4) == 0) {
+ echo ' - ';
+ }
+ }
+ echo ': ' . $ascii . "<br>\n";
+ }
+
+ echo "</tt>\n";
+ }
+
+/*****************************************************************/
+}
+
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+
Modified: site/trunk/www-root/wiki/inc/SimplePie.php
===================================================================
--- site/trunk/www-root/wiki/inc/SimplePie.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/SimplePie.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10842 +1,10842 @@
-<?php
-/**
- * SimplePie
- *
- * A PHP-Based RSS and Atom Feed Framework.
- * Takes the hard work out of managing a complete RSS/Atom solution.
- *
- * Copyright (c) 2004-2007, Ryan Parman and Geoffrey Sneddon
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * * Neither the name of the SimplePie Team nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
- * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package SimplePie
- * @version "Razzleberry"
- * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @link http://simplepie.org/ SimplePie
- * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @todo phpDoc comments
- */
-
-/**
- * SimplePie Name
- */
-define('SIMPLEPIE_NAME', 'SimplePie');
-
-/**
- * SimplePie Version
- */
-define('SIMPLEPIE_VERSION', '1.0.1');
-
-/**
- * SimplePie Build
- * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::parse_date() only every load of simplepie.inc)
- */
-define('SIMPLEPIE_BUILD', 20070719221955);
-
-/**
- * SimplePie Website URL
- */
-define('SIMPLEPIE_URL', 'http://simplepie.org/');
-
-/**
- * SimplePie Useragent
- * @see SimplePie::set_useragent()
- */
-define('SIMPLEPIE_USERAGENT', SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION . ' (Feed Parser; ' . SIMPLEPIE_URL . '; Allow like Gecko) Build/' . SIMPLEPIE_BUILD);
-
-/**
- * SimplePie Linkback
- */
-define('SIMPLEPIE_LINKBACK', '<a href="' . SIMPLEPIE_URL . '" title="' . SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . '">' . SIMPLEPIE_NAME . '</a>');
-
-/**
- * No Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_NONE', 0);
-
-/**
- * Feed Link Element Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1);
-
-/**
- * Local Feed Extension Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2);
-
-/**
- * Local Feed Body Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4);
-
-/**
- * Remote Feed Extension Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8);
-
-/**
- * Remote Feed Body Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16);
-
-/**
- * All Feed Autodiscovery
- * @see SimplePie::set_autodiscovery_level()
- */
-define('SIMPLEPIE_LOCATOR_ALL', 31);
-
-/**
- * No known feed type
- */
-define('SIMPLEPIE_TYPE_NONE', 0);
-
-/**
- * RSS 0.90
- */
-define('SIMPLEPIE_TYPE_RSS_090', 1);
-
-/**
- * RSS 0.91 (Netscape)
- */
-define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2);
-
-/**
- * RSS 0.91 (Userland)
- */
-define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4);
-
-/**
- * RSS 0.91 (both Netscape and Userland)
- */
-define('SIMPLEPIE_TYPE_RSS_091', 6);
-
-/**
- * RSS 0.92
- */
-define('SIMPLEPIE_TYPE_RSS_092', 8);
-
-/**
- * RSS 0.93
- */
-define('SIMPLEPIE_TYPE_RSS_093', 16);
-
-/**
- * RSS 0.94
- */
-define('SIMPLEPIE_TYPE_RSS_094', 32);
-
-/**
- * RSS 1.0
- */
-define('SIMPLEPIE_TYPE_RSS_10', 64);
-
-/**
- * RSS 2.0
- */
-define('SIMPLEPIE_TYPE_RSS_20', 128);
-
-/**
- * RDF-based RSS
- */
-define('SIMPLEPIE_TYPE_RSS_RDF', 65);
-
-/**
- * Non-RDF-based RSS (truly intended as syndication format)
- */
-define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190);
-
-/**
- * All RSS
- */
-define('SIMPLEPIE_TYPE_RSS_ALL', 255);
-
-/**
- * Atom 0.3
- */
-define('SIMPLEPIE_TYPE_ATOM_03', 256);
-
-/**
- * Atom 1.0
- */
-define('SIMPLEPIE_TYPE_ATOM_10', 512);
-
-/**
- * All Atom
- */
-define('SIMPLEPIE_TYPE_ATOM_ALL', 768);
-
-/**
- * All feed types
- */
-define('SIMPLEPIE_TYPE_ALL', 1023);
-
-/**
- * No construct
- */
-define('SIMPLEPIE_CONSTRUCT_NONE', 0);
-
-/**
- * Text construct
- */
-define('SIMPLEPIE_CONSTRUCT_TEXT', 1);
-
-/**
- * HTML construct
- */
-define('SIMPLEPIE_CONSTRUCT_HTML', 2);
-
-/**
- * XHTML construct
- */
-define('SIMPLEPIE_CONSTRUCT_XHTML', 4);
-
-/**
- * base64-encoded construct
- */
-define('SIMPLEPIE_CONSTRUCT_BASE64', 8);
-
-/**
- * IRI construct
- */
-define('SIMPLEPIE_CONSTRUCT_IRI', 16);
-
-/**
- * A construct that might be HTML
- */
-define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32);
-
-/**
- * All constructs
- */
-define('SIMPLEPIE_CONSTRUCT_ALL', 63);
-
-/**
- * PCRE for HTML attributes
- */
-define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[a-z0-9\-._:]*)))?)*)\s*');
-
-/**
- * PCRE for XML attributes
- */
-define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*');
-
-/**
- * XML Namespace
- */
-define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace');
-
-/**
- * Atom 1.0 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom');
-
-/**
- * Atom 0.3 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#');
-
-/**
- * RDF Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
-
-/**
- * RSS 0.90 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/');
-
-/**
- * RSS 1.0 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/');
-
-/**
- * RSS 1.0 Content Module Namespace
- */
-define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/');
-
-/**
- * DC 1.0 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/');
-
-/**
- * DC 1.1 Namespace
- */
-define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/');
-
-/**
- * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace
- */
-define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#');
-
-/**
- * GeoRSS Namespace
- */
-define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss');
-
-/**
- * Media RSS Namespace
- */
-define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/');
-
-/**
- * iTunes RSS Namespace
- */
-define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
-
-/**
- * XHTML Namespace
- */
-define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml');
-
-/**
- * IANA Link Relations Registry
- */
-define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/');
-
-/**
- * Whether we're running on PHP5
- */
-define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>='));
-
-/**
- * SimplePie
- *
- * @package SimplePie
- * @version "Razzleberry"
- * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
- * @author Ryan Parman
- * @author Geoffrey Sneddon
- * @todo Option for type of fetching (cache, not modified header, fetch, etc.)
- */
-class SimplePie
-{
- /**
- * @var array Raw data
- * @access private
- */
- var $data = array();
-
- /**
- * @var mixed Error string
- * @access private
- */
- var $error;
-
- /**
- * @var object Instance of SimplePie_Sanitize (or other class)
- * @see SimplePie::set_sanitize_class()
- * @access private
- */
- var $sanitize;
-
- /**
- * @var string SimplePie Useragent
- * @see SimplePie::set_useragent()
- * @access private
- */
- var $useragent = SIMPLEPIE_USERAGENT;
-
- /**
- * @var string Feed URL
- * @see SimplePie::set_feed_url()
- * @access private
- */
- var $feed_url;
-
- /**
- * @var object Instance of SimplePie_File to use as a feed
- * @see SimplePie::set_file()
- * @access private
- */
- var $file;
-
- /**
- * @var string Raw feed data
- * @see SimplePie::set_raw_data()
- * @access private
- */
- var $raw_data;
-
- /**
- * @var int Timeout for fetching remote files
- * @see SimplePie::set_timeout()
- * @access private
- */
- var $timeout = 10;
-
- /**
- * @var bool Forces fsockopen() to be used for remote files instead
- * of cURL, even if a new enough version is installed
- * @see SimplePie::force_fsockopen()
- * @access private
- */
- var $force_fsockopen = false;
-
- /**
- * @var bool Enable/Disable XML dump
- * @see SimplePie::enable_xml_dump()
- * @access private
- */
- var $xml_dump = false;
-
- /**
- * @var bool Enable/Disable Caching
- * @see SimplePie::enable_cache()
- * @access private
- */
- var $cache = true;
-
- /**
- * @var int Cache duration (in seconds)
- * @see SimplePie::set_cache_duration()
- * @access private
- */
- var $cache_duration = 3600;
-
- /**
- * @var int Auto-discovery cache duration (in seconds)
- * @see SimplePie::set_autodiscovery_cache_duration()
- * @access private
- */
- var $autodiscovery_cache_duration = 604800; // 7 Days.
-
- /**
- * @var string Cache location (relative to executing script)
- * @see SimplePie::set_cache_location()
- * @access private
- */
- var $cache_location = './cache';
-
- /**
- * @var string Function that creates the cache filename
- * @see SimplePie::set_cache_name_function()
- * @access private
- */
- var $cache_name_function = 'md5';
-
- /**
- * @var bool Reorder feed by date descending
- * @see SimplePie::enable_order_by_date()
- * @access private
- */
- var $order_by_date = true;
-
- /**
- * @var mixed Force input encoding to be set to the follow value
- * (false, or anything type-cast to false, disables this feature)
- * @see SimplePie::set_input_encoding()
- * @access private
- */
- var $input_encoding = false;
-
- /**
- * @var int Feed Autodiscovery Level
- * @see SimplePie::set_autodiscovery_level()
- * @access private
- */
- var $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
-
- /**
- * @var string Class used for caching feeds
- * @see SimplePie::set_cache_class()
- * @access private
- */
- var $cache_class = 'SimplePie_Cache';
-
- /**
- * @var string Class used for locating feeds
- * @see SimplePie::set_locator_class()
- * @access private
- */
- var $locator_class = 'SimplePie_Locator';
-
- /**
- * @var string Class used for parsing feeds
- * @see SimplePie::set_parser_class()
- * @access private
- */
- var $parser_class = 'SimplePie_Parser';
-
- /**
- * @var string Class used for fetching feeds
- * @see SimplePie::set_file_class()
- * @access private
- */
- var $file_class = 'SimplePie_File';
-
- /**
- * @var string Class used for items
- * @see SimplePie::set_item_class()
- * @access private
- */
- var $item_class = 'SimplePie_Item';
-
- /**
- * @var string Class used for authors
- * @see SimplePie::set_author_class()
- * @access private
- */
- var $author_class = 'SimplePie_Author';
-
- /**
- * @var string Class used for categories
- * @see SimplePie::set_category_class()
- * @access private
- */
- var $category_class = 'SimplePie_Category';
-
- /**
- * @var string Class used for enclosures
- * @see SimplePie::set_enclosures_class()
- * @access private
- */
- var $enclosure_class = 'SimplePie_Enclosure';
-
- /**
- * @var string Class used for Media RSS <media:text> captions
- * @see SimplePie::set_caption_class()
- * @access private
- */
- var $caption_class = 'SimplePie_Caption';
-
- /**
- * @var string Class used for Media RSS <media:copyright>
- * @see SimplePie::set_copyright_class()
- * @access private
- */
- var $copyright_class = 'SimplePie_Copyright';
-
- /**
- * @var string Class used for Media RSS <media:credit>
- * @see SimplePie::set_credit_class()
- * @access private
- */
- var $credit_class = 'SimplePie_Credit';
-
- /**
- * @var string Class used for Media RSS <media:rating>
- * @see SimplePie::set_rating_class()
- * @access private
- */
- var $rating_class = 'SimplePie_Rating';
-
- /**
- * @var string Class used for Media RSS <media:restriction>
- * @see SimplePie::set_restriction_class()
- * @access private
- */
- var $restriction_class = 'SimplePie_Restriction';
-
- /**
- * @var mixed Set javascript query string parameter (false, or
- * anything type-cast to false, disables this feature)
- * @see SimplePie::set_javascript()
- * @access private
- */
- var $javascript = 'js';
-
- /**
- * @var int Maximum number of feeds to check with autodiscovery
- * @see SimplePie::set_max_checked_feeds()
- * @access private
- */
- var $max_checked_feeds = 10;
-
- /**
- * @var string Web-accessible path to the handler_favicon.php file.
- * @see SimplePie::set_favicon_handler()
- * @access private
- */
- var $favicon_handler = '';
-
- /**
- * @var string Web-accessible path to the handler_image.php file.
- * @see SimplePie::set_image_handler()
- * @access private
- */
- var $image_handler = '';
-
- /**
- * @var array Stores the URLs when multiple feeds are being initialized.
- * @see SimplePie::set_feed_url()
- * @access private
- */
- var $multifeed_url = array();
-
- /**
- * @var array Stores SimplePie objects when multiple feeds initialized.
- * @access private
- */
- var $multifeed_objects = array();
-
- /**
- * @var array Stores the get_object_vars() array for use with multifeeds.
- * @see SimplePie::set_feed_url()
- * @access private
- */
- var $config_settings = null;
-
- /**
- * @var array Stores the default attributes to be stripped by strip_attributes().
- * @see SimplePie::strip_attributes()
- * @access private
- */
- var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
-
- /**
- * @var array Stores the default tags to be stripped by strip_htmltags().
- * @see SimplePie::strip_htmltags()
- * @access private
- */
- var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
-
- /**
- * The SimplePie class contains feed level data and options
- *
- * There are two ways that you can create a new SimplePie object. The first
- * is by passing a feed URL as a parameter to the SimplePie constructor
- * (as well as optionally setting the cache location and cache expiry). This
- * will initialise the whole feed with all of the default settings, and you
- * can begin accessing methods and properties immediately.
- *
- * The second way is to create the SimplePie object with no parameters
- * at all. This will enable you to set configuration options. After setting
- * them, you must initialise the feed using $feed->init(). At that point the
- * object's methods and properties will be available to you. This format is
- * what is used throughout this documentation.
- *
- * @access public
- * @since 1.0 Preview Release
- * @param string $feed_url This is the URL you want to parse.
- * @param string $cache_location This is where you want the cache to be stored.
- * @param int $cache_duration This is the number of seconds that you want to store the cache file for.
- */
- function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null)
- {
- // Other objects, instances created here so we can set options on them
- $this->sanitize =& new SimplePie_Sanitize;
-
- // Set options if they're passed to the constructor
- if ($cache_location !== null)
- {
- $this->set_cache_location($cache_location);
- }
-
- if ($cache_duration !== null)
- {
- $this->set_cache_duration($cache_duration);
- }
-
- // Only init the script if we're passed a feed URL
- if ($feed_url !== null)
- {
- $this->set_feed_url($feed_url);
- $this->init();
- }
- }
-
- /**
- * Used for converting object to a string
- */
- function __toString()
- {
- return md5(serialize($this->data));
- }
-
- /**
- * This is the URL of the feed you want to parse.
- *
- * This allows you to enter the URL of the feed you want to parse, or the
- * website you want to try to use auto-discovery on. This takes priority
- * over any set raw data.
- *
- * You can set multiple feeds to mash together by passing an array instead
- * of a string for the $url. Remember that with each additional feed comes
- * additional processing and resources.
- *
- * @access public
- * @since 1.0 Preview Release
- * @param mixed $url This is the URL (or array of URLs) that you want to parse.
- * @see SimplePie::set_raw_data()
- */
- function set_feed_url($url)
- {
- if (is_array($url))
- {
- $this->multifeed_url = array();
- foreach ($url as $value)
- {
- $this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1);
- }
- }
- else
- {
- $this->feed_url = SimplePie_Misc::fix_protocol($url, 1);
- }
- }
-
- /**
- * Provides an instance of SimplePie_File to use as a feed
- *
- * @access public
- * @param object &$file Instance of SimplePie_File (or subclass)
- * @return bool True on success, false on failure
- */
- function set_file(&$file)
- {
- if (SimplePie_Misc::is_a($file, 'SimplePie_File'))
- {
- $this->feed_url = $file->url;
- $this->file =& $file;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to use a string of RSS/Atom data instead of a remote feed.
- *
- * If you have a feed available as a string in PHP, you can tell SimplePie
- * to parse that data string instead of a remote feed. Any set feed URL
- * takes precedence.
- *
- * @access public
- * @since 1.0 Beta 3
- * @param string $data RSS or Atom data as a string.
- * @see SimplePie::set_feed_url()
- */
- function set_raw_data($data)
- {
- $this->raw_data = trim($data);
- }
-
- /**
- * Allows you to override the default timeout for fetching remote feeds.
- *
- * This allows you to change the maximum time the feed's server to respond
- * and send the feed back.
- *
- * @access public
- * @since 1.0 Beta 3
- * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
- */
- function set_timeout($timeout = 10)
- {
- $this->timeout = (int) $timeout;
- }
-
- /**
- * Forces SimplePie to use fsockopen() instead of the preferred cURL
- * functions.
- *
- * @access public
- * @since 1.0 Beta 3
- * @param bool $enable Force fsockopen() to be used
- */
- function force_fsockopen($enable = false)
- {
- $this->force_fsockopen = (bool) $enable;
- }
-
- /**
- * Outputs the raw XML content of the feed, after it has gone through
- * SimplePie's filters.
- *
- * Used only for debugging, this function will output the XML content as
- * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up
- * before trying to parse it. Many parts of the feed are re-written in
- * memory, and in the end, you have a parsable feed. XML dump shows you the
- * actual XML that SimplePie tries to parse, which may or may not be very
- * different from the original feed.
- *
- * @access public
- * @since 1.0 Preview Release
- * @param bool $enable Enable XML dump
- */
- function enable_xml_dump($enable = false)
- {
- $this->xml_dump = (bool) $enable;
- }
-
- /**
- * Enables/disables caching in SimplePie.
- *
- * This option allows you to disable caching all-together in SimplePie.
- * However, disabling the cache can lead to longer load times.
- *
- * @access public
- * @since 1.0 Preview Release
- * @param bool $enable Enable caching
- */
- function enable_cache($enable = true)
- {
- $this->cache = (bool) $enable;
- }
-
- /**
- * Set the length of time (in seconds) that the contents of a feed
- * will be cached.
- *
- * @access public
- * @param int $seconds The feed content cache duration.
- */
- function set_cache_duration($seconds = 3600)
- {
- $this->cache_duration = (int) $seconds;
- }
-
- /**
- * Set the length of time (in seconds) that the autodiscovered feed
- * URL will be cached.
- *
- * @access public
- * @param int $seconds The autodiscovered feed URL cache duration.
- */
- function set_autodiscovery_cache_duration($seconds = 604800)
- {
- $this->autodiscovery_cache_duration = (int) $seconds;
- }
-
- /**
- * Set the file system location where the cached files should be stored.
- *
- * @access public
- * @param string $location The file system location.
- */
- function set_cache_location($location = './cache')
- {
- $this->cache_location = (string) $location;
- }
-
- /**
- * Determines whether feed items should be sorted into reverse chronological order.
- *
- * @access public
- * @param bool $enable Sort as reverse chronological order.
- */
- function enable_order_by_date($enable = true)
- {
- $this->order_by_date = (bool) $enable;
- }
-
- /**
- * Allows you to override the character encoding reported by the feed.
- *
- * @access public
- * @param string $encoding Character encoding.
- */
- function set_input_encoding($encoding = false)
- {
- if ($encoding)
- {
- $this->input_encoding = (string) $encoding;
- }
- else
- {
- $this->input_encoding = false;
- }
- }
-
- /**
- * Set how much feed autodiscovery to do
- *
- * @access public
- * @see SIMPLEPIE_LOCATOR_NONE
- * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY
- * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION
- * @see SIMPLEPIE_LOCATOR_LOCAL_BODY
- * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION
- * @see SIMPLEPIE_LOCATOR_REMOTE_BODY
- * @see SIMPLEPIE_LOCATOR_ALL
- * @param int $level Feed Autodiscovery Level (level can be a
- * combination of the above constants, see bitwise OR operator)
- */
- function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
- {
- $this->autodiscovery = (int) $level;
- }
-
- /**
- * Allows you to change which class SimplePie uses for caching.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_cache_class($class = 'SimplePie_Cache')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache'))
- {
- $this->cache_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for auto-discovery.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_locator_class($class = 'SimplePie_Locator')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator'))
- {
- $this->locator_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for XML parsing.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_parser_class($class = 'SimplePie_Parser')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser'))
- {
- $this->parser_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for remote file fetching.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_file_class($class = 'SimplePie_File')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File'))
- {
- $this->file_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for data sanitization.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_sanitize_class($class = 'SimplePie_Sanitize')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize'))
- {
- $this->sanitize =& new $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for handling feed items.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_item_class($class = 'SimplePie_Item')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item'))
- {
- $this->item_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for handling author data.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_author_class($class = 'SimplePie_Author')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author'))
- {
- $this->author_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for handling category data.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_category_class($class = 'SimplePie_Category')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category'))
- {
- $this->category_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for feed enclosures.
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_enclosure_class($class = 'SimplePie_Enclosure')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure'))
- {
- $this->enclosure_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for <media:text> captions
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_caption_class($class = 'SimplePie_Caption')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption'))
- {
- $this->caption_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for <media:copyright>
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_copyright_class($class = 'SimplePie_Copyright')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright'))
- {
- $this->copyright_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for <media:credit>
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_credit_class($class = 'SimplePie_Credit')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit'))
- {
- $this->credit_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for <media:rating>
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_rating_class($class = 'SimplePie_Rating')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating'))
- {
- $this->rating_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to change which class SimplePie uses for <media:restriction>
- * Useful when you are overloading or extending SimplePie's default classes.
- *
- * @access public
- * @param string $class Name of custom class.
- * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
- * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
- */
- function set_restriction_class($class = 'SimplePie_Restriction')
- {
- if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction'))
- {
- $this->restriction_class = $class;
- return true;
- }
- return false;
- }
-
- /**
- * Allows you to override the default user agent string.
- *
- * @access public
- * @param string $ua New user agent string.
- */
- function set_useragent($ua = SIMPLEPIE_USERAGENT)
- {
- $this->useragent = (string) $ua;
- }
-
- /**
- * Set callback function to create cache filename with
- *
- * @access public
- * @param mixed $function Callback function
- */
- function set_cache_name_function($function = 'md5')
- {
- if (is_callable($function))
- {
- $this->cache_name_function = $function;
- }
- }
-
- /**
- * Set javascript query string parameter
- *
- * @access public
- * @param mixed $get Javascript query string parameter
- */
- function set_javascript($get = 'js')
- {
- if ($get)
- {
- $this->javascript = (string) $get;
- }
- else
- {
- $this->javascript = false;
- }
- }
-
- /**
- * Set options to make SP as fast as possible. Forgoes a
- * substantial amount of data sanitization in favor of speed.
- *
- * @access public
- * @param bool $set Whether to set them or not
- */
- function set_stupidly_fast($set = false)
- {
- if ($set)
- {
- $this->enable_order_by_date(false);
- $this->remove_div(false);
- $this->strip_comments(false);
- $this->strip_htmltags(false);
- $this->strip_attributes(false);
- $this->set_image_handler(false);
- }
- }
-
- /**
- * Set maximum number of feeds to check with autodiscovery
- *
- * @access public
- * @param int $max Maximum number of feeds to check
- */
- function set_max_checked_feeds($max = 10)
- {
- $this->max_checked_feeds = (int) $max;
- }
-
- function remove_div($enable = true)
- {
- $this->sanitize->remove_div($enable);
- }
-
- function strip_htmltags($tags = '', $encode = null)
- {
- if ($tags === '')
- {
- $tags = $this->strip_htmltags;
- }
- $this->sanitize->strip_htmltags($tags);
- if ($encode !== null)
- {
- $this->sanitize->encode_instead_of_strip($tags);
- }
- }
-
- function encode_instead_of_strip($enable = true)
- {
- $this->sanitize->encode_instead_of_strip($enable);
- }
-
- function strip_attributes($attribs = '')
- {
- if ($attribs === '')
- {
- $attribs = $this->strip_attributes;
- }
- $this->sanitize->strip_attributes($attribs);
- }
-
- function set_output_encoding($encoding = 'UTF-8')
- {
- $this->sanitize->set_output_encoding($encoding);
- }
-
- function strip_comments($strip = false)
- {
- $this->sanitize->strip_comments($strip);
- }
-
- /**
- * Set element/attribute key/value pairs of HTML attributes
- * containing URLs that need to be resolved relative to the feed
- *
- * @access public
- * @since 1.0
- * @param array $element_attribute Element/attribute key/value pairs
- */
- function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
- {
- $this->sanitize->set_url_replacements($element_attribute);
- }
-
- /**
- * Set the handler to enable the display of cached favicons.
- *
- * @access public
- * @param str $page Web-accessible path to the handler_favicon.php file.
- * @param str $qs The query string that the value should be passed to.
- */
- function set_favicon_handler($page = false, $qs = 'i')
- {
- if ($page != false)
- {
- $this->favicon_handler = $page . '?' . $qs . '=';
- }
- else
- {
- $this->favicon_handler = '';
- }
- }
-
- /**
- * Set the handler to enable the display of cached images.
- *
- * @access public
- * @param str $page Web-accessible path to the handler_image.php file.
- * @param str $qs The query string that the value should be passed to.
- */
- function set_image_handler($page = false, $qs = 'i')
- {
- if ($page != false)
- {
- $this->sanitize->set_image_handler($page . '?' . $qs . '=');
- }
- else
- {
- $this->image_handler = '';
- }
- }
-
- function init()
- {
- if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.1.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre'))
- {
- return false;
- }
- if (isset($_GET[$this->javascript]))
- {
- if (function_exists('ob_gzhandler'))
- {
- ob_start('ob_gzhandler');
- }
- header('Content-type: text/javascript; charset: UTF-8');
- header('Cache-Control: must-revalidate');
- header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
- ?>
-function embed_odeo(link) {
- document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>');
-}
-
-function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
- if (placeholder != '') {
- document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
- }
- else {
- document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
- }
-}
-
-function embed_flash(bgcolor, width, height, link, loop, type) {
- document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>');
-}
-
-function embed_flv(width, height, link, placeholder, loop, player) {
- document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>');
-}
-
-function embed_wmedia(width, height, link) {
- document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>');
-}
- <?php
- exit;
- }
-
- // Pass whatever was set with config options over to the sanitizer.
- $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class);
- $this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen);
-
- if ($this->feed_url !== null || $this->raw_data !== null)
- {
- $this->data = array();
- $this->multifeed_objects = array();
- $cache = false;
-
- if ($this->feed_url !== null)
- {
- $parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url);
- // Decide whether to enable caching
- if ($this->cache && $parsed_feed_url['scheme'] !== '')
- {
- $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc');
- }
- // If it's enabled and we don't want an XML dump, use the cache
- if ($cache && !$this->xml_dump)
- {
- // Load the Cache
- $this->data = $cache->load();
- if (!empty($this->data))
- {
- // If the cache is for an outdated build of SimplePie
- if (!isset($this->data['build']) || $this->data['build'] != SIMPLEPIE_BUILD)
- {
- $cache->unlink();
- $this->data = array();
- }
- // If we've hit a collision just rerun it with caching disabled
- elseif (isset($this->data['url']) && $this->data['url'] != $this->feed_url)
- {
- $cache = false;
- $this->data = array();
- }
- // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL.
- elseif (isset($this->data['feed_url']))
- {
- // If the autodiscovery cache is still valid use it.
- if ($cache->mtime() + $this->autodiscovery_cache_duration > time())
- {
- // Do not need to do feed autodiscovery yet.
- if ($this->data['feed_url'] == $this->data['url'])
- {
- $cache->unlink();
- $this->data = array();
- }
- else
- {
- $this->set_feed_url($this->data['feed_url']);
- return $this->init();
- }
- }
- }
- // Check if the cache has been updated
- elseif ($cache->mtime() + $this->cache_duration < time())
- {
- // If we have last-modified and/or etag set
- if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
- {
- $headers = array();
- if (isset($this->data['headers']['last-modified']))
- {
- $headers['if-modified-since'] = $this->data['headers']['last-modified'];
- }
- if (isset($this->data['headers']['etag']))
- {
- $headers['if-none-match'] = $this->data['headers']['etag'];
- }
- $file =& new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen);
- if ($file->success)
- {
- if ($file->status_code == 304)
- {
- $cache->touch();
- return true;
- }
- else
- {
- $headers = $file->headers;
- }
- }
- else
- {
- unset($file);
- }
- }
- }
- // If the cache is still valid, just return true
- else
- {
- return true;
- }
- }
- // If the cache is empty, delete it
- else
- {
- $cache->unlink();
- $this->data = array();
- }
- }
- // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
- if (!isset($file))
- {
- if (SimplePie_Misc::is_a($this->file, 'SimplePie_File') && $this->file->url == $this->feed_url)
- {
- $file =& $this->file;
- }
- else
- {
- $file =& new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen);
- }
- }
- // If the file connection has an error, set SimplePie::error to that and quit
- if (!$file->success)
- {
- $this->error = $file->error;
- if (!empty($this->data))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- // Check if the supplied URL is a feed, if it isn't, look for it.
- $locate =& new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds);
- if (!$locate->is_feed($file))
- {
- // We need to unset this so that if SimplePie::set_file() has been called that object is untouched
- unset($file);
- if ($file = $locate->find($this->autodiscovery))
- {
- if ($cache)
- {
- if (!$cache->save(array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD)))
- {
- trigger_error("$cache->name is not writeable", E_USER_WARNING);
- }
- $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
- }
- $this->feed_url = $file->url;
- }
- else
- {
- $this->error = "A feed could not be found at $this->feed_url";
- SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
- return false;
- }
- }
- $locate = null;
-
- $headers = $file->headers;
- $data = trim($file->body);
- unset($file);
- }
- else
- {
- $data = $this->raw_data;
- }
-
- // First check to see if input has been overridden.
- if ($this->input_encoding !== false)
- {
- $encoding = $this->input_encoding;
- }
- // Second try HTTP headers
- elseif (isset($headers['content-type']) && preg_match('/;[\x09\x20]*charset=([^;]*)/i', $headers['content-type'], $charset))
- {
- $encoding = $charset[1];
- }
- // Then prolog, if at the very start of the document
- elseif (preg_match("/^<\?xml[\x20\x9\xD\xA]+version([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"1.0\"|'1.0'|\"1.1\"|'1.1')[\x20\x9\xD\xA]+encoding([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"[A-Za-z][A-Za-z0-9._\-]*\"|'[A-Za-z][A-Za-z0-9._\-]*')([\x20\x9\xD\xA]+standalone([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"(yes|no)\"|'(yes|no)'))?([\x20\x9\xD\xA]+)?\?>/", $data, $prolog))
- {
- $encoding = substr($prolog[6], 1, -1);
- }
- // UTF-32 Big Endian BOM
- elseif (strpos($data, "\x0\x0\xFE\xFF") === 0)
- {
- $encoding = 'UTF-32be';
- }
- // UTF-32 Little Endian BOM
- elseif (strpos($data, "\xFF\xFE\x0\x0") === 0)
- {
- $encoding = 'UTF-32';
- }
- // UTF-16 Big Endian BOM
- elseif (strpos($data, "\xFE\xFF") === 0)
- {
- $encoding = 'UTF-16be';
- }
- // UTF-16 Little Endian BOM
- elseif (strpos($data, "\xFF\xFE") === 0)
- {
- $encoding = 'UTF-16le';
- }
- // UTF-8 BOM
- elseif (strpos($data, "\xEF\xBB\xBF") === 0)
- {
- $encoding = 'UTF-8';
- }
- // Fallback to the default (US-ASCII for text/xml, ISO-8859-1 for text/* MIME types, UTF-8 otherwise)
- elseif (isset($headers['content-type']) && strtolower(SimplePie_Misc::parse_mime($headers['content-type'])) == 'text/xml')
- {
- $encoding = 'US-ASCII';
- }
- elseif (isset($headers['content-type']) && SimplePie_Misc::stripos(SimplePie_Misc::parse_mime($headers['content-type']), 'text/') === 0)
- {
- $encoding = 'ISO-8859-1';
- }
- else
- {
- $encoding = 'UTF-8';
- }
-
- // Change the encoding to UTF-8 (as we always use UTF-8 internally)
- if ($encoding != 'UTF-8')
- {
- $data = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8');
- }
-
- // Strip illegal characters
- $data = SimplePie_Misc::utf8_bad_replace($data);
-
- $parser =& new $this->parser_class();
- $parser->pre_process($data, 'UTF-8');
- // If we want the XML, just output that and quit
- if ($this->xml_dump)
- {
- header('Content-type: text/xml; charset=UTF-8');
- echo $data;
- exit;
- }
- // If it's parsed fine
- elseif ($parser->parse($data))
- {
- unset($data);
- $this->data = $parser->get_data();
- if (isset($this->data['child']))
- {
- if (isset($headers))
- {
- $this->data['headers'] = $headers;
- }
- $this->data['build'] = SIMPLEPIE_BUILD;
-
- // Cache the file if caching is enabled
- if ($cache && !$cache->save($this->data))
- {
- trigger_error("$cache->name is not writeable", E_USER_WARNING);
- }
- return true;
- }
- else
- {
- $this->error = "A feed could not be found at $this->feed_url";
- SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
- return false;
- }
- }
- // If we have an error, just set SimplePie::error to it and quit
- else
- {
- $this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
- SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
- return false;
- }
- }
- elseif (!empty($this->multifeed_url))
- {
- $i = 0;
- $success = 0;
- $this->multifeed_objects = array();
- foreach ($this->multifeed_url as $url)
- {
- if (SIMPLEPIE_PHP5)
- {
- // This keyword needs to defy coding standards for PHP4 compatibility
- $this->multifeed_objects[$i] = clone($this);
- }
- else
- {
- $this->multifeed_objects[$i] = $this;
- }
- $this->multifeed_objects[$i]->set_feed_url($url);
- $success |= $this->multifeed_objects[$i]->init();
- $i++;
- }
- return (bool) $success;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Return the error message for the occured error
- *
- * @access public
- * @return string Error message
- */
- function error()
- {
- return $this->error;
- }
-
- function get_encoding()
- {
- return $this->sanitize->output_encoding;
- }
-
- function handle_content_type($mime = 'text/html')
- {
- if (!headers_sent())
- {
- $header = "Content-type: $mime;";
- if ($this->get_encoding())
- {
- $header .= ' charset=' . $this->get_encoding();
- }
- else
- {
- $header .= ' charset=UTF-8';
- }
- header($header);
- }
- }
-
- function get_type()
- {
- if (!isset($this->data['type']))
- {
- $this->data['type'] = SIMPLEPIE_TYPE_ALL;
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10;
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03;
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF']))
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_10;
- }
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item'])
- || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_090;
- }
- }
- elseif (isset($this->data['child']['']['rss']))
- {
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL;
- if (isset($this->data['child']['']['rss'][0]['attribs']['']['version']))
- {
- switch (trim($this->data['child']['']['rss'][0]['attribs']['']['version']))
- {
- case '0.91':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091;
- if (isset($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
- {
- switch (trim($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
- {
- case '0':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE;
- break;
-
- case '24':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND;
- break;
- }
- }
- break;
-
- case '0.92':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_092;
- break;
-
- case '0.93':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_093;
- break;
-
- case '0.94':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_094;
- break;
-
- case '2.0':
- $this->data['type'] &= SIMPLEPIE_TYPE_RSS_20;
- break;
- }
- }
- }
- else
- {
- $this->data['type'] = SIMPLEPIE_TYPE_NONE;
- }
- }
- return $this->data['type'];
- }
-
- /**
- * Returns the URL for the favicon of the feed's website.
- *
- * @access public
- * @since 1.0
- */
- function get_favicon()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url))
- {
- $favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url);
-
- if ($this->cache && $this->favicon_handler)
- {
- $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $favicon), 'spi');
-
- if ($cache->load())
- {
- return $this->sanitize($this->favicon_handler . rawurlencode($favicon), SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- $file =& new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
-
- if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0)
- {
- if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
- {
- return $this->sanitize($this->favicon_handler . rawurlencode($favicon), SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- trigger_error("$cache->name is not writeable", E_USER_WARNING);
- return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- }
- }
- else
- {
- return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- return false;
- }
-
- /**
- * @todo If we have a perm redirect we should return the new URL
- * @todo When we make the above change, let's support <itunes:new-feed-url> as well
- * @todo Also, |atom:link|@rel=self
- */
- function subscribe_url()
- {
- if ($this->feed_url !== null)
- {
- return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- return null;
- }
- }
-
- function subscribe_feed()
- {
- if ($this->feed_url !== null)
- {
- return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- return null;
- }
- }
-
- function subscribe_outlook()
- {
- if ($this->feed_url !== null)
- {
- return 'outlook' . $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- return null;
- }
- }
-
- function subscribe_podcast()
- {
- if ($this->feed_url !== null)
- {
- return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- return null;
- }
- }
-
- function subscribe_itunes()
- {
- if ($this->feed_url !== null)
- {
- return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Creates the subscribe_* methods' return data
- *
- * @access private
- * @param string $feed_url String to prefix to the feed URL
- * @param string $site_url String to prefix to the site URL (and
- * suffix to the feed URL)
- * @return mixed URL if feed exists, false otherwise
- */
- function subscribe_service($feed_url, $site_url = null)
- {
- if ($this->subscribe_url())
- {
- $return = $this->sanitize($feed_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->subscribe_url());
- if ($site_url !== null && $this->get_link() !== null)
- {
- $return .= $this->sanitize($site_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_link());
- }
- return $return;
- }
- else
- {
- return null;
- }
- }
-
- function subscribe_aol()
- {
- return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url=');
- }
-
- function subscribe_bloglines()
- {
- return urldecode($this->subscribe_service('http://www.bloglines.com/sub/'));
- }
-
- function subscribe_eskobo()
- {
- return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage=');
- }
-
- function subscribe_feedfeeds()
- {
- return $this->subscribe_service('http://www.feedfeeds.com/add?feed=');
- }
-
- function subscribe_feedster()
- {
- return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl=');
- }
-
- function subscribe_google()
- {
- return $this->subscribe_service('http://fusion.google.com/add?feedurl=');
- }
-
- function subscribe_gritwire()
- {
- return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl=');
- }
-
- function subscribe_msn()
- {
- return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru=');
- }
-
- function subscribe_netvibes()
- {
- return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url=');
- }
-
- function subscribe_newsburst()
- {
- return $this->subscribe_service('http://www.newsburst.com/Source/?add=');
- }
-
- function subscribe_newsgator()
- {
- return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url=');
- }
-
- function subscribe_odeo()
- {
- return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed=');
- }
-
- function subscribe_podnova()
- {
- return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url=');
- }
-
- function subscribe_rojo()
- {
- return $this->subscribe_service('http://www.rojo.com/add-subscription?resource=');
- }
-
- function subscribe_yahoo()
- {
- return $this->subscribe_service('http://add.my.yahoo.com/rss?url=');
- }
-
- function get_feed_tags($namespace, $tag)
- {
- $type = $this->get_type();
- if ($type & SIMPLEPIE_TYPE_ATOM_10)
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag];
- }
- }
- if ($type & SIMPLEPIE_TYPE_ATOM_03)
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag];
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_RDF)
- {
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag];
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
- {
- if (isset($this->data['child']['']['rss'][0]['child'][$namespace][$tag]))
- {
- return $this->data['child']['']['rss'][0]['child'][$namespace][$tag];
- }
- }
- return null;
- }
-
- function get_channel_tags($namespace, $tag)
- {
- $type = $this->get_type();
- if ($type & SIMPLEPIE_TYPE_ATOM_ALL)
- {
- if ($return = $this->get_feed_tags($namespace, $tag))
- {
- return $return;
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_10)
- {
- if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel'))
- {
- if (isset($channel[0]['child'][$namespace][$tag]))
- {
- return $channel[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_090)
- {
- if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel'))
- {
- if (isset($channel[0]['child'][$namespace][$tag]))
- {
- return $channel[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
- {
- if ($channel = $this->get_feed_tags('', 'channel'))
- {
- if (isset($channel[0]['child'][$namespace][$tag]))
- {
- return $channel[0]['child'][$namespace][$tag];
- }
- }
- }
- return null;
- }
-
- function get_image_tags($namespace, $tag)
- {
- $type = $this->get_type();
- if ($type & SIMPLEPIE_TYPE_RSS_10)
- {
- if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image'))
- {
- if (isset($image[0]['child'][$namespace][$tag]))
- {
- return $image[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_090)
- {
- if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image'))
- {
- if (isset($image[0]['child'][$namespace][$tag]))
- {
- return $image[0]['child'][$namespace][$tag];
- }
- }
- }
- if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
- {
- if ($image = $this->get_channel_tags('', 'image'))
- {
- if (isset($image[0]['child'][$namespace][$tag]))
- {
- return $image[0]['child'][$namespace][$tag];
- }
- }
- }
- return null;
- }
-
- function get_base($element = array())
- {
- if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base']))
- {
- return $element['xml_base'];
- }
- elseif ($this->get_link() !== null)
- {
- return $this->get_link();
- }
- elseif (isset($this->data['headers']['content-location']))
- {
- return SimplePie_Misc::absolutize_url($this->data['headers']['content-location'], $this->subscribe_url());
- }
- else
- {
- return $this->subscribe_url();
- }
- }
-
- function sanitize($data, $type, $base = '')
- {
- return $this->sanitize->sanitize($data, $type, $base);
- }
-
- function get_title()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags('', 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- function get_link($key = 0, $rel = 'alternate')
- {
- $links = $this->get_links($rel);
- if (isset($links[$key]))
- {
- return $links[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Added for parity between the parent-level and the item/entry-level.
- */
- function get_permalink()
- {
- return $this->get_link(0);
- }
-
- function get_links($rel = 'alternate')
- {
- if (!isset($this->data['links']))
- {
- $this->data['links'] = array();
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
- {
- foreach ($links as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- }
- }
- }
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
- {
- foreach ($links as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-
- }
- }
- }
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_channel_tags('', 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
-
- $keys = array_keys($this->data['links']);
- foreach ($keys as $key)
- {
- if (SimplePie_Misc::is_isegment_nz_nc($key))
- {
- if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
- }
- else
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
- }
- }
- elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
- {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
- }
- $this->data['links'][$key] = array_unique($this->data['links'][$key]);
- }
- }
-
- if (isset($this->data['links'][$rel]))
- {
- return $this->data['links'][$rel];
- }
- else
- {
- return null;
- }
- }
-
- function get_description()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags('', 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-
- function get_copyright()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags('', 'copyright'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- function get_language()
- {
- if ($return = $this->get_channel_tags('', 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang']))
- {
- return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang']))
- {
- return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang']))
- {
- return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($this->data['headers']['content-language']))
- {
- return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- function get_latitude()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
- {
- return (float) $match[1];
- }
- else
- {
- return null;
- }
- }
-
- function get_longitude()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
- {
- return (float) $return[0]['data'];
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
- {
- return (float) $match[2];
- }
- else
- {
- return null;
- }
- }
-
- function get_image_title()
- {
- if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags('', 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- function get_image_url()
- {
- if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
- {
- return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags('', 'url'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-
- function get_image_link()
- {
- if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_image_tags('', 'link'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
- }
- else
- {
- return null;
- }
- }
-
- function get_image_width()
- {
- if ($return = $this->get_image_tags('', 'width'))
- {
- return round($return[0]['data']);
- }
- elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
- {
- return 88.0;
- }
- else
- {
- return null;
- }
- }
-
- function get_image_height()
- {
- if ($return = $this->get_image_tags('', 'height'))
- {
- return round($return[0]['data']);
- }
- elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
- {
- return 31.0;
- }
- else
- {
- return null;
- }
- }
-
- function get_item_quantity($max = 0)
- {
- $qty = count($this->get_items());
- if ($max == 0)
- {
- return $qty;
- }
- else
- {
- return ($qty > $max) ? $max : $qty;
- }
- }
-
- function get_item($key = 0)
- {
- $items = $this->get_items();
- if (isset($items[$key]))
- {
- return $items[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_items($start = 0, $end = 0)
- {
- if (!empty($this->multifeed_objects))
- {
- return SimplePie::merge_items($this->multifeed_objects, $start, $end);
- }
- elseif (!isset($this->data['items']))
- {
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] =& new $this->item_class($this, $items[$key]);
- }
- }
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] =& new $this->item_class($this, $items[$key]);
- }
- }
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] =& new $this->item_class($this, $items[$key]);
- }
- }
- if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] =& new $this->item_class($this, $items[$key]);
- }
- }
- if ($items = $this->get_channel_tags('', 'item'))
- {
- $keys = array_keys($items);
- foreach ($keys as $key)
- {
- $this->data['items'][] =& new $this->item_class($this, $items[$key]);
- }
- }
- }
-
- if (!empty($this->data['items']))
- {
- // If we want to order it by date, check if all items have a date, and then sort it
- if ($this->order_by_date)
- {
- if (!isset($this->data['ordered_items']))
- {
- $do_sort = true;
- foreach ($this->data['items'] as $item)
- {
- if (!$item->get_date('U'))
- {
- $do_sort = false;
- break;
- }
- }
- $item = null;
- $this->data['ordered_items'] = $this->data['items'];
- if ($do_sort)
- {
- usort($this->data['ordered_items'], array(&$this, 'sort_items'));
- }
- }
- $items = $this->data['ordered_items'];
- }
- else
- {
- $items = $this->data['items'];
- }
-
- // Slice the data as desired
- if ($end == 0)
- {
- return array_slice($items, $start);
- }
- else
- {
- return array_slice($items, $start, $end);
- }
- }
- else
- {
- return array();
- }
- }
-
- function sort_items($a, $b)
- {
- return $a->get_date('U') <= $b->get_date('U');
- }
-
- function merge_items($urls, $start = 0, $end = 0)
- {
- if (is_array($urls) && sizeof($urls) > 0)
- {
- $items = array();
- foreach ($urls as $arg)
- {
- if (SimplePie_Misc::is_a($arg, 'SimplePie'))
- {
- $items = array_merge($items, $arg->get_items());
- }
- else
- {
- trigger_error('Arguments must be SimplePie objects', E_USER_WARNING);
- }
- }
-
- $do_sort = true;
- foreach ($items as $item)
- {
- if (!$item->get_date('U'))
- {
- $do_sort = false;
- break;
- }
- }
- $item = null;
- if ($do_sort)
- {
- usort($items, array('SimplePie', 'sort_items'));
- }
-
- if ($end == 0)
- {
- return array_slice($items, $start);
- }
- else
- {
- return array_slice($items, $start, $end);
- }
- }
- else
- {
- trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING);
- return array();
- }
- }
-}
-
-class SimplePie_Item
-{
- var $feed;
- var $data = array();
-
- function SimplePie_Item($feed, $data)
- {
- $this->feed = $feed;
- $this->data = $data;
- }
-
- function __toString()
- {
- return md5(serialize($this->data));
- }
-
- function get_item_tags($namespace, $tag)
- {
- if (isset($this->data['child'][$namespace][$tag]))
- {
- return $this->data['child'][$namespace][$tag];
- }
- else
- {
- return null;
- }
- }
-
- function get_base($element = array())
- {
- return $this->feed->get_base($element);
- }
-
- function sanitize($data, $type, $base = '')
- {
- return $this->feed->sanitize($data, $type, $base);
- }
-
- function get_feed()
- {
- return $this->feed;
- }
-
- function get_id($hash = false)
- {
- if ($hash)
- {
- return $this->__toString();
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags('', 'guid'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (($return = $this->get_permalink()) !== null)
- {
- return $return;
- }
- elseif (($return = $this->get_title()) !== null)
- {
- return $return;
- }
- else
- {
- return $this->__toString();
- }
- }
-
- function get_title()
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags('', 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- return null;
- }
- }
-
- function get_description($description_only = false)
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags('', 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (!$description_only)
- {
- return $this->get_content(true);
- }
- else
- {
- return null;
- }
- }
-
- function get_content($content_only = false)
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
- {
- return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
- {
- return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
- }
- elseif (!$content_only)
- {
- return $this->get_description(true);
- }
- else
- {
- return null;
- }
- }
-
- function get_category($key = 0)
- {
- $categories = $this->get_categories();
- if (isset($categories[$key]))
- {
- return $categories[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_categories()
- {
- $categories = array();
-
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['attribs']['']['term']))
- {
- $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] =& new $this->feed->category_class($term, $scheme, $label);
- }
- foreach ((array) $this->get_item_tags('', 'category') as $category)
- {
- $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
- {
- $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
- {
- $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
- }
-
- if (!empty($categories))
- {
- return SimplePie_Misc::array_unique($categories);
- }
- else
- {
- return null;
- }
- }
-
- function get_author($key = 0)
- {
- $authors = $this->get_authors();
- if (isset($authors[$key]))
- {
- return $authors[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * @todo Atom inheritance (item author, source author, feed author)
- */
- function get_authors()
- {
- $authors = array();
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
- {
- $name = null;
- $uri = null;
- $email = null;
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
- {
- $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
- {
- $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
- }
- if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
- {
- $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $authors[] =& new $this->feed->author_class($name, $uri, $email);
- }
- }
- if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
- {
- $name = null;
- $url = null;
- $email = null;
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
- {
- $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
- {
- $uri = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
- }
- if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
- {
- $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if ($name !== null || $email !== null || $uri !== null)
- {
- $authors[] =& new $this->feed->author_class($name, $url, $email);
- }
- }
- if ($author = $this->get_item_tags('', 'author'))
- {
- $authors[] =& new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
- {
- $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
- {
- $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
- {
- $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
- }
-
- if (!empty($authors))
- {
- return SimplePie_Misc::array_unique($authors);
- }
- else
- {
- return null;
- }
- }
-
- function get_date($date_format = 'j F Y, g:i a')
- {
- if (!isset($this->data['date']))
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags('', 'pubDate'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
- {
- $this->data['date']['raw'] = $return[0]['data'];
- }
-
- if (!empty($this->data['date']['raw']))
- {
- $this->data['date']['parsed'] = SimplePie_Misc::parse_date($this->data['date']['raw']);
- }
- else
- {
- $this->data['date'] = null;
- }
- }
- if ($this->data['date'])
- {
- $date_format = (string) $date_format;
- switch ($date_format)
- {
- case '':
- return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
-
- case 'U':
- return $this->data['date']['parsed'];
-
- default:
- return date($date_format, $this->data['date']['parsed']);
- }
- }
- else
- {
- return null;
- }
- }
-
- function get_local_date($date_format = '%c')
- {
- if (!$date_format)
- {
- return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (($date = $this->get_date('U')) !== null)
- {
- return strftime($date_format, $date);
- }
- else
- {
- return null;
- }
- }
-
- function get_permalink()
- {
- $link = $this->get_link();
- $enclosure = $this->get_enclosure(0);
- if ($link !== null)
- {
- return $link;
- }
- elseif ($enclosure !== null)
- {
- return $enclosure->get_link();
- }
- else
- {
- return null;
- }
- }
-
- function get_link($key = 0, $rel = 'alternate')
- {
- $links = $this->get_links($rel);
- if ($links[$key] !== null)
- {
- return $links[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_links($rel = 'alternate')
- {
- if (!isset($this->data['links']))
- {
- $this->data['links'] = array();
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
-
- }
- }
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']))
- {
- $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
- $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- }
- }
- if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_item_tags('', 'link'))
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- if ($links = $this->get_item_tags('', 'guid'))
- {
- if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) == 'true')
- {
- $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
- }
- }
-
- $keys = array_keys($this->data['links']);
- foreach ($keys as $key)
- {
- if (SimplePie_Misc::is_isegment_nz_nc($key))
- {
- if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
- $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
- }
- else
- {
- $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
- }
- }
- elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
- {
- $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
- }
- $this->data['links'][$key] = array_unique($this->data['links'][$key]);
- }
- }
- if (isset($this->data['links'][$rel]))
- {
- return $this->data['links'][$rel];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * @todo Add ability to prefer one type of content over another (in a media group).
- */
- function get_enclosure($key = 0, $prefer = null)
- {
- $enclosures = $this->get_enclosures();
- if (isset($enclosures[$key]))
- {
- return $enclosures[$key];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Grabs all available enclosures (podcasts, etc.)
- *
- * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
- *
- * At this point, we're pretty much assuming that all enclosures for an item are the same content. Anything else is too complicated to properly support.
- *
- * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
- * @todo Add support for itunes: tags. These should be relatively simple compared to media:.
- * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
- */
- function get_enclosures()
- {
- if (!isset($this->data['enclosures']))
- {
- $this->data['enclosures'] = array();
-
- // Elements
- $captions_parent = null;
- $categories_parent = null;
- $copyrights_parent = null;
- $credits_parent = null;
- $description_parent = null;
- $duration_parent = null;
- $hashes_parent = null;
- $keywords_parent = null;
- $player_parent = null;
- $ratings_parent = null;
- $restrictions_parent = null;
- $thumbnails_parent = null;
- $title_parent = null;
-
- // Let's do the channel and item-level ones first, and just re-use them if we need to.
- $parent = $this->get_feed();
-
- // CAPTIONS
- if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
- {
- foreach ($captions as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
- }
- }
- elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
- {
- foreach ($captions as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
- }
- }
- if (is_array($captions_parent))
- {
- $captions_parent = array_values(SimplePie_Misc::array_unique($captions_parent));
- }
-
- // CATEGORIES
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
- }
- foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
- }
- foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)
- {
- $term = null;
- $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
- $label = null;
- if (isset($category['attribs']['']['text']))
- {
- $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
-
- if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))
- {
- foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)
- {
- if (isset($subcategory['attribs']['']['text']))
- {
- $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
- }
- }
- }
- if (is_array($categories_parent))
- {
- $categories_parent = array_values(SimplePie_Misc::array_unique($categories_parent));
- }
-
- // COPYRIGHT
- if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($copyright[0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($copyright[0]['data']))
- {
- $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
- }
- elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($copyright[0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($copyright[0]['data']))
- {
- $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
- }
-
- // CREDITS
- if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
- {
- foreach ($credits as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
- }
- }
- elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
- {
- foreach ($credits as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
- }
- }
- if (is_array($credits_parent))
- {
- $credits_parent = array_values(SimplePie_Misc::array_unique($credits_parent));
- }
-
- // DESCRIPTION
- if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
- {
- if (isset($description_parent[0]['data']))
- {
- $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
- elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
- {
- if (isset($description_parent[0]['data']))
- {
- $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
-
- // DURATION
- if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))
- {
- $seconds = null;
- $minutes = null;
- $hours = null;
- if (isset($duration_parent[0]['data']))
- {
- $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- if (sizeof($temp) > 0)
- {
- (int) $seconds = array_pop($temp);
- }
- if (sizeof($temp) > 0)
- {
- (int) $minutes = array_pop($temp);
- $seconds += $minutes * 60;
- }
- if (sizeof($temp) > 0)
- {
- (int) $hours = array_pop($temp);
- $seconds += $hours * 3600;
- }
- unset($temp);
- $duration_parent = $seconds;
- }
- }
-
- // HASHES
- if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
- {
- foreach ($hashes_iterator as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes_parent[] = $algo.':'.$value;
- }
- }
- elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
- {
- foreach ($hashes_iterator as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes_parent[] = $algo.':'.$value;
- }
- }
- if (is_array($hashes_parent))
- {
- $hashes_parent = array_values(SimplePie_Misc::array_unique($hashes_parent));
- }
-
- // KEYWORDS
- if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
- {
- if (isset($keywords[0]['data']))
- {
- $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords_parent[] = trim($word);
- }
- }
- unset($temp);
- }
- if (is_array($keywords_parent))
- {
- $keywords_parent = array_values(SimplePie_Misc::array_unique($keywords_parent));
- }
-
- // PLAYER
- if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
- {
- if (isset($player_parent[0]['attribs']['']['url']))
- {
- $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
- {
- if (isset($player_parent[0]['attribs']['']['url']))
- {
- $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
-
- // RATINGS
- if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
- }
- }
- elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = 'urn:itunes';
- $rating_value = null;
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
- }
- }
- elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
- }
- }
- elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
- {
- foreach ($ratings as $rating)
- {
- $rating_scheme = 'urn:itunes';
- $rating_value = null;
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
- }
- }
- if (is_array($ratings_parent))
- {
- $ratings_parent = array_values(SimplePie_Misc::array_unique($ratings_parent));
- }
-
- // RESTRICTIONS
- if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
- }
- }
- elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = 'allow';
- $restriction_type = null;
- $restriction_value = 'itunes';
- if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
- {
- $restriction_relationship = 'deny';
- }
- $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
- }
- }
- elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
- }
- }
- elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
- {
- foreach ($restrictions as $restriction)
- {
- $restriction_relationship = 'allow';
- $restriction_type = null;
- $restriction_value = 'itunes';
- if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
- {
- $restriction_relationship = 'deny';
- }
- $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
- }
- }
- if (is_array($restrictions_parent))
- {
- $restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent));
- }
-
- // THUMBNAILS
- if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
- {
- foreach ($thumbnails as $thumbnail)
- {
- if (isset($thumbnail['attribs']['']['url']))
- {
- $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- }
- elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
- {
- foreach ($thumbnails as $thumbnail)
- {
- if (isset($thumbnail['attribs']['']['url']))
- {
- $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- }
- }
-
- // TITLES
- if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
- {
- if (isset($title_parent[0]['data']))
- {
- $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
- elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
- {
- if (isset($title_parent[0]['data']))
- {
- $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- }
-
- // Clear the memory
- unset($parent);
-
- // If we have media:group tags, loop through them.
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
- {
- // If we have media:content tags, loop through them.
- foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
- {
- if (isset($content['attribs']['']['url']))
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- // Elements
- $captions = null;
- $categories = null;
- $copyrights = null;
- $credits = null;
- $description = null;
- $hashes = null;
- $keywords = null;
- $player = null;
- $ratings = null;
- $restrictions = null;
- $thumbnails = null;
- $title = null;
-
- // Start checking the attributes of media:content
- if (isset($content['attribs']['']['bitrate']))
- {
- $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['channels']))
- {
- $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['duration']))
- {
- $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $duration = $duration_parent;
- }
- if (isset($content['attribs']['']['expression']))
- {
- $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['framerate']))
- {
- $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['height']))
- {
- $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['lang']))
- {
- $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['fileSize']))
- {
- $length = ceil($content['attribs']['']['fileSize']);
- }
- if (isset($content['attribs']['']['medium']))
- {
- $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['samplingrate']))
- {
- $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['type']))
- {
- $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['width']))
- {
- $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-
- // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
-
- // CAPTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
- }
- if (is_array($captions))
- {
- $captions = array_values(SimplePie_Misc::array_unique($captions));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
- }
- if (is_array($captions))
- {
- $captions = array_values(SimplePie_Misc::array_unique($captions));
- }
- }
- else
- {
- $captions = $captions_parent;
- }
-
- // CATEGORIES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
- {
- foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] =& new $this->feed->category_class($term, $scheme, $label);
- }
- }
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
- {
- foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] =& new $this->feed->category_class($term, $scheme, $label);
- }
- }
- if (is_array($categories) && is_array($categories_parent))
- {
- $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
- }
- elseif (is_array($categories))
- {
- $categories = array_values(SimplePie_Misc::array_unique($categories));
- }
- elseif (is_array($categories_parent))
- {
- $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
- }
-
- // COPYRIGHTS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
- {
- $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
- {
- $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
- }
- else
- {
- $copyrights = $copyrights_parent;
- }
-
- // CREDITS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
- }
- if (is_array($credits))
- {
- $credits = array_values(SimplePie_Misc::array_unique($credits));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
- }
- if (is_array($credits))
- {
- $credits = array_values(SimplePie_Misc::array_unique($credits));
- }
- }
- else
- {
- $credits = $credits_parent;
- }
-
- // DESCRIPTION
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
- {
- $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
- {
- $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $description = $description_parent;
- }
-
- // HASHES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes[] = $algo.':'.$value;
- }
- if (is_array($hashes))
- {
- $hashes = array_values(SimplePie_Misc::array_unique($hashes));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes[] = $algo.':'.$value;
- }
- if (is_array($hashes))
- {
- $hashes = array_values(SimplePie_Misc::array_unique($hashes));
- }
- }
- else
- {
- $hashes = $hashes_parent;
- }
-
- // KEYWORDS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
- {
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
- {
- $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords[] = trim($word);
- }
- unset($temp);
- }
- if (is_array($keywords))
- {
- $keywords = array_values(SimplePie_Misc::array_unique($keywords));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
- {
- if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
- {
- $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords[] = trim($word);
- }
- unset($temp);
- }
- if (is_array($keywords))
- {
- $keywords = array_values(SimplePie_Misc::array_unique($keywords));
- }
- }
- else
- {
- $keywords = $keywords_parent;
- }
-
- // PLAYER
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
- {
- $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
- {
- $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- $player = $player_parent;
- }
-
- // RATINGS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
- }
- if (is_array($ratings))
- {
- $ratings = array_values(SimplePie_Misc::array_unique($ratings));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
- }
- if (is_array($ratings))
- {
- $ratings = array_values(SimplePie_Misc::array_unique($ratings));
- }
- }
- else
- {
- $ratings = $ratings_parent;
- }
-
- // RESTRICTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
- }
- if (is_array($restrictions))
- {
- $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
- }
- if (is_array($restrictions))
- {
- $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
- }
- }
- else
- {
- $restrictions = $restrictions_parent;
- }
-
- // THUMBNAILS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
- {
- $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- if (is_array($thumbnails))
- {
- $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
- }
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
- {
- foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
- {
- $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- if (is_array($thumbnails))
- {
- $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
- }
- }
- else
- {
- $thumbnails = $thumbnails_parent;
- }
-
- // TITLES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
- {
- $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
- {
- $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $title = $title_parent;
- }
-
- $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
- }
- }
- }
-
- // If we have standalone media:content tags, loop through them.
- if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
- {
- foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
- {
- if (isset($content['attribs']['']['url']))
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- // Elements
- $captions = null;
- $categories = null;
- $copyrights = null;
- $credits = null;
- $description = null;
- $hashes = null;
- $keywords = null;
- $player = null;
- $ratings = null;
- $restrictions = null;
- $thumbnails = null;
- $title = null;
-
- // Start checking the attributes of media:content
- if (isset($content['attribs']['']['bitrate']))
- {
- $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['channels']))
- {
- $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['duration']))
- {
- $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $duration = $duration_parent;
- }
- if (isset($content['attribs']['']['expression']))
- {
- $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['framerate']))
- {
- $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['height']))
- {
- $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['lang']))
- {
- $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['fileSize']))
- {
- $length = ceil($content['attribs']['']['fileSize']);
- }
- if (isset($content['attribs']['']['medium']))
- {
- $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['samplingrate']))
- {
- $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['type']))
- {
- $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['attribs']['']['width']))
- {
- $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
-
- // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
-
- // CAPTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
- {
- $caption_type = null;
- $caption_lang = null;
- $caption_startTime = null;
- $caption_endTime = null;
- $caption_text = null;
- if (isset($caption['attribs']['']['type']))
- {
- $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['lang']))
- {
- $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['start']))
- {
- $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['attribs']['']['end']))
- {
- $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($caption['data']))
- {
- $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
- }
- if (is_array($captions))
- {
- $captions = array_values(SimplePie_Misc::array_unique($captions));
- }
- }
- else
- {
- $captions = $captions_parent;
- }
-
- // CATEGORIES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
- {
- foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
- {
- $term = null;
- $scheme = null;
- $label = null;
- if (isset($category['data']))
- {
- $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($category['attribs']['']['scheme']))
- {
- $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $scheme = 'http://search.yahoo.com/mrss/category_schema';
- }
- if (isset($category['attribs']['']['label']))
- {
- $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $categories[] =& new $this->feed->category_class($term, $scheme, $label);
- }
- }
- if (is_array($categories) && is_array($categories_parent))
- {
- $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
- }
- elseif (is_array($categories))
- {
- $categories = array_values(SimplePie_Misc::array_unique($categories));
- }
- elseif (is_array($categories_parent))
- {
- $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
- }
- else
- {
- $categories = null;
- }
-
- // COPYRIGHTS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
- {
- $copyright_url = null;
- $copyright_label = null;
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
- {
- $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
- {
- $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
- }
- else
- {
- $copyrights = $copyrights_parent;
- }
-
- // CREDITS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
- {
- $credit_role = null;
- $credit_scheme = null;
- $credit_name = null;
- if (isset($credit['attribs']['']['role']))
- {
- $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($credit['attribs']['']['scheme']))
- {
- $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $credit_scheme = 'urn:ebu';
- }
- if (isset($credit['data']))
- {
- $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
- }
- if (is_array($credits))
- {
- $credits = array_values(SimplePie_Misc::array_unique($credits));
- }
- }
- else
- {
- $credits = $credits_parent;
- }
-
- // DESCRIPTION
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
- {
- $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $description = $description_parent;
- }
-
- // HASHES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
- {
- $value = null;
- $algo = null;
- if (isset($hash['data']))
- {
- $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($hash['attribs']['']['algo']))
- {
- $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $algo = 'md5';
- }
- $hashes[] = $algo.':'.$value;
- }
- if (is_array($hashes))
- {
- $hashes = array_values(SimplePie_Misc::array_unique($hashes));
- }
- }
- else
- {
- $hashes = $hashes_parent;
- }
-
- // KEYWORDS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
- {
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
- {
- $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
- foreach ($temp as $word)
- {
- $keywords[] = trim($word);
- }
- unset($temp);
- }
- if (is_array($keywords))
- {
- $keywords = array_values(SimplePie_Misc::array_unique($keywords));
- }
- }
- else
- {
- $keywords = $keywords_parent;
- }
-
- // PLAYER
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
- {
- $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- else
- {
- $player = $player_parent;
- }
-
- // RATINGS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
- {
- $rating_scheme = null;
- $rating_value = null;
- if (isset($rating['attribs']['']['scheme']))
- {
- $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $rating_scheme = 'urn:simple';
- }
- if (isset($rating['data']))
- {
- $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
- }
- if (is_array($ratings))
- {
- $ratings = array_values(SimplePie_Misc::array_unique($ratings));
- }
- }
- else
- {
- $ratings = $ratings_parent;
- }
-
- // RESTRICTIONS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
- {
- $restriction_relationship = null;
- $restriction_type = null;
- $restriction_value = null;
- if (isset($restriction['attribs']['']['relationship']))
- {
- $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['attribs']['']['type']))
- {
- $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($restriction['data']))
- {
- $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
- }
- if (is_array($restrictions))
- {
- $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
- }
- }
- else
- {
- $restrictions = $restrictions_parent;
- }
-
- // THUMBNAILS
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
- {
- foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
- {
- $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
- }
- if (is_array($thumbnails))
- {
- $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
- }
- }
- else
- {
- $thumbnails = $thumbnails_parent;
- }
-
- // TITLES
- if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
- {
- $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- else
- {
- $title = $title_parent;
- }
-
- $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
- }
- }
- }
-
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- if (isset($link['attribs']['']['type']))
- {
- $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($link['attribs']['']['length']))
- {
- $length = ceil($link['attribs']['']['length']);
- }
-
- // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
- $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
- }
- }
-
- foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
- {
- if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
- if (isset($link['attribs']['']['type']))
- {
- $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($link['attribs']['']['length']))
- {
- $length = ceil($link['attribs']['']['length']);
- }
-
- // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
- $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
- }
- }
-
- if ($enclosure = $this->get_item_tags('', 'enclosure'))
- {
- if (isset($enclosure[0]['attribs']['']['url']))
- {
- // Attributes
- $bitrate = null;
- $channels = null;
- $duration = null;
- $expression = null;
- $framerate = null;
- $height = null;
- $javascript = null;
- $lang = null;
- $length = null;
- $medium = null;
- $samplingrate = null;
- $type = null;
- $url = null;
- $width = null;
-
- $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));
- if (isset($enclosure[0]['attribs']['']['type']))
- {
- $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
- }
- if (isset($enclosure[0]['attribs']['']['length']))
- {
- $length = ceil($enclosure[0]['attribs']['']['length']);
- }
-
- // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
- $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
- }
- }
- $this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures']));
- }
- if (!empty($this->data['enclosures']))
- {
- return $this->data['enclosures'];
- }
- else
- {
- return null;
- }
- }
-
- function get_latitude()
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
- {
- return (float) $match[1];
- }
- else
- {
- return null;
- }
- }
-
- function get_longitude()
- {
- if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
- {
- return (float) $return[0]['data'];
- }
- elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
- {
- return (float) $return[0]['data'];
- }
- elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
- {
- return (float) $match[2];
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Creates the add_to_* methods' return data
- *
- * @access private
- * @param string $item_url String to prefix to the item permalink
- * @param string $title_url String to prefix to the item title
- * (and suffix to the item permalink)
- * @return mixed URL if feed exists, false otherwise
- */
- function add_to_service($item_url, $title_url = null)
- {
- if ($this->get_permalink() !== null)
- {
- $return = $this->sanitize($item_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_permalink());
- if ($title_url !== null && $this->get_title() !== null)
- {
- $return .= $this->sanitize($title_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_title());
- }
- return $return;
- }
- else
- {
- return null;
- }
- }
-
- function add_to_blinklist()
- {
- return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title=');
- }
-
- function add_to_blogmarks()
- {
- return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title=');
- }
-
- function add_to_delicious()
- {
- return $this->add_to_service('http://del.icio.us/post/?v=3&url=', '&title=');
- }
-
- function add_to_digg()
- {
- return $this->add_to_service('http://digg.com/submit?phase=2&URL=');
- }
-
- function add_to_furl()
- {
- return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t=');
- }
-
- function add_to_magnolia()
- {
- return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title=');
- }
-
- function add_to_myweb20()
- {
- return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t=');
- }
-
- function add_to_newsvine()
- {
- return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h=');
- }
-
- function add_to_reddit()
- {
- return $this->add_to_service('http://reddit.com/submit?url=', '&title=');
- }
-
- function add_to_segnalo()
- {
- return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title=');
- }
-
- function add_to_simpy()
- {
- return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title=');
- }
-
- function add_to_spurl()
- {
- return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title=');
- }
-
- function add_to_wists()
- {
- return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title=');
- }
-
- function search_technorati()
- {
- return $this->add_to_service('http://www.technorati.com/search/');
- }
-}
-
-class SimplePie_Author
-{
- var $name;
- var $link;
- var $email;
-
- // Constructor, used to input the data
- function SimplePie_Author($name = null, $link = null, $email = null)
- {
- $this->name = $name;
- $this->link = $link;
- $this->email = $email;
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_name()
- {
- if ($this->name !== null)
- {
- return $this->name;
- }
- else
- {
- return null;
- }
- }
-
- function get_link()
- {
- if ($this->link !== null)
- {
- return $this->link;
- }
- else
- {
- return null;
- }
- }
-
- function get_email()
- {
- if ($this->email !== null)
- {
- return $this->email;
- }
- else
- {
- return null;
- }
- }
-}
-
-class SimplePie_Category
-{
- var $term;
- var $scheme;
- var $label;
-
- // Constructor, used to input the data
- function SimplePie_Category($term = null, $scheme = null, $label = null)
- {
- $this->term = $term;
- $this->scheme = $scheme;
- $this->label = $label;
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_term()
- {
- if ($this->term !== null)
- {
- return $this->term;
- }
- else
- {
- return null;
- }
- }
-
- function get_scheme()
- {
- if ($this->scheme !== null)
- {
- return $this->scheme;
- }
- else
- {
- return null;
- }
- }
-
- function get_label()
- {
- if ($this->label !== null)
- {
- return $this->label;
- }
- else
- {
- return $this->get_term();
- }
- }
-}
-
-class SimplePie_Enclosure
-{
- var $bitrate;
- var $captions;
- var $categories;
- var $channels;
- var $copyright;
- var $credits;
- var $description;
- var $duration;
- var $expression;
- var $framerate;
- var $handler;
- var $hashes;
- var $height;
- var $javascript;
- var $keywords;
- var $lang;
- var $length;
- var $link;
- var $medium;
- var $player;
- var $ratings;
- var $restrictions;
- var $samplingrate;
- var $thumbnails;
- var $title;
- var $type;
- var $width;
-
- // Constructor, used to input the data
- function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null)
- {
- $this->bitrate = $bitrate;
- $this->captions = $captions;
- $this->categories = $categories;
- $this->channels = $channels;
- $this->copyright = $copyright;
- $this->credits = $credits;
- $this->description = $description;
- $this->duration = $duration;
- $this->expression = $expression;
- $this->framerate = $framerate;
- $this->hashes = $hashes;
- $this->height = $height;
- $this->javascript = $javascript;
- $this->keywords = $keywords;
- $this->lang = $lang;
- $this->length = $length;
- $this->link = $link;
- $this->medium = $medium;
- $this->player = $player;
- $this->ratings = $ratings;
- $this->restrictions = $restrictions;
- $this->samplingrate = $samplingrate;
- $this->thumbnails = $thumbnails;
- $this->title = $title;
- $this->type = $type;
- $this->width = $width;
- if (class_exists('idna_convert'))
- {
- $idn =& new idna_convert;
- $parsed = SimplePie_Misc::parse_url($link);
- $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
- }
- $this->handler = $this->get_handler(); // Needs to load last
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_bitrate()
- {
- if ($this->bitrate !== null)
- {
- return $this->bitrate;
- }
- else
- {
- return null;
- }
- }
-
- function get_caption($key = 0)
- {
- $captions = $this->get_captions();
- if (isset($captions[$key]))
- {
- return $captions[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_captions()
- {
- if ($this->captions !== null)
- {
- return $this->captions;
- }
- else
- {
- return null;
- }
- }
-
- function get_category($key = 0)
- {
- $categories = $this->get_categories();
- if (isset($categories[$key]))
- {
- return $categories[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_categories()
- {
- if ($this->categories !== null)
- {
- return $this->categories;
- }
- else
- {
- return null;
- }
- }
-
- function get_channels()
- {
- if ($this->channels !== null)
- {
- return $this->channels;
- }
- else
- {
- return null;
- }
- }
-
- function get_copyright()
- {
- if ($this->copyright !== null)
- {
- return $this->copyright;
- }
- else
- {
- return null;
- }
- }
-
- function get_credit($key = 0)
- {
- $credits = $this->get_credits();
- if (isset($credits[$key]))
- {
- return $credits[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_credits()
- {
- if ($this->credits !== null)
- {
- return $this->credits;
- }
- else
- {
- return null;
- }
- }
-
- function get_description()
- {
- if ($this->description !== null)
- {
- return $this->description;
- }
- else
- {
- return null;
- }
- }
-
- function get_duration($convert = false)
- {
- if ($this->duration !== null)
- {
- if ($convert)
- {
- $time = SimplePie_Misc::time_hms($this->duration);
- return $time;
- }
- else
- {
- return $this->duration;
- }
- }
- else
- {
- return null;
- }
- }
-
- function get_expression()
- {
- if ($this->expression !== null)
- {
- return $this->expression;
- }
- else
- {
- return 'full';
- }
- }
-
- function get_extension()
- {
- if ($this->link !== null)
- {
- $url = SimplePie_Misc::parse_url($this->link);
- if ($url['path'] !== '')
- {
- return pathinfo($url['path'], PATHINFO_EXTENSION);
- }
- }
- return null;
- }
-
- function get_framerate()
- {
- if ($this->framerate !== null)
- {
- return $this->framerate;
- }
- else
- {
- return null;
- }
- }
-
- function get_handler()
- {
- return $this->get_real_type(true);
- }
-
- function get_hash($key = 0)
- {
- $hashes = $this->get_hashes();
- if (isset($hashes[$key]))
- {
- return $hashes[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_hashes()
- {
- if ($this->hashes !== null)
- {
- return $this->hashes;
- }
- else
- {
- return null;
- }
- }
-
- function get_height()
- {
- if ($this->height !== null)
- {
- return $this->height;
- }
- else
- {
- return null;
- }
- }
-
- function get_language()
- {
- if ($this->lang !== null)
- {
- return $this->lang;
- }
- else
- {
- return null;
- }
- }
-
- function get_keyword($key = 0)
- {
- $keywords = $this->get_keywords();
- if (isset($keywords[$key]))
- {
- return $keywords[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_keywords()
- {
- if ($this->keywords !== null)
- {
- return $this->keywords;
- }
- else
- {
- return null;
- }
- }
-
- function get_length()
- {
- if ($this->length !== null)
- {
- return $this->length;
- }
- else
- {
- return null;
- }
- }
-
- function get_link()
- {
- if ($this->link !== null)
- {
- return urldecode($this->link);
- }
- else
- {
- return null;
- }
- }
-
- function get_medium()
- {
- if ($this->medium !== null)
- {
- return $this->medium;
- }
- else
- {
- return null;
- }
- }
-
- function get_player()
- {
- if ($this->player !== null)
- {
- return $this->player;
- }
- else
- {
- return null;
- }
- }
-
- function get_rating($key = 0)
- {
- $ratings = $this->get_ratings();
- if (isset($ratings[$key]))
- {
- return $ratings[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_ratings()
- {
- if ($this->ratings !== null)
- {
- return $this->ratings;
- }
- else
- {
- return null;
- }
- }
-
- function get_restriction($key = 0)
- {
- $restrictions = $this->get_restrictions();
- if (isset($restrictions[$key]))
- {
- return $restrictions[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_restrictions()
- {
- if ($this->restrictions !== null)
- {
- return $this->restrictions;
- }
- else
- {
- return null;
- }
- }
-
- function get_sampling_rate()
- {
- if ($this->samplingrate !== null)
- {
- return $this->samplingrate;
- }
- else
- {
- return null;
- }
- }
-
- function get_size()
- {
- $length = $this->get_length();
- if ($length !== null)
- {
- return round($length/1048576, 2);
- }
- else
- {
- return null;
- }
- }
-
- function get_thumbnail($key = 0)
- {
- $thumbnails = $this->get_thumbnails();
- if (isset($thumbnails[$key]))
- {
- return $thumbnails[$key];
- }
- else
- {
- return null;
- }
- }
-
- function get_thumbnails()
- {
- if ($this->thumbnails !== null)
- {
- return $this->thumbnails;
- }
- else
- {
- return null;
- }
- }
-
- function get_title()
- {
- if ($this->title !== null)
- {
- return $this->title;
- }
- else
- {
- return null;
- }
- }
-
- function get_type()
- {
- if ($this->type !== null)
- {
- return $this->type;
- }
- else
- {
- return null;
- }
- }
-
- function get_width()
- {
- if ($this->width !== null)
- {
- return $this->width;
- }
- else
- {
- return null;
- }
- }
-
- function native_embed($options='')
- {
- return $this->embed($options, true);
- }
-
- /**
- * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
- */
- function embed($options = '', $native = false)
- {
- // Set up defaults
- $audio = '';
- $video = '';
- $alt = '';
- $altclass = '';
- $loop = 'false';
- $width = 'auto';
- $height = 'auto';
- $bgcolor = '#ffffff';
- $mediaplayer = '';
- $widescreen = false;
- $handler = $this->get_handler();
- $type = $this->get_real_type();
-
- // Process options and reassign values as necessary
- if (is_array($options))
- {
- extract($options);
- }
- else
- {
- $options = explode(',', $options);
- foreach($options as $option)
- {
- $opt = explode(':', $option, 2);
- if (isset($opt[0], $opt[1]))
- {
- $opt[0] = trim($opt[0]);
- $opt[1] = trim($opt[1]);
- switch ($opt[0])
- {
- case 'audio':
- $audio = $opt[1];
- break;
-
- case 'video':
- $video = $opt[1];
- break;
-
- case 'alt':
- $alt = $opt[1];
- break;
-
- case 'altclass':
- $altclass = $opt[1];
- break;
-
- case 'loop':
- $loop = $opt[1];
- break;
-
- case 'width':
- $width = $opt[1];
- break;
-
- case 'height':
- $height = $opt[1];
- break;
-
- case 'bgcolor':
- $bgcolor = $opt[1];
- break;
-
- case 'mediaplayer':
- $mediaplayer = $opt[1];
- break;
-
- case 'widescreen':
- $widescreen = $opt[1];
- break;
- }
- }
- }
- }
-
- $mime = explode('/', $type, 2);
- $mime = $mime[0];
-
- // Process values for 'auto'
- if ($width == 'auto')
- {
- if ($mime == 'video')
- {
- if ($height == 'auto')
- {
- $width = 480;
- }
- elseif ($widescreen)
- {
- $width = round((intval($height)/9)*16);
- }
- else
- {
- $width = round((intval($height)/3)*4);
- }
- }
- else
- {
- $width = '100%';
- }
- }
-
- if ($height == 'auto')
- {
- if ($mime == 'audio')
- {
- $height = 0;
- }
- elseif ($mime == 'video')
- {
- if ($width == 'auto')
- {
- if ($widescreen)
- {
- $height = 270;
- }
- else
- {
- $height = 360;
- }
- }
- elseif ($widescreen)
- {
- $height = round((intval($width)/16)*9);
- }
- else
- {
- $height = round((intval($width)/4)*3);
- }
- }
- else
- {
- $height = 376;
- }
- }
- elseif ($mime == 'audio')
- {
- $height = 0;
- }
-
- // Set proper placeholder value
- if ($mime == 'audio')
- {
- $placeholder = $audio;
- }
- elseif ($mime == 'video')
- {
- $placeholder = $video;
- }
-
- $embed = '';
-
- // Make sure the JS library is included
- if (!$native)
- {
- static $javascript_outputted = null;
- if (!$javascript_outputted && $this->javascript)
- {
- $embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>';
- $javascript_outputted = true;
- }
- }
-
- // Odeo Feed MP3's
- if ($handler == 'odeo')
- {
- if ($native)
- {
- $embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>';
- }
- else
- {
- $embed .= '<script type="text/javascript">embed_odeo("' . $this->get_link() . '");</script>';
- }
- }
-
- // Flash
- elseif ($handler == 'flash')
- {
- if ($native)
- {
- $embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>";
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>";
- }
- }
-
- // Flash Media Player file types.
- // Preferred handler for MP3 file types.
- elseif ($handler == 'fmedia' || ($handler == 'mp3' && $mediaplayer != ''))
- {
- $height += 20;
- if ($native)
- {
- $embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>";
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>";
- }
- }
-
- // QuickTime 7 file types. Need to test with QuickTime 6.
- // Only handle MP3's if the Flash Media Player is not present.
- elseif ($handler == 'quicktime' || ($handler == 'mp3' && $mediaplayer == ''))
- {
- $height += 16;
- if ($native)
- {
- if ($placeholder != ""){
- $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
- }
- else {
- $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
- }
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>";
- }
- }
-
- // Windows Media
- elseif ($handler == 'wmedia')
- {
- $height += 45;
- if ($native)
- {
- $embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>";
- }
- else
- {
- $embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>";
- }
- }
-
- // Everything else
- else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
-
- return $embed;
- }
-
- function get_real_type($find_handler = false)
- {
- // If it's Odeo, let's get it out of the way.
- if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com')
- {
- return 'odeo';
- }
-
- // Mime-types by handler.
- $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash
- $types_fmedia = array('video/flv', 'video/x-flv'); // Flash Media Player
- $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime
- $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media
- $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3
-
- if ($this->get_type() !== null)
- {
- $type = strtolower($this->type);
- }
- else
- {
- $type = null;
- }
-
- // If we encounter an unsupported mime-type, check the file extension and guess intelligently.
- if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3)))
- {
- switch (strtolower($this->get_extension()))
- {
- // Audio mime-types
- case 'aac':
- case 'adts':
- $type = 'audio/acc';
- break;
-
- case 'aif':
- case 'aifc':
- case 'aiff':
- case 'cdda':
- $type = 'audio/aiff';
- break;
-
- case 'bwf':
- $type = 'audio/wav';
- break;
-
- case 'kar':
- case 'mid':
- case 'midi':
- case 'smf':
- $type = 'audio/midi';
- break;
-
- case 'm4a':
- $type = 'audio/x-m4a';
- break;
-
- case 'mp3':
- case 'swa':
- $type = 'audio/mp3';
- break;
-
- case 'wav':
- $type = 'audio/wav';
- break;
-
- case 'wax':
- $type = 'audio/x-ms-wax';
- break;
-
- case 'wma':
- $type = 'audio/x-ms-wma';
- break;
-
- // Video mime-types
- case '3gp':
- case '3gpp':
- $type = 'video/3gpp';
- break;
-
- case '3g2':
- case '3gp2':
- $type = 'video/3gpp2';
- break;
-
- case 'asf':
- $type = 'video/x-ms-asf';
- break;
-
- case 'flv':
- $type = 'video/x-flv';
- break;
-
- case 'm1a':
- case 'm1s':
- case 'm1v':
- case 'm15':
- case 'm75':
- case 'mp2':
- case 'mpa':
- case 'mpeg':
- case 'mpg':
- case 'mpm':
- case 'mpv':
- $type = 'video/mpeg';
- break;
-
- case 'm4v':
- $type = 'video/x-m4v';
- break;
-
- case 'mov':
- case 'qt':
- $type = 'video/quicktime';
- break;
-
- case 'mp4':
- case 'mpg4':
- $type = 'video/mp4';
- break;
-
- case 'sdv':
- $type = 'video/sd-video';
- break;
-
- case 'wm':
- $type = 'video/x-ms-wm';
- break;
-
- case 'wmv':
- $type = 'video/x-ms-wmv';
- break;
-
- case 'wvx':
- $type = 'video/x-ms-wvx';
- break;
-
- // Flash mime-types
- case 'spl':
- $type = 'application/futuresplash';
- break;
-
- case 'swf':
- $type = 'application/x-shockwave-flash';
- break;
- }
- }
-
- if ($find_handler)
- {
- if (in_array($type, $types_flash))
- {
- return 'flash';
- }
- elseif (in_array($type, $types_fmedia))
- {
- return 'fmedia';
- }
- elseif (in_array($type, $types_quicktime))
- {
- return 'quicktime';
- }
- elseif (in_array($type, $types_wmedia))
- {
- return 'wmedia';
- }
- elseif (in_array($type, $types_mp3))
- {
- return 'mp3';
- }
- else
- {
- return null;
- }
- }
- else
- {
- return $type;
- }
- }
-}
-
-class SimplePie_Caption
-{
- var $type;
- var $lang;
- var $startTime;
- var $endTime;
- var $text;
-
- // Constructor, used to input the data
- function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null)
- {
- $this->type = $type;
- $this->lang = $lang;
- $this->startTime = $startTime;
- $this->endTime = $endTime;
- $this->text = $text;
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_endtime()
- {
- if ($this->endTime !== null)
- {
- return $this->endTime;
- }
- else
- {
- return null;
- }
- }
-
- function get_language()
- {
- if ($this->language !== null)
- {
- return $this->language;
- }
- else
- {
- return null;
- }
- }
-
- function get_starttime()
- {
- if ($this->startTime !== null)
- {
- return $this->startTime;
- }
- else
- {
- return null;
- }
- }
-
- function get_text()
- {
- if ($this->text !== null)
- {
- return $this->text;
- }
- else
- {
- return null;
- }
- }
-
- function get_type()
- {
- if ($this->type !== null)
- {
- return $this->type;
- }
- else
- {
- return null;
- }
- }
-}
-
-class SimplePie_Credit
-{
- var $role;
- var $scheme;
- var $name;
-
- // Constructor, used to input the data
- function SimplePie_Credit($role = null, $scheme = null, $name = null)
- {
- $this->role = $role;
- $this->scheme = $scheme;
- $this->name = $name;
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_role()
- {
- if ($this->role !== null)
- {
- return $this->role;
- }
- else
- {
- return null;
- }
- }
-
- function get_scheme()
- {
- if ($this->scheme !== null)
- {
- return $this->scheme;
- }
- else
- {
- return null;
- }
- }
-
- function get_name()
- {
- if ($this->name !== null)
- {
- return $this->name;
- }
- else
- {
- return null;
- }
- }
-}
-
-class SimplePie_Copyright
-{
- var $url;
- var $label;
-
- // Constructor, used to input the data
- function SimplePie_Copyright($url = null, $label = null)
- {
- $this->url = $url;
- $this->label = $label;
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_url()
- {
- if ($this->url !== null)
- {
- return $this->url;
- }
- else
- {
- return null;
- }
- }
-
- function get_attribution()
- {
- if ($this->label !== null)
- {
- return $this->label;
- }
- else
- {
- return null;
- }
- }
-}
-
-class SimplePie_Rating
-{
- var $scheme;
- var $value;
-
- // Constructor, used to input the data
- function SimplePie_Rating($scheme = null, $value = null)
- {
- $this->scheme = $scheme;
- $this->value = $value;
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_scheme()
- {
- if ($this->scheme !== null)
- {
- return $this->scheme;
- }
- else
- {
- return null;
- }
- }
-
- function get_value()
- {
- if ($this->value !== null)
- {
- return $this->value;
- }
- else
- {
- return null;
- }
- }
-}
-
-class SimplePie_Restriction
-{
- var $relationship;
- var $type;
- var $value;
-
- // Constructor, used to input the data
- function SimplePie_Restriction($relationship = null, $type = null, $value = null)
- {
- $this->relationship = $relationship;
- $this->type = $type;
- $this->value = $value;
- }
-
- function __toString()
- {
- // There is no $this->data here
- return md5(serialize($this));
- }
-
- function get_relationship()
- {
- if ($this->relationship !== null)
- {
- return $this->relationship;
- }
- else
- {
- return null;
- }
- }
-
- function get_type()
- {
- if ($this->type !== null)
- {
- return $this->type;
- }
- else
- {
- return null;
- }
- }
-
- function get_value()
- {
- if ($this->value !== null)
- {
- return $this->value;
- }
- else
- {
- return null;
- }
- }
-}
-
-/**
- * @todo Move to properly supporting RFC2616 (HTTP/1.1)
- */
-class SimplePie_File
-{
- var $url;
- var $useragent;
- var $success = true;
- var $headers = array();
- var $body;
- var $status_code;
- var $redirects = 0;
- var $error;
- var $method;
-
- function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
- {
- if (class_exists('idna_convert'))
- {
- $idn =& new idna_convert;
- $parsed = SimplePie_Misc::parse_url($url);
- $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
- }
- $this->url = $url;
- $this->useragent = $useragent;
- if (preg_match('/^http(s)?:\/\//i', $url))
- {
- if ($useragent === null)
- {
- $useragent = ini_get('user_agent');
- $this->useragent = $useragent;
- }
- if (!is_array($headers))
- {
- $headers = array();
- }
- if (!$force_fsockopen && extension_loaded('curl'))
- {
- $this->method = 'curl';
- $fp = curl_init();
- $headers2 = array();
- foreach ($headers as $key => $value)
- {
- $headers2[] = "$key: $value";
- }
- if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
- {
- curl_setopt($fp, CURLOPT_ENCODING, '');
- }
- curl_setopt($fp, CURLOPT_URL, $url);
- curl_setopt($fp, CURLOPT_HEADER, 1);
- curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
- curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($fp, CURLOPT_REFERER, $url);
- curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
- curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
- if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
- {
- curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
- }
-
- $this->headers = curl_exec($fp);
- if (curl_errno($fp) == 23 || curl_errno($fp) == 61)
- {
- curl_setopt($fp, CURLOPT_ENCODING, 'none');
- $this->headers = curl_exec($fp);
- }
- if (curl_errno($fp))
- {
- $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
- $this->success = false;
- }
- else
- {
- $info = curl_getinfo($fp);
- curl_close($fp);
- $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
- $this->headers = array_pop($this->headers);
- $parser =& new SimplePie_HTTP_Parser($this->headers);
- if ($parser->parse())
- {
- $this->headers = $parser->headers;
- $this->body = $parser->body;
- $this->status_code = $parser->status_code;
- if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
- {
- $this->redirects++;
- if (isset($this->headers['content-location']))
- {
- $location = SimplePie_Misc::absolutize_url($this->headers['location'], SimplePie_Misc::absolutize_url($this->headers['content-location'], $url));
- }
- else
- {
- $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
- }
- return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
- }
- }
- }
- }
- else
- {
- $this->method = 'fsockopen';
- $url_parts = parse_url($url);
- if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https')
- {
- $url_parts['host'] = "ssl://$url_parts[host]";
- $url_parts['port'] = 443;
- }
- if (!isset($url_parts['port']))
- {
- $url_parts['port'] = 80;
- }
- $fp = fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);
- if (!$fp)
- {
- $this->error = 'fsockopen error: ' . $errstr;
- $this->success = false;
- }
- else
- {
- if (function_exists('stream_set_timeout'))
- {
- stream_set_timeout($fp, $timeout);
- }
- else
- {
- socket_set_timeout($fp, $timeout);
- }
- if (isset($url_parts['path']))
- {
- if (isset($url_parts['query']))
- {
- $get = "$url_parts[path]?$url_parts[query]";
- }
- else
- {
- $get = $url_parts['path'];
- }
- }
- else
- {
- $get = '/';
- }
- $out = "GET $get HTTP/1.0\r\n";
- $out .= "Host: $url_parts[host]\r\n";
- $out .= "User-Agent: $useragent\r\n";
- if (function_exists('gzinflate'))
- {
- $out .= "Accept-Encoding: gzip,deflate\r\n";
- }
-
- if (isset($url_parts['user']) && isset($url_parts['pass']))
- {
- $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
- }
- foreach ($headers as $key => $value)
- {
- $out .= "$key: $value\r\n";
- }
- $out .= "Connection: Close\r\n\r\n";
- fwrite($fp, $out);
-
- if (function_exists('stream_get_meta_data'))
- {
- $info = stream_get_meta_data($fp);
- }
- else
- {
- $info = socket_get_status($fp);
- }
-
- $this->headers = '';
- while (!$info['eof'] && !$info['timed_out'])
- {
- $this->headers .= fread($fp, 1160);
- if (function_exists('stream_get_meta_data'))
- {
- $info = stream_get_meta_data($fp);
- }
- else
- {
- $info = socket_get_status($fp);
- }
- }
- if (!$info['timed_out'])
- {
- $parser =& new SimplePie_HTTP_Parser($this->headers);
- if ($parser->parse())
- {
- $this->headers = $parser->headers;
- $this->body = $parser->body;
- $this->status_code = $parser->status_code;
- if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
- {
- $this->redirects++;
- if (isset($this->headers['content-location']))
- {
- $location = SimplePie_Misc::absolutize_url($this->headers['location'], SimplePie_Misc::absolutize_url($this->headers['content-location'], $url));
- }
- else
- {
- $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
- }
- return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
- }
- if (isset($this->headers['content-encoding']) && ($this->headers['content-encoding'] == 'gzip' || $this->headers['content-encoding'] == 'deflate'))
- {
- if (substr($this->body, 0, 8) == "\x1f\x8b\x08\x00\x00\x00\x00\x00")
- {
- $this->body = substr($this->body, 10);
- }
- $this->body = gzinflate($this->body);
- }
- }
- }
- else
- {
- $this->error = 'fsocket timed out';
- $this->success = false;
- }
- fclose($fp);
- }
- }
- }
- elseif (function_exists('file_get_contents'))
- {
- $this->method = 'file_get_contents';
- if (!$this->body = file_get_contents($url))
- {
- $this->error = 'file_get_contents could not read the file';
- $this->success = false;
- }
- }
- else
- {
- $this->method = 'fopen';
- if (($fp = fopen($url, 'rb')) === false)
- {
- $this->error = 'failed to open stream: No such file or directory';
- $this->success = false;
- }
- else
- {
- $this->body = '';
- while (!feof($fp))
- {
- $this->body .= fread($fp, 8192);
- }
- fclose($fp);
- }
- }
- }
-}
-
-/**
- * HTTP Response Parser
- *
- * @package SimplePie
- * @todo Support HTTP Requests
- */
-class SimplePie_HTTP_Parser
-{
- /**
- * HTTP Version
- *
- * @access public
- * @var string
- */
- var $http_version = '';
-
- /**
- * Status code
- *
- * @access public
- * @var string
- */
- var $status_code = '';
-
- /**
- * Reason phrase
- *
- * @access public
- * @var string
- */
- var $reason = '';
-
- /**
- * Key/value pairs of the headers
- *
- * @access public
- * @var array
- */
- var $headers = array();
-
- /**
- * Body of the response
- *
- * @access public
- * @var string
- */
- var $body = '';
-
- /**
- * Current state of the state machine
- *
- * @access private
- * @var string
- */
- var $state = 'start';
-
- /**
- * Input data
- *
- * @access private
- * @var string
- */
- var $data = '';
-
- /**
- * Input data length (to avoid calling strlen() everytime this is needed)
- *
- * @access private
- * @var int
- */
- var $data_length = 0;
-
- /**
- * Current position of the pointer
- *
- * @access private
- * @var int
- */
- var $position = 0;
-
- /**
- * Name of the hedaer currently being parsed
- *
- * @access private
- * @var string
- */
- var $name = '';
-
- /**
- * Value of the hedaer currently being parsed
- *
- * @access private
- * @var string
- */
- var $value = '';
-
- /**
- * Create an instance of the class with the input data
- *
- * @access public
- * @param string $data Input data
- */
- function SimplePie_HTTP_Parser($data)
- {
- $this->data = $data;
- $this->data_length = strlen($this->data);
- }
-
- /**
- * Parse the input data
- *
- * @access public
- * @return bool true on success, false on failure
- */
- function parse()
- {
- while ($this->state && $this->state != 'emit' && $this->has_data())
- {
- $state = $this->state;
- $this->$state();
- }
- $this->data = '';
- if ($this->state == 'emit')
- {
- return true;
- }
- else
- {
- $this->http_version = '';
- $this->status_code = '';
- $this->headers = array();
- $this->body = '';
- return false;
- }
- }
-
- /**
- * Check whether there is data beyond the pointer
- *
- * @access private
- * @return bool true if there is further data, false if not
- */
- function has_data()
- {
- return (bool) ($this->position < $this->data_length);
- }
-
- /**
- * See if the next character is LWS
- *
- * @access private
- * @return bool true if the next character is LWS, false if not
- */
- function is_linear_whitespace()
- {
- return (bool) (strspn($this->data, "\x09\x20", $this->position, 1)
- || (substr($this->data, $this->position, 2) == "\r\n" && strspn($this->data, "\x09\x20", $this->position + 2, 1))
- || (strspn($this->data, "\r\n", $this->position, 1) && strspn($this->data, "\x09\x20", $this->position + 1, 1)));
- }
-
- /**
- * The starting state of the state machine, see if the data is a response or request
- *
- * @access private
- */
- function start()
- {
- $this->state = 'http_version_response';
- }
-
- /**
- * Parse an HTTP-version string
- *
- * @access private
- */
- function http_version()
- {
- if (preg_match('/^HTTP\/([0-9]+\.[0-9]+)/i', substr($this->data, $this->position, strcspn($this->data, "\r\n", $this->position)), $match))
- {
- $this->position += strlen($match[0]);
- $this->http_version = $match[1];
- return true;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Parse LWS, replacing consecutive characters with a single space
- *
- * @access private
- */
- function linear_whitespace()
- {
- do
- {
- if (substr($this->data, $this->position, 2) == "\r\n")
- {
- $this->position += 2;
- }
- elseif (strspn($this->data, "\r\n", $this->position, 1))
- {
- $this->position++;
- }
- $this->position += strspn($this->data, "\x09\x20", $this->position);
- } while ($this->is_linear_whitespace());
- $this->value .= "\x20";
- }
-
- /**
- * Parse an HTTP-version string within a response
- *
- * @access private
- */
- function http_version_response()
- {
- if ($this->http_version() && $this->data[$this->position] == "\x20")
- {
- $this->state = 'status_code';
- $this->position++;
- }
- else
- {
- $this->state = false;
- }
- }
-
- /**
- * Parse a status code
- *
- * @access private
- */
- function status_code()
- {
- if (strspn($this->data, '1234567890', $this->position, 3) == 3)
- {
- $this->status_code = substr($this->data, $this->position, 3);
- $this->state = 'reason_phrase';
- $this->position += 3;
- }
- else
- {
- $this->state = false;
- }
- }
-
- /**
- * Skip over the reason phrase (it has no normative value, and you can send absolutely anything here)
- *
- * @access private
- */
- function reason_phrase()
- {
- $len = strcspn($this->data, "\r\n", $this->position);
- $this->reason = substr($this->data, $this->position, $len);
- $this->position += $len;
- if ($this->has_data())
- {
- if (substr($this->data, $this->position, 2) == "\r\n")
- {
- $this->position += 2;
- }
- elseif (strspn($this->data, "\r\n", $this->position, 1))
- {
- $this->position++;
- }
- $this->state = 'name';
- }
- }
-
- /**
- * Parse a header name
- *
- * @access private
- */
- function name()
- {
- $len = strcspn($this->data, ':', $this->position);
- $this->name = substr($this->data, $this->position, $len);
- $this->position += $len;
-
- if ($this->has_data() && $this->data[$this->position] == ':')
- {
- $this->state = 'value_next';
- $this->position++;
- }
- else
- {
- $this->state = false;
- }
- }
-
- /**
- * See what state to move the state machine to while within non-quoted header values
- *
- * @access private
- */
- function value_next()
- {
- if ($this->is_linear_whitespace())
- {
- $this->state = 'value_linear_whitespace';
- }
- elseif ($this->data[$this->position] == '"')
- {
- $this->state = 'value_quote_next';
- $this->position++;
- }
- elseif (substr($this->data, $this->position, 2) == "\r\n")
- {
- $this->state = 'end_crlf';
- $this->position += 2;
- }
- elseif (strspn($this->data, "\r\n", $this->position, 1))
- {
- $this->state = 'end_crlf';
- $this->position++;
- }
- else
- {
- $this->state = 'value_no_quote';
- }
- }
-
- /**
- * Parse a header value while outside quotes
- *
- * @access private
- */
- function value_no_quote()
- {
- $len = strcspn($this->data, "\x09\x20\r\n\"", $this->position);
- $this->value .= substr($this->data, $this->position, $len);
- $this->state = 'value_next';
- $this->position += $len;
- }
-
- /**
- * Parse LWS outside quotes
- *
- * @access private
- */
- function value_linear_whitespace()
- {
- $this->linear_whitespace();
- $this->state = 'value_next';
- }
-
- /**
- * See what state to move the state machine to while within quoted header values
- *
- * @access private
- */
- function value_quote_next()
- {
- if ($this->is_linear_whitespace())
- {
- $this->state = 'value_linear_whitespace_quote';
- }
- else
- {
- switch ($this->data[$this->position])
- {
- case '"':
- $this->state = 'value_next';
- $this->position++;
- break;
-
- case '\\':
- $this->state = 'value_quote_char';
- $this->position++;
- break;
-
- default:
- $this->state = 'value_quote';
- break;
- }
- }
- }
-
- /**
- * Parse a header value while within quotes
- *
- * @access private
- */
- function value_quote()
- {
- $len = strcspn($this->data, "\x09\x20\r\n\"\\", $this->position);
- $this->value .= substr($this->data, $this->position, $len);
- $this->position += $len;
- $this->state = 'value_quote_next';
- }
-
- /**
- * Parse an escaped character within quotes
- *
- * @access private
- */
- function value_quote_char()
- {
- $this->value .= $this->data[$this->position];
- $this->state = 'value_quote_next';
- $this->position++;
- }
-
- /**
- * Parse LWS within quotes
- *
- * @access private
- */
- function value_linear_whitespace_quote()
- {
- $this->linear_whitespace();
- $this->state = 'value_quote_next';
- }
-
- /**
- * Parse a CRLF, and see whether we have a further header, or whether we are followed by the body
- *
- * @access private
- */
- function end_crlf()
- {
- $this->name = strtolower($this->name);
- $this->value = trim($this->value, "\x20");
- if (isset($this->headers[$this->name]))
- {
- $this->headers[$this->name] .= ', ' . $this->value;
- }
- else
- {
- $this->headers[$this->name] = $this->value;
- }
-
- if (substr($this->data, $this->position, 2) == "\r\n")
- {
- $this->body = substr($this->data, $this->position + 2);
- $this->state = 'emit';
- }
- elseif (strspn($this->data, "\r\n", $this->position, 1))
- {
- $this->body = substr($this->data, $this->position + 1);
- $this->state = 'emit';
- }
- else
- {
- $this->name = '';
- $this->value = '';
- $this->state = 'name';
- }
- }
-}
-
-class SimplePie_Cache
-{
- var $location;
- var $filename;
- var $extension;
- var $name;
-
- function SimplePie_Cache($location, $filename, $extension)
- {
- $this->location = $location;
- $this->filename = rawurlencode($filename);
- $this->extension = rawurlencode($extension);
- $this->name = "$location/$this->filename.$this->extension";
- }
-
- function save($data)
- {
- if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
- {
- if (function_exists('file_put_contents'))
- {
- return (bool) file_put_contents($this->name, serialize($data));
- }
- else
- {
- $fp = fopen($this->name, 'wb');
- if ($fp)
- {
- fwrite($fp, serialize($data));
- fclose($fp);
- return true;
- }
- }
- }
- return false;
- }
-
- function load()
- {
- if (file_exists($this->name) && is_readable($this->name))
- {
- if (function_exists('file_get_contents'))
- {
- return unserialize(file_get_contents($this->name));
- }
- elseif (($fp = fopen($this->name, 'rb')) !== false)
- {
- $data = '';
- while (!feof($fp))
- {
- $data .= fread($fp, 8192);
- }
- fclose($fp);
- return unserialize($data);
- }
- }
- return false;
- }
-
- function mtime()
- {
- if (file_exists($this->name))
- {
- return filemtime($this->name);
- }
- return false;
- }
-
- function touch()
- {
- if (file_exists($this->name))
- {
- return touch($this->name);
- }
- return false;
- }
-
- function unlink()
- {
- if (file_exists($this->name))
- {
- return unlink($this->name);
- }
- return false;
- }
-}
-
-class SimplePie_Misc
-{
- function time_hms($seconds)
- {
- $time = '';
-
- $hours = floor($seconds / 3600);
- $remainder = $seconds % 3600;
- if ($hours > 0)
- {
- $time .= $hours.':';
- }
-
- $minutes = floor($remainder / 60);
- $seconds = $remainder % 60;
- if ($minutes < 10 && $hours > 0)
- {
- $minutes = '0' . $minutes;
- }
- if ($seconds < 10)
- {
- $seconds = '0' . $seconds;
- }
-
- $time .= $minutes.':';
- $time .= $seconds;
-
- return $time;
- }
-
- function absolutize_url($relative, $base)
- {
- if ($relative !== '')
- {
- $relative = SimplePie_Misc::parse_url($relative);
- if ($relative['scheme'] !== '')
- {
- $target = $relative;
- }
- elseif ($base !== '')
- {
- $base = SimplePie_Misc::parse_url($base);
- $target = SimplePie_Misc::parse_url('');
- if ($relative['authority'] !== '')
- {
- $target = $relative;
- $target['scheme'] = $base['scheme'];
- }
- else
- {
- $target['scheme'] = $base['scheme'];
- $target['authority'] = $base['authority'];
- if ($relative['path'] !== '')
- {
- if (strpos($relative['path'], '/') === 0)
- {
- $target['path'] = $relative['path'];
- }
- elseif (($target['path'] = dirname("$base[path].")) == '/')
- {
- $target['path'] .= $relative['path'];
- }
- else
- {
- $target['path'] .= '/' . $relative['path'];
- }
- if ($relative['query'] !== '')
- {
- $target['query'] = $relative['query'];
- }
- }
- else
- {
- if ($base['path'] !== '')
- {
- $target['path'] = $base['path'];
- }
- else
- {
- $target['path'] = '/';
- }
- if ($relative['query'] !== '')
- {
- $target['query'] = $relative['query'];
- }
- elseif ($base['query'] !== '')
- {
- $target['query'] = $base['query'];
- }
- }
- }
- if ($relative['fragment'] !== '')
- {
- $target['fragment'] = $relative['fragment'];
- }
- }
- else
- {
- // No base URL, just return the relative URL
- $target = $relative;
- }
- $return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']);
- }
- else
- {
- $return = $base;
- }
- $return = SimplePie_Misc::normalize_url($return);
- return $return;
- }
-
- function remove_dot_segments($input)
- {
- $output = '';
- while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input == '.' || $input == '..')
- {
- // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
- if (strpos($input, '../') === 0)
- {
- $input = substr($input, 3);
- }
- elseif (strpos($input, './') === 0)
- {
- $input = substr($input, 2);
- }
- // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
- elseif (strpos($input, '/./') === 0)
- {
- $input = substr_replace($input, '/', 0, 3);
- }
- elseif ($input == '/.')
- {
- $input = '/';
- }
- // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
- elseif (strpos($input, '/../') === 0)
- {
- $input = substr_replace($input, '/', 0, 4);
- $output = substr_replace($output, '', strrpos($output, '/'));
- }
- elseif ($input == '/..')
- {
- $input = '/';
- $output = substr_replace($output, '', strrpos($output, '/'));
- }
- // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
- elseif ($input == '.' || $input == '..')
- {
- $input = '';
- }
- // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
- elseif (($pos = strpos($input, '/', 1)) !== false)
- {
- $output .= substr($input, 0, $pos);
- $input = substr_replace($input, '', 0, $pos);
- }
- else
- {
- $output .= $input;
- $input = '';
- }
- }
- return $output . $input;
- }
-
- function get_element($realname, $string)
- {
- $return = array();
- $name = preg_quote($realname, '/');
- if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
- {
- for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++)
- {
- $return[$i]['tag'] = $realname;
- $return[$i]['full'] = $matches[$i][0][0];
- $return[$i]['offset'] = $matches[$i][0][1];
- if (strlen($matches[$i][3][0]) <= 2)
- {
- $return[$i]['self_closing'] = true;
- }
- else
- {
- $return[$i]['self_closing'] = false;
- $return[$i]['content'] = $matches[$i][4][0];
- }
- $return[$i]['attribs'] = array();
- if (isset($matches[$i][2][0]) && preg_match_all('/((?:[^\s:]+:)?[^\s:]+)(?:\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([a-z0-9\-._:]*)))?\s/U', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER))
- {
- for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++)
- {
- if (count($attribs[$j]) == 2)
- {
- $attribs[$j][2] = $attribs[$j][1];
- }
- $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
- }
- }
- }
- }
- return $return;
- }
-
- function element_implode($element)
- {
- $full = "<$element[tag]";
- foreach ($element['attribs'] as $key => $value)
- {
- $key = strtolower($key);
- $full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
- }
- if ($element['self_closing'])
- {
- $full .= ' />';
- }
- else
- {
- $full .= ">$element[content]</$element[tag]>";
- }
- return $full;
- }
-
- function error($message, $level, $file, $line)
- {
- switch ($level)
- {
- case E_USER_ERROR:
- $note = 'PHP Error';
- break;
- case E_USER_WARNING:
- $note = 'PHP Warning';
- break;
- case E_USER_NOTICE:
- $note = 'PHP Notice';
- break;
- default:
- $note = 'Unknown Error';
- break;
- }
- error_log("$note: $message in $file on line $line", 0);
- return $message;
- }
-
- /**
- * If a file has been cached, retrieve and display it.
- *
- * This is most useful for caching images (get_favicon(), etc.),
- * however it works for all cached files. This WILL NOT display ANY
- * file/image/page/whatever, but rather only display what has already
- * been cached by SimplePie.
- *
- * @access public
- * @see SimplePie::get_favicon()
- * @param str $identifier_url URL that is used to identify the content.
- * This may or may not be the actual URL of the live content.
- * @param str $cache_location Location of SimplePie's cache. Defaults
- * to './cache'.
- * @param str $cache_extension The file extension that the file was
- * cached with. Defaults to 'spc'.
- * @param str $cache_class Name of the cache-handling class being used
- * in SimplePie. Defaults to 'SimplePie_Cache', and should be left
- * as-is unless you've overloaded the class.
- * @param str $cache_name_function Function that converts the filename
- * for saving. Defaults to 'md5'.
- */
- function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5')
- {
- $cache =& new $cache_class($cache_location, call_user_func($cache_name_function, $identifier_url), $cache_extension);
-
- if ($file = $cache->load())
- {
- header('Content-type:' . $file['headers']['content-type']);
- header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
- echo $file['body'];
- exit;
- }
-
- die('Cached file for ' . $identifier_url . ' cannot be found.');
- }
-
- function fix_protocol($url, $http = 1)
- {
- $url = SimplePie_Misc::normalize_url($url);
- $parsed = SimplePie_Misc::parse_url($url);
- if ($parsed['scheme'] !== '' && $parsed['scheme'] != 'http' && $parsed['scheme'] != 'https')
- {
- return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http);
- }
-
- if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url))
- {
- return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http);
- }
-
- if ($http == 2 && $parsed['scheme'] !== '')
- {
- return "feed:$url";
- }
- elseif ($http == 3 && strtolower($parsed['scheme']) == 'http')
- {
- return substr_replace($url, 'podcast', 0, 4);
- }
- elseif ($http == 4 && strtolower($parsed['scheme']) == 'http')
- {
- return substr_replace($url, 'itpc', 0, 4);
- }
- else
- {
- return $url;
- }
- }
-
- function parse_url($url)
- {
- static $cache = array();
- if (isset($cache[$url]))
- {
- return $cache[$url];
- }
- elseif (preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match))
- {
- for ($i = count($match); $i <= 9; $i++)
- {
- $match[$i] = '';
- }
- return $cache[$url] = array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]);
- }
- else
- {
- return $cache[$url] = array('scheme' => '', 'authority' => '', 'path' => '', 'query' => '', 'fragment' => '');
- }
- }
-
- function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
- {
- $return = '';
- if ($scheme !== '')
- {
- $return .= "$scheme:";
- }
- if ($authority !== '')
- {
- $return .= "//$authority";
- }
- if ($path !== '')
- {
- $return .= $path;
- }
- if ($query !== '')
- {
- $return .= "?$query";
- }
- if ($fragment !== '')
- {
- $return .= "#$fragment";
- }
- return $return;
- }
-
- function normalize_url($url)
- {
- $url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url);
- $url = SimplePie_Misc::parse_url($url);
- $url['scheme'] = strtolower($url['scheme']);
- if ($url['authority'] !== '')
- {
- $url['authority'] = strtolower($url['authority']);
- $url['path'] = SimplePie_Misc::remove_dot_segments($url['path']);
- }
- return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']);
- }
-
- function percent_encoding_normalization($match)
- {
- $integer = hexdec($match[1]);
- if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer == 0x2D || $integer == 0x2E || $integer == 0x5F || $integer == 0x7E)
- {
- return chr($integer);
- }
- else
- {
- return strtoupper($match[0]);
- }
- }
-
- /**
- * Remove bad UTF-8 bytes
- *
- * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C
- * FAQ: Multilingual Forms (modified to include full ASCII range)
- *
- * @author Geoffrey Sneddon
- * @see http://www.w3.org/International/questions/qa-forms-utf-8
- * @param string $str String to remove bad UTF-8 bytes from
- * @return string UTF-8 string
- */
- function utf8_bad_replace($str)
- {
- if (function_exists('iconv'))
- {
- $out = iconv('UTF-8', 'UTF-8//IGNORE', $str);
- if($out !== false) return $out;
- }
- if (function_exists('mb_convert_encoding'))
- {
- return mb_convert_encoding($str, 'UTF-8', 'UTF-8');
- }
- elseif (preg_match_all('/([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})/', $str, $matches))
- {
- return implode("\xEF\xBF\xBD", $matches[0]);
- }
- elseif ($str !== '')
- {
- return "\xEF\xBF\xBD";
- }
- else
- {
- return '';
- }
- }
-
- function change_encoding($data, $input, $output)
- {
- $input = SimplePie_Misc::encoding($input);
- $output = SimplePie_Misc::encoding($output);
-
- if (function_exists('iconv') && ($return = @iconv($input, "$output//IGNORE", $data)))
- {
- return $return;
- }
- elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
- {
- return $return;
- }
- elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input)))
- {
- return $return;
- }
- elseif ($input == 'ISO-8859-1' && $output == 'UTF-8')
- {
- return utf8_encode($data);
- }
- elseif ($input == 'UTF-8' && $output == 'ISO-8859-1')
- {
- return utf8_decode($data);
- }
- return $data;
- }
-
- function encoding($encoding)
- {
- // Character sets are case-insensitive (though we'll return them in the form given in their registration)
- switch (strtoupper($encoding))
- {
- case 'ANSI_X3.4-1968':
- case 'ISO-IR-6':
- case 'ANSI_X3.4-1986':
- case 'ISO_646.IRV:1991':
- case 'ASCII':
- case 'ISO646-US':
- case 'US-ASCII':
- case 'US':
- case 'IBM367':
- case 'CP367':
- case 'CSASCII':
- return 'US-ASCII';
-
- case 'ISO_8859-1:1987':
- case 'ISO-IR-100':
- case 'ISO_8859-1':
- case 'ISO-8859-1':
- case 'LATIN1':
- case 'L1':
- case 'IBM819':
- case 'CP819':
- case 'CSISOLATIN1':
- return 'ISO-8859-1';
-
- case 'ISO_8859-2:1987':
- case 'ISO-IR-101':
- case 'ISO_8859-2':
- case 'ISO-8859-2':
- case 'LATIN2':
- case 'L2':
- case 'CSISOLATIN2':
- return 'ISO-8859-2';
-
- case 'ISO_8859-3:1988':
- case 'ISO-IR-109':
- case 'ISO_8859-3':
- case 'ISO-8859-3':
- case 'LATIN3':
- case 'L3':
- case 'CSISOLATIN3':
- return 'ISO-8859-3';
-
- case 'ISO_8859-4:1988':
- case 'ISO-IR-110':
- case 'ISO_8859-4':
- case 'ISO-8859-4':
- case 'LATIN4':
- case 'L4':
- case 'CSISOLATIN4':
- return 'ISO-8859-4';
-
- case 'ISO_8859-5:1988':
- case 'ISO-IR-144':
- case 'ISO_8859-5':
- case 'ISO-8859-5':
- case 'CYRILLIC':
- case 'CSISOLATINCYRILLIC':
- return 'ISO-8859-5';
-
- case 'ISO_8859-6:1987':
- case 'ISO-IR-127':
- case 'ISO_8859-6':
- case 'ISO-8859-6':
- case 'ECMA-114':
- case 'ASMO-708':
- case 'ARABIC':
- case 'CSISOLATINARABIC':
- return 'ISO-8859-6';
-
- case 'ISO_8859-7:1987':
- case 'ISO-IR-126':
- case 'ISO_8859-7':
- case 'ISO-8859-7':
- case 'ELOT_928':
- case 'ECMA-118':
- case 'GREEK':
- case 'GREEK8':
- case 'CSISOLATINGREEK':
- return 'ISO-8859-7';
-
- case 'ISO_8859-8:1988':
- case 'ISO-IR-138':
- case 'ISO_8859-8':
- case 'ISO-8859-8':
- case 'HEBREW':
- case 'CSISOLATINHEBREW':
- return 'ISO-8859-8';
-
- case 'ISO_8859-9:1989':
- case 'ISO-IR-148':
- case 'ISO_8859-9':
- case 'ISO-8859-9':
- case 'LATIN5':
- case 'L5':
- case 'CSISOLATIN5':
- return 'ISO-8859-9';
-
- case 'ISO-8859-10':
- case 'ISO-IR-157':
- case 'L6':
- case 'ISO_8859-10:1992':
- case 'CSISOLATIN6':
- case 'LATIN6':
- return 'ISO-8859-10';
-
- case 'ISO_6937-2-ADD':
- case 'ISO-IR-142':
- case 'CSISOTEXTCOMM':
- return 'ISO_6937-2-add';
-
- case 'JIS_X0201':
- case 'X0201':
- case 'CSHALFWIDTHKATAKANA':
- return 'JIS_X0201';
-
- case 'JIS_ENCODING':
- case 'CSJISENCODING':
- return 'JIS_Encoding';
-
- case 'SHIFT_JIS':
- case 'MS_KANJI':
- case 'CSSHIFTJIS':
- return 'Shift_JIS';
-
- case 'EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE':
- case 'CSEUCPKDFMTJAPANESE':
- case 'EUC-JP':
- return 'EUC-JP';
-
- case 'EXTENDED_UNIX_CODE_FIXED_WIDTH_FOR_JAPANESE':
- case 'CSEUCFIXWIDJAPANESE':
- return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
-
- case 'BS_4730':
- case 'ISO-IR-4':
- case 'ISO646-GB':
- case 'GB':
- case 'UK':
- case 'CSISO4UNITEDKINGDOM':
- return 'BS_4730';
-
- case 'SEN_850200_C':
- case 'ISO-IR-11':
- case 'ISO646-SE2':
- case 'SE2':
- case 'CSISO11SWEDISHFORNAMES':
- return 'SEN_850200_C';
-
- case 'IT':
- case 'ISO-IR-15':
- case 'ISO646-IT':
- case 'CSISO15ITALIAN':
- return 'IT';
-
- case 'ES':
- case 'ISO-IR-17':
- case 'ISO646-ES':
- case 'CSISO17SPANISH':
- return 'ES';
-
- case 'DIN_66003':
- case 'ISO-IR-21':
- case 'DE':
- case 'ISO646-DE':
- case 'CSISO21GERMAN':
- return 'DIN_66003';
-
- case 'NS_4551-1':
- case 'ISO-IR-60':
- case 'ISO646-NO':
- case 'NO':
- case 'CSISO60DANISHNORWEGIAN':
- case 'CSISO60NORWEGIAN1':
- return 'NS_4551-1';
-
- case 'NF_Z_62-010':
- case 'ISO-IR-69':
- case 'ISO646-FR':
- case 'FR':
- case 'CSISO69FRENCH':
- return 'NF_Z_62-010';
-
- case 'ISO-10646-UTF-1':
- case 'CSISO10646UTF1':
- return 'ISO-10646-UTF-1';
-
- case 'ISO_646.BASIC:1983':
- case 'REF':
- case 'CSISO646BASIC1983':
- return 'ISO_646.basic:1983';
-
- case 'INVARIANT':
- case 'CSINVARIANT':
- return 'INVARIANT';
-
- case 'ISO_646.IRV:1983':
- case 'ISO-IR-2':
- case 'IRV':
- case 'CSISO2INTLREFVERSION':
- return 'ISO_646.irv:1983';
-
- case 'NATS-SEFI':
- case 'ISO-IR-8-1':
- case 'CSNATSSEFI':
- return 'NATS-SEFI';
-
- case 'NATS-SEFI-ADD':
- case 'ISO-IR-8-2':
- case 'CSNATSSEFIADD':
- return 'NATS-SEFI-ADD';
-
- case 'NATS-DANO':
- case 'ISO-IR-9-1':
- case 'CSNATSDANO':
- return 'NATS-DANO';
-
- case 'NATS-DANO-ADD':
- case 'ISO-IR-9-2':
- case 'CSNATSDANOADD':
- return 'NATS-DANO-ADD';
-
- case 'SEN_850200_B':
- case 'ISO-IR-10':
- case 'FI':
- case 'ISO646-FI':
- case 'ISO646-SE':
- case 'SE':
- case 'CSISO10SWEDISH':
- return 'SEN_850200_B';
-
- case 'KS_C_5601-1987':
- case 'ISO-IR-149':
- case 'KS_C_5601-1989':
- case 'KSC_5601':
- case 'KOREAN':
- case 'CSKSC56011987':
- return 'KS_C_5601-1987';
-
- case 'ISO-2022-KR':
- case 'CSISO2022KR':
- return 'ISO-2022-KR';
-
- case 'EUC-KR':
- case 'CSEUCKR':
- return 'EUC-KR';
-
- case 'ISO-2022-JP':
- case 'CSISO2022JP':
- return 'ISO-2022-JP';
-
- case 'ISO-2022-JP-2':
- case 'CSISO2022JP2':
- return 'ISO-2022-JP-2';
-
- case 'JIS_C6220-1969-JP':
- case 'JIS_C6220-1969':
- case 'ISO-IR-13':
- case 'KATAKANA':
- case 'X0201-7':
- case 'CSISO13JISC6220JP':
- return 'JIS_C6220-1969-jp';
-
- case 'JIS_C6220-1969-RO':
- case 'ISO-IR-14':
- case 'JP':
- case 'ISO646-JP':
- case 'CSISO14JISC6220RO':
- return 'JIS_C6220-1969-ro';
-
- case 'PT':
- case 'ISO-IR-16':
- case 'ISO646-PT':
- case 'CSISO16PORTUGUESE':
- return 'PT';
-
- case 'GREEK7-OLD':
- case 'ISO-IR-18':
- case 'CSISO18GREEK7OLD':
- return 'greek7-old';
-
- case 'LATIN-GREEK':
- case 'ISO-IR-19':
- case 'CSISO19LATINGREEK':
- return 'latin-greek';
-
- case 'NF_Z_62-010_(1973)':
- case 'ISO-IR-25':
- case 'ISO646-FR1':
- case 'CSISO25FRENCH':
- return 'NF_Z_62-010_(1973)';
-
- case 'LATIN-GREEK-1':
- case 'ISO-IR-27':
- case 'CSISO27LATINGREEK1':
- return 'Latin-greek-1';
-
- case 'ISO_5427':
- case 'ISO-IR-37':
- case 'CSISO5427CYRILLIC':
- return 'ISO_5427';
-
- case 'JIS_C6226-1978':
- case 'ISO-IR-42':
- case 'CSISO42JISC62261978':
- return 'JIS_C6226-1978';
-
- case 'BS_VIEWDATA':
- case 'ISO-IR-47':
- case 'CSISO47BSVIEWDATA':
- return 'BS_viewdata';
-
- case 'INIS':
- case 'ISO-IR-49':
- case 'CSISO49INIS':
- return 'INIS';
-
- case 'INIS-8':
- case 'ISO-IR-50':
- case 'CSISO50INIS8':
- return 'INIS-8';
-
- case 'INIS-CYRILLIC':
- case 'ISO-IR-51':
- case 'CSISO51INISCYRILLIC':
- return 'INIS-cyrillic';
-
- case 'ISO_5427:1981':
- case 'ISO-IR-54':
- case 'ISO5427CYRILLIC1981':
- return 'ISO_5427:1981';
-
- case 'ISO_5428:1980':
- case 'ISO-IR-55':
- case 'CSISO5428GREEK':
- return 'ISO_5428:1980';
-
- case 'GB_1988-80':
- case 'ISO-IR-57':
- case 'CN':
- case 'ISO646-CN':
- case 'CSISO57GB1988':
- return 'GB_1988-80';
-
- case 'GB_2312-80':
- case 'ISO-IR-58':
- case 'CHINESE':
- case 'CSISO58GB231280':
- return 'GB_2312-80';
-
- case 'NS_4551-2':
- case 'ISO646-NO2':
- case 'ISO-IR-61':
- case 'NO2':
- case 'CSISO61NORWEGIAN2':
- return 'NS_4551-2';
-
- case 'VIDEOTEX-SUPPL':
- case 'ISO-IR-70':
- case 'CSISO70VIDEOTEXSUPP1':
- return 'videotex-suppl';
-
- case 'PT2':
- case 'ISO-IR-84':
- case 'ISO646-PT2':
- case 'CSISO84PORTUGUESE2':
- return 'PT2';
-
- case 'ES2':
- case 'ISO-IR-85':
- case 'ISO646-ES2':
- case 'CSISO85SPANISH2':
- return 'ES2';
-
- case 'MSZ_7795.3':
- case 'ISO-IR-86':
- case 'ISO646-HU':
- case 'HU':
- case 'CSISO86HUNGARIAN':
- return 'MSZ_7795.3';
-
- case 'JIS_C6226-1983':
- case 'ISO-IR-87':
- case 'X0208':
- case 'JIS_X0208-1983':
- case 'CSISO87JISX0208':
- return 'JIS_C6226-1983';
-
- case 'GREEK7':
- case 'ISO-IR-88':
- case 'CSISO88GREEK7':
- return 'greek7';
-
- case 'ASMO_449':
- case 'ISO_9036':
- case 'ARABIC7':
- case 'ISO-IR-89':
- case 'CSISO89ASMO449':
- return 'ASMO_449';
-
- case 'ISO-IR-90':
- case 'CSISO90':
- return 'iso-ir-90';
-
- case 'JIS_C6229-1984-A':
- case 'ISO-IR-91':
- case 'JP-OCR-A':
- case 'CSISO91JISC62291984A':
- return 'JIS_C6229-1984-a';
-
- case 'JIS_C6229-1984-B':
- case 'ISO-IR-92':
- case 'ISO646-JP-OCR-B':
- case 'JP-OCR-B':
- case 'CSISO92JISC62991984B':
- return 'JIS_C6229-1984-b';
-
- case 'JIS_C6229-1984-B-ADD':
- case 'ISO-IR-93':
- case 'JP-OCR-B-ADD':
- case 'CSISO93JIS62291984BADD':
- return 'JIS_C6229-1984-b-add';
-
- case 'JIS_C6229-1984-HAND':
- case 'ISO-IR-94':
- case 'JP-OCR-HAND':
- case 'CSISO94JIS62291984HAND':
- return 'JIS_C6229-1984-hand';
-
- case 'JIS_C6229-1984-HAND-ADD':
- case 'ISO-IR-95':
- case 'JP-OCR-HAND-ADD':
- case 'CSISO95JIS62291984HANDADD':
- return 'JIS_C6229-1984-hand-add';
-
- case 'JIS_C6229-1984-KANA':
- case 'ISO-IR-96':
- case 'CSISO96JISC62291984KANA':
- return 'JIS_C6229-1984-kana';
-
- case 'ISO_2033-1983':
- case 'ISO-IR-98':
- case 'E13B':
- case 'CSISO2033':
- return 'ISO_2033-1983';
-
- case 'ANSI_X3.110-1983':
- case 'ISO-IR-99':
- case 'CSA_T500-1983':
- case 'NAPLPS':
- case 'CSISO99NAPLPS':
- return 'ANSI_X3.110-1983';
-
- case 'T.61-7BIT':
- case 'ISO-IR-102':
- case 'CSISO102T617BIT':
- return 'T.61-7bit';
-
- case 'T.61-8BIT':
- case 'T.61':
- case 'ISO-IR-103':
- case 'CSISO103T618BIT':
- return 'T.61-8bit';
-
- case 'ECMA-CYRILLIC':
- case 'ISO-IR-111':
- case 'KOI8-E':
- case 'CSISO111ECMACYRILLIC':
- return 'ECMA-cyrillic';
-
- case 'CSA_Z243.4-1985-1':
- case 'ISO-IR-121':
- case 'ISO646-CA':
- case 'CSA7-1':
- case 'CA':
- case 'CSISO121CANADIAN1':
- return 'CSA_Z243.4-1985-1';
-
- case 'CSA_Z243.4-1985-2':
- case 'ISO-IR-122':
- case 'ISO646-CA2':
- case 'CSA7-2':
- case 'CSISO122CANADIAN2':
- return 'CSA_Z243.4-1985-2';
-
- case 'CSA_Z243.4-1985-GR':
- case 'ISO-IR-123':
- case 'CSISO123CSAZ24341985GR':
- return 'CSA_Z243.4-1985-gr';
-
- case 'ISO_8859-6-E':
- case 'CSISO88596E':
- case 'ISO-8859-6-E':
- return 'ISO-8859-6-E';
-
- case 'ISO_8859-6-I':
- case 'CSISO88596I':
- case 'ISO-8859-6-I':
- return 'ISO-8859-6-I';
-
- case 'T.101-G2':
- case 'ISO-IR-128':
- case 'CSISO128T101G2':
- return 'T.101-G2';
-
- case 'ISO_8859-8-E':
- case 'CSISO88598E':
- case 'ISO-8859-8-E':
- return 'ISO-8859-8-E';
-
- case 'ISO_8859-8-I':
- case 'CSISO88598I':
- case 'ISO-8859-8-I':
- return 'ISO-8859-8-I';
-
- case 'CSN_369103':
- case 'ISO-IR-139':
- case 'CSISO139CSN369103':
- return 'CSN_369103';
-
- case 'JUS_I.B1.002':
- case 'ISO-IR-141':
- case 'ISO646-YU':
- case 'JS':
- case 'YU':
- case 'CSISO141JUSIB1002':
- return 'JUS_I.B1.002';
-
- case 'IEC_P27-1':
- case 'ISO-IR-143':
- case 'CSISO143IECP271':
- return 'IEC_P27-1';
-
- case 'JUS_I.B1.003-SERB':
- case 'ISO-IR-146':
- case 'SERBIAN':
- case 'CSISO146SERBIAN':
- return 'JUS_I.B1.003-serb';
-
- case 'JUS_I.B1.003-MAC':
- case 'MACEDONIAN':
- case 'ISO-IR-147':
- case 'CSISO147MACEDONIAN':
- return 'JUS_I.B1.003-mac';
-
- case 'GREEK-CCITT':
- case 'ISO-IR-150':
- case 'CSISO150':
- case 'CSISO150GREEKCCITT':
- return 'greek-ccitt';
-
- case 'NC_NC00-10:81':
- case 'CUBA':
- case 'ISO-IR-151':
- case 'ISO646-CU':
- case 'CSISO151CUBA':
- return 'NC_NC00-10:81';
-
- case 'ISO_6937-2-25':
- case 'ISO-IR-152':
- case 'CSISO6937ADD':
- return 'ISO_6937-2-25';
-
- case 'GOST_19768-74':
- case 'ST_SEV_358-88':
- case 'ISO-IR-153':
- case 'CSISO153GOST1976874':
- return 'GOST_19768-74';
-
- case 'ISO_8859-SUPP':
- case 'ISO-IR-154':
- case 'LATIN1-2-5':
- case 'CSISO8859SUPP':
- return 'ISO_8859-supp';
-
- case 'ISO_10367-BOX':
- case 'ISO-IR-155':
- case 'CSISO10367BOX':
- return 'ISO_10367-box';
-
- case 'LATIN-LAP':
- case 'LAP':
- case 'ISO-IR-158':
- case 'CSISO158LAP':
- return 'latin-lap';
-
- case 'JIS_X0212-1990':
- case 'X0212':
- case 'ISO-IR-159':
- case 'CSISO159JISX02121990':
- return 'JIS_X0212-1990';
-
- case 'DS_2089':
- case 'DS2089':
- case 'ISO646-DK':
- case 'DK':
- case 'CSISO646DANISH':
- return 'DS_2089';
-
- case 'US-DK':
- case 'CSUSDK':
- return 'us-dk';
-
- case 'DK-US':
- case 'CSDKUS':
- return 'dk-us';
-
- case 'KSC5636':
- case 'ISO646-KR':
- case 'CSKSC5636':
- return 'KSC5636';
-
- case 'UNICODE-1-1-UTF-7':
- case 'CSUNICODE11UTF7':
- return 'UNICODE-1-1-UTF-7';
-
- case 'ISO-2022-CN':
- return 'ISO-2022-CN';
-
- case 'ISO-2022-CN-EXT':
- return 'ISO-2022-CN-EXT';
-
- case 'UTF-8':
- return 'UTF-8';
-
- case 'ISO-8859-13':
- return 'ISO-8859-13';
-
- case 'ISO-8859-14':
- case 'ISO-IR-199':
- case 'ISO_8859-14:1998':
- case 'ISO_8859-14':
- case 'LATIN8':
- case 'ISO-CELTIC':
- case 'L8':
- return 'ISO-8859-14';
-
- case 'ISO-8859-15':
- case 'ISO_8859-15':
- case 'LATIN-9':
- return 'ISO-8859-15';
-
- case 'ISO-8859-16':
- case 'ISO-IR-226':
- case 'ISO_8859-16:2001':
- case 'ISO_8859-16':
- case 'LATIN10':
- case 'L10':
- return 'ISO-8859-16';
-
- case 'GBK':
- case 'CP936':
- case 'MS936':
- case 'WINDOWS-936':
- return 'GBK';
-
- case 'GB18030':
- return 'GB18030';
-
- case 'OSD_EBCDIC_DF04_15':
- return 'OSD_EBCDIC_DF04_15';
-
- case 'OSD_EBCDIC_DF03_IRV':
- return 'OSD_EBCDIC_DF03_IRV';
-
- case 'OSD_EBCDIC_DF04_1':
- return 'OSD_EBCDIC_DF04_1';
-
- case 'ISO-11548-1':
- case 'ISO_11548-1':
- case 'ISO_TR_11548-1':
- case 'CSISO115481':
- return 'ISO-11548-1';
-
- case 'KZ-1048':
- case 'STRK1048-2002':
- case 'RK1048':
- case 'CSKZ1048':
- return 'KZ-1048';
-
- case 'ISO-10646-UCS-2':
- case 'CSUNICODE':
- return 'ISO-10646-UCS-2';
-
- case 'ISO-10646-UCS-4':
- case 'CSUCS4':
- return 'ISO-10646-UCS-4';
-
- case 'ISO-10646-UCS-BASIC':
- case 'CSUNICODEASCII':
- return 'ISO-10646-UCS-Basic';
-
- case 'ISO-10646-UNICODE-LATIN1':
- case 'CSUNICODELATIN1':
- case 'ISO-10646':
- return 'ISO-10646-Unicode-Latin1';
-
- case 'ISO-10646-J-1':
- return 'ISO-10646-J-1';
-
- case 'ISO-UNICODE-IBM-1261':
- case 'CSUNICODEIBM1261':
- return 'ISO-Unicode-IBM-1261';
-
- case 'ISO-UNICODE-IBM-1268':
- case 'CSUNICODEIBM1268':
- return 'ISO-Unicode-IBM-1268';
-
- case 'ISO-UNICODE-IBM-1276':
- case 'CSUNICODEIBM1276':
- return 'ISO-Unicode-IBM-1276';
-
- case 'ISO-UNICODE-IBM-1264':
- case 'CSUNICODEIBM1264':
- return 'ISO-Unicode-IBM-1264';
-
- case 'ISO-UNICODE-IBM-1265':
- case 'CSUNICODEIBM1265':
- return 'ISO-Unicode-IBM-1265';
-
- case 'UNICODE-1-1':
- case 'CSUNICODE11':
- return 'UNICODE-1-1';
-
- case 'SCSU':
- return 'SCSU';
-
- case 'UTF-7':
- return 'UTF-7';
-
- case 'UTF-16BE':
- return 'UTF-16BE';
-
- case 'UTF-16LE':
- return 'UTF-16LE';
-
- case 'UTF-16':
- return 'UTF-16';
-
- case 'CESU-8':
- case 'CSCESU-8':
- return 'CESU-8';
-
- case 'UTF-32':
- return 'UTF-32';
-
- case 'UTF-32BE':
- return 'UTF-32BE';
-
- case 'UTF-32LE':
- return 'UTF-32LE';
-
- case 'BOCU-1':
- case 'CSBOCU-1':
- return 'BOCU-1';
-
- case 'ISO-8859-1-WINDOWS-3.0-LATIN-1':
- case 'CSWINDOWS30LATIN1':
- return 'ISO-8859-1-Windows-3.0-Latin-1';
-
- case 'ISO-8859-1-WINDOWS-3.1-LATIN-1':
- case 'CSWINDOWS31LATIN1':
- return 'ISO-8859-1-Windows-3.1-Latin-1';
-
- case 'ISO-8859-2-WINDOWS-LATIN-2':
- case 'CSWINDOWS31LATIN2':
- return 'ISO-8859-2-Windows-Latin-2';
-
- case 'ISO-8859-9-WINDOWS-LATIN-5':
- case 'CSWINDOWS31LATIN5':
- return 'ISO-8859-9-Windows-Latin-5';
-
- case 'HP-ROMAN8':
- case 'ROMAN8':
- case 'R8':
- case 'CSHPROMAN8':
- return 'hp-roman8';
-
- case 'ADOBE-STANDARD-ENCODING':
- case 'CSADOBESTANDARDENCODING':
- return 'Adobe-Standard-Encoding';
-
- case 'VENTURA-US':
- case 'CSVENTURAUS':
- return 'Ventura-US';
-
- case 'VENTURA-INTERNATIONAL':
- case 'CSVENTURAINTERNATIONAL':
- return 'Ventura-International';
-
- case 'DEC-MCS':
- case 'DEC':
- case 'CSDECMCS':
- return 'DEC-MCS';
-
- case 'IBM850':
- case 'CP850':
- case '850':
- case 'CSPC850MULTILINGUAL':
- return 'IBM850';
-
- case 'PC8-DANISH-NORWEGIAN':
- case 'CSPC8DANISHNORWEGIAN':
- return 'PC8-Danish-Norwegian';
-
- case 'IBM862':
- case 'CP862':
- case '862':
- case 'CSPC862LATINHEBREW':
- return 'IBM862';
-
- case 'PC8-TURKISH':
- case 'CSPC8TURKISH':
- return 'PC8-Turkish';
-
- case 'IBM-SYMBOLS':
- case 'CSIBMSYMBOLS':
- return 'IBM-Symbols';
-
- case 'IBM-THAI':
- case 'CSIBMTHAI':
- return 'IBM-Thai';
-
- case 'HP-LEGAL':
- case 'CSHPLEGAL':
- return 'HP-Legal';
-
- case 'HP-PI-FONT':
- case 'CSHPPIFONT':
- return 'HP-Pi-font';
-
- case 'HP-MATH8':
- case 'CSHPMATH8':
- return 'HP-Math8';
-
- case 'ADOBE-SYMBOL-ENCODING':
- case 'CSHPPSMATH':
- return 'Adobe-Symbol-Encoding';
-
- case 'HP-DESKTOP':
- case 'CSHPDESKTOP':
- return 'HP-DeskTop';
-
- case 'VENTURA-MATH':
- case 'CSVENTURAMATH':
- return 'Ventura-Math';
-
- case 'MICROSOFT-PUBLISHING':
- case 'CSMICROSOFTPUBLISHING':
- return 'Microsoft-Publishing';
-
- case 'WINDOWS-31J':
- case 'CSWINDOWS31J':
- return 'Windows-31J';
-
- case 'GB2312':
- case 'CSGB2312':
- return 'GB2312';
-
- case 'BIG5':
- case 'CSBIG5':
- return 'Big5';
-
- case 'MACINTOSH':
- case 'MAC':
- case 'CSMACINTOSH':
- return 'macintosh';
-
- case 'IBM037':
- case 'CP037':
- case 'EBCDIC-CP-US':
- case 'EBCDIC-CP-CA':
- case 'EBCDIC-CP-WT':
- case 'EBCDIC-CP-NL':
- case 'CSIBM037':
- return 'IBM037';
-
- case 'IBM038':
- case 'EBCDIC-INT':
- case 'CP038':
- case 'CSIBM038':
- return 'IBM038';
-
- case 'IBM273':
- case 'CP273':
- case 'CSIBM273':
- return 'IBM273';
-
- case 'IBM274':
- case 'EBCDIC-BE':
- case 'CP274':
- case 'CSIBM274':
- return 'IBM274';
-
- case 'IBM275':
- case 'EBCDIC-BR':
- case 'CP275':
- case 'CSIBM275':
- return 'IBM275';
-
- case 'IBM277':
- case 'EBCDIC-CP-DK':
- case 'EBCDIC-CP-NO':
- case 'CSIBM277':
- return 'IBM277';
-
- case 'IBM278':
- case 'CP278':
- case 'EBCDIC-CP-FI':
- case 'EBCDIC-CP-SE':
- case 'CSIBM278':
- return 'IBM278';
-
- case 'IBM280':
- case 'CP280':
- case 'EBCDIC-CP-IT':
- case 'CSIBM280':
- return 'IBM280';
-
- case 'IBM281':
- case 'EBCDIC-JP-E':
- case 'CP281':
- case 'CSIBM281':
- return 'IBM281';
-
- case 'IBM284':
- case 'CP284':
- case 'EBCDIC-CP-ES':
- case 'CSIBM284':
- return 'IBM284';
-
- case 'IBM285':
- case 'CP285':
- case 'EBCDIC-CP-GB':
- case 'CSIBM285':
- return 'IBM285';
-
- case 'IBM290':
- case 'CP290':
- case 'EBCDIC-JP-KANA':
- case 'CSIBM290':
- return 'IBM290';
-
- case 'IBM297':
- case 'CP297':
- case 'EBCDIC-CP-FR':
- case 'CSIBM297':
- return 'IBM297';
-
- case 'IBM420':
- case 'CP420':
- case 'EBCDIC-CP-AR1':
- case 'CSIBM420':
- return 'IBM420';
-
- case 'IBM423':
- case 'CP423':
- case 'EBCDIC-CP-GR':
- case 'CSIBM423':
- return 'IBM423';
-
- case 'IBM424':
- case 'CP424':
- case 'EBCDIC-CP-HE':
- case 'CSIBM424':
- return 'IBM424';
-
- case 'IBM437':
- case 'CP437':
- case '437':
- case 'CSPC8CODEPAGE437':
- return 'IBM437';
-
- case 'IBM500':
- case 'CP500':
- case 'EBCDIC-CP-BE':
- case 'EBCDIC-CP-CH':
- case 'CSIBM500':
- return 'IBM500';
-
- case 'IBM851':
- case 'CP851':
- case '851':
- case 'CSIBM851':
- return 'IBM851';
-
- case 'IBM852':
- case 'CP852':
- case '852':
- case 'CSPCP852':
- return 'IBM852';
-
- case 'IBM855':
- case 'CP855':
- case '855':
- case 'CSIBM855':
- return 'IBM855';
-
- case 'IBM857':
- case 'CP857':
- case '857':
- case 'CSIBM857':
- return 'IBM857';
-
- case 'IBM860':
- case 'CP860':
- case '860':
- case 'CSIBM860':
- return 'IBM860';
-
- case 'IBM861':
- case 'CP861':
- case '861':
- case 'CP-IS':
- case 'CSIBM861':
- return 'IBM861';
-
- case 'IBM863':
- case 'CP863':
- case '863':
- case 'CSIBM863':
- return 'IBM863';
-
- case 'IBM864':
- case 'CP864':
- case 'CSIBM864':
- return 'IBM864';
-
- case 'IBM865':
- case 'CP865':
- case '865':
- case 'CSIBM865':
- return 'IBM865';
-
- case 'IBM868':
- case 'CP868':
- case 'CP-AR':
- case 'CSIBM868':
- return 'IBM868';
-
- case 'IBM869':
- case 'CP869':
- case '869':
- case 'CP-GR':
- case 'CSIBM869':
- return 'IBM869';
-
- case 'IBM870':
- case 'CP870':
- case 'EBCDIC-CP-ROECE':
- case 'EBCDIC-CP-YU':
- case 'CSIBM870':
- return 'IBM870';
-
- case 'IBM871':
- case 'CP871':
- case 'EBCDIC-CP-IS':
- case 'CSIBM871':
- return 'IBM871';
-
- case 'IBM880':
- case 'CP880':
- case 'EBCDIC-CYRILLIC':
- case 'CSIBM880':
- return 'IBM880';
-
- case 'IBM891':
- case 'CP891':
- case 'CSIBM891':
- return 'IBM891';
-
- case 'IBM903':
- case 'CP903':
- case 'CSIBM903':
- return 'IBM903';
-
- case 'IBM904':
- case 'CP904':
- case '904':
- case 'CSIBBM904':
- return 'IBM904';
-
- case 'IBM905':
- case 'CP905':
- case 'EBCDIC-CP-TR':
- case 'CSIBM905':
- return 'IBM905';
-
- case 'IBM918':
- case 'CP918':
- case 'EBCDIC-CP-AR2':
- case 'CSIBM918':
- return 'IBM918';
-
- case 'IBM1026':
- case 'CP1026':
- case 'CSIBM1026':
- return 'IBM1026';
-
- case 'EBCDIC-AT-DE':
- case 'CSIBMEBCDICATDE':
- return 'EBCDIC-AT-DE';
-
- case 'EBCDIC-AT-DE-A':
- case 'CSEBCDICATDEA':
- return 'EBCDIC-AT-DE-A';
-
- case 'EBCDIC-CA-FR':
- case 'CSEBCDICCAFR':
- return 'EBCDIC-CA-FR';
-
- case 'EBCDIC-DK-NO':
- case 'CSEBCDICDKNO':
- return 'EBCDIC-DK-NO';
-
- case 'EBCDIC-DK-NO-A':
- case 'CSEBCDICDKNOA':
- return 'EBCDIC-DK-NO-A';
-
- case 'EBCDIC-FI-SE':
- case 'CSEBCDICFISE':
- return 'EBCDIC-FI-SE';
-
- case 'EBCDIC-FI-SE-A':
- case 'CSEBCDICFISEA':
- return 'EBCDIC-FI-SE-A';
-
- case 'EBCDIC-FR':
- case 'CSEBCDICFR':
- return 'EBCDIC-FR';
-
- case 'EBCDIC-IT':
- case 'CSEBCDICIT':
- return 'EBCDIC-IT';
-
- case 'EBCDIC-PT':
- case 'CSEBCDICPT':
- return 'EBCDIC-PT';
-
- case 'EBCDIC-ES':
- case 'CSEBCDICES':
- return 'EBCDIC-ES';
-
- case 'EBCDIC-ES-A':
- case 'CSEBCDICESA':
- return 'EBCDIC-ES-A';
-
- case 'EBCDIC-ES-S':
- case 'CSEBCDICESS':
- return 'EBCDIC-ES-S';
-
- case 'EBCDIC-UK':
- case 'CSEBCDICUK':
- return 'EBCDIC-UK';
-
- case 'EBCDIC-US':
- case 'CSEBCDICUS':
- return 'EBCDIC-US';
-
- case 'UNKNOWN-8BIT':
- case 'CSUNKNOWN8BIT':
- return 'UNKNOWN-8BIT';
-
- case 'MNEMONIC':
- case 'CSMNEMONIC':
- return 'MNEMONIC';
-
- case 'MNEM':
- case 'CSMNEM':
- return 'MNEM';
-
- case 'VISCII':
- case 'CSVISCII':
- return 'VISCII';
-
- case 'VIQR':
- case 'CSVIQR':
- return 'VIQR';
-
- case 'KOI8-R':
- case 'CSKOI8R':
- return 'KOI8-R';
-
- case 'HZ-GB-2312':
- return 'HZ-GB-2312';
-
- case 'IBM866':
- case 'CP866':
- case '866':
- case 'CSIBM866':
- return 'IBM866';
-
- case 'IBM775':
- case 'CP775':
- case 'CSPC775BALTIC':
- return 'IBM775';
-
- case 'KOI8-U':
- return 'KOI8-U';
-
- case 'IBM00858':
- case 'CCSID00858':
- case 'CP00858':
- case 'PC-MULTILINGUAL-850+EURO':
- return 'IBM00858';
-
- case 'IBM00924':
- case 'CCSID00924':
- case 'CP00924':
- case 'EBCDIC-LATIN9--EURO':
- return 'IBM00924';
-
- case 'IBM01140':
- case 'CCSID01140':
- case 'CP01140':
- case 'EBCDIC-US-37+EURO':
- return 'IBM01140';
-
- case 'IBM01141':
- case 'CCSID01141':
- case 'CP01141':
- case 'EBCDIC-DE-273+EURO':
- return 'IBM01141';
-
- case 'IBM01142':
- case 'CCSID01142':
- case 'CP01142':
- case 'EBCDIC-DK-277+EURO':
- case 'EBCDIC-NO-277+EURO':
- return 'IBM01142';
-
- case 'IBM01143':
- case 'CCSID01143':
- case 'CP01143':
- case 'EBCDIC-FI-278+EURO':
- case 'EBCDIC-SE-278+EURO':
- return 'IBM01143';
-
- case 'IBM01144':
- case 'CCSID01144':
- case 'CP01144':
- case 'EBCDIC-IT-280+EURO':
- return 'IBM01144';
-
- case 'IBM01145':
- case 'CCSID01145':
- case 'CP01145':
- case 'EBCDIC-ES-284+EURO':
- return 'IBM01145';
-
- case 'IBM01146':
- case 'CCSID01146':
- case 'CP01146':
- case 'EBCDIC-GB-285+EURO':
- return 'IBM01146';
-
- case 'IBM01147':
- case 'CCSID01147':
- case 'CP01147':
- case 'EBCDIC-FR-297+EURO':
- return 'IBM01147';
-
- case 'IBM01148':
- case 'CCSID01148':
- case 'CP01148':
- case 'EBCDIC-INTERNATIONAL-500+EURO':
- return 'IBM01148';
-
- case 'IBM01149':
- case 'CCSID01149':
- case 'CP01149':
- case 'EBCDIC-IS-871+EURO':
- return 'IBM01149';
-
- case 'BIG5-HKSCS':
- return 'Big5-HKSCS';
-
- case 'IBM1047':
- case 'IBM-1047':
- return 'IBM1047';
-
- case 'PTCP154':
- case 'CSPTCP154':
- case 'PT154':
- case 'CP154':
- case 'CYRILLIC-ASIAN':
- return 'PTCP154';
-
- case 'AMIGA-1251':
- case 'AMI1251':
- case 'AMIGA1251':
- case 'AMI-1251':
- return 'Amiga-1251';
-
- case 'KOI7-SWITCHED':
- return 'KOI7-switched';
-
- case 'BRF':
- case 'CSBRF':
- return 'BRF';
-
- case 'TSCII':
- case 'CSTSCII':
- return 'TSCII';
-
- case 'WINDOWS-1250':
- return 'windows-1250';
-
- case 'WINDOWS-1251':
- return 'windows-1251';
-
- case 'WINDOWS-1252':
- return 'windows-1252';
-
- case 'WINDOWS-1253':
- return 'windows-1253';
-
- case 'WINDOWS-1254':
- return 'windows-1254';
-
- case 'WINDOWS-1255':
- return 'windows-1255';
-
- case 'WINDOWS-1256':
- return 'windows-1256';
-
- case 'WINDOWS-1257':
- return 'windows-1257';
-
- case 'WINDOWS-1258':
- return 'windows-1258';
-
- default:
- return (string) $encoding;
- }
- }
-
- function get_curl_version()
- {
- if (is_array($curl = curl_version()))
- {
- $curl = $curl['version'];
- }
- elseif (substr($curl, 0, 5) == 'curl/')
- {
- $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5));
- }
- elseif (substr($curl, 0, 8) == 'libcurl/')
- {
- $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8));
- }
- else
- {
- $curl = 0;
- }
- return $curl;
- }
-
- function is_subclass_of($class1, $class2)
- {
- if (func_num_args() != 2)
- {
- trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING);
- }
- elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1))
- {
- return is_subclass_of($class1, $class2);
- }
- elseif (is_string($class1) && is_string($class2))
- {
- if (class_exists($class1))
- {
- if (class_exists($class2))
- {
- $class2 = strtolower($class2);
- while ($class1 = strtolower(get_parent_class($class1)))
- {
- if ($class1 == $class2)
- {
- return true;
- }
- }
- }
- }
- else
- {
- trigger_error('Unknown class passed as parameter', E_USER_WARNNG);
- }
- }
- return false;
- }
-
- /**
- * Strip HTML comments
- *
- * @access public
- * @param string $data Data to strip comments from
- * @return string Comment stripped string
- */
- function strip_comments($data)
- {
- $output = '';
- while (($start = strpos($data, '<!--')) !== false)
- {
- $output .= substr($data, 0, $start);
- if (($end = strpos($data, '-->', $start)) !== false)
- {
- $data = substr_replace($data, '', 0, $end + 3);
- }
- else
- {
- $data = '';
- }
- }
- return $output . $data;
- }
-
- function parse_date($dt, $rfc822_tz = true)
- {
- static $cache = array();
- if (!isset($cache[$dt][$rfc822_tz]))
- {
- $dt = SimplePie_Misc::uncomment_rfc822($dt);
- /*
- Capturing subpatterns:
- 1: RFC 822 date
- 2: RFC 822 day
- 3: RFC 822 month
- 4: RFC 822 year
- 5: ISO 8601 date
- 6: ISO 8601 century
- 7: ISO 8601 year
- 8: ISO 8601 month
- 9: ISO 8601 day
- 10: ISO 8601 ordinal day
- 11: ISO 8601 month
- 12: ISO 8601 day
- 13: ISO 8601 week
- 14: ISO 8601 day of week
- 15: Time
- 16: Hour
- 17: Hour Decimal
- 18: Minute
- 19: Minute Decimal
- 20: Second
- 21: Second Decimal
- 22: Timezone
- 23: Diff ±
- 24: Hour
- 25: Hour Decimal
- 26: Minute
- 27: Minute Decimal
- 28: Alphabetic Timezone
- */
- if (preg_match('/^(?:(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)[,\s]+)?(([0-9]{1,2})\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s*([0-9]{4}|[0-9]{2}))|(([0-9]{2})(?:([0-9]{2})(?:(?:-|\s)*(?:([0-9]{2})([0-9]{2})|([0-9]{3})|([0-9]{2})(?:(?:-|\s)*([0-9]{2}))?|W([0-9]{2})(?:(?:-|\s)*([0-9]))?))?)?))((?:T|\s)+([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*([0-9]{2})(?:(?:,|\.)([0-9]*))?)?)?(?:\s)*((?:(\+|-)([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*(?:([0-9]{2})(?:(?:,|\.)([0-9]*))?))?)|(UTC|GMT|EST|CST|MST|PST|EDT|CDT|MDT|PDT|UT|[A-IK-Z]))?)?$/i', $dt, $match))
- {
- // Fill all matches
- for ($i = count($match); $i <= 28; $i++)
- {
- $match[$i] = '';
- }
-
- // Set blank vars
- $year = 1970;
- $month = 1;
- $day = 1;
- $hour = 0;
- $minute = 0;
- $second = 0;
- $timezone = false;
-
- // RFC 822
- if ($match[1] !== '')
- {
- if (strlen($match[4]) == 2)
- {
- $year = ($match[4] < 70) ? "20$match[4]" : "19$match[4]";
- }
- else
- {
- $year = $match[4];
- }
- switch (strtolower($match[3]))
- {
- case 'jan':
- $month = 1;
- break;
-
- case 'feb':
- $month = 2;
- break;
-
- case 'mar':
- $month = 3;
- break;
-
- case 'apr':
- $month = 4;
- break;
-
- case 'may':
- $month = 5;
- break;
-
- case 'jun':
- $month = 6;
- break;
-
- case 'jul':
- $month = 7;
- break;
-
- case 'aug':
- $month = 8;
- break;
-
- case 'sep':
- $month = 9;
- break;
-
- case 'oct':
- $month = 10;
- break;
-
- case 'nov':
- $month = 11;
- break;
-
- case 'dec':
- $month = 12;
- break;
- }
- $day = $match[2];
- }
- // ISO 8601
- else
- {
- // Year
- if ($match[7] !== '')
- {
- $year = "$match[6]$match[7]";
-
- // Two Digit Month/Day
- if ($match[11] !== '')
- {
- $month = $match[11];
- if ($match[12] !== '')
- {
- $day = $match[12];
- }
- }
-
- // Four Digit Month/Day
- elseif ($match[8] !== '')
- {
- $month = $match[8];
- $day = $match[9];
- }
-
- // Ordinal Day
- elseif ($match[10] !== '')
- {
- $day = $match[10];
- }
-
- // Week Date
- elseif ($match[13] !== '')
- {
- // Week Day
- if ($match[14] !== '')
- {
- $day = $match[14];
- }
-
- $first_day_of_year = date('w', mktime(0, 0, 0, 1, 1, $year));
- if ($first_day_of_year == 0)
- {
- $first_day_of_year = 7;
- }
-
- $day = 7 * ($match[13] - 1) + $day - ($first_day_of_year - 1);
- }
- }
- else
- {
- $year = "$match[6]00";
- }
- }
- // Time
- if ($match[15] !== '')
- {
- $time = 0;
- $time += ($match[16] + ('.' . $match[17])) * 3600;
- $time += ($match[18] + ('.' . $match[19])) * 60;
- $time += $match[20] + ('.' . $match[21]);
- $hour = floor($time / 3600);
- $time -= $hour * 3600;
- $minute = floor($time / 60);
- $time -= $minute * 60;
- $second = round($time);
-
- // Timezone
- if ($match[22] !== '')
- {
- // Alphabetic Timezone
- if ($match[28] !== '')
- {
- // Military
- if (strlen($match[28]) == 1)
- {
- if ($match[28] == 'Z' || $match[28] == 'z' || !$rfc822_tz)
- {
- $timezone = 0;
- }
- else
- {
- $timezone = ord(strtoupper($match[28]));
-
- if ($timezone > 74)
- {
- $timezone--;
- }
-
- if ($timezone <= 76)
- {
- $timezone = -($timezone - 64);
- }
- else
- {
- $timezone -= 76;
- }
-
- $timezone *= 3600;
- }
- }
- // Code
- else
- {
- switch (strtoupper($match[28]))
- {
- case 'UT':
- case 'UTC':
- case 'GMT':
- $timezone = 0;
- break;
-
- case 'EST':
- $timezone = -18000;
- break;
-
- case 'CST':
- $timezone = -21600;
- break;
-
- case 'MST':
- $timezone = -25200;
- break;
-
- case 'PST':
- $timezone = -28800;
- break;
-
- case 'EDT':
- $timezone = -14400;
- break;
-
- case 'CDT':
- $timezone = -18000;
- break;
-
- case 'MDT':
- $timezone = -21600;
- break;
-
- case 'PDT':
- $timezone = -25200;
- break;
- }
- }
- }
- // Timezone difference from UTC
- else
- {
- $timezone = 0;
- $timezone += ($match[24] + ('.' . $match[25])) * 3600;
- $timezone += ($match[26] + ('.' . $match[27])) * 60;
- $timezone = (int) round($timezone);
-
- if ($match[23] == '-')
- {
- $timezone = -$timezone;
- }
- }
- }
- }
- if ($timezone === false)
- {
- $cache[$dt][$rfc822_tz] = mktime($hour, $minute, $second, $month, $day, $year);
- }
- else
- {
- $cache[$dt][$rfc822_tz] = gmmktime($hour, $minute, $second, $month, $day, $year) - $timezone;
- }
- }
- elseif (($time = strtotime($dt)) > 0)
- {
- $cache[$dt][$rfc822_tz] = $time;
- }
- else
- {
- $cache[$dt][$rfc822_tz] = false;
- }
- }
- return $cache[$dt][$rfc822_tz];
- }
-
- /**
- * Decode HTML entities
- *
- * @static
- * @access public
- * @param string $data Input data
- * @return string Output data
- */
- function entities_decode($data)
- {
- $decoder = new SimplePie_Decode_HTML_Entities($data);
- return $decoder->parse();
- }
-
- /**
- * Remove RFC822 comments
- *
- * @author Tomas V.V.Cox <cox at idecnet.com>
- * @author Pierre-Alain Joye <pajoye at php.net>
- * @author Amir Mohammad Saied <amir at php.net>
- * @copyright 1997-2006 Pierre-Alain Joye,Tomas V.V.Cox,Amir Mohammad Saied
- * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
- * @version CVS: $Id: Validate.php,v 1.104 2006/11/17 16:32:06 amir Exp $
- * @link http://pear.php.net/package/Validate
- * @access public
- * @param string $data Data to strip comments from
- * @return string Comment stripped string
- */
- function uncomment_rfc822($data)
- {
- if ((version_compare(PHP_VERSION, '4.4.6', '>=') && version_compare(PHP_VERSION, '5', '<')) || version_compare(PHP_VERSION, '5.2.2', '>='))
- {
- return $data;
- }
- else
- {
- return preg_replace('/((?:(?:\\\\"|[^("])*(?:"(?:[^"\\\\\r]|\\\\.)*"\s*)?)*)((?<!\\\\)\((?:(?2)|.)*?(?<!\\\\)\))/', '$1', $data);
- }
- }
-
- function parse_mime($mime)
- {
- if (($pos = strpos($mime, ';')) === false)
- {
- return trim($mime);
- }
- else
- {
- return trim(substr($mime, 0, $pos));
- }
- }
-
- function htmlspecialchars_decode($string, $quote_style)
- {
- if (function_exists('htmlspecialchars_decode'))
- {
- return htmlspecialchars_decode($string, $quote_style);
- }
- else
- {
- return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
- }
- }
-
- function atom_03_construct_type($attribs)
- {
- if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) == 'base64'))
- {
- $mode = SIMPLEPIE_CONSTRUCT_BASE64;
- }
- else
- {
- $mode = SIMPLEPIE_CONSTRUCT_NONE;
- }
- if (isset($attribs['']['type']))
- {
- switch (strtolower(trim($attribs['']['type'])))
- {
- case 'text':
- case 'text/plain':
- return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
-
- case 'html':
- case 'text/html':
- return SIMPLEPIE_CONSTRUCT_HTML | $mode;
-
- case 'xhtml':
- case 'application/xhtml+xml':
- return SIMPLEPIE_CONSTRUCT_XHTML | $mode;
-
- default:
- return SIMPLEPIE_CONSTRUCT_NONE | $mode;
- }
- }
- else
- {
- return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
- }
- }
-
- function atom_10_construct_type($attribs)
- {
- if (isset($attribs['']['type']))
- {
- switch (strtolower(trim($attribs['']['type'])))
- {
- case 'text':
- return SIMPLEPIE_CONSTRUCT_TEXT;
-
- case 'html':
- return SIMPLEPIE_CONSTRUCT_HTML;
-
- case 'xhtml':
- return SIMPLEPIE_CONSTRUCT_XHTML;
-
- default:
- return SIMPLEPIE_CONSTRUCT_NONE;
- }
- }
- return SIMPLEPIE_CONSTRUCT_TEXT;
- }
-
- function atom_10_content_construct_type($attribs)
- {
- if (isset($attribs['']['type']))
- {
- $type = strtolower(trim($attribs['']['type']));
- switch ($type)
- {
- case 'text':
- return SIMPLEPIE_CONSTRUCT_TEXT;
-
- case 'html':
- return SIMPLEPIE_CONSTRUCT_HTML;
-
- case 'xhtml':
- return SIMPLEPIE_CONSTRUCT_XHTML;
- }
- if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) == 'text/')
- {
- return SIMPLEPIE_CONSTRUCT_NONE;
- }
- else
- {
- return SIMPLEPIE_CONSTRUCT_BASE64;
- }
- }
- else
- {
- return SIMPLEPIE_CONSTRUCT_TEXT;
- }
- }
-
- function is_isegment_nz_nc($string)
- {
- return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
- }
-
- function space_seperated_tokens($string)
- {
- $space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
- $string_length = strlen($string);
-
- $position = strspn($string, $space_characters);
- $tokens = array();
-
- while ($position < $string_length)
- {
- $len = strcspn($string, $space_characters, $position);
- $tokens[] = substr($string, $position, $len);
- $position += $len;
- $position += strspn($string, $space_characters, $position);
- }
-
- return $tokens;
- }
-
- function array_unique($array)
- {
- if (version_compare(PHP_VERSION, '5.2', '>='))
- {
- return array_unique($array);
- }
- else
- {
- $array = (array) $array;
- $new_array = array();
- $new_array_strings = array();
- foreach ($array as $key => $value)
- {
- if (is_object($value))
- {
- if (method_exists($value, '__toString'))
- {
- $cmp = $value->__toString();
- }
- else
- {
- trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR);
- }
- }
- elseif (is_array($value))
- {
- $cmp = (string) reset($value);
- }
- else
- {
- $cmp = (string) $value;
- }
- if (!in_array($cmp, $new_array_strings))
- {
- $new_array[$key] = $value;
- $new_array_strings[] = $cmp;
- }
- }
- return $new_array;
- }
- }
-
- /**
- * Converts a unicode codepoint to a UTF-8 character
- *
- * @static
- * @access public
- * @param int $codepoint Unicode codepoint
- * @return string UTF-8 character
- */
- function codepoint_to_utf8($codepoint)
- {
- static $cache = array();
- $codepoint = (int) $codepoint;
- if (isset($cache[$codepoint]))
- {
- return $cache[$codepoint];
- }
- elseif ($codepoint < 0)
- {
- return $cache[$codepoint] = false;
- }
- else if ($codepoint <= 0x7f)
- {
- return $cache[$codepoint] = chr($codepoint);
- }
- else if ($codepoint <= 0x7ff)
- {
- return $cache[$codepoint] = chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
- }
- else if ($codepoint <= 0xffff)
- {
- return $cache[$codepoint] = chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
- }
- else if ($codepoint <= 0x10ffff)
- {
- return $cache[$codepoint] = chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
- }
- else
- {
- // U+FFFD REPLACEMENT CHARACTER
- return $cache[$codepoint] = "\xEF\xBF\xBD";
- }
- }
-
- /**
- * Re-implementation of PHP 4.2.0's is_a()
- *
- * @static
- * @access public
- * @param object $object The tested object
- * @param string $class_name The class name
- * @return bool Returns true if the object is of this class or has this class as one of its parents, false otherwise
- */
- function is_a($object, $class_name)
- {
- if (function_exists('is_a'))
- {
- return is_a($object, $class_name);
- }
- elseif (!is_object($object))
- {
- return false;
- }
- elseif (get_class($object) == strtolower($class_name))
- {
- return true;
- }
- else
- {
- return is_subclass_of($object, $class_name);
- }
- }
-
- /**
- * Re-implementation of PHP 5's stripos()
- *
- * Returns the numeric position of the first occurrence of needle in the
- * haystack string.
- *
- * @static
- * @access string
- * @param object $haystack
- * @param string $needle Note that the needle may be a string of one or more
- * characters. If needle is not a string, it is converted to an integer
- * and applied as the ordinal value of a character.
- * @param int $offset The optional offset parameter allows you to specify which
- * character in haystack to start searching. The position returned is still
- * relative to the beginning of haystack.
- * @return bool If needle is not found, stripos() will return boolean false.
- */
- function stripos($haystack, $needle, $offset = 0)
- {
- if (function_exists('stripos'))
- {
- return stripos($haystack, $needle, $offset);
- }
- else
- {
- if (is_string($needle))
- {
- $needle = strtolower($needle);
- }
- elseif (is_int($needle) || is_bool($needle) || is_double($needle))
- {
- $needle = strtolower(chr($needle));
- }
- else
- {
- trigger_error('needle is not a string or an integer', E_USER_WARNING);
- return false;
- }
-
- return strpos(strtolower($haystack), $needle, $offset);
- }
- }
-}
-
-/**
- * Decode HTML Entities
- *
- * This implements HTML5 as of revision 967 (2007-06-28)
- *
- * @package SimplePie
- */
-class SimplePie_Decode_HTML_Entities
-{
- /**
- * Data to be parsed
- *
- * @access private
- * @var string
- */
- var $data = '';
-
- /**
- * Currently consumed bytes
- *
- * @access private
- * @var string
- */
- var $consumed = '';
-
- /**
- * Position of the current byte being parsed
- *
- * @access private
- * @var int
- */
- var $position = 0;
-
- /**
- * Create an instance of the class with the input data
- *
- * @access public
- * @param string $data Input data
- */
- function SimplePie_Decode_HTML_Entities($data)
- {
- $this->data = $data;
- }
-
- /**
- * Parse the input data
- *
- * @access public
- * @return string Output data
- */
- function parse()
- {
- while (($this->position = strpos($this->data, '&', $this->position)) !== false)
- {
- $this->consume();
- $this->entity();
- $this->consumed = '';
- }
- return $this->data;
- }
-
- /**
- * Consume the next byte
- *
- * @access private
- * @return mixed The next byte, or false, if there is no more data
- */
- function consume()
- {
- if (isset($this->data[$this->position]))
- {
- $this->consumed .= $this->data[$this->position];
- return $this->data[$this->position++];
- }
- else
- {
- $this->consumed = false;
- return false;
- }
- }
-
- /**
- * Consume a range of characters
- *
- * @access private
- * @param string $chars Characters to consume
- * @return mixed A series of characters that match the range, or false
- */
- function consume_range($chars)
- {
- if ($len = strspn($this->data, $chars, $this->position))
- {
- $data = substr($this->data, $this->position, $len);
- $this->consumed .= $data;
- $this->position += $len;
- return $data;
- }
- else
- {
- $this->consumed = false;
- return false;
- }
- }
-
- /**
- * Unconsume one byte
- *
- * @access private
- */
- function unconsume()
- {
- $this->consumed = substr($this->consumed, 0, -1);
- $this->position--;
- }
-
- /**
- * Decode an entity
- *
- * @access private
- */
- function entity()
- {
- switch ($this->consume())
- {
- case "\x09":
- case "\x0A":
- case "\x0B":
- case "\x0B":
- case "\x0C":
- case "\x20":
- case "\x3C":
- case "\x26":
- case false:
- break;
-
- case "\x23":
- switch ($this->consume())
- {
- case "\x78":
- case "\x58":
- $range = '0123456789ABCDEFabcdef';
- $hex = true;
- break;
-
- default:
- $range = '0123456789';
- $hex = false;
- $this->unconsume();
- break;
- }
-
- if ($codepoint = $this->consume_range($range))
- {
- static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8");
-
- if ($hex)
- {
- $codepoint = hexdec($codepoint);
- }
- else
- {
- $codepoint = intval($codepoint);
- }
-
- if (isset($windows_1252_specials[$codepoint]))
- {
- $replacement = $windows_1252_specials[$codepoint];
- }
- else
- {
- $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint);
- }
-
- if ($this->consume() != ';')
- {
- $this->unconsume();
- }
-
- $consumed_length = strlen($this->consumed);
- $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length);
- $this->position += strlen($replacement) - $consumed_length;
- }
- break;
-
- default:
- static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4",
'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eac
ute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\
x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB"
, 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\x
CE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' =>
"\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbq
uo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE
2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C");
-
- for ($i = 0, $match = null; $i < 9 && $this->consume(); $i++)
- {
- $consumed = substr($this->consumed, 1);
- if (isset($entities[$consumed]))
- {
- $match = $consumed;
- }
- }
-
- if ($match !== null)
- {
- $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1);
- $this->position += strlen($entities[$match]) - strlen($consumed) - 1;
- }
- break;
- }
- }
-}
-
-class SimplePie_Locator
-{
- var $useragent;
- var $timeout;
- var $file;
- var $local = array();
- var $elsewhere = array();
- var $file_class = 'SimplePie_File';
- var $cached_entities = array();
- var $http_base;
- var $base;
- var $base_location = 0;
- var $checked_feeds = 0;
- var $max_checked_feeds = 10;
-
- function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10)
- {
- $this->file =& $file;
- $this->file_class = $file_class;
- $this->useragent = $useragent;
- $this->timeout = $timeout;
- $this->max_checked_feeds = $max_checked_feeds;
- }
-
- function find($type = SIMPLEPIE_LOCATOR_ALL)
- {
- if ($this->is_feed($this->file))
- {
- return $this->file;
- }
-
- if ($type & ~SIMPLEPIE_LOCATOR_NONE)
- {
- $this->get_base();
- }
-
- if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery())
- {
- return $working;
- }
-
- if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links())
- {
- if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
- {
- return $working;
- }
-
- if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
- {
- return $working;
- }
-
- if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
- {
- return $working;
- }
-
- if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
- {
- return $working;
- }
- }
- return null;
- }
-
- function is_feed(&$file)
- {
- $body = SimplePie_Misc::strip_comments($file->body);
- if (preg_match('/<([^\s:]+:)?(rss|RDF|feed)' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/i', $body))
- {
- return true;
- }
- return false;
- }
-
- function get_base()
- {
- if (isset($this->file->headers['content-location']))
- {
- $this->http_base = SimplePie_Misc::absolutize_url(trim($this->file->headers['content-location']), $this->file->url);
- }
- else
- {
- $this->http_base = $this->file->url;
- }
- $this->base = $this->http_base;
- $elements = SimplePie_Misc::get_element('base', $this->file->body);
- foreach ($elements as $element)
- {
- if ($element['attribs']['href']['data'] !== '')
- {
- $this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base);
- $this->base_location = $element['offset'];
- break;
- }
- }
- }
-
- function autodiscovery()
- {
- $links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body));
- $done = array();
- foreach ($links as $link)
- {
- if ($this->checked_feeds == $this->max_checked_feeds)
- {
- break;
- }
- if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data']))
- {
- $rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data'])));
-
- if ($this->base_location < $link['offset'])
- {
- $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
- }
- else
- {
- $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
- }
-
- if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))))
- {
- $this->checked_feeds++;
- $feed =& new $this->file_class($href, $this->timeout, 5, null, $this->useragent);
- if ($this->is_feed($feed))
- {
- return $feed;
- }
- }
- $done[] = $href;
- }
- }
- return null;
- }
-
- function get_links()
- {
- $links = SimplePie_Misc::get_element('a', $this->file->body);
- foreach ($links as $link)
- {
- if (isset($link['attribs']['href']['data']))
- {
- $href = trim($link['attribs']['href']['data']);
- $parsed = SimplePie_Misc::parse_url($href);
- if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
- {
- if ($this->base_location < $link['offset'])
- {
- $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
- }
- else
- {
- $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
- }
-
- $current = SimplePie_Misc::parse_url($this->file->url);
-
- if ($parsed['authority'] === '' || $parsed['authority'] == $current['authority'])
- {
- $this->local[] = $href;
- }
- else
- {
- $this->elsewhere[] = $href;
- }
- }
- }
- }
- $this->local = array_unique($this->local);
- $this->elsewhere = array_unique($this->elsewhere);
- if (!empty($this->local) || !empty($this->elsewhere))
- {
- return true;
- }
- return null;
- }
-
- function extension(&$array)
- {
- foreach ($array as $key => $value)
- {
- if ($this->checked_feeds == $this->max_checked_feeds)
- {
- break;
- }
- if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml')))
- {
- $this->checked_feeds++;
- $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
- if ($this->is_feed($feed))
- {
- return $feed;
- }
- else
- {
- unset($array[$key]);
- }
- }
- }
- return null;
- }
-
- function body(&$array)
- {
- foreach ($array as $key => $value)
- {
- if ($this->checked_feeds == $this->max_checked_feeds)
- {
- break;
- }
- if (preg_match('/(rss|rdf|atom|xml)/i', $value))
- {
- $this->checked_feeds++;
- $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
- if ($this->is_feed($feed))
- {
- return $feed;
- }
- else
- {
- unset($array[$key]);
- }
- }
- }
- return null;
- }
-}
-
-class SimplePie_Parser
-{
- var $xml;
- var $error_code;
- var $error_string;
- var $current_line;
- var $current_column;
- var $current_byte;
- var $separator = ' ';
- var $feed = false;
- var $namespace = array('');
- var $element = array('');
- var $xml_base = array('');
- var $xml_base_explicit = array(false);
- var $xml_lang = array('');
- var $data = array();
- var $datas = array(array());
- var $current_xhtml_construct = -1;
- var $encoding;
-
- function pre_process(&$data, $encoding)
- {
- // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
- if (strtoupper($encoding) == 'US-ASCII')
- {
- $this->encoding = 'UTF-8';
- }
- else
- {
- $this->encoding = $encoding;
- }
-
- // Strip BOM:
- // UTF-32 Big Endian BOM
- if (strpos($data, "\x0\x0\xFE\xFF") === 0)
- {
- $data = substr($data, 4);
- }
- // UTF-32 Little Endian BOM
- elseif (strpos($data, "\xFF\xFE\x0\x0") === 0)
- {
- $data = substr($data, 4);
- }
- // UTF-16 Big Endian BOM
- elseif (strpos($data, "\xFE\xFF") === 0)
- {
- $data = substr($data, 2);
- }
- // UTF-16 Little Endian BOM
- elseif (strpos($data, "\xFF\xFE") === 0)
- {
- $data = substr($data, 2);
- }
- // UTF-8 BOM
- elseif (strpos($data, "\xEF\xBB\xBF") === 0)
- {
- $data = substr($data, 3);
- }
-
- // Make sure the XML prolog is sane and has the correct encoding
- $data = preg_replace("/^<\?xml[\x20\x9\xD\xA]+version([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"1.0\"|'1.0'|\"1.1\"|'1.1')([\x20\x9\xD\xA]+encoding([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"[A-Za-z][A-Za-z0-9._\-]*\"|'[A-Za-z][A-Za-z0-9._\-]*'))?([\x20\x9\xD\xA]+standalone([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"(yes|no)\"|'(yes|no)'))?([\x20\x9\xD\xA]+)?\?>/", '', $data);
- $data = "<?xml version='1.0' encoding='$encoding'?>\n" . $data;
- }
-
- function parse(&$data)
- {
- $return = true;
-
- // Create the parser
- $this->xml = xml_parser_create_ns($this->encoding, $this->separator);
- xml_parser_set_option($this->xml, XML_OPTION_SKIP_WHITE, 1);
- xml_parser_set_option($this->xml, XML_OPTION_CASE_FOLDING, 0);
- xml_set_object($this->xml, $this);
- xml_set_character_data_handler($this->xml, 'cdata');
- xml_set_element_handler($this->xml, 'tag_open', 'tag_close');
-
- // Parse!
- if (!xml_parse($this->xml, $data, true))
- {
- $this->data = null;
- $this->error_code = xml_get_error_code($this->xml);
- $this->error_string = xml_error_string($this->error_code);
- $return = false;
- }
- $this->current_line = xml_get_current_line_number($this->xml);
- $this->current_column = xml_get_current_column_number($this->xml);
- $this->current_byte = xml_get_current_byte_index($this->xml);
- xml_parser_free($this->xml);
- return $return;
- }
-
- function get_error_code()
- {
- return $this->error_code;
- }
-
- function get_error_string()
- {
- return $this->error_string;
- }
-
- function get_current_line()
- {
- return $this->current_line;
- }
-
- function get_current_column()
- {
- return $this->current_column;
- }
-
- function get_current_byte()
- {
- return $this->current_byte;
- }
-
- function get_data()
- {
- return $this->data;
- }
-
- function tag_open($parser, $tag, $attributes)
- {
- if ($this->feed === 0)
- {
- return;
- }
- elseif ($this->feed == false)
- {
- if (in_array($tag, array(
- SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed',
- SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed',
- 'rss',
- SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF'
- )))
- {
- $this->feed = 1;
- }
- }
- else
- {
- $this->feed++;
- }
-
- list($this->namespace[], $this->element[]) = $this->split_ns($tag);
-
- $attribs = array();
- foreach ($attributes as $name => $value)
- {
- list($attrib_namespace, $attribute) = $this->split_ns($name);
- $attribs[$attrib_namespace][$attribute] = $value;
- }
-
- if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base']))
- {
- $this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base));
- $this->xml_base_explicit[] = true;
- }
- else
- {
- $this->xml_base[] = end($this->xml_base);
- $this->xml_base_explicit[] = end($this->xml_base_explicit);
- }
-
- if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang']))
- {
- $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang'];
- }
- else
- {
- $this->xml_lang[] = end($this->xml_lang);
- }
-
- if ($this->current_xhtml_construct >= 0)
- {
- $this->current_xhtml_construct++;
- if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML)
- {
- $this->data['data'] .= '<' . end($this->element);
- if (isset($attribs['']))
- {
- foreach ($attribs[''] as $name => $value)
- {
- $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"';
- }
- }
- $this->data['data'] .= '>';
- }
- }
- else
- {
- $this->datas[] =& $this->data;
- $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
- $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang));
- if ((end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] == 'xml')
- || (end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] == 'xhtml'))
- {
- $this->current_xhtml_construct = 0;
- }
- }
- }
-
- function cdata($parser, $cdata)
- {
- if ($this->current_xhtml_construct >= 0)
- {
- $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
- }
- elseif ($this->feed > 1)
- {
- $this->data['data'] .= $cdata;
- }
- }
-
- function tag_close($parser, $tag)
- {
- if (!$this->feed)
- {
- return;
- }
-
- if ($this->current_xhtml_construct >= 0)
- {
- $this->current_xhtml_construct--;
- if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param')))
- {
- $this->data['data'] .= '</' . end($this->element) . '>';
- }
- }
- if ($this->current_xhtml_construct == -1)
- {
- $this->data =& $this->datas[$this->feed];
- array_pop($this->datas);
- }
-
- array_pop($this->element);
- array_pop($this->namespace);
- array_pop($this->xml_base);
- array_pop($this->xml_base_explicit);
- array_pop($this->xml_lang);
- $this->feed--;
- }
-
- function split_ns($string)
- {
- static $cache = array();
- if (!isset($cache[$string]))
- {
- if ($pos = strpos($string, $this->separator))
- {
- static $separator_length;
- if (!$separator_length)
- {
- $separator_length = strlen($this->separator);
- }
- $cache[$string] = array(substr($string, 0, $pos), substr($string, $pos + $separator_length));
- }
- else
- {
- $cache[$string] = array('', $string);
- }
- }
- return $cache[$string];
- }
-}
-
-/**
- * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shortern a string while preserving HTML tags
- */
-class SimplePie_Sanitize
-{
- // Private vars
- var $base;
-
- // Options
- var $remove_div = true;
- var $image_handler = '';
- var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
- var $encode_instead_of_strip = false;
- var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
- var $strip_comments = false;
- var $output_encoding = 'UTF-8';
- var $enable_cache = true;
- var $cache_location = './cache';
- var $cache_name_function = 'md5';
- var $cache_class = 'SimplePie_Cache';
- var $file_class = 'SimplePie_File';
- var $timeout = 10;
- var $useragent = '';
- var $force_fsockopen = false;
-
- var $replace_url_attributes = array(
- 'a' => 'href',
- 'area' => 'href',
- 'blockquote' => 'cite',
- 'del' => 'cite',
- 'form' => 'action',
- 'img' => array('longdesc', 'src'),
- 'input' => 'src',
- 'ins' => 'cite',
- 'q' => 'cite'
- );
-
- function remove_div($enable = true)
- {
- $this->remove_div = (bool) $enable;
- }
-
- function set_image_handler($page = false)
- {
- if ($page)
- {
- $this->image_handler = (string) $page;
- }
- else
- {
- $this->image_handler = false;
- }
- }
-
- function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
- {
- if (isset($enable_cache))
- {
- $this->enable_cache = (bool) $enable_cache;
- }
-
- if ($cache_location)
- {
- $this->cache_location = (string) $cache_location;
- }
-
- if ($cache_name_function)
- {
- $this->cache_name_function = (string) $cache_name_function;
- }
-
- if ($cache_class)
- {
- $this->cache_class = (string) $cache_class;
- }
- }
-
- function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
- {
- if ($file_class)
- {
- $this->file_class = (string) $file_class;
- }
-
- if ($timeout)
- {
- $this->timeout = (string) $timeout;
- }
-
- if ($useragent)
- {
- $this->useragent = (string) $useragent;
- }
-
- if ($force_fsockopen)
- {
- $this->force_fsockopen = (string) $force_fsockopen;
- }
- }
-
- function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
- {
- if ($tags)
- {
- if (is_array($tags))
- {
- $this->strip_htmltags = $tags;
- }
- else
- {
- $this->strip_htmltags = explode(',', $tags);
- }
- }
- else
- {
- $this->strip_htmltags = false;
- }
- }
-
- function encode_instead_of_strip($encode = false)
- {
- $this->encode_instead_of_strip = (bool) $encode;
- }
-
- function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
- {
- if ($attribs)
- {
- if (is_array($attribs))
- {
- $this->strip_attributes = $attribs;
- }
- else
- {
- $this->strip_attributes = explode(',', $attribs);
- }
- }
- else
- {
- $this->strip_attributes = false;
- }
- }
-
- function strip_comments($strip = false)
- {
- $this->strip_comments = (bool) $strip;
- }
-
- function set_output_encoding($encoding = 'UTF-8')
- {
- $this->output_encoding = (string) $encoding;
- }
-
- /**
- * Set element/attribute key/value pairs of HTML attributes
- * containing URLs that need to be resolved relative to the feed
- *
- * @access public
- * @since 1.0
- * @param array $element_attribute Element/attribute key/value pairs
- */
- function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
- {
- $this->replace_url_attributes = (array) $element_attribute;
- }
-
- function sanitize($data, $type, $base = '')
- {
- $data = trim($data);
- if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
- {
- if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
- {
- if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/(\w+)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
- {
- $type |= SIMPLEPIE_CONSTRUCT_HTML;
- }
- else
- {
- $type |= SIMPLEPIE_CONSTRUCT_TEXT;
- }
- }
-
- if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
- {
- $data = base64_decode($data);
- }
-
- if ($type & SIMPLEPIE_CONSTRUCT_XHTML)
- {
- if ($this->remove_div)
- {
- $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
- $data = preg_replace('/<\/div>$/', '', $data);
- }
- else
- {
- $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
- }
- }
-
- if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
- {
- // Strip comments
- if ($this->strip_comments)
- {
- $data = SimplePie_Misc::strip_comments($data);
- }
-
- // Strip out HTML tags and attributes that might cause various security problems.
- // Based on recommendations by Mark Pilgrim at:
- // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
- if ($this->strip_htmltags)
- {
- foreach ($this->strip_htmltags as $tag)
- {
- $pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU';
- while (preg_match($pcre, $data))
- {
- $data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data);
- }
- }
- }
-
- if ($this->strip_attributes)
- {
- foreach ($this->strip_attributes as $attrib)
- {
- $data = preg_replace('/ '. trim($attrib) .'=("|")(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|\'|'|<|>|\+|{|})*("|")/i', '', $data);
- $data = preg_replace('/ '. trim($attrib) .'=(\'|')(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|"|"|<|>|\+|{|})*(\'|')/i', '', $data);
- $data = preg_replace('/ '. trim($attrib) .'=(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|\+|{|})*/i', '', $data);
- }
- }
-
- // Replace relative URLs
- $this->base = $base;
- foreach ($this->replace_url_attributes as $element => $attributes)
- {
- $data = $this->replace_urls($data, $element, $attributes);
- }
-
- // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
- if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
- {
- $images = SimplePie_Misc::get_element('img', $data);
- foreach ($images as $img)
- {
- if (isset($img['attribs']['src']['data']))
- {
- $image_url = $img['attribs']['src']['data'];
- $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $image_url), 'spi');
-
- if ($cache->load())
- {
- $img['attribs']['src']['data'] = $this->image_handler . rawurlencode($img['attribs']['src']['data']);
- $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
- }
- else
- {
- $file =& new $this->file_class($image_url, $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
- $headers = $file->headers;
-
- if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)))
- {
- if (!$cache->save(array('headers' => $file->headers, 'body' => $file->body)))
- {
- trigger_error("$cache->name is not writeable", E_USER_WARNING);
- }
- $img['attribs']['src']['data'] = $this->image_handler . rawurlencode($img['attribs']['src']['data']);
- $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
- }
- }
- }
- }
- }
-
- // Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data
- $data = trim($data);
- }
-
- if ($type & SIMPLEPIE_CONSTRUCT_IRI)
- {
- $data = SimplePie_Misc::absolutize_url($data, $base);
- }
-
- if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
- {
- $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
- }
-
- if ($this->output_encoding != 'UTF-8')
- {
- $data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding);
- }
- }
- return $data;
- }
-
- function replace_urls($data, $tag, $attributes)
- {
- if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
- {
- $elements = SimplePie_Misc::get_element($tag, $data);
- foreach ($elements as $element)
- {
- if (is_array($attributes))
- {
- foreach ($attributes as $attribute)
- {
- if (isset($element['attribs'][$attribute]['data']))
- {
- $element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base);
- $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
- }
- }
- }
- elseif (isset($element['attribs'][$attributes]['data']))
- {
- $element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base);
- $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
- }
- }
- }
- return $data;
- }
-
- function do_strip_htmltags($match)
- {
- if ($this->encode_instead_of_strip)
- {
- if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
- {
- $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
- $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
- return "<$match[1]$match[2]>$match[3]</$match[1]>";
- }
- else
- {
- return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
- }
- }
- elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
- {
- return $match[4];
- }
- else
- {
- return '';
- }
- }
-}
-
-?>
+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2007, Ryan Parman and Geoffrey Sneddon
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @version "Razzleberry"
+ * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @link http://simplepie.org/ SimplePie
+ * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @todo phpDoc comments
+ */
+
+/**
+ * SimplePie Name
+ */
+define('SIMPLEPIE_NAME', 'SimplePie');
+
+/**
+ * SimplePie Version
+ */
+define('SIMPLEPIE_VERSION', '1.0.1');
+
+/**
+ * SimplePie Build
+ * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::parse_date() only every load of simplepie.inc)
+ */
+define('SIMPLEPIE_BUILD', 20070719221955);
+
+/**
+ * SimplePie Website URL
+ */
+define('SIMPLEPIE_URL', 'http://simplepie.org/');
+
+/**
+ * SimplePie Useragent
+ * @see SimplePie::set_useragent()
+ */
+define('SIMPLEPIE_USERAGENT', SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION . ' (Feed Parser; ' . SIMPLEPIE_URL . '; Allow like Gecko) Build/' . SIMPLEPIE_BUILD);
+
+/**
+ * SimplePie Linkback
+ */
+define('SIMPLEPIE_LINKBACK', '<a href="' . SIMPLEPIE_URL . '" title="' . SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . '">' . SIMPLEPIE_NAME . '</a>');
+
+/**
+ * No Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_NONE', 0);
+
+/**
+ * Feed Link Element Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1);
+
+/**
+ * Local Feed Extension Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2);
+
+/**
+ * Local Feed Body Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4);
+
+/**
+ * Remote Feed Extension Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8);
+
+/**
+ * Remote Feed Body Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16);
+
+/**
+ * All Feed Autodiscovery
+ * @see SimplePie::set_autodiscovery_level()
+ */
+define('SIMPLEPIE_LOCATOR_ALL', 31);
+
+/**
+ * No known feed type
+ */
+define('SIMPLEPIE_TYPE_NONE', 0);
+
+/**
+ * RSS 0.90
+ */
+define('SIMPLEPIE_TYPE_RSS_090', 1);
+
+/**
+ * RSS 0.91 (Netscape)
+ */
+define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2);
+
+/**
+ * RSS 0.91 (Userland)
+ */
+define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4);
+
+/**
+ * RSS 0.91 (both Netscape and Userland)
+ */
+define('SIMPLEPIE_TYPE_RSS_091', 6);
+
+/**
+ * RSS 0.92
+ */
+define('SIMPLEPIE_TYPE_RSS_092', 8);
+
+/**
+ * RSS 0.93
+ */
+define('SIMPLEPIE_TYPE_RSS_093', 16);
+
+/**
+ * RSS 0.94
+ */
+define('SIMPLEPIE_TYPE_RSS_094', 32);
+
+/**
+ * RSS 1.0
+ */
+define('SIMPLEPIE_TYPE_RSS_10', 64);
+
+/**
+ * RSS 2.0
+ */
+define('SIMPLEPIE_TYPE_RSS_20', 128);
+
+/**
+ * RDF-based RSS
+ */
+define('SIMPLEPIE_TYPE_RSS_RDF', 65);
+
+/**
+ * Non-RDF-based RSS (truly intended as syndication format)
+ */
+define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190);
+
+/**
+ * All RSS
+ */
+define('SIMPLEPIE_TYPE_RSS_ALL', 255);
+
+/**
+ * Atom 0.3
+ */
+define('SIMPLEPIE_TYPE_ATOM_03', 256);
+
+/**
+ * Atom 1.0
+ */
+define('SIMPLEPIE_TYPE_ATOM_10', 512);
+
+/**
+ * All Atom
+ */
+define('SIMPLEPIE_TYPE_ATOM_ALL', 768);
+
+/**
+ * All feed types
+ */
+define('SIMPLEPIE_TYPE_ALL', 1023);
+
+/**
+ * No construct
+ */
+define('SIMPLEPIE_CONSTRUCT_NONE', 0);
+
+/**
+ * Text construct
+ */
+define('SIMPLEPIE_CONSTRUCT_TEXT', 1);
+
+/**
+ * HTML construct
+ */
+define('SIMPLEPIE_CONSTRUCT_HTML', 2);
+
+/**
+ * XHTML construct
+ */
+define('SIMPLEPIE_CONSTRUCT_XHTML', 4);
+
+/**
+ * base64-encoded construct
+ */
+define('SIMPLEPIE_CONSTRUCT_BASE64', 8);
+
+/**
+ * IRI construct
+ */
+define('SIMPLEPIE_CONSTRUCT_IRI', 16);
+
+/**
+ * A construct that might be HTML
+ */
+define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32);
+
+/**
+ * All constructs
+ */
+define('SIMPLEPIE_CONSTRUCT_ALL', 63);
+
+/**
+ * PCRE for HTML attributes
+ */
+define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[a-z0-9\-._:]*)))?)*)\s*');
+
+/**
+ * PCRE for XML attributes
+ */
+define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*');
+
+/**
+ * XML Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace');
+
+/**
+ * Atom 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom');
+
+/**
+ * Atom 0.3 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#');
+
+/**
+ * RDF Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+
+/**
+ * RSS 0.90 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/');
+
+/**
+ * RSS 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/');
+
+/**
+ * RSS 1.0 Content Module Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/');
+
+/**
+ * DC 1.0 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/');
+
+/**
+ * DC 1.1 Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/');
+
+/**
+ * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#');
+
+/**
+ * GeoRSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss');
+
+/**
+ * Media RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/');
+
+/**
+ * iTunes RSS Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
+
+/**
+ * XHTML Namespace
+ */
+define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml');
+
+/**
+ * IANA Link Relations Registry
+ */
+define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/');
+
+/**
+ * Whether we're running on PHP5
+ */
+define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>='));
+
+/**
+ * SimplePie
+ *
+ * @package SimplePie
+ * @version "Razzleberry"
+ * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon
+ * @author Ryan Parman
+ * @author Geoffrey Sneddon
+ * @todo Option for type of fetching (cache, not modified header, fetch, etc.)
+ */
+class SimplePie
+{
+ /**
+ * @var array Raw data
+ * @access private
+ */
+ var $data = array();
+
+ /**
+ * @var mixed Error string
+ * @access private
+ */
+ var $error;
+
+ /**
+ * @var object Instance of SimplePie_Sanitize (or other class)
+ * @see SimplePie::set_sanitize_class()
+ * @access private
+ */
+ var $sanitize;
+
+ /**
+ * @var string SimplePie Useragent
+ * @see SimplePie::set_useragent()
+ * @access private
+ */
+ var $useragent = SIMPLEPIE_USERAGENT;
+
+ /**
+ * @var string Feed URL
+ * @see SimplePie::set_feed_url()
+ * @access private
+ */
+ var $feed_url;
+
+ /**
+ * @var object Instance of SimplePie_File to use as a feed
+ * @see SimplePie::set_file()
+ * @access private
+ */
+ var $file;
+
+ /**
+ * @var string Raw feed data
+ * @see SimplePie::set_raw_data()
+ * @access private
+ */
+ var $raw_data;
+
+ /**
+ * @var int Timeout for fetching remote files
+ * @see SimplePie::set_timeout()
+ * @access private
+ */
+ var $timeout = 10;
+
+ /**
+ * @var bool Forces fsockopen() to be used for remote files instead
+ * of cURL, even if a new enough version is installed
+ * @see SimplePie::force_fsockopen()
+ * @access private
+ */
+ var $force_fsockopen = false;
+
+ /**
+ * @var bool Enable/Disable XML dump
+ * @see SimplePie::enable_xml_dump()
+ * @access private
+ */
+ var $xml_dump = false;
+
+ /**
+ * @var bool Enable/Disable Caching
+ * @see SimplePie::enable_cache()
+ * @access private
+ */
+ var $cache = true;
+
+ /**
+ * @var int Cache duration (in seconds)
+ * @see SimplePie::set_cache_duration()
+ * @access private
+ */
+ var $cache_duration = 3600;
+
+ /**
+ * @var int Auto-discovery cache duration (in seconds)
+ * @see SimplePie::set_autodiscovery_cache_duration()
+ * @access private
+ */
+ var $autodiscovery_cache_duration = 604800; // 7 Days.
+
+ /**
+ * @var string Cache location (relative to executing script)
+ * @see SimplePie::set_cache_location()
+ * @access private
+ */
+ var $cache_location = './cache';
+
+ /**
+ * @var string Function that creates the cache filename
+ * @see SimplePie::set_cache_name_function()
+ * @access private
+ */
+ var $cache_name_function = 'md5';
+
+ /**
+ * @var bool Reorder feed by date descending
+ * @see SimplePie::enable_order_by_date()
+ * @access private
+ */
+ var $order_by_date = true;
+
+ /**
+ * @var mixed Force input encoding to be set to the follow value
+ * (false, or anything type-cast to false, disables this feature)
+ * @see SimplePie::set_input_encoding()
+ * @access private
+ */
+ var $input_encoding = false;
+
+ /**
+ * @var int Feed Autodiscovery Level
+ * @see SimplePie::set_autodiscovery_level()
+ * @access private
+ */
+ var $autodiscovery = SIMPLEPIE_LOCATOR_ALL;
+
+ /**
+ * @var string Class used for caching feeds
+ * @see SimplePie::set_cache_class()
+ * @access private
+ */
+ var $cache_class = 'SimplePie_Cache';
+
+ /**
+ * @var string Class used for locating feeds
+ * @see SimplePie::set_locator_class()
+ * @access private
+ */
+ var $locator_class = 'SimplePie_Locator';
+
+ /**
+ * @var string Class used for parsing feeds
+ * @see SimplePie::set_parser_class()
+ * @access private
+ */
+ var $parser_class = 'SimplePie_Parser';
+
+ /**
+ * @var string Class used for fetching feeds
+ * @see SimplePie::set_file_class()
+ * @access private
+ */
+ var $file_class = 'SimplePie_File';
+
+ /**
+ * @var string Class used for items
+ * @see SimplePie::set_item_class()
+ * @access private
+ */
+ var $item_class = 'SimplePie_Item';
+
+ /**
+ * @var string Class used for authors
+ * @see SimplePie::set_author_class()
+ * @access private
+ */
+ var $author_class = 'SimplePie_Author';
+
+ /**
+ * @var string Class used for categories
+ * @see SimplePie::set_category_class()
+ * @access private
+ */
+ var $category_class = 'SimplePie_Category';
+
+ /**
+ * @var string Class used for enclosures
+ * @see SimplePie::set_enclosures_class()
+ * @access private
+ */
+ var $enclosure_class = 'SimplePie_Enclosure';
+
+ /**
+ * @var string Class used for Media RSS <media:text> captions
+ * @see SimplePie::set_caption_class()
+ * @access private
+ */
+ var $caption_class = 'SimplePie_Caption';
+
+ /**
+ * @var string Class used for Media RSS <media:copyright>
+ * @see SimplePie::set_copyright_class()
+ * @access private
+ */
+ var $copyright_class = 'SimplePie_Copyright';
+
+ /**
+ * @var string Class used for Media RSS <media:credit>
+ * @see SimplePie::set_credit_class()
+ * @access private
+ */
+ var $credit_class = 'SimplePie_Credit';
+
+ /**
+ * @var string Class used for Media RSS <media:rating>
+ * @see SimplePie::set_rating_class()
+ * @access private
+ */
+ var $rating_class = 'SimplePie_Rating';
+
+ /**
+ * @var string Class used for Media RSS <media:restriction>
+ * @see SimplePie::set_restriction_class()
+ * @access private
+ */
+ var $restriction_class = 'SimplePie_Restriction';
+
+ /**
+ * @var mixed Set javascript query string parameter (false, or
+ * anything type-cast to false, disables this feature)
+ * @see SimplePie::set_javascript()
+ * @access private
+ */
+ var $javascript = 'js';
+
+ /**
+ * @var int Maximum number of feeds to check with autodiscovery
+ * @see SimplePie::set_max_checked_feeds()
+ * @access private
+ */
+ var $max_checked_feeds = 10;
+
+ /**
+ * @var string Web-accessible path to the handler_favicon.php file.
+ * @see SimplePie::set_favicon_handler()
+ * @access private
+ */
+ var $favicon_handler = '';
+
+ /**
+ * @var string Web-accessible path to the handler_image.php file.
+ * @see SimplePie::set_image_handler()
+ * @access private
+ */
+ var $image_handler = '';
+
+ /**
+ * @var array Stores the URLs when multiple feeds are being initialized.
+ * @see SimplePie::set_feed_url()
+ * @access private
+ */
+ var $multifeed_url = array();
+
+ /**
+ * @var array Stores SimplePie objects when multiple feeds initialized.
+ * @access private
+ */
+ var $multifeed_objects = array();
+
+ /**
+ * @var array Stores the get_object_vars() array for use with multifeeds.
+ * @see SimplePie::set_feed_url()
+ * @access private
+ */
+ var $config_settings = null;
+
+ /**
+ * @var array Stores the default attributes to be stripped by strip_attributes().
+ * @see SimplePie::strip_attributes()
+ * @access private
+ */
+ var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+
+ /**
+ * @var array Stores the default tags to be stripped by strip_htmltags().
+ * @see SimplePie::strip_htmltags()
+ * @access private
+ */
+ var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+
+ /**
+ * The SimplePie class contains feed level data and options
+ *
+ * There are two ways that you can create a new SimplePie object. The first
+ * is by passing a feed URL as a parameter to the SimplePie constructor
+ * (as well as optionally setting the cache location and cache expiry). This
+ * will initialise the whole feed with all of the default settings, and you
+ * can begin accessing methods and properties immediately.
+ *
+ * The second way is to create the SimplePie object with no parameters
+ * at all. This will enable you to set configuration options. After setting
+ * them, you must initialise the feed using $feed->init(). At that point the
+ * object's methods and properties will be available to you. This format is
+ * what is used throughout this documentation.
+ *
+ * @access public
+ * @since 1.0 Preview Release
+ * @param string $feed_url This is the URL you want to parse.
+ * @param string $cache_location This is where you want the cache to be stored.
+ * @param int $cache_duration This is the number of seconds that you want to store the cache file for.
+ */
+ function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null)
+ {
+ // Other objects, instances created here so we can set options on them
+ $this->sanitize =& new SimplePie_Sanitize;
+
+ // Set options if they're passed to the constructor
+ if ($cache_location !== null)
+ {
+ $this->set_cache_location($cache_location);
+ }
+
+ if ($cache_duration !== null)
+ {
+ $this->set_cache_duration($cache_duration);
+ }
+
+ // Only init the script if we're passed a feed URL
+ if ($feed_url !== null)
+ {
+ $this->set_feed_url($feed_url);
+ $this->init();
+ }
+ }
+
+ /**
+ * Used for converting object to a string
+ */
+ function __toString()
+ {
+ return md5(serialize($this->data));
+ }
+
+ /**
+ * This is the URL of the feed you want to parse.
+ *
+ * This allows you to enter the URL of the feed you want to parse, or the
+ * website you want to try to use auto-discovery on. This takes priority
+ * over any set raw data.
+ *
+ * You can set multiple feeds to mash together by passing an array instead
+ * of a string for the $url. Remember that with each additional feed comes
+ * additional processing and resources.
+ *
+ * @access public
+ * @since 1.0 Preview Release
+ * @param mixed $url This is the URL (or array of URLs) that you want to parse.
+ * @see SimplePie::set_raw_data()
+ */
+ function set_feed_url($url)
+ {
+ if (is_array($url))
+ {
+ $this->multifeed_url = array();
+ foreach ($url as $value)
+ {
+ $this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1);
+ }
+ }
+ else
+ {
+ $this->feed_url = SimplePie_Misc::fix_protocol($url, 1);
+ }
+ }
+
+ /**
+ * Provides an instance of SimplePie_File to use as a feed
+ *
+ * @access public
+ * @param object &$file Instance of SimplePie_File (or subclass)
+ * @return bool True on success, false on failure
+ */
+ function set_file(&$file)
+ {
+ if (SimplePie_Misc::is_a($file, 'SimplePie_File'))
+ {
+ $this->feed_url = $file->url;
+ $this->file =& $file;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to use a string of RSS/Atom data instead of a remote feed.
+ *
+ * If you have a feed available as a string in PHP, you can tell SimplePie
+ * to parse that data string instead of a remote feed. Any set feed URL
+ * takes precedence.
+ *
+ * @access public
+ * @since 1.0 Beta 3
+ * @param string $data RSS or Atom data as a string.
+ * @see SimplePie::set_feed_url()
+ */
+ function set_raw_data($data)
+ {
+ $this->raw_data = trim($data);
+ }
+
+ /**
+ * Allows you to override the default timeout for fetching remote feeds.
+ *
+ * This allows you to change the maximum time the feed's server to respond
+ * and send the feed back.
+ *
+ * @access public
+ * @since 1.0 Beta 3
+ * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed.
+ */
+ function set_timeout($timeout = 10)
+ {
+ $this->timeout = (int) $timeout;
+ }
+
+ /**
+ * Forces SimplePie to use fsockopen() instead of the preferred cURL
+ * functions.
+ *
+ * @access public
+ * @since 1.0 Beta 3
+ * @param bool $enable Force fsockopen() to be used
+ */
+ function force_fsockopen($enable = false)
+ {
+ $this->force_fsockopen = (bool) $enable;
+ }
+
+ /**
+ * Outputs the raw XML content of the feed, after it has gone through
+ * SimplePie's filters.
+ *
+ * Used only for debugging, this function will output the XML content as
+ * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up
+ * before trying to parse it. Many parts of the feed are re-written in
+ * memory, and in the end, you have a parsable feed. XML dump shows you the
+ * actual XML that SimplePie tries to parse, which may or may not be very
+ * different from the original feed.
+ *
+ * @access public
+ * @since 1.0 Preview Release
+ * @param bool $enable Enable XML dump
+ */
+ function enable_xml_dump($enable = false)
+ {
+ $this->xml_dump = (bool) $enable;
+ }
+
+ /**
+ * Enables/disables caching in SimplePie.
+ *
+ * This option allows you to disable caching all-together in SimplePie.
+ * However, disabling the cache can lead to longer load times.
+ *
+ * @access public
+ * @since 1.0 Preview Release
+ * @param bool $enable Enable caching
+ */
+ function enable_cache($enable = true)
+ {
+ $this->cache = (bool) $enable;
+ }
+
+ /**
+ * Set the length of time (in seconds) that the contents of a feed
+ * will be cached.
+ *
+ * @access public
+ * @param int $seconds The feed content cache duration.
+ */
+ function set_cache_duration($seconds = 3600)
+ {
+ $this->cache_duration = (int) $seconds;
+ }
+
+ /**
+ * Set the length of time (in seconds) that the autodiscovered feed
+ * URL will be cached.
+ *
+ * @access public
+ * @param int $seconds The autodiscovered feed URL cache duration.
+ */
+ function set_autodiscovery_cache_duration($seconds = 604800)
+ {
+ $this->autodiscovery_cache_duration = (int) $seconds;
+ }
+
+ /**
+ * Set the file system location where the cached files should be stored.
+ *
+ * @access public
+ * @param string $location The file system location.
+ */
+ function set_cache_location($location = './cache')
+ {
+ $this->cache_location = (string) $location;
+ }
+
+ /**
+ * Determines whether feed items should be sorted into reverse chronological order.
+ *
+ * @access public
+ * @param bool $enable Sort as reverse chronological order.
+ */
+ function enable_order_by_date($enable = true)
+ {
+ $this->order_by_date = (bool) $enable;
+ }
+
+ /**
+ * Allows you to override the character encoding reported by the feed.
+ *
+ * @access public
+ * @param string $encoding Character encoding.
+ */
+ function set_input_encoding($encoding = false)
+ {
+ if ($encoding)
+ {
+ $this->input_encoding = (string) $encoding;
+ }
+ else
+ {
+ $this->input_encoding = false;
+ }
+ }
+
+ /**
+ * Set how much feed autodiscovery to do
+ *
+ * @access public
+ * @see SIMPLEPIE_LOCATOR_NONE
+ * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY
+ * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION
+ * @see SIMPLEPIE_LOCATOR_LOCAL_BODY
+ * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION
+ * @see SIMPLEPIE_LOCATOR_REMOTE_BODY
+ * @see SIMPLEPIE_LOCATOR_ALL
+ * @param int $level Feed Autodiscovery Level (level can be a
+ * combination of the above constants, see bitwise OR operator)
+ */
+ function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL)
+ {
+ $this->autodiscovery = (int) $level;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for caching.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_cache_class($class = 'SimplePie_Cache')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache'))
+ {
+ $this->cache_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for auto-discovery.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_locator_class($class = 'SimplePie_Locator')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator'))
+ {
+ $this->locator_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for XML parsing.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_parser_class($class = 'SimplePie_Parser')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser'))
+ {
+ $this->parser_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for remote file fetching.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_file_class($class = 'SimplePie_File')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File'))
+ {
+ $this->file_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for data sanitization.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_sanitize_class($class = 'SimplePie_Sanitize')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize'))
+ {
+ $this->sanitize =& new $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for handling feed items.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_item_class($class = 'SimplePie_Item')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item'))
+ {
+ $this->item_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for handling author data.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_author_class($class = 'SimplePie_Author')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author'))
+ {
+ $this->author_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for handling category data.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_category_class($class = 'SimplePie_Category')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category'))
+ {
+ $this->category_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for feed enclosures.
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_enclosure_class($class = 'SimplePie_Enclosure')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure'))
+ {
+ $this->enclosure_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for <media:text> captions
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_caption_class($class = 'SimplePie_Caption')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption'))
+ {
+ $this->caption_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for <media:copyright>
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_copyright_class($class = 'SimplePie_Copyright')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright'))
+ {
+ $this->copyright_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for <media:credit>
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_credit_class($class = 'SimplePie_Credit')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit'))
+ {
+ $this->credit_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for <media:rating>
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_rating_class($class = 'SimplePie_Rating')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating'))
+ {
+ $this->rating_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to change which class SimplePie uses for <media:restriction>
+ * Useful when you are overloading or extending SimplePie's default classes.
+ *
+ * @access public
+ * @param string $class Name of custom class.
+ * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation
+ * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation
+ */
+ function set_restriction_class($class = 'SimplePie_Restriction')
+ {
+ if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction'))
+ {
+ $this->restriction_class = $class;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Allows you to override the default user agent string.
+ *
+ * @access public
+ * @param string $ua New user agent string.
+ */
+ function set_useragent($ua = SIMPLEPIE_USERAGENT)
+ {
+ $this->useragent = (string) $ua;
+ }
+
+ /**
+ * Set callback function to create cache filename with
+ *
+ * @access public
+ * @param mixed $function Callback function
+ */
+ function set_cache_name_function($function = 'md5')
+ {
+ if (is_callable($function))
+ {
+ $this->cache_name_function = $function;
+ }
+ }
+
+ /**
+ * Set javascript query string parameter
+ *
+ * @access public
+ * @param mixed $get Javascript query string parameter
+ */
+ function set_javascript($get = 'js')
+ {
+ if ($get)
+ {
+ $this->javascript = (string) $get;
+ }
+ else
+ {
+ $this->javascript = false;
+ }
+ }
+
+ /**
+ * Set options to make SP as fast as possible. Forgoes a
+ * substantial amount of data sanitization in favor of speed.
+ *
+ * @access public
+ * @param bool $set Whether to set them or not
+ */
+ function set_stupidly_fast($set = false)
+ {
+ if ($set)
+ {
+ $this->enable_order_by_date(false);
+ $this->remove_div(false);
+ $this->strip_comments(false);
+ $this->strip_htmltags(false);
+ $this->strip_attributes(false);
+ $this->set_image_handler(false);
+ }
+ }
+
+ /**
+ * Set maximum number of feeds to check with autodiscovery
+ *
+ * @access public
+ * @param int $max Maximum number of feeds to check
+ */
+ function set_max_checked_feeds($max = 10)
+ {
+ $this->max_checked_feeds = (int) $max;
+ }
+
+ function remove_div($enable = true)
+ {
+ $this->sanitize->remove_div($enable);
+ }
+
+ function strip_htmltags($tags = '', $encode = null)
+ {
+ if ($tags === '')
+ {
+ $tags = $this->strip_htmltags;
+ }
+ $this->sanitize->strip_htmltags($tags);
+ if ($encode !== null)
+ {
+ $this->sanitize->encode_instead_of_strip($tags);
+ }
+ }
+
+ function encode_instead_of_strip($enable = true)
+ {
+ $this->sanitize->encode_instead_of_strip($enable);
+ }
+
+ function strip_attributes($attribs = '')
+ {
+ if ($attribs === '')
+ {
+ $attribs = $this->strip_attributes;
+ }
+ $this->sanitize->strip_attributes($attribs);
+ }
+
+ function set_output_encoding($encoding = 'UTF-8')
+ {
+ $this->sanitize->set_output_encoding($encoding);
+ }
+
+ function strip_comments($strip = false)
+ {
+ $this->sanitize->strip_comments($strip);
+ }
+
+ /**
+ * Set element/attribute key/value pairs of HTML attributes
+ * containing URLs that need to be resolved relative to the feed
+ *
+ * @access public
+ * @since 1.0
+ * @param array $element_attribute Element/attribute key/value pairs
+ */
+ function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+ {
+ $this->sanitize->set_url_replacements($element_attribute);
+ }
+
+ /**
+ * Set the handler to enable the display of cached favicons.
+ *
+ * @access public
+ * @param str $page Web-accessible path to the handler_favicon.php file.
+ * @param str $qs The query string that the value should be passed to.
+ */
+ function set_favicon_handler($page = false, $qs = 'i')
+ {
+ if ($page != false)
+ {
+ $this->favicon_handler = $page . '?' . $qs . '=';
+ }
+ else
+ {
+ $this->favicon_handler = '';
+ }
+ }
+
+ /**
+ * Set the handler to enable the display of cached images.
+ *
+ * @access public
+ * @param str $page Web-accessible path to the handler_image.php file.
+ * @param str $qs The query string that the value should be passed to.
+ */
+ function set_image_handler($page = false, $qs = 'i')
+ {
+ if ($page != false)
+ {
+ $this->sanitize->set_image_handler($page . '?' . $qs . '=');
+ }
+ else
+ {
+ $this->image_handler = '';
+ }
+ }
+
+ function init()
+ {
+ if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.1.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre'))
+ {
+ return false;
+ }
+ if (isset($_GET[$this->javascript]))
+ {
+ if (function_exists('ob_gzhandler'))
+ {
+ ob_start('ob_gzhandler');
+ }
+ header('Content-type: text/javascript; charset: UTF-8');
+ header('Cache-Control: must-revalidate');
+ header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+ ?>
+function embed_odeo(link) {
+ document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>');
+}
+
+function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) {
+ if (placeholder != '') {
+ document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+ }
+ else {
+ document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>');
+ }
+}
+
+function embed_flash(bgcolor, width, height, link, loop, type) {
+ document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>');
+}
+
+function embed_flv(width, height, link, placeholder, loop, player) {
+ document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>');
+}
+
+function embed_wmedia(width, height, link) {
+ document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>');
+}
+ <?php
+ exit;
+ }
+
+ // Pass whatever was set with config options over to the sanitizer.
+ $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class);
+ $this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen);
+
+ if ($this->feed_url !== null || $this->raw_data !== null)
+ {
+ $this->data = array();
+ $this->multifeed_objects = array();
+ $cache = false;
+
+ if ($this->feed_url !== null)
+ {
+ $parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url);
+ // Decide whether to enable caching
+ if ($this->cache && $parsed_feed_url['scheme'] !== '')
+ {
+ $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc');
+ }
+ // If it's enabled and we don't want an XML dump, use the cache
+ if ($cache && !$this->xml_dump)
+ {
+ // Load the Cache
+ $this->data = $cache->load();
+ if (!empty($this->data))
+ {
+ // If the cache is for an outdated build of SimplePie
+ if (!isset($this->data['build']) || $this->data['build'] != SIMPLEPIE_BUILD)
+ {
+ $cache->unlink();
+ $this->data = array();
+ }
+ // If we've hit a collision just rerun it with caching disabled
+ elseif (isset($this->data['url']) && $this->data['url'] != $this->feed_url)
+ {
+ $cache = false;
+ $this->data = array();
+ }
+ // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL.
+ elseif (isset($this->data['feed_url']))
+ {
+ // If the autodiscovery cache is still valid use it.
+ if ($cache->mtime() + $this->autodiscovery_cache_duration > time())
+ {
+ // Do not need to do feed autodiscovery yet.
+ if ($this->data['feed_url'] == $this->data['url'])
+ {
+ $cache->unlink();
+ $this->data = array();
+ }
+ else
+ {
+ $this->set_feed_url($this->data['feed_url']);
+ return $this->init();
+ }
+ }
+ }
+ // Check if the cache has been updated
+ elseif ($cache->mtime() + $this->cache_duration < time())
+ {
+ // If we have last-modified and/or etag set
+ if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
+ {
+ $headers = array();
+ if (isset($this->data['headers']['last-modified']))
+ {
+ $headers['if-modified-since'] = $this->data['headers']['last-modified'];
+ }
+ if (isset($this->data['headers']['etag']))
+ {
+ $headers['if-none-match'] = $this->data['headers']['etag'];
+ }
+ $file =& new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen);
+ if ($file->success)
+ {
+ if ($file->status_code == 304)
+ {
+ $cache->touch();
+ return true;
+ }
+ else
+ {
+ $headers = $file->headers;
+ }
+ }
+ else
+ {
+ unset($file);
+ }
+ }
+ }
+ // If the cache is still valid, just return true
+ else
+ {
+ return true;
+ }
+ }
+ // If the cache is empty, delete it
+ else
+ {
+ $cache->unlink();
+ $this->data = array();
+ }
+ }
+ // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it.
+ if (!isset($file))
+ {
+ if (SimplePie_Misc::is_a($this->file, 'SimplePie_File') && $this->file->url == $this->feed_url)
+ {
+ $file =& $this->file;
+ }
+ else
+ {
+ $file =& new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen);
+ }
+ }
+ // If the file connection has an error, set SimplePie::error to that and quit
+ if (!$file->success)
+ {
+ $this->error = $file->error;
+ if (!empty($this->data))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ // Check if the supplied URL is a feed, if it isn't, look for it.
+ $locate =& new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds);
+ if (!$locate->is_feed($file))
+ {
+ // We need to unset this so that if SimplePie::set_file() has been called that object is untouched
+ unset($file);
+ if ($file = $locate->find($this->autodiscovery))
+ {
+ if ($cache)
+ {
+ if (!$cache->save(array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD)))
+ {
+ trigger_error("$cache->name is not writeable", E_USER_WARNING);
+ }
+ $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
+ }
+ $this->feed_url = $file->url;
+ }
+ else
+ {
+ $this->error = "A feed could not be found at $this->feed_url";
+ SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+ return false;
+ }
+ }
+ $locate = null;
+
+ $headers = $file->headers;
+ $data = trim($file->body);
+ unset($file);
+ }
+ else
+ {
+ $data = $this->raw_data;
+ }
+
+ // First check to see if input has been overridden.
+ if ($this->input_encoding !== false)
+ {
+ $encoding = $this->input_encoding;
+ }
+ // Second try HTTP headers
+ elseif (isset($headers['content-type']) && preg_match('/;[\x09\x20]*charset=([^;]*)/i', $headers['content-type'], $charset))
+ {
+ $encoding = $charset[1];
+ }
+ // Then prolog, if at the very start of the document
+ elseif (preg_match("/^<\?xml[\x20\x9\xD\xA]+version([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"1.0\"|'1.0'|\"1.1\"|'1.1')[\x20\x9\xD\xA]+encoding([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"[A-Za-z][A-Za-z0-9._\-]*\"|'[A-Za-z][A-Za-z0-9._\-]*')([\x20\x9\xD\xA]+standalone([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"(yes|no)\"|'(yes|no)'))?([\x20\x9\xD\xA]+)?\?>/", $data, $prolog))
+ {
+ $encoding = substr($prolog[6], 1, -1);
+ }
+ // UTF-32 Big Endian BOM
+ elseif (strpos($data, "\x0\x0\xFE\xFF") === 0)
+ {
+ $encoding = 'UTF-32be';
+ }
+ // UTF-32 Little Endian BOM
+ elseif (strpos($data, "\xFF\xFE\x0\x0") === 0)
+ {
+ $encoding = 'UTF-32';
+ }
+ // UTF-16 Big Endian BOM
+ elseif (strpos($data, "\xFE\xFF") === 0)
+ {
+ $encoding = 'UTF-16be';
+ }
+ // UTF-16 Little Endian BOM
+ elseif (strpos($data, "\xFF\xFE") === 0)
+ {
+ $encoding = 'UTF-16le';
+ }
+ // UTF-8 BOM
+ elseif (strpos($data, "\xEF\xBB\xBF") === 0)
+ {
+ $encoding = 'UTF-8';
+ }
+ // Fallback to the default (US-ASCII for text/xml, ISO-8859-1 for text/* MIME types, UTF-8 otherwise)
+ elseif (isset($headers['content-type']) && strtolower(SimplePie_Misc::parse_mime($headers['content-type'])) == 'text/xml')
+ {
+ $encoding = 'US-ASCII';
+ }
+ elseif (isset($headers['content-type']) && SimplePie_Misc::stripos(SimplePie_Misc::parse_mime($headers['content-type']), 'text/') === 0)
+ {
+ $encoding = 'ISO-8859-1';
+ }
+ else
+ {
+ $encoding = 'UTF-8';
+ }
+
+ // Change the encoding to UTF-8 (as we always use UTF-8 internally)
+ if ($encoding != 'UTF-8')
+ {
+ $data = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8');
+ }
+
+ // Strip illegal characters
+ $data = SimplePie_Misc::utf8_bad_replace($data);
+
+ $parser =& new $this->parser_class();
+ $parser->pre_process($data, 'UTF-8');
+ // If we want the XML, just output that and quit
+ if ($this->xml_dump)
+ {
+ header('Content-type: text/xml; charset=UTF-8');
+ echo $data;
+ exit;
+ }
+ // If it's parsed fine
+ elseif ($parser->parse($data))
+ {
+ unset($data);
+ $this->data = $parser->get_data();
+ if (isset($this->data['child']))
+ {
+ if (isset($headers))
+ {
+ $this->data['headers'] = $headers;
+ }
+ $this->data['build'] = SIMPLEPIE_BUILD;
+
+ // Cache the file if caching is enabled
+ if ($cache && !$cache->save($this->data))
+ {
+ trigger_error("$cache->name is not writeable", E_USER_WARNING);
+ }
+ return true;
+ }
+ else
+ {
+ $this->error = "A feed could not be found at $this->feed_url";
+ SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+ return false;
+ }
+ }
+ // If we have an error, just set SimplePie::error to it and quit
+ else
+ {
+ $this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
+ SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
+ return false;
+ }
+ }
+ elseif (!empty($this->multifeed_url))
+ {
+ $i = 0;
+ $success = 0;
+ $this->multifeed_objects = array();
+ foreach ($this->multifeed_url as $url)
+ {
+ if (SIMPLEPIE_PHP5)
+ {
+ // This keyword needs to defy coding standards for PHP4 compatibility
+ $this->multifeed_objects[$i] = clone($this);
+ }
+ else
+ {
+ $this->multifeed_objects[$i] = $this;
+ }
+ $this->multifeed_objects[$i]->set_feed_url($url);
+ $success |= $this->multifeed_objects[$i]->init();
+ $i++;
+ }
+ return (bool) $success;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ /**
+ * Return the error message for the occured error
+ *
+ * @access public
+ * @return string Error message
+ */
+ function error()
+ {
+ return $this->error;
+ }
+
+ function get_encoding()
+ {
+ return $this->sanitize->output_encoding;
+ }
+
+ function handle_content_type($mime = 'text/html')
+ {
+ if (!headers_sent())
+ {
+ $header = "Content-type: $mime;";
+ if ($this->get_encoding())
+ {
+ $header .= ' charset=' . $this->get_encoding();
+ }
+ else
+ {
+ $header .= ' charset=UTF-8';
+ }
+ header($header);
+ }
+ }
+
+ function get_type()
+ {
+ if (!isset($this->data['type']))
+ {
+ $this->data['type'] = SIMPLEPIE_TYPE_ALL;
+ if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed']))
+ {
+ $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10;
+ }
+ elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed']))
+ {
+ $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03;
+ }
+ elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF']))
+ {
+ if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel'])
+ || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image'])
+ || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item'])
+ || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput']))
+ {
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_10;
+ }
+ if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel'])
+ || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image'])
+ || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item'])
+ || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput']))
+ {
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_090;
+ }
+ }
+ elseif (isset($this->data['child']['']['rss']))
+ {
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL;
+ if (isset($this->data['child']['']['rss'][0]['attribs']['']['version']))
+ {
+ switch (trim($this->data['child']['']['rss'][0]['attribs']['']['version']))
+ {
+ case '0.91':
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091;
+ if (isset($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
+ {
+ switch (trim($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data']))
+ {
+ case '0':
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE;
+ break;
+
+ case '24':
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND;
+ break;
+ }
+ }
+ break;
+
+ case '0.92':
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_092;
+ break;
+
+ case '0.93':
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_093;
+ break;
+
+ case '0.94':
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_094;
+ break;
+
+ case '2.0':
+ $this->data['type'] &= SIMPLEPIE_TYPE_RSS_20;
+ break;
+ }
+ }
+ }
+ else
+ {
+ $this->data['type'] = SIMPLEPIE_TYPE_NONE;
+ }
+ }
+ return $this->data['type'];
+ }
+
+ /**
+ * Returns the URL for the favicon of the feed's website.
+ *
+ * @access public
+ * @since 1.0
+ */
+ function get_favicon()
+ {
+ if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ elseif (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url))
+ {
+ $favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url);
+
+ if ($this->cache && $this->favicon_handler)
+ {
+ $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $favicon), 'spi');
+
+ if ($cache->load())
+ {
+ return $this->sanitize($this->favicon_handler . rawurlencode($favicon), SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ $file =& new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
+
+ if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0)
+ {
+ if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+ {
+ return $this->sanitize($this->favicon_handler . rawurlencode($favicon), SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ trigger_error("$cache->name is not writeable", E_USER_WARNING);
+ return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ }
+ }
+ }
+ else
+ {
+ return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * @todo If we have a perm redirect we should return the new URL
+ * @todo When we make the above change, let's support <itunes:new-feed-url> as well
+ * @todo Also, |atom:link|@rel=self
+ */
+ function subscribe_url()
+ {
+ if ($this->feed_url !== null)
+ {
+ return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function subscribe_feed()
+ {
+ if ($this->feed_url !== null)
+ {
+ return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function subscribe_outlook()
+ {
+ if ($this->feed_url !== null)
+ {
+ return 'outlook' . $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function subscribe_podcast()
+ {
+ if ($this->feed_url !== null)
+ {
+ return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function subscribe_itunes()
+ {
+ if ($this->feed_url !== null)
+ {
+ return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Creates the subscribe_* methods' return data
+ *
+ * @access private
+ * @param string $feed_url String to prefix to the feed URL
+ * @param string $site_url String to prefix to the site URL (and
+ * suffix to the feed URL)
+ * @return mixed URL if feed exists, false otherwise
+ */
+ function subscribe_service($feed_url, $site_url = null)
+ {
+ if ($this->subscribe_url())
+ {
+ $return = $this->sanitize($feed_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->subscribe_url());
+ if ($site_url !== null && $this->get_link() !== null)
+ {
+ $return .= $this->sanitize($site_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_link());
+ }
+ return $return;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function subscribe_aol()
+ {
+ return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url=');
+ }
+
+ function subscribe_bloglines()
+ {
+ return urldecode($this->subscribe_service('http://www.bloglines.com/sub/'));
+ }
+
+ function subscribe_eskobo()
+ {
+ return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage=');
+ }
+
+ function subscribe_feedfeeds()
+ {
+ return $this->subscribe_service('http://www.feedfeeds.com/add?feed=');
+ }
+
+ function subscribe_feedster()
+ {
+ return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl=');
+ }
+
+ function subscribe_google()
+ {
+ return $this->subscribe_service('http://fusion.google.com/add?feedurl=');
+ }
+
+ function subscribe_gritwire()
+ {
+ return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl=');
+ }
+
+ function subscribe_msn()
+ {
+ return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru=');
+ }
+
+ function subscribe_netvibes()
+ {
+ return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url=');
+ }
+
+ function subscribe_newsburst()
+ {
+ return $this->subscribe_service('http://www.newsburst.com/Source/?add=');
+ }
+
+ function subscribe_newsgator()
+ {
+ return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url=');
+ }
+
+ function subscribe_odeo()
+ {
+ return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed=');
+ }
+
+ function subscribe_podnova()
+ {
+ return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url=');
+ }
+
+ function subscribe_rojo()
+ {
+ return $this->subscribe_service('http://www.rojo.com/add-subscription?resource=');
+ }
+
+ function subscribe_yahoo()
+ {
+ return $this->subscribe_service('http://add.my.yahoo.com/rss?url=');
+ }
+
+ function get_feed_tags($namespace, $tag)
+ {
+ $type = $this->get_type();
+ if ($type & SIMPLEPIE_TYPE_ATOM_10)
+ {
+ if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]))
+ {
+ return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag];
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_ATOM_03)
+ {
+ if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]))
+ {
+ return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag];
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_RSS_RDF)
+ {
+ if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]))
+ {
+ return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag];
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+ {
+ if (isset($this->data['child']['']['rss'][0]['child'][$namespace][$tag]))
+ {
+ return $this->data['child']['']['rss'][0]['child'][$namespace][$tag];
+ }
+ }
+ return null;
+ }
+
+ function get_channel_tags($namespace, $tag)
+ {
+ $type = $this->get_type();
+ if ($type & SIMPLEPIE_TYPE_ATOM_ALL)
+ {
+ if ($return = $this->get_feed_tags($namespace, $tag))
+ {
+ return $return;
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_RSS_10)
+ {
+ if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel'))
+ {
+ if (isset($channel[0]['child'][$namespace][$tag]))
+ {
+ return $channel[0]['child'][$namespace][$tag];
+ }
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_RSS_090)
+ {
+ if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel'))
+ {
+ if (isset($channel[0]['child'][$namespace][$tag]))
+ {
+ return $channel[0]['child'][$namespace][$tag];
+ }
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+ {
+ if ($channel = $this->get_feed_tags('', 'channel'))
+ {
+ if (isset($channel[0]['child'][$namespace][$tag]))
+ {
+ return $channel[0]['child'][$namespace][$tag];
+ }
+ }
+ }
+ return null;
+ }
+
+ function get_image_tags($namespace, $tag)
+ {
+ $type = $this->get_type();
+ if ($type & SIMPLEPIE_TYPE_RSS_10)
+ {
+ if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image'))
+ {
+ if (isset($image[0]['child'][$namespace][$tag]))
+ {
+ return $image[0]['child'][$namespace][$tag];
+ }
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_RSS_090)
+ {
+ if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image'))
+ {
+ if (isset($image[0]['child'][$namespace][$tag]))
+ {
+ return $image[0]['child'][$namespace][$tag];
+ }
+ }
+ }
+ if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION)
+ {
+ if ($image = $this->get_channel_tags('', 'image'))
+ {
+ if (isset($image[0]['child'][$namespace][$tag]))
+ {
+ return $image[0]['child'][$namespace][$tag];
+ }
+ }
+ }
+ return null;
+ }
+
+ function get_base($element = array())
+ {
+ if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base']))
+ {
+ return $element['xml_base'];
+ }
+ elseif ($this->get_link() !== null)
+ {
+ return $this->get_link();
+ }
+ elseif (isset($this->data['headers']['content-location']))
+ {
+ return SimplePie_Misc::absolutize_url($this->data['headers']['content-location'], $this->subscribe_url());
+ }
+ else
+ {
+ return $this->subscribe_url();
+ }
+ }
+
+ function sanitize($data, $type, $base = '')
+ {
+ return $this->sanitize->sanitize($data, $type, $base);
+ }
+
+ function get_title()
+ {
+ if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags('', 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_link($key = 0, $rel = 'alternate')
+ {
+ $links = $this->get_links($rel);
+ if (isset($links[$key]))
+ {
+ return $links[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Added for parity between the parent-level and the item/entry-level.
+ */
+ function get_permalink()
+ {
+ return $this->get_link(0);
+ }
+
+ function get_links($rel = 'alternate')
+ {
+ if (!isset($this->data['links']))
+ {
+ $this->data['links'] = array();
+ if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link'))
+ {
+ foreach ($links as $link)
+ {
+ if (isset($link['attribs']['']['href']))
+ {
+ $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+ $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+ }
+ }
+ }
+ if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link'))
+ {
+ foreach ($links as $link)
+ {
+ if (isset($link['attribs']['']['href']))
+ {
+ $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+ $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+ }
+ }
+ }
+ if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+ {
+ $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+ }
+ if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+ {
+ $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+ }
+ if ($links = $this->get_channel_tags('', 'link'))
+ {
+ $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+ }
+
+ $keys = array_keys($this->data['links']);
+ foreach ($keys as $key)
+ {
+ if (SimplePie_Misc::is_isegment_nz_nc($key))
+ {
+ if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+ {
+ $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+ $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+ }
+ else
+ {
+ $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ }
+ }
+ elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+ {
+ $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ }
+ $this->data['links'][$key] = array_unique($this->data['links'][$key]);
+ }
+ }
+
+ if (isset($this->data['links'][$rel]))
+ {
+ return $this->data['links'][$rel];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_description()
+ {
+ if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags('', 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_copyright()
+ {
+ if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags('', 'copyright'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_language()
+ {
+ if ($return = $this->get_channel_tags('', 'language'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang']))
+ {
+ return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang']))
+ {
+ return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang']))
+ {
+ return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (isset($this->data['headers']['content-language']))
+ {
+ return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_latitude()
+ {
+ if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+ {
+ return (float) $return[0]['data'];
+ }
+ elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+ {
+ return (float) $match[1];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_longitude()
+ {
+ if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+ {
+ return (float) $return[0]['data'];
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+ {
+ return (float) $return[0]['data'];
+ }
+ elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+ {
+ return (float) $match[2];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_image_title()
+ {
+ if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_image_tags('', 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_image_url()
+ {
+ if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image'))
+ {
+ return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_image_tags('', 'url'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_image_link()
+ {
+ if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_image_tags('', 'link'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_image_width()
+ {
+ if ($return = $this->get_image_tags('', 'width'))
+ {
+ return round($return[0]['data']);
+ }
+ elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+ {
+ return 88.0;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_image_height()
+ {
+ if ($return = $this->get_image_tags('', 'height'))
+ {
+ return round($return[0]['data']);
+ }
+ elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url'))
+ {
+ return 31.0;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_item_quantity($max = 0)
+ {
+ $qty = count($this->get_items());
+ if ($max == 0)
+ {
+ return $qty;
+ }
+ else
+ {
+ return ($qty > $max) ? $max : $qty;
+ }
+ }
+
+ function get_item($key = 0)
+ {
+ $items = $this->get_items();
+ if (isset($items[$key]))
+ {
+ return $items[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_items($start = 0, $end = 0)
+ {
+ if (!empty($this->multifeed_objects))
+ {
+ return SimplePie::merge_items($this->multifeed_objects, $start, $end);
+ }
+ elseif (!isset($this->data['items']))
+ {
+ if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
+ {
+ $keys = array_keys($items);
+ foreach ($keys as $key)
+ {
+ $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+ }
+ }
+ if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
+ {
+ $keys = array_keys($items);
+ foreach ($keys as $key)
+ {
+ $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+ }
+ }
+ if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
+ {
+ $keys = array_keys($items);
+ foreach ($keys as $key)
+ {
+ $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+ }
+ }
+ if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
+ {
+ $keys = array_keys($items);
+ foreach ($keys as $key)
+ {
+ $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+ }
+ }
+ if ($items = $this->get_channel_tags('', 'item'))
+ {
+ $keys = array_keys($items);
+ foreach ($keys as $key)
+ {
+ $this->data['items'][] =& new $this->item_class($this, $items[$key]);
+ }
+ }
+ }
+
+ if (!empty($this->data['items']))
+ {
+ // If we want to order it by date, check if all items have a date, and then sort it
+ if ($this->order_by_date)
+ {
+ if (!isset($this->data['ordered_items']))
+ {
+ $do_sort = true;
+ foreach ($this->data['items'] as $item)
+ {
+ if (!$item->get_date('U'))
+ {
+ $do_sort = false;
+ break;
+ }
+ }
+ $item = null;
+ $this->data['ordered_items'] = $this->data['items'];
+ if ($do_sort)
+ {
+ usort($this->data['ordered_items'], array(&$this, 'sort_items'));
+ }
+ }
+ $items = $this->data['ordered_items'];
+ }
+ else
+ {
+ $items = $this->data['items'];
+ }
+
+ // Slice the data as desired
+ if ($end == 0)
+ {
+ return array_slice($items, $start);
+ }
+ else
+ {
+ return array_slice($items, $start, $end);
+ }
+ }
+ else
+ {
+ return array();
+ }
+ }
+
+ function sort_items($a, $b)
+ {
+ return $a->get_date('U') <= $b->get_date('U');
+ }
+
+ function merge_items($urls, $start = 0, $end = 0)
+ {
+ if (is_array($urls) && sizeof($urls) > 0)
+ {
+ $items = array();
+ foreach ($urls as $arg)
+ {
+ if (SimplePie_Misc::is_a($arg, 'SimplePie'))
+ {
+ $items = array_merge($items, $arg->get_items());
+ }
+ else
+ {
+ trigger_error('Arguments must be SimplePie objects', E_USER_WARNING);
+ }
+ }
+
+ $do_sort = true;
+ foreach ($items as $item)
+ {
+ if (!$item->get_date('U'))
+ {
+ $do_sort = false;
+ break;
+ }
+ }
+ $item = null;
+ if ($do_sort)
+ {
+ usort($items, array('SimplePie', 'sort_items'));
+ }
+
+ if ($end == 0)
+ {
+ return array_slice($items, $start);
+ }
+ else
+ {
+ return array_slice($items, $start, $end);
+ }
+ }
+ else
+ {
+ trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING);
+ return array();
+ }
+ }
+}
+
+class SimplePie_Item
+{
+ var $feed;
+ var $data = array();
+
+ function SimplePie_Item($feed, $data)
+ {
+ $this->feed = $feed;
+ $this->data = $data;
+ }
+
+ function __toString()
+ {
+ return md5(serialize($this->data));
+ }
+
+ function get_item_tags($namespace, $tag)
+ {
+ if (isset($this->data['child'][$namespace][$tag]))
+ {
+ return $this->data['child'][$namespace][$tag];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_base($element = array())
+ {
+ return $this->feed->get_base($element);
+ }
+
+ function sanitize($data, $type, $base = '')
+ {
+ return $this->feed->sanitize($data, $type, $base);
+ }
+
+ function get_feed()
+ {
+ return $this->feed;
+ }
+
+ function get_id($hash = false)
+ {
+ if ($hash)
+ {
+ return $this->__toString();
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_item_tags('', 'guid'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (($return = $this->get_permalink()) !== null)
+ {
+ return $return;
+ }
+ elseif (($return = $this->get_title()) !== null)
+ {
+ return $return;
+ }
+ else
+ {
+ return $this->__toString();
+ }
+ }
+
+ function get_title()
+ {
+ if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags('', 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_description($description_only = false)
+ {
+ if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags('', 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (!$description_only)
+ {
+ return $this->get_content(true);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_content($content_only = false)
+ {
+ if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
+ {
+ return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0]));
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
+ {
+ return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
+ }
+ elseif (!$content_only)
+ {
+ return $this->get_description(true);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_category($key = 0)
+ {
+ $categories = $this->get_categories();
+ if (isset($categories[$key]))
+ {
+ return $categories[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_categories()
+ {
+ $categories = array();
+
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
+ {
+ $term = null;
+ $scheme = null;
+ $label = null;
+ if (isset($category['attribs']['']['term']))
+ {
+ $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($category['attribs']['']['scheme']))
+ {
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($category['attribs']['']['label']))
+ {
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories[] =& new $this->feed->category_class($term, $scheme, $label);
+ }
+ foreach ((array) $this->get_item_tags('', 'category') as $category)
+ {
+ $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+ }
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
+ {
+ $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+ }
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
+ {
+ $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+ }
+
+ if (!empty($categories))
+ {
+ return SimplePie_Misc::array_unique($categories);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_author($key = 0)
+ {
+ $authors = $this->get_authors();
+ if (isset($authors[$key]))
+ {
+ return $authors[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * @todo Atom inheritance (item author, source author, feed author)
+ */
+ function get_authors()
+ {
+ $authors = array();
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)
+ {
+ $name = null;
+ $uri = null;
+ $email = null;
+ if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))
+ {
+ $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))
+ {
+ $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));
+ }
+ if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))
+ {
+ $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if ($name !== null || $email !== null || $uri !== null)
+ {
+ $authors[] =& new $this->feed->author_class($name, $uri, $email);
+ }
+ }
+ if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))
+ {
+ $name = null;
+ $url = null;
+ $email = null;
+ if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))
+ {
+ $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))
+ {
+ $uri = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));
+ }
+ if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))
+ {
+ $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if ($name !== null || $email !== null || $uri !== null)
+ {
+ $authors[] =& new $this->feed->author_class($name, $url, $email);
+ }
+ }
+ if ($author = $this->get_item_tags('', 'author'))
+ {
+ $authors[] =& new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ }
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)
+ {
+ $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+ }
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)
+ {
+ $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+ }
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)
+ {
+ $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null);
+ }
+
+ if (!empty($authors))
+ {
+ return SimplePie_Misc::array_unique($authors);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_date($date_format = 'j F Y, g:i a')
+ {
+ if (!isset($this->data['date']))
+ {
+ if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags('', 'pubDate'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
+ {
+ $this->data['date']['raw'] = $return[0]['data'];
+ }
+
+ if (!empty($this->data['date']['raw']))
+ {
+ $this->data['date']['parsed'] = SimplePie_Misc::parse_date($this->data['date']['raw']);
+ }
+ else
+ {
+ $this->data['date'] = null;
+ }
+ }
+ if ($this->data['date'])
+ {
+ $date_format = (string) $date_format;
+ switch ($date_format)
+ {
+ case '':
+ return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);
+
+ case 'U':
+ return $this->data['date']['parsed'];
+
+ default:
+ return date($date_format, $this->data['date']['parsed']);
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_local_date($date_format = '%c')
+ {
+ if (!$date_format)
+ {
+ return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (($date = $this->get_date('U')) !== null)
+ {
+ return strftime($date_format, $date);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_permalink()
+ {
+ $link = $this->get_link();
+ $enclosure = $this->get_enclosure(0);
+ if ($link !== null)
+ {
+ return $link;
+ }
+ elseif ($enclosure !== null)
+ {
+ return $enclosure->get_link();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_link($key = 0, $rel = 'alternate')
+ {
+ $links = $this->get_links($rel);
+ if ($links[$key] !== null)
+ {
+ return $links[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_links($rel = 'alternate')
+ {
+ if (!isset($this->data['links']))
+ {
+ $this->data['links'] = array();
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+ {
+ if (isset($link['attribs']['']['href']))
+ {
+ $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+ $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+
+ }
+ }
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+ {
+ if (isset($link['attribs']['']['href']))
+ {
+ $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';
+ $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+ }
+ }
+ if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))
+ {
+ $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+ }
+ if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))
+ {
+ $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+ }
+ if ($links = $this->get_item_tags('', 'link'))
+ {
+ $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+ }
+ if ($links = $this->get_item_tags('', 'guid'))
+ {
+ if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) == 'true')
+ {
+ $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));
+ }
+ }
+
+ $keys = array_keys($this->data['links']);
+ foreach ($keys as $key)
+ {
+ if (SimplePie_Misc::is_isegment_nz_nc($key))
+ {
+ if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))
+ {
+ $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);
+ $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];
+ }
+ else
+ {
+ $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];
+ }
+ }
+ elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)
+ {
+ $this->data['links'][substr($key, 41)] =& $this->data['links'][$key];
+ }
+ $this->data['links'][$key] = array_unique($this->data['links'][$key]);
+ }
+ }
+ if (isset($this->data['links'][$rel]))
+ {
+ return $this->data['links'][$rel];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * @todo Add ability to prefer one type of content over another (in a media group).
+ */
+ function get_enclosure($key = 0, $prefer = null)
+ {
+ $enclosures = $this->get_enclosures();
+ if (isset($enclosures[$key]))
+ {
+ return $enclosures[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Grabs all available enclosures (podcasts, etc.)
+ *
+ * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.
+ *
+ * At this point, we're pretty much assuming that all enclosures for an item are the same content. Anything else is too complicated to properly support.
+ *
+ * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
+ * @todo Add support for itunes: tags. These should be relatively simple compared to media:.
+ * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
+ */
+ function get_enclosures()
+ {
+ if (!isset($this->data['enclosures']))
+ {
+ $this->data['enclosures'] = array();
+
+ // Elements
+ $captions_parent = null;
+ $categories_parent = null;
+ $copyrights_parent = null;
+ $credits_parent = null;
+ $description_parent = null;
+ $duration_parent = null;
+ $hashes_parent = null;
+ $keywords_parent = null;
+ $player_parent = null;
+ $ratings_parent = null;
+ $restrictions_parent = null;
+ $thumbnails_parent = null;
+ $title_parent = null;
+
+ // Let's do the channel and item-level ones first, and just re-use them if we need to.
+ $parent = $this->get_feed();
+
+ // CAPTIONS
+ if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+ {
+ foreach ($captions as $caption)
+ {
+ $caption_type = null;
+ $caption_lang = null;
+ $caption_startTime = null;
+ $caption_endTime = null;
+ $caption_text = null;
+ if (isset($caption['attribs']['']['type']))
+ {
+ $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['lang']))
+ {
+ $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['start']))
+ {
+ $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['end']))
+ {
+ $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['data']))
+ {
+ $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+ }
+ }
+ elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))
+ {
+ foreach ($captions as $caption)
+ {
+ $caption_type = null;
+ $caption_lang = null;
+ $caption_startTime = null;
+ $caption_endTime = null;
+ $caption_text = null;
+ if (isset($caption['attribs']['']['type']))
+ {
+ $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['lang']))
+ {
+ $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['start']))
+ {
+ $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['end']))
+ {
+ $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['data']))
+ {
+ $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+ }
+ }
+ if (is_array($captions_parent))
+ {
+ $captions_parent = array_values(SimplePie_Misc::array_unique($captions_parent));
+ }
+
+ // CATEGORIES
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+ {
+ $term = null;
+ $scheme = null;
+ $label = null;
+ if (isset($category['data']))
+ {
+ $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($category['attribs']['']['scheme']))
+ {
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $scheme = 'http://search.yahoo.com/mrss/category_schema';
+ }
+ if (isset($category['attribs']['']['label']))
+ {
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+ }
+ foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)
+ {
+ $term = null;
+ $scheme = null;
+ $label = null;
+ if (isset($category['data']))
+ {
+ $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($category['attribs']['']['scheme']))
+ {
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $scheme = 'http://search.yahoo.com/mrss/category_schema';
+ }
+ if (isset($category['attribs']['']['label']))
+ {
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+ }
+ foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)
+ {
+ $term = null;
+ $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
+ $label = null;
+ if (isset($category['attribs']['']['text']))
+ {
+ $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+
+ if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))
+ {
+ foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)
+ {
+ if (isset($subcategory['attribs']['']['text']))
+ {
+ $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label);
+ }
+ }
+ }
+ if (is_array($categories_parent))
+ {
+ $categories_parent = array_values(SimplePie_Misc::array_unique($categories_parent));
+ }
+
+ // COPYRIGHT
+ if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+ {
+ $copyright_url = null;
+ $copyright_label = null;
+ if (isset($copyright[0]['attribs']['']['url']))
+ {
+ $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($copyright[0]['data']))
+ {
+ $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+ }
+ elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))
+ {
+ $copyright_url = null;
+ $copyright_label = null;
+ if (isset($copyright[0]['attribs']['']['url']))
+ {
+ $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($copyright[0]['data']))
+ {
+ $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+ }
+
+ // CREDITS
+ if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+ {
+ foreach ($credits as $credit)
+ {
+ $credit_role = null;
+ $credit_scheme = null;
+ $credit_name = null;
+ if (isset($credit['attribs']['']['role']))
+ {
+ $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($credit['attribs']['']['scheme']))
+ {
+ $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $credit_scheme = 'urn:ebu';
+ }
+ if (isset($credit['data']))
+ {
+ $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+ }
+ }
+ elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))
+ {
+ foreach ($credits as $credit)
+ {
+ $credit_role = null;
+ $credit_scheme = null;
+ $credit_name = null;
+ if (isset($credit['attribs']['']['role']))
+ {
+ $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($credit['attribs']['']['scheme']))
+ {
+ $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $credit_scheme = 'urn:ebu';
+ }
+ if (isset($credit['data']))
+ {
+ $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+ }
+ }
+ if (is_array($credits_parent))
+ {
+ $credits_parent = array_values(SimplePie_Misc::array_unique($credits_parent));
+ }
+
+ // DESCRIPTION
+ if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+ {
+ if (isset($description_parent[0]['data']))
+ {
+ $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ }
+ elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))
+ {
+ if (isset($description_parent[0]['data']))
+ {
+ $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ }
+
+ // DURATION
+ if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))
+ {
+ $seconds = null;
+ $minutes = null;
+ $hours = null;
+ if (isset($duration_parent[0]['data']))
+ {
+ $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ if (sizeof($temp) > 0)
+ {
+ (int) $seconds = array_pop($temp);
+ }
+ if (sizeof($temp) > 0)
+ {
+ (int) $minutes = array_pop($temp);
+ $seconds += $minutes * 60;
+ }
+ if (sizeof($temp) > 0)
+ {
+ (int) $hours = array_pop($temp);
+ $seconds += $hours * 3600;
+ }
+ unset($temp);
+ $duration_parent = $seconds;
+ }
+ }
+
+ // HASHES
+ if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+ {
+ foreach ($hashes_iterator as $hash)
+ {
+ $value = null;
+ $algo = null;
+ if (isset($hash['data']))
+ {
+ $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($hash['attribs']['']['algo']))
+ {
+ $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $algo = 'md5';
+ }
+ $hashes_parent[] = $algo.':'.$value;
+ }
+ }
+ elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))
+ {
+ foreach ($hashes_iterator as $hash)
+ {
+ $value = null;
+ $algo = null;
+ if (isset($hash['data']))
+ {
+ $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($hash['attribs']['']['algo']))
+ {
+ $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $algo = 'md5';
+ }
+ $hashes_parent[] = $algo.':'.$value;
+ }
+ }
+ if (is_array($hashes_parent))
+ {
+ $hashes_parent = array_values(SimplePie_Misc::array_unique($hashes_parent));
+ }
+
+ // KEYWORDS
+ if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+ {
+ if (isset($keywords[0]['data']))
+ {
+ $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ foreach ($temp as $word)
+ {
+ $keywords_parent[] = trim($word);
+ }
+ }
+ unset($temp);
+ }
+ elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+ {
+ if (isset($keywords[0]['data']))
+ {
+ $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ foreach ($temp as $word)
+ {
+ $keywords_parent[] = trim($word);
+ }
+ }
+ unset($temp);
+ }
+ elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))
+ {
+ if (isset($keywords[0]['data']))
+ {
+ $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ foreach ($temp as $word)
+ {
+ $keywords_parent[] = trim($word);
+ }
+ }
+ unset($temp);
+ }
+ elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))
+ {
+ if (isset($keywords[0]['data']))
+ {
+ $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ foreach ($temp as $word)
+ {
+ $keywords_parent[] = trim($word);
+ }
+ }
+ unset($temp);
+ }
+ if (is_array($keywords_parent))
+ {
+ $keywords_parent = array_values(SimplePie_Misc::array_unique($keywords_parent));
+ }
+
+ // PLAYER
+ if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+ {
+ if (isset($player_parent[0]['attribs']['']['url']))
+ {
+ $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ }
+ elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))
+ {
+ if (isset($player_parent[0]['attribs']['']['url']))
+ {
+ $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ }
+
+ // RATINGS
+ if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+ {
+ foreach ($ratings as $rating)
+ {
+ $rating_scheme = null;
+ $rating_value = null;
+ if (isset($rating['attribs']['']['scheme']))
+ {
+ $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $rating_scheme = 'urn:simple';
+ }
+ if (isset($rating['data']))
+ {
+ $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+ }
+ }
+ elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+ {
+ foreach ($ratings as $rating)
+ {
+ $rating_scheme = 'urn:itunes';
+ $rating_value = null;
+ if (isset($rating['data']))
+ {
+ $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+ }
+ }
+ elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))
+ {
+ foreach ($ratings as $rating)
+ {
+ $rating_scheme = null;
+ $rating_value = null;
+ if (isset($rating['attribs']['']['scheme']))
+ {
+ $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $rating_scheme = 'urn:simple';
+ }
+ if (isset($rating['data']))
+ {
+ $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+ }
+ }
+ elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))
+ {
+ foreach ($ratings as $rating)
+ {
+ $rating_scheme = 'urn:itunes';
+ $rating_value = null;
+ if (isset($rating['data']))
+ {
+ $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+ }
+ }
+ if (is_array($ratings_parent))
+ {
+ $ratings_parent = array_values(SimplePie_Misc::array_unique($ratings_parent));
+ }
+
+ // RESTRICTIONS
+ if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+ {
+ foreach ($restrictions as $restriction)
+ {
+ $restriction_relationship = null;
+ $restriction_type = null;
+ $restriction_value = null;
+ if (isset($restriction['attribs']['']['relationship']))
+ {
+ $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['attribs']['']['type']))
+ {
+ $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['data']))
+ {
+ $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+ }
+ }
+ elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+ {
+ foreach ($restrictions as $restriction)
+ {
+ $restriction_relationship = 'allow';
+ $restriction_type = null;
+ $restriction_value = 'itunes';
+ if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
+ {
+ $restriction_relationship = 'deny';
+ }
+ $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+ }
+ }
+ elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))
+ {
+ foreach ($restrictions as $restriction)
+ {
+ $restriction_relationship = null;
+ $restriction_type = null;
+ $restriction_value = null;
+ if (isset($restriction['attribs']['']['relationship']))
+ {
+ $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['attribs']['']['type']))
+ {
+ $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['data']))
+ {
+ $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+ }
+ }
+ elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))
+ {
+ foreach ($restrictions as $restriction)
+ {
+ $restriction_relationship = 'allow';
+ $restriction_type = null;
+ $restriction_value = 'itunes';
+ if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes')
+ {
+ $restriction_relationship = 'deny';
+ }
+ $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+ }
+ }
+ if (is_array($restrictions_parent))
+ {
+ $restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent));
+ }
+
+ // THUMBNAILS
+ if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+ {
+ foreach ($thumbnails as $thumbnail)
+ {
+ if (isset($thumbnail['attribs']['']['url']))
+ {
+ $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ }
+ }
+ elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+ {
+ foreach ($thumbnails as $thumbnail)
+ {
+ if (isset($thumbnail['attribs']['']['url']))
+ {
+ $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ }
+ }
+
+ // TITLES
+ if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+ {
+ if (isset($title_parent[0]['data']))
+ {
+ $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ }
+ elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))
+ {
+ if (isset($title_parent[0]['data']))
+ {
+ $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ }
+
+ // Clear the memory
+ unset($parent);
+
+ // If we have media:group tags, loop through them.
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
+ {
+ // If we have media:content tags, loop through them.
+ foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+ {
+ if (isset($content['attribs']['']['url']))
+ {
+ // Attributes
+ $bitrate = null;
+ $channels = null;
+ $duration = null;
+ $expression = null;
+ $framerate = null;
+ $height = null;
+ $javascript = null;
+ $lang = null;
+ $length = null;
+ $medium = null;
+ $samplingrate = null;
+ $type = null;
+ $url = null;
+ $width = null;
+
+ // Elements
+ $captions = null;
+ $categories = null;
+ $copyrights = null;
+ $credits = null;
+ $description = null;
+ $hashes = null;
+ $keywords = null;
+ $player = null;
+ $ratings = null;
+ $restrictions = null;
+ $thumbnails = null;
+ $title = null;
+
+ // Start checking the attributes of media:content
+ if (isset($content['attribs']['']['bitrate']))
+ {
+ $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['channels']))
+ {
+ $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['duration']))
+ {
+ $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $duration = $duration_parent;
+ }
+ if (isset($content['attribs']['']['expression']))
+ {
+ $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['framerate']))
+ {
+ $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['height']))
+ {
+ $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['lang']))
+ {
+ $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['fileSize']))
+ {
+ $length = ceil($content['attribs']['']['fileSize']);
+ }
+ if (isset($content['attribs']['']['medium']))
+ {
+ $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['samplingrate']))
+ {
+ $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['type']))
+ {
+ $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['width']))
+ {
+ $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+
+ // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+ // CAPTIONS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+ {
+ $caption_type = null;
+ $caption_lang = null;
+ $caption_startTime = null;
+ $caption_endTime = null;
+ $caption_text = null;
+ if (isset($caption['attribs']['']['type']))
+ {
+ $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['lang']))
+ {
+ $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['start']))
+ {
+ $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['end']))
+ {
+ $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['data']))
+ {
+ $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+ }
+ if (is_array($captions))
+ {
+ $captions = array_values(SimplePie_Misc::array_unique($captions));
+ }
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+ {
+ foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+ {
+ $caption_type = null;
+ $caption_lang = null;
+ $caption_startTime = null;
+ $caption_endTime = null;
+ $caption_text = null;
+ if (isset($caption['attribs']['']['type']))
+ {
+ $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['lang']))
+ {
+ $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['start']))
+ {
+ $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['end']))
+ {
+ $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['data']))
+ {
+ $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+ }
+ if (is_array($captions))
+ {
+ $captions = array_values(SimplePie_Misc::array_unique($captions));
+ }
+ }
+ else
+ {
+ $captions = $captions_parent;
+ }
+
+ // CATEGORIES
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+ {
+ foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+ {
+ $term = null;
+ $scheme = null;
+ $label = null;
+ if (isset($category['data']))
+ {
+ $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($category['attribs']['']['scheme']))
+ {
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $scheme = 'http://search.yahoo.com/mrss/category_schema';
+ }
+ if (isset($category['attribs']['']['label']))
+ {
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories[] =& new $this->feed->category_class($term, $scheme, $label);
+ }
+ }
+ if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+ {
+ foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+ {
+ $term = null;
+ $scheme = null;
+ $label = null;
+ if (isset($category['data']))
+ {
+ $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($category['attribs']['']['scheme']))
+ {
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $scheme = 'http://search.yahoo.com/mrss/category_schema';
+ }
+ if (isset($category['attribs']['']['label']))
+ {
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories[] =& new $this->feed->category_class($term, $scheme, $label);
+ }
+ }
+ if (is_array($categories) && is_array($categories_parent))
+ {
+ $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+ }
+ elseif (is_array($categories))
+ {
+ $categories = array_values(SimplePie_Misc::array_unique($categories));
+ }
+ elseif (is_array($categories_parent))
+ {
+ $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
+ }
+
+ // COPYRIGHTS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+ {
+ $copyright_url = null;
+ $copyright_label = null;
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+ {
+ $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+ {
+ $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+ {
+ $copyright_url = null;
+ $copyright_label = null;
+ if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+ {
+ $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+ {
+ $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+ }
+ else
+ {
+ $copyrights = $copyrights_parent;
+ }
+
+ // CREDITS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+ {
+ $credit_role = null;
+ $credit_scheme = null;
+ $credit_name = null;
+ if (isset($credit['attribs']['']['role']))
+ {
+ $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($credit['attribs']['']['scheme']))
+ {
+ $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $credit_scheme = 'urn:ebu';
+ }
+ if (isset($credit['data']))
+ {
+ $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+ }
+ if (is_array($credits))
+ {
+ $credits = array_values(SimplePie_Misc::array_unique($credits));
+ }
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+ {
+ foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+ {
+ $credit_role = null;
+ $credit_scheme = null;
+ $credit_name = null;
+ if (isset($credit['attribs']['']['role']))
+ {
+ $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($credit['attribs']['']['scheme']))
+ {
+ $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $credit_scheme = 'urn:ebu';
+ }
+ if (isset($credit['data']))
+ {
+ $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+ }
+ if (is_array($credits))
+ {
+ $credits = array_values(SimplePie_Misc::array_unique($credits));
+ }
+ }
+ else
+ {
+ $credits = $credits_parent;
+ }
+
+ // DESCRIPTION
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+ {
+ $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+ {
+ $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $description = $description_parent;
+ }
+
+ // HASHES
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+ {
+ $value = null;
+ $algo = null;
+ if (isset($hash['data']))
+ {
+ $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($hash['attribs']['']['algo']))
+ {
+ $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $algo = 'md5';
+ }
+ $hashes[] = $algo.':'.$value;
+ }
+ if (is_array($hashes))
+ {
+ $hashes = array_values(SimplePie_Misc::array_unique($hashes));
+ }
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+ {
+ foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+ {
+ $value = null;
+ $algo = null;
+ if (isset($hash['data']))
+ {
+ $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($hash['attribs']['']['algo']))
+ {
+ $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $algo = 'md5';
+ }
+ $hashes[] = $algo.':'.$value;
+ }
+ if (is_array($hashes))
+ {
+ $hashes = array_values(SimplePie_Misc::array_unique($hashes));
+ }
+ }
+ else
+ {
+ $hashes = $hashes_parent;
+ }
+
+ // KEYWORDS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+ {
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+ {
+ $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ foreach ($temp as $word)
+ {
+ $keywords[] = trim($word);
+ }
+ unset($temp);
+ }
+ if (is_array($keywords))
+ {
+ $keywords = array_values(SimplePie_Misc::array_unique($keywords));
+ }
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+ {
+ if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+ {
+ $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ foreach ($temp as $word)
+ {
+ $keywords[] = trim($word);
+ }
+ unset($temp);
+ }
+ if (is_array($keywords))
+ {
+ $keywords = array_values(SimplePie_Misc::array_unique($keywords));
+ }
+ }
+ else
+ {
+ $keywords = $keywords_parent;
+ }
+
+ // PLAYER
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+ {
+ $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+ {
+ $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ $player = $player_parent;
+ }
+
+ // RATINGS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+ {
+ $rating_scheme = null;
+ $rating_value = null;
+ if (isset($rating['attribs']['']['scheme']))
+ {
+ $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $rating_scheme = 'urn:simple';
+ }
+ if (isset($rating['data']))
+ {
+ $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+ }
+ if (is_array($ratings))
+ {
+ $ratings = array_values(SimplePie_Misc::array_unique($ratings));
+ }
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+ {
+ foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+ {
+ $rating_scheme = null;
+ $rating_value = null;
+ if (isset($rating['attribs']['']['scheme']))
+ {
+ $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $rating_scheme = 'urn:simple';
+ }
+ if (isset($rating['data']))
+ {
+ $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+ }
+ if (is_array($ratings))
+ {
+ $ratings = array_values(SimplePie_Misc::array_unique($ratings));
+ }
+ }
+ else
+ {
+ $ratings = $ratings_parent;
+ }
+
+ // RESTRICTIONS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+ {
+ $restriction_relationship = null;
+ $restriction_type = null;
+ $restriction_value = null;
+ if (isset($restriction['attribs']['']['relationship']))
+ {
+ $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['attribs']['']['type']))
+ {
+ $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['data']))
+ {
+ $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+ }
+ if (is_array($restrictions))
+ {
+ $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+ }
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+ {
+ foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+ {
+ $restriction_relationship = null;
+ $restriction_type = null;
+ $restriction_value = null;
+ if (isset($restriction['attribs']['']['relationship']))
+ {
+ $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['attribs']['']['type']))
+ {
+ $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['data']))
+ {
+ $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+ }
+ if (is_array($restrictions))
+ {
+ $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+ }
+ }
+ else
+ {
+ $restrictions = $restrictions_parent;
+ }
+
+ // THUMBNAILS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+ {
+ $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ if (is_array($thumbnails))
+ {
+ $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+ }
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+ {
+ foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+ {
+ $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ if (is_array($thumbnails))
+ {
+ $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+ }
+ }
+ else
+ {
+ $thumbnails = $thumbnails_parent;
+ }
+
+ // TITLES
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+ {
+ $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+ {
+ $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $title = $title_parent;
+ }
+
+ $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
+ }
+ }
+ }
+
+ // If we have standalone media:content tags, loop through them.
+ if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
+ {
+ foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
+ {
+ if (isset($content['attribs']['']['url']))
+ {
+ // Attributes
+ $bitrate = null;
+ $channels = null;
+ $duration = null;
+ $expression = null;
+ $framerate = null;
+ $height = null;
+ $javascript = null;
+ $lang = null;
+ $length = null;
+ $medium = null;
+ $samplingrate = null;
+ $type = null;
+ $url = null;
+ $width = null;
+
+ // Elements
+ $captions = null;
+ $categories = null;
+ $copyrights = null;
+ $credits = null;
+ $description = null;
+ $hashes = null;
+ $keywords = null;
+ $player = null;
+ $ratings = null;
+ $restrictions = null;
+ $thumbnails = null;
+ $title = null;
+
+ // Start checking the attributes of media:content
+ if (isset($content['attribs']['']['bitrate']))
+ {
+ $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['channels']))
+ {
+ $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['duration']))
+ {
+ $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $duration = $duration_parent;
+ }
+ if (isset($content['attribs']['']['expression']))
+ {
+ $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['framerate']))
+ {
+ $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['height']))
+ {
+ $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['lang']))
+ {
+ $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['fileSize']))
+ {
+ $length = ceil($content['attribs']['']['fileSize']);
+ }
+ if (isset($content['attribs']['']['medium']))
+ {
+ $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['samplingrate']))
+ {
+ $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['type']))
+ {
+ $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['attribs']['']['width']))
+ {
+ $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+
+ // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
+
+ // CAPTIONS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
+ {
+ $caption_type = null;
+ $caption_lang = null;
+ $caption_startTime = null;
+ $caption_endTime = null;
+ $caption_text = null;
+ if (isset($caption['attribs']['']['type']))
+ {
+ $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['lang']))
+ {
+ $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['start']))
+ {
+ $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['attribs']['']['end']))
+ {
+ $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($caption['data']))
+ {
+ $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
+ }
+ if (is_array($captions))
+ {
+ $captions = array_values(SimplePie_Misc::array_unique($captions));
+ }
+ }
+ else
+ {
+ $captions = $captions_parent;
+ }
+
+ // CATEGORIES
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
+ {
+ foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
+ {
+ $term = null;
+ $scheme = null;
+ $label = null;
+ if (isset($category['data']))
+ {
+ $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($category['attribs']['']['scheme']))
+ {
+ $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $scheme = 'http://search.yahoo.com/mrss/category_schema';
+ }
+ if (isset($category['attribs']['']['label']))
+ {
+ $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $categories[] =& new $this->feed->category_class($term, $scheme, $label);
+ }
+ }
+ if (is_array($categories) && is_array($categories_parent))
+ {
+ $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
+ }
+ elseif (is_array($categories))
+ {
+ $categories = array_values(SimplePie_Misc::array_unique($categories));
+ }
+ elseif (is_array($categories_parent))
+ {
+ $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
+ }
+ else
+ {
+ $categories = null;
+ }
+
+ // COPYRIGHTS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
+ {
+ $copyright_url = null;
+ $copyright_label = null;
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
+ {
+ $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
+ {
+ $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
+ }
+ else
+ {
+ $copyrights = $copyrights_parent;
+ }
+
+ // CREDITS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
+ {
+ $credit_role = null;
+ $credit_scheme = null;
+ $credit_name = null;
+ if (isset($credit['attribs']['']['role']))
+ {
+ $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($credit['attribs']['']['scheme']))
+ {
+ $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $credit_scheme = 'urn:ebu';
+ }
+ if (isset($credit['data']))
+ {
+ $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
+ }
+ if (is_array($credits))
+ {
+ $credits = array_values(SimplePie_Misc::array_unique($credits));
+ }
+ }
+ else
+ {
+ $credits = $credits_parent;
+ }
+
+ // DESCRIPTION
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
+ {
+ $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $description = $description_parent;
+ }
+
+ // HASHES
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
+ {
+ $value = null;
+ $algo = null;
+ if (isset($hash['data']))
+ {
+ $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($hash['attribs']['']['algo']))
+ {
+ $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $algo = 'md5';
+ }
+ $hashes[] = $algo.':'.$value;
+ }
+ if (is_array($hashes))
+ {
+ $hashes = array_values(SimplePie_Misc::array_unique($hashes));
+ }
+ }
+ else
+ {
+ $hashes = $hashes_parent;
+ }
+
+ // KEYWORDS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
+ {
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
+ {
+ $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
+ foreach ($temp as $word)
+ {
+ $keywords[] = trim($word);
+ }
+ unset($temp);
+ }
+ if (is_array($keywords))
+ {
+ $keywords = array_values(SimplePie_Misc::array_unique($keywords));
+ }
+ }
+ else
+ {
+ $keywords = $keywords_parent;
+ }
+
+ // PLAYER
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
+ {
+ $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ else
+ {
+ $player = $player_parent;
+ }
+
+ // RATINGS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
+ {
+ $rating_scheme = null;
+ $rating_value = null;
+ if (isset($rating['attribs']['']['scheme']))
+ {
+ $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $rating_scheme = 'urn:simple';
+ }
+ if (isset($rating['data']))
+ {
+ $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
+ }
+ if (is_array($ratings))
+ {
+ $ratings = array_values(SimplePie_Misc::array_unique($ratings));
+ }
+ }
+ else
+ {
+ $ratings = $ratings_parent;
+ }
+
+ // RESTRICTIONS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
+ {
+ $restriction_relationship = null;
+ $restriction_type = null;
+ $restriction_value = null;
+ if (isset($restriction['attribs']['']['relationship']))
+ {
+ $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['attribs']['']['type']))
+ {
+ $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($restriction['data']))
+ {
+ $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
+ }
+ if (is_array($restrictions))
+ {
+ $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
+ }
+ }
+ else
+ {
+ $restrictions = $restrictions_parent;
+ }
+
+ // THUMBNAILS
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
+ {
+ foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
+ {
+ $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+ }
+ if (is_array($thumbnails))
+ {
+ $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
+ }
+ }
+ else
+ {
+ $thumbnails = $thumbnails_parent;
+ }
+
+ // TITLES
+ if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
+ {
+ $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ else
+ {
+ $title = $title_parent;
+ }
+
+ $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
+ }
+ }
+ }
+
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)
+ {
+ if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
+ {
+ // Attributes
+ $bitrate = null;
+ $channels = null;
+ $duration = null;
+ $expression = null;
+ $framerate = null;
+ $height = null;
+ $javascript = null;
+ $lang = null;
+ $length = null;
+ $medium = null;
+ $samplingrate = null;
+ $type = null;
+ $url = null;
+ $width = null;
+
+ $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+ if (isset($link['attribs']['']['type']))
+ {
+ $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($link['attribs']['']['length']))
+ {
+ $length = ceil($link['attribs']['']['length']);
+ }
+
+ // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+ $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+ }
+ }
+
+ foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)
+ {
+ if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure')
+ {
+ // Attributes
+ $bitrate = null;
+ $channels = null;
+ $duration = null;
+ $expression = null;
+ $framerate = null;
+ $height = null;
+ $javascript = null;
+ $lang = null;
+ $length = null;
+ $medium = null;
+ $samplingrate = null;
+ $type = null;
+ $url = null;
+ $width = null;
+
+ $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));
+ if (isset($link['attribs']['']['type']))
+ {
+ $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($link['attribs']['']['length']))
+ {
+ $length = ceil($link['attribs']['']['length']);
+ }
+
+ // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+ $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+ }
+ }
+
+ if ($enclosure = $this->get_item_tags('', 'enclosure'))
+ {
+ if (isset($enclosure[0]['attribs']['']['url']))
+ {
+ // Attributes
+ $bitrate = null;
+ $channels = null;
+ $duration = null;
+ $expression = null;
+ $framerate = null;
+ $height = null;
+ $javascript = null;
+ $lang = null;
+ $length = null;
+ $medium = null;
+ $samplingrate = null;
+ $type = null;
+ $url = null;
+ $width = null;
+
+ $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));
+ if (isset($enclosure[0]['attribs']['']['type']))
+ {
+ $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
+ }
+ if (isset($enclosure[0]['attribs']['']['length']))
+ {
+ $length = ceil($enclosure[0]['attribs']['']['length']);
+ }
+
+ // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
+ $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width);
+ }
+ }
+ $this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures']));
+ }
+ if (!empty($this->data['enclosures']))
+ {
+ return $this->data['enclosures'];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_latitude()
+ {
+ if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
+ {
+ return (float) $return[0]['data'];
+ }
+ elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+ {
+ return (float) $match[1];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_longitude()
+ {
+ if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))
+ {
+ return (float) $return[0]['data'];
+ }
+ elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))
+ {
+ return (float) $return[0]['data'];
+ }
+ elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
+ {
+ return (float) $match[2];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Creates the add_to_* methods' return data
+ *
+ * @access private
+ * @param string $item_url String to prefix to the item permalink
+ * @param string $title_url String to prefix to the item title
+ * (and suffix to the item permalink)
+ * @return mixed URL if feed exists, false otherwise
+ */
+ function add_to_service($item_url, $title_url = null)
+ {
+ if ($this->get_permalink() !== null)
+ {
+ $return = $this->sanitize($item_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_permalink());
+ if ($title_url !== null && $this->get_title() !== null)
+ {
+ $return .= $this->sanitize($title_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_title());
+ }
+ return $return;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function add_to_blinklist()
+ {
+ return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title=');
+ }
+
+ function add_to_blogmarks()
+ {
+ return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title=');
+ }
+
+ function add_to_delicious()
+ {
+ return $this->add_to_service('http://del.icio.us/post/?v=3&url=', '&title=');
+ }
+
+ function add_to_digg()
+ {
+ return $this->add_to_service('http://digg.com/submit?phase=2&URL=');
+ }
+
+ function add_to_furl()
+ {
+ return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t=');
+ }
+
+ function add_to_magnolia()
+ {
+ return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title=');
+ }
+
+ function add_to_myweb20()
+ {
+ return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t=');
+ }
+
+ function add_to_newsvine()
+ {
+ return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h=');
+ }
+
+ function add_to_reddit()
+ {
+ return $this->add_to_service('http://reddit.com/submit?url=', '&title=');
+ }
+
+ function add_to_segnalo()
+ {
+ return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title=');
+ }
+
+ function add_to_simpy()
+ {
+ return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title=');
+ }
+
+ function add_to_spurl()
+ {
+ return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title=');
+ }
+
+ function add_to_wists()
+ {
+ return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title=');
+ }
+
+ function search_technorati()
+ {
+ return $this->add_to_service('http://www.technorati.com/search/');
+ }
+}
+
+class SimplePie_Author
+{
+ var $name;
+ var $link;
+ var $email;
+
+ // Constructor, used to input the data
+ function SimplePie_Author($name = null, $link = null, $email = null)
+ {
+ $this->name = $name;
+ $this->link = $link;
+ $this->email = $email;
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_name()
+ {
+ if ($this->name !== null)
+ {
+ return $this->name;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_link()
+ {
+ if ($this->link !== null)
+ {
+ return $this->link;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_email()
+ {
+ if ($this->email !== null)
+ {
+ return $this->email;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
+
+class SimplePie_Category
+{
+ var $term;
+ var $scheme;
+ var $label;
+
+ // Constructor, used to input the data
+ function SimplePie_Category($term = null, $scheme = null, $label = null)
+ {
+ $this->term = $term;
+ $this->scheme = $scheme;
+ $this->label = $label;
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_term()
+ {
+ if ($this->term !== null)
+ {
+ return $this->term;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_scheme()
+ {
+ if ($this->scheme !== null)
+ {
+ return $this->scheme;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_label()
+ {
+ if ($this->label !== null)
+ {
+ return $this->label;
+ }
+ else
+ {
+ return $this->get_term();
+ }
+ }
+}
+
+class SimplePie_Enclosure
+{
+ var $bitrate;
+ var $captions;
+ var $categories;
+ var $channels;
+ var $copyright;
+ var $credits;
+ var $description;
+ var $duration;
+ var $expression;
+ var $framerate;
+ var $handler;
+ var $hashes;
+ var $height;
+ var $javascript;
+ var $keywords;
+ var $lang;
+ var $length;
+ var $link;
+ var $medium;
+ var $player;
+ var $ratings;
+ var $restrictions;
+ var $samplingrate;
+ var $thumbnails;
+ var $title;
+ var $type;
+ var $width;
+
+ // Constructor, used to input the data
+ function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null)
+ {
+ $this->bitrate = $bitrate;
+ $this->captions = $captions;
+ $this->categories = $categories;
+ $this->channels = $channels;
+ $this->copyright = $copyright;
+ $this->credits = $credits;
+ $this->description = $description;
+ $this->duration = $duration;
+ $this->expression = $expression;
+ $this->framerate = $framerate;
+ $this->hashes = $hashes;
+ $this->height = $height;
+ $this->javascript = $javascript;
+ $this->keywords = $keywords;
+ $this->lang = $lang;
+ $this->length = $length;
+ $this->link = $link;
+ $this->medium = $medium;
+ $this->player = $player;
+ $this->ratings = $ratings;
+ $this->restrictions = $restrictions;
+ $this->samplingrate = $samplingrate;
+ $this->thumbnails = $thumbnails;
+ $this->title = $title;
+ $this->type = $type;
+ $this->width = $width;
+ if (class_exists('idna_convert'))
+ {
+ $idn =& new idna_convert;
+ $parsed = SimplePie_Misc::parse_url($link);
+ $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+ }
+ $this->handler = $this->get_handler(); // Needs to load last
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_bitrate()
+ {
+ if ($this->bitrate !== null)
+ {
+ return $this->bitrate;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_caption($key = 0)
+ {
+ $captions = $this->get_captions();
+ if (isset($captions[$key]))
+ {
+ return $captions[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_captions()
+ {
+ if ($this->captions !== null)
+ {
+ return $this->captions;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_category($key = 0)
+ {
+ $categories = $this->get_categories();
+ if (isset($categories[$key]))
+ {
+ return $categories[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_categories()
+ {
+ if ($this->categories !== null)
+ {
+ return $this->categories;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_channels()
+ {
+ if ($this->channels !== null)
+ {
+ return $this->channels;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_copyright()
+ {
+ if ($this->copyright !== null)
+ {
+ return $this->copyright;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_credit($key = 0)
+ {
+ $credits = $this->get_credits();
+ if (isset($credits[$key]))
+ {
+ return $credits[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_credits()
+ {
+ if ($this->credits !== null)
+ {
+ return $this->credits;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_description()
+ {
+ if ($this->description !== null)
+ {
+ return $this->description;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_duration($convert = false)
+ {
+ if ($this->duration !== null)
+ {
+ if ($convert)
+ {
+ $time = SimplePie_Misc::time_hms($this->duration);
+ return $time;
+ }
+ else
+ {
+ return $this->duration;
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_expression()
+ {
+ if ($this->expression !== null)
+ {
+ return $this->expression;
+ }
+ else
+ {
+ return 'full';
+ }
+ }
+
+ function get_extension()
+ {
+ if ($this->link !== null)
+ {
+ $url = SimplePie_Misc::parse_url($this->link);
+ if ($url['path'] !== '')
+ {
+ return pathinfo($url['path'], PATHINFO_EXTENSION);
+ }
+ }
+ return null;
+ }
+
+ function get_framerate()
+ {
+ if ($this->framerate !== null)
+ {
+ return $this->framerate;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_handler()
+ {
+ return $this->get_real_type(true);
+ }
+
+ function get_hash($key = 0)
+ {
+ $hashes = $this->get_hashes();
+ if (isset($hashes[$key]))
+ {
+ return $hashes[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_hashes()
+ {
+ if ($this->hashes !== null)
+ {
+ return $this->hashes;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_height()
+ {
+ if ($this->height !== null)
+ {
+ return $this->height;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_language()
+ {
+ if ($this->lang !== null)
+ {
+ return $this->lang;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_keyword($key = 0)
+ {
+ $keywords = $this->get_keywords();
+ if (isset($keywords[$key]))
+ {
+ return $keywords[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_keywords()
+ {
+ if ($this->keywords !== null)
+ {
+ return $this->keywords;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_length()
+ {
+ if ($this->length !== null)
+ {
+ return $this->length;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_link()
+ {
+ if ($this->link !== null)
+ {
+ return urldecode($this->link);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_medium()
+ {
+ if ($this->medium !== null)
+ {
+ return $this->medium;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_player()
+ {
+ if ($this->player !== null)
+ {
+ return $this->player;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_rating($key = 0)
+ {
+ $ratings = $this->get_ratings();
+ if (isset($ratings[$key]))
+ {
+ return $ratings[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_ratings()
+ {
+ if ($this->ratings !== null)
+ {
+ return $this->ratings;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_restriction($key = 0)
+ {
+ $restrictions = $this->get_restrictions();
+ if (isset($restrictions[$key]))
+ {
+ return $restrictions[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_restrictions()
+ {
+ if ($this->restrictions !== null)
+ {
+ return $this->restrictions;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_sampling_rate()
+ {
+ if ($this->samplingrate !== null)
+ {
+ return $this->samplingrate;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_size()
+ {
+ $length = $this->get_length();
+ if ($length !== null)
+ {
+ return round($length/1048576, 2);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_thumbnail($key = 0)
+ {
+ $thumbnails = $this->get_thumbnails();
+ if (isset($thumbnails[$key]))
+ {
+ return $thumbnails[$key];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_thumbnails()
+ {
+ if ($this->thumbnails !== null)
+ {
+ return $this->thumbnails;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_title()
+ {
+ if ($this->title !== null)
+ {
+ return $this->title;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_type()
+ {
+ if ($this->type !== null)
+ {
+ return $this->type;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_width()
+ {
+ if ($this->width !== null)
+ {
+ return $this->width;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function native_embed($options='')
+ {
+ return $this->embed($options, true);
+ }
+
+ /**
+ * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'.
+ */
+ function embed($options = '', $native = false)
+ {
+ // Set up defaults
+ $audio = '';
+ $video = '';
+ $alt = '';
+ $altclass = '';
+ $loop = 'false';
+ $width = 'auto';
+ $height = 'auto';
+ $bgcolor = '#ffffff';
+ $mediaplayer = '';
+ $widescreen = false;
+ $handler = $this->get_handler();
+ $type = $this->get_real_type();
+
+ // Process options and reassign values as necessary
+ if (is_array($options))
+ {
+ extract($options);
+ }
+ else
+ {
+ $options = explode(',', $options);
+ foreach($options as $option)
+ {
+ $opt = explode(':', $option, 2);
+ if (isset($opt[0], $opt[1]))
+ {
+ $opt[0] = trim($opt[0]);
+ $opt[1] = trim($opt[1]);
+ switch ($opt[0])
+ {
+ case 'audio':
+ $audio = $opt[1];
+ break;
+
+ case 'video':
+ $video = $opt[1];
+ break;
+
+ case 'alt':
+ $alt = $opt[1];
+ break;
+
+ case 'altclass':
+ $altclass = $opt[1];
+ break;
+
+ case 'loop':
+ $loop = $opt[1];
+ break;
+
+ case 'width':
+ $width = $opt[1];
+ break;
+
+ case 'height':
+ $height = $opt[1];
+ break;
+
+ case 'bgcolor':
+ $bgcolor = $opt[1];
+ break;
+
+ case 'mediaplayer':
+ $mediaplayer = $opt[1];
+ break;
+
+ case 'widescreen':
+ $widescreen = $opt[1];
+ break;
+ }
+ }
+ }
+ }
+
+ $mime = explode('/', $type, 2);
+ $mime = $mime[0];
+
+ // Process values for 'auto'
+ if ($width == 'auto')
+ {
+ if ($mime == 'video')
+ {
+ if ($height == 'auto')
+ {
+ $width = 480;
+ }
+ elseif ($widescreen)
+ {
+ $width = round((intval($height)/9)*16);
+ }
+ else
+ {
+ $width = round((intval($height)/3)*4);
+ }
+ }
+ else
+ {
+ $width = '100%';
+ }
+ }
+
+ if ($height == 'auto')
+ {
+ if ($mime == 'audio')
+ {
+ $height = 0;
+ }
+ elseif ($mime == 'video')
+ {
+ if ($width == 'auto')
+ {
+ if ($widescreen)
+ {
+ $height = 270;
+ }
+ else
+ {
+ $height = 360;
+ }
+ }
+ elseif ($widescreen)
+ {
+ $height = round((intval($width)/16)*9);
+ }
+ else
+ {
+ $height = round((intval($width)/4)*3);
+ }
+ }
+ else
+ {
+ $height = 376;
+ }
+ }
+ elseif ($mime == 'audio')
+ {
+ $height = 0;
+ }
+
+ // Set proper placeholder value
+ if ($mime == 'audio')
+ {
+ $placeholder = $audio;
+ }
+ elseif ($mime == 'video')
+ {
+ $placeholder = $video;
+ }
+
+ $embed = '';
+
+ // Make sure the JS library is included
+ if (!$native)
+ {
+ static $javascript_outputted = null;
+ if (!$javascript_outputted && $this->javascript)
+ {
+ $embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>';
+ $javascript_outputted = true;
+ }
+ }
+
+ // Odeo Feed MP3's
+ if ($handler == 'odeo')
+ {
+ if ($native)
+ {
+ $embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>';
+ }
+ else
+ {
+ $embed .= '<script type="text/javascript">embed_odeo("' . $this->get_link() . '");</script>';
+ }
+ }
+
+ // Flash
+ elseif ($handler == 'flash')
+ {
+ if ($native)
+ {
+ $embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>";
+ }
+ else
+ {
+ $embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>";
+ }
+ }
+
+ // Flash Media Player file types.
+ // Preferred handler for MP3 file types.
+ elseif ($handler == 'fmedia' || ($handler == 'mp3' && $mediaplayer != ''))
+ {
+ $height += 20;
+ if ($native)
+ {
+ $embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>";
+ }
+ else
+ {
+ $embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>";
+ }
+ }
+
+ // QuickTime 7 file types. Need to test with QuickTime 6.
+ // Only handle MP3's if the Flash Media Player is not present.
+ elseif ($handler == 'quicktime' || ($handler == 'mp3' && $mediaplayer == ''))
+ {
+ $height += 16;
+ if ($native)
+ {
+ if ($placeholder != ""){
+ $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+ }
+ else {
+ $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>";
+ }
+ }
+ else
+ {
+ $embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>";
+ }
+ }
+
+ // Windows Media
+ elseif ($handler == 'wmedia')
+ {
+ $height += 45;
+ if ($native)
+ {
+ $embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>";
+ }
+ else
+ {
+ $embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>";
+ }
+ }
+
+ // Everything else
+ else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>';
+
+ return $embed;
+ }
+
+ function get_real_type($find_handler = false)
+ {
+ // If it's Odeo, let's get it out of the way.
+ if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com')
+ {
+ return 'odeo';
+ }
+
+ // Mime-types by handler.
+ $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash
+ $types_fmedia = array('video/flv', 'video/x-flv'); // Flash Media Player
+ $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime
+ $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media
+ $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3
+
+ if ($this->get_type() !== null)
+ {
+ $type = strtolower($this->type);
+ }
+ else
+ {
+ $type = null;
+ }
+
+ // If we encounter an unsupported mime-type, check the file extension and guess intelligently.
+ if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3)))
+ {
+ switch (strtolower($this->get_extension()))
+ {
+ // Audio mime-types
+ case 'aac':
+ case 'adts':
+ $type = 'audio/acc';
+ break;
+
+ case 'aif':
+ case 'aifc':
+ case 'aiff':
+ case 'cdda':
+ $type = 'audio/aiff';
+ break;
+
+ case 'bwf':
+ $type = 'audio/wav';
+ break;
+
+ case 'kar':
+ case 'mid':
+ case 'midi':
+ case 'smf':
+ $type = 'audio/midi';
+ break;
+
+ case 'm4a':
+ $type = 'audio/x-m4a';
+ break;
+
+ case 'mp3':
+ case 'swa':
+ $type = 'audio/mp3';
+ break;
+
+ case 'wav':
+ $type = 'audio/wav';
+ break;
+
+ case 'wax':
+ $type = 'audio/x-ms-wax';
+ break;
+
+ case 'wma':
+ $type = 'audio/x-ms-wma';
+ break;
+
+ // Video mime-types
+ case '3gp':
+ case '3gpp':
+ $type = 'video/3gpp';
+ break;
+
+ case '3g2':
+ case '3gp2':
+ $type = 'video/3gpp2';
+ break;
+
+ case 'asf':
+ $type = 'video/x-ms-asf';
+ break;
+
+ case 'flv':
+ $type = 'video/x-flv';
+ break;
+
+ case 'm1a':
+ case 'm1s':
+ case 'm1v':
+ case 'm15':
+ case 'm75':
+ case 'mp2':
+ case 'mpa':
+ case 'mpeg':
+ case 'mpg':
+ case 'mpm':
+ case 'mpv':
+ $type = 'video/mpeg';
+ break;
+
+ case 'm4v':
+ $type = 'video/x-m4v';
+ break;
+
+ case 'mov':
+ case 'qt':
+ $type = 'video/quicktime';
+ break;
+
+ case 'mp4':
+ case 'mpg4':
+ $type = 'video/mp4';
+ break;
+
+ case 'sdv':
+ $type = 'video/sd-video';
+ break;
+
+ case 'wm':
+ $type = 'video/x-ms-wm';
+ break;
+
+ case 'wmv':
+ $type = 'video/x-ms-wmv';
+ break;
+
+ case 'wvx':
+ $type = 'video/x-ms-wvx';
+ break;
+
+ // Flash mime-types
+ case 'spl':
+ $type = 'application/futuresplash';
+ break;
+
+ case 'swf':
+ $type = 'application/x-shockwave-flash';
+ break;
+ }
+ }
+
+ if ($find_handler)
+ {
+ if (in_array($type, $types_flash))
+ {
+ return 'flash';
+ }
+ elseif (in_array($type, $types_fmedia))
+ {
+ return 'fmedia';
+ }
+ elseif (in_array($type, $types_quicktime))
+ {
+ return 'quicktime';
+ }
+ elseif (in_array($type, $types_wmedia))
+ {
+ return 'wmedia';
+ }
+ elseif (in_array($type, $types_mp3))
+ {
+ return 'mp3';
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return $type;
+ }
+ }
+}
+
+class SimplePie_Caption
+{
+ var $type;
+ var $lang;
+ var $startTime;
+ var $endTime;
+ var $text;
+
+ // Constructor, used to input the data
+ function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null)
+ {
+ $this->type = $type;
+ $this->lang = $lang;
+ $this->startTime = $startTime;
+ $this->endTime = $endTime;
+ $this->text = $text;
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_endtime()
+ {
+ if ($this->endTime !== null)
+ {
+ return $this->endTime;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_language()
+ {
+ if ($this->language !== null)
+ {
+ return $this->language;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_starttime()
+ {
+ if ($this->startTime !== null)
+ {
+ return $this->startTime;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_text()
+ {
+ if ($this->text !== null)
+ {
+ return $this->text;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_type()
+ {
+ if ($this->type !== null)
+ {
+ return $this->type;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
+
+class SimplePie_Credit
+{
+ var $role;
+ var $scheme;
+ var $name;
+
+ // Constructor, used to input the data
+ function SimplePie_Credit($role = null, $scheme = null, $name = null)
+ {
+ $this->role = $role;
+ $this->scheme = $scheme;
+ $this->name = $name;
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_role()
+ {
+ if ($this->role !== null)
+ {
+ return $this->role;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_scheme()
+ {
+ if ($this->scheme !== null)
+ {
+ return $this->scheme;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_name()
+ {
+ if ($this->name !== null)
+ {
+ return $this->name;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
+
+class SimplePie_Copyright
+{
+ var $url;
+ var $label;
+
+ // Constructor, used to input the data
+ function SimplePie_Copyright($url = null, $label = null)
+ {
+ $this->url = $url;
+ $this->label = $label;
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_url()
+ {
+ if ($this->url !== null)
+ {
+ return $this->url;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_attribution()
+ {
+ if ($this->label !== null)
+ {
+ return $this->label;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
+
+class SimplePie_Rating
+{
+ var $scheme;
+ var $value;
+
+ // Constructor, used to input the data
+ function SimplePie_Rating($scheme = null, $value = null)
+ {
+ $this->scheme = $scheme;
+ $this->value = $value;
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_scheme()
+ {
+ if ($this->scheme !== null)
+ {
+ return $this->scheme;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_value()
+ {
+ if ($this->value !== null)
+ {
+ return $this->value;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
+
+class SimplePie_Restriction
+{
+ var $relationship;
+ var $type;
+ var $value;
+
+ // Constructor, used to input the data
+ function SimplePie_Restriction($relationship = null, $type = null, $value = null)
+ {
+ $this->relationship = $relationship;
+ $this->type = $type;
+ $this->value = $value;
+ }
+
+ function __toString()
+ {
+ // There is no $this->data here
+ return md5(serialize($this));
+ }
+
+ function get_relationship()
+ {
+ if ($this->relationship !== null)
+ {
+ return $this->relationship;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_type()
+ {
+ if ($this->type !== null)
+ {
+ return $this->type;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ function get_value()
+ {
+ if ($this->value !== null)
+ {
+ return $this->value;
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
+
+/**
+ * @todo Move to properly supporting RFC2616 (HTTP/1.1)
+ */
+class SimplePie_File
+{
+ var $url;
+ var $useragent;
+ var $success = true;
+ var $headers = array();
+ var $body;
+ var $status_code;
+ var $redirects = 0;
+ var $error;
+ var $method;
+
+ function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
+ {
+ if (class_exists('idna_convert'))
+ {
+ $idn =& new idna_convert;
+ $parsed = SimplePie_Misc::parse_url($url);
+ $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
+ }
+ $this->url = $url;
+ $this->useragent = $useragent;
+ if (preg_match('/^http(s)?:\/\//i', $url))
+ {
+ if ($useragent === null)
+ {
+ $useragent = ini_get('user_agent');
+ $this->useragent = $useragent;
+ }
+ if (!is_array($headers))
+ {
+ $headers = array();
+ }
+ if (!$force_fsockopen && extension_loaded('curl'))
+ {
+ $this->method = 'curl';
+ $fp = curl_init();
+ $headers2 = array();
+ foreach ($headers as $key => $value)
+ {
+ $headers2[] = "$key: $value";
+ }
+ if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>='))
+ {
+ curl_setopt($fp, CURLOPT_ENCODING, '');
+ }
+ curl_setopt($fp, CURLOPT_URL, $url);
+ curl_setopt($fp, CURLOPT_HEADER, 1);
+ curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
+ curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
+ curl_setopt($fp, CURLOPT_REFERER, $url);
+ curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
+ curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
+ if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
+ {
+ curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
+ curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
+ }
+
+ $this->headers = curl_exec($fp);
+ if (curl_errno($fp) == 23 || curl_errno($fp) == 61)
+ {
+ curl_setopt($fp, CURLOPT_ENCODING, 'none');
+ $this->headers = curl_exec($fp);
+ }
+ if (curl_errno($fp))
+ {
+ $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp);
+ $this->success = false;
+ }
+ else
+ {
+ $info = curl_getinfo($fp);
+ curl_close($fp);
+ $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
+ $this->headers = array_pop($this->headers);
+ $parser =& new SimplePie_HTTP_Parser($this->headers);
+ if ($parser->parse())
+ {
+ $this->headers = $parser->headers;
+ $this->body = $parser->body;
+ $this->status_code = $parser->status_code;
+ if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+ {
+ $this->redirects++;
+ if (isset($this->headers['content-location']))
+ {
+ $location = SimplePie_Misc::absolutize_url($this->headers['location'], SimplePie_Misc::absolutize_url($this->headers['content-location'], $url));
+ }
+ else
+ {
+ $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+ }
+ return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+ }
+ }
+ }
+ }
+ else
+ {
+ $this->method = 'fsockopen';
+ $url_parts = parse_url($url);
+ if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https')
+ {
+ $url_parts['host'] = "ssl://$url_parts[host]";
+ $url_parts['port'] = 443;
+ }
+ if (!isset($url_parts['port']))
+ {
+ $url_parts['port'] = 80;
+ }
+ $fp = fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);
+ if (!$fp)
+ {
+ $this->error = 'fsockopen error: ' . $errstr;
+ $this->success = false;
+ }
+ else
+ {
+ if (function_exists('stream_set_timeout'))
+ {
+ stream_set_timeout($fp, $timeout);
+ }
+ else
+ {
+ socket_set_timeout($fp, $timeout);
+ }
+ if (isset($url_parts['path']))
+ {
+ if (isset($url_parts['query']))
+ {
+ $get = "$url_parts[path]?$url_parts[query]";
+ }
+ else
+ {
+ $get = $url_parts['path'];
+ }
+ }
+ else
+ {
+ $get = '/';
+ }
+ $out = "GET $get HTTP/1.0\r\n";
+ $out .= "Host: $url_parts[host]\r\n";
+ $out .= "User-Agent: $useragent\r\n";
+ if (function_exists('gzinflate'))
+ {
+ $out .= "Accept-Encoding: gzip,deflate\r\n";
+ }
+
+ if (isset($url_parts['user']) && isset($url_parts['pass']))
+ {
+ $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n";
+ }
+ foreach ($headers as $key => $value)
+ {
+ $out .= "$key: $value\r\n";
+ }
+ $out .= "Connection: Close\r\n\r\n";
+ fwrite($fp, $out);
+
+ if (function_exists('stream_get_meta_data'))
+ {
+ $info = stream_get_meta_data($fp);
+ }
+ else
+ {
+ $info = socket_get_status($fp);
+ }
+
+ $this->headers = '';
+ while (!$info['eof'] && !$info['timed_out'])
+ {
+ $this->headers .= fread($fp, 1160);
+ if (function_exists('stream_get_meta_data'))
+ {
+ $info = stream_get_meta_data($fp);
+ }
+ else
+ {
+ $info = socket_get_status($fp);
+ }
+ }
+ if (!$info['timed_out'])
+ {
+ $parser =& new SimplePie_HTTP_Parser($this->headers);
+ if ($parser->parse())
+ {
+ $this->headers = $parser->headers;
+ $this->body = $parser->body;
+ $this->status_code = $parser->status_code;
+ if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
+ {
+ $this->redirects++;
+ if (isset($this->headers['content-location']))
+ {
+ $location = SimplePie_Misc::absolutize_url($this->headers['location'], SimplePie_Misc::absolutize_url($this->headers['content-location'], $url));
+ }
+ else
+ {
+ $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
+ }
+ return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+ }
+ if (isset($this->headers['content-encoding']) && ($this->headers['content-encoding'] == 'gzip' || $this->headers['content-encoding'] == 'deflate'))
+ {
+ if (substr($this->body, 0, 8) == "\x1f\x8b\x08\x00\x00\x00\x00\x00")
+ {
+ $this->body = substr($this->body, 10);
+ }
+ $this->body = gzinflate($this->body);
+ }
+ }
+ }
+ else
+ {
+ $this->error = 'fsocket timed out';
+ $this->success = false;
+ }
+ fclose($fp);
+ }
+ }
+ }
+ elseif (function_exists('file_get_contents'))
+ {
+ $this->method = 'file_get_contents';
+ if (!$this->body = file_get_contents($url))
+ {
+ $this->error = 'file_get_contents could not read the file';
+ $this->success = false;
+ }
+ }
+ else
+ {
+ $this->method = 'fopen';
+ if (($fp = fopen($url, 'rb')) === false)
+ {
+ $this->error = 'failed to open stream: No such file or directory';
+ $this->success = false;
+ }
+ else
+ {
+ $this->body = '';
+ while (!feof($fp))
+ {
+ $this->body .= fread($fp, 8192);
+ }
+ fclose($fp);
+ }
+ }
+ }
+}
+
+/**
+ * HTTP Response Parser
+ *
+ * @package SimplePie
+ * @todo Support HTTP Requests
+ */
+class SimplePie_HTTP_Parser
+{
+ /**
+ * HTTP Version
+ *
+ * @access public
+ * @var string
+ */
+ var $http_version = '';
+
+ /**
+ * Status code
+ *
+ * @access public
+ * @var string
+ */
+ var $status_code = '';
+
+ /**
+ * Reason phrase
+ *
+ * @access public
+ * @var string
+ */
+ var $reason = '';
+
+ /**
+ * Key/value pairs of the headers
+ *
+ * @access public
+ * @var array
+ */
+ var $headers = array();
+
+ /**
+ * Body of the response
+ *
+ * @access public
+ * @var string
+ */
+ var $body = '';
+
+ /**
+ * Current state of the state machine
+ *
+ * @access private
+ * @var string
+ */
+ var $state = 'start';
+
+ /**
+ * Input data
+ *
+ * @access private
+ * @var string
+ */
+ var $data = '';
+
+ /**
+ * Input data length (to avoid calling strlen() everytime this is needed)
+ *
+ * @access private
+ * @var int
+ */
+ var $data_length = 0;
+
+ /**
+ * Current position of the pointer
+ *
+ * @access private
+ * @var int
+ */
+ var $position = 0;
+
+ /**
+ * Name of the hedaer currently being parsed
+ *
+ * @access private
+ * @var string
+ */
+ var $name = '';
+
+ /**
+ * Value of the hedaer currently being parsed
+ *
+ * @access private
+ * @var string
+ */
+ var $value = '';
+
+ /**
+ * Create an instance of the class with the input data
+ *
+ * @access public
+ * @param string $data Input data
+ */
+ function SimplePie_HTTP_Parser($data)
+ {
+ $this->data = $data;
+ $this->data_length = strlen($this->data);
+ }
+
+ /**
+ * Parse the input data
+ *
+ * @access public
+ * @return bool true on success, false on failure
+ */
+ function parse()
+ {
+ while ($this->state && $this->state != 'emit' && $this->has_data())
+ {
+ $state = $this->state;
+ $this->$state();
+ }
+ $this->data = '';
+ if ($this->state == 'emit')
+ {
+ return true;
+ }
+ else
+ {
+ $this->http_version = '';
+ $this->status_code = '';
+ $this->headers = array();
+ $this->body = '';
+ return false;
+ }
+ }
+
+ /**
+ * Check whether there is data beyond the pointer
+ *
+ * @access private
+ * @return bool true if there is further data, false if not
+ */
+ function has_data()
+ {
+ return (bool) ($this->position < $this->data_length);
+ }
+
+ /**
+ * See if the next character is LWS
+ *
+ * @access private
+ * @return bool true if the next character is LWS, false if not
+ */
+ function is_linear_whitespace()
+ {
+ return (bool) (strspn($this->data, "\x09\x20", $this->position, 1)
+ || (substr($this->data, $this->position, 2) == "\r\n" && strspn($this->data, "\x09\x20", $this->position + 2, 1))
+ || (strspn($this->data, "\r\n", $this->position, 1) && strspn($this->data, "\x09\x20", $this->position + 1, 1)));
+ }
+
+ /**
+ * The starting state of the state machine, see if the data is a response or request
+ *
+ * @access private
+ */
+ function start()
+ {
+ $this->state = 'http_version_response';
+ }
+
+ /**
+ * Parse an HTTP-version string
+ *
+ * @access private
+ */
+ function http_version()
+ {
+ if (preg_match('/^HTTP\/([0-9]+\.[0-9]+)/i', substr($this->data, $this->position, strcspn($this->data, "\r\n", $this->position)), $match))
+ {
+ $this->position += strlen($match[0]);
+ $this->http_version = $match[1];
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ /**
+ * Parse LWS, replacing consecutive characters with a single space
+ *
+ * @access private
+ */
+ function linear_whitespace()
+ {
+ do
+ {
+ if (substr($this->data, $this->position, 2) == "\r\n")
+ {
+ $this->position += 2;
+ }
+ elseif (strspn($this->data, "\r\n", $this->position, 1))
+ {
+ $this->position++;
+ }
+ $this->position += strspn($this->data, "\x09\x20", $this->position);
+ } while ($this->is_linear_whitespace());
+ $this->value .= "\x20";
+ }
+
+ /**
+ * Parse an HTTP-version string within a response
+ *
+ * @access private
+ */
+ function http_version_response()
+ {
+ if ($this->http_version() && $this->data[$this->position] == "\x20")
+ {
+ $this->state = 'status_code';
+ $this->position++;
+ }
+ else
+ {
+ $this->state = false;
+ }
+ }
+
+ /**
+ * Parse a status code
+ *
+ * @access private
+ */
+ function status_code()
+ {
+ if (strspn($this->data, '1234567890', $this->position, 3) == 3)
+ {
+ $this->status_code = substr($this->data, $this->position, 3);
+ $this->state = 'reason_phrase';
+ $this->position += 3;
+ }
+ else
+ {
+ $this->state = false;
+ }
+ }
+
+ /**
+ * Skip over the reason phrase (it has no normative value, and you can send absolutely anything here)
+ *
+ * @access private
+ */
+ function reason_phrase()
+ {
+ $len = strcspn($this->data, "\r\n", $this->position);
+ $this->reason = substr($this->data, $this->position, $len);
+ $this->position += $len;
+ if ($this->has_data())
+ {
+ if (substr($this->data, $this->position, 2) == "\r\n")
+ {
+ $this->position += 2;
+ }
+ elseif (strspn($this->data, "\r\n", $this->position, 1))
+ {
+ $this->position++;
+ }
+ $this->state = 'name';
+ }
+ }
+
+ /**
+ * Parse a header name
+ *
+ * @access private
+ */
+ function name()
+ {
+ $len = strcspn($this->data, ':', $this->position);
+ $this->name = substr($this->data, $this->position, $len);
+ $this->position += $len;
+
+ if ($this->has_data() && $this->data[$this->position] == ':')
+ {
+ $this->state = 'value_next';
+ $this->position++;
+ }
+ else
+ {
+ $this->state = false;
+ }
+ }
+
+ /**
+ * See what state to move the state machine to while within non-quoted header values
+ *
+ * @access private
+ */
+ function value_next()
+ {
+ if ($this->is_linear_whitespace())
+ {
+ $this->state = 'value_linear_whitespace';
+ }
+ elseif ($this->data[$this->position] == '"')
+ {
+ $this->state = 'value_quote_next';
+ $this->position++;
+ }
+ elseif (substr($this->data, $this->position, 2) == "\r\n")
+ {
+ $this->state = 'end_crlf';
+ $this->position += 2;
+ }
+ elseif (strspn($this->data, "\r\n", $this->position, 1))
+ {
+ $this->state = 'end_crlf';
+ $this->position++;
+ }
+ else
+ {
+ $this->state = 'value_no_quote';
+ }
+ }
+
+ /**
+ * Parse a header value while outside quotes
+ *
+ * @access private
+ */
+ function value_no_quote()
+ {
+ $len = strcspn($this->data, "\x09\x20\r\n\"", $this->position);
+ $this->value .= substr($this->data, $this->position, $len);
+ $this->state = 'value_next';
+ $this->position += $len;
+ }
+
+ /**
+ * Parse LWS outside quotes
+ *
+ * @access private
+ */
+ function value_linear_whitespace()
+ {
+ $this->linear_whitespace();
+ $this->state = 'value_next';
+ }
+
+ /**
+ * See what state to move the state machine to while within quoted header values
+ *
+ * @access private
+ */
+ function value_quote_next()
+ {
+ if ($this->is_linear_whitespace())
+ {
+ $this->state = 'value_linear_whitespace_quote';
+ }
+ else
+ {
+ switch ($this->data[$this->position])
+ {
+ case '"':
+ $this->state = 'value_next';
+ $this->position++;
+ break;
+
+ case '\\':
+ $this->state = 'value_quote_char';
+ $this->position++;
+ break;
+
+ default:
+ $this->state = 'value_quote';
+ break;
+ }
+ }
+ }
+
+ /**
+ * Parse a header value while within quotes
+ *
+ * @access private
+ */
+ function value_quote()
+ {
+ $len = strcspn($this->data, "\x09\x20\r\n\"\\", $this->position);
+ $this->value .= substr($this->data, $this->position, $len);
+ $this->position += $len;
+ $this->state = 'value_quote_next';
+ }
+
+ /**
+ * Parse an escaped character within quotes
+ *
+ * @access private
+ */
+ function value_quote_char()
+ {
+ $this->value .= $this->data[$this->position];
+ $this->state = 'value_quote_next';
+ $this->position++;
+ }
+
+ /**
+ * Parse LWS within quotes
+ *
+ * @access private
+ */
+ function value_linear_whitespace_quote()
+ {
+ $this->linear_whitespace();
+ $this->state = 'value_quote_next';
+ }
+
+ /**
+ * Parse a CRLF, and see whether we have a further header, or whether we are followed by the body
+ *
+ * @access private
+ */
+ function end_crlf()
+ {
+ $this->name = strtolower($this->name);
+ $this->value = trim($this->value, "\x20");
+ if (isset($this->headers[$this->name]))
+ {
+ $this->headers[$this->name] .= ', ' . $this->value;
+ }
+ else
+ {
+ $this->headers[$this->name] = $this->value;
+ }
+
+ if (substr($this->data, $this->position, 2) == "\r\n")
+ {
+ $this->body = substr($this->data, $this->position + 2);
+ $this->state = 'emit';
+ }
+ elseif (strspn($this->data, "\r\n", $this->position, 1))
+ {
+ $this->body = substr($this->data, $this->position + 1);
+ $this->state = 'emit';
+ }
+ else
+ {
+ $this->name = '';
+ $this->value = '';
+ $this->state = 'name';
+ }
+ }
+}
+
+class SimplePie_Cache
+{
+ var $location;
+ var $filename;
+ var $extension;
+ var $name;
+
+ function SimplePie_Cache($location, $filename, $extension)
+ {
+ $this->location = $location;
+ $this->filename = rawurlencode($filename);
+ $this->extension = rawurlencode($extension);
+ $this->name = "$location/$this->filename.$this->extension";
+ }
+
+ function save($data)
+ {
+ if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
+ {
+ if (function_exists('file_put_contents'))
+ {
+ return (bool) file_put_contents($this->name, serialize($data));
+ }
+ else
+ {
+ $fp = fopen($this->name, 'wb');
+ if ($fp)
+ {
+ fwrite($fp, serialize($data));
+ fclose($fp);
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ function load()
+ {
+ if (file_exists($this->name) && is_readable($this->name))
+ {
+ if (function_exists('file_get_contents'))
+ {
+ return unserialize(file_get_contents($this->name));
+ }
+ elseif (($fp = fopen($this->name, 'rb')) !== false)
+ {
+ $data = '';
+ while (!feof($fp))
+ {
+ $data .= fread($fp, 8192);
+ }
+ fclose($fp);
+ return unserialize($data);
+ }
+ }
+ return false;
+ }
+
+ function mtime()
+ {
+ if (file_exists($this->name))
+ {
+ return filemtime($this->name);
+ }
+ return false;
+ }
+
+ function touch()
+ {
+ if (file_exists($this->name))
+ {
+ return touch($this->name);
+ }
+ return false;
+ }
+
+ function unlink()
+ {
+ if (file_exists($this->name))
+ {
+ return unlink($this->name);
+ }
+ return false;
+ }
+}
+
+class SimplePie_Misc
+{
+ function time_hms($seconds)
+ {
+ $time = '';
+
+ $hours = floor($seconds / 3600);
+ $remainder = $seconds % 3600;
+ if ($hours > 0)
+ {
+ $time .= $hours.':';
+ }
+
+ $minutes = floor($remainder / 60);
+ $seconds = $remainder % 60;
+ if ($minutes < 10 && $hours > 0)
+ {
+ $minutes = '0' . $minutes;
+ }
+ if ($seconds < 10)
+ {
+ $seconds = '0' . $seconds;
+ }
+
+ $time .= $minutes.':';
+ $time .= $seconds;
+
+ return $time;
+ }
+
+ function absolutize_url($relative, $base)
+ {
+ if ($relative !== '')
+ {
+ $relative = SimplePie_Misc::parse_url($relative);
+ if ($relative['scheme'] !== '')
+ {
+ $target = $relative;
+ }
+ elseif ($base !== '')
+ {
+ $base = SimplePie_Misc::parse_url($base);
+ $target = SimplePie_Misc::parse_url('');
+ if ($relative['authority'] !== '')
+ {
+ $target = $relative;
+ $target['scheme'] = $base['scheme'];
+ }
+ else
+ {
+ $target['scheme'] = $base['scheme'];
+ $target['authority'] = $base['authority'];
+ if ($relative['path'] !== '')
+ {
+ if (strpos($relative['path'], '/') === 0)
+ {
+ $target['path'] = $relative['path'];
+ }
+ elseif (($target['path'] = dirname("$base[path].")) == '/')
+ {
+ $target['path'] .= $relative['path'];
+ }
+ else
+ {
+ $target['path'] .= '/' . $relative['path'];
+ }
+ if ($relative['query'] !== '')
+ {
+ $target['query'] = $relative['query'];
+ }
+ }
+ else
+ {
+ if ($base['path'] !== '')
+ {
+ $target['path'] = $base['path'];
+ }
+ else
+ {
+ $target['path'] = '/';
+ }
+ if ($relative['query'] !== '')
+ {
+ $target['query'] = $relative['query'];
+ }
+ elseif ($base['query'] !== '')
+ {
+ $target['query'] = $base['query'];
+ }
+ }
+ }
+ if ($relative['fragment'] !== '')
+ {
+ $target['fragment'] = $relative['fragment'];
+ }
+ }
+ else
+ {
+ // No base URL, just return the relative URL
+ $target = $relative;
+ }
+ $return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']);
+ }
+ else
+ {
+ $return = $base;
+ }
+ $return = SimplePie_Misc::normalize_url($return);
+ return $return;
+ }
+
+ function remove_dot_segments($input)
+ {
+ $output = '';
+ while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input == '.' || $input == '..')
+ {
+ // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
+ if (strpos($input, '../') === 0)
+ {
+ $input = substr($input, 3);
+ }
+ elseif (strpos($input, './') === 0)
+ {
+ $input = substr($input, 2);
+ }
+ // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
+ elseif (strpos($input, '/./') === 0)
+ {
+ $input = substr_replace($input, '/', 0, 3);
+ }
+ elseif ($input == '/.')
+ {
+ $input = '/';
+ }
+ // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
+ elseif (strpos($input, '/../') === 0)
+ {
+ $input = substr_replace($input, '/', 0, 4);
+ $output = substr_replace($output, '', strrpos($output, '/'));
+ }
+ elseif ($input == '/..')
+ {
+ $input = '/';
+ $output = substr_replace($output, '', strrpos($output, '/'));
+ }
+ // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
+ elseif ($input == '.' || $input == '..')
+ {
+ $input = '';
+ }
+ // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
+ elseif (($pos = strpos($input, '/', 1)) !== false)
+ {
+ $output .= substr($input, 0, $pos);
+ $input = substr_replace($input, '', 0, $pos);
+ }
+ else
+ {
+ $output .= $input;
+ $input = '';
+ }
+ }
+ return $output . $input;
+ }
+
+ function get_element($realname, $string)
+ {
+ $return = array();
+ $name = preg_quote($realname, '/');
+ if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE))
+ {
+ for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++)
+ {
+ $return[$i]['tag'] = $realname;
+ $return[$i]['full'] = $matches[$i][0][0];
+ $return[$i]['offset'] = $matches[$i][0][1];
+ if (strlen($matches[$i][3][0]) <= 2)
+ {
+ $return[$i]['self_closing'] = true;
+ }
+ else
+ {
+ $return[$i]['self_closing'] = false;
+ $return[$i]['content'] = $matches[$i][4][0];
+ }
+ $return[$i]['attribs'] = array();
+ if (isset($matches[$i][2][0]) && preg_match_all('/((?:[^\s:]+:)?[^\s:]+)(?:\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([a-z0-9\-._:]*)))?\s/U', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER))
+ {
+ for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++)
+ {
+ if (count($attribs[$j]) == 2)
+ {
+ $attribs[$j][2] = $attribs[$j][1];
+ }
+ $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8');
+ }
+ }
+ }
+ }
+ return $return;
+ }
+
+ function element_implode($element)
+ {
+ $full = "<$element[tag]";
+ foreach ($element['attribs'] as $key => $value)
+ {
+ $key = strtolower($key);
+ $full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
+ }
+ if ($element['self_closing'])
+ {
+ $full .= ' />';
+ }
+ else
+ {
+ $full .= ">$element[content]</$element[tag]>";
+ }
+ return $full;
+ }
+
+ function error($message, $level, $file, $line)
+ {
+ switch ($level)
+ {
+ case E_USER_ERROR:
+ $note = 'PHP Error';
+ break;
+ case E_USER_WARNING:
+ $note = 'PHP Warning';
+ break;
+ case E_USER_NOTICE:
+ $note = 'PHP Notice';
+ break;
+ default:
+ $note = 'Unknown Error';
+ break;
+ }
+ error_log("$note: $message in $file on line $line", 0);
+ return $message;
+ }
+
+ /**
+ * If a file has been cached, retrieve and display it.
+ *
+ * This is most useful for caching images (get_favicon(), etc.),
+ * however it works for all cached files. This WILL NOT display ANY
+ * file/image/page/whatever, but rather only display what has already
+ * been cached by SimplePie.
+ *
+ * @access public
+ * @see SimplePie::get_favicon()
+ * @param str $identifier_url URL that is used to identify the content.
+ * This may or may not be the actual URL of the live content.
+ * @param str $cache_location Location of SimplePie's cache. Defaults
+ * to './cache'.
+ * @param str $cache_extension The file extension that the file was
+ * cached with. Defaults to 'spc'.
+ * @param str $cache_class Name of the cache-handling class being used
+ * in SimplePie. Defaults to 'SimplePie_Cache', and should be left
+ * as-is unless you've overloaded the class.
+ * @param str $cache_name_function Function that converts the filename
+ * for saving. Defaults to 'md5'.
+ */
+ function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5')
+ {
+ $cache =& new $cache_class($cache_location, call_user_func($cache_name_function, $identifier_url), $cache_extension);
+
+ if ($file = $cache->load())
+ {
+ header('Content-type:' . $file['headers']['content-type']);
+ header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days
+ echo $file['body'];
+ exit;
+ }
+
+ die('Cached file for ' . $identifier_url . ' cannot be found.');
+ }
+
+ function fix_protocol($url, $http = 1)
+ {
+ $url = SimplePie_Misc::normalize_url($url);
+ $parsed = SimplePie_Misc::parse_url($url);
+ if ($parsed['scheme'] !== '' && $parsed['scheme'] != 'http' && $parsed['scheme'] != 'https')
+ {
+ return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http);
+ }
+
+ if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url))
+ {
+ return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http);
+ }
+
+ if ($http == 2 && $parsed['scheme'] !== '')
+ {
+ return "feed:$url";
+ }
+ elseif ($http == 3 && strtolower($parsed['scheme']) == 'http')
+ {
+ return substr_replace($url, 'podcast', 0, 4);
+ }
+ elseif ($http == 4 && strtolower($parsed['scheme']) == 'http')
+ {
+ return substr_replace($url, 'itpc', 0, 4);
+ }
+ else
+ {
+ return $url;
+ }
+ }
+
+ function parse_url($url)
+ {
+ static $cache = array();
+ if (isset($cache[$url]))
+ {
+ return $cache[$url];
+ }
+ elseif (preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match))
+ {
+ for ($i = count($match); $i <= 9; $i++)
+ {
+ $match[$i] = '';
+ }
+ return $cache[$url] = array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]);
+ }
+ else
+ {
+ return $cache[$url] = array('scheme' => '', 'authority' => '', 'path' => '', 'query' => '', 'fragment' => '');
+ }
+ }
+
+ function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '')
+ {
+ $return = '';
+ if ($scheme !== '')
+ {
+ $return .= "$scheme:";
+ }
+ if ($authority !== '')
+ {
+ $return .= "//$authority";
+ }
+ if ($path !== '')
+ {
+ $return .= $path;
+ }
+ if ($query !== '')
+ {
+ $return .= "?$query";
+ }
+ if ($fragment !== '')
+ {
+ $return .= "#$fragment";
+ }
+ return $return;
+ }
+
+ function normalize_url($url)
+ {
+ $url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url);
+ $url = SimplePie_Misc::parse_url($url);
+ $url['scheme'] = strtolower($url['scheme']);
+ if ($url['authority'] !== '')
+ {
+ $url['authority'] = strtolower($url['authority']);
+ $url['path'] = SimplePie_Misc::remove_dot_segments($url['path']);
+ }
+ return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']);
+ }
+
+ function percent_encoding_normalization($match)
+ {
+ $integer = hexdec($match[1]);
+ if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer == 0x2D || $integer == 0x2E || $integer == 0x5F || $integer == 0x7E)
+ {
+ return chr($integer);
+ }
+ else
+ {
+ return strtoupper($match[0]);
+ }
+ }
+
+ /**
+ * Remove bad UTF-8 bytes
+ *
+ * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C
+ * FAQ: Multilingual Forms (modified to include full ASCII range)
+ *
+ * @author Geoffrey Sneddon
+ * @see http://www.w3.org/International/questions/qa-forms-utf-8
+ * @param string $str String to remove bad UTF-8 bytes from
+ * @return string UTF-8 string
+ */
+ function utf8_bad_replace($str)
+ {
+ if (function_exists('iconv'))
+ {
+ $out = iconv('UTF-8', 'UTF-8//IGNORE', $str);
+ if($out !== false) return $out;
+ }
+ if (function_exists('mb_convert_encoding'))
+ {
+ return mb_convert_encoding($str, 'UTF-8', 'UTF-8');
+ }
+ elseif (preg_match_all('/([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})/', $str, $matches))
+ {
+ return implode("\xEF\xBF\xBD", $matches[0]);
+ }
+ elseif ($str !== '')
+ {
+ return "\xEF\xBF\xBD";
+ }
+ else
+ {
+ return '';
+ }
+ }
+
+ function change_encoding($data, $input, $output)
+ {
+ $input = SimplePie_Misc::encoding($input);
+ $output = SimplePie_Misc::encoding($output);
+
+ if (function_exists('iconv') && ($return = @iconv($input, "$output//IGNORE", $data)))
+ {
+ return $return;
+ }
+ elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
+ {
+ return $return;
+ }
+ elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input)))
+ {
+ return $return;
+ }
+ elseif ($input == 'ISO-8859-1' && $output == 'UTF-8')
+ {
+ return utf8_encode($data);
+ }
+ elseif ($input == 'UTF-8' && $output == 'ISO-8859-1')
+ {
+ return utf8_decode($data);
+ }
+ return $data;
+ }
+
+ function encoding($encoding)
+ {
+ // Character sets are case-insensitive (though we'll return them in the form given in their registration)
+ switch (strtoupper($encoding))
+ {
+ case 'ANSI_X3.4-1968':
+ case 'ISO-IR-6':
+ case 'ANSI_X3.4-1986':
+ case 'ISO_646.IRV:1991':
+ case 'ASCII':
+ case 'ISO646-US':
+ case 'US-ASCII':
+ case 'US':
+ case 'IBM367':
+ case 'CP367':
+ case 'CSASCII':
+ return 'US-ASCII';
+
+ case 'ISO_8859-1:1987':
+ case 'ISO-IR-100':
+ case 'ISO_8859-1':
+ case 'ISO-8859-1':
+ case 'LATIN1':
+ case 'L1':
+ case 'IBM819':
+ case 'CP819':
+ case 'CSISOLATIN1':
+ return 'ISO-8859-1';
+
+ case 'ISO_8859-2:1987':
+ case 'ISO-IR-101':
+ case 'ISO_8859-2':
+ case 'ISO-8859-2':
+ case 'LATIN2':
+ case 'L2':
+ case 'CSISOLATIN2':
+ return 'ISO-8859-2';
+
+ case 'ISO_8859-3:1988':
+ case 'ISO-IR-109':
+ case 'ISO_8859-3':
+ case 'ISO-8859-3':
+ case 'LATIN3':
+ case 'L3':
+ case 'CSISOLATIN3':
+ return 'ISO-8859-3';
+
+ case 'ISO_8859-4:1988':
+ case 'ISO-IR-110':
+ case 'ISO_8859-4':
+ case 'ISO-8859-4':
+ case 'LATIN4':
+ case 'L4':
+ case 'CSISOLATIN4':
+ return 'ISO-8859-4';
+
+ case 'ISO_8859-5:1988':
+ case 'ISO-IR-144':
+ case 'ISO_8859-5':
+ case 'ISO-8859-5':
+ case 'CYRILLIC':
+ case 'CSISOLATINCYRILLIC':
+ return 'ISO-8859-5';
+
+ case 'ISO_8859-6:1987':
+ case 'ISO-IR-127':
+ case 'ISO_8859-6':
+ case 'ISO-8859-6':
+ case 'ECMA-114':
+ case 'ASMO-708':
+ case 'ARABIC':
+ case 'CSISOLATINARABIC':
+ return 'ISO-8859-6';
+
+ case 'ISO_8859-7:1987':
+ case 'ISO-IR-126':
+ case 'ISO_8859-7':
+ case 'ISO-8859-7':
+ case 'ELOT_928':
+ case 'ECMA-118':
+ case 'GREEK':
+ case 'GREEK8':
+ case 'CSISOLATINGREEK':
+ return 'ISO-8859-7';
+
+ case 'ISO_8859-8:1988':
+ case 'ISO-IR-138':
+ case 'ISO_8859-8':
+ case 'ISO-8859-8':
+ case 'HEBREW':
+ case 'CSISOLATINHEBREW':
+ return 'ISO-8859-8';
+
+ case 'ISO_8859-9:1989':
+ case 'ISO-IR-148':
+ case 'ISO_8859-9':
+ case 'ISO-8859-9':
+ case 'LATIN5':
+ case 'L5':
+ case 'CSISOLATIN5':
+ return 'ISO-8859-9';
+
+ case 'ISO-8859-10':
+ case 'ISO-IR-157':
+ case 'L6':
+ case 'ISO_8859-10:1992':
+ case 'CSISOLATIN6':
+ case 'LATIN6':
+ return 'ISO-8859-10';
+
+ case 'ISO_6937-2-ADD':
+ case 'ISO-IR-142':
+ case 'CSISOTEXTCOMM':
+ return 'ISO_6937-2-add';
+
+ case 'JIS_X0201':
+ case 'X0201':
+ case 'CSHALFWIDTHKATAKANA':
+ return 'JIS_X0201';
+
+ case 'JIS_ENCODING':
+ case 'CSJISENCODING':
+ return 'JIS_Encoding';
+
+ case 'SHIFT_JIS':
+ case 'MS_KANJI':
+ case 'CSSHIFTJIS':
+ return 'Shift_JIS';
+
+ case 'EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE':
+ case 'CSEUCPKDFMTJAPANESE':
+ case 'EUC-JP':
+ return 'EUC-JP';
+
+ case 'EXTENDED_UNIX_CODE_FIXED_WIDTH_FOR_JAPANESE':
+ case 'CSEUCFIXWIDJAPANESE':
+ return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
+
+ case 'BS_4730':
+ case 'ISO-IR-4':
+ case 'ISO646-GB':
+ case 'GB':
+ case 'UK':
+ case 'CSISO4UNITEDKINGDOM':
+ return 'BS_4730';
+
+ case 'SEN_850200_C':
+ case 'ISO-IR-11':
+ case 'ISO646-SE2':
+ case 'SE2':
+ case 'CSISO11SWEDISHFORNAMES':
+ return 'SEN_850200_C';
+
+ case 'IT':
+ case 'ISO-IR-15':
+ case 'ISO646-IT':
+ case 'CSISO15ITALIAN':
+ return 'IT';
+
+ case 'ES':
+ case 'ISO-IR-17':
+ case 'ISO646-ES':
+ case 'CSISO17SPANISH':
+ return 'ES';
+
+ case 'DIN_66003':
+ case 'ISO-IR-21':
+ case 'DE':
+ case 'ISO646-DE':
+ case 'CSISO21GERMAN':
+ return 'DIN_66003';
+
+ case 'NS_4551-1':
+ case 'ISO-IR-60':
+ case 'ISO646-NO':
+ case 'NO':
+ case 'CSISO60DANISHNORWEGIAN':
+ case 'CSISO60NORWEGIAN1':
+ return 'NS_4551-1';
+
+ case 'NF_Z_62-010':
+ case 'ISO-IR-69':
+ case 'ISO646-FR':
+ case 'FR':
+ case 'CSISO69FRENCH':
+ return 'NF_Z_62-010';
+
+ case 'ISO-10646-UTF-1':
+ case 'CSISO10646UTF1':
+ return 'ISO-10646-UTF-1';
+
+ case 'ISO_646.BASIC:1983':
+ case 'REF':
+ case 'CSISO646BASIC1983':
+ return 'ISO_646.basic:1983';
+
+ case 'INVARIANT':
+ case 'CSINVARIANT':
+ return 'INVARIANT';
+
+ case 'ISO_646.IRV:1983':
+ case 'ISO-IR-2':
+ case 'IRV':
+ case 'CSISO2INTLREFVERSION':
+ return 'ISO_646.irv:1983';
+
+ case 'NATS-SEFI':
+ case 'ISO-IR-8-1':
+ case 'CSNATSSEFI':
+ return 'NATS-SEFI';
+
+ case 'NATS-SEFI-ADD':
+ case 'ISO-IR-8-2':
+ case 'CSNATSSEFIADD':
+ return 'NATS-SEFI-ADD';
+
+ case 'NATS-DANO':
+ case 'ISO-IR-9-1':
+ case 'CSNATSDANO':
+ return 'NATS-DANO';
+
+ case 'NATS-DANO-ADD':
+ case 'ISO-IR-9-2':
+ case 'CSNATSDANOADD':
+ return 'NATS-DANO-ADD';
+
+ case 'SEN_850200_B':
+ case 'ISO-IR-10':
+ case 'FI':
+ case 'ISO646-FI':
+ case 'ISO646-SE':
+ case 'SE':
+ case 'CSISO10SWEDISH':
+ return 'SEN_850200_B';
+
+ case 'KS_C_5601-1987':
+ case 'ISO-IR-149':
+ case 'KS_C_5601-1989':
+ case 'KSC_5601':
+ case 'KOREAN':
+ case 'CSKSC56011987':
+ return 'KS_C_5601-1987';
+
+ case 'ISO-2022-KR':
+ case 'CSISO2022KR':
+ return 'ISO-2022-KR';
+
+ case 'EUC-KR':
+ case 'CSEUCKR':
+ return 'EUC-KR';
+
+ case 'ISO-2022-JP':
+ case 'CSISO2022JP':
+ return 'ISO-2022-JP';
+
+ case 'ISO-2022-JP-2':
+ case 'CSISO2022JP2':
+ return 'ISO-2022-JP-2';
+
+ case 'JIS_C6220-1969-JP':
+ case 'JIS_C6220-1969':
+ case 'ISO-IR-13':
+ case 'KATAKANA':
+ case 'X0201-7':
+ case 'CSISO13JISC6220JP':
+ return 'JIS_C6220-1969-jp';
+
+ case 'JIS_C6220-1969-RO':
+ case 'ISO-IR-14':
+ case 'JP':
+ case 'ISO646-JP':
+ case 'CSISO14JISC6220RO':
+ return 'JIS_C6220-1969-ro';
+
+ case 'PT':
+ case 'ISO-IR-16':
+ case 'ISO646-PT':
+ case 'CSISO16PORTUGUESE':
+ return 'PT';
+
+ case 'GREEK7-OLD':
+ case 'ISO-IR-18':
+ case 'CSISO18GREEK7OLD':
+ return 'greek7-old';
+
+ case 'LATIN-GREEK':
+ case 'ISO-IR-19':
+ case 'CSISO19LATINGREEK':
+ return 'latin-greek';
+
+ case 'NF_Z_62-010_(1973)':
+ case 'ISO-IR-25':
+ case 'ISO646-FR1':
+ case 'CSISO25FRENCH':
+ return 'NF_Z_62-010_(1973)';
+
+ case 'LATIN-GREEK-1':
+ case 'ISO-IR-27':
+ case 'CSISO27LATINGREEK1':
+ return 'Latin-greek-1';
+
+ case 'ISO_5427':
+ case 'ISO-IR-37':
+ case 'CSISO5427CYRILLIC':
+ return 'ISO_5427';
+
+ case 'JIS_C6226-1978':
+ case 'ISO-IR-42':
+ case 'CSISO42JISC62261978':
+ return 'JIS_C6226-1978';
+
+ case 'BS_VIEWDATA':
+ case 'ISO-IR-47':
+ case 'CSISO47BSVIEWDATA':
+ return 'BS_viewdata';
+
+ case 'INIS':
+ case 'ISO-IR-49':
+ case 'CSISO49INIS':
+ return 'INIS';
+
+ case 'INIS-8':
+ case 'ISO-IR-50':
+ case 'CSISO50INIS8':
+ return 'INIS-8';
+
+ case 'INIS-CYRILLIC':
+ case 'ISO-IR-51':
+ case 'CSISO51INISCYRILLIC':
+ return 'INIS-cyrillic';
+
+ case 'ISO_5427:1981':
+ case 'ISO-IR-54':
+ case 'ISO5427CYRILLIC1981':
+ return 'ISO_5427:1981';
+
+ case 'ISO_5428:1980':
+ case 'ISO-IR-55':
+ case 'CSISO5428GREEK':
+ return 'ISO_5428:1980';
+
+ case 'GB_1988-80':
+ case 'ISO-IR-57':
+ case 'CN':
+ case 'ISO646-CN':
+ case 'CSISO57GB1988':
+ return 'GB_1988-80';
+
+ case 'GB_2312-80':
+ case 'ISO-IR-58':
+ case 'CHINESE':
+ case 'CSISO58GB231280':
+ return 'GB_2312-80';
+
+ case 'NS_4551-2':
+ case 'ISO646-NO2':
+ case 'ISO-IR-61':
+ case 'NO2':
+ case 'CSISO61NORWEGIAN2':
+ return 'NS_4551-2';
+
+ case 'VIDEOTEX-SUPPL':
+ case 'ISO-IR-70':
+ case 'CSISO70VIDEOTEXSUPP1':
+ return 'videotex-suppl';
+
+ case 'PT2':
+ case 'ISO-IR-84':
+ case 'ISO646-PT2':
+ case 'CSISO84PORTUGUESE2':
+ return 'PT2';
+
+ case 'ES2':
+ case 'ISO-IR-85':
+ case 'ISO646-ES2':
+ case 'CSISO85SPANISH2':
+ return 'ES2';
+
+ case 'MSZ_7795.3':
+ case 'ISO-IR-86':
+ case 'ISO646-HU':
+ case 'HU':
+ case 'CSISO86HUNGARIAN':
+ return 'MSZ_7795.3';
+
+ case 'JIS_C6226-1983':
+ case 'ISO-IR-87':
+ case 'X0208':
+ case 'JIS_X0208-1983':
+ case 'CSISO87JISX0208':
+ return 'JIS_C6226-1983';
+
+ case 'GREEK7':
+ case 'ISO-IR-88':
+ case 'CSISO88GREEK7':
+ return 'greek7';
+
+ case 'ASMO_449':
+ case 'ISO_9036':
+ case 'ARABIC7':
+ case 'ISO-IR-89':
+ case 'CSISO89ASMO449':
+ return 'ASMO_449';
+
+ case 'ISO-IR-90':
+ case 'CSISO90':
+ return 'iso-ir-90';
+
+ case 'JIS_C6229-1984-A':
+ case 'ISO-IR-91':
+ case 'JP-OCR-A':
+ case 'CSISO91JISC62291984A':
+ return 'JIS_C6229-1984-a';
+
+ case 'JIS_C6229-1984-B':
+ case 'ISO-IR-92':
+ case 'ISO646-JP-OCR-B':
+ case 'JP-OCR-B':
+ case 'CSISO92JISC62991984B':
+ return 'JIS_C6229-1984-b';
+
+ case 'JIS_C6229-1984-B-ADD':
+ case 'ISO-IR-93':
+ case 'JP-OCR-B-ADD':
+ case 'CSISO93JIS62291984BADD':
+ return 'JIS_C6229-1984-b-add';
+
+ case 'JIS_C6229-1984-HAND':
+ case 'ISO-IR-94':
+ case 'JP-OCR-HAND':
+ case 'CSISO94JIS62291984HAND':
+ return 'JIS_C6229-1984-hand';
+
+ case 'JIS_C6229-1984-HAND-ADD':
+ case 'ISO-IR-95':
+ case 'JP-OCR-HAND-ADD':
+ case 'CSISO95JIS62291984HANDADD':
+ return 'JIS_C6229-1984-hand-add';
+
+ case 'JIS_C6229-1984-KANA':
+ case 'ISO-IR-96':
+ case 'CSISO96JISC62291984KANA':
+ return 'JIS_C6229-1984-kana';
+
+ case 'ISO_2033-1983':
+ case 'ISO-IR-98':
+ case 'E13B':
+ case 'CSISO2033':
+ return 'ISO_2033-1983';
+
+ case 'ANSI_X3.110-1983':
+ case 'ISO-IR-99':
+ case 'CSA_T500-1983':
+ case 'NAPLPS':
+ case 'CSISO99NAPLPS':
+ return 'ANSI_X3.110-1983';
+
+ case 'T.61-7BIT':
+ case 'ISO-IR-102':
+ case 'CSISO102T617BIT':
+ return 'T.61-7bit';
+
+ case 'T.61-8BIT':
+ case 'T.61':
+ case 'ISO-IR-103':
+ case 'CSISO103T618BIT':
+ return 'T.61-8bit';
+
+ case 'ECMA-CYRILLIC':
+ case 'ISO-IR-111':
+ case 'KOI8-E':
+ case 'CSISO111ECMACYRILLIC':
+ return 'ECMA-cyrillic';
+
+ case 'CSA_Z243.4-1985-1':
+ case 'ISO-IR-121':
+ case 'ISO646-CA':
+ case 'CSA7-1':
+ case 'CA':
+ case 'CSISO121CANADIAN1':
+ return 'CSA_Z243.4-1985-1';
+
+ case 'CSA_Z243.4-1985-2':
+ case 'ISO-IR-122':
+ case 'ISO646-CA2':
+ case 'CSA7-2':
+ case 'CSISO122CANADIAN2':
+ return 'CSA_Z243.4-1985-2';
+
+ case 'CSA_Z243.4-1985-GR':
+ case 'ISO-IR-123':
+ case 'CSISO123CSAZ24341985GR':
+ return 'CSA_Z243.4-1985-gr';
+
+ case 'ISO_8859-6-E':
+ case 'CSISO88596E':
+ case 'ISO-8859-6-E':
+ return 'ISO-8859-6-E';
+
+ case 'ISO_8859-6-I':
+ case 'CSISO88596I':
+ case 'ISO-8859-6-I':
+ return 'ISO-8859-6-I';
+
+ case 'T.101-G2':
+ case 'ISO-IR-128':
+ case 'CSISO128T101G2':
+ return 'T.101-G2';
+
+ case 'ISO_8859-8-E':
+ case 'CSISO88598E':
+ case 'ISO-8859-8-E':
+ return 'ISO-8859-8-E';
+
+ case 'ISO_8859-8-I':
+ case 'CSISO88598I':
+ case 'ISO-8859-8-I':
+ return 'ISO-8859-8-I';
+
+ case 'CSN_369103':
+ case 'ISO-IR-139':
+ case 'CSISO139CSN369103':
+ return 'CSN_369103';
+
+ case 'JUS_I.B1.002':
+ case 'ISO-IR-141':
+ case 'ISO646-YU':
+ case 'JS':
+ case 'YU':
+ case 'CSISO141JUSIB1002':
+ return 'JUS_I.B1.002';
+
+ case 'IEC_P27-1':
+ case 'ISO-IR-143':
+ case 'CSISO143IECP271':
+ return 'IEC_P27-1';
+
+ case 'JUS_I.B1.003-SERB':
+ case 'ISO-IR-146':
+ case 'SERBIAN':
+ case 'CSISO146SERBIAN':
+ return 'JUS_I.B1.003-serb';
+
+ case 'JUS_I.B1.003-MAC':
+ case 'MACEDONIAN':
+ case 'ISO-IR-147':
+ case 'CSISO147MACEDONIAN':
+ return 'JUS_I.B1.003-mac';
+
+ case 'GREEK-CCITT':
+ case 'ISO-IR-150':
+ case 'CSISO150':
+ case 'CSISO150GREEKCCITT':
+ return 'greek-ccitt';
+
+ case 'NC_NC00-10:81':
+ case 'CUBA':
+ case 'ISO-IR-151':
+ case 'ISO646-CU':
+ case 'CSISO151CUBA':
+ return 'NC_NC00-10:81';
+
+ case 'ISO_6937-2-25':
+ case 'ISO-IR-152':
+ case 'CSISO6937ADD':
+ return 'ISO_6937-2-25';
+
+ case 'GOST_19768-74':
+ case 'ST_SEV_358-88':
+ case 'ISO-IR-153':
+ case 'CSISO153GOST1976874':
+ return 'GOST_19768-74';
+
+ case 'ISO_8859-SUPP':
+ case 'ISO-IR-154':
+ case 'LATIN1-2-5':
+ case 'CSISO8859SUPP':
+ return 'ISO_8859-supp';
+
+ case 'ISO_10367-BOX':
+ case 'ISO-IR-155':
+ case 'CSISO10367BOX':
+ return 'ISO_10367-box';
+
+ case 'LATIN-LAP':
+ case 'LAP':
+ case 'ISO-IR-158':
+ case 'CSISO158LAP':
+ return 'latin-lap';
+
+ case 'JIS_X0212-1990':
+ case 'X0212':
+ case 'ISO-IR-159':
+ case 'CSISO159JISX02121990':
+ return 'JIS_X0212-1990';
+
+ case 'DS_2089':
+ case 'DS2089':
+ case 'ISO646-DK':
+ case 'DK':
+ case 'CSISO646DANISH':
+ return 'DS_2089';
+
+ case 'US-DK':
+ case 'CSUSDK':
+ return 'us-dk';
+
+ case 'DK-US':
+ case 'CSDKUS':
+ return 'dk-us';
+
+ case 'KSC5636':
+ case 'ISO646-KR':
+ case 'CSKSC5636':
+ return 'KSC5636';
+
+ case 'UNICODE-1-1-UTF-7':
+ case 'CSUNICODE11UTF7':
+ return 'UNICODE-1-1-UTF-7';
+
+ case 'ISO-2022-CN':
+ return 'ISO-2022-CN';
+
+ case 'ISO-2022-CN-EXT':
+ return 'ISO-2022-CN-EXT';
+
+ case 'UTF-8':
+ return 'UTF-8';
+
+ case 'ISO-8859-13':
+ return 'ISO-8859-13';
+
+ case 'ISO-8859-14':
+ case 'ISO-IR-199':
+ case 'ISO_8859-14:1998':
+ case 'ISO_8859-14':
+ case 'LATIN8':
+ case 'ISO-CELTIC':
+ case 'L8':
+ return 'ISO-8859-14';
+
+ case 'ISO-8859-15':
+ case 'ISO_8859-15':
+ case 'LATIN-9':
+ return 'ISO-8859-15';
+
+ case 'ISO-8859-16':
+ case 'ISO-IR-226':
+ case 'ISO_8859-16:2001':
+ case 'ISO_8859-16':
+ case 'LATIN10':
+ case 'L10':
+ return 'ISO-8859-16';
+
+ case 'GBK':
+ case 'CP936':
+ case 'MS936':
+ case 'WINDOWS-936':
+ return 'GBK';
+
+ case 'GB18030':
+ return 'GB18030';
+
+ case 'OSD_EBCDIC_DF04_15':
+ return 'OSD_EBCDIC_DF04_15';
+
+ case 'OSD_EBCDIC_DF03_IRV':
+ return 'OSD_EBCDIC_DF03_IRV';
+
+ case 'OSD_EBCDIC_DF04_1':
+ return 'OSD_EBCDIC_DF04_1';
+
+ case 'ISO-11548-1':
+ case 'ISO_11548-1':
+ case 'ISO_TR_11548-1':
+ case 'CSISO115481':
+ return 'ISO-11548-1';
+
+ case 'KZ-1048':
+ case 'STRK1048-2002':
+ case 'RK1048':
+ case 'CSKZ1048':
+ return 'KZ-1048';
+
+ case 'ISO-10646-UCS-2':
+ case 'CSUNICODE':
+ return 'ISO-10646-UCS-2';
+
+ case 'ISO-10646-UCS-4':
+ case 'CSUCS4':
+ return 'ISO-10646-UCS-4';
+
+ case 'ISO-10646-UCS-BASIC':
+ case 'CSUNICODEASCII':
+ return 'ISO-10646-UCS-Basic';
+
+ case 'ISO-10646-UNICODE-LATIN1':
+ case 'CSUNICODELATIN1':
+ case 'ISO-10646':
+ return 'ISO-10646-Unicode-Latin1';
+
+ case 'ISO-10646-J-1':
+ return 'ISO-10646-J-1';
+
+ case 'ISO-UNICODE-IBM-1261':
+ case 'CSUNICODEIBM1261':
+ return 'ISO-Unicode-IBM-1261';
+
+ case 'ISO-UNICODE-IBM-1268':
+ case 'CSUNICODEIBM1268':
+ return 'ISO-Unicode-IBM-1268';
+
+ case 'ISO-UNICODE-IBM-1276':
+ case 'CSUNICODEIBM1276':
+ return 'ISO-Unicode-IBM-1276';
+
+ case 'ISO-UNICODE-IBM-1264':
+ case 'CSUNICODEIBM1264':
+ return 'ISO-Unicode-IBM-1264';
+
+ case 'ISO-UNICODE-IBM-1265':
+ case 'CSUNICODEIBM1265':
+ return 'ISO-Unicode-IBM-1265';
+
+ case 'UNICODE-1-1':
+ case 'CSUNICODE11':
+ return 'UNICODE-1-1';
+
+ case 'SCSU':
+ return 'SCSU';
+
+ case 'UTF-7':
+ return 'UTF-7';
+
+ case 'UTF-16BE':
+ return 'UTF-16BE';
+
+ case 'UTF-16LE':
+ return 'UTF-16LE';
+
+ case 'UTF-16':
+ return 'UTF-16';
+
+ case 'CESU-8':
+ case 'CSCESU-8':
+ return 'CESU-8';
+
+ case 'UTF-32':
+ return 'UTF-32';
+
+ case 'UTF-32BE':
+ return 'UTF-32BE';
+
+ case 'UTF-32LE':
+ return 'UTF-32LE';
+
+ case 'BOCU-1':
+ case 'CSBOCU-1':
+ return 'BOCU-1';
+
+ case 'ISO-8859-1-WINDOWS-3.0-LATIN-1':
+ case 'CSWINDOWS30LATIN1':
+ return 'ISO-8859-1-Windows-3.0-Latin-1';
+
+ case 'ISO-8859-1-WINDOWS-3.1-LATIN-1':
+ case 'CSWINDOWS31LATIN1':
+ return 'ISO-8859-1-Windows-3.1-Latin-1';
+
+ case 'ISO-8859-2-WINDOWS-LATIN-2':
+ case 'CSWINDOWS31LATIN2':
+ return 'ISO-8859-2-Windows-Latin-2';
+
+ case 'ISO-8859-9-WINDOWS-LATIN-5':
+ case 'CSWINDOWS31LATIN5':
+ return 'ISO-8859-9-Windows-Latin-5';
+
+ case 'HP-ROMAN8':
+ case 'ROMAN8':
+ case 'R8':
+ case 'CSHPROMAN8':
+ return 'hp-roman8';
+
+ case 'ADOBE-STANDARD-ENCODING':
+ case 'CSADOBESTANDARDENCODING':
+ return 'Adobe-Standard-Encoding';
+
+ case 'VENTURA-US':
+ case 'CSVENTURAUS':
+ return 'Ventura-US';
+
+ case 'VENTURA-INTERNATIONAL':
+ case 'CSVENTURAINTERNATIONAL':
+ return 'Ventura-International';
+
+ case 'DEC-MCS':
+ case 'DEC':
+ case 'CSDECMCS':
+ return 'DEC-MCS';
+
+ case 'IBM850':
+ case 'CP850':
+ case '850':
+ case 'CSPC850MULTILINGUAL':
+ return 'IBM850';
+
+ case 'PC8-DANISH-NORWEGIAN':
+ case 'CSPC8DANISHNORWEGIAN':
+ return 'PC8-Danish-Norwegian';
+
+ case 'IBM862':
+ case 'CP862':
+ case '862':
+ case 'CSPC862LATINHEBREW':
+ return 'IBM862';
+
+ case 'PC8-TURKISH':
+ case 'CSPC8TURKISH':
+ return 'PC8-Turkish';
+
+ case 'IBM-SYMBOLS':
+ case 'CSIBMSYMBOLS':
+ return 'IBM-Symbols';
+
+ case 'IBM-THAI':
+ case 'CSIBMTHAI':
+ return 'IBM-Thai';
+
+ case 'HP-LEGAL':
+ case 'CSHPLEGAL':
+ return 'HP-Legal';
+
+ case 'HP-PI-FONT':
+ case 'CSHPPIFONT':
+ return 'HP-Pi-font';
+
+ case 'HP-MATH8':
+ case 'CSHPMATH8':
+ return 'HP-Math8';
+
+ case 'ADOBE-SYMBOL-ENCODING':
+ case 'CSHPPSMATH':
+ return 'Adobe-Symbol-Encoding';
+
+ case 'HP-DESKTOP':
+ case 'CSHPDESKTOP':
+ return 'HP-DeskTop';
+
+ case 'VENTURA-MATH':
+ case 'CSVENTURAMATH':
+ return 'Ventura-Math';
+
+ case 'MICROSOFT-PUBLISHING':
+ case 'CSMICROSOFTPUBLISHING':
+ return 'Microsoft-Publishing';
+
+ case 'WINDOWS-31J':
+ case 'CSWINDOWS31J':
+ return 'Windows-31J';
+
+ case 'GB2312':
+ case 'CSGB2312':
+ return 'GB2312';
+
+ case 'BIG5':
+ case 'CSBIG5':
+ return 'Big5';
+
+ case 'MACINTOSH':
+ case 'MAC':
+ case 'CSMACINTOSH':
+ return 'macintosh';
+
+ case 'IBM037':
+ case 'CP037':
+ case 'EBCDIC-CP-US':
+ case 'EBCDIC-CP-CA':
+ case 'EBCDIC-CP-WT':
+ case 'EBCDIC-CP-NL':
+ case 'CSIBM037':
+ return 'IBM037';
+
+ case 'IBM038':
+ case 'EBCDIC-INT':
+ case 'CP038':
+ case 'CSIBM038':
+ return 'IBM038';
+
+ case 'IBM273':
+ case 'CP273':
+ case 'CSIBM273':
+ return 'IBM273';
+
+ case 'IBM274':
+ case 'EBCDIC-BE':
+ case 'CP274':
+ case 'CSIBM274':
+ return 'IBM274';
+
+ case 'IBM275':
+ case 'EBCDIC-BR':
+ case 'CP275':
+ case 'CSIBM275':
+ return 'IBM275';
+
+ case 'IBM277':
+ case 'EBCDIC-CP-DK':
+ case 'EBCDIC-CP-NO':
+ case 'CSIBM277':
+ return 'IBM277';
+
+ case 'IBM278':
+ case 'CP278':
+ case 'EBCDIC-CP-FI':
+ case 'EBCDIC-CP-SE':
+ case 'CSIBM278':
+ return 'IBM278';
+
+ case 'IBM280':
+ case 'CP280':
+ case 'EBCDIC-CP-IT':
+ case 'CSIBM280':
+ return 'IBM280';
+
+ case 'IBM281':
+ case 'EBCDIC-JP-E':
+ case 'CP281':
+ case 'CSIBM281':
+ return 'IBM281';
+
+ case 'IBM284':
+ case 'CP284':
+ case 'EBCDIC-CP-ES':
+ case 'CSIBM284':
+ return 'IBM284';
+
+ case 'IBM285':
+ case 'CP285':
+ case 'EBCDIC-CP-GB':
+ case 'CSIBM285':
+ return 'IBM285';
+
+ case 'IBM290':
+ case 'CP290':
+ case 'EBCDIC-JP-KANA':
+ case 'CSIBM290':
+ return 'IBM290';
+
+ case 'IBM297':
+ case 'CP297':
+ case 'EBCDIC-CP-FR':
+ case 'CSIBM297':
+ return 'IBM297';
+
+ case 'IBM420':
+ case 'CP420':
+ case 'EBCDIC-CP-AR1':
+ case 'CSIBM420':
+ return 'IBM420';
+
+ case 'IBM423':
+ case 'CP423':
+ case 'EBCDIC-CP-GR':
+ case 'CSIBM423':
+ return 'IBM423';
+
+ case 'IBM424':
+ case 'CP424':
+ case 'EBCDIC-CP-HE':
+ case 'CSIBM424':
+ return 'IBM424';
+
+ case 'IBM437':
+ case 'CP437':
+ case '437':
+ case 'CSPC8CODEPAGE437':
+ return 'IBM437';
+
+ case 'IBM500':
+ case 'CP500':
+ case 'EBCDIC-CP-BE':
+ case 'EBCDIC-CP-CH':
+ case 'CSIBM500':
+ return 'IBM500';
+
+ case 'IBM851':
+ case 'CP851':
+ case '851':
+ case 'CSIBM851':
+ return 'IBM851';
+
+ case 'IBM852':
+ case 'CP852':
+ case '852':
+ case 'CSPCP852':
+ return 'IBM852';
+
+ case 'IBM855':
+ case 'CP855':
+ case '855':
+ case 'CSIBM855':
+ return 'IBM855';
+
+ case 'IBM857':
+ case 'CP857':
+ case '857':
+ case 'CSIBM857':
+ return 'IBM857';
+
+ case 'IBM860':
+ case 'CP860':
+ case '860':
+ case 'CSIBM860':
+ return 'IBM860';
+
+ case 'IBM861':
+ case 'CP861':
+ case '861':
+ case 'CP-IS':
+ case 'CSIBM861':
+ return 'IBM861';
+
+ case 'IBM863':
+ case 'CP863':
+ case '863':
+ case 'CSIBM863':
+ return 'IBM863';
+
+ case 'IBM864':
+ case 'CP864':
+ case 'CSIBM864':
+ return 'IBM864';
+
+ case 'IBM865':
+ case 'CP865':
+ case '865':
+ case 'CSIBM865':
+ return 'IBM865';
+
+ case 'IBM868':
+ case 'CP868':
+ case 'CP-AR':
+ case 'CSIBM868':
+ return 'IBM868';
+
+ case 'IBM869':
+ case 'CP869':
+ case '869':
+ case 'CP-GR':
+ case 'CSIBM869':
+ return 'IBM869';
+
+ case 'IBM870':
+ case 'CP870':
+ case 'EBCDIC-CP-ROECE':
+ case 'EBCDIC-CP-YU':
+ case 'CSIBM870':
+ return 'IBM870';
+
+ case 'IBM871':
+ case 'CP871':
+ case 'EBCDIC-CP-IS':
+ case 'CSIBM871':
+ return 'IBM871';
+
+ case 'IBM880':
+ case 'CP880':
+ case 'EBCDIC-CYRILLIC':
+ case 'CSIBM880':
+ return 'IBM880';
+
+ case 'IBM891':
+ case 'CP891':
+ case 'CSIBM891':
+ return 'IBM891';
+
+ case 'IBM903':
+ case 'CP903':
+ case 'CSIBM903':
+ return 'IBM903';
+
+ case 'IBM904':
+ case 'CP904':
+ case '904':
+ case 'CSIBBM904':
+ return 'IBM904';
+
+ case 'IBM905':
+ case 'CP905':
+ case 'EBCDIC-CP-TR':
+ case 'CSIBM905':
+ return 'IBM905';
+
+ case 'IBM918':
+ case 'CP918':
+ case 'EBCDIC-CP-AR2':
+ case 'CSIBM918':
+ return 'IBM918';
+
+ case 'IBM1026':
+ case 'CP1026':
+ case 'CSIBM1026':
+ return 'IBM1026';
+
+ case 'EBCDIC-AT-DE':
+ case 'CSIBMEBCDICATDE':
+ return 'EBCDIC-AT-DE';
+
+ case 'EBCDIC-AT-DE-A':
+ case 'CSEBCDICATDEA':
+ return 'EBCDIC-AT-DE-A';
+
+ case 'EBCDIC-CA-FR':
+ case 'CSEBCDICCAFR':
+ return 'EBCDIC-CA-FR';
+
+ case 'EBCDIC-DK-NO':
+ case 'CSEBCDICDKNO':
+ return 'EBCDIC-DK-NO';
+
+ case 'EBCDIC-DK-NO-A':
+ case 'CSEBCDICDKNOA':
+ return 'EBCDIC-DK-NO-A';
+
+ case 'EBCDIC-FI-SE':
+ case 'CSEBCDICFISE':
+ return 'EBCDIC-FI-SE';
+
+ case 'EBCDIC-FI-SE-A':
+ case 'CSEBCDICFISEA':
+ return 'EBCDIC-FI-SE-A';
+
+ case 'EBCDIC-FR':
+ case 'CSEBCDICFR':
+ return 'EBCDIC-FR';
+
+ case 'EBCDIC-IT':
+ case 'CSEBCDICIT':
+ return 'EBCDIC-IT';
+
+ case 'EBCDIC-PT':
+ case 'CSEBCDICPT':
+ return 'EBCDIC-PT';
+
+ case 'EBCDIC-ES':
+ case 'CSEBCDICES':
+ return 'EBCDIC-ES';
+
+ case 'EBCDIC-ES-A':
+ case 'CSEBCDICESA':
+ return 'EBCDIC-ES-A';
+
+ case 'EBCDIC-ES-S':
+ case 'CSEBCDICESS':
+ return 'EBCDIC-ES-S';
+
+ case 'EBCDIC-UK':
+ case 'CSEBCDICUK':
+ return 'EBCDIC-UK';
+
+ case 'EBCDIC-US':
+ case 'CSEBCDICUS':
+ return 'EBCDIC-US';
+
+ case 'UNKNOWN-8BIT':
+ case 'CSUNKNOWN8BIT':
+ return 'UNKNOWN-8BIT';
+
+ case 'MNEMONIC':
+ case 'CSMNEMONIC':
+ return 'MNEMONIC';
+
+ case 'MNEM':
+ case 'CSMNEM':
+ return 'MNEM';
+
+ case 'VISCII':
+ case 'CSVISCII':
+ return 'VISCII';
+
+ case 'VIQR':
+ case 'CSVIQR':
+ return 'VIQR';
+
+ case 'KOI8-R':
+ case 'CSKOI8R':
+ return 'KOI8-R';
+
+ case 'HZ-GB-2312':
+ return 'HZ-GB-2312';
+
+ case 'IBM866':
+ case 'CP866':
+ case '866':
+ case 'CSIBM866':
+ return 'IBM866';
+
+ case 'IBM775':
+ case 'CP775':
+ case 'CSPC775BALTIC':
+ return 'IBM775';
+
+ case 'KOI8-U':
+ return 'KOI8-U';
+
+ case 'IBM00858':
+ case 'CCSID00858':
+ case 'CP00858':
+ case 'PC-MULTILINGUAL-850+EURO':
+ return 'IBM00858';
+
+ case 'IBM00924':
+ case 'CCSID00924':
+ case 'CP00924':
+ case 'EBCDIC-LATIN9--EURO':
+ return 'IBM00924';
+
+ case 'IBM01140':
+ case 'CCSID01140':
+ case 'CP01140':
+ case 'EBCDIC-US-37+EURO':
+ return 'IBM01140';
+
+ case 'IBM01141':
+ case 'CCSID01141':
+ case 'CP01141':
+ case 'EBCDIC-DE-273+EURO':
+ return 'IBM01141';
+
+ case 'IBM01142':
+ case 'CCSID01142':
+ case 'CP01142':
+ case 'EBCDIC-DK-277+EURO':
+ case 'EBCDIC-NO-277+EURO':
+ return 'IBM01142';
+
+ case 'IBM01143':
+ case 'CCSID01143':
+ case 'CP01143':
+ case 'EBCDIC-FI-278+EURO':
+ case 'EBCDIC-SE-278+EURO':
+ return 'IBM01143';
+
+ case 'IBM01144':
+ case 'CCSID01144':
+ case 'CP01144':
+ case 'EBCDIC-IT-280+EURO':
+ return 'IBM01144';
+
+ case 'IBM01145':
+ case 'CCSID01145':
+ case 'CP01145':
+ case 'EBCDIC-ES-284+EURO':
+ return 'IBM01145';
+
+ case 'IBM01146':
+ case 'CCSID01146':
+ case 'CP01146':
+ case 'EBCDIC-GB-285+EURO':
+ return 'IBM01146';
+
+ case 'IBM01147':
+ case 'CCSID01147':
+ case 'CP01147':
+ case 'EBCDIC-FR-297+EURO':
+ return 'IBM01147';
+
+ case 'IBM01148':
+ case 'CCSID01148':
+ case 'CP01148':
+ case 'EBCDIC-INTERNATIONAL-500+EURO':
+ return 'IBM01148';
+
+ case 'IBM01149':
+ case 'CCSID01149':
+ case 'CP01149':
+ case 'EBCDIC-IS-871+EURO':
+ return 'IBM01149';
+
+ case 'BIG5-HKSCS':
+ return 'Big5-HKSCS';
+
+ case 'IBM1047':
+ case 'IBM-1047':
+ return 'IBM1047';
+
+ case 'PTCP154':
+ case 'CSPTCP154':
+ case 'PT154':
+ case 'CP154':
+ case 'CYRILLIC-ASIAN':
+ return 'PTCP154';
+
+ case 'AMIGA-1251':
+ case 'AMI1251':
+ case 'AMIGA1251':
+ case 'AMI-1251':
+ return 'Amiga-1251';
+
+ case 'KOI7-SWITCHED':
+ return 'KOI7-switched';
+
+ case 'BRF':
+ case 'CSBRF':
+ return 'BRF';
+
+ case 'TSCII':
+ case 'CSTSCII':
+ return 'TSCII';
+
+ case 'WINDOWS-1250':
+ return 'windows-1250';
+
+ case 'WINDOWS-1251':
+ return 'windows-1251';
+
+ case 'WINDOWS-1252':
+ return 'windows-1252';
+
+ case 'WINDOWS-1253':
+ return 'windows-1253';
+
+ case 'WINDOWS-1254':
+ return 'windows-1254';
+
+ case 'WINDOWS-1255':
+ return 'windows-1255';
+
+ case 'WINDOWS-1256':
+ return 'windows-1256';
+
+ case 'WINDOWS-1257':
+ return 'windows-1257';
+
+ case 'WINDOWS-1258':
+ return 'windows-1258';
+
+ default:
+ return (string) $encoding;
+ }
+ }
+
+ function get_curl_version()
+ {
+ if (is_array($curl = curl_version()))
+ {
+ $curl = $curl['version'];
+ }
+ elseif (substr($curl, 0, 5) == 'curl/')
+ {
+ $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5));
+ }
+ elseif (substr($curl, 0, 8) == 'libcurl/')
+ {
+ $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8));
+ }
+ else
+ {
+ $curl = 0;
+ }
+ return $curl;
+ }
+
+ function is_subclass_of($class1, $class2)
+ {
+ if (func_num_args() != 2)
+ {
+ trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING);
+ }
+ elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1))
+ {
+ return is_subclass_of($class1, $class2);
+ }
+ elseif (is_string($class1) && is_string($class2))
+ {
+ if (class_exists($class1))
+ {
+ if (class_exists($class2))
+ {
+ $class2 = strtolower($class2);
+ while ($class1 = strtolower(get_parent_class($class1)))
+ {
+ if ($class1 == $class2)
+ {
+ return true;
+ }
+ }
+ }
+ }
+ else
+ {
+ trigger_error('Unknown class passed as parameter', E_USER_WARNNG);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Strip HTML comments
+ *
+ * @access public
+ * @param string $data Data to strip comments from
+ * @return string Comment stripped string
+ */
+ function strip_comments($data)
+ {
+ $output = '';
+ while (($start = strpos($data, '<!--')) !== false)
+ {
+ $output .= substr($data, 0, $start);
+ if (($end = strpos($data, '-->', $start)) !== false)
+ {
+ $data = substr_replace($data, '', 0, $end + 3);
+ }
+ else
+ {
+ $data = '';
+ }
+ }
+ return $output . $data;
+ }
+
+ function parse_date($dt, $rfc822_tz = true)
+ {
+ static $cache = array();
+ if (!isset($cache[$dt][$rfc822_tz]))
+ {
+ $dt = SimplePie_Misc::uncomment_rfc822($dt);
+ /*
+ Capturing subpatterns:
+ 1: RFC 822 date
+ 2: RFC 822 day
+ 3: RFC 822 month
+ 4: RFC 822 year
+ 5: ISO 8601 date
+ 6: ISO 8601 century
+ 7: ISO 8601 year
+ 8: ISO 8601 month
+ 9: ISO 8601 day
+ 10: ISO 8601 ordinal day
+ 11: ISO 8601 month
+ 12: ISO 8601 day
+ 13: ISO 8601 week
+ 14: ISO 8601 day of week
+ 15: Time
+ 16: Hour
+ 17: Hour Decimal
+ 18: Minute
+ 19: Minute Decimal
+ 20: Second
+ 21: Second Decimal
+ 22: Timezone
+ 23: Diff ±
+ 24: Hour
+ 25: Hour Decimal
+ 26: Minute
+ 27: Minute Decimal
+ 28: Alphabetic Timezone
+ */
+ if (preg_match('/^(?:(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)[,\s]+)?(([0-9]{1,2})\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s*([0-9]{4}|[0-9]{2}))|(([0-9]{2})(?:([0-9]{2})(?:(?:-|\s)*(?:([0-9]{2})([0-9]{2})|([0-9]{3})|([0-9]{2})(?:(?:-|\s)*([0-9]{2}))?|W([0-9]{2})(?:(?:-|\s)*([0-9]))?))?)?))((?:T|\s)+([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*([0-9]{2})(?:(?:,|\.)([0-9]*))?)?)?(?:\s)*((?:(\+|-)([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*(?:([0-9]{2})(?:(?:,|\.)([0-9]*))?))?)|(UTC|GMT|EST|CST|MST|PST|EDT|CDT|MDT|PDT|UT|[A-IK-Z]))?)?$/i', $dt, $match))
+ {
+ // Fill all matches
+ for ($i = count($match); $i <= 28; $i++)
+ {
+ $match[$i] = '';
+ }
+
+ // Set blank vars
+ $year = 1970;
+ $month = 1;
+ $day = 1;
+ $hour = 0;
+ $minute = 0;
+ $second = 0;
+ $timezone = false;
+
+ // RFC 822
+ if ($match[1] !== '')
+ {
+ if (strlen($match[4]) == 2)
+ {
+ $year = ($match[4] < 70) ? "20$match[4]" : "19$match[4]";
+ }
+ else
+ {
+ $year = $match[4];
+ }
+ switch (strtolower($match[3]))
+ {
+ case 'jan':
+ $month = 1;
+ break;
+
+ case 'feb':
+ $month = 2;
+ break;
+
+ case 'mar':
+ $month = 3;
+ break;
+
+ case 'apr':
+ $month = 4;
+ break;
+
+ case 'may':
+ $month = 5;
+ break;
+
+ case 'jun':
+ $month = 6;
+ break;
+
+ case 'jul':
+ $month = 7;
+ break;
+
+ case 'aug':
+ $month = 8;
+ break;
+
+ case 'sep':
+ $month = 9;
+ break;
+
+ case 'oct':
+ $month = 10;
+ break;
+
+ case 'nov':
+ $month = 11;
+ break;
+
+ case 'dec':
+ $month = 12;
+ break;
+ }
+ $day = $match[2];
+ }
+ // ISO 8601
+ else
+ {
+ // Year
+ if ($match[7] !== '')
+ {
+ $year = "$match[6]$match[7]";
+
+ // Two Digit Month/Day
+ if ($match[11] !== '')
+ {
+ $month = $match[11];
+ if ($match[12] !== '')
+ {
+ $day = $match[12];
+ }
+ }
+
+ // Four Digit Month/Day
+ elseif ($match[8] !== '')
+ {
+ $month = $match[8];
+ $day = $match[9];
+ }
+
+ // Ordinal Day
+ elseif ($match[10] !== '')
+ {
+ $day = $match[10];
+ }
+
+ // Week Date
+ elseif ($match[13] !== '')
+ {
+ // Week Day
+ if ($match[14] !== '')
+ {
+ $day = $match[14];
+ }
+
+ $first_day_of_year = date('w', mktime(0, 0, 0, 1, 1, $year));
+ if ($first_day_of_year == 0)
+ {
+ $first_day_of_year = 7;
+ }
+
+ $day = 7 * ($match[13] - 1) + $day - ($first_day_of_year - 1);
+ }
+ }
+ else
+ {
+ $year = "$match[6]00";
+ }
+ }
+ // Time
+ if ($match[15] !== '')
+ {
+ $time = 0;
+ $time += ($match[16] + ('.' . $match[17])) * 3600;
+ $time += ($match[18] + ('.' . $match[19])) * 60;
+ $time += $match[20] + ('.' . $match[21]);
+ $hour = floor($time / 3600);
+ $time -= $hour * 3600;
+ $minute = floor($time / 60);
+ $time -= $minute * 60;
+ $second = round($time);
+
+ // Timezone
+ if ($match[22] !== '')
+ {
+ // Alphabetic Timezone
+ if ($match[28] !== '')
+ {
+ // Military
+ if (strlen($match[28]) == 1)
+ {
+ if ($match[28] == 'Z' || $match[28] == 'z' || !$rfc822_tz)
+ {
+ $timezone = 0;
+ }
+ else
+ {
+ $timezone = ord(strtoupper($match[28]));
+
+ if ($timezone > 74)
+ {
+ $timezone--;
+ }
+
+ if ($timezone <= 76)
+ {
+ $timezone = -($timezone - 64);
+ }
+ else
+ {
+ $timezone -= 76;
+ }
+
+ $timezone *= 3600;
+ }
+ }
+ // Code
+ else
+ {
+ switch (strtoupper($match[28]))
+ {
+ case 'UT':
+ case 'UTC':
+ case 'GMT':
+ $timezone = 0;
+ break;
+
+ case 'EST':
+ $timezone = -18000;
+ break;
+
+ case 'CST':
+ $timezone = -21600;
+ break;
+
+ case 'MST':
+ $timezone = -25200;
+ break;
+
+ case 'PST':
+ $timezone = -28800;
+ break;
+
+ case 'EDT':
+ $timezone = -14400;
+ break;
+
+ case 'CDT':
+ $timezone = -18000;
+ break;
+
+ case 'MDT':
+ $timezone = -21600;
+ break;
+
+ case 'PDT':
+ $timezone = -25200;
+ break;
+ }
+ }
+ }
+ // Timezone difference from UTC
+ else
+ {
+ $timezone = 0;
+ $timezone += ($match[24] + ('.' . $match[25])) * 3600;
+ $timezone += ($match[26] + ('.' . $match[27])) * 60;
+ $timezone = (int) round($timezone);
+
+ if ($match[23] == '-')
+ {
+ $timezone = -$timezone;
+ }
+ }
+ }
+ }
+ if ($timezone === false)
+ {
+ $cache[$dt][$rfc822_tz] = mktime($hour, $minute, $second, $month, $day, $year);
+ }
+ else
+ {
+ $cache[$dt][$rfc822_tz] = gmmktime($hour, $minute, $second, $month, $day, $year) - $timezone;
+ }
+ }
+ elseif (($time = strtotime($dt)) > 0)
+ {
+ $cache[$dt][$rfc822_tz] = $time;
+ }
+ else
+ {
+ $cache[$dt][$rfc822_tz] = false;
+ }
+ }
+ return $cache[$dt][$rfc822_tz];
+ }
+
+ /**
+ * Decode HTML entities
+ *
+ * @static
+ * @access public
+ * @param string $data Input data
+ * @return string Output data
+ */
+ function entities_decode($data)
+ {
+ $decoder = new SimplePie_Decode_HTML_Entities($data);
+ return $decoder->parse();
+ }
+
+ /**
+ * Remove RFC822 comments
+ *
+ * @author Tomas V.V.Cox <cox at idecnet.com>
+ * @author Pierre-Alain Joye <pajoye at php.net>
+ * @author Amir Mohammad Saied <amir at php.net>
+ * @copyright 1997-2006 Pierre-Alain Joye,Tomas V.V.Cox,Amir Mohammad Saied
+ * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
+ * @version CVS: $Id: Validate.php,v 1.104 2006/11/17 16:32:06 amir Exp $
+ * @link http://pear.php.net/package/Validate
+ * @access public
+ * @param string $data Data to strip comments from
+ * @return string Comment stripped string
+ */
+ function uncomment_rfc822($data)
+ {
+ if ((version_compare(PHP_VERSION, '4.4.6', '>=') && version_compare(PHP_VERSION, '5', '<')) || version_compare(PHP_VERSION, '5.2.2', '>='))
+ {
+ return $data;
+ }
+ else
+ {
+ return preg_replace('/((?:(?:\\\\"|[^("])*(?:"(?:[^"\\\\\r]|\\\\.)*"\s*)?)*)((?<!\\\\)\((?:(?2)|.)*?(?<!\\\\)\))/', '$1', $data);
+ }
+ }
+
+ function parse_mime($mime)
+ {
+ if (($pos = strpos($mime, ';')) === false)
+ {
+ return trim($mime);
+ }
+ else
+ {
+ return trim(substr($mime, 0, $pos));
+ }
+ }
+
+ function htmlspecialchars_decode($string, $quote_style)
+ {
+ if (function_exists('htmlspecialchars_decode'))
+ {
+ return htmlspecialchars_decode($string, $quote_style);
+ }
+ else
+ {
+ return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
+ }
+ }
+
+ function atom_03_construct_type($attribs)
+ {
+ if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) == 'base64'))
+ {
+ $mode = SIMPLEPIE_CONSTRUCT_BASE64;
+ }
+ else
+ {
+ $mode = SIMPLEPIE_CONSTRUCT_NONE;
+ }
+ if (isset($attribs['']['type']))
+ {
+ switch (strtolower(trim($attribs['']['type'])))
+ {
+ case 'text':
+ case 'text/plain':
+ return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+
+ case 'html':
+ case 'text/html':
+ return SIMPLEPIE_CONSTRUCT_HTML | $mode;
+
+ case 'xhtml':
+ case 'application/xhtml+xml':
+ return SIMPLEPIE_CONSTRUCT_XHTML | $mode;
+
+ default:
+ return SIMPLEPIE_CONSTRUCT_NONE | $mode;
+ }
+ }
+ else
+ {
+ return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
+ }
+ }
+
+ function atom_10_construct_type($attribs)
+ {
+ if (isset($attribs['']['type']))
+ {
+ switch (strtolower(trim($attribs['']['type'])))
+ {
+ case 'text':
+ return SIMPLEPIE_CONSTRUCT_TEXT;
+
+ case 'html':
+ return SIMPLEPIE_CONSTRUCT_HTML;
+
+ case 'xhtml':
+ return SIMPLEPIE_CONSTRUCT_XHTML;
+
+ default:
+ return SIMPLEPIE_CONSTRUCT_NONE;
+ }
+ }
+ return SIMPLEPIE_CONSTRUCT_TEXT;
+ }
+
+ function atom_10_content_construct_type($attribs)
+ {
+ if (isset($attribs['']['type']))
+ {
+ $type = strtolower(trim($attribs['']['type']));
+ switch ($type)
+ {
+ case 'text':
+ return SIMPLEPIE_CONSTRUCT_TEXT;
+
+ case 'html':
+ return SIMPLEPIE_CONSTRUCT_HTML;
+
+ case 'xhtml':
+ return SIMPLEPIE_CONSTRUCT_XHTML;
+ }
+ if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) == 'text/')
+ {
+ return SIMPLEPIE_CONSTRUCT_NONE;
+ }
+ else
+ {
+ return SIMPLEPIE_CONSTRUCT_BASE64;
+ }
+ }
+ else
+ {
+ return SIMPLEPIE_CONSTRUCT_TEXT;
+ }
+ }
+
+ function is_isegment_nz_nc($string)
+ {
+ return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
+ }
+
+ function space_seperated_tokens($string)
+ {
+ $space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
+ $string_length = strlen($string);
+
+ $position = strspn($string, $space_characters);
+ $tokens = array();
+
+ while ($position < $string_length)
+ {
+ $len = strcspn($string, $space_characters, $position);
+ $tokens[] = substr($string, $position, $len);
+ $position += $len;
+ $position += strspn($string, $space_characters, $position);
+ }
+
+ return $tokens;
+ }
+
+ function array_unique($array)
+ {
+ if (version_compare(PHP_VERSION, '5.2', '>='))
+ {
+ return array_unique($array);
+ }
+ else
+ {
+ $array = (array) $array;
+ $new_array = array();
+ $new_array_strings = array();
+ foreach ($array as $key => $value)
+ {
+ if (is_object($value))
+ {
+ if (method_exists($value, '__toString'))
+ {
+ $cmp = $value->__toString();
+ }
+ else
+ {
+ trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR);
+ }
+ }
+ elseif (is_array($value))
+ {
+ $cmp = (string) reset($value);
+ }
+ else
+ {
+ $cmp = (string) $value;
+ }
+ if (!in_array($cmp, $new_array_strings))
+ {
+ $new_array[$key] = $value;
+ $new_array_strings[] = $cmp;
+ }
+ }
+ return $new_array;
+ }
+ }
+
+ /**
+ * Converts a unicode codepoint to a UTF-8 character
+ *
+ * @static
+ * @access public
+ * @param int $codepoint Unicode codepoint
+ * @return string UTF-8 character
+ */
+ function codepoint_to_utf8($codepoint)
+ {
+ static $cache = array();
+ $codepoint = (int) $codepoint;
+ if (isset($cache[$codepoint]))
+ {
+ return $cache[$codepoint];
+ }
+ elseif ($codepoint < 0)
+ {
+ return $cache[$codepoint] = false;
+ }
+ else if ($codepoint <= 0x7f)
+ {
+ return $cache[$codepoint] = chr($codepoint);
+ }
+ else if ($codepoint <= 0x7ff)
+ {
+ return $cache[$codepoint] = chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f));
+ }
+ else if ($codepoint <= 0xffff)
+ {
+ return $cache[$codepoint] = chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+ }
+ else if ($codepoint <= 0x10ffff)
+ {
+ return $cache[$codepoint] = chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
+ }
+ else
+ {
+ // U+FFFD REPLACEMENT CHARACTER
+ return $cache[$codepoint] = "\xEF\xBF\xBD";
+ }
+ }
+
+ /**
+ * Re-implementation of PHP 4.2.0's is_a()
+ *
+ * @static
+ * @access public
+ * @param object $object The tested object
+ * @param string $class_name The class name
+ * @return bool Returns true if the object is of this class or has this class as one of its parents, false otherwise
+ */
+ function is_a($object, $class_name)
+ {
+ if (function_exists('is_a'))
+ {
+ return is_a($object, $class_name);
+ }
+ elseif (!is_object($object))
+ {
+ return false;
+ }
+ elseif (get_class($object) == strtolower($class_name))
+ {
+ return true;
+ }
+ else
+ {
+ return is_subclass_of($object, $class_name);
+ }
+ }
+
+ /**
+ * Re-implementation of PHP 5's stripos()
+ *
+ * Returns the numeric position of the first occurrence of needle in the
+ * haystack string.
+ *
+ * @static
+ * @access string
+ * @param object $haystack
+ * @param string $needle Note that the needle may be a string of one or more
+ * characters. If needle is not a string, it is converted to an integer
+ * and applied as the ordinal value of a character.
+ * @param int $offset The optional offset parameter allows you to specify which
+ * character in haystack to start searching. The position returned is still
+ * relative to the beginning of haystack.
+ * @return bool If needle is not found, stripos() will return boolean false.
+ */
+ function stripos($haystack, $needle, $offset = 0)
+ {
+ if (function_exists('stripos'))
+ {
+ return stripos($haystack, $needle, $offset);
+ }
+ else
+ {
+ if (is_string($needle))
+ {
+ $needle = strtolower($needle);
+ }
+ elseif (is_int($needle) || is_bool($needle) || is_double($needle))
+ {
+ $needle = strtolower(chr($needle));
+ }
+ else
+ {
+ trigger_error('needle is not a string or an integer', E_USER_WARNING);
+ return false;
+ }
+
+ return strpos(strtolower($haystack), $needle, $offset);
+ }
+ }
+}
+
+/**
+ * Decode HTML Entities
+ *
+ * This implements HTML5 as of revision 967 (2007-06-28)
+ *
+ * @package SimplePie
+ */
+class SimplePie_Decode_HTML_Entities
+{
+ /**
+ * Data to be parsed
+ *
+ * @access private
+ * @var string
+ */
+ var $data = '';
+
+ /**
+ * Currently consumed bytes
+ *
+ * @access private
+ * @var string
+ */
+ var $consumed = '';
+
+ /**
+ * Position of the current byte being parsed
+ *
+ * @access private
+ * @var int
+ */
+ var $position = 0;
+
+ /**
+ * Create an instance of the class with the input data
+ *
+ * @access public
+ * @param string $data Input data
+ */
+ function SimplePie_Decode_HTML_Entities($data)
+ {
+ $this->data = $data;
+ }
+
+ /**
+ * Parse the input data
+ *
+ * @access public
+ * @return string Output data
+ */
+ function parse()
+ {
+ while (($this->position = strpos($this->data, '&', $this->position)) !== false)
+ {
+ $this->consume();
+ $this->entity();
+ $this->consumed = '';
+ }
+ return $this->data;
+ }
+
+ /**
+ * Consume the next byte
+ *
+ * @access private
+ * @return mixed The next byte, or false, if there is no more data
+ */
+ function consume()
+ {
+ if (isset($this->data[$this->position]))
+ {
+ $this->consumed .= $this->data[$this->position];
+ return $this->data[$this->position++];
+ }
+ else
+ {
+ $this->consumed = false;
+ return false;
+ }
+ }
+
+ /**
+ * Consume a range of characters
+ *
+ * @access private
+ * @param string $chars Characters to consume
+ * @return mixed A series of characters that match the range, or false
+ */
+ function consume_range($chars)
+ {
+ if ($len = strspn($this->data, $chars, $this->position))
+ {
+ $data = substr($this->data, $this->position, $len);
+ $this->consumed .= $data;
+ $this->position += $len;
+ return $data;
+ }
+ else
+ {
+ $this->consumed = false;
+ return false;
+ }
+ }
+
+ /**
+ * Unconsume one byte
+ *
+ * @access private
+ */
+ function unconsume()
+ {
+ $this->consumed = substr($this->consumed, 0, -1);
+ $this->position--;
+ }
+
+ /**
+ * Decode an entity
+ *
+ * @access private
+ */
+ function entity()
+ {
+ switch ($this->consume())
+ {
+ case "\x09":
+ case "\x0A":
+ case "\x0B":
+ case "\x0B":
+ case "\x0C":
+ case "\x20":
+ case "\x3C":
+ case "\x26":
+ case false:
+ break;
+
+ case "\x23":
+ switch ($this->consume())
+ {
+ case "\x78":
+ case "\x58":
+ $range = '0123456789ABCDEFabcdef';
+ $hex = true;
+ break;
+
+ default:
+ $range = '0123456789';
+ $hex = false;
+ $this->unconsume();
+ break;
+ }
+
+ if ($codepoint = $this->consume_range($range))
+ {
+ static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8");
+
+ if ($hex)
+ {
+ $codepoint = hexdec($codepoint);
+ }
+ else
+ {
+ $codepoint = intval($codepoint);
+ }
+
+ if (isset($windows_1252_specials[$codepoint]))
+ {
+ $replacement = $windows_1252_specials[$codepoint];
+ }
+ else
+ {
+ $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint);
+ }
+
+ if ($this->consume() != ';')
+ {
+ $this->unconsume();
+ }
+
+ $consumed_length = strlen($this->consumed);
+ $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length);
+ $this->position += strlen($replacement) - $consumed_length;
+ }
+ break;
+
+ default:
+ static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4",
'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eac
ute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\
x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB"
, 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\x
CE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' =>
"\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbq
uo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE
2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C");
+
+ for ($i = 0, $match = null; $i < 9 && $this->consume(); $i++)
+ {
+ $consumed = substr($this->consumed, 1);
+ if (isset($entities[$consumed]))
+ {
+ $match = $consumed;
+ }
+ }
+
+ if ($match !== null)
+ {
+ $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1);
+ $this->position += strlen($entities[$match]) - strlen($consumed) - 1;
+ }
+ break;
+ }
+ }
+}
+
+class SimplePie_Locator
+{
+ var $useragent;
+ var $timeout;
+ var $file;
+ var $local = array();
+ var $elsewhere = array();
+ var $file_class = 'SimplePie_File';
+ var $cached_entities = array();
+ var $http_base;
+ var $base;
+ var $base_location = 0;
+ var $checked_feeds = 0;
+ var $max_checked_feeds = 10;
+
+ function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10)
+ {
+ $this->file =& $file;
+ $this->file_class = $file_class;
+ $this->useragent = $useragent;
+ $this->timeout = $timeout;
+ $this->max_checked_feeds = $max_checked_feeds;
+ }
+
+ function find($type = SIMPLEPIE_LOCATOR_ALL)
+ {
+ if ($this->is_feed($this->file))
+ {
+ return $this->file;
+ }
+
+ if ($type & ~SIMPLEPIE_LOCATOR_NONE)
+ {
+ $this->get_base();
+ }
+
+ if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery())
+ {
+ return $working;
+ }
+
+ if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links())
+ {
+ if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
+ {
+ return $working;
+ }
+
+ if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
+ {
+ return $working;
+ }
+
+ if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
+ {
+ return $working;
+ }
+
+ if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
+ {
+ return $working;
+ }
+ }
+ return null;
+ }
+
+ function is_feed(&$file)
+ {
+ $body = SimplePie_Misc::strip_comments($file->body);
+ if (preg_match('/<([^\s:]+:)?(rss|RDF|feed)' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/i', $body))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ function get_base()
+ {
+ if (isset($this->file->headers['content-location']))
+ {
+ $this->http_base = SimplePie_Misc::absolutize_url(trim($this->file->headers['content-location']), $this->file->url);
+ }
+ else
+ {
+ $this->http_base = $this->file->url;
+ }
+ $this->base = $this->http_base;
+ $elements = SimplePie_Misc::get_element('base', $this->file->body);
+ foreach ($elements as $element)
+ {
+ if ($element['attribs']['href']['data'] !== '')
+ {
+ $this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base);
+ $this->base_location = $element['offset'];
+ break;
+ }
+ }
+ }
+
+ function autodiscovery()
+ {
+ $links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body));
+ $done = array();
+ foreach ($links as $link)
+ {
+ if ($this->checked_feeds == $this->max_checked_feeds)
+ {
+ break;
+ }
+ if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data']))
+ {
+ $rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data'])));
+
+ if ($this->base_location < $link['offset'])
+ {
+ $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+ }
+ else
+ {
+ $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+ }
+
+ if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))))
+ {
+ $this->checked_feeds++;
+ $feed =& new $this->file_class($href, $this->timeout, 5, null, $this->useragent);
+ if ($this->is_feed($feed))
+ {
+ return $feed;
+ }
+ }
+ $done[] = $href;
+ }
+ }
+ return null;
+ }
+
+ function get_links()
+ {
+ $links = SimplePie_Misc::get_element('a', $this->file->body);
+ foreach ($links as $link)
+ {
+ if (isset($link['attribs']['href']['data']))
+ {
+ $href = trim($link['attribs']['href']['data']);
+ $parsed = SimplePie_Misc::parse_url($href);
+ if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
+ {
+ if ($this->base_location < $link['offset'])
+ {
+ $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base);
+ }
+ else
+ {
+ $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base);
+ }
+
+ $current = SimplePie_Misc::parse_url($this->file->url);
+
+ if ($parsed['authority'] === '' || $parsed['authority'] == $current['authority'])
+ {
+ $this->local[] = $href;
+ }
+ else
+ {
+ $this->elsewhere[] = $href;
+ }
+ }
+ }
+ }
+ $this->local = array_unique($this->local);
+ $this->elsewhere = array_unique($this->elsewhere);
+ if (!empty($this->local) || !empty($this->elsewhere))
+ {
+ return true;
+ }
+ return null;
+ }
+
+ function extension(&$array)
+ {
+ foreach ($array as $key => $value)
+ {
+ if ($this->checked_feeds == $this->max_checked_feeds)
+ {
+ break;
+ }
+ if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml')))
+ {
+ $this->checked_feeds++;
+ $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
+ if ($this->is_feed($feed))
+ {
+ return $feed;
+ }
+ else
+ {
+ unset($array[$key]);
+ }
+ }
+ }
+ return null;
+ }
+
+ function body(&$array)
+ {
+ foreach ($array as $key => $value)
+ {
+ if ($this->checked_feeds == $this->max_checked_feeds)
+ {
+ break;
+ }
+ if (preg_match('/(rss|rdf|atom|xml)/i', $value))
+ {
+ $this->checked_feeds++;
+ $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent);
+ if ($this->is_feed($feed))
+ {
+ return $feed;
+ }
+ else
+ {
+ unset($array[$key]);
+ }
+ }
+ }
+ return null;
+ }
+}
+
+class SimplePie_Parser
+{
+ var $xml;
+ var $error_code;
+ var $error_string;
+ var $current_line;
+ var $current_column;
+ var $current_byte;
+ var $separator = ' ';
+ var $feed = false;
+ var $namespace = array('');
+ var $element = array('');
+ var $xml_base = array('');
+ var $xml_base_explicit = array(false);
+ var $xml_lang = array('');
+ var $data = array();
+ var $datas = array(array());
+ var $current_xhtml_construct = -1;
+ var $encoding;
+
+ function pre_process(&$data, $encoding)
+ {
+ // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
+ if (strtoupper($encoding) == 'US-ASCII')
+ {
+ $this->encoding = 'UTF-8';
+ }
+ else
+ {
+ $this->encoding = $encoding;
+ }
+
+ // Strip BOM:
+ // UTF-32 Big Endian BOM
+ if (strpos($data, "\x0\x0\xFE\xFF") === 0)
+ {
+ $data = substr($data, 4);
+ }
+ // UTF-32 Little Endian BOM
+ elseif (strpos($data, "\xFF\xFE\x0\x0") === 0)
+ {
+ $data = substr($data, 4);
+ }
+ // UTF-16 Big Endian BOM
+ elseif (strpos($data, "\xFE\xFF") === 0)
+ {
+ $data = substr($data, 2);
+ }
+ // UTF-16 Little Endian BOM
+ elseif (strpos($data, "\xFF\xFE") === 0)
+ {
+ $data = substr($data, 2);
+ }
+ // UTF-8 BOM
+ elseif (strpos($data, "\xEF\xBB\xBF") === 0)
+ {
+ $data = substr($data, 3);
+ }
+
+ // Make sure the XML prolog is sane and has the correct encoding
+ $data = preg_replace("/^<\?xml[\x20\x9\xD\xA]+version([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"1.0\"|'1.0'|\"1.1\"|'1.1')([\x20\x9\xD\xA]+encoding([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"[A-Za-z][A-Za-z0-9._\-]*\"|'[A-Za-z][A-Za-z0-9._\-]*'))?([\x20\x9\xD\xA]+standalone([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"(yes|no)\"|'(yes|no)'))?([\x20\x9\xD\xA]+)?\?>/", '', $data);
+ $data = "<?xml version='1.0' encoding='$encoding'?>\n" . $data;
+ }
+
+ function parse(&$data)
+ {
+ $return = true;
+
+ // Create the parser
+ $this->xml = xml_parser_create_ns($this->encoding, $this->separator);
+ xml_parser_set_option($this->xml, XML_OPTION_SKIP_WHITE, 1);
+ xml_parser_set_option($this->xml, XML_OPTION_CASE_FOLDING, 0);
+ xml_set_object($this->xml, $this);
+ xml_set_character_data_handler($this->xml, 'cdata');
+ xml_set_element_handler($this->xml, 'tag_open', 'tag_close');
+
+ // Parse!
+ if (!xml_parse($this->xml, $data, true))
+ {
+ $this->data = null;
+ $this->error_code = xml_get_error_code($this->xml);
+ $this->error_string = xml_error_string($this->error_code);
+ $return = false;
+ }
+ $this->current_line = xml_get_current_line_number($this->xml);
+ $this->current_column = xml_get_current_column_number($this->xml);
+ $this->current_byte = xml_get_current_byte_index($this->xml);
+ xml_parser_free($this->xml);
+ return $return;
+ }
+
+ function get_error_code()
+ {
+ return $this->error_code;
+ }
+
+ function get_error_string()
+ {
+ return $this->error_string;
+ }
+
+ function get_current_line()
+ {
+ return $this->current_line;
+ }
+
+ function get_current_column()
+ {
+ return $this->current_column;
+ }
+
+ function get_current_byte()
+ {
+ return $this->current_byte;
+ }
+
+ function get_data()
+ {
+ return $this->data;
+ }
+
+ function tag_open($parser, $tag, $attributes)
+ {
+ if ($this->feed === 0)
+ {
+ return;
+ }
+ elseif ($this->feed == false)
+ {
+ if (in_array($tag, array(
+ SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed',
+ SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed',
+ 'rss',
+ SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF'
+ )))
+ {
+ $this->feed = 1;
+ }
+ }
+ else
+ {
+ $this->feed++;
+ }
+
+ list($this->namespace[], $this->element[]) = $this->split_ns($tag);
+
+ $attribs = array();
+ foreach ($attributes as $name => $value)
+ {
+ list($attrib_namespace, $attribute) = $this->split_ns($name);
+ $attribs[$attrib_namespace][$attribute] = $value;
+ }
+
+ if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base']))
+ {
+ $this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base));
+ $this->xml_base_explicit[] = true;
+ }
+ else
+ {
+ $this->xml_base[] = end($this->xml_base);
+ $this->xml_base_explicit[] = end($this->xml_base_explicit);
+ }
+
+ if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang']))
+ {
+ $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang'];
+ }
+ else
+ {
+ $this->xml_lang[] = end($this->xml_lang);
+ }
+
+ if ($this->current_xhtml_construct >= 0)
+ {
+ $this->current_xhtml_construct++;
+ if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML)
+ {
+ $this->data['data'] .= '<' . end($this->element);
+ if (isset($attribs['']))
+ {
+ foreach ($attribs[''] as $name => $value)
+ {
+ $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"';
+ }
+ }
+ $this->data['data'] .= '>';
+ }
+ }
+ else
+ {
+ $this->datas[] =& $this->data;
+ $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][];
+ $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang));
+ if ((end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] == 'xml')
+ || (end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] == 'xhtml'))
+ {
+ $this->current_xhtml_construct = 0;
+ }
+ }
+ }
+
+ function cdata($parser, $cdata)
+ {
+ if ($this->current_xhtml_construct >= 0)
+ {
+ $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding);
+ }
+ elseif ($this->feed > 1)
+ {
+ $this->data['data'] .= $cdata;
+ }
+ }
+
+ function tag_close($parser, $tag)
+ {
+ if (!$this->feed)
+ {
+ return;
+ }
+
+ if ($this->current_xhtml_construct >= 0)
+ {
+ $this->current_xhtml_construct--;
+ if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param')))
+ {
+ $this->data['data'] .= '</' . end($this->element) . '>';
+ }
+ }
+ if ($this->current_xhtml_construct == -1)
+ {
+ $this->data =& $this->datas[$this->feed];
+ array_pop($this->datas);
+ }
+
+ array_pop($this->element);
+ array_pop($this->namespace);
+ array_pop($this->xml_base);
+ array_pop($this->xml_base_explicit);
+ array_pop($this->xml_lang);
+ $this->feed--;
+ }
+
+ function split_ns($string)
+ {
+ static $cache = array();
+ if (!isset($cache[$string]))
+ {
+ if ($pos = strpos($string, $this->separator))
+ {
+ static $separator_length;
+ if (!$separator_length)
+ {
+ $separator_length = strlen($this->separator);
+ }
+ $cache[$string] = array(substr($string, 0, $pos), substr($string, $pos + $separator_length));
+ }
+ else
+ {
+ $cache[$string] = array('', $string);
+ }
+ }
+ return $cache[$string];
+ }
+}
+
+/**
+ * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shortern a string while preserving HTML tags
+ */
+class SimplePie_Sanitize
+{
+ // Private vars
+ var $base;
+
+ // Options
+ var $remove_div = true;
+ var $image_handler = '';
+ var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
+ var $encode_instead_of_strip = false;
+ var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+ var $strip_comments = false;
+ var $output_encoding = 'UTF-8';
+ var $enable_cache = true;
+ var $cache_location = './cache';
+ var $cache_name_function = 'md5';
+ var $cache_class = 'SimplePie_Cache';
+ var $file_class = 'SimplePie_File';
+ var $timeout = 10;
+ var $useragent = '';
+ var $force_fsockopen = false;
+
+ var $replace_url_attributes = array(
+ 'a' => 'href',
+ 'area' => 'href',
+ 'blockquote' => 'cite',
+ 'del' => 'cite',
+ 'form' => 'action',
+ 'img' => array('longdesc', 'src'),
+ 'input' => 'src',
+ 'ins' => 'cite',
+ 'q' => 'cite'
+ );
+
+ function remove_div($enable = true)
+ {
+ $this->remove_div = (bool) $enable;
+ }
+
+ function set_image_handler($page = false)
+ {
+ if ($page)
+ {
+ $this->image_handler = (string) $page;
+ }
+ else
+ {
+ $this->image_handler = false;
+ }
+ }
+
+ function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
+ {
+ if (isset($enable_cache))
+ {
+ $this->enable_cache = (bool) $enable_cache;
+ }
+
+ if ($cache_location)
+ {
+ $this->cache_location = (string) $cache_location;
+ }
+
+ if ($cache_name_function)
+ {
+ $this->cache_name_function = (string) $cache_name_function;
+ }
+
+ if ($cache_class)
+ {
+ $this->cache_class = (string) $cache_class;
+ }
+ }
+
+ function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
+ {
+ if ($file_class)
+ {
+ $this->file_class = (string) $file_class;
+ }
+
+ if ($timeout)
+ {
+ $this->timeout = (string) $timeout;
+ }
+
+ if ($useragent)
+ {
+ $this->useragent = (string) $useragent;
+ }
+
+ if ($force_fsockopen)
+ {
+ $this->force_fsockopen = (string) $force_fsockopen;
+ }
+ }
+
+ function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
+ {
+ if ($tags)
+ {
+ if (is_array($tags))
+ {
+ $this->strip_htmltags = $tags;
+ }
+ else
+ {
+ $this->strip_htmltags = explode(',', $tags);
+ }
+ }
+ else
+ {
+ $this->strip_htmltags = false;
+ }
+ }
+
+ function encode_instead_of_strip($encode = false)
+ {
+ $this->encode_instead_of_strip = (bool) $encode;
+ }
+
+ function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
+ {
+ if ($attribs)
+ {
+ if (is_array($attribs))
+ {
+ $this->strip_attributes = $attribs;
+ }
+ else
+ {
+ $this->strip_attributes = explode(',', $attribs);
+ }
+ }
+ else
+ {
+ $this->strip_attributes = false;
+ }
+ }
+
+ function strip_comments($strip = false)
+ {
+ $this->strip_comments = (bool) $strip;
+ }
+
+ function set_output_encoding($encoding = 'UTF-8')
+ {
+ $this->output_encoding = (string) $encoding;
+ }
+
+ /**
+ * Set element/attribute key/value pairs of HTML attributes
+ * containing URLs that need to be resolved relative to the feed
+ *
+ * @access public
+ * @since 1.0
+ * @param array $element_attribute Element/attribute key/value pairs
+ */
+ function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite'))
+ {
+ $this->replace_url_attributes = (array) $element_attribute;
+ }
+
+ function sanitize($data, $type, $base = '')
+ {
+ $data = trim($data);
+ if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
+ {
+ if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
+ {
+ if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/(\w+)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
+ {
+ $type |= SIMPLEPIE_CONSTRUCT_HTML;
+ }
+ else
+ {
+ $type |= SIMPLEPIE_CONSTRUCT_TEXT;
+ }
+ }
+
+ if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
+ {
+ $data = base64_decode($data);
+ }
+
+ if ($type & SIMPLEPIE_CONSTRUCT_XHTML)
+ {
+ if ($this->remove_div)
+ {
+ $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
+ $data = preg_replace('/<\/div>$/', '', $data);
+ }
+ else
+ {
+ $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
+ }
+ }
+
+ if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
+ {
+ // Strip comments
+ if ($this->strip_comments)
+ {
+ $data = SimplePie_Misc::strip_comments($data);
+ }
+
+ // Strip out HTML tags and attributes that might cause various security problems.
+ // Based on recommendations by Mark Pilgrim at:
+ // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
+ if ($this->strip_htmltags)
+ {
+ foreach ($this->strip_htmltags as $tag)
+ {
+ $pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU';
+ while (preg_match($pcre, $data))
+ {
+ $data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data);
+ }
+ }
+ }
+
+ if ($this->strip_attributes)
+ {
+ foreach ($this->strip_attributes as $attrib)
+ {
+ $data = preg_replace('/ '. trim($attrib) .'=("|")(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|\'|'|<|>|\+|{|})*("|")/i', '', $data);
+ $data = preg_replace('/ '. trim($attrib) .'=(\'|')(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|"|"|<|>|\+|{|})*(\'|')/i', '', $data);
+ $data = preg_replace('/ '. trim($attrib) .'=(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|\+|{|})*/i', '', $data);
+ }
+ }
+
+ // Replace relative URLs
+ $this->base = $base;
+ foreach ($this->replace_url_attributes as $element => $attributes)
+ {
+ $data = $this->replace_urls($data, $element, $attributes);
+ }
+
+ // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
+ if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
+ {
+ $images = SimplePie_Misc::get_element('img', $data);
+ foreach ($images as $img)
+ {
+ if (isset($img['attribs']['src']['data']))
+ {
+ $image_url = $img['attribs']['src']['data'];
+ $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $image_url), 'spi');
+
+ if ($cache->load())
+ {
+ $img['attribs']['src']['data'] = $this->image_handler . rawurlencode($img['attribs']['src']['data']);
+ $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+ }
+ else
+ {
+ $file =& new $this->file_class($image_url, $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen);
+ $headers = $file->headers;
+
+ if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)))
+ {
+ if (!$cache->save(array('headers' => $file->headers, 'body' => $file->body)))
+ {
+ trigger_error("$cache->name is not writeable", E_USER_WARNING);
+ }
+ $img['attribs']['src']['data'] = $this->image_handler . rawurlencode($img['attribs']['src']['data']);
+ $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data);
+ }
+ }
+ }
+ }
+ }
+
+ // Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data
+ $data = trim($data);
+ }
+
+ if ($type & SIMPLEPIE_CONSTRUCT_IRI)
+ {
+ $data = SimplePie_Misc::absolutize_url($data, $base);
+ }
+
+ if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
+ {
+ $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
+ }
+
+ if ($this->output_encoding != 'UTF-8')
+ {
+ $data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding);
+ }
+ }
+ return $data;
+ }
+
+ function replace_urls($data, $tag, $attributes)
+ {
+ if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
+ {
+ $elements = SimplePie_Misc::get_element($tag, $data);
+ foreach ($elements as $element)
+ {
+ if (is_array($attributes))
+ {
+ foreach ($attributes as $attribute)
+ {
+ if (isset($element['attribs'][$attribute]['data']))
+ {
+ $element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base);
+ $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
+ }
+ }
+ }
+ elseif (isset($element['attribs'][$attributes]['data']))
+ {
+ $element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base);
+ $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data);
+ }
+ }
+ }
+ return $data;
+ }
+
+ function do_strip_htmltags($match)
+ {
+ if ($this->encode_instead_of_strip)
+ {
+ if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+ {
+ $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
+ $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
+ return "<$match[1]$match[2]>$match[3]</$match[1]>";
+ }
+ else
+ {
+ return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
+ }
+ }
+ elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
+ {
+ return $match[4];
+ }
+ else
+ {
+ return '';
+ }
+ }
+}
+
+?>
Modified: site/trunk/www-root/wiki/inc/TarLib.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/TarLib.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/TarLib.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,916 +1,916 @@
-<?php
-/**
- * TAR format class - Creates TAR archives
- *
- * This class is part or the MaxgComp suite and originally named
- * MaxgTar class.
- *
- * Modified for Dokuwiki
- *
- * @license GPL
- * @link http://docs.maxg.info
- * @author Bouchon <tarlib at bouchon.org> (Maxg)
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-
-
-/**
- * Those constants represent the compression method to use.
- * COMPRESS_GZIP is used for the GZIP compression; COMPRESS_BZIP for
- * BZIP2 and COMPRESS_NONE for no compression.
- *
- * On the other hand, COMPRESS_AUTO is a bit harder. It will first check
- * if the zlib extensions are loaded.
- * If it is, GZIP will be used. Else it will check if the bz2 extensions
- * are loaded. If it is, BZIP2 will be used. Else no compression will be
- * performed.
- *
- * You can then use getCompression() to know the compression chosen.
- *
- * If you selected a compression which can't be used (i.e extension not
- * present), it will be just disabled, and won't produce any error !
- * As a consequence, getCompression() will return COMPRESS_NONE
- *
- * ARCHIVE_DYNAMIC can be passed as the first argument of the constructor, to
- * create an archive in memory instead of a file. See also: MaxgTar(),
- * getDynamicArchive() and writeArchive()
- *
- * ARCHIVE_RENAMECOMP is a flag that can be multiplied by the compression method
- * (i.e COMPRESS_AUTO * ARCHIVE_RENAMECOMP). This will add the correct extension
- * to the archive name, which is useful with COMPRESS_AUTO, ie .bz2 if you gave
- * COMPRESS_BZIP. See also getCompression(TRUE) which does exactly the
- * same
- *
- * COMPRESS_DETECT does exactly the opposite and try to detect the
- * compression to use to read the archive depending on its extension. (i.e if
- * the archive ends with .tar.gz TarLib will try to decompress it with
- * GZIP). See also setCompression()
- *
- * FULL_ARCHIVE is a -1 constant that means "the complete archive" when
- * extracting. This is explained in Extract()
- */
-define('COMPRESS_GZIP',1);
-define('COMPRESS_BZIP',2);
-define('COMPRESS_AUTO',3);
-define('COMPRESS_NONE',0);
-define('TARLIB_VERSION','1.2');
-define('FULL_ARCHIVE',-1);
-define('ARCHIVE_DYNAMIC',0);
-define('ARCHIVE_RENAMECOMP',5);
-define('COMPRESS_DETECT',-1);
-
-class TarLib
-{
- var $_comptype;
- var $_compzlevel;
- var $_fp;
- var $_memdat;
- var $_nomf;
- var $_result;
-
- /**
- * constructor, initialize the class
- *
- * The constructor initialize the variables and prepare the class for the
- * archive, and return the object created. Note that you can use multiple
- * instances of the MaxgTar class, if you call this function another time and
- * store the object in an other variable.
- *
- * In fact, MaxgTar accepts the following arguments (all are optional) :
- *
- * filename can be either a file name (absolute or relative). In this
- * case, it can be used both for reading and writing. You can also open
- * remote archive if you add a protocole name at the beginning of the file
- * (ie https://host.dom/archive.tar.gz), but for reading only and if the
- * directive allow_url_fopen is enabled in PHP.INI (this can be checked with
- * TarInfo()). If you pass a file that doesn't exist, the script
- * will try to create it. If the archive already exists and contains files,
- * you can use Add() to append files.But by default this parameter
- * is ARCHIVE_DYNAMIC (write only) so the archive is created in memory and
- * can be sent to a file [writeArchive()] or to the client
- * [sendClient()]
- *
- * compression_type should be a constant that represents a type of
- * compression, or its integer value. The different values are described in
- * the constants.
- *
- * compression_level is an integer between 1 and 9 (by default) an
- * represent the GZIP or BZIP compression level. 1 produce fast compression,
- * and 9 produce smaller files. See the RFC 1952 for more infos.
- */
- function tarlib($p_filen = ARCHIVE_DYNAMIC , $p_comptype = COMPRESS_AUTO, $p_complevel = 9)
- {
- $this->_nomf = $p_filen; $flag=0;
- if($p_comptype && $p_comptype % 5 == 0){$p_comptype /= ARCHIVE_RENAMECOMP; $flag=1;}
-
- if($p_complevel > 0 && $p_complevel <= 9) $this->_compzlevel = $p_complevel;
- else $p_complevel = 9;
-
- if($p_comptype == COMPRESS_DETECT)
- {
- if(strtolower(substr($p_filen,-3)) == '.gz') $p_comptype = COMPRESS_GZIP;
- elseif(strtolower(substr($p_filen,-4)) == '.bz2') $p_comptype = COMPRESS_BZIP;
- else $p_comptype = COMPRESS_NONE;
- }
-
- switch($p_comptype)
- {
- case COMPRESS_GZIP:
- if(!extension_loaded('zlib')) $this->_result = -1;
- $this->_comptype = COMPRESS_GZIP;
- break;
-
- case COMPRESS_BZIP:
- if(!extension_loaded('bz2')) $this->_result = -2;
- $this->_comptype = COMPRESS_BZIP;
- break;
-
- case COMPRESS_AUTO:
- if(extension_loaded('zlib'))
- $this->_comptype = COMPRESS_GZIP;
- elseif(extension_loaded('bz2'))
- $this->_comptype = COMPRESS_BZIP;
- else
- $this->_comptype = COMPRESS_NONE;
- break;
-
- default:
- $this->_comptype = COMPRESS_NONE;
- }
-
- if($this->_result < 0) $this->_comptype = COMPRESS_NONE;
-
- if($flag) $this->_nomf.= '.'.$this->getCompression(1);
- $this->_result = true;
- }
-
- /**
- * Recycle a TAR object.
- *
- * This function does exactly the same as TarLib (constructor), except it
- * returns a status code.
- */
- function setArchive($p_name='', $p_comp = COMPRESS_AUTO, $p_level=9)
- {
- $this->_CompTar();
- $this->TarLib($p_name, $p_comp, $p_level);
- return $this->_result;
- }
-
- /**
- * Get the compression used to generate the archive
- *
- * This is a very useful function when you're using dynamical archives.
- * Besides, if you let the script chose which compression to use, you'll have
- * a problem when you'll want to send it to the client if you don't know
- * which compression was used.
- *
- * There are two ways to call this function : if you call it without argument
- * or with FALSE, it will return the compression constants, explained on the
- * MaxgTar Constants. If you call it with GetExtension on TRUE it will
- * return the extension without starting dot (ie "tar" or "tar.bz2" or
- * "tar.gz")
- *
- * NOTE: This can be done with the flag ARCHIVE_RENAMECOMP, see the
- * MaxgTar Constants
- */
- function getCompression($ext = false)
- {
- $exts = Array('tar','tar.gz','tar.bz2');
- if($ext) return $exts[$this->_comptype];
- return $this->_comptype;
- }
-
- /**
- * Change the compression mode.
- *
- * This function will change the compression methode to read or write
- * the archive. See the MaxgTar Constants to see which constants you can use.
- * It may look strange, but it returns the GZIP compression level.
- */
- function setCompression($p_comp = COMPRESS_AUTO)
- {
- $this->setArchive($this->_nomf, $p_comp, $this->_compzlevel);
- return $this->_compzlevel;
- }
-
- /**
- * Returns the compressed dynamic archive.
- *
- * When you're working with dynamic archives, use this function to grab
- * the final compressed archive in a string ready to be put in a SQL table or
- * in a file.
- */
- function getDynamicArchive()
- {
- return $this->_encode($this->_memdat);
- }
-
- /**
- * Write a dynamical archive into a file
- *
- * This function attempts to write a dynamicaly-genrated archive into
- * TargetFile on the webserver. It returns a TarErrorStr() status
- * code.
- *
- * To know the extension to add to the file if you're using AUTO_DETECT
- * compression, you can use getCompression().
- */
- function writeArchive($p_archive) {
- if(!$this->_memdat) return -7;
- $fp = @fopen($p_archive, 'wb');
- if(!$fp) return -6;
-
- fwrite($fp, $this->_memdat);
- fclose($fp);
-
- return true;
- }
-
- /**
- * Send a TAR archive to the client browser.
- *
- * This function will send an archive to the client, and return a status
- * code, but can behave differently depending on the arguments you give. All
- * arguments are optional.
- *
- * ClientName is used to specify the archive name to give to the browser. If
- * you don't give one, it will send the constructor filename or return an
- * error code in case of dynamical archive.
- *
- * FileName is optional and used to send a specific archive. Leave it blank
- * to send dynamical archives or the current working archive.
- *
- * If SendHeaders is enabled (by default), the library will send the HTTP
- * headers itself before it sends the contents. This headers are :
- * Content-Type, Content-Disposition, Content-Length and Accept-Range.
- *
- * Please note that this function DOES NOT stops the script so don't forget
- * to exit() to avoid your script sending other data and corrupt the archive.
- * Another note : for AUTO_DETECT dynamical archives you can know the
- * extension to add to the name with getCompression()
- */
- function sendClient($name = '', $archive = '', $headers = true)
- {
- if(!$name && !$this->_nomf) return -9;
- if(!$archive && !$this->_memdat) return -10;
- if(!$name) $name = basename($this->_nomf);
-
- if($archive){ if(!file_exists($archive)) return -11; }
- else $decoded = $this->getDynamicArchive();
-
- if($headers)
- {
- header('Content-Type: application/x-gtar');
- header('Content-Disposition: attachment; filename='.basename($name));
- header('Accept-Ranges: bytes');
- header('Content-Length: '.($archive ? filesize($archive) : strlen($decoded)));
- }
-
- if($archive)
- {
- $fp = @fopen($archive,'rb');
- if(!$fp) return -4;
-
- while(!foef($fp)) echo fread($fp,2048);
- }
- else
- {
- echo $decoded;
- }
-
- return true;
- }
-
- /**
- * Extract part or totality of the archive.
- *
- * This function can extract files from an archive, and returns then a
- * status codes that can be converted with TarErrorStr() into a
- * human readable message.
- *
- * Only the first argument is required, What and it can be either the
- * constant FULL_ARCHIVE or an indexed array containing each file you want to
- * extract.
- *
- * To contains the target folder to extract the archive. It is optional and
- * the default value is '.' which means the current folder. If the target
- * folder doesn't exist, the script attempts to create it and give it
- * permissions 0777 by default.
- *
- * RemovePath is very usefull when you want to extract files from a subfoler
- * in the archive to a root folder. For instance, if you have a file in the
- * archive called some/sub/folder/test.txt and you want to extract it to the
- * script folder, you can call Extract with To = '.' and RemovePath =
- * 'some/sub/folder/'
- *
- * FileMode is optional and its default value is 0755. It is in fact the UNIX
- * permission in octal mode (prefixed with a 0) that will be given on each
- * extracted file.
- */
- function Extract($p_what = FULL_ARCHIVE, $p_to = '.', $p_remdir='', $p_mode = 0755)
- {
- if(!$this->_OpenRead()) return -4;
-// if(!@is_dir($p_to)) if(!@mkdir($p_to, 0777)) return -8; --CS
- if(!@is_dir($p_to)) if(!$this->_dirApp($p_to)) return -8; //--CS (route through correct dir fn)
-
- $ok = $this->_extractList($p_to, $p_what, $p_remdir, $p_mode);
- $this->_CompTar();
-
- return $ok;
- }
-
- /**
- * Create a new package with the given files
- *
- * This function will attempt to create a new archive with global headers
- * then add the given files into. If the archive is a real file, the
- * contents are written directly into the file, if it is a dynamic archive
- * contents are only stored in memory. This function should not be used to
- * add files to an existing archive, you should use Add() instead.
- *
- * The FileList supports actually three différents modes :
- *
- * - You can pass a string containing filenames separated by pipes '|'.
- * In this case the file are read from the webserver filesystem and the
- * root folder is the folder where the script using the MaxgTar is called.
- *
- * - You can also give a unidimensional indexed array containing the
- * filenames. The behaviour for the content reading is the same that a
- * '|'ed string.
- *
- * - The more useful usage is to pass bidimentional arrays, where the
- * first element contains the filename and the second contains the file
- * contents. You can even add empty folders to the package if the filename
- * has a leading '/'. Once again, have a look at the exemples to understand
- * better.
- *
- * Note you can also give arrays with both dynamic contents and static files.
- *
- * The optional parameter RemovePath can be used to delete a part of the tree
- * of the filename you're adding, for instance if you're adding in the root
- * of a package a file that is stored somewhere in the server tree.
- *
- * On the contrary the parameter AddPath can be used to add a prefix folder
- * to the file you store. Note also that the RemovePath is applied before the
- * AddPath is added, so it HAS a sense to use both parameters together.
- */
- function Create($p_filelist,$p_add='',$p_rem='')
- {
- if(!$fl = $this->_fetchFilelist($p_filelist)) return -5;
- if(!$this->_OpenWrite()) return -6;
-
- $ok = $this->_addFileList($fl,$p_add,$p_rem);
-
- if($ok) $this->_writeFooter();
- else{ $this->_CompTar(); @unlink($this->_nomf); }
-
- return $ok;
- }
-
- /**
- * Add files to an existing package.
- *
- * This function does exactly the same than Create() exept it
- * will append the given files at the end of the archive. Please not the is
- * safe to call Add() on a newly created archive whereas the
- * contrary will fail !
- *
- * This function returns a status code, you can use TarErrorStr() on
- * it to get the human-readable description of the error.
- */
- function Add($p_filelist, $p_add = '', $p_rem = '') { if (($this->_nomf
-!= ARCHIVE_DYNAMIC && @is_file($this->_nomf)) || ($this->_nomf ==
-ARCHIVE_DYNAMIC && !$this->_memdat)) return $this->Create($p_filelist,
-$p_add, $p_rem);
-
- if(!$fl = $this->_fetchFilelist($p_filelist)) return -5;
- return $this->_append($fl, $p_add, $p_rem);
- }
-
- /**
- * Read the contents of a TAR archive
- *
- * This function attempts to get the list of the files stored in the
- * archive, and return either an error code or an indexed array of
- * associative array containing for each file the following informations :
- *
- * checksum Tar Checksum of the file
- * filename The full name of the stored file (up to 100 c.)
- * mode UNIX permissions in DECIMAL, not octal
- * uid The Owner ID
- * gid The Group ID
- * size Uncompressed filesize
- * mtime Timestamp of last modification
- * typeflag Empty for files, set for folders
- * link For the links, did you guess it ?
- * uname Owner name
- * gname Group name
- */
- function ListContents()
- {
- if(!$this->_nomf) return -3;
- if(!$this->_OpenRead()) return -4;
-
- $result = Array();
-
- while ($dat = $this->_read(512))
- {
- $dat = $this->_readHeader($dat);
- if(!is_array($dat)) continue;
-
- $this->_seek(ceil($dat['size']/512)*512,1);
- $result[] = $dat;
- }
-
- return $result;
- }
-
- /**
- * Convert a status code into a human readable message
- *
- * Some MaxgTar functions like Create(), Add() ... return numerical
- * status code. You can pass them to this function to grab their english
- * equivalent.
- */
- function TarErrorStr($i)
- {
- $ecodes = Array(
- 1 => true,
- 0 => "Undocumented error",
- -1 => "Can't use COMPRESS_GZIP compression : ZLIB extensions are not loaded !",
- -2 => "Can't use COMPRESS_BZIP compression : BZ2 extensions are not loaded !",
- -3 => "You must set a archive file to read the contents !",
- -4 => "Can't open the archive file for read !",
- -5 => "Invalide file list !",
- -6 => "Can't open the archive in write mode !",
- -7 => "There is no ARCHIVE_DYNAMIC to write !",
- -8 => "Can't create the directory to extract files !",
- -9 => "Please pass a archive name to send if you made created an ARCHIVE_DYNAMIC !",
- -10 => "You didn't pass an archive filename and there is no stored ARCHIVE_DYNAMIC !",
- -11 => "Given archive doesn't exist !"
- );
-
- return isset($ecodes[$i]) ? $ecodes[$i] : $ecodes[0];
- }
-
- /**
- * Display informations about the MaxgTar Class.
- *
- * This function will display vaious informations about the server
- * MaxgTar is running on.
- *
- * The optional parameter DispHeaders is used to generate a full page with
- * HTML headers (TRUE by default) or just the table with the informations
- * (FALSE). Note that the HTML page generated is verified compatible XHTML
- * 1.0, but not HTML 4.0 compatible.
- */
- function TarInfo($headers = true)
- {
- if($headers)
- {
- ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-
-<head>
- <title>MaxgComp TAR</title>
- <style type="text/css">
- body{margin: 20px;}
- body,td{font-size:10pt;font-family: arial;}
- </style>
- <meta name="Author" content="The Maxg Network, http://maxg.info" />
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-</head>
-
-<body bgcolor="#EFEFEF">
-<?php
- }
-?>
-<table border="0" align="center" width="500" cellspacing="4" cellpadding="5" style="border:1px dotted black;">
-<tr>
- <td align="center" bgcolor="#DFDFEF" colspan="3" style="font-size:15pt;font-color:#330000;border:1px solid black;">MaxgComp TAR</td>
-</tr>
-<tr>
- <td colspan="2" bgcolor="#EFEFFE" style="border:1px solid black;">This software was created by the Maxg Network, <a href="http://maxg.info" target="_blank" style="text-decoration:none;color:#333366;">http://maxg.info</a>
- <br />It is distributed under the GNU <a href="http://www.gnu.org/copyleft/lesser.html" target="_blank" style="text-decoration:none;color:#333366;">Lesser General Public License</a>
- <br />You can find the documentation of this class <a href="http://docs.maxg.info" target="_blank" style="text-decoration:none;color:#333366;">here</a></td>
- <td width="60" bgcolor="#EFEFFE" style="border:1px solid black;" align="center"><img src="http://img.maxg.info/menu/tar.gif" border="0" alt="MaxgComp TAR" /></td>
-</tr>
-<tr>
- <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">MaxgComp TAR version</td>
- <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=TARLIB_VERSION?></td>
-</tr>
-<tr>
- <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">ZLIB extensions</td>
- <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('zlib') ? '<b>Yes</b>' : '<i>No</i>')?></td>
-</tr>
-<tr>
- <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">BZ2 extensions</td>
- <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('bz2') ? '<b>Yes</b>' : '<i>No</i>')?></td>
-</tr>
-<tr>
- <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Allow URL fopen</td>
- <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(ini_get('allow_url_fopen') ? '<b>Yes</b>' : '<i>No</i>')?></td>
-</tr>
-<tr>
- <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Time limit</td>
- <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=ini_get('max_execution_time')?></td>
-</tr>
-<tr>
- <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">PHP Version</td>
- <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=phpversion()?></td>
-</tr>
-<tr>
- <td colspan="3" align="center" bgcolor="#EFEFFE" style="border:1px solid black;">
- <i>Special thanks to « Vincent Blavet » for his PEAR::Archive_Tar class</i>
- </td>
-</tr>
-</table>
-<?php
- if($headers) echo '</body></html>';
- }
-
- function _seek($p_flen, $tell=0)
- {
- if($this->_nomf === ARCHIVE_DYNAMIC)
- $this->_memdat=substr($this->_memdat,0,($tell ? strlen($this->_memdat) : 0) + $p_flen);
- elseif($this->_comptype == COMPRESS_GZIP)
- @gzseek($this->_fp, ($tell ? @gztell($this->_fp) : 0)+$p_flen);
- elseif($this->_comptype == COMPRESS_BZIP)
- @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen);
- else
- @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen);
- }
-
- function _OpenRead()
- {
- if($this->_comptype == COMPRESS_GZIP)
- $this->_fp = @gzopen($this->_nomf, 'rb');
- elseif($this->_comptype == COMPRESS_BZIP)
- $this->_fp = @bzopen($this->_nomf, 'rb');
- else
- $this->_fp = @fopen($this->_nomf, 'rb');
-
- return ($this->_fp ? true : false);
- }
-
- function _OpenWrite($add = 'w')
- {
- if($this->_nomf === ARCHIVE_DYNAMIC) return true;
-
- if($this->_comptype == COMPRESS_GZIP)
- $this->_fp = @gzopen($this->_nomf, $add.'b'.$this->_compzlevel);
- elseif($this->_comptype == COMPRESS_BZIP)
- $this->_fp = @bzopen($this->_nomf, $add.'b');
- else
- $this->_fp = @fopen($this->_nomf, $add.'b');
-
- return ($this->_fp ? true : false);
- }
-
- function _CompTar()
- {
- if($this->_nomf === ARCHIVE_DYNAMIC || !$this->_fp) return;
-
- if($this->_comptype == COMPRESS_GZIP) @gzclose($this->_fp);
- elseif($this->_comptype == COMPRESS_BZIP) @bzclose($this->_fp);
- else @fclose($this->_fp);
- }
-
- function _read($p_len)
- {
- if($this->_comptype == COMPRESS_GZIP)
- return @gzread($this->_fp,$p_len);
- elseif($this->_comptype == COMPRESS_BZIP)
- return @bzread($this->_fp,$p_len);
- else
- return @fread($this->_fp,$p_len);
- }
-
- function _write($p_data)
- {
- if($this->_nomf === ARCHIVE_DYNAMIC) $this->_memdat .= $p_data;
- elseif($this->_comptype == COMPRESS_GZIP)
- return @gzwrite($this->_fp,$p_data);
-
- elseif($this->_comptype == COMPRESS_BZIP)
- return @bzwrite($this->_fp,$p_data);
-
- else
- return @fwrite($this->_fp,$p_data);
- }
-
- function _encode($p_dat)
- {
- if($this->_comptype == COMPRESS_GZIP)
- return gzencode($p_dat, $this->_compzlevel);
- elseif($this->_comptype == COMPRESS_BZIP)
- return bzcompress($p_dat, $this->_compzlevel);
- else return $p_dat;
- }
-
- function _readHeader($p_dat)
- {
- if (!$p_dat || strlen($p_dat) != 512) return false;
-
- for ($i=0, $chks=0; $i<148; $i++)
- $chks += ord($p_dat[$i]);
-
- for ($i=156,$chks+=256; $i<512; $i++)
- $chks += ord($p_dat[$i]);
-
- $headers = @unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $p_dat);
- if(!$headers) return false;
-
- $return['checksum'] = OctDec(trim($headers['checksum']));
- if ($return['checksum'] != $chks) return false;
-
- $return['filename'] = trim($headers['filename']);
- $return['mode'] = OctDec(trim($headers['mode']));
- $return['uid'] = OctDec(trim($headers['uid']));
- $return['gid'] = OctDec(trim($headers['gid']));
- $return['size'] = OctDec(trim($headers['size']));
- $return['mtime'] = OctDec(trim($headers['mtime']));
- $return['typeflag'] = $headers['typeflag'];
- $return['link'] = trim($headers['link']);
- $return['uname'] = trim($headers['uname']);
- $return['gname'] = trim($headers['gname']);
-
- return $return;
- }
-
- function _fetchFilelist($p_filelist)
- {
- if(!$p_filelist || (is_array($p_filelist) && !@count($p_filelist))) return false;
-
- if(is_string($p_filelist))
- {
- $p_filelist = explode('|',$p_filelist);
- if(!is_array($p_filelist)) $p_filelist = Array($p_filelist);
- }
-
- return $p_filelist;
- }
-
- function _addFileList($p_fl, $p_addir, $p_remdir)
- {
- foreach($p_fl as $file)
- {
- if(($file == $this->_nomf && $this->_nomf != ARCHIVE_DYNAMIC) || !$file || (!file_exists($file) && !is_array($file)))
- continue;
-
- if (!$this->_addFile($file, $p_addir, $p_remdir))
- continue;
-
- if (@is_dir($file))
- {
- $d = @opendir($file);
-
- if(!$d) continue;
- readdir($d); readdir($d);
-
- while($f = readdir($d))
- {
- if($file != ".") $tmplist[0] = "$file/$f";
- else $tmplist[0] = $d;
-
- $this->_addFileList($tmplist, $p_addir, $p_remdir);
- }
-
- closedir($d); unset($tmplist,$f);
- }
- }
- return true;
- }
-
- function _addFile($p_fn, $p_addir = '', $p_remdir = '')
- {
- if(is_array($p_fn)) list($p_fn, $data) = $p_fn;
- $sname = $p_fn;
-
- if($p_remdir)
- {
- if(substr($p_remdir,-1) != '/') $p_remdir .= "/";
-
- if(substr($sname, 0, strlen($p_remdir)) == $p_remdir)
- $sname = substr($sname, strlen($p_remdir));
- }
-
- if($p_addir) $sname = $p_addir.(substr($p_addir,-1) == '/' ? '' : "/").$sname;
-
- if(strlen($sname) > 99) return;
-
- if(@is_dir($p_fn))
- {
- if(!$this->_writeFileHeader($p_fn, $sname)) return false;
- }
- else
- {
- if(!$data)
- {
- $fp = fopen($p_fn, 'rb');
- if(!$fp) return false;
- }
-
- if(!$this->_writeFileHeader($p_fn, $sname, ($data ? strlen($data) : false))) return false;
-
- if(!$data)
- {
- while(!feof($fp))
- {
- $packed = pack("a512", fread($fp,512));
- $this->_write($packed);
- }
- fclose($fp);
- }
- else
- {
- for($s = 0; $s < strlen($data); $s += 512)
- $this->_write(pack("a512",substr($data,$s,512)));
- }
- }
-
- return true;
- }
-
- function _writeFileHeader($p_file, $p_sname, $p_data=false)
- {
- if(!$p_data)
- {
- if (!$p_sname) $p_sname = $p_file;
- $p_sname = $this->_pathTrans($p_sname);
-
- $h_info = stat($p_file);
- $h[0] = sprintf("%6s ", DecOct($h_info[4]));
- $h[] = sprintf("%6s ", DecOct($h_info[5]));
- $h[] = sprintf("%6s ", DecOct(fileperms($p_file)));
- clearstatcache();
- $h[] = sprintf("%11s ", DecOct(filesize($p_file)));
- $h[] = sprintf("%11s", DecOct(filemtime($p_file)));
-
- $dir = @is_dir($p_file) ? '5' : '';
- }
- else
- {
- $dir = '';
- $p_data = sprintf("%11s ", DecOct($p_data));
- $time = sprintf("%11s ", DecOct(time()));
- $h = Array(" 0 "," 0 "," 40777 ",$p_data,$time);
- }
-
- $data_first = pack("a100a8a8a8a12A12", $p_sname, $h[2], $h[0], $h[1], $h[3], $h[4]);
- $data_last = pack("a1a100a6a2a32a32a8a8a155a12", $dir, '', '', '', '', '', '', '', '', "");
-
- for ($i=0,$chks=0; $i<148; $i++)
- $chks += ord($data_first[$i]);
-
- for ($i=156, $chks+=256, $j=0; $i<512; $i++, $j++)
- $chks += ord($data_last[$j]);
-
- $this->_write($data_first);
-
- $chks = pack("a8",sprintf("%6s ", DecOct($chks)));
- $this->_write($chks.$data_last);
-
- return true;
- }
-
- function _append($p_filelist, $p_addir="", $p_remdir="")
- {
- if(!$this->_fp) if(!$this->_OpenWrite('a')) return -6;
-
- if($this->_nomf == ARCHIVE_DYNAMIC)
- {
- $s = strlen($this->_memdat);
- $this->_memdat = substr($this->_memdat,0,-512);
- }
- else
- {
- $s = filesize($this->_nomf);
- $this->_seek($s-512);
- }
-
- $ok = $this->_addFileList($p_filelist, $p_addir, $p_remdir);
- $this->_writeFooter();
-
- return $ok;
- }
-
- function _pathTrans($p_dir)
- {
- if ($p_dir)
- {
- $subf = explode("/", $p_dir); $r='';
-
- for ($i=count($subf)-1; $i>=0; $i--)
- {
- if ($subf[$i] == ".") {}
- else if ($subf[$i] == "..") $i--;
- else if (!$subf[$i] && $i!=count($subf)-1 && $i) {}
- else $r = $subf[$i].($i!=(count($subf)-1) ? "/".$r : "");
- }
- }
- return $r;
- }
-
- function _writeFooter()
- {
- $this->_write(pack("a512", ""));
- }
-
- function _extractList($p_to, $p_files, $p_remdir, $p_mode = 0755)
- {
- if (!$p_to || ($p_to[0]!="/"&&substr($p_to,0,3)!="../"&&substr($p_to,1,3)!=":\\")) /*" // <- PHP Coder bug */
- $p_to = "./$p_to";
-
- if ($p_remdir && substr($p_remdir,-1)!='/') $p_remdir .= '/';
- $p_remdirs = strlen($p_remdir);
- while($dat = $this->_read(512))
- {
- $headers = $this->_readHeader($dat);
- if(!$headers['filename']) continue;
-
- if($p_files == -1 || $p_files[0] == -1) $extract = true;
- else
- {
- $extract = false;
-
- foreach($p_files as $f)
- {
- if(substr($f,-1) == "/") {
- if((strlen($headers['filename']) > strlen($f)) && (substr($headers['filename'],0,strlen($f))==$f)) {
- $extract = true; break;
- }
- }
- elseif($f == $headers['filename']) {
- $extract = true; break;
- }
- }
- }
-
- if ($extract)
- {
- $det[] = $headers;
- if ($p_remdir && substr($headers['filename'],0,$p_remdirs)==$p_remdir)
- $headers['filename'] = substr($headers['filename'],$p_remdirs);
-
- if($headers['filename'].'/' == $p_remdir && $headers['typeflag']=='5') continue;
-
- if ($p_to != "./" && $p_to != "/")
- {
- while($p_to{-1}=="/") $p_to = substr($p_to,0,-1);
-
- if($headers['filename']{0} == "/")
- $headers['filename'] = $p_to.$headers['filename'];
- else
- $headers['filename'] = $p_to."/".$headers['filename'];
- }
-
- $ok = $this->_dirApp($headers['typeflag']=="5" ? $headers['filename'] : dirname($headers['filename']));
- if($ok < 0) return $ok;
-
- if (!$headers['typeflag'])
- {
- if (!$fp = @fopen($headers['filename'], "wb")) return -6;
- $n = floor($headers['size']/512);
-
- for ($i=0; $i<$n; $i++) fwrite($fp, $this->_read(512),512);
- if (($headers['size'] % 512) != 0) fwrite($fp, $this->_read(512), $headers['size'] % 512);
-
- fclose($fp);
- touch($headers['filename'], $headers['mtime']);
- chmod($headers['filename'], $p_mode);
- }
- else
- {
- $this->_seek(ceil($headers['size']/512)*512,1);
- }
- }else $this->_seek(ceil($headers['size']/512)*512,1);
- }
- return $det;
- }
-
-function _dirApp($d)
- {
-// map to dokuwiki function (its more robust)
- return io_mkdir_p($d);
-/*
- $d = explode('/', $d);
- $base = '';
-
- foreach($d as $f)
- {
- if(!is_dir($base.$f))
- {
- $ok = @mkdir($base.$f, 0777);
- if(!$ok) return false;
- }
- $base .= "$f/";
- }
-*/
- }
-
-}
-
+<?php
+/**
+ * TAR format class - Creates TAR archives
+ *
+ * This class is part or the MaxgComp suite and originally named
+ * MaxgTar class.
+ *
+ * Modified for Dokuwiki
+ *
+ * @license GPL
+ * @link http://docs.maxg.info
+ * @author Bouchon <tarlib at bouchon.org> (Maxg)
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+
+
+/**
+ * Those constants represent the compression method to use.
+ * COMPRESS_GZIP is used for the GZIP compression; COMPRESS_BZIP for
+ * BZIP2 and COMPRESS_NONE for no compression.
+ *
+ * On the other hand, COMPRESS_AUTO is a bit harder. It will first check
+ * if the zlib extensions are loaded.
+ * If it is, GZIP will be used. Else it will check if the bz2 extensions
+ * are loaded. If it is, BZIP2 will be used. Else no compression will be
+ * performed.
+ *
+ * You can then use getCompression() to know the compression chosen.
+ *
+ * If you selected a compression which can't be used (i.e extension not
+ * present), it will be just disabled, and won't produce any error !
+ * As a consequence, getCompression() will return COMPRESS_NONE
+ *
+ * ARCHIVE_DYNAMIC can be passed as the first argument of the constructor, to
+ * create an archive in memory instead of a file. See also: MaxgTar(),
+ * getDynamicArchive() and writeArchive()
+ *
+ * ARCHIVE_RENAMECOMP is a flag that can be multiplied by the compression method
+ * (i.e COMPRESS_AUTO * ARCHIVE_RENAMECOMP). This will add the correct extension
+ * to the archive name, which is useful with COMPRESS_AUTO, ie .bz2 if you gave
+ * COMPRESS_BZIP. See also getCompression(TRUE) which does exactly the
+ * same
+ *
+ * COMPRESS_DETECT does exactly the opposite and try to detect the
+ * compression to use to read the archive depending on its extension. (i.e if
+ * the archive ends with .tar.gz TarLib will try to decompress it with
+ * GZIP). See also setCompression()
+ *
+ * FULL_ARCHIVE is a -1 constant that means "the complete archive" when
+ * extracting. This is explained in Extract()
+ */
+define('COMPRESS_GZIP',1);
+define('COMPRESS_BZIP',2);
+define('COMPRESS_AUTO',3);
+define('COMPRESS_NONE',0);
+define('TARLIB_VERSION','1.2');
+define('FULL_ARCHIVE',-1);
+define('ARCHIVE_DYNAMIC',0);
+define('ARCHIVE_RENAMECOMP',5);
+define('COMPRESS_DETECT',-1);
+
+class TarLib
+{
+ var $_comptype;
+ var $_compzlevel;
+ var $_fp;
+ var $_memdat;
+ var $_nomf;
+ var $_result;
+
+ /**
+ * constructor, initialize the class
+ *
+ * The constructor initialize the variables and prepare the class for the
+ * archive, and return the object created. Note that you can use multiple
+ * instances of the MaxgTar class, if you call this function another time and
+ * store the object in an other variable.
+ *
+ * In fact, MaxgTar accepts the following arguments (all are optional) :
+ *
+ * filename can be either a file name (absolute or relative). In this
+ * case, it can be used both for reading and writing. You can also open
+ * remote archive if you add a protocole name at the beginning of the file
+ * (ie https://host.dom/archive.tar.gz), but for reading only and if the
+ * directive allow_url_fopen is enabled in PHP.INI (this can be checked with
+ * TarInfo()). If you pass a file that doesn't exist, the script
+ * will try to create it. If the archive already exists and contains files,
+ * you can use Add() to append files.But by default this parameter
+ * is ARCHIVE_DYNAMIC (write only) so the archive is created in memory and
+ * can be sent to a file [writeArchive()] or to the client
+ * [sendClient()]
+ *
+ * compression_type should be a constant that represents a type of
+ * compression, or its integer value. The different values are described in
+ * the constants.
+ *
+ * compression_level is an integer between 1 and 9 (by default) an
+ * represent the GZIP or BZIP compression level. 1 produce fast compression,
+ * and 9 produce smaller files. See the RFC 1952 for more infos.
+ */
+ function tarlib($p_filen = ARCHIVE_DYNAMIC , $p_comptype = COMPRESS_AUTO, $p_complevel = 9)
+ {
+ $this->_nomf = $p_filen; $flag=0;
+ if($p_comptype && $p_comptype % 5 == 0){$p_comptype /= ARCHIVE_RENAMECOMP; $flag=1;}
+
+ if($p_complevel > 0 && $p_complevel <= 9) $this->_compzlevel = $p_complevel;
+ else $p_complevel = 9;
+
+ if($p_comptype == COMPRESS_DETECT)
+ {
+ if(strtolower(substr($p_filen,-3)) == '.gz') $p_comptype = COMPRESS_GZIP;
+ elseif(strtolower(substr($p_filen,-4)) == '.bz2') $p_comptype = COMPRESS_BZIP;
+ else $p_comptype = COMPRESS_NONE;
+ }
+
+ switch($p_comptype)
+ {
+ case COMPRESS_GZIP:
+ if(!extension_loaded('zlib')) $this->_result = -1;
+ $this->_comptype = COMPRESS_GZIP;
+ break;
+
+ case COMPRESS_BZIP:
+ if(!extension_loaded('bz2')) $this->_result = -2;
+ $this->_comptype = COMPRESS_BZIP;
+ break;
+
+ case COMPRESS_AUTO:
+ if(extension_loaded('zlib'))
+ $this->_comptype = COMPRESS_GZIP;
+ elseif(extension_loaded('bz2'))
+ $this->_comptype = COMPRESS_BZIP;
+ else
+ $this->_comptype = COMPRESS_NONE;
+ break;
+
+ default:
+ $this->_comptype = COMPRESS_NONE;
+ }
+
+ if($this->_result < 0) $this->_comptype = COMPRESS_NONE;
+
+ if($flag) $this->_nomf.= '.'.$this->getCompression(1);
+ $this->_result = true;
+ }
+
+ /**
+ * Recycle a TAR object.
+ *
+ * This function does exactly the same as TarLib (constructor), except it
+ * returns a status code.
+ */
+ function setArchive($p_name='', $p_comp = COMPRESS_AUTO, $p_level=9)
+ {
+ $this->_CompTar();
+ $this->TarLib($p_name, $p_comp, $p_level);
+ return $this->_result;
+ }
+
+ /**
+ * Get the compression used to generate the archive
+ *
+ * This is a very useful function when you're using dynamical archives.
+ * Besides, if you let the script chose which compression to use, you'll have
+ * a problem when you'll want to send it to the client if you don't know
+ * which compression was used.
+ *
+ * There are two ways to call this function : if you call it without argument
+ * or with FALSE, it will return the compression constants, explained on the
+ * MaxgTar Constants. If you call it with GetExtension on TRUE it will
+ * return the extension without starting dot (ie "tar" or "tar.bz2" or
+ * "tar.gz")
+ *
+ * NOTE: This can be done with the flag ARCHIVE_RENAMECOMP, see the
+ * MaxgTar Constants
+ */
+ function getCompression($ext = false)
+ {
+ $exts = Array('tar','tar.gz','tar.bz2');
+ if($ext) return $exts[$this->_comptype];
+ return $this->_comptype;
+ }
+
+ /**
+ * Change the compression mode.
+ *
+ * This function will change the compression methode to read or write
+ * the archive. See the MaxgTar Constants to see which constants you can use.
+ * It may look strange, but it returns the GZIP compression level.
+ */
+ function setCompression($p_comp = COMPRESS_AUTO)
+ {
+ $this->setArchive($this->_nomf, $p_comp, $this->_compzlevel);
+ return $this->_compzlevel;
+ }
+
+ /**
+ * Returns the compressed dynamic archive.
+ *
+ * When you're working with dynamic archives, use this function to grab
+ * the final compressed archive in a string ready to be put in a SQL table or
+ * in a file.
+ */
+ function getDynamicArchive()
+ {
+ return $this->_encode($this->_memdat);
+ }
+
+ /**
+ * Write a dynamical archive into a file
+ *
+ * This function attempts to write a dynamicaly-genrated archive into
+ * TargetFile on the webserver. It returns a TarErrorStr() status
+ * code.
+ *
+ * To know the extension to add to the file if you're using AUTO_DETECT
+ * compression, you can use getCompression().
+ */
+ function writeArchive($p_archive) {
+ if(!$this->_memdat) return -7;
+ $fp = @fopen($p_archive, 'wb');
+ if(!$fp) return -6;
+
+ fwrite($fp, $this->_memdat);
+ fclose($fp);
+
+ return true;
+ }
+
+ /**
+ * Send a TAR archive to the client browser.
+ *
+ * This function will send an archive to the client, and return a status
+ * code, but can behave differently depending on the arguments you give. All
+ * arguments are optional.
+ *
+ * ClientName is used to specify the archive name to give to the browser. If
+ * you don't give one, it will send the constructor filename or return an
+ * error code in case of dynamical archive.
+ *
+ * FileName is optional and used to send a specific archive. Leave it blank
+ * to send dynamical archives or the current working archive.
+ *
+ * If SendHeaders is enabled (by default), the library will send the HTTP
+ * headers itself before it sends the contents. This headers are :
+ * Content-Type, Content-Disposition, Content-Length and Accept-Range.
+ *
+ * Please note that this function DOES NOT stops the script so don't forget
+ * to exit() to avoid your script sending other data and corrupt the archive.
+ * Another note : for AUTO_DETECT dynamical archives you can know the
+ * extension to add to the name with getCompression()
+ */
+ function sendClient($name = '', $archive = '', $headers = true)
+ {
+ if(!$name && !$this->_nomf) return -9;
+ if(!$archive && !$this->_memdat) return -10;
+ if(!$name) $name = basename($this->_nomf);
+
+ if($archive){ if(!file_exists($archive)) return -11; }
+ else $decoded = $this->getDynamicArchive();
+
+ if($headers)
+ {
+ header('Content-Type: application/x-gtar');
+ header('Content-Disposition: attachment; filename='.basename($name));
+ header('Accept-Ranges: bytes');
+ header('Content-Length: '.($archive ? filesize($archive) : strlen($decoded)));
+ }
+
+ if($archive)
+ {
+ $fp = @fopen($archive,'rb');
+ if(!$fp) return -4;
+
+ while(!foef($fp)) echo fread($fp,2048);
+ }
+ else
+ {
+ echo $decoded;
+ }
+
+ return true;
+ }
+
+ /**
+ * Extract part or totality of the archive.
+ *
+ * This function can extract files from an archive, and returns then a
+ * status codes that can be converted with TarErrorStr() into a
+ * human readable message.
+ *
+ * Only the first argument is required, What and it can be either the
+ * constant FULL_ARCHIVE or an indexed array containing each file you want to
+ * extract.
+ *
+ * To contains the target folder to extract the archive. It is optional and
+ * the default value is '.' which means the current folder. If the target
+ * folder doesn't exist, the script attempts to create it and give it
+ * permissions 0777 by default.
+ *
+ * RemovePath is very usefull when you want to extract files from a subfoler
+ * in the archive to a root folder. For instance, if you have a file in the
+ * archive called some/sub/folder/test.txt and you want to extract it to the
+ * script folder, you can call Extract with To = '.' and RemovePath =
+ * 'some/sub/folder/'
+ *
+ * FileMode is optional and its default value is 0755. It is in fact the UNIX
+ * permission in octal mode (prefixed with a 0) that will be given on each
+ * extracted file.
+ */
+ function Extract($p_what = FULL_ARCHIVE, $p_to = '.', $p_remdir='', $p_mode = 0755)
+ {
+ if(!$this->_OpenRead()) return -4;
+// if(!@is_dir($p_to)) if(!@mkdir($p_to, 0777)) return -8; --CS
+ if(!@is_dir($p_to)) if(!$this->_dirApp($p_to)) return -8; //--CS (route through correct dir fn)
+
+ $ok = $this->_extractList($p_to, $p_what, $p_remdir, $p_mode);
+ $this->_CompTar();
+
+ return $ok;
+ }
+
+ /**
+ * Create a new package with the given files
+ *
+ * This function will attempt to create a new archive with global headers
+ * then add the given files into. If the archive is a real file, the
+ * contents are written directly into the file, if it is a dynamic archive
+ * contents are only stored in memory. This function should not be used to
+ * add files to an existing archive, you should use Add() instead.
+ *
+ * The FileList supports actually three différents modes :
+ *
+ * - You can pass a string containing filenames separated by pipes '|'.
+ * In this case the file are read from the webserver filesystem and the
+ * root folder is the folder where the script using the MaxgTar is called.
+ *
+ * - You can also give a unidimensional indexed array containing the
+ * filenames. The behaviour for the content reading is the same that a
+ * '|'ed string.
+ *
+ * - The more useful usage is to pass bidimentional arrays, where the
+ * first element contains the filename and the second contains the file
+ * contents. You can even add empty folders to the package if the filename
+ * has a leading '/'. Once again, have a look at the exemples to understand
+ * better.
+ *
+ * Note you can also give arrays with both dynamic contents and static files.
+ *
+ * The optional parameter RemovePath can be used to delete a part of the tree
+ * of the filename you're adding, for instance if you're adding in the root
+ * of a package a file that is stored somewhere in the server tree.
+ *
+ * On the contrary the parameter AddPath can be used to add a prefix folder
+ * to the file you store. Note also that the RemovePath is applied before the
+ * AddPath is added, so it HAS a sense to use both parameters together.
+ */
+ function Create($p_filelist,$p_add='',$p_rem='')
+ {
+ if(!$fl = $this->_fetchFilelist($p_filelist)) return -5;
+ if(!$this->_OpenWrite()) return -6;
+
+ $ok = $this->_addFileList($fl,$p_add,$p_rem);
+
+ if($ok) $this->_writeFooter();
+ else{ $this->_CompTar(); @unlink($this->_nomf); }
+
+ return $ok;
+ }
+
+ /**
+ * Add files to an existing package.
+ *
+ * This function does exactly the same than Create() exept it
+ * will append the given files at the end of the archive. Please not the is
+ * safe to call Add() on a newly created archive whereas the
+ * contrary will fail !
+ *
+ * This function returns a status code, you can use TarErrorStr() on
+ * it to get the human-readable description of the error.
+ */
+ function Add($p_filelist, $p_add = '', $p_rem = '') { if (($this->_nomf
+!= ARCHIVE_DYNAMIC && @is_file($this->_nomf)) || ($this->_nomf ==
+ARCHIVE_DYNAMIC && !$this->_memdat)) return $this->Create($p_filelist,
+$p_add, $p_rem);
+
+ if(!$fl = $this->_fetchFilelist($p_filelist)) return -5;
+ return $this->_append($fl, $p_add, $p_rem);
+ }
+
+ /**
+ * Read the contents of a TAR archive
+ *
+ * This function attempts to get the list of the files stored in the
+ * archive, and return either an error code or an indexed array of
+ * associative array containing for each file the following informations :
+ *
+ * checksum Tar Checksum of the file
+ * filename The full name of the stored file (up to 100 c.)
+ * mode UNIX permissions in DECIMAL, not octal
+ * uid The Owner ID
+ * gid The Group ID
+ * size Uncompressed filesize
+ * mtime Timestamp of last modification
+ * typeflag Empty for files, set for folders
+ * link For the links, did you guess it ?
+ * uname Owner name
+ * gname Group name
+ */
+ function ListContents()
+ {
+ if(!$this->_nomf) return -3;
+ if(!$this->_OpenRead()) return -4;
+
+ $result = Array();
+
+ while ($dat = $this->_read(512))
+ {
+ $dat = $this->_readHeader($dat);
+ if(!is_array($dat)) continue;
+
+ $this->_seek(ceil($dat['size']/512)*512,1);
+ $result[] = $dat;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Convert a status code into a human readable message
+ *
+ * Some MaxgTar functions like Create(), Add() ... return numerical
+ * status code. You can pass them to this function to grab their english
+ * equivalent.
+ */
+ function TarErrorStr($i)
+ {
+ $ecodes = Array(
+ 1 => true,
+ 0 => "Undocumented error",
+ -1 => "Can't use COMPRESS_GZIP compression : ZLIB extensions are not loaded !",
+ -2 => "Can't use COMPRESS_BZIP compression : BZ2 extensions are not loaded !",
+ -3 => "You must set a archive file to read the contents !",
+ -4 => "Can't open the archive file for read !",
+ -5 => "Invalide file list !",
+ -6 => "Can't open the archive in write mode !",
+ -7 => "There is no ARCHIVE_DYNAMIC to write !",
+ -8 => "Can't create the directory to extract files !",
+ -9 => "Please pass a archive name to send if you made created an ARCHIVE_DYNAMIC !",
+ -10 => "You didn't pass an archive filename and there is no stored ARCHIVE_DYNAMIC !",
+ -11 => "Given archive doesn't exist !"
+ );
+
+ return isset($ecodes[$i]) ? $ecodes[$i] : $ecodes[0];
+ }
+
+ /**
+ * Display informations about the MaxgTar Class.
+ *
+ * This function will display vaious informations about the server
+ * MaxgTar is running on.
+ *
+ * The optional parameter DispHeaders is used to generate a full page with
+ * HTML headers (TRUE by default) or just the table with the informations
+ * (FALSE). Note that the HTML page generated is verified compatible XHTML
+ * 1.0, but not HTML 4.0 compatible.
+ */
+ function TarInfo($headers = true)
+ {
+ if($headers)
+ {
+ ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+
+<head>
+ <title>MaxgComp TAR</title>
+ <style type="text/css">
+ body{margin: 20px;}
+ body,td{font-size:10pt;font-family: arial;}
+ </style>
+ <meta name="Author" content="The Maxg Network, http://maxg.info" />
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+</head>
+
+<body bgcolor="#EFEFEF">
+<?php
+ }
+?>
+<table border="0" align="center" width="500" cellspacing="4" cellpadding="5" style="border:1px dotted black;">
+<tr>
+ <td align="center" bgcolor="#DFDFEF" colspan="3" style="font-size:15pt;font-color:#330000;border:1px solid black;">MaxgComp TAR</td>
+</tr>
+<tr>
+ <td colspan="2" bgcolor="#EFEFFE" style="border:1px solid black;">This software was created by the Maxg Network, <a href="http://maxg.info" target="_blank" style="text-decoration:none;color:#333366;">http://maxg.info</a>
+ <br />It is distributed under the GNU <a href="http://www.gnu.org/copyleft/lesser.html" target="_blank" style="text-decoration:none;color:#333366;">Lesser General Public License</a>
+ <br />You can find the documentation of this class <a href="http://docs.maxg.info" target="_blank" style="text-decoration:none;color:#333366;">here</a></td>
+ <td width="60" bgcolor="#EFEFFE" style="border:1px solid black;" align="center"><img src="http://img.maxg.info/menu/tar.gif" border="0" alt="MaxgComp TAR" /></td>
+</tr>
+<tr>
+ <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">MaxgComp TAR version</td>
+ <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=TARLIB_VERSION?></td>
+</tr>
+<tr>
+ <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">ZLIB extensions</td>
+ <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('zlib') ? '<b>Yes</b>' : '<i>No</i>')?></td>
+</tr>
+<tr>
+ <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">BZ2 extensions</td>
+ <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('bz2') ? '<b>Yes</b>' : '<i>No</i>')?></td>
+</tr>
+<tr>
+ <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Allow URL fopen</td>
+ <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(ini_get('allow_url_fopen') ? '<b>Yes</b>' : '<i>No</i>')?></td>
+</tr>
+<tr>
+ <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Time limit</td>
+ <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=ini_get('max_execution_time')?></td>
+</tr>
+<tr>
+ <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">PHP Version</td>
+ <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=phpversion()?></td>
+</tr>
+<tr>
+ <td colspan="3" align="center" bgcolor="#EFEFFE" style="border:1px solid black;">
+ <i>Special thanks to « Vincent Blavet » for his PEAR::Archive_Tar class</i>
+ </td>
+</tr>
+</table>
+<?php
+ if($headers) echo '</body></html>';
+ }
+
+ function _seek($p_flen, $tell=0)
+ {
+ if($this->_nomf === ARCHIVE_DYNAMIC)
+ $this->_memdat=substr($this->_memdat,0,($tell ? strlen($this->_memdat) : 0) + $p_flen);
+ elseif($this->_comptype == COMPRESS_GZIP)
+ @gzseek($this->_fp, ($tell ? @gztell($this->_fp) : 0)+$p_flen);
+ elseif($this->_comptype == COMPRESS_BZIP)
+ @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen);
+ else
+ @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen);
+ }
+
+ function _OpenRead()
+ {
+ if($this->_comptype == COMPRESS_GZIP)
+ $this->_fp = @gzopen($this->_nomf, 'rb');
+ elseif($this->_comptype == COMPRESS_BZIP)
+ $this->_fp = @bzopen($this->_nomf, 'rb');
+ else
+ $this->_fp = @fopen($this->_nomf, 'rb');
+
+ return ($this->_fp ? true : false);
+ }
+
+ function _OpenWrite($add = 'w')
+ {
+ if($this->_nomf === ARCHIVE_DYNAMIC) return true;
+
+ if($this->_comptype == COMPRESS_GZIP)
+ $this->_fp = @gzopen($this->_nomf, $add.'b'.$this->_compzlevel);
+ elseif($this->_comptype == COMPRESS_BZIP)
+ $this->_fp = @bzopen($this->_nomf, $add.'b');
+ else
+ $this->_fp = @fopen($this->_nomf, $add.'b');
+
+ return ($this->_fp ? true : false);
+ }
+
+ function _CompTar()
+ {
+ if($this->_nomf === ARCHIVE_DYNAMIC || !$this->_fp) return;
+
+ if($this->_comptype == COMPRESS_GZIP) @gzclose($this->_fp);
+ elseif($this->_comptype == COMPRESS_BZIP) @bzclose($this->_fp);
+ else @fclose($this->_fp);
+ }
+
+ function _read($p_len)
+ {
+ if($this->_comptype == COMPRESS_GZIP)
+ return @gzread($this->_fp,$p_len);
+ elseif($this->_comptype == COMPRESS_BZIP)
+ return @bzread($this->_fp,$p_len);
+ else
+ return @fread($this->_fp,$p_len);
+ }
+
+ function _write($p_data)
+ {
+ if($this->_nomf === ARCHIVE_DYNAMIC) $this->_memdat .= $p_data;
+ elseif($this->_comptype == COMPRESS_GZIP)
+ return @gzwrite($this->_fp,$p_data);
+
+ elseif($this->_comptype == COMPRESS_BZIP)
+ return @bzwrite($this->_fp,$p_data);
+
+ else
+ return @fwrite($this->_fp,$p_data);
+ }
+
+ function _encode($p_dat)
+ {
+ if($this->_comptype == COMPRESS_GZIP)
+ return gzencode($p_dat, $this->_compzlevel);
+ elseif($this->_comptype == COMPRESS_BZIP)
+ return bzcompress($p_dat, $this->_compzlevel);
+ else return $p_dat;
+ }
+
+ function _readHeader($p_dat)
+ {
+ if (!$p_dat || strlen($p_dat) != 512) return false;
+
+ for ($i=0, $chks=0; $i<148; $i++)
+ $chks += ord($p_dat[$i]);
+
+ for ($i=156,$chks+=256; $i<512; $i++)
+ $chks += ord($p_dat[$i]);
+
+ $headers = @unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $p_dat);
+ if(!$headers) return false;
+
+ $return['checksum'] = OctDec(trim($headers['checksum']));
+ if ($return['checksum'] != $chks) return false;
+
+ $return['filename'] = trim($headers['filename']);
+ $return['mode'] = OctDec(trim($headers['mode']));
+ $return['uid'] = OctDec(trim($headers['uid']));
+ $return['gid'] = OctDec(trim($headers['gid']));
+ $return['size'] = OctDec(trim($headers['size']));
+ $return['mtime'] = OctDec(trim($headers['mtime']));
+ $return['typeflag'] = $headers['typeflag'];
+ $return['link'] = trim($headers['link']);
+ $return['uname'] = trim($headers['uname']);
+ $return['gname'] = trim($headers['gname']);
+
+ return $return;
+ }
+
+ function _fetchFilelist($p_filelist)
+ {
+ if(!$p_filelist || (is_array($p_filelist) && !@count($p_filelist))) return false;
+
+ if(is_string($p_filelist))
+ {
+ $p_filelist = explode('|',$p_filelist);
+ if(!is_array($p_filelist)) $p_filelist = Array($p_filelist);
+ }
+
+ return $p_filelist;
+ }
+
+ function _addFileList($p_fl, $p_addir, $p_remdir)
+ {
+ foreach($p_fl as $file)
+ {
+ if(($file == $this->_nomf && $this->_nomf != ARCHIVE_DYNAMIC) || !$file || (!file_exists($file) && !is_array($file)))
+ continue;
+
+ if (!$this->_addFile($file, $p_addir, $p_remdir))
+ continue;
+
+ if (@is_dir($file))
+ {
+ $d = @opendir($file);
+
+ if(!$d) continue;
+ readdir($d); readdir($d);
+
+ while($f = readdir($d))
+ {
+ if($file != ".") $tmplist[0] = "$file/$f";
+ else $tmplist[0] = $d;
+
+ $this->_addFileList($tmplist, $p_addir, $p_remdir);
+ }
+
+ closedir($d); unset($tmplist,$f);
+ }
+ }
+ return true;
+ }
+
+ function _addFile($p_fn, $p_addir = '', $p_remdir = '')
+ {
+ if(is_array($p_fn)) list($p_fn, $data) = $p_fn;
+ $sname = $p_fn;
+
+ if($p_remdir)
+ {
+ if(substr($p_remdir,-1) != '/') $p_remdir .= "/";
+
+ if(substr($sname, 0, strlen($p_remdir)) == $p_remdir)
+ $sname = substr($sname, strlen($p_remdir));
+ }
+
+ if($p_addir) $sname = $p_addir.(substr($p_addir,-1) == '/' ? '' : "/").$sname;
+
+ if(strlen($sname) > 99) return;
+
+ if(@is_dir($p_fn))
+ {
+ if(!$this->_writeFileHeader($p_fn, $sname)) return false;
+ }
+ else
+ {
+ if(!$data)
+ {
+ $fp = fopen($p_fn, 'rb');
+ if(!$fp) return false;
+ }
+
+ if(!$this->_writeFileHeader($p_fn, $sname, ($data ? strlen($data) : false))) return false;
+
+ if(!$data)
+ {
+ while(!feof($fp))
+ {
+ $packed = pack("a512", fread($fp,512));
+ $this->_write($packed);
+ }
+ fclose($fp);
+ }
+ else
+ {
+ for($s = 0; $s < strlen($data); $s += 512)
+ $this->_write(pack("a512",substr($data,$s,512)));
+ }
+ }
+
+ return true;
+ }
+
+ function _writeFileHeader($p_file, $p_sname, $p_data=false)
+ {
+ if(!$p_data)
+ {
+ if (!$p_sname) $p_sname = $p_file;
+ $p_sname = $this->_pathTrans($p_sname);
+
+ $h_info = stat($p_file);
+ $h[0] = sprintf("%6s ", DecOct($h_info[4]));
+ $h[] = sprintf("%6s ", DecOct($h_info[5]));
+ $h[] = sprintf("%6s ", DecOct(fileperms($p_file)));
+ clearstatcache();
+ $h[] = sprintf("%11s ", DecOct(filesize($p_file)));
+ $h[] = sprintf("%11s", DecOct(filemtime($p_file)));
+
+ $dir = @is_dir($p_file) ? '5' : '';
+ }
+ else
+ {
+ $dir = '';
+ $p_data = sprintf("%11s ", DecOct($p_data));
+ $time = sprintf("%11s ", DecOct(time()));
+ $h = Array(" 0 "," 0 "," 40777 ",$p_data,$time);
+ }
+
+ $data_first = pack("a100a8a8a8a12A12", $p_sname, $h[2], $h[0], $h[1], $h[3], $h[4]);
+ $data_last = pack("a1a100a6a2a32a32a8a8a155a12", $dir, '', '', '', '', '', '', '', '', "");
+
+ for ($i=0,$chks=0; $i<148; $i++)
+ $chks += ord($data_first[$i]);
+
+ for ($i=156, $chks+=256, $j=0; $i<512; $i++, $j++)
+ $chks += ord($data_last[$j]);
+
+ $this->_write($data_first);
+
+ $chks = pack("a8",sprintf("%6s ", DecOct($chks)));
+ $this->_write($chks.$data_last);
+
+ return true;
+ }
+
+ function _append($p_filelist, $p_addir="", $p_remdir="")
+ {
+ if(!$this->_fp) if(!$this->_OpenWrite('a')) return -6;
+
+ if($this->_nomf == ARCHIVE_DYNAMIC)
+ {
+ $s = strlen($this->_memdat);
+ $this->_memdat = substr($this->_memdat,0,-512);
+ }
+ else
+ {
+ $s = filesize($this->_nomf);
+ $this->_seek($s-512);
+ }
+
+ $ok = $this->_addFileList($p_filelist, $p_addir, $p_remdir);
+ $this->_writeFooter();
+
+ return $ok;
+ }
+
+ function _pathTrans($p_dir)
+ {
+ if ($p_dir)
+ {
+ $subf = explode("/", $p_dir); $r='';
+
+ for ($i=count($subf)-1; $i>=0; $i--)
+ {
+ if ($subf[$i] == ".") {}
+ else if ($subf[$i] == "..") $i--;
+ else if (!$subf[$i] && $i!=count($subf)-1 && $i) {}
+ else $r = $subf[$i].($i!=(count($subf)-1) ? "/".$r : "");
+ }
+ }
+ return $r;
+ }
+
+ function _writeFooter()
+ {
+ $this->_write(pack("a512", ""));
+ }
+
+ function _extractList($p_to, $p_files, $p_remdir, $p_mode = 0755)
+ {
+ if (!$p_to || ($p_to[0]!="/"&&substr($p_to,0,3)!="../"&&substr($p_to,1,3)!=":\\")) /*" // <- PHP Coder bug */
+ $p_to = "./$p_to";
+
+ if ($p_remdir && substr($p_remdir,-1)!='/') $p_remdir .= '/';
+ $p_remdirs = strlen($p_remdir);
+ while($dat = $this->_read(512))
+ {
+ $headers = $this->_readHeader($dat);
+ if(!$headers['filename']) continue;
+
+ if($p_files == -1 || $p_files[0] == -1) $extract = true;
+ else
+ {
+ $extract = false;
+
+ foreach($p_files as $f)
+ {
+ if(substr($f,-1) == "/") {
+ if((strlen($headers['filename']) > strlen($f)) && (substr($headers['filename'],0,strlen($f))==$f)) {
+ $extract = true; break;
+ }
+ }
+ elseif($f == $headers['filename']) {
+ $extract = true; break;
+ }
+ }
+ }
+
+ if ($extract)
+ {
+ $det[] = $headers;
+ if ($p_remdir && substr($headers['filename'],0,$p_remdirs)==$p_remdir)
+ $headers['filename'] = substr($headers['filename'],$p_remdirs);
+
+ if($headers['filename'].'/' == $p_remdir && $headers['typeflag']=='5') continue;
+
+ if ($p_to != "./" && $p_to != "/")
+ {
+ while($p_to{-1}=="/") $p_to = substr($p_to,0,-1);
+
+ if($headers['filename']{0} == "/")
+ $headers['filename'] = $p_to.$headers['filename'];
+ else
+ $headers['filename'] = $p_to."/".$headers['filename'];
+ }
+
+ $ok = $this->_dirApp($headers['typeflag']=="5" ? $headers['filename'] : dirname($headers['filename']));
+ if($ok < 0) return $ok;
+
+ if (!$headers['typeflag'])
+ {
+ if (!$fp = @fopen($headers['filename'], "wb")) return -6;
+ $n = floor($headers['size']/512);
+
+ for ($i=0; $i<$n; $i++) fwrite($fp, $this->_read(512),512);
+ if (($headers['size'] % 512) != 0) fwrite($fp, $this->_read(512), $headers['size'] % 512);
+
+ fclose($fp);
+ touch($headers['filename'], $headers['mtime']);
+ chmod($headers['filename'], $p_mode);
+ }
+ else
+ {
+ $this->_seek(ceil($headers['size']/512)*512,1);
+ }
+ }else $this->_seek(ceil($headers['size']/512)*512,1);
+ }
+ return $det;
+ }
+
+function _dirApp($d)
+ {
+// map to dokuwiki function (its more robust)
+ return io_mkdir_p($d);
+/*
+ $d = explode('/', $d);
+ $base = '';
+
+ foreach($d as $f)
+ {
+ if(!is_dir($base.$f))
+ {
+ $ok = @mkdir($base.$f, 0777);
+ if(!$ok) return false;
+ }
+ $base .= "$f/";
+ }
+*/
+ }
+
+}
+
Modified: site/trunk/www-root/wiki/inc/ZipLib.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/ZipLib.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/ZipLib.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,475 +1,475 @@
-<?php
-
-/**
- * @author bouchon
- * @link http://dev.maxg.info
- * @link http://forum.maxg.info
- *
- * Modified for Dokuwiki
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-class ZipLib
-{
-
- var $datasec, $ctrl_dir = array();
- var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
- var $old_offset = 0; var $dirs = Array(".");
-
- function get_List($zip_name)
- {
- $zip = @fopen($zip_name, 'rb');
- if(!$zip) return(0);
- $centd = $this->ReadCentralDir($zip,$zip_name);
-
- @rewind($zip);
- @fseek($zip, $centd['offset']);
-
- for ($i=0; $i<$centd['entries']; $i++)
- {
- $header = $this->ReadCentralFileHeaders($zip);
- $header['index'] = $i;$info['filename'] = $header['filename'];
- $info['stored_filename'] = $header['stored_filename'];
- $info['size'] = $header['size'];$info['compressed_size']=$header['compressed_size'];
- $info['crc'] = strtoupper(dechex( $header['crc'] ));
- $info['mtime'] = $header['mtime']; $info['comment'] = $header['comment'];
- $info['folder'] = ($header['external']==0x41FF0010||$header['external']==16)?1:0;
- $info['index'] = $header['index'];$info['status'] = $header['status'];
- $ret[]=$info; unset($header);
- }
- return $ret;
- }
-
- function Add($files,$compact)
- {
- if(!is_array($files[0])) $files=Array($files);
-
- for($i=0;$files[$i];$i++){
- $fn = $files[$i];
- if(!in_Array(dirname($fn[0]),$this->dirs))
- $this->add_Dir(dirname($fn[0]));
- if(basename($fn[0]))
- $ret[basename($fn[0])]=$this->add_File($fn[1],$fn[0],$compact);
- }
- return $ret;
- }
-
- /**
- * Zips recursively the $folder directory, from the $basedir directory
- */
- function Compress($folder, $basedir=null, $parent=null)
- {
- $full_path = $basedir."/".$parent.$folder;
- $zip_path = $parent.$folder;
- if ($zip_path) {
- $zip_path .= "/";
- $this->add_dir($zip_path);
- }
- $dir = new DirectoryIterator($full_path);
- foreach($dir as $file) {
- if(!$file->isDot()) {
- $filename = $file->getFilename();
- if($file->isDir()) {
- $this->Compress($filename, $basedir, $zip_path);
- } else {
- $content = join('', file($full_path.'/'.$filename));
- $this->add_File($content, $zip_path.$filename);
- }
- }
- }
- }
-
- /**
- * Returns the Zip file
- */
- function get_file()
- {
- $data = implode('', $this -> datasec);
- $ctrldir = implode('', $this -> ctrl_dir);
-
- return $data . $ctrldir . $this -> eof_ctrl_dir .
- pack('v', sizeof($this -> ctrl_dir)).pack('v', sizeof($this -> ctrl_dir)).
- pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00";
- }
-
- function add_dir($name)
- {
- $name = str_replace("\\", "/", $name);
- $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
-
- $fr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
- $fr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0);
- $this -> datasec[] = $fr;
-
- $new_offset = strlen(implode("", $this->datasec));
-
- $cdrec = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
- $cdrec .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
- $cdrec .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 );
- $ext = "\xff\xff\xff\xff";
- $cdrec .= pack("V", 16 ).pack("V", $this -> old_offset ).$name;
-
- $this -> ctrl_dir[] = $cdrec;
- $this -> old_offset = $new_offset;
- $this -> dirs[] = $name;
- }
-
- /**
- * Add a file named $name from a string $data
- */
- function add_File($data, $name, $compact = 1)
- {
- $name = str_replace('\\', '/', $name);
- $dtime = dechex($this->DosTime());
-
- $hexdtime = '\x' . $dtime[6] . $dtime[7].'\x'.$dtime[4] . $dtime[5]
- . '\x' . $dtime[2] . $dtime[3].'\x'.$dtime[0].$dtime[1];
- eval('$hexdtime = "' . $hexdtime . '";');
-
- if($compact)
- $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00".$hexdtime;
- else $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00".$hexdtime;
- $unc_len = strlen($data); $crc = crc32($data);
-
- if($compact){
- $zdata = gzcompress($data); $c_len = strlen($zdata);
- $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
- }else{
- $zdata = $data;
- }
- $c_len=strlen($zdata);
- $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
- $fr .= pack('v', strlen($name)).pack('v', 0).$name.$zdata;
-
- $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
-
- $this -> datasec[] = $fr;
- $new_offset = strlen(implode('', $this->datasec));
- if($compact)
- $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00";
- else $cdrec = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00";
- $cdrec .= $hexdtime.pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
- $cdrec .= pack('v', strlen($name) ).pack('v', 0 ).pack('v', 0 );
- $cdrec .= pack('v', 0 ).pack('v', 0 ).pack('V', 32 );
- $cdrec .= pack('V', $this -> old_offset );
-
- $this -> old_offset = $new_offset;
- $cdrec .= $name;
- $this -> ctrl_dir[] = $cdrec;
- return true;
- }
-
- function DosTime() {
- $timearray = getdate();
- if ($timearray['year'] < 1980) {
- $timearray['year'] = 1980; $timearray['mon'] = 1;
- $timearray['mday'] = 1; $timearray['hours'] = 0;
- $timearray['minutes'] = 0; $timearray['seconds'] = 0;
- }
- return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) |
- ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
- }
-
- /**
- * Extract a zip file $zn to the $to directory
- */
- function Extract ( $zn, $to, $index = Array(-1) )
- {
- if(!@is_dir($to)) $this->_mkdir($to);
- $ok = 0; $zip = @fopen($zn,'rb');
- if(!$zip) return(-1);
- $cdir = $this->ReadCentralDir($zip,$zn);
- $pos_entry = $cdir['offset'];
-
- if(!is_array($index)){ $index = array($index); }
- for($i=0; isset($index[$i]);$i++){
- if(intval($index[$i])!=$index[$i]||$index[$i]>$cdir['entries'])
- return(-1);
- }
-
- for ($i=0; $i<$cdir['entries']; $i++)
- {
- @fseek($zip, $pos_entry);
- $header = $this->ReadCentralFileHeaders($zip);
- $header['index'] = $i; $pos_entry = ftell($zip);
- @rewind($zip); fseek($zip, $header['offset']);
- if(in_array("-1",$index)||in_array($i,$index))
- $stat[$header['filename']]=$this->ExtractFile($header, $to, $zip);
-
- }
- fclose($zip);
- return $stat;
- }
-
- function ReadFileHeader($zip, $header)
- {
- $binary_data = fread($zip, 30);
- $data = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data);
-
- $header['filename'] = fread($zip, $data['filename_len']);
- if ($data['extra_len'] != 0) {
- $header['extra'] = fread($zip, $data['extra_len']);
- } else { $header['extra'] = ''; }
-
- $header['compression'] = $data['compression'];
- foreach (array('size','compressed_size','crc') as $hd) { // On ODT files, these headers are 0. Keep the previous value.
- if ($data[$hd] != 0) $header[$hd] = $data[$hd];
- }
- $header['flag'] = $data['flag'];
- $header['mdate'] = $data['mdate'];$header['mtime'] = $data['mtime'];
-
- if ($header['mdate'] && $header['mtime']){
- $hour=($header['mtime']&0xF800)>>11;$minute=($header['mtime']&0x07E0)>>5;
- $seconde=($header['mtime']&0x001F)*2;$year=(($header['mdate']&0xFE00)>>9)+1980;
- $month=($header['mdate']&0x01E0)>>5;$day=$header['mdate']&0x001F;
- $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
- }else{$header['mtime'] = time();}
-
- $header['stored_filename'] = $header['filename'];
- $header['status'] = "ok";
- return $header;
- }
-
- function ReadCentralFileHeaders($zip){
- $binary_data = fread($zip, 46);
- $header = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data);
-
- if ($header['filename_len'] != 0)
- $header['filename'] = fread($zip,$header['filename_len']);
- else $header['filename'] = '';
-
- if ($header['extra_len'] != 0)
- $header['extra'] = fread($zip, $header['extra_len']);
- else $header['extra'] = '';
-
- if ($header['comment_len'] != 0)
- $header['comment'] = fread($zip, $header['comment_len']);
- else $header['comment'] = '';
-
- if ($header['mdate'] && $header['mtime'])
- {
- $hour = ($header['mtime'] & 0xF800) >> 11;
- $minute = ($header['mtime'] & 0x07E0) >> 5;
- $seconde = ($header['mtime'] & 0x001F)*2;
- $year = (($header['mdate'] & 0xFE00) >> 9) + 1980;
- $month = ($header['mdate'] & 0x01E0) >> 5;
- $day = $header['mdate'] & 0x001F;
- $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
- } else {
- $header['mtime'] = time();
- }
- $header['stored_filename'] = $header['filename'];
- $header['status'] = 'ok';
- if (substr($header['filename'], -1) == '/')
- $header['external'] = 0x41FF0010;
- return $header;
- }
-
- function ReadCentralDir($zip,$zip_name)
- {
- $size = filesize($zip_name);
- if ($size < 277) $maximum_size = $size;
- else $maximum_size=277;
-
- @fseek($zip, $size-$maximum_size);
- $pos = ftell($zip); $bytes = 0x00000000;
-
- while ($pos < $size)
- {
- $byte = @fread($zip, 1);
- $bytes=(($bytes << 8) & 0xFFFFFFFF) | Ord($byte);
- if ($bytes == 0x504b0506){ $pos++; break; } $pos++;
- }
-
- $data=unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size',
- fread($zip, 18));
-
- if ($data['comment_size'] != 0)
- $centd['comment'] = fread($zip, $data['comment_size']);
- else $centd['comment'] = ''; $centd['entries'] = $data['entries'];
- $centd['disk_entries'] = $data['disk_entries'];
- $centd['offset'] = $data['offset'];$centd['disk_start'] = $data['disk_start'];
- $centd['size'] = $data['size']; $centd['disk'] = $data['disk'];
- return $centd;
- }
-
- function ExtractFile($header,$to,$zip)
- {
- $header = $this->readfileheader($zip, $header);
-
- if(substr($to,-1)!="/") $to.="/";
- if(substr($header['filename'],-1)=="/")
- {
-// @mkdir($to.$header['filename']); --CS
- $this->_mkdir($to.$header['filename']); //-- CS
- return +2;
- }
-
-// $pth = explode("/",dirname($header['filename']));
-// for($i=0,$tmp="";isset($pth[$i]);$i++){
-// if(!$pth[$i]) continue;
-// if(!is_dir($to.$tmp.$pth[$i])) @mkdir($to.$pth[$i],0777);
-// $tmp.=$pth[$i]."/";
-// }
- if (!$this->_mkdir($to.dirname($header['filename']))) return (-1); //--CS
-
- if (!array_key_exists("external", $header) || (!($header['external']==0x41FF0010)&&!($header['external']==16)))
- {
- if ($header['compression']==0)
- {
- $fp = @fopen($to.$header['filename'], 'wb');
- if(!$fp) return(-1);
- $size = $header['compressed_size'];
-
- while ($size != 0)
- {
- $read_size = ($size < 2048 ? $size : 2048);
- $buffer = fread($zip, $read_size);
- $binary_data = pack('a'.$read_size, $buffer);
- @fwrite($fp, $binary_data, $read_size);
- $size -= $read_size;
- }
- fclose($fp);
- touch($to.$header['filename'], $header['mtime']);
-
- }else{
- if (!is_dir(dirname($to.$header['filename']))) $this->_mkdir(dirname($to.$header['filename'])); //-CS
- $fp = fopen($to.$header['filename'].'.gz','wb');
- if(!$fp) return(-1);
- $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']),
- Chr(0x00), time(), Chr(0x00), Chr(3));
-
- fwrite($fp, $binary_data, 10);
- $size = $header['compressed_size'];
-
- while ($size != 0)
- {
- $read_size = ($size < 1024 ? $size : 1024);
- $buffer = fread($zip, $read_size);
- $binary_data = pack('a'.$read_size, $buffer);
- @fwrite($fp, $binary_data, $read_size);
- $size -= $read_size;
- }
-
- $binary_data = pack('VV', $header['crc'], $header['size']);
- fwrite($fp, $binary_data,8); fclose($fp);
-
- $gzp = @gzopen($to.$header['filename'].'.gz','rb');
- if(!$gzp){
- @gzclose($gzp); @unlink($to.$header['filename']);
- die("Archive is compressed whereas ZLIB is not enabled.");
- }
- $fp = @fopen($to.$header['filename'],'wb');
- if(!$fp) return(-1);
- $size = $header['size'];
-
- while ($size != 0)
- {
- $read_size = ($size < 2048 ? $size : 2048);
- $buffer = gzread($gzp, $read_size);
- $binary_data = pack('a'.$read_size, $buffer);
- @fwrite($fp, $binary_data, $read_size);
- $size -= $read_size;
- }
- fclose($fp); gzclose($gzp);
-
- touch($to.$header['filename'], $header['mtime']);
- @unlink($to.$header['filename'].'.gz');
-
- }}
- return true;
- }
-
- //--CS start
- // centralize mkdir calls and use dokuwiki io functions
- function _mkdir($d) {
- return io_mkdir_p($d);
- }
- //--CS end
-
-
- function ExtractStr($zn, $name) {
- $ok = 0;
- $zip = @fopen($zn,'rb');
- if(!$zip) return(NULL);
- $cdir = $this->ReadCentralDir($zip,$zn);
- $pos_entry = $cdir['offset'];
-
- for ($i=0; $i<$cdir['entries']; $i++)
- {
- @fseek($zip, $pos_entry);
- $header = $this->ReadCentralFileHeaders($zip);
- $header['index'] = $i;
- $pos_entry = ftell($zip);
- @rewind($zip);
- fseek($zip, $header['offset']);
- if ($name == $header['stored_filename'] || $name == $header['filename']) {
- $str = $this->ExtractStrFile($header, $zip);
- fclose($zip);
- return $str;
- }
-
- }
- fclose($zip);
- return null;
- }
-
- function ExtractStrFile($header,$zip) {
- $hdr = $this->readfileheader($zip);
- $binary_data = '';
- if (!($header['external']==0x41FF0010) && !($header['external']==16))
- {
- if ($header['compression']==0)
- {
- while ($size != 0)
- {
- $read_size = ($size < 2048 ? $size : 2048);
- $buffer = fread($zip, $read_size);
- $binary_data .= pack('a'.$read_size, $buffer);
- $size -= $read_size;
- }
- return $binary_data;
- } else {
- $size = $header['compressed_size'];
- if ($size == 0) {
- return '';
- }
- //Just in case
- if ($size > ($this->_ret_bytes(ini_get('memory_limit'))/2)) {
- die("Compressed file is to huge to be uncompress in memory.");
- }
- while ($size != 0)
- {
- $read_size = ($size < 2048 ? $size : 2048);
- $buffer = fread($zip, $read_size);
- $binary_data .= pack('a'.$read_size, $buffer);
- $size -= $read_size;
- }
- $str = gzinflate($binary_data, $header['size']);
- if ($header['crc'] == crc32($str)) {
- return $str;
- } else {
- die("Crc Error");
- }
- }
- }
- return NULL;
- }
-
- function _ret_bytes($val) {
- $val = trim($val);
- $last = $val{strlen($val)-1};
- switch($last) {
- case 'k':
- case 'K':
- return (int) $val * 1024;
- break;
- case 'm':
- case 'M':
- return (int) $val * 1048576;
- break;
- default:
- return $val;
- }
- }
-}
-
+<?php
+
+/**
+ * @author bouchon
+ * @link http://dev.maxg.info
+ * @link http://forum.maxg.info
+ *
+ * Modified for Dokuwiki
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+class ZipLib
+{
+
+ var $datasec, $ctrl_dir = array();
+ var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
+ var $old_offset = 0; var $dirs = Array(".");
+
+ function get_List($zip_name)
+ {
+ $zip = @fopen($zip_name, 'rb');
+ if(!$zip) return(0);
+ $centd = $this->ReadCentralDir($zip,$zip_name);
+
+ @rewind($zip);
+ @fseek($zip, $centd['offset']);
+
+ for ($i=0; $i<$centd['entries']; $i++)
+ {
+ $header = $this->ReadCentralFileHeaders($zip);
+ $header['index'] = $i;$info['filename'] = $header['filename'];
+ $info['stored_filename'] = $header['stored_filename'];
+ $info['size'] = $header['size'];$info['compressed_size']=$header['compressed_size'];
+ $info['crc'] = strtoupper(dechex( $header['crc'] ));
+ $info['mtime'] = $header['mtime']; $info['comment'] = $header['comment'];
+ $info['folder'] = ($header['external']==0x41FF0010||$header['external']==16)?1:0;
+ $info['index'] = $header['index'];$info['status'] = $header['status'];
+ $ret[]=$info; unset($header);
+ }
+ return $ret;
+ }
+
+ function Add($files,$compact)
+ {
+ if(!is_array($files[0])) $files=Array($files);
+
+ for($i=0;$files[$i];$i++){
+ $fn = $files[$i];
+ if(!in_Array(dirname($fn[0]),$this->dirs))
+ $this->add_Dir(dirname($fn[0]));
+ if(basename($fn[0]))
+ $ret[basename($fn[0])]=$this->add_File($fn[1],$fn[0],$compact);
+ }
+ return $ret;
+ }
+
+ /**
+ * Zips recursively the $folder directory, from the $basedir directory
+ */
+ function Compress($folder, $basedir=null, $parent=null)
+ {
+ $full_path = $basedir."/".$parent.$folder;
+ $zip_path = $parent.$folder;
+ if ($zip_path) {
+ $zip_path .= "/";
+ $this->add_dir($zip_path);
+ }
+ $dir = new DirectoryIterator($full_path);
+ foreach($dir as $file) {
+ if(!$file->isDot()) {
+ $filename = $file->getFilename();
+ if($file->isDir()) {
+ $this->Compress($filename, $basedir, $zip_path);
+ } else {
+ $content = join('', file($full_path.'/'.$filename));
+ $this->add_File($content, $zip_path.$filename);
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the Zip file
+ */
+ function get_file()
+ {
+ $data = implode('', $this -> datasec);
+ $ctrldir = implode('', $this -> ctrl_dir);
+
+ return $data . $ctrldir . $this -> eof_ctrl_dir .
+ pack('v', sizeof($this -> ctrl_dir)).pack('v', sizeof($this -> ctrl_dir)).
+ pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00";
+ }
+
+ function add_dir($name)
+ {
+ $name = str_replace("\\", "/", $name);
+ $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+
+ $fr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
+ $fr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0);
+ $this -> datasec[] = $fr;
+
+ $new_offset = strlen(implode("", $this->datasec));
+
+ $cdrec = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+ $cdrec .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
+ $cdrec .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 );
+ $ext = "\xff\xff\xff\xff";
+ $cdrec .= pack("V", 16 ).pack("V", $this -> old_offset ).$name;
+
+ $this -> ctrl_dir[] = $cdrec;
+ $this -> old_offset = $new_offset;
+ $this -> dirs[] = $name;
+ }
+
+ /**
+ * Add a file named $name from a string $data
+ */
+ function add_File($data, $name, $compact = 1)
+ {
+ $name = str_replace('\\', '/', $name);
+ $dtime = dechex($this->DosTime());
+
+ $hexdtime = '\x' . $dtime[6] . $dtime[7].'\x'.$dtime[4] . $dtime[5]
+ . '\x' . $dtime[2] . $dtime[3].'\x'.$dtime[0].$dtime[1];
+ eval('$hexdtime = "' . $hexdtime . '";');
+
+ if($compact)
+ $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00".$hexdtime;
+ else $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00".$hexdtime;
+ $unc_len = strlen($data); $crc = crc32($data);
+
+ if($compact){
+ $zdata = gzcompress($data); $c_len = strlen($zdata);
+ $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
+ }else{
+ $zdata = $data;
+ }
+ $c_len=strlen($zdata);
+ $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
+ $fr .= pack('v', strlen($name)).pack('v', 0).$name.$zdata;
+
+ $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
+
+ $this -> datasec[] = $fr;
+ $new_offset = strlen(implode('', $this->datasec));
+ if($compact)
+ $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00";
+ else $cdrec = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00";
+ $cdrec .= $hexdtime.pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
+ $cdrec .= pack('v', strlen($name) ).pack('v', 0 ).pack('v', 0 );
+ $cdrec .= pack('v', 0 ).pack('v', 0 ).pack('V', 32 );
+ $cdrec .= pack('V', $this -> old_offset );
+
+ $this -> old_offset = $new_offset;
+ $cdrec .= $name;
+ $this -> ctrl_dir[] = $cdrec;
+ return true;
+ }
+
+ function DosTime() {
+ $timearray = getdate();
+ if ($timearray['year'] < 1980) {
+ $timearray['year'] = 1980; $timearray['mon'] = 1;
+ $timearray['mday'] = 1; $timearray['hours'] = 0;
+ $timearray['minutes'] = 0; $timearray['seconds'] = 0;
+ }
+ return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) |
+ ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
+ }
+
+ /**
+ * Extract a zip file $zn to the $to directory
+ */
+ function Extract ( $zn, $to, $index = Array(-1) )
+ {
+ if(!@is_dir($to)) $this->_mkdir($to);
+ $ok = 0; $zip = @fopen($zn,'rb');
+ if(!$zip) return(-1);
+ $cdir = $this->ReadCentralDir($zip,$zn);
+ $pos_entry = $cdir['offset'];
+
+ if(!is_array($index)){ $index = array($index); }
+ for($i=0; isset($index[$i]);$i++){
+ if(intval($index[$i])!=$index[$i]||$index[$i]>$cdir['entries'])
+ return(-1);
+ }
+
+ for ($i=0; $i<$cdir['entries']; $i++)
+ {
+ @fseek($zip, $pos_entry);
+ $header = $this->ReadCentralFileHeaders($zip);
+ $header['index'] = $i; $pos_entry = ftell($zip);
+ @rewind($zip); fseek($zip, $header['offset']);
+ if(in_array("-1",$index)||in_array($i,$index))
+ $stat[$header['filename']]=$this->ExtractFile($header, $to, $zip);
+
+ }
+ fclose($zip);
+ return $stat;
+ }
+
+ function ReadFileHeader($zip, $header)
+ {
+ $binary_data = fread($zip, 30);
+ $data = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data);
+
+ $header['filename'] = fread($zip, $data['filename_len']);
+ if ($data['extra_len'] != 0) {
+ $header['extra'] = fread($zip, $data['extra_len']);
+ } else { $header['extra'] = ''; }
+
+ $header['compression'] = $data['compression'];
+ foreach (array('size','compressed_size','crc') as $hd) { // On ODT files, these headers are 0. Keep the previous value.
+ if ($data[$hd] != 0) $header[$hd] = $data[$hd];
+ }
+ $header['flag'] = $data['flag'];
+ $header['mdate'] = $data['mdate'];$header['mtime'] = $data['mtime'];
+
+ if ($header['mdate'] && $header['mtime']){
+ $hour=($header['mtime']&0xF800)>>11;$minute=($header['mtime']&0x07E0)>>5;
+ $seconde=($header['mtime']&0x001F)*2;$year=(($header['mdate']&0xFE00)>>9)+1980;
+ $month=($header['mdate']&0x01E0)>>5;$day=$header['mdate']&0x001F;
+ $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
+ }else{$header['mtime'] = time();}
+
+ $header['stored_filename'] = $header['filename'];
+ $header['status'] = "ok";
+ return $header;
+ }
+
+ function ReadCentralFileHeaders($zip){
+ $binary_data = fread($zip, 46);
+ $header = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data);
+
+ if ($header['filename_len'] != 0)
+ $header['filename'] = fread($zip,$header['filename_len']);
+ else $header['filename'] = '';
+
+ if ($header['extra_len'] != 0)
+ $header['extra'] = fread($zip, $header['extra_len']);
+ else $header['extra'] = '';
+
+ if ($header['comment_len'] != 0)
+ $header['comment'] = fread($zip, $header['comment_len']);
+ else $header['comment'] = '';
+
+ if ($header['mdate'] && $header['mtime'])
+ {
+ $hour = ($header['mtime'] & 0xF800) >> 11;
+ $minute = ($header['mtime'] & 0x07E0) >> 5;
+ $seconde = ($header['mtime'] & 0x001F)*2;
+ $year = (($header['mdate'] & 0xFE00) >> 9) + 1980;
+ $month = ($header['mdate'] & 0x01E0) >> 5;
+ $day = $header['mdate'] & 0x001F;
+ $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
+ } else {
+ $header['mtime'] = time();
+ }
+ $header['stored_filename'] = $header['filename'];
+ $header['status'] = 'ok';
+ if (substr($header['filename'], -1) == '/')
+ $header['external'] = 0x41FF0010;
+ return $header;
+ }
+
+ function ReadCentralDir($zip,$zip_name)
+ {
+ $size = filesize($zip_name);
+ if ($size < 277) $maximum_size = $size;
+ else $maximum_size=277;
+
+ @fseek($zip, $size-$maximum_size);
+ $pos = ftell($zip); $bytes = 0x00000000;
+
+ while ($pos < $size)
+ {
+ $byte = @fread($zip, 1);
+ $bytes=(($bytes << 8) & 0xFFFFFFFF) | Ord($byte);
+ if ($bytes == 0x504b0506){ $pos++; break; } $pos++;
+ }
+
+ $data=unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size',
+ fread($zip, 18));
+
+ if ($data['comment_size'] != 0)
+ $centd['comment'] = fread($zip, $data['comment_size']);
+ else $centd['comment'] = ''; $centd['entries'] = $data['entries'];
+ $centd['disk_entries'] = $data['disk_entries'];
+ $centd['offset'] = $data['offset'];$centd['disk_start'] = $data['disk_start'];
+ $centd['size'] = $data['size']; $centd['disk'] = $data['disk'];
+ return $centd;
+ }
+
+ function ExtractFile($header,$to,$zip)
+ {
+ $header = $this->readfileheader($zip, $header);
+
+ if(substr($to,-1)!="/") $to.="/";
+ if(substr($header['filename'],-1)=="/")
+ {
+// @mkdir($to.$header['filename']); --CS
+ $this->_mkdir($to.$header['filename']); //-- CS
+ return +2;
+ }
+
+// $pth = explode("/",dirname($header['filename']));
+// for($i=0,$tmp="";isset($pth[$i]);$i++){
+// if(!$pth[$i]) continue;
+// if(!is_dir($to.$tmp.$pth[$i])) @mkdir($to.$pth[$i],0777);
+// $tmp.=$pth[$i]."/";
+// }
+ if (!$this->_mkdir($to.dirname($header['filename']))) return (-1); //--CS
+
+ if (!array_key_exists("external", $header) || (!($header['external']==0x41FF0010)&&!($header['external']==16)))
+ {
+ if ($header['compression']==0)
+ {
+ $fp = @fopen($to.$header['filename'], 'wb');
+ if(!$fp) return(-1);
+ $size = $header['compressed_size'];
+
+ while ($size != 0)
+ {
+ $read_size = ($size < 2048 ? $size : 2048);
+ $buffer = fread($zip, $read_size);
+ $binary_data = pack('a'.$read_size, $buffer);
+ @fwrite($fp, $binary_data, $read_size);
+ $size -= $read_size;
+ }
+ fclose($fp);
+ touch($to.$header['filename'], $header['mtime']);
+
+ }else{
+ if (!is_dir(dirname($to.$header['filename']))) $this->_mkdir(dirname($to.$header['filename'])); //-CS
+ $fp = fopen($to.$header['filename'].'.gz','wb');
+ if(!$fp) return(-1);
+ $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']),
+ Chr(0x00), time(), Chr(0x00), Chr(3));
+
+ fwrite($fp, $binary_data, 10);
+ $size = $header['compressed_size'];
+
+ while ($size != 0)
+ {
+ $read_size = ($size < 1024 ? $size : 1024);
+ $buffer = fread($zip, $read_size);
+ $binary_data = pack('a'.$read_size, $buffer);
+ @fwrite($fp, $binary_data, $read_size);
+ $size -= $read_size;
+ }
+
+ $binary_data = pack('VV', $header['crc'], $header['size']);
+ fwrite($fp, $binary_data,8); fclose($fp);
+
+ $gzp = @gzopen($to.$header['filename'].'.gz','rb');
+ if(!$gzp){
+ @gzclose($gzp); @unlink($to.$header['filename']);
+ die("Archive is compressed whereas ZLIB is not enabled.");
+ }
+ $fp = @fopen($to.$header['filename'],'wb');
+ if(!$fp) return(-1);
+ $size = $header['size'];
+
+ while ($size != 0)
+ {
+ $read_size = ($size < 2048 ? $size : 2048);
+ $buffer = gzread($gzp, $read_size);
+ $binary_data = pack('a'.$read_size, $buffer);
+ @fwrite($fp, $binary_data, $read_size);
+ $size -= $read_size;
+ }
+ fclose($fp); gzclose($gzp);
+
+ touch($to.$header['filename'], $header['mtime']);
+ @unlink($to.$header['filename'].'.gz');
+
+ }}
+ return true;
+ }
+
+ //--CS start
+ // centralize mkdir calls and use dokuwiki io functions
+ function _mkdir($d) {
+ return io_mkdir_p($d);
+ }
+ //--CS end
+
+
+ function ExtractStr($zn, $name) {
+ $ok = 0;
+ $zip = @fopen($zn,'rb');
+ if(!$zip) return(NULL);
+ $cdir = $this->ReadCentralDir($zip,$zn);
+ $pos_entry = $cdir['offset'];
+
+ for ($i=0; $i<$cdir['entries']; $i++)
+ {
+ @fseek($zip, $pos_entry);
+ $header = $this->ReadCentralFileHeaders($zip);
+ $header['index'] = $i;
+ $pos_entry = ftell($zip);
+ @rewind($zip);
+ fseek($zip, $header['offset']);
+ if ($name == $header['stored_filename'] || $name == $header['filename']) {
+ $str = $this->ExtractStrFile($header, $zip);
+ fclose($zip);
+ return $str;
+ }
+
+ }
+ fclose($zip);
+ return null;
+ }
+
+ function ExtractStrFile($header,$zip) {
+ $hdr = $this->readfileheader($zip);
+ $binary_data = '';
+ if (!($header['external']==0x41FF0010) && !($header['external']==16))
+ {
+ if ($header['compression']==0)
+ {
+ while ($size != 0)
+ {
+ $read_size = ($size < 2048 ? $size : 2048);
+ $buffer = fread($zip, $read_size);
+ $binary_data .= pack('a'.$read_size, $buffer);
+ $size -= $read_size;
+ }
+ return $binary_data;
+ } else {
+ $size = $header['compressed_size'];
+ if ($size == 0) {
+ return '';
+ }
+ //Just in case
+ if ($size > ($this->_ret_bytes(ini_get('memory_limit'))/2)) {
+ die("Compressed file is to huge to be uncompress in memory.");
+ }
+ while ($size != 0)
+ {
+ $read_size = ($size < 2048 ? $size : 2048);
+ $buffer = fread($zip, $read_size);
+ $binary_data .= pack('a'.$read_size, $buffer);
+ $size -= $read_size;
+ }
+ $str = gzinflate($binary_data, $header['size']);
+ if ($header['crc'] == crc32($str)) {
+ return $str;
+ } else {
+ die("Crc Error");
+ }
+ }
+ }
+ return NULL;
+ }
+
+ function _ret_bytes($val) {
+ $val = trim($val);
+ $last = $val{strlen($val)-1};
+ switch($last) {
+ case 'k':
+ case 'K':
+ return (int) $val * 1024;
+ break;
+ case 'm':
+ case 'M':
+ return (int) $val * 1048576;
+ break;
+ default:
+ return $val;
+ }
+ }
+}
+
Modified: site/trunk/www-root/wiki/inc/actions.php
===================================================================
--- site/trunk/www-root/wiki/inc/actions.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/actions.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,501 +1,505 @@
-<?php
-/**
- * DokuWiki Actions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_INC.'inc/template.php');
-
-
-/**
- * Call the needed action handlers
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @triggers ACTION_ACT_PREPROCESS
- * @triggers ACTION_HEADERS_SEND
- */
-function act_dispatch(){
- global $INFO;
- global $ACT;
- global $ID;
- global $QUERY;
- global $lang;
- global $conf;
-
- // give plugins an opportunity to process the action
- $evt = new Doku_Event('ACTION_ACT_PREPROCESS',$ACT);
- if ($evt->advise_before()) {
-
- //sanitize $ACT
- $ACT = act_clean($ACT);
-
- //check if searchword was given - else just show
- $s = cleanID($QUERY);
- if($ACT == 'search' && empty($s)){
- $ACT = 'show';
- }
-
- //login stuff
- if(in_array($ACT,array('login','logout'))){
- $ACT = act_auth($ACT);
- }
-
- //check if user is asking to (un)subscribe a page
- if($ACT == 'subscribe' || $ACT == 'unsubscribe')
- $ACT = act_subscription($ACT);
-
- //check if user is asking to (un)subscribe a namespace
- if($ACT == 'subscribens' || $ACT == 'unsubscribens')
- $ACT = act_subscriptionns($ACT);
-
- //check permissions
- $ACT = act_permcheck($ACT);
-
- //register
- $nil = array();
- if($ACT == 'register' && $_POST['save'] && register()){
- $ACT = 'login';
- }
-
- if ($ACT == 'resendpwd' && act_resendpwd()) {
- $ACT = 'login';
- }
-
- //update user profile
- if (($ACT == 'profile') && updateprofile()) {
- msg($lang['profchanged'],1);
- $ACT = 'show';
- }
-
- //save
- if($ACT == 'save'){
- if(checkSecurityToken()){
- $ACT = act_save($ACT);
- }else{
- $ACT = 'show';
- }
- }
-
- //cancel conflicting edit
- if($ACT == 'cancel')
- $ACT = 'show';
-
- //draft deletion
- if($ACT == 'draftdel')
- $ACT = act_draftdel($ACT);
-
- //draft saving on preview
- if($ACT == 'preview')
- $ACT = act_draftsave($ACT);
-
- //edit
- if(($ACT == 'edit' || $ACT == 'preview') && $INFO['editable']){
- $ACT = act_edit($ACT);
- }else{
- unlock($ID); //try to unlock
- }
-
- //handle export
- if(substr($ACT,0,7) == 'export_')
- $ACT = act_export($ACT);
-
- //display some infos
- if($ACT == 'check'){
- check();
- $ACT = 'show';
- }
-
- //handle admin tasks
- if($ACT == 'admin'){
- // retrieve admin plugin name from $_REQUEST['page']
- if (!empty($_REQUEST['page'])) {
- $pluginlist = plugin_list('admin');
- if (in_array($_REQUEST['page'], $pluginlist)) {
- // attempt to load the plugin
- if ($plugin =& plugin_load('admin',$_REQUEST['page']) !== NULL)
- $plugin->handle();
- }
- }
- }
-
- // check permissions again - the action may have changed
- $ACT = act_permcheck($ACT);
- } // end event ACTION_ACT_PREPROCESS default action
- $evt->advise_after();
- unset($evt);
-
-
- //call template FIXME: all needed vars available?
- $headers[] = 'Content-Type: text/html; charset=utf-8';
- trigger_event('ACTION_HEADERS_SEND',$headers,'act_sendheaders');
-
- include(template('main.php'));
- // output for the commands is now handled in inc/templates.php
- // in function tpl_content()
-}
-
-function act_sendheaders($headers) {
- foreach ($headers as $hdr) header($hdr);
-}
-
-/**
- * Sanitize the action command
- *
- * Add all allowed commands here.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function act_clean($act){
- global $lang;
- global $conf;
-
- // check if the action was given as array key
- if(is_array($act)){
- list($act) = array_keys($act);
- }
-
- //remove all bad chars
- $act = strtolower($act);
- $act = preg_replace('/[^1-9a-z_]+/','',$act);
-
- if($act == 'export_html') $act = 'export_xhtml';
- if($act == 'export_htmlbody') $act = 'export_xhtmlbody';
-
- // check if action is disabled
- if(!actionOK($act)){
- msg('Command disabled: '.htmlspecialchars($act),-1);
- return 'show';
- }
-
- //disable all acl related commands if ACL is disabled
- if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin',
- 'subscribe','unsubscribe','profile',
- 'resendpwd','subscribens','unsubscribens',))){
- msg('Command unavailable: '.htmlspecialchars($act),-1);
- return 'show';
- }
-
- if(!in_array($act,array('login','logout','register','save','cancel','edit','draft',
- 'preview','search','show','check','index','revisions',
- 'diff','recent','backlink','admin','subscribe',
- 'unsubscribe','profile','resendpwd','recover','wordblock',
- 'draftdel','subscribens','unsubscribens',)) && substr($act,0,7) != 'export_' ) {
- msg('Command unknown: '.htmlspecialchars($act),-1);
- return 'show';
- }
- return $act;
-}
-
-/**
- * Run permissionchecks
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function act_permcheck($act){
- global $INFO;
- global $conf;
-
- if(in_array($act,array('save','preview','edit','recover'))){
- if($INFO['exists']){
- if($act == 'edit'){
- //the edit function will check again and do a source show
- //when no AUTH_EDIT available
- $permneed = AUTH_READ;
- }else{
- $permneed = AUTH_EDIT;
- }
- }else{
- $permneed = AUTH_CREATE;
- }
- }elseif(in_array($act,array('login','search','recent','profile'))){
- $permneed = AUTH_NONE;
- }elseif($act == 'register'){
- $permneed = AUTH_NONE;
- }elseif($act == 'resendpwd'){
- $permneed = AUTH_NONE;
- }elseif($act == 'admin'){
- if($INFO['ismanager']){
- // if the manager has the needed permissions for a certain admin
- // action is checked later
- $permneed = AUTH_READ;
- }else{
- $permneed = AUTH_ADMIN;
- }
- }else{
- $permneed = AUTH_READ;
- }
- if($INFO['perm'] >= $permneed) return $act;
-
- return 'denied';
-}
-
-/**
- * Handle 'draftdel'
- *
- * Deletes the draft for the current page and user
- */
-function act_draftdel($act){
- global $INFO;
- @unlink($INFO['draft']);
- $INFO['draft'] = null;
- return 'show';
-}
-
-/**
- * Saves a draft on preview
- *
- * @todo this currently duplicates code from ajax.php :-/
- */
-function act_draftsave($act){
- global $INFO;
- global $ID;
- global $conf;
- if($conf['usedraft'] && $_POST['wikitext']){
- $draft = array('id' => $ID,
- 'prefix' => $_POST['prefix'],
- 'text' => $_POST['wikitext'],
- 'suffix' => $_POST['suffix'],
- 'date' => $_POST['date'],
- 'client' => $INFO['client'],
- );
- $cname = getCacheName($draft['client'].$ID,'.draft');
- if(io_saveFile($cname,serialize($draft))){
- $INFO['draft'] = $cname;
- }
- }
- return $act;
-}
-
-/**
- * Handle 'save'
- *
- * Checks for spam and conflicts and saves the page.
- * Does a redirect to show the page afterwards or
- * returns a new action.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function act_save($act){
- global $ID;
- global $DATE;
- global $PRE;
- global $TEXT;
- global $SUF;
- global $SUM;
-
- //spam check
- if(checkwordblock())
- return 'wordblock';
- //conflict check //FIXME use INFO
- if($DATE != 0 && @filemtime(wikiFN($ID)) > $DATE )
- return 'conflict';
-
- //save it
- saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM,$_REQUEST['minor']); //use pretty mode for con
- //unlock it
- unlock($ID);
-
- //delete draft
- act_draftdel($act);
-
- //show it
- session_write_close();
- header("Location: ".wl($ID,'',true));
- exit();
-}
-
-/**
- * Handle 'login', 'logout'
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function act_auth($act){
- global $ID;
- global $INFO;
-
- //already logged in?
- if($_SERVER['REMOTE_USER'] && $act=='login'){
- header("Location: ".wl($ID,'',true));
- exit;
- }
-
- //handle logout
- if($act=='logout'){
- $lockedby = checklock($ID); //page still locked?
- if($lockedby == $_SERVER['REMOTE_USER'])
- unlock($ID); //try to unlock
-
- // do the logout stuff
- auth_logoff();
-
- // rebuild info array
- $INFO = pageinfo();
-
- return 'login';
- }
-
- return $act;
-}
-
-/**
- * Handle 'edit', 'preview'
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function act_edit($act){
- global $ID;
- global $INFO;
-
- //check if locked by anyone - if not lock for my self
- $lockedby = checklock($ID);
- if($lockedby) return 'locked';
-
- lock($ID);
- return $act;
-}
-
-/**
- * Handle 'edit', 'preview'
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function act_export($act){
- global $ID;
- global $REV;
-
- // search engines: never cache exported docs! (Google only currently)
- header('X-Robots-Tag: noindex');
-
- // no renderer for this
- if($act == 'export_raw'){
- header('Content-Type: text/plain; charset=utf-8');
- print rawWiki($ID,$REV);
- exit;
- }
-
- // html export #FIXME what about the template's style?
- if($act == 'export_xhtml'){
- global $conf;
- global $lang;
- header('Content-Type: text/html; charset=utf-8');
- ptln('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"');
- ptln(' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
- ptln('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$conf['lang'].'"');
- ptln(' lang="'.$conf['lang'].'" dir="'.$lang['direction'].'">');
- ptln('<head>');
- ptln(' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
- ptln(' <title>'.$ID.'</title>');
- tpl_metaheaders();
- ptln('</head>');
- ptln('<body>');
- ptln('<div class="dokuwiki export">');
- print p_wiki_xhtml($ID,$REV,false);
- ptln('</div>');
- ptln('</body>');
- ptln('</html>');
- exit;
- }
-
- // html body only
- if($act == 'export_xhtmlbody'){
- print p_wiki_xhtml($ID,$REV,false);
- exit;
- }
-
- // try to run renderer
- $mode = substr($act,7);
- $text = p_cached_output(wikiFN($ID,$REV), $mode);
- $headers = p_get_metadata($ID,"format $mode");
- if(!is_null($text)){
- if(is_array($headers)) foreach($headers as $key => $val){
- header("$key: $val");
- }
- print $text;
- exit;
- }
-
- return 'show';
-}
-
-/**
- * Handle page 'subscribe', 'unsubscribe'
- *
- * @author Steven Danz <steven-danz at kc.rr.com>
- * @todo localize
- */
-function act_subscription($act){
- global $ID;
- global $INFO;
- global $lang;
-
- $file=metaFN($ID,'.mlist');
- if ($act=='subscribe' && !$INFO['subscribed']){
- if ($INFO['userinfo']['mail']){
- if (io_saveFile($file,$_SERVER['REMOTE_USER']."\n",true)) {
- $INFO['subscribed'] = true;
- msg(sprintf($lang[$act.'_success'], $INFO['userinfo']['name'], $ID),1);
- } else {
- msg(sprintf($lang[$act.'_error'], $INFO['userinfo']['name'], $ID),1);
- }
- } else {
- msg($lang['subscribe_noaddress']);
- }
- } elseif ($act=='unsubscribe' && $INFO['subscribed']){
- if (io_deleteFromFile($file,$_SERVER['REMOTE_USER']."\n")) {
- $INFO['subscribed'] = false;
- msg(sprintf($lang[$act.'_success'], $INFO['userinfo']['name'], $ID),1);
- } else {
- msg(sprintf($lang[$act.'_error'], $INFO['userinfo']['name'], $ID),1);
- }
- }
-
- return 'show';
-}
-
-/**
- * Handle namespace 'subscribe', 'unsubscribe'
- *
- */
-function act_subscriptionns($act){
- global $ID;
- global $INFO;
- global $lang;
-
- if(!getNS($ID)) {
- $file = metaFN(getNS($ID),'.mlist');
- $ns = "root";
- } else {
- $file = metaFN(getNS($ID),'/.mlist');
- $ns = getNS($ID);
- }
-
- // reuse strings used to display the status of the subscribe action
- $act_msg = rtrim($act, 'ns');
-
- if ($act=='subscribens' && !$INFO['subscribedns']){
- if ($INFO['userinfo']['mail']){
- if (io_saveFile($file,$_SERVER['REMOTE_USER']."\n",true)) {
- $INFO['subscribedns'] = true;
- msg(sprintf($lang[$act_msg.'_success'], $INFO['userinfo']['name'], $ns),1);
- } else {
- msg(sprintf($lang[$act_msg.'_error'], $INFO['userinfo']['name'], $ns),1);
- }
- } else {
- msg($lang['subscribe_noaddress']);
- }
- } elseif ($act=='unsubscribens' && $INFO['subscribedns']){
- if (io_deleteFromFile($file,$_SERVER['REMOTE_USER']."\n")) {
- $INFO['subscribedns'] = false;
- msg(sprintf($lang[$act_msg.'_success'], $INFO['userinfo']['name'], $ns),1);
- } else {
- msg(sprintf($lang[$act_msg.'_error'], $INFO['userinfo']['name'], $ns),1);
- }
- }
-
- return 'show';
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * DokuWiki Actions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_INC.'inc/template.php');
+
+
+/**
+ * Call the needed action handlers
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @triggers ACTION_ACT_PREPROCESS
+ * @triggers ACTION_HEADERS_SEND
+ */
+function act_dispatch(){
+ global $INFO;
+ global $ACT;
+ global $ID;
+ global $QUERY;
+ global $lang;
+ global $conf;
+
+ // give plugins an opportunity to process the action
+ $evt = new Doku_Event('ACTION_ACT_PREPROCESS',$ACT);
+ if ($evt->advise_before()) {
+
+ //sanitize $ACT
+ $ACT = act_clean($ACT);
+
+ //check if searchword was given - else just show
+ $s = cleanID($QUERY);
+ if($ACT == 'search' && empty($s)){
+ $ACT = 'show';
+ }
+
+ //login stuff
+ if(in_array($ACT,array('login','logout'))){
+ $ACT = act_auth($ACT);
+ }
+
+ //check if user is asking to (un)subscribe a page
+ if($ACT == 'subscribe' || $ACT == 'unsubscribe')
+ $ACT = act_subscription($ACT);
+
+ //check if user is asking to (un)subscribe a namespace
+ if($ACT == 'subscribens' || $ACT == 'unsubscribens')
+ $ACT = act_subscriptionns($ACT);
+
+ //check permissions
+ $ACT = act_permcheck($ACT);
+
+ //register
+ $nil = array();
+ if($ACT == 'register' && $_POST['save'] && register()){
+ $ACT = 'login';
+ }
+
+ if ($ACT == 'resendpwd' && act_resendpwd()) {
+ $ACT = 'login';
+ }
+
+ //update user profile
+ if (($ACT == 'profile') && updateprofile()) {
+ msg($lang['profchanged'],1);
+ $ACT = 'show';
+ }
+
+ //save
+ if($ACT == 'save'){
+ if(checkSecurityToken()){
+ $ACT = act_save($ACT);
+ }else{
+ $ACT = 'show';
+ }
+ }
+
+ //cancel conflicting edit
+ if($ACT == 'cancel')
+ $ACT = 'show';
+
+ //draft deletion
+ if($ACT == 'draftdel')
+ $ACT = act_draftdel($ACT);
+
+ //draft saving on preview
+ if($ACT == 'preview')
+ $ACT = act_draftsave($ACT);
+
+ //edit
+ if(($ACT == 'edit' || $ACT == 'preview') && $INFO['editable']){
+ $ACT = act_edit($ACT);
+ }else{
+ unlock($ID); //try to unlock
+ }
+
+ //handle export
+ if(substr($ACT,0,7) == 'export_')
+ $ACT = act_export($ACT);
+
+ //display some infos
+ if($ACT == 'check'){
+ check();
+ $ACT = 'show';
+ }
+
+ //handle admin tasks
+ if($ACT == 'admin'){
+ // retrieve admin plugin name from $_REQUEST['page']
+ if (!empty($_REQUEST['page'])) {
+ $pluginlist = plugin_list('admin');
+ if (in_array($_REQUEST['page'], $pluginlist)) {
+ // attempt to load the plugin
+ if ($plugin =& plugin_load('admin',$_REQUEST['page']) !== NULL)
+ $plugin->handle();
+ }
+ }
+ }
+
+ // check permissions again - the action may have changed
+ $ACT = act_permcheck($ACT);
+ } // end event ACTION_ACT_PREPROCESS default action
+ $evt->advise_after();
+ unset($evt);
+
+
+ //call template FIXME: all needed vars available?
+ $headers[] = 'Content-Type: text/html; charset=utf-8';
+ trigger_event('ACTION_HEADERS_SEND',$headers,'act_sendheaders');
+
+ include(template('main.php'));
+ // output for the commands is now handled in inc/templates.php
+ // in function tpl_content()
+}
+
+function act_sendheaders($headers) {
+ foreach ($headers as $hdr) header($hdr);
+}
+
+/**
+ * Sanitize the action command
+ *
+ * Add all allowed commands here.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function act_clean($act){
+ global $lang;
+ global $conf;
+
+ // check if the action was given as array key
+ if(is_array($act)){
+ list($act) = array_keys($act);
+ }
+
+ //remove all bad chars
+ $act = strtolower($act);
+ $act = preg_replace('/[^1-9a-z_]+/','',$act);
+
+ if($act == 'export_html') $act = 'export_xhtml';
+ if($act == 'export_htmlbody') $act = 'export_xhtmlbody';
+
+ // check if action is disabled
+ if(!actionOK($act)){
+ msg('Command disabled: '.htmlspecialchars($act),-1);
+ return 'show';
+ }
+
+ //disable all acl related commands if ACL is disabled
+ if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin',
+ 'subscribe','unsubscribe','profile',
+ 'resendpwd','subscribens','unsubscribens',))){
+ msg('Command unavailable: '.htmlspecialchars($act),-1);
+ return 'show';
+ }
+
+ if(!in_array($act,array('login','logout','register','save','cancel','edit','draft',
+ 'preview','search','show','check','index','revisions',
+ 'diff','recent','backlink','admin','subscribe',
+ 'unsubscribe','profile','resendpwd','recover','wordblock',
+ 'draftdel','subscribens','unsubscribens',)) && substr($act,0,7) != 'export_' ) {
+ msg('Command unknown: '.htmlspecialchars($act),-1);
+ return 'show';
+ }
+ return $act;
+}
+
+/**
+ * Run permissionchecks
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function act_permcheck($act){
+ global $INFO;
+ global $conf;
+
+ if(in_array($act,array('save','preview','edit','recover'))){
+ if($INFO['exists']){
+ if($act == 'edit'){
+ //the edit function will check again and do a source show
+ //when no AUTH_EDIT available
+ $permneed = AUTH_READ;
+ }else{
+ $permneed = AUTH_EDIT;
+ }
+ }else{
+ $permneed = AUTH_CREATE;
+ }
+ }elseif(in_array($act,array('login','search','recent','profile'))){
+ $permneed = AUTH_NONE;
+ }elseif($act == 'register'){
+ $permneed = AUTH_NONE;
+ }elseif($act == 'resendpwd'){
+ $permneed = AUTH_NONE;
+ }elseif($act == 'admin'){
+ if($INFO['ismanager']){
+ // if the manager has the needed permissions for a certain admin
+ // action is checked later
+ $permneed = AUTH_READ;
+ }else{
+ $permneed = AUTH_ADMIN;
+ }
+ }else{
+ $permneed = AUTH_READ;
+ }
+ if($INFO['perm'] >= $permneed) return $act;
+
+ return 'denied';
+}
+
+/**
+ * Handle 'draftdel'
+ *
+ * Deletes the draft for the current page and user
+ */
+function act_draftdel($act){
+ global $INFO;
+ @unlink($INFO['draft']);
+ $INFO['draft'] = null;
+ return 'show';
+}
+
+/**
+ * Saves a draft on preview
+ *
+ * @todo this currently duplicates code from ajax.php :-/
+ */
+function act_draftsave($act){
+ global $INFO;
+ global $ID;
+ global $conf;
+ if($conf['usedraft'] && $_POST['wikitext']){
+ $draft = array('id' => $ID,
+ 'prefix' => $_POST['prefix'],
+ 'text' => $_POST['wikitext'],
+ 'suffix' => $_POST['suffix'],
+ 'date' => $_POST['date'],
+ 'client' => $INFO['client'],
+ );
+ $cname = getCacheName($draft['client'].$ID,'.draft');
+ if(io_saveFile($cname,serialize($draft))){
+ $INFO['draft'] = $cname;
+ }
+ }
+ return $act;
+}
+
+/**
+ * Handle 'save'
+ *
+ * Checks for spam and conflicts and saves the page.
+ * Does a redirect to show the page afterwards or
+ * returns a new action.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function act_save($act){
+ global $ID;
+ global $DATE;
+ global $PRE;
+ global $TEXT;
+ global $SUF;
+ global $SUM;
+
+ //spam check
+ if(checkwordblock())
+ return 'wordblock';
+ //conflict check //FIXME use INFO
+ if($DATE != 0 && @filemtime(wikiFN($ID)) > $DATE )
+ return 'conflict';
+
+ //save it
+ saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM,$_REQUEST['minor']); //use pretty mode for con
+ //unlock it
+ unlock($ID);
+
+ //delete draft
+ act_draftdel($act);
+
+ //show it
+ session_write_close();
+ header("Location: ".wl($ID,'',true));
+ exit();
+}
+
+/**
+ * Handle 'login', 'logout'
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function act_auth($act){
+ global $ID;
+ global $INFO;
+
+ //already logged in?
+ if($_SERVER['REMOTE_USER'] && $act=='login'){
+ header("Location: ".wl($ID,'',true));
+ exit;
+ }
+
+ //handle logout
+ if($act=='logout'){
+ $lockedby = checklock($ID); //page still locked?
+ if($lockedby == $_SERVER['REMOTE_USER'])
+ unlock($ID); //try to unlock
+
+ // do the logout stuff
+ auth_logoff();
+
+ // rebuild info array
+ $INFO = pageinfo();
+
+ return 'login';
+ }
+
+ return $act;
+}
+
+/**
+ * Handle 'edit', 'preview'
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function act_edit($act){
+ global $ID;
+ global $INFO;
+
+ //check if locked by anyone - if not lock for my self
+ $lockedby = checklock($ID);
+ if($lockedby) return 'locked';
+
+ lock($ID);
+ return $act;
+}
+
+/**
+ * Handle 'edit', 'preview'
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function act_export($act){
+ global $ID;
+ global $REV;
+
+ // search engines: never cache exported docs! (Google only currently)
+ header('X-Robots-Tag: noindex');
+
+ // no renderer for this
+ if($act == 'export_raw'){
+ header('Content-Type: text/plain; charset=utf-8');
+ print rawWiki($ID,$REV);
+ exit;
+ }
+
+ // html export #FIXME what about the template's style?
+ if($act == 'export_xhtml'){
+ global $conf;
+ global $lang;
+ header('Content-Type: text/html; charset=utf-8');
+ ptln('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"');
+ ptln(' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
+ ptln('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$conf['lang'].'"');
+ ptln(' lang="'.$conf['lang'].'" dir="'.$lang['direction'].'">');
+ ptln('<head>');
+ ptln(' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
+ ptln(' <title>'.$ID.'</title>');
+ tpl_metaheaders();
+ ptln('</head>');
+ ptln('<body>');
+ ptln('<div class="dokuwiki export">');
+ $html = p_wiki_xhtml($ID,$REV,false);
+ tpl_toc();
+ echo $html;
+ ptln('</div>');
+ ptln('</body>');
+ ptln('</html>');
+ exit;
+ }
+
+ // html body only
+ if($act == 'export_xhtmlbody'){
+ $html = p_wiki_xhtml($ID,$REV,false);
+ tpl_toc();
+ echo $html;
+ exit;
+ }
+
+ // try to run renderer
+ $mode = substr($act,7);
+ $text = p_cached_output(wikiFN($ID,$REV), $mode);
+ $headers = p_get_metadata($ID,"format $mode");
+ if(!is_null($text)){
+ if(is_array($headers)) foreach($headers as $key => $val){
+ header("$key: $val");
+ }
+ print $text;
+ exit;
+ }
+
+ return 'show';
+}
+
+/**
+ * Handle page 'subscribe', 'unsubscribe'
+ *
+ * @author Steven Danz <steven-danz at kc.rr.com>
+ * @todo localize
+ */
+function act_subscription($act){
+ global $ID;
+ global $INFO;
+ global $lang;
+
+ $file=metaFN($ID,'.mlist');
+ if ($act=='subscribe' && !$INFO['subscribed']){
+ if ($INFO['userinfo']['mail']){
+ if (io_saveFile($file,$_SERVER['REMOTE_USER']."\n",true)) {
+ $INFO['subscribed'] = true;
+ msg(sprintf($lang[$act.'_success'], $INFO['userinfo']['name'], $ID),1);
+ } else {
+ msg(sprintf($lang[$act.'_error'], $INFO['userinfo']['name'], $ID),1);
+ }
+ } else {
+ msg($lang['subscribe_noaddress']);
+ }
+ } elseif ($act=='unsubscribe' && $INFO['subscribed']){
+ if (io_deleteFromFile($file,$_SERVER['REMOTE_USER']."\n")) {
+ $INFO['subscribed'] = false;
+ msg(sprintf($lang[$act.'_success'], $INFO['userinfo']['name'], $ID),1);
+ } else {
+ msg(sprintf($lang[$act.'_error'], $INFO['userinfo']['name'], $ID),1);
+ }
+ }
+
+ return 'show';
+}
+
+/**
+ * Handle namespace 'subscribe', 'unsubscribe'
+ *
+ */
+function act_subscriptionns($act){
+ global $ID;
+ global $INFO;
+ global $lang;
+
+ if(!getNS($ID)) {
+ $file = metaFN(getNS($ID),'.mlist');
+ $ns = "root";
+ } else {
+ $file = metaFN(getNS($ID),'/.mlist');
+ $ns = getNS($ID);
+ }
+
+ // reuse strings used to display the status of the subscribe action
+ $act_msg = rtrim($act, 'ns');
+
+ if ($act=='subscribens' && !$INFO['subscribedns']){
+ if ($INFO['userinfo']['mail']){
+ if (io_saveFile($file,$_SERVER['REMOTE_USER']."\n",true)) {
+ $INFO['subscribedns'] = true;
+ msg(sprintf($lang[$act_msg.'_success'], $INFO['userinfo']['name'], $ns),1);
+ } else {
+ msg(sprintf($lang[$act_msg.'_error'], $INFO['userinfo']['name'], $ns),1);
+ }
+ } else {
+ msg($lang['subscribe_noaddress']);
+ }
+ } elseif ($act=='unsubscribens' && $INFO['subscribedns']){
+ if (io_deleteFromFile($file,$_SERVER['REMOTE_USER']."\n")) {
+ $INFO['subscribedns'] = false;
+ msg(sprintf($lang[$act_msg.'_success'], $INFO['userinfo']['name'], $ns),1);
+ } else {
+ msg(sprintf($lang[$act_msg.'_error'], $INFO['userinfo']['name'], $ns),1);
+ }
+ }
+
+ return 'show';
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/auth/basic.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/auth/basic.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/auth/basic.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,324 +1,324 @@
-<?php
-/**
- * auth/basic.class.php
- *
- * foundation authorisation class
- * all auth classes should inherit from this class
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- */
-
-class auth_basic {
-
- var $success = true;
-
-
- /**
- * Posible things an auth backend module may be able to
- * do. The things a backend can do need to be set to true
- * in the constructor.
- */
- var $cando = array (
- 'addUser' => false, // can Users be created?
- 'delUser' => false, // can Users be deleted?
- 'modLogin' => false, // can login names be changed?
- 'modPass' => false, // can passwords be changed?
- 'modName' => false, // can real names be changed?
- 'modMail' => false, // can emails be changed?
- 'modGroups' => false, // can groups be changed?
- 'getUsers' => false, // can a (filtered) list of users be retrieved?
- 'getUserCount'=> false, // can the number of users be retrieved?
- 'getGroups' => false, // can a list of available groups be retrieved?
- 'external' => false, // does the module do external auth checking?
- 'logoff' => false, // has the module some special logoff method?
- );
-
-
- /**
- * Constructor.
- *
- * Carry out sanity checks to ensure the object is
- * able to operate. Set capabilities in $this->cando
- * array here
- *
- * Set $this->success to false if checks fail
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
- function auth_basic() {
- // the base class constructor does nothing, derived class
- // constructors do the real work
- }
-
- /**
- * Capability check. [ DO NOT OVERRIDE ]
- *
- * Checks the capabilities set in the $this->cando array and
- * some pseudo capabilities (shortcutting access to multiple
- * ones)
- *
- * ususal capabilities start with lowercase letter
- * shortcut capabilities start with uppercase letter
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool
- */
- function canDo($cap) {
- switch($cap){
- case 'Profile':
- // can at least one of the user's properties be changed?
- return ( $this->cando['modPass'] ||
- $this->cando['modName'] ||
- $this->cando['modMail'] );
- break;
- case 'UserMod':
- // can at least anything be changed?
- return ( $this->cando['modPass'] ||
- $this->cando['modName'] ||
- $this->cando['modMail'] ||
- $this->cando['modLogin'] ||
- $this->cando['modGroups'] ||
- $this->cando['modMail'] );
- break;
- default:
- // print a helping message for developers
- if(!isset($this->cando[$cap])){
- msg("Check for unknown capability '$cap' - Do you use an outdated Plugin?",-1);
- }
- return $this->cando[$cap];
- }
- }
-
- /**
- * Log off the current user [ OPTIONAL ]
- *
- * Is run in addition to the ususal logoff method. Should
- * only be needed when trustExternal is implemented.
- *
- * @see auth_logoff()
- * @author Andreas Gohr
- */
- function logOff(){
- }
-
- /**
- * Do all authentication [ OPTIONAL ]
- *
- * Set $this->cando['external'] = true when implemented
- *
- * If this function is implemented it will be used to
- * authenticate a user - all other DokuWiki internals
- * will not be used for authenticating, thus
- * implementing the checkPass() function is not needed
- * anymore.
- *
- * The function can be used to authenticate against third
- * party cookies or Apache auth mechanisms and replaces
- * the auth_login() function
- *
- * The function will be called with or without a set
- * username. If the Username is given it was called
- * from the login form and the given credentials might
- * need to be checked. If no username was given it
- * the function needs to check if the user is logged in
- * by other means (cookie, environment).
- *
- * The function needs to set some globals needed by
- * DokuWiki like auth_login() does.
- *
- * @see auth_login()
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @param string $user Username
- * @param string $pass Cleartext Password
- * @param bool $sticky Cookie should not expire
- * @return bool true on successful auth
- */
- function trustExternal($user,$pass,$sticky=false){
-# // some example:
-#
-# global $USERINFO;
-# global $conf;
-# $sticky ? $sticky = true : $sticky = false; //sanity check
-#
-# // do the checking here
-#
-# // set the globals if authed
-# $USERINFO['name'] = 'FIXME';
-# $USERINFO['mail'] = 'FIXME';
-# $USERINFO['grps'] = array('FIXME');
-# $_SERVER['REMOTE_USER'] = $user;
-# $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
-# $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
-# $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
-# return true;
- }
-
- /**
- * Check user+password [ MUST BE OVERRIDDEN ]
- *
- * Checks if the given user exists and the given
- * plaintext password is correct
- *
- * May be ommited if trustExternal is used.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool
- */
- function checkPass($user,$pass){
- msg("no valid authorisation system in use", -1);
- return false;
- }
-
- /**
- * Return user info [ MUST BE OVERRIDDEN ]
- *
- * Returns info about the given user needs to contain
- * at least these fields:
- *
- * name string full name of the user
- * mail string email addres of the user
- * grps array list of groups the user is in
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return array containing user data or false
- */
- function getUserData($user) {
- if(!$this->cando['external']) msg("no valid authorisation system in use", -1);
- return false;
- }
-
- /**
- * Create a new User [implement only where required/possible]
- *
- * Returns false if the user already exists, null when an error
- * occurred and true if everything went well.
- *
- * The new user HAS TO be added to the default group by this
- * function!
- *
- * Set addUser capability when implemented
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function createUser($user,$pass,$name,$mail,$grps=null){
- msg("authorisation method does not allow creation of new users", -1);
- return null;
- }
-
- /**
- * Modify user data [implement only where required/possible]
- *
- * Set the mod* capabilities according to the implemented features
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @param $user nick of the user to be changed
- * @param $changes array of field/value pairs to be changed (password will be clear text)
- * @return bool
- */
- function modifyUser($user, $changes) {
- msg("authorisation method does not allow modifying of user data", -1);
- return false;
- }
-
- /**
- * Delete one or more users [implement only where required/possible]
- *
- * Set delUser capability when implemented
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @param array $users
- * @return int number of users deleted
- */
- function deleteUsers($users) {
- msg("authorisation method does not allow deleting of users", -1);
- return false;
- }
-
- /**
- * Return a count of the number of user which meet $filter criteria
- * [should be implemented whenever retrieveUsers is implemented]
- *
- * Set getUserCount capability when implemented
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- */
- function getUserCount($filter=array()) {
- msg("authorisation method does not provide user counts", -1);
- return 0;
- }
-
- /**
- * Bulk retrieval of user data [implement only where required/possible]
- *
- * Set getUsers capability when implemented
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @param start index of first user to be returned
- * @param limit max number of users to be returned
- * @param filter array of field/pattern pairs, null for no filter
- * @return array of userinfo (refer getUserData for internal userinfo details)
- */
- function retrieveUsers($start=0,$limit=-1,$filter=null) {
- msg("authorisation method does not support mass retrieval of user data", -1);
- return array();
- }
-
- /**
- * Define a group [implement only where required/possible]
- *
- * Set addGroup capability when implemented
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @return bool
- */
- function addGroup($group) {
- msg("authorisation method does not support independent group creation", -1);
- return false;
- }
-
- /**
- * Retrieve groups [implement only where required/possible]
- *
- * Set getGroups capability when implemented
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @return array
- */
- function retrieveGroups($start=0,$limit=0) {
- msg("authorisation method does not support group list retrieval", -1);
- return array();
- }
-
- /**
- * Check Session Cache validity [implement only where required/possible]
- *
- * DokuWiki caches user info in the user's session for the timespan defined
- * in $conf['securitytimeout'].
- *
- * This makes sure slow authentication backends do not slow down DokuWiki.
- * This also means that changes to the user database will not be reflected
- * on currently logged in users.
- *
- * To accommodate for this, the user manager plugin will touch a reference
- * file whenever a change is submitted. This function compares the filetime
- * of this reference file with the time stored in the session.
- *
- * This reference file mechanism does not reflect changes done directly in
- * the backend's database through other means than the user manager plugin.
- *
- * Fast backends might want to return always false, to force rechecks on
- * each page load. Others might want to use their own checking here. If
- * unsure, do not override.
- *
- * @param string $user - The username
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool
- */
- function useSessionCache($user){
- global $conf;
- return ($_SESSION[DOKU_COOKIE]['auth']['time'] >= @filemtime($conf['cachedir'].'/sessionpurge'));
- }
-
-}
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * auth/basic.class.php
+ *
+ * foundation authorisation class
+ * all auth classes should inherit from this class
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+
+class auth_basic {
+
+ var $success = true;
+
+
+ /**
+ * Posible things an auth backend module may be able to
+ * do. The things a backend can do need to be set to true
+ * in the constructor.
+ */
+ var $cando = array (
+ 'addUser' => false, // can Users be created?
+ 'delUser' => false, // can Users be deleted?
+ 'modLogin' => false, // can login names be changed?
+ 'modPass' => false, // can passwords be changed?
+ 'modName' => false, // can real names be changed?
+ 'modMail' => false, // can emails be changed?
+ 'modGroups' => false, // can groups be changed?
+ 'getUsers' => false, // can a (filtered) list of users be retrieved?
+ 'getUserCount'=> false, // can the number of users be retrieved?
+ 'getGroups' => false, // can a list of available groups be retrieved?
+ 'external' => false, // does the module do external auth checking?
+ 'logoff' => false, // has the module some special logoff method?
+ );
+
+
+ /**
+ * Constructor.
+ *
+ * Carry out sanity checks to ensure the object is
+ * able to operate. Set capabilities in $this->cando
+ * array here
+ *
+ * Set $this->success to false if checks fail
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+ function auth_basic() {
+ // the base class constructor does nothing, derived class
+ // constructors do the real work
+ }
+
+ /**
+ * Capability check. [ DO NOT OVERRIDE ]
+ *
+ * Checks the capabilities set in the $this->cando array and
+ * some pseudo capabilities (shortcutting access to multiple
+ * ones)
+ *
+ * ususal capabilities start with lowercase letter
+ * shortcut capabilities start with uppercase letter
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool
+ */
+ function canDo($cap) {
+ switch($cap){
+ case 'Profile':
+ // can at least one of the user's properties be changed?
+ return ( $this->cando['modPass'] ||
+ $this->cando['modName'] ||
+ $this->cando['modMail'] );
+ break;
+ case 'UserMod':
+ // can at least anything be changed?
+ return ( $this->cando['modPass'] ||
+ $this->cando['modName'] ||
+ $this->cando['modMail'] ||
+ $this->cando['modLogin'] ||
+ $this->cando['modGroups'] ||
+ $this->cando['modMail'] );
+ break;
+ default:
+ // print a helping message for developers
+ if(!isset($this->cando[$cap])){
+ msg("Check for unknown capability '$cap' - Do you use an outdated Plugin?",-1);
+ }
+ return $this->cando[$cap];
+ }
+ }
+
+ /**
+ * Log off the current user [ OPTIONAL ]
+ *
+ * Is run in addition to the ususal logoff method. Should
+ * only be needed when trustExternal is implemented.
+ *
+ * @see auth_logoff()
+ * @author Andreas Gohr
+ */
+ function logOff(){
+ }
+
+ /**
+ * Do all authentication [ OPTIONAL ]
+ *
+ * Set $this->cando['external'] = true when implemented
+ *
+ * If this function is implemented it will be used to
+ * authenticate a user - all other DokuWiki internals
+ * will not be used for authenticating, thus
+ * implementing the checkPass() function is not needed
+ * anymore.
+ *
+ * The function can be used to authenticate against third
+ * party cookies or Apache auth mechanisms and replaces
+ * the auth_login() function
+ *
+ * The function will be called with or without a set
+ * username. If the Username is given it was called
+ * from the login form and the given credentials might
+ * need to be checked. If no username was given it
+ * the function needs to check if the user is logged in
+ * by other means (cookie, environment).
+ *
+ * The function needs to set some globals needed by
+ * DokuWiki like auth_login() does.
+ *
+ * @see auth_login()
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @param string $user Username
+ * @param string $pass Cleartext Password
+ * @param bool $sticky Cookie should not expire
+ * @return bool true on successful auth
+ */
+ function trustExternal($user,$pass,$sticky=false){
+# // some example:
+#
+# global $USERINFO;
+# global $conf;
+# $sticky ? $sticky = true : $sticky = false; //sanity check
+#
+# // do the checking here
+#
+# // set the globals if authed
+# $USERINFO['name'] = 'FIXME';
+# $USERINFO['mail'] = 'FIXME';
+# $USERINFO['grps'] = array('FIXME');
+# $_SERVER['REMOTE_USER'] = $user;
+# $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
+# $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
+# $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
+# return true;
+ }
+
+ /**
+ * Check user+password [ MUST BE OVERRIDDEN ]
+ *
+ * Checks if the given user exists and the given
+ * plaintext password is correct
+ *
+ * May be ommited if trustExternal is used.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool
+ */
+ function checkPass($user,$pass){
+ msg("no valid authorisation system in use", -1);
+ return false;
+ }
+
+ /**
+ * Return user info [ MUST BE OVERRIDDEN ]
+ *
+ * Returns info about the given user needs to contain
+ * at least these fields:
+ *
+ * name string full name of the user
+ * mail string email addres of the user
+ * grps array list of groups the user is in
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return array containing user data or false
+ */
+ function getUserData($user) {
+ if(!$this->cando['external']) msg("no valid authorisation system in use", -1);
+ return false;
+ }
+
+ /**
+ * Create a new User [implement only where required/possible]
+ *
+ * Returns false if the user already exists, null when an error
+ * occurred and true if everything went well.
+ *
+ * The new user HAS TO be added to the default group by this
+ * function!
+ *
+ * Set addUser capability when implemented
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function createUser($user,$pass,$name,$mail,$grps=null){
+ msg("authorisation method does not allow creation of new users", -1);
+ return null;
+ }
+
+ /**
+ * Modify user data [implement only where required/possible]
+ *
+ * Set the mod* capabilities according to the implemented features
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @param $user nick of the user to be changed
+ * @param $changes array of field/value pairs to be changed (password will be clear text)
+ * @return bool
+ */
+ function modifyUser($user, $changes) {
+ msg("authorisation method does not allow modifying of user data", -1);
+ return false;
+ }
+
+ /**
+ * Delete one or more users [implement only where required/possible]
+ *
+ * Set delUser capability when implemented
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @param array $users
+ * @return int number of users deleted
+ */
+ function deleteUsers($users) {
+ msg("authorisation method does not allow deleting of users", -1);
+ return false;
+ }
+
+ /**
+ * Return a count of the number of user which meet $filter criteria
+ * [should be implemented whenever retrieveUsers is implemented]
+ *
+ * Set getUserCount capability when implemented
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+ function getUserCount($filter=array()) {
+ msg("authorisation method does not provide user counts", -1);
+ return 0;
+ }
+
+ /**
+ * Bulk retrieval of user data [implement only where required/possible]
+ *
+ * Set getUsers capability when implemented
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @param start index of first user to be returned
+ * @param limit max number of users to be returned
+ * @param filter array of field/pattern pairs, null for no filter
+ * @return array of userinfo (refer getUserData for internal userinfo details)
+ */
+ function retrieveUsers($start=0,$limit=-1,$filter=null) {
+ msg("authorisation method does not support mass retrieval of user data", -1);
+ return array();
+ }
+
+ /**
+ * Define a group [implement only where required/possible]
+ *
+ * Set addGroup capability when implemented
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @return bool
+ */
+ function addGroup($group) {
+ msg("authorisation method does not support independent group creation", -1);
+ return false;
+ }
+
+ /**
+ * Retrieve groups [implement only where required/possible]
+ *
+ * Set getGroups capability when implemented
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @return array
+ */
+ function retrieveGroups($start=0,$limit=0) {
+ msg("authorisation method does not support group list retrieval", -1);
+ return array();
+ }
+
+ /**
+ * Check Session Cache validity [implement only where required/possible]
+ *
+ * DokuWiki caches user info in the user's session for the timespan defined
+ * in $conf['securitytimeout'].
+ *
+ * This makes sure slow authentication backends do not slow down DokuWiki.
+ * This also means that changes to the user database will not be reflected
+ * on currently logged in users.
+ *
+ * To accommodate for this, the user manager plugin will touch a reference
+ * file whenever a change is submitted. This function compares the filetime
+ * of this reference file with the time stored in the session.
+ *
+ * This reference file mechanism does not reflect changes done directly in
+ * the backend's database through other means than the user manager plugin.
+ *
+ * Fast backends might want to return always false, to force rechecks on
+ * each page load. Others might want to use their own checking here. If
+ * unsure, do not override.
+ *
+ * @param string $user - The username
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool
+ */
+ function useSessionCache($user){
+ global $conf;
+ return ($_SESSION[DOKU_COOKIE]['auth']['time'] >= @filemtime($conf['cachedir'].'/sessionpurge'));
+ }
+
+}
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/auth/ldap.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/auth/ldap.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/auth/ldap.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,349 +1,350 @@
-<?php
-/**
- * LDAP authentication backend
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakaic.co.uk>
- */
-
-class auth_ldap extends auth_basic {
- var $cnf = null;
- var $con = null;
- var $bound = 0; // 0: anonymous, 1: user, 2: superuser
-
- /**
- * Constructor
- */
- function auth_ldap(){
- global $conf;
- $this->cnf = $conf['auth']['ldap'];
-
- // ldap extension is needed
- if(!function_exists('ldap_connect')) {
- if ($this->cnf['debug'])
- msg("LDAP err: PHP LDAP extension not found.",-1,__LINE__,__FILE__);
- $this->success = false;
- return;
- }
-
- if(empty($this->cnf['groupkey'])) $this->cnf['groupkey'] = 'cn';
-
- // try to connect
- if(!$this->_openLDAP()) $this->success = false;
-
- // auth_ldap currently just handles authentication, so no
- // capabilities are set
- }
-
- /**
- * Check user+password
- *
- * Checks if the given user exists and the given
- * plaintext password is correct by trying to bind
- * to the LDAP server
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool
- */
- function checkPass($user,$pass){
- // reject empty password
- if(empty($pass)) return false;
- if(!$this->_openLDAP()) return false;
-
- // indirect user bind
- if($this->cnf['binddn'] && $this->cnf['bindpw']){
- // use superuser credentials
- if(!@ldap_bind($this->con,$this->cnf['binddn'],$this->cnf['bindpw'])){
- if($this->cnf['debug'])
- msg('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- return false;
- }
- $this->bound = 2;
- }else if($this->cnf['binddn'] &&
- $this->cnf['usertree'] &&
- $this->cnf['userfilter']) {
- // special bind string
- $dn = $this->_makeFilter($this->cnf['binddn'],
- array('user'=>$user,'server'=>$this->cnf['server']));
-
- }else if(strpos($this->cnf['usertree'], '%{user}')) {
- // direct user bind
- $dn = $this->_makeFilter($this->cnf['usertree'],
- array('user'=>$user,'server'=>$this->cnf['server']));
-
- }else{
- // Anonymous bind
- if(!@ldap_bind($this->con)){
- msg("LDAP: can not bind anonymously",-1);
- if($this->cnf['debug'])
- msg('LDAP anonymous bind: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- return false;
- }
- }
-
- // Try to bind to with the dn if we have one.
- if(!empty($dn)) {
- // User/Password bind
- if(!@ldap_bind($this->con,$dn,$pass)){
- if($this->cnf['debug']){
- msg("LDAP: bind with $dn failed", -1,__LINE__,__FILE__);
- msg('LDAP user dn bind: '.htmlspecialchars(ldap_error($this->con)),0);
- }
- return false;
- }
- $this->bound = 1;
- return true;
- }else{
- // See if we can find the user
- $info = $this->getUserData($user);
- if(empty($info['dn'])) {
- return false;
- } else {
- $dn = $info['dn'];
- }
-
- // Try to bind with the dn provided
- if(!@ldap_bind($this->con,$dn,$pass)){
- if($this->cnf['debug']){
- msg("LDAP: bind with $dn failed", -1,__LINE__,__FILE__);
- msg('LDAP user bind: '.htmlspecialchars(ldap_error($this->con)),0);
- }
- return false;
- }
- $this->bound = 1;
- return true;
- }
-
- return false;
- }
-
- /**
- * Return user info
- *
- * Returns info about the given user needs to contain
- * at least these fields:
- *
- * name string full name of the user
- * mail string email addres of the user
- * grps array list of groups the user is in
- *
- * This LDAP specific function returns the following
- * addional fields:
- *
- * dn string distinguished name (DN)
- * uid string Posix User ID
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Trouble
- * @author Dan Allen <dan.j.allen at gmail.com>
- * @author <evaldas.auryla at pheur.org>
- * @author Stephane Chazelas <stephane.chazelas at emerson.com>
- * @return array containing user data or false
- */
- function getUserData($user) {
- global $conf;
- if(!$this->_openLDAP()) return false;
-
- // force superuser bind if wanted and not bound as superuser yet
- if($this->cnf['binddn'] && $this->cnf['bindpw'] && $this->bound < 2){
- // use superuser credentials
- if(!@ldap_bind($this->con,$this->cnf['binddn'],$this->cnf['bindpw'])){
- if($this->cnf['debug'])
- msg('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- return false;
- }
- $this->bound = 2;
- }elseif($this->bound == 0) {
- // in some cases getUserData is called outside the authentication workflow
- // eg. for sending email notification on subscribed pages. This data might not
- // be accessible anonymously, so we try to rebind the current user here
- $pass = PMA_blowfish_decrypt($_SESSION[DOKU_COOKIE]['auth']['pass'],auth_cookiesalt());
- $this->checkPass($_SESSION[DOKU_COOKIE]['auth']['user'], $pass);
- }
-
- $info['user'] = $user;
- $info['server'] = $this->cnf['server'];
-
- //get info for given user
- $base = $this->_makeFilter($this->cnf['usertree'], $info);
- if(!empty($this->cnf['userfilter'])) {
- $filter = $this->_makeFilter($this->cnf['userfilter'], $info);
- } else {
- $filter = "(ObjectClass=*)";
- }
-
- $sr = @ldap_search($this->con, $base, $filter);
- $result = @ldap_get_entries($this->con, $sr);
- if($this->cnf['debug'])
- msg('LDAP user search: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
-
- // Don't accept more or less than one response
- if($result['count'] != 1){
- return false; //user not found
- }
-
- $user_result = $result[0];
- ldap_free_result($sr);
-
- // general user info
- $info['dn'] = $user_result['dn'];
- $info['gid'] = $user_result['gidnumber'][0];
- $info['mail'] = $user_result['mail'][0];
- $info['name'] = $user_result['cn'][0];
- $info['grps'] = array();
-
- // overwrite if other attribs are specified.
- if(is_array($this->cnf['mapping'])){
- foreach($this->cnf['mapping'] as $localkey => $key) {
- if(is_array($key)) {
- // use regexp to clean up user_result
- list($key, $regexp) = each($key);
- if($user_result[$key]) foreach($user_result[$key] as $grp){
- if (preg_match($regexp,$grp,$match)) {
- if($localkey == 'grps') {
- $info[$localkey][] = $match[1];
- } else {
- $info[$localkey] = $match[1];
- }
- }
- }
- } else {
- $info[$localkey] = $user_result[$key][0];
- }
- }
- }
- $user_result = array_merge($info,$user_result);
-
- //get groups for given user if grouptree is given
- if ($this->cnf['grouptree'] && $this->cnf['groupfilter']) {
- $base = $this->_makeFilter($this->cnf['grouptree'], $user_result);
- $filter = $this->_makeFilter($this->cnf['groupfilter'], $user_result);
-
- $sr = @ldap_search($this->con, $base, $filter, array($this->cnf['groupkey']));
- if(!$sr){
- msg("LDAP: Reading group memberships failed",-1);
- if($this->cnf['debug'])
- msg('LDAP group search: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- return false;
- }
- $result = ldap_get_entries($this->con, $sr);
- ldap_free_result($sr);
-
- foreach($result as $grp){
- if(!empty($grp[$this->cnf['groupkey']][0])){
- if($this->cnf['debug'])
- msg('LDAP usergroup: '.htmlspecialchars($grp[$this->cnf['groupkey']][0]),0,__LINE__,__FILE__);
- $info['grps'][] = $grp[$this->cnf['groupkey']][0];
- }
- }
- }
-
- // always add the default group to the list of groups
- if(!in_array($conf['defaultgroup'],$info['grps'])){
- $info['grps'][] = $conf['defaultgroup'];
- }
- return $info;
- }
-
- /**
- * Make LDAP filter strings.
- *
- * Used by auth_getUserData to make the filter
- * strings for grouptree and groupfilter
- *
- * filter string ldap search filter with placeholders
- * placeholders array array with the placeholders
- *
- * @author Troels Liebe Bentsen <tlb at rapanden.dk>
- * @return string
- */
- function _makeFilter($filter, $placeholders) {
- preg_match_all("/%{([^}]+)/", $filter, $matches, PREG_PATTERN_ORDER);
- //replace each match
- foreach ($matches[1] as $match) {
- //take first element if array
- if(is_array($placeholders[$match])) {
- $value = $placeholders[$match][0];
- } else {
- $value = $placeholders[$match];
- }
- $value = $this->_filterEscape($value);
- $filter = str_replace('%{'.$match.'}', $value, $filter);
- }
- return $filter;
- }
-
- /**
- * Escape a string to be used in a LDAP filter
- *
- * Ported from Perl's Net::LDAP::Util escape_filter_value
- *
- * @author Andreas Gohr
- */
- function _filterEscape($string){
- return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e',
- '"\\\\\".join("",unpack("H2","$1"))',
- $string);
- }
-
- /**
- * Opens a connection to the configured LDAP server and sets the wanted
- * option on the connection
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _openLDAP(){
- if($this->con) return true; // connection already established
-
- $this->bound = 0;
-
- $port = ($this->cnf['port']) ? $this->cnf['port'] : 389;
- $this->con = @ldap_connect($this->cnf['server'],$port);
- if(!$this->con){
- msg("LDAP: couldn't connect to LDAP server",-1);
- return false;
- }
-
- //set protocol version and dependend options
- if($this->cnf['version']){
- if(!@ldap_set_option($this->con, LDAP_OPT_PROTOCOL_VERSION,
- $this->cnf['version'])){
- msg('Setting LDAP Protocol version '.$this->cnf['version'].' failed',-1);
- if($this->cnf['debug'])
- msg('LDAP version set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- }else{
- //use TLS (needs version 3)
- if($this->cnf['starttls']) {
- if (!@ldap_start_tls($this->con)){
- msg('Starting TLS failed',-1);
- if($this->cnf['debug'])
- msg('LDAP TLS set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- }
- }
- // needs version 3
- if(isset($this->cnf['referrals'])) {
- if(!@ldap_set_option($this->con, LDAP_OPT_REFERRALS,
- $this->cnf['referrals'])){
- msg('Setting LDAP referrals to off failed',-1);
- if($this->cnf['debug'])
- msg('LDAP referal set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- }
- }
- }
- }
-
- //set deref mode
- if($this->cnf['deref']){
- if(!@ldap_set_option($this->con, LDAP_OPT_DEREF, $this->cnf['deref'])){
- msg('Setting LDAP Deref mode '.$this->cnf['deref'].' failed',-1);
- if($this->cnf['debug'])
- msg('LDAP deref set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
- }
- }
-
- return true;
- }
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * LDAP authentication backend
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakaic.co.uk>
+ */
+
+class auth_ldap extends auth_basic {
+ var $cnf = null;
+ var $con = null;
+ var $bound = 0; // 0: anonymous, 1: user, 2: superuser
+
+ /**
+ * Constructor
+ */
+ function auth_ldap(){
+ global $conf;
+ $this->cnf = $conf['auth']['ldap'];
+
+ // ldap extension is needed
+ if(!function_exists('ldap_connect')) {
+ if ($this->cnf['debug'])
+ msg("LDAP err: PHP LDAP extension not found.",-1,__LINE__,__FILE__);
+ $this->success = false;
+ return;
+ }
+
+ if(empty($this->cnf['groupkey'])) $this->cnf['groupkey'] = 'cn';
+
+ // try to connect
+ if(!$this->_openLDAP()) $this->success = false;
+
+ // auth_ldap currently just handles authentication, so no
+ // capabilities are set
+ }
+
+ /**
+ * Check user+password
+ *
+ * Checks if the given user exists and the given
+ * plaintext password is correct by trying to bind
+ * to the LDAP server
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool
+ */
+ function checkPass($user,$pass){
+ // reject empty password
+ if(empty($pass)) return false;
+ if(!$this->_openLDAP()) return false;
+
+ // indirect user bind
+ if($this->cnf['binddn'] && $this->cnf['bindpw']){
+ // use superuser credentials
+ if(!@ldap_bind($this->con,$this->cnf['binddn'],$this->cnf['bindpw'])){
+ if($this->cnf['debug'])
+ msg('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ return false;
+ }
+ $this->bound = 2;
+ }else if($this->cnf['binddn'] &&
+ $this->cnf['usertree'] &&
+ $this->cnf['userfilter']) {
+ // special bind string
+ $dn = $this->_makeFilter($this->cnf['binddn'],
+ array('user'=>$user,'server'=>$this->cnf['server']));
+
+ }else if(strpos($this->cnf['usertree'], '%{user}')) {
+ // direct user bind
+ $dn = $this->_makeFilter($this->cnf['usertree'],
+ array('user'=>$user,'server'=>$this->cnf['server']));
+
+ }else{
+ // Anonymous bind
+ if(!@ldap_bind($this->con)){
+ msg("LDAP: can not bind anonymously",-1);
+ if($this->cnf['debug'])
+ msg('LDAP anonymous bind: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ return false;
+ }
+ }
+
+ // Try to bind to with the dn if we have one.
+ if(!empty($dn)) {
+ // User/Password bind
+ if(!@ldap_bind($this->con,$dn,$pass)){
+ if($this->cnf['debug']){
+ msg("LDAP: bind with $dn failed", -1,__LINE__,__FILE__);
+ msg('LDAP user dn bind: '.htmlspecialchars(ldap_error($this->con)),0);
+ }
+ return false;
+ }
+ $this->bound = 1;
+ return true;
+ }else{
+ // See if we can find the user
+ $info = $this->getUserData($user,true);
+ if(empty($info['dn'])) {
+ return false;
+ } else {
+ $dn = $info['dn'];
+ }
+
+ // Try to bind with the dn provided
+ if(!@ldap_bind($this->con,$dn,$pass)){
+ if($this->cnf['debug']){
+ msg("LDAP: bind with $dn failed", -1,__LINE__,__FILE__);
+ msg('LDAP user bind: '.htmlspecialchars(ldap_error($this->con)),0);
+ }
+ return false;
+ }
+ $this->bound = 1;
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Return user info
+ *
+ * Returns info about the given user needs to contain
+ * at least these fields:
+ *
+ * name string full name of the user
+ * mail string email addres of the user
+ * grps array list of groups the user is in
+ *
+ * This LDAP specific function returns the following
+ * addional fields:
+ *
+ * dn string distinguished name (DN)
+ * uid string Posix User ID
+ * inbind bool for internal use - avoid loop in binding
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Trouble
+ * @author Dan Allen <dan.j.allen at gmail.com>
+ * @author <evaldas.auryla at pheur.org>
+ * @author Stephane Chazelas <stephane.chazelas at emerson.com>
+ * @return array containing user data or false
+ */
+ function getUserData($user,$inbind=false) {
+ global $conf;
+ if(!$this->_openLDAP()) return false;
+
+ // force superuser bind if wanted and not bound as superuser yet
+ if($this->cnf['binddn'] && $this->cnf['bindpw'] && $this->bound < 2){
+ // use superuser credentials
+ if(!@ldap_bind($this->con,$this->cnf['binddn'],$this->cnf['bindpw'])){
+ if($this->cnf['debug'])
+ msg('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ return false;
+ }
+ $this->bound = 2;
+ }elseif($this->bound == 0 && !$inbind) {
+ // in some cases getUserData is called outside the authentication workflow
+ // eg. for sending email notification on subscribed pages. This data might not
+ // be accessible anonymously, so we try to rebind the current user here
+ $pass = PMA_blowfish_decrypt($_SESSION[DOKU_COOKIE]['auth']['pass'],auth_cookiesalt());
+ $this->checkPass($_SESSION[DOKU_COOKIE]['auth']['user'], $pass);
+ }
+
+ $info['user'] = $user;
+ $info['server'] = $this->cnf['server'];
+
+ //get info for given user
+ $base = $this->_makeFilter($this->cnf['usertree'], $info);
+ if(!empty($this->cnf['userfilter'])) {
+ $filter = $this->_makeFilter($this->cnf['userfilter'], $info);
+ } else {
+ $filter = "(ObjectClass=*)";
+ }
+
+ $sr = @ldap_search($this->con, $base, $filter);
+ $result = @ldap_get_entries($this->con, $sr);
+ if($this->cnf['debug'])
+ msg('LDAP user search: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+
+ // Don't accept more or less than one response
+ if($result['count'] != 1){
+ return false; //user not found
+ }
+
+ $user_result = $result[0];
+ ldap_free_result($sr);
+
+ // general user info
+ $info['dn'] = $user_result['dn'];
+ $info['gid'] = $user_result['gidnumber'][0];
+ $info['mail'] = $user_result['mail'][0];
+ $info['name'] = $user_result['cn'][0];
+ $info['grps'] = array();
+
+ // overwrite if other attribs are specified.
+ if(is_array($this->cnf['mapping'])){
+ foreach($this->cnf['mapping'] as $localkey => $key) {
+ if(is_array($key)) {
+ // use regexp to clean up user_result
+ list($key, $regexp) = each($key);
+ if($user_result[$key]) foreach($user_result[$key] as $grp){
+ if (preg_match($regexp,$grp,$match)) {
+ if($localkey == 'grps') {
+ $info[$localkey][] = $match[1];
+ } else {
+ $info[$localkey] = $match[1];
+ }
+ }
+ }
+ } else {
+ $info[$localkey] = $user_result[$key][0];
+ }
+ }
+ }
+ $user_result = array_merge($info,$user_result);
+
+ //get groups for given user if grouptree is given
+ if ($this->cnf['grouptree'] && $this->cnf['groupfilter']) {
+ $base = $this->_makeFilter($this->cnf['grouptree'], $user_result);
+ $filter = $this->_makeFilter($this->cnf['groupfilter'], $user_result);
+
+ $sr = @ldap_search($this->con, $base, $filter, array($this->cnf['groupkey']));
+ if(!$sr){
+ msg("LDAP: Reading group memberships failed",-1);
+ if($this->cnf['debug'])
+ msg('LDAP group search: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ return false;
+ }
+ $result = ldap_get_entries($this->con, $sr);
+ ldap_free_result($sr);
+
+ foreach($result as $grp){
+ if(!empty($grp[$this->cnf['groupkey']][0])){
+ if($this->cnf['debug'])
+ msg('LDAP usergroup: '.htmlspecialchars($grp[$this->cnf['groupkey']][0]),0,__LINE__,__FILE__);
+ $info['grps'][] = $grp[$this->cnf['groupkey']][0];
+ }
+ }
+ }
+
+ // always add the default group to the list of groups
+ if(!in_array($conf['defaultgroup'],$info['grps'])){
+ $info['grps'][] = $conf['defaultgroup'];
+ }
+ return $info;
+ }
+
+ /**
+ * Make LDAP filter strings.
+ *
+ * Used by auth_getUserData to make the filter
+ * strings for grouptree and groupfilter
+ *
+ * filter string ldap search filter with placeholders
+ * placeholders array array with the placeholders
+ *
+ * @author Troels Liebe Bentsen <tlb at rapanden.dk>
+ * @return string
+ */
+ function _makeFilter($filter, $placeholders) {
+ preg_match_all("/%{([^}]+)/", $filter, $matches, PREG_PATTERN_ORDER);
+ //replace each match
+ foreach ($matches[1] as $match) {
+ //take first element if array
+ if(is_array($placeholders[$match])) {
+ $value = $placeholders[$match][0];
+ } else {
+ $value = $placeholders[$match];
+ }
+ $value = $this->_filterEscape($value);
+ $filter = str_replace('%{'.$match.'}', $value, $filter);
+ }
+ return $filter;
+ }
+
+ /**
+ * Escape a string to be used in a LDAP filter
+ *
+ * Ported from Perl's Net::LDAP::Util escape_filter_value
+ *
+ * @author Andreas Gohr
+ */
+ function _filterEscape($string){
+ return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e',
+ '"\\\\\".join("",unpack("H2","$1"))',
+ $string);
+ }
+
+ /**
+ * Opens a connection to the configured LDAP server and sets the wanted
+ * option on the connection
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _openLDAP(){
+ if($this->con) return true; // connection already established
+
+ $this->bound = 0;
+
+ $port = ($this->cnf['port']) ? $this->cnf['port'] : 389;
+ $this->con = @ldap_connect($this->cnf['server'],$port);
+ if(!$this->con){
+ msg("LDAP: couldn't connect to LDAP server",-1);
+ return false;
+ }
+
+ //set protocol version and dependend options
+ if($this->cnf['version']){
+ if(!@ldap_set_option($this->con, LDAP_OPT_PROTOCOL_VERSION,
+ $this->cnf['version'])){
+ msg('Setting LDAP Protocol version '.$this->cnf['version'].' failed',-1);
+ if($this->cnf['debug'])
+ msg('LDAP version set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ }else{
+ //use TLS (needs version 3)
+ if($this->cnf['starttls']) {
+ if (!@ldap_start_tls($this->con)){
+ msg('Starting TLS failed',-1);
+ if($this->cnf['debug'])
+ msg('LDAP TLS set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ }
+ }
+ // needs version 3
+ if(isset($this->cnf['referrals'])) {
+ if(!@ldap_set_option($this->con, LDAP_OPT_REFERRALS,
+ $this->cnf['referrals'])){
+ msg('Setting LDAP referrals to off failed',-1);
+ if($this->cnf['debug'])
+ msg('LDAP referal set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ }
+ }
+ }
+ }
+
+ //set deref mode
+ if($this->cnf['deref']){
+ if(!@ldap_set_option($this->con, LDAP_OPT_DEREF, $this->cnf['deref'])){
+ msg('Setting LDAP Deref mode '.$this->cnf['deref'].' failed',-1);
+ if($this->cnf['debug'])
+ msg('LDAP deref set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
+ }
+ }
+
+ return true;
+ }
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/auth/mysql.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/auth/mysql.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/auth/mysql.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,920 +1,920 @@
-<?php
-/**
- * MySQLP authentication backend
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- * @author Matthias Grimm <matthias.grimmm at sourceforge.net>
-*/
-
-define('DOKU_AUTH', dirname(__FILE__));
-require_once(DOKU_AUTH.'/basic.class.php');
-
-class auth_mysql extends auth_basic {
-
- var $dbcon = 0;
- var $dbver = 0; // database version
- var $dbrev = 0; // database revision
- var $dbsub = 0; // database subrevision
- var $cnf = null;
- var $defaultgroup = "";
-
- /**
- * Constructor
- *
- * checks if the mysql interface is available, otherwise it will
- * set the variable $success of the basis class to false
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function auth_mysql() {
- global $conf;
- $this->cnf = $conf['auth']['mysql'];
-
- if (method_exists($this, 'auth_basic'))
- parent::auth_basic();
-
- if(!function_exists('mysql_connect')) {
- if ($this->cnf['debug'])
- msg("MySQL err: PHP MySQL extension not found.",-1,__LINE__,__FILE__);
- $this->success = false;
- return;
- }
-
- $this->defaultgroup = $conf['defaultgroup'];
-
- // set capabilities based upon config strings set
- if (empty($this->cnf['server']) || empty($this->cnf['user']) ||
- empty($this->cnf['password']) || empty($this->cnf['database'])){
- if ($this->cnf['debug'])
- msg("MySQL err: insufficient configuration.",-1,__LINE__,__FILE__);
- $this->success = false;
- return;
- }
-
- $this->cando['addUser'] = $this->_chkcnf(array('getUserInfo',
- 'getGroups',
- 'addUser',
- 'getUserID',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup'),true);
- $this->cando['delUser'] = $this->_chkcnf(array('getUserID',
- 'delUser',
- 'delUserRefs'),true);
- $this->cando['modLogin'] = $this->_chkcnf(array('getUserID',
- 'updateUser',
- 'UpdateTarget'),true);
- $this->cando['modPass'] = $this->cando['modLogin'];
- $this->cando['modName'] = $this->cando['modLogin'];
- $this->cando['modMail'] = $this->cando['modLogin'];
- $this->cando['modGroups'] = $this->_chkcnf(array('getUserID',
- 'getGroups',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup',
- 'delGroup',
- 'getGroupID',
- 'delUserGroup'),true);
- /* getGroups is not yet supported
- $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
- 'getGroupID'),false); */
- $this->cando['getUsers'] = $this->_chkcnf(array('getUsers',
- 'getUserInfo',
- 'getGroups'),false);
- $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'),false);
- }
-
- /**
- * Check if the given config strings are set
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @return bool
- */
- function _chkcnf($keys, $wop=false){
- foreach ($keys as $key){
- if (empty($this->cnf[$key])) return false;
- }
-
- /* write operation and lock array filled with tables names? */
- if ($wop && (!is_array($this->cnf['TablesToLock']) ||
- !count($this->cnf['TablesToLock']))){
- return false;
- }
-
- return true;
- }
-
- /**
- * Checks if the given user exists and the given plaintext password
- * is correct. Furtheron it might be checked wether the user is
- * member of the right group
- *
- * Depending on which SQL string is defined in the config, password
- * checking is done here (getpass) or by the database (passcheck)
- *
- * @param $user user who would like access
- * @param $pass user's clear text password to check
- * @return bool
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function checkPass($user,$pass){
- $rc = false;
-
- if($this->_openDB()) {
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['checkPass']);
- $sql = str_replace('%{pass}',$this->_escape($pass),$sql);
- $sql = str_replace('%{dgroup}',$this->_escape($this->defaultgroup),$sql);
- $result = $this->_queryDB($sql);
-
- if($result !== false && count($result) == 1) {
- if($this->cnf['forwardClearPass'] == 1)
- $rc = true;
- else
- $rc = auth_verifyPassword($pass,$result[0]['pass']);
- }
- $this->_closeDB();
- }
- return $rc;
- }
-
- /**
- * [public function]
- *
- * Returns info about the given user needs to contain
- * at least these fields:
- * name string full name of the user
- * mail string email addres of the user
- * grps array list of groups the user is in
- *
- * @param $user user's nick to get data for
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function getUserData($user){
- if($this->_openDB()) {
- $this->_lockTables("READ");
- $info = $this->_getUserInfo($user);
- $this->_unlockTables();
- $this->_closeDB();
- } else
- $info = false;
- return $info;
- }
-
- /**
- * [public function]
- *
- * Create a new User. Returns false if the user already exists,
- * null when an error occurred and true if everything went well.
- *
- * The new user will be added to the default group by this
- * function if grps are not specified (default behaviour).
- *
- * @param $user nick of the user
- * @param $pwd clear text password
- * @param $name full name of the user
- * @param $mail email address
- * @param $grps array of groups the user should become member of
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function createUser($user,$pwd,$name,$mail,$grps=null){
- if($this->_openDB()) {
- if (($info = $this->_getUserInfo($user)) !== false)
- return false; // user already exists
-
- // set defaultgroup if no groups were given
- if ($grps == null)
- $grps = array($this->defaultgroup);
-
- $this->_lockTables("WRITE");
- $pwd = $this->cnf['forwardClearPass'] ? $pwd : auth_cryptPassword($pwd);
- $rc = $this->_addUser($user,$pwd,$name,$mail,$grps);
- $this->_unlockTables();
- $this->_closeDB();
- if ($rc) return true;
- }
- return null; // return error
- }
-
- /**
- * Modify user data [public function]
- *
- * An existing user dataset will be modified. Changes are given in an array.
- *
- * The dataset update will be rejected if the user name should be changed
- * to an already existing one.
- *
- * The password must be provides unencrypted. Pasword cryption is done
- * automatically if configured.
- *
- * If one or more groups could't be updated, an error would be set. In
- * this case the dataset might already be changed and we can't rollback
- * the changes. Transactions would be really usefull here.
- *
- * modifyUser() may be called without SQL statements defined that are
- * needed to change group membership (for example if only the user profile
- * should be modified). In this case we asure that we don't touch groups
- * even $changes['grps'] is set by mistake.
- *
- * @param $user nick of the user to be changed
- * @param $changes array of field/value pairs to be changed (password
- * will be clear text)
- * @return bool true on success, false on error
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function modifyUser($user, $changes) {
- $rc = false;
-
- if (!is_array($changes) || !count($changes))
- return true; // nothing to change
-
- if($this->_openDB()) {
- $this->_lockTables("WRITE");
-
- if (($uid = $this->_getUserID($user))) {
- $rc = $this->_updateUserInfo($changes, $uid);
-
- if ($rc && isset($changes['grps']) && $this->cando['modGroups']) {
- $groups = $this->_getGroups($user);
- $grpadd = array_diff($changes['grps'], $groups);
- $grpdel = array_diff($groups, $changes['grps']);
-
- foreach($grpadd as $group)
- if (($this->_addUserToGroup($uid, $group, 1)) == false)
- $rc = false;
-
- foreach($grpdel as $group)
- if (($this->_delUserFromGroup($uid, $group)) == false)
- $rc = false;
- }
- }
-
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $rc;
- }
-
- /**
- * [public function]
- *
- * Remove one or more users from the list of registered users
- *
- * @param array $users array of users to be deleted
- * @return int the number of users deleted
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function deleteUsers($users) {
- $count = 0;
-
- if($this->_openDB()) {
- if (is_array($users) && count($users)) {
- $this->_lockTables("WRITE");
- foreach ($users as $user) {
- if ($this->_delUser($user))
- $count++;
- }
- $this->_unlockTables();
- }
- $this->_closeDB();
- }
- return $count;
- }
-
- /**
- * [public function]
- *
- * Counts users which meet certain $filter criteria.
- *
- * @param array $filter filter criteria in item/pattern pairs
- * @return count of found users.
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function getUserCount($filter=array()) {
- $rc = 0;
-
- if($this->_openDB()) {
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
-
- if ($this->dbver >= 4) {
- $sql = substr($sql, 6); /* remove 'SELECT' or 'select' */
- $sql = "SELECT SQL_CALC_FOUND_ROWS".$sql." LIMIT 1";
- $this->_queryDB($sql);
- $result = $this->_queryDB("SELECT FOUND_ROWS()");
- $rc = $result[0]['FOUND_ROWS()'];
- } else if (($result = $this->_queryDB($sql)))
- $rc = count($result);
-
- $this->_closeDB();
- }
- return $rc;
- }
-
- /**
- * Bulk retrieval of user data. [public function]
- *
- * @param first index of first user to be returned
- * @param limit max number of users to be returned
- * @param filter array of field/pattern pairs
- * @return array of userinfo (refer getUserData for internal userinfo details)
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function retrieveUsers($first=0,$limit=10,$filter=array()) {
- $out = array();
-
- if($this->_openDB()) {
- $this->_lockTables("READ");
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
- $sql .= " ".$this->cnf['SortOrder']." LIMIT $first, $limit";
- $result = $this->_queryDB($sql);
-
- if (!empty($result)) {
- foreach ($result as $user)
- if (($info = $this->_getUserInfo($user['user'])))
- $out[$user['user']] = $info;
- }
-
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $out;
- }
-
- /**
- * Give user membership of a group [public function]
- *
- * @param $user
- * @param $group
- * @return bool true on success, false on error
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function joinGroup($user, $group) {
- $rc = false;
-
- if ($this->_openDB()) {
- $this->_lockTables("WRITE");
- $uid = $this->_getUserID($user);
- $rc = $this->_addUserToGroup($uid, $group);
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $rc;
- }
-
- /**
- * Remove user from a group [public function]
- *
- * @param $user user that leaves a group
- * @param $group group to leave
- * @return bool
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function leaveGroup($user, $group) {
- $rc = false;
-
- if ($this->_openDB()) {
- $this->_lockTables("WRITE");
- $uid = $this->_getUserID($user);
- $rc = $this->_delUserFromGroup($uid, $group);
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $rc;
- }
-
- /**
- * Adds a user to a group.
- *
- * If $force is set to '1' non existing groups would be created.
- *
- * The database connection must already be established. Otherwise
- * this function does nothing and returns 'false'. It is strongly
- * recommended to call this function only after all participating
- * tables (group and usergroup) have been locked.
- *
- * @param $uid user id to add to a group
- * @param $group name of the group
- * @param $force '1' create missing groups
- * @return bool 'true' on success, 'false' on error
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _addUserToGroup($uid, $group, $force=0) {
- $newgroup = 0;
-
- if (($this->dbcon) && ($uid)) {
- $gid = $this->_getGroupID($group);
- if (!$gid) {
- if ($force) { // create missing groups
- $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['addGroup']);
- $gid = $this->_modifyDB($sql);
- $newgroup = 1; // group newly created
- }
- if (!$gid) return false; // group didn't exist and can't be created
- }
-
- $sql = str_replace('%{uid}', $this->_escape($uid),$this->cnf['addUserGroup']);
- $sql = str_replace('%{user}', $this->_escape($user),$sql);
- $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
- $sql = str_replace('%{group}',$this->_escape($group),$sql);
- if ($this->_modifyDB($sql) !== false) return true;
-
- if ($newgroup) { // remove previously created group on error
- $sql = str_replace('%{gid}', $this->_escape($gid),$this->cnf['delGroup']);
- $sql = str_replace('%{group}',$this->_escape($group),$sql);
- $this->_modifyDB($sql);
- }
- }
- return false;
- }
-
- /**
- * Remove user from a group
- *
- * @param $uid user id that leaves a group
- * @param $group group to leave
- * @return bool true on success, false on error
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _delUserFromGroup($uid, $group) {
- $rc = false;
-
- if (($this->dbcon) && ($uid)) {
- $gid = $this->_getGroupID($group);
- if ($gid) {
- $sql = str_replace('%{uid}', $this->_escape($uid),$this->cnf['delUserGroup']);
- $sql = str_replace('%{user}', $this->_escape($user),$sql);
- $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
- $sql = str_replace('%{group}',$this->_escape($group),$sql);
- $rc = $this->_modifyDB($sql) == 0 ? true : false;
- }
- }
- return $rc;
- }
-
- /**
- * Retrieves a list of groups the user is a member off.
- *
- * The database connection must already be established
- * for this function to work. Otherwise it will return
- * 'false'.
- *
- * @param $user user whose groups should be listed
- * @return bool false on error
- * @return array array containing all groups on success
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _getGroups($user) {
- $groups = array();
-
- if($this->dbcon) {
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getGroups']);
- $result = $this->_queryDB($sql);
-
- if($result !== false && count($result)) {
- foreach($result as $row)
- $groups[] = $row['group'];
- }
- return $groups;
- }
- return false;
- }
-
- /**
- * Retrieves the user id of a given user name
- *
- * The database connection must already be established
- * for this function to work. Otherwise it will return
- * 'false'.
- *
- * @param $user user whose id is desired
- * @return user id
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _getUserID($user) {
- if($this->dbcon) {
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserID']);
- $result = $this->_queryDB($sql);
- return $result === false ? false : $result[0]['id'];
- }
- return false;
- }
-
- /**
- * Adds a new User to the database.
- *
- * The database connection must already be established
- * for this function to work. Otherwise it will return
- * 'false'.
- *
- * @param $user login of the user
- * @param $pwd encrypted password
- * @param $name full name of the user
- * @param $mail email address
- * @param $grps array of groups the user should become member of
- * @return bool
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _addUser($user,$pwd,$name,$mail,$grps){
- if($this->dbcon && is_array($grps)) {
- $sql = str_replace('%{user}', $this->_escape($user),$this->cnf['addUser']);
- $sql = str_replace('%{pass}', $this->_escape($pwd),$sql);
- $sql = str_replace('%{name}', $this->_escape($name),$sql);
- $sql = str_replace('%{email}',$this->_escape($mail),$sql);
- $uid = $this->_modifyDB($sql);
-
- if ($uid) {
- foreach($grps as $group) {
- $gid = $this->_addUserToGroup($uid, $group, 1);
- if ($gid === false) break;
- }
-
- if ($gid) return true;
- else {
- /* remove the new user and all group relations if a group can't
- * be assigned. Newly created groups will remain in the database
- * and won't be removed. This might create orphaned groups but
- * is not a big issue so we ignore this problem here.
- */
- $this->_delUser($user);
- if ($this->cnf['debug'])
- msg ("MySQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
- }
- }
- }
- return false;
- }
-
- /**
- * Deletes a given user and all his group references.
- *
- * The database connection must already be established
- * for this function to work. Otherwise it will return
- * 'false'.
- *
- * @param $user user whose id is desired
- * @return bool
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _delUser($user) {
- if($this->dbcon) {
- $uid = $this->_getUserID($user);
- if ($uid) {
- $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUserRefs']);
- $this->_modifyDB($sql);
- $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUser']);
- $sql = str_replace('%{user}', $this->_escape($user),$sql);
- $this->_modifyDB($sql);
- return true;
- }
- }
- return false;
- }
-
- /**
- * getUserInfo
- *
- * Gets the data for a specific user The database connection
- * must already be established for this function to work.
- * Otherwise it will return 'false'.
- *
- * @param $user user's nick to get data for
- * @return bool false on error
- * @return array user info on success
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _getUserInfo($user){
- $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserInfo']);
- $result = $this->_queryDB($sql);
- if($result !== false && count($result)) {
- $info = $result[0];
- $info['grps'] = $this->_getGroups($user);
- return $info;
- }
- return false;
- }
-
- /**
- * Updates the user info in the database
- *
- * Update a user data structure in the database according changes
- * given in an array. The user name can only be changes if it didn't
- * exists already. If the new user name exists the update procedure
- * will be aborted. The database keeps unchanged.
- *
- * The database connection has already to be established for this
- * function to work. Otherwise it will return 'false'.
- *
- * The password will be crypted if necessary.
- *
- * @param $changes array of items to change as pairs of item and value
- * @param $uid user id of dataset to change, must be unique in DB
- * @return true on success or false on error
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _updateUserInfo($changes, $uid) {
- $sql = $this->cnf['updateUser']." ";
- $cnt = 0;
- $err = 0;
-
- if($this->dbcon) {
- foreach ($changes as $item => $value) {
- if ($item == 'user') {
- if (($this->_getUserID($changes['user']))) {
- $err = 1; /* new username already exists */
- break; /* abort update */
- }
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{user}',$value,$this->cnf['UpdateLogin']);
- } else if ($item == 'name') {
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{name}',$value,$this->cnf['UpdateName']);
- } else if ($item == 'pass') {
- if (!$this->cnf['forwardClearPass'])
- $value = auth_cryptPassword($value);
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{pass}',$value,$this->cnf['UpdatePass']);
- } else if ($item == 'mail') {
- if ($cnt++ > 0) $sql .= ", ";
- $sql .= str_replace('%{email}',$value,$this->cnf['UpdateEmail']);
- }
- }
-
- if ($err == 0) {
- if ($cnt > 0) {
- $sql .= " ".str_replace('%{uid}', $uid, $this->cnf['UpdateTarget']);
- if(get_class($this) == 'auth_mysql') $sql .= " LIMIT 1"; //some PgSQL inheritance comp.
- $this->_modifyDB($sql);
- }
- return true;
- }
- }
- return false;
- }
-
- /**
- * Retrieves the group id of a given group name
- *
- * The database connection must already be established
- * for this function to work. Otherwise it will return
- * 'false'.
- *
- * @param $group group name which id is desired
- * @return group id
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _getGroupID($group) {
- if($this->dbcon) {
- $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['getGroupID']);
- $result = $this->_queryDB($sql);
- return $result === false ? false : $result[0]['id'];
- }
- return false;
- }
-
- /**
- * Opens a connection to a database and saves the handle for further
- * usage in the object. The successful call to this functions is
- * essential for most functions in this object.
- *
- * @return bool
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _openDB() {
- if (!$this->dbcon) {
- $con = @mysql_connect ($this->cnf['server'], $this->cnf['user'], $this->cnf['password']);
- if ($con) {
- if ((mysql_select_db($this->cnf['database'], $con))) {
- if ((preg_match("/^(\d+)\.(\d+)\.(\d+).*/", mysql_get_server_info ($con), $result)) == 1) {
- $this->dbver = $result[1];
- $this->dbrev = $result[2];
- $this->dbsub = $result[3];
- }
- $this->dbcon = $con;
- if(!empty($this->cnf['charset'])){
- mysql_query('SET CHARACTER SET "' . $this->cnf['charset'] . '"', $con);
- }
- return true; // connection and database successfully opened
- } else {
- mysql_close ($con);
- if ($this->cnf['debug'])
- msg("MySQL err: No access to database {$this->cnf['database']}.",-1,__LINE__,__FILE__);
- }
- } else if ($this->cnf['debug'])
- msg ("MySQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
- -1,__LINE__,__FILE__);
-
- return false; // connection failed
- }
- return true; // connection already open
- }
-
- /**
- * Closes a database connection.
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _closeDB() {
- if ($this->dbcon) {
- mysql_close ($this->dbcon);
- $this->dbcon = 0;
- }
- }
-
- /**
- * Sends a SQL query to the database and transforms the result into
- * an associative array.
- *
- * This function is only able to handle queries that returns a
- * table such as SELECT.
- *
- * @param $query SQL string that contains the query
- * @return array with the result table
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _queryDB($query) {
- $resultarray = array();
- if ($this->dbcon) {
- $result = @mysql_query($query,$this->dbcon);
- if ($result) {
- while (($t = mysql_fetch_assoc($result)) !== false)
- $resultarray[]=$t;
- mysql_free_result ($result);
- return $resultarray;
- }
- if ($this->cnf['debug'])
- msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
- }
- return false;
- }
-
- /**
- * Sends a SQL query to the database
- *
- * This function is only able to handle queries that returns
- * either nothing or an id value such as INPUT, DELETE, UPDATE, etc.
- *
- * @param $query SQL string that contains the query
- * @return insert id or 0, false on error
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _modifyDB($query) {
- if ($this->dbcon) {
- $result = @mysql_query($query,$this->dbcon);
- if ($result) {
- $rc = mysql_insert_id($this->dbcon); //give back ID on insert
- if ($rc !== false) return $rc;
- }
- if ($this->cnf['debug'])
- msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
- }
- return false;
- }
-
- /**
- * Locked a list of tables for exclusive access so that modifications
- * to the database can't be disturbed by other threads. The list
- * could be set with $conf['auth']['mysql']['TablesToLock'] = array()
- *
- * If aliases for tables are used in SQL statements, also this aliases
- * must be locked. For eg. you use a table 'user' and the alias 'u' in
- * some sql queries, the array must looks like this (order is important):
- * array("user", "user AS u");
- *
- * MySQL V3 is not able to handle transactions with COMMIT/ROLLBACK
- * so that this functionality is simulated by this function. Nevertheless
- * it is not as powerful as transactions, it is a good compromise in safty.
- *
- * @param $mode could be 'READ' or 'WRITE'
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _lockTables($mode) {
- if ($this->dbcon) {
- if (is_array($this->cnf['TablesToLock']) && !empty($this->cnf['TablesToLock'])) {
- if ($mode == "READ" || $mode == "WRITE") {
- $sql = "LOCK TABLES ";
- $cnt = 0;
- foreach ($this->cnf['TablesToLock'] as $table) {
- if ($cnt++ != 0) $sql .= ", ";
- $sql .= "$table $mode";
- }
- $this->_modifyDB($sql);
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Unlock locked tables. All existing locks of this thread will be
- * abrogated.
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _unlockTables() {
- if ($this->dbcon) {
- $this->_modifyDB("UNLOCK TABLES");
- return true;
- }
- return false;
- }
-
- /**
- * Transforms the filter settings in an filter string for a SQL database
- * The database connection must already be established, otherwise the
- * original SQL string without filter criteria will be returned.
- *
- * @param $sql SQL string to which the $filter criteria should be added
- * @param $filter array of filter criteria as pairs of item and pattern
- * @return SQL string with attached $filter criteria on success
- * @return the original SQL string on error.
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _createSQLFilter($sql, $filter) {
- $SQLfilter = "";
- $cnt = 0;
-
- if ($this->dbcon) {
- foreach ($filter as $item => $pattern) {
- $tmp = '%'.$this->_escape($pattern).'%';
- if ($item == 'user') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{user}',$tmp,$this->cnf['FilterLogin']);
- } else if ($item == 'name') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{name}',$tmp,$this->cnf['FilterName']);
- } else if ($item == 'mail') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{email}',$tmp,$this->cnf['FilterEmail']);
- } else if ($item == 'grps') {
- if ($cnt++ > 0) $SQLfilter .= " AND ";
- $SQLfilter .= str_replace('%{group}',$tmp,$this->cnf['FilterGroup']);
- }
- }
-
- // we have to check SQLfilter here and must not use $cnt because if
- // any of cnf['Filter????'] is not defined, a malformed SQL string
- // would be generated.
-
- if (strlen($SQLfilter)) {
- $glue = strpos(strtolower($sql),"where") ? " AND " : " WHERE ";
- $sql = $sql.$glue.$SQLfilter;
- }
- }
-
- return $sql;
- }
-
- /**
- * Escape a string for insertion into the database
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @param string $string The string to escape
- * @param boolean $like Escape wildcard chars as well?
- */
- function _escape($string,$like=false){
- if($this->dbcon){
- $string = mysql_real_escape_string($string, $this->dbcon);
- }else{
- $string = addslashes($string);
- }
- if($like){
- $string = addcslashes($string,'%_');
- }
- return $string;
- }
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * MySQLP authentication backend
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @author Matthias Grimm <matthias.grimmm at sourceforge.net>
+*/
+
+define('DOKU_AUTH', dirname(__FILE__));
+require_once(DOKU_AUTH.'/basic.class.php');
+
+class auth_mysql extends auth_basic {
+
+ var $dbcon = 0;
+ var $dbver = 0; // database version
+ var $dbrev = 0; // database revision
+ var $dbsub = 0; // database subrevision
+ var $cnf = null;
+ var $defaultgroup = "";
+
+ /**
+ * Constructor
+ *
+ * checks if the mysql interface is available, otherwise it will
+ * set the variable $success of the basis class to false
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function auth_mysql() {
+ global $conf;
+ $this->cnf = $conf['auth']['mysql'];
+
+ if (method_exists($this, 'auth_basic'))
+ parent::auth_basic();
+
+ if(!function_exists('mysql_connect')) {
+ if ($this->cnf['debug'])
+ msg("MySQL err: PHP MySQL extension not found.",-1,__LINE__,__FILE__);
+ $this->success = false;
+ return;
+ }
+
+ $this->defaultgroup = $conf['defaultgroup'];
+
+ // set capabilities based upon config strings set
+ if (empty($this->cnf['server']) || empty($this->cnf['user']) ||
+ empty($this->cnf['password']) || empty($this->cnf['database'])){
+ if ($this->cnf['debug'])
+ msg("MySQL err: insufficient configuration.",-1,__LINE__,__FILE__);
+ $this->success = false;
+ return;
+ }
+
+ $this->cando['addUser'] = $this->_chkcnf(array('getUserInfo',
+ 'getGroups',
+ 'addUser',
+ 'getUserID',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup'),true);
+ $this->cando['delUser'] = $this->_chkcnf(array('getUserID',
+ 'delUser',
+ 'delUserRefs'),true);
+ $this->cando['modLogin'] = $this->_chkcnf(array('getUserID',
+ 'updateUser',
+ 'UpdateTarget'),true);
+ $this->cando['modPass'] = $this->cando['modLogin'];
+ $this->cando['modName'] = $this->cando['modLogin'];
+ $this->cando['modMail'] = $this->cando['modLogin'];
+ $this->cando['modGroups'] = $this->_chkcnf(array('getUserID',
+ 'getGroups',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup',
+ 'delGroup',
+ 'getGroupID',
+ 'delUserGroup'),true);
+ /* getGroups is not yet supported
+ $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
+ 'getGroupID'),false); */
+ $this->cando['getUsers'] = $this->_chkcnf(array('getUsers',
+ 'getUserInfo',
+ 'getGroups'),false);
+ $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'),false);
+ }
+
+ /**
+ * Check if the given config strings are set
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @return bool
+ */
+ function _chkcnf($keys, $wop=false){
+ foreach ($keys as $key){
+ if (empty($this->cnf[$key])) return false;
+ }
+
+ /* write operation and lock array filled with tables names? */
+ if ($wop && (!is_array($this->cnf['TablesToLock']) ||
+ !count($this->cnf['TablesToLock']))){
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Checks if the given user exists and the given plaintext password
+ * is correct. Furtheron it might be checked wether the user is
+ * member of the right group
+ *
+ * Depending on which SQL string is defined in the config, password
+ * checking is done here (getpass) or by the database (passcheck)
+ *
+ * @param $user user who would like access
+ * @param $pass user's clear text password to check
+ * @return bool
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function checkPass($user,$pass){
+ $rc = false;
+
+ if($this->_openDB()) {
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['checkPass']);
+ $sql = str_replace('%{pass}',$this->_escape($pass),$sql);
+ $sql = str_replace('%{dgroup}',$this->_escape($this->defaultgroup),$sql);
+ $result = $this->_queryDB($sql);
+
+ if($result !== false && count($result) == 1) {
+ if($this->cnf['forwardClearPass'] == 1)
+ $rc = true;
+ else
+ $rc = auth_verifyPassword($pass,$result[0]['pass']);
+ }
+ $this->_closeDB();
+ }
+ return $rc;
+ }
+
+ /**
+ * [public function]
+ *
+ * Returns info about the given user needs to contain
+ * at least these fields:
+ * name string full name of the user
+ * mail string email addres of the user
+ * grps array list of groups the user is in
+ *
+ * @param $user user's nick to get data for
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function getUserData($user){
+ if($this->_openDB()) {
+ $this->_lockTables("READ");
+ $info = $this->_getUserInfo($user);
+ $this->_unlockTables();
+ $this->_closeDB();
+ } else
+ $info = false;
+ return $info;
+ }
+
+ /**
+ * [public function]
+ *
+ * Create a new User. Returns false if the user already exists,
+ * null when an error occurred and true if everything went well.
+ *
+ * The new user will be added to the default group by this
+ * function if grps are not specified (default behaviour).
+ *
+ * @param $user nick of the user
+ * @param $pwd clear text password
+ * @param $name full name of the user
+ * @param $mail email address
+ * @param $grps array of groups the user should become member of
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function createUser($user,$pwd,$name,$mail,$grps=null){
+ if($this->_openDB()) {
+ if (($info = $this->_getUserInfo($user)) !== false)
+ return false; // user already exists
+
+ // set defaultgroup if no groups were given
+ if ($grps == null)
+ $grps = array($this->defaultgroup);
+
+ $this->_lockTables("WRITE");
+ $pwd = $this->cnf['forwardClearPass'] ? $pwd : auth_cryptPassword($pwd);
+ $rc = $this->_addUser($user,$pwd,$name,$mail,$grps);
+ $this->_unlockTables();
+ $this->_closeDB();
+ if ($rc) return true;
+ }
+ return null; // return error
+ }
+
+ /**
+ * Modify user data [public function]
+ *
+ * An existing user dataset will be modified. Changes are given in an array.
+ *
+ * The dataset update will be rejected if the user name should be changed
+ * to an already existing one.
+ *
+ * The password must be provides unencrypted. Pasword cryption is done
+ * automatically if configured.
+ *
+ * If one or more groups could't be updated, an error would be set. In
+ * this case the dataset might already be changed and we can't rollback
+ * the changes. Transactions would be really usefull here.
+ *
+ * modifyUser() may be called without SQL statements defined that are
+ * needed to change group membership (for example if only the user profile
+ * should be modified). In this case we asure that we don't touch groups
+ * even $changes['grps'] is set by mistake.
+ *
+ * @param $user nick of the user to be changed
+ * @param $changes array of field/value pairs to be changed (password
+ * will be clear text)
+ * @return bool true on success, false on error
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function modifyUser($user, $changes) {
+ $rc = false;
+
+ if (!is_array($changes) || !count($changes))
+ return true; // nothing to change
+
+ if($this->_openDB()) {
+ $this->_lockTables("WRITE");
+
+ if (($uid = $this->_getUserID($user))) {
+ $rc = $this->_updateUserInfo($changes, $uid);
+
+ if ($rc && isset($changes['grps']) && $this->cando['modGroups']) {
+ $groups = $this->_getGroups($user);
+ $grpadd = array_diff($changes['grps'], $groups);
+ $grpdel = array_diff($groups, $changes['grps']);
+
+ foreach($grpadd as $group)
+ if (($this->_addUserToGroup($uid, $group, 1)) == false)
+ $rc = false;
+
+ foreach($grpdel as $group)
+ if (($this->_delUserFromGroup($uid, $group)) == false)
+ $rc = false;
+ }
+ }
+
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $rc;
+ }
+
+ /**
+ * [public function]
+ *
+ * Remove one or more users from the list of registered users
+ *
+ * @param array $users array of users to be deleted
+ * @return int the number of users deleted
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function deleteUsers($users) {
+ $count = 0;
+
+ if($this->_openDB()) {
+ if (is_array($users) && count($users)) {
+ $this->_lockTables("WRITE");
+ foreach ($users as $user) {
+ if ($this->_delUser($user))
+ $count++;
+ }
+ $this->_unlockTables();
+ }
+ $this->_closeDB();
+ }
+ return $count;
+ }
+
+ /**
+ * [public function]
+ *
+ * Counts users which meet certain $filter criteria.
+ *
+ * @param array $filter filter criteria in item/pattern pairs
+ * @return count of found users.
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function getUserCount($filter=array()) {
+ $rc = 0;
+
+ if($this->_openDB()) {
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+
+ if ($this->dbver >= 4) {
+ $sql = substr($sql, 6); /* remove 'SELECT' or 'select' */
+ $sql = "SELECT SQL_CALC_FOUND_ROWS".$sql." LIMIT 1";
+ $this->_queryDB($sql);
+ $result = $this->_queryDB("SELECT FOUND_ROWS()");
+ $rc = $result[0]['FOUND_ROWS()'];
+ } else if (($result = $this->_queryDB($sql)))
+ $rc = count($result);
+
+ $this->_closeDB();
+ }
+ return $rc;
+ }
+
+ /**
+ * Bulk retrieval of user data. [public function]
+ *
+ * @param first index of first user to be returned
+ * @param limit max number of users to be returned
+ * @param filter array of field/pattern pairs
+ * @return array of userinfo (refer getUserData for internal userinfo details)
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function retrieveUsers($first=0,$limit=10,$filter=array()) {
+ $out = array();
+
+ if($this->_openDB()) {
+ $this->_lockTables("READ");
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+ $sql .= " ".$this->cnf['SortOrder']." LIMIT $first, $limit";
+ $result = $this->_queryDB($sql);
+
+ if (!empty($result)) {
+ foreach ($result as $user)
+ if (($info = $this->_getUserInfo($user['user'])))
+ $out[$user['user']] = $info;
+ }
+
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $out;
+ }
+
+ /**
+ * Give user membership of a group [public function]
+ *
+ * @param $user
+ * @param $group
+ * @return bool true on success, false on error
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function joinGroup($user, $group) {
+ $rc = false;
+
+ if ($this->_openDB()) {
+ $this->_lockTables("WRITE");
+ $uid = $this->_getUserID($user);
+ $rc = $this->_addUserToGroup($uid, $group);
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $rc;
+ }
+
+ /**
+ * Remove user from a group [public function]
+ *
+ * @param $user user that leaves a group
+ * @param $group group to leave
+ * @return bool
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function leaveGroup($user, $group) {
+ $rc = false;
+
+ if ($this->_openDB()) {
+ $this->_lockTables("WRITE");
+ $uid = $this->_getUserID($user);
+ $rc = $this->_delUserFromGroup($uid, $group);
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $rc;
+ }
+
+ /**
+ * Adds a user to a group.
+ *
+ * If $force is set to '1' non existing groups would be created.
+ *
+ * The database connection must already be established. Otherwise
+ * this function does nothing and returns 'false'. It is strongly
+ * recommended to call this function only after all participating
+ * tables (group and usergroup) have been locked.
+ *
+ * @param $uid user id to add to a group
+ * @param $group name of the group
+ * @param $force '1' create missing groups
+ * @return bool 'true' on success, 'false' on error
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _addUserToGroup($uid, $group, $force=0) {
+ $newgroup = 0;
+
+ if (($this->dbcon) && ($uid)) {
+ $gid = $this->_getGroupID($group);
+ if (!$gid) {
+ if ($force) { // create missing groups
+ $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['addGroup']);
+ $gid = $this->_modifyDB($sql);
+ $newgroup = 1; // group newly created
+ }
+ if (!$gid) return false; // group didn't exist and can't be created
+ }
+
+ $sql = str_replace('%{uid}', $this->_escape($uid),$this->cnf['addUserGroup']);
+ $sql = str_replace('%{user}', $this->_escape($user),$sql);
+ $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
+ $sql = str_replace('%{group}',$this->_escape($group),$sql);
+ if ($this->_modifyDB($sql) !== false) return true;
+
+ if ($newgroup) { // remove previously created group on error
+ $sql = str_replace('%{gid}', $this->_escape($gid),$this->cnf['delGroup']);
+ $sql = str_replace('%{group}',$this->_escape($group),$sql);
+ $this->_modifyDB($sql);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Remove user from a group
+ *
+ * @param $uid user id that leaves a group
+ * @param $group group to leave
+ * @return bool true on success, false on error
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _delUserFromGroup($uid, $group) {
+ $rc = false;
+
+ if (($this->dbcon) && ($uid)) {
+ $gid = $this->_getGroupID($group);
+ if ($gid) {
+ $sql = str_replace('%{uid}', $this->_escape($uid),$this->cnf['delUserGroup']);
+ $sql = str_replace('%{user}', $this->_escape($user),$sql);
+ $sql = str_replace('%{gid}', $this->_escape($gid),$sql);
+ $sql = str_replace('%{group}',$this->_escape($group),$sql);
+ $rc = $this->_modifyDB($sql) == 0 ? true : false;
+ }
+ }
+ return $rc;
+ }
+
+ /**
+ * Retrieves a list of groups the user is a member off.
+ *
+ * The database connection must already be established
+ * for this function to work. Otherwise it will return
+ * 'false'.
+ *
+ * @param $user user whose groups should be listed
+ * @return bool false on error
+ * @return array array containing all groups on success
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _getGroups($user) {
+ $groups = array();
+
+ if($this->dbcon) {
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getGroups']);
+ $result = $this->_queryDB($sql);
+
+ if($result !== false && count($result)) {
+ foreach($result as $row)
+ $groups[] = $row['group'];
+ }
+ return $groups;
+ }
+ return false;
+ }
+
+ /**
+ * Retrieves the user id of a given user name
+ *
+ * The database connection must already be established
+ * for this function to work. Otherwise it will return
+ * 'false'.
+ *
+ * @param $user user whose id is desired
+ * @return user id
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _getUserID($user) {
+ if($this->dbcon) {
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserID']);
+ $result = $this->_queryDB($sql);
+ return $result === false ? false : $result[0]['id'];
+ }
+ return false;
+ }
+
+ /**
+ * Adds a new User to the database.
+ *
+ * The database connection must already be established
+ * for this function to work. Otherwise it will return
+ * 'false'.
+ *
+ * @param $user login of the user
+ * @param $pwd encrypted password
+ * @param $name full name of the user
+ * @param $mail email address
+ * @param $grps array of groups the user should become member of
+ * @return bool
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _addUser($user,$pwd,$name,$mail,$grps){
+ if($this->dbcon && is_array($grps)) {
+ $sql = str_replace('%{user}', $this->_escape($user),$this->cnf['addUser']);
+ $sql = str_replace('%{pass}', $this->_escape($pwd),$sql);
+ $sql = str_replace('%{name}', $this->_escape($name),$sql);
+ $sql = str_replace('%{email}',$this->_escape($mail),$sql);
+ $uid = $this->_modifyDB($sql);
+
+ if ($uid) {
+ foreach($grps as $group) {
+ $gid = $this->_addUserToGroup($uid, $group, 1);
+ if ($gid === false) break;
+ }
+
+ if ($gid) return true;
+ else {
+ /* remove the new user and all group relations if a group can't
+ * be assigned. Newly created groups will remain in the database
+ * and won't be removed. This might create orphaned groups but
+ * is not a big issue so we ignore this problem here.
+ */
+ $this->_delUser($user);
+ if ($this->cnf['debug'])
+ msg ("MySQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Deletes a given user and all his group references.
+ *
+ * The database connection must already be established
+ * for this function to work. Otherwise it will return
+ * 'false'.
+ *
+ * @param $user user whose id is desired
+ * @return bool
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _delUser($user) {
+ if($this->dbcon) {
+ $uid = $this->_getUserID($user);
+ if ($uid) {
+ $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUserRefs']);
+ $this->_modifyDB($sql);
+ $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUser']);
+ $sql = str_replace('%{user}', $this->_escape($user),$sql);
+ $this->_modifyDB($sql);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * getUserInfo
+ *
+ * Gets the data for a specific user The database connection
+ * must already be established for this function to work.
+ * Otherwise it will return 'false'.
+ *
+ * @param $user user's nick to get data for
+ * @return bool false on error
+ * @return array user info on success
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _getUserInfo($user){
+ $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserInfo']);
+ $result = $this->_queryDB($sql);
+ if($result !== false && count($result)) {
+ $info = $result[0];
+ $info['grps'] = $this->_getGroups($user);
+ return $info;
+ }
+ return false;
+ }
+
+ /**
+ * Updates the user info in the database
+ *
+ * Update a user data structure in the database according changes
+ * given in an array. The user name can only be changes if it didn't
+ * exists already. If the new user name exists the update procedure
+ * will be aborted. The database keeps unchanged.
+ *
+ * The database connection has already to be established for this
+ * function to work. Otherwise it will return 'false'.
+ *
+ * The password will be crypted if necessary.
+ *
+ * @param $changes array of items to change as pairs of item and value
+ * @param $uid user id of dataset to change, must be unique in DB
+ * @return true on success or false on error
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _updateUserInfo($changes, $uid) {
+ $sql = $this->cnf['updateUser']." ";
+ $cnt = 0;
+ $err = 0;
+
+ if($this->dbcon) {
+ foreach ($changes as $item => $value) {
+ if ($item == 'user') {
+ if (($this->_getUserID($changes['user']))) {
+ $err = 1; /* new username already exists */
+ break; /* abort update */
+ }
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{user}',$value,$this->cnf['UpdateLogin']);
+ } else if ($item == 'name') {
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{name}',$value,$this->cnf['UpdateName']);
+ } else if ($item == 'pass') {
+ if (!$this->cnf['forwardClearPass'])
+ $value = auth_cryptPassword($value);
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{pass}',$value,$this->cnf['UpdatePass']);
+ } else if ($item == 'mail') {
+ if ($cnt++ > 0) $sql .= ", ";
+ $sql .= str_replace('%{email}',$value,$this->cnf['UpdateEmail']);
+ }
+ }
+
+ if ($err == 0) {
+ if ($cnt > 0) {
+ $sql .= " ".str_replace('%{uid}', $uid, $this->cnf['UpdateTarget']);
+ if(get_class($this) == 'auth_mysql') $sql .= " LIMIT 1"; //some PgSQL inheritance comp.
+ $this->_modifyDB($sql);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Retrieves the group id of a given group name
+ *
+ * The database connection must already be established
+ * for this function to work. Otherwise it will return
+ * 'false'.
+ *
+ * @param $group group name which id is desired
+ * @return group id
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _getGroupID($group) {
+ if($this->dbcon) {
+ $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['getGroupID']);
+ $result = $this->_queryDB($sql);
+ return $result === false ? false : $result[0]['id'];
+ }
+ return false;
+ }
+
+ /**
+ * Opens a connection to a database and saves the handle for further
+ * usage in the object. The successful call to this functions is
+ * essential for most functions in this object.
+ *
+ * @return bool
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _openDB() {
+ if (!$this->dbcon) {
+ $con = @mysql_connect ($this->cnf['server'], $this->cnf['user'], $this->cnf['password']);
+ if ($con) {
+ if ((mysql_select_db($this->cnf['database'], $con))) {
+ if ((preg_match("/^(\d+)\.(\d+)\.(\d+).*/", mysql_get_server_info ($con), $result)) == 1) {
+ $this->dbver = $result[1];
+ $this->dbrev = $result[2];
+ $this->dbsub = $result[3];
+ }
+ $this->dbcon = $con;
+ if(!empty($this->cnf['charset'])){
+ mysql_query('SET CHARACTER SET "' . $this->cnf['charset'] . '"', $con);
+ }
+ return true; // connection and database successfully opened
+ } else {
+ mysql_close ($con);
+ if ($this->cnf['debug'])
+ msg("MySQL err: No access to database {$this->cnf['database']}.",-1,__LINE__,__FILE__);
+ }
+ } else if ($this->cnf['debug'])
+ msg ("MySQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
+ -1,__LINE__,__FILE__);
+
+ return false; // connection failed
+ }
+ return true; // connection already open
+ }
+
+ /**
+ * Closes a database connection.
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _closeDB() {
+ if ($this->dbcon) {
+ mysql_close ($this->dbcon);
+ $this->dbcon = 0;
+ }
+ }
+
+ /**
+ * Sends a SQL query to the database and transforms the result into
+ * an associative array.
+ *
+ * This function is only able to handle queries that returns a
+ * table such as SELECT.
+ *
+ * @param $query SQL string that contains the query
+ * @return array with the result table
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _queryDB($query) {
+ $resultarray = array();
+ if ($this->dbcon) {
+ $result = @mysql_query($query,$this->dbcon);
+ if ($result) {
+ while (($t = mysql_fetch_assoc($result)) !== false)
+ $resultarray[]=$t;
+ mysql_free_result ($result);
+ return $resultarray;
+ }
+ if ($this->cnf['debug'])
+ msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
+ return false;
+ }
+
+ /**
+ * Sends a SQL query to the database
+ *
+ * This function is only able to handle queries that returns
+ * either nothing or an id value such as INPUT, DELETE, UPDATE, etc.
+ *
+ * @param $query SQL string that contains the query
+ * @return insert id or 0, false on error
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _modifyDB($query) {
+ if ($this->dbcon) {
+ $result = @mysql_query($query,$this->dbcon);
+ if ($result) {
+ $rc = mysql_insert_id($this->dbcon); //give back ID on insert
+ if ($rc !== false) return $rc;
+ }
+ if ($this->cnf['debug'])
+ msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
+ return false;
+ }
+
+ /**
+ * Locked a list of tables for exclusive access so that modifications
+ * to the database can't be disturbed by other threads. The list
+ * could be set with $conf['auth']['mysql']['TablesToLock'] = array()
+ *
+ * If aliases for tables are used in SQL statements, also this aliases
+ * must be locked. For eg. you use a table 'user' and the alias 'u' in
+ * some sql queries, the array must looks like this (order is important):
+ * array("user", "user AS u");
+ *
+ * MySQL V3 is not able to handle transactions with COMMIT/ROLLBACK
+ * so that this functionality is simulated by this function. Nevertheless
+ * it is not as powerful as transactions, it is a good compromise in safty.
+ *
+ * @param $mode could be 'READ' or 'WRITE'
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _lockTables($mode) {
+ if ($this->dbcon) {
+ if (is_array($this->cnf['TablesToLock']) && !empty($this->cnf['TablesToLock'])) {
+ if ($mode == "READ" || $mode == "WRITE") {
+ $sql = "LOCK TABLES ";
+ $cnt = 0;
+ foreach ($this->cnf['TablesToLock'] as $table) {
+ if ($cnt++ != 0) $sql .= ", ";
+ $sql .= "$table $mode";
+ }
+ $this->_modifyDB($sql);
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Unlock locked tables. All existing locks of this thread will be
+ * abrogated.
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _unlockTables() {
+ if ($this->dbcon) {
+ $this->_modifyDB("UNLOCK TABLES");
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Transforms the filter settings in an filter string for a SQL database
+ * The database connection must already be established, otherwise the
+ * original SQL string without filter criteria will be returned.
+ *
+ * @param $sql SQL string to which the $filter criteria should be added
+ * @param $filter array of filter criteria as pairs of item and pattern
+ * @return SQL string with attached $filter criteria on success
+ * @return the original SQL string on error.
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _createSQLFilter($sql, $filter) {
+ $SQLfilter = "";
+ $cnt = 0;
+
+ if ($this->dbcon) {
+ foreach ($filter as $item => $pattern) {
+ $tmp = '%'.$this->_escape($pattern).'%';
+ if ($item == 'user') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{user}',$tmp,$this->cnf['FilterLogin']);
+ } else if ($item == 'name') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{name}',$tmp,$this->cnf['FilterName']);
+ } else if ($item == 'mail') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{email}',$tmp,$this->cnf['FilterEmail']);
+ } else if ($item == 'grps') {
+ if ($cnt++ > 0) $SQLfilter .= " AND ";
+ $SQLfilter .= str_replace('%{group}',$tmp,$this->cnf['FilterGroup']);
+ }
+ }
+
+ // we have to check SQLfilter here and must not use $cnt because if
+ // any of cnf['Filter????'] is not defined, a malformed SQL string
+ // would be generated.
+
+ if (strlen($SQLfilter)) {
+ $glue = strpos(strtolower($sql),"where") ? " AND " : " WHERE ";
+ $sql = $sql.$glue.$SQLfilter;
+ }
+ }
+
+ return $sql;
+ }
+
+ /**
+ * Escape a string for insertion into the database
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @param string $string The string to escape
+ * @param boolean $like Escape wildcard chars as well?
+ */
+ function _escape($string,$like=false){
+ if($this->dbcon){
+ $string = mysql_real_escape_string($string, $this->dbcon);
+ }else{
+ $string = addslashes($string);
+ }
+ if($like){
+ $string = addcslashes($string,'%_');
+ }
+ return $string;
+ }
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/auth/pgsql.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/auth/pgsql.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/auth/pgsql.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,408 +1,408 @@
-<?php
-/**
- * PgSQL authentication backend
- *
- * This class inherits much functionality from the MySQL class
- * and just reimplements the Postgres specific parts.
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- * @author Matthias Grimm <matthias.grimmm at sourceforge.net>
-*/
-
-define('DOKU_AUTH', dirname(__FILE__));
-require_once(DOKU_AUTH.'/mysql.class.php');
-
-class auth_pgsql extends auth_mysql {
-
- /**
- * Constructor
- *
- * checks if the pgsql interface is available, otherwise it will
- * set the variable $success of the basis class to false
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function auth_pgsql() {
- global $conf;
- $this->cnf = $conf['auth']['pgsql'];
- if(!$this->cnf['port']) $this->cnf['port'] = 5432;
-
- if (method_exists($this, 'auth_basic'))
- parent::auth_basic();
-
- if(!function_exists('pg_connect')) {
- if ($this->cnf['debug'])
- msg("PgSQL err: PHP Postgres extension not found.",-1);
- $this->success = false;
- return;
- }
-
- $this->defaultgroup = $conf['defaultgroup'];
-
- // set capabilities based upon config strings set
- if (empty($this->cnf['user']) ||
- empty($this->cnf['password']) || empty($this->cnf['database'])){
- if ($this->cnf['debug'])
- msg("PgSQL err: insufficient configuration.",-1,__LINE__,__FILE__);
- $this->success = false;
- return;
- }
-
- $this->cando['addUser'] = $this->_chkcnf(array('getUserInfo',
- 'getGroups',
- 'addUser',
- 'getUserID',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup'));
- $this->cando['delUser'] = $this->_chkcnf(array('getUserID',
- 'delUser',
- 'delUserRefs'));
- $this->cando['modLogin'] = $this->_chkcnf(array('getUserID',
- 'updateUser',
- 'UpdateTarget'));
- $this->cando['modPass'] = $this->cando['modLogin'];
- $this->cando['modName'] = $this->cando['modLogin'];
- $this->cando['modMail'] = $this->cando['modLogin'];
- $this->cando['modGroups'] = $this->_chkcnf(array('getUserID',
- 'getGroups',
- 'getGroupID',
- 'addGroup',
- 'addUserGroup',
- 'delGroup',
- 'getGroupID',
- 'delUserGroup'));
- /* getGroups is not yet supported
- $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
- 'getGroupID')); */
- $this->cando['getUsers'] = $this->_chkcnf(array('getUsers',
- 'getUserInfo',
- 'getGroups'));
- $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'));
- }
-
- /**
- * Check if the given config strings are set
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @return bool
- */
- function _chkcnf($keys, $wop=false){
- foreach ($keys as $key){
- if (empty($this->cnf[$key])) return false;
- }
- return true;
- }
-
- // @inherit function checkPass($user,$pass)
- // @inherit function getUserData($user)
- // @inherit function createUser($user,$pwd,$name,$mail,$grps=null)
- // @inherit function modifyUser($user, $changes)
- // @inherit function deleteUsers($users)
-
-
- /**
- * [public function]
- *
- * Counts users which meet certain $filter criteria.
- *
- * @param array $filter filter criteria in item/pattern pairs
- * @return count of found users.
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function getUserCount($filter=array()) {
- $rc = 0;
-
- if($this->_openDB()) {
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
-
- // no equivalent of SQL_CALC_FOUND_ROWS in pgsql?
- if (($result = $this->_queryDB($sql))){
- $rc = count($result);
- }
- $this->_closeDB();
- }
- return $rc;
- }
-
- /**
- * Bulk retrieval of user data. [public function]
- *
- * @param first index of first user to be returned
- * @param limit max number of users to be returned
- * @param filter array of field/pattern pairs
- * @return array of userinfo (refer getUserData for internal userinfo details)
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function retrieveUsers($first=0,$limit=10,$filter=array()) {
- $out = array();
-
- if($this->_openDB()) {
- $this->_lockTables("READ");
- $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
- $sql .= " ".$this->cnf['SortOrder']." LIMIT $limit OFFSET $first";
- $result = $this->_queryDB($sql);
-
- foreach ($result as $user)
- if (($info = $this->_getUserInfo($user['user'])))
- $out[$user['user']] = $info;
-
- $this->_unlockTables();
- $this->_closeDB();
- }
- return $out;
- }
-
- // @inherit function joinGroup($user, $group)
- // @inherit function leaveGroup($user, $group) {
-
- /**
- * Adds a user to a group.
- *
- * If $force is set to '1' non existing groups would be created.
- *
- * The database connection must already be established. Otherwise
- * this function does nothing and returns 'false'.
- *
- * @param $uid user id to add to a group
- * @param $group name of the group
- * @param $force '1' create missing groups
- * @return bool 'true' on success, 'false' on error
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _addUserToGroup($uid, $group, $force=0) {
- $newgroup = 0;
-
- if (($this->dbcon) && ($uid)) {
- $gid = $this->_getGroupID($group);
- if (!$gid) {
- if ($force) { // create missing groups
- $sql = str_replace('%{group}',addslashes($group),$this->cnf['addGroup']);
- $this->_modifyDB($sql);
- //group should now exists try again to fetch it
- $gid = $this->_getGroupID($group);
- $newgroup = 1; // group newly created
- }
- }
-
- if (!$gid) return false; // group didn't exist and can't be created
-
- $sql = str_replace('%{uid}', addslashes($uid),$this->cnf['addUserGroup']);
- $sql = str_replace('%{user}', addslashes($user),$sql);
- $sql = str_replace('%{gid}', addslashes($gid),$sql);
- $sql = str_replace('%{group}',addslashes($group),$sql);
- if ($this->_modifyDB($sql) !== false) return true;
-
- if ($newgroup) { // remove previously created group on error
- $sql = str_replace('%{gid}', addslashes($gid),$this->cnf['delGroup']);
- $sql = str_replace('%{group}',addslashes($group),$sql);
- $this->_modifyDB($sql);
- }
- }
- return false;
- }
-
- // @inherit function _delUserFromGroup($uid, $group)
- // @inherit function _getGroups($user)
- // @inherit function _getUserID($user)
-
- /**
- * Adds a new User to the database.
- *
- * The database connection must already be established
- * for this function to work. Otherwise it will return
- * 'false'.
- *
- * @param $user login of the user
- * @param $pwd encrypted password
- * @param $name full name of the user
- * @param $mail email address
- * @param $grps array of groups the user should become member of
- * @return bool
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _addUser($user,$pwd,$name,$mail,$grps){
- if($this->dbcon && is_array($grps)) {
- $sql = str_replace('%{user}', addslashes($user),$this->cnf['addUser']);
- $sql = str_replace('%{pass}', addslashes($pwd),$sql);
- $sql = str_replace('%{name}', addslashes($name),$sql);
- $sql = str_replace('%{email}',addslashes($mail),$sql);
- if($this->_modifyDB($sql)){
- $uid = $this->_getUserID($user);
- }else{
- return false;
- }
-
- if ($uid) {
- foreach($grps as $group) {
- $gid = $this->_addUserToGroup($uid, $group, 1);
- if ($gid === false) break;
- }
-
- if ($gid) return true;
- else {
- /* remove the new user and all group relations if a group can't
- * be assigned. Newly created groups will remain in the database
- * and won't be removed. This might create orphaned groups but
- * is not a big issue so we ignore this problem here.
- */
- $this->_delUser($user);
- if ($this->cnf['debug'])
- msg("PgSQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
- }
- }
- }
- return false;
- }
-
- // @inherit function _delUser($user)
- // @inherit function _getUserInfo($user)
- // @inherit function _updateUserInfo($changes, $uid)
- // @inherit function _getGroupID($group)
-
- /**
- * Opens a connection to a database and saves the handle for further
- * usage in the object. The successful call to this functions is
- * essential for most functions in this object.
- *
- * @return bool
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _openDB() {
- if (!$this->dbcon) {
- $dsn = $this->cnf['server'] ? 'host='.$this->cnf['server'] : '';
- $dsn .= ' port='.$this->cnf['port'];
- $dsn .= ' dbname='.$this->cnf['database'];
- $dsn .= ' user='.$this->cnf['user'];
- $dsn .= ' password='.$this->cnf['password'];
-
- $con = @pg_connect($dsn);
- if ($con) {
- $this->dbcon = $con;
- return true; // connection and database successfully opened
- } else if ($this->cnf['debug']){
- msg ("PgSQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
- -1,__LINE__,__FILE__);
- }
- return false; // connection failed
- }
- return true; // connection already open
- }
-
- /**
- * Closes a database connection.
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _closeDB() {
- if ($this->dbcon) {
- pg_close ($this->dbcon);
- $this->dbcon = 0;
- }
- }
-
- /**
- * Sends a SQL query to the database and transforms the result into
- * an associative array.
- *
- * This function is only able to handle queries that returns a
- * table such as SELECT.
- *
- * @param $query SQL string that contains the query
- * @return array with the result table
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _queryDB($query) {
- if ($this->dbcon) {
- $result = @pg_query($this->dbcon,$query);
- if ($result) {
- while (($t = pg_fetch_assoc($result)) !== false)
- $resultarray[]=$t;
- pg_free_result ($result);
- return $resultarray;
- }elseif ($this->cnf['debug'])
- msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
- }
- return false;
- }
-
- /**
- * Executes an update or insert query. This differs from the
- * MySQL one because it does NOT return the last insertID
- *
- * @author Andreas Gohr
- */
- function _modifyDB($query) {
- if ($this->dbcon) {
- $result = @pg_query($this->dbcon,$query);
- if ($result) {
- pg_free_result ($result);
- return true;
- }
- if ($this->cnf['debug']){
- msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
- }
- }
- return false;
- }
-
- /**
- * Start a transaction
- *
- * @param $mode could be 'READ' or 'WRITE'
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _lockTables($mode) {
- if ($this->dbcon) {
- $this->_modifyDB('BEGIN');
- return true;
- }
- return false;
- }
-
- /**
- * Commit a transaction
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
- function _unlockTables() {
- if ($this->dbcon) {
- $this->_modifyDB('COMMIT');
- return true;
- }
- return false;
- }
-
- // @inherit function _createSQLFilter($sql, $filter)
-
-
- /**
- * Escape a string for insertion into the database
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @param string $string The string to escape
- * @param boolean $like Escape wildcard chars as well?
- */
- function _escape($string,$like=false){
- $string = pg_escape_string($string);
- if($like){
- $string = addcslashes($string,'%_');
- }
- return $string;
- }
-
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * PgSQL authentication backend
+ *
+ * This class inherits much functionality from the MySQL class
+ * and just reimplements the Postgres specific parts.
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @author Matthias Grimm <matthias.grimmm at sourceforge.net>
+*/
+
+define('DOKU_AUTH', dirname(__FILE__));
+require_once(DOKU_AUTH.'/mysql.class.php');
+
+class auth_pgsql extends auth_mysql {
+
+ /**
+ * Constructor
+ *
+ * checks if the pgsql interface is available, otherwise it will
+ * set the variable $success of the basis class to false
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function auth_pgsql() {
+ global $conf;
+ $this->cnf = $conf['auth']['pgsql'];
+ if(!$this->cnf['port']) $this->cnf['port'] = 5432;
+
+ if (method_exists($this, 'auth_basic'))
+ parent::auth_basic();
+
+ if(!function_exists('pg_connect')) {
+ if ($this->cnf['debug'])
+ msg("PgSQL err: PHP Postgres extension not found.",-1);
+ $this->success = false;
+ return;
+ }
+
+ $this->defaultgroup = $conf['defaultgroup'];
+
+ // set capabilities based upon config strings set
+ if (empty($this->cnf['user']) ||
+ empty($this->cnf['password']) || empty($this->cnf['database'])){
+ if ($this->cnf['debug'])
+ msg("PgSQL err: insufficient configuration.",-1,__LINE__,__FILE__);
+ $this->success = false;
+ return;
+ }
+
+ $this->cando['addUser'] = $this->_chkcnf(array('getUserInfo',
+ 'getGroups',
+ 'addUser',
+ 'getUserID',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup'));
+ $this->cando['delUser'] = $this->_chkcnf(array('getUserID',
+ 'delUser',
+ 'delUserRefs'));
+ $this->cando['modLogin'] = $this->_chkcnf(array('getUserID',
+ 'updateUser',
+ 'UpdateTarget'));
+ $this->cando['modPass'] = $this->cando['modLogin'];
+ $this->cando['modName'] = $this->cando['modLogin'];
+ $this->cando['modMail'] = $this->cando['modLogin'];
+ $this->cando['modGroups'] = $this->_chkcnf(array('getUserID',
+ 'getGroups',
+ 'getGroupID',
+ 'addGroup',
+ 'addUserGroup',
+ 'delGroup',
+ 'getGroupID',
+ 'delUserGroup'));
+ /* getGroups is not yet supported
+ $this->cando['getGroups'] = $this->_chkcnf(array('getGroups',
+ 'getGroupID')); */
+ $this->cando['getUsers'] = $this->_chkcnf(array('getUsers',
+ 'getUserInfo',
+ 'getGroups'));
+ $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'));
+ }
+
+ /**
+ * Check if the given config strings are set
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @return bool
+ */
+ function _chkcnf($keys, $wop=false){
+ foreach ($keys as $key){
+ if (empty($this->cnf[$key])) return false;
+ }
+ return true;
+ }
+
+ // @inherit function checkPass($user,$pass)
+ // @inherit function getUserData($user)
+ // @inherit function createUser($user,$pwd,$name,$mail,$grps=null)
+ // @inherit function modifyUser($user, $changes)
+ // @inherit function deleteUsers($users)
+
+
+ /**
+ * [public function]
+ *
+ * Counts users which meet certain $filter criteria.
+ *
+ * @param array $filter filter criteria in item/pattern pairs
+ * @return count of found users.
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function getUserCount($filter=array()) {
+ $rc = 0;
+
+ if($this->_openDB()) {
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+
+ // no equivalent of SQL_CALC_FOUND_ROWS in pgsql?
+ if (($result = $this->_queryDB($sql))){
+ $rc = count($result);
+ }
+ $this->_closeDB();
+ }
+ return $rc;
+ }
+
+ /**
+ * Bulk retrieval of user data. [public function]
+ *
+ * @param first index of first user to be returned
+ * @param limit max number of users to be returned
+ * @param filter array of field/pattern pairs
+ * @return array of userinfo (refer getUserData for internal userinfo details)
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function retrieveUsers($first=0,$limit=10,$filter=array()) {
+ $out = array();
+
+ if($this->_openDB()) {
+ $this->_lockTables("READ");
+ $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
+ $sql .= " ".$this->cnf['SortOrder']." LIMIT $limit OFFSET $first";
+ $result = $this->_queryDB($sql);
+
+ foreach ($result as $user)
+ if (($info = $this->_getUserInfo($user['user'])))
+ $out[$user['user']] = $info;
+
+ $this->_unlockTables();
+ $this->_closeDB();
+ }
+ return $out;
+ }
+
+ // @inherit function joinGroup($user, $group)
+ // @inherit function leaveGroup($user, $group) {
+
+ /**
+ * Adds a user to a group.
+ *
+ * If $force is set to '1' non existing groups would be created.
+ *
+ * The database connection must already be established. Otherwise
+ * this function does nothing and returns 'false'.
+ *
+ * @param $uid user id to add to a group
+ * @param $group name of the group
+ * @param $force '1' create missing groups
+ * @return bool 'true' on success, 'false' on error
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _addUserToGroup($uid, $group, $force=0) {
+ $newgroup = 0;
+
+ if (($this->dbcon) && ($uid)) {
+ $gid = $this->_getGroupID($group);
+ if (!$gid) {
+ if ($force) { // create missing groups
+ $sql = str_replace('%{group}',addslashes($group),$this->cnf['addGroup']);
+ $this->_modifyDB($sql);
+ //group should now exists try again to fetch it
+ $gid = $this->_getGroupID($group);
+ $newgroup = 1; // group newly created
+ }
+ }
+
+ if (!$gid) return false; // group didn't exist and can't be created
+
+ $sql = str_replace('%{uid}', addslashes($uid),$this->cnf['addUserGroup']);
+ $sql = str_replace('%{user}', addslashes($user),$sql);
+ $sql = str_replace('%{gid}', addslashes($gid),$sql);
+ $sql = str_replace('%{group}',addslashes($group),$sql);
+ if ($this->_modifyDB($sql) !== false) return true;
+
+ if ($newgroup) { // remove previously created group on error
+ $sql = str_replace('%{gid}', addslashes($gid),$this->cnf['delGroup']);
+ $sql = str_replace('%{group}',addslashes($group),$sql);
+ $this->_modifyDB($sql);
+ }
+ }
+ return false;
+ }
+
+ // @inherit function _delUserFromGroup($uid, $group)
+ // @inherit function _getGroups($user)
+ // @inherit function _getUserID($user)
+
+ /**
+ * Adds a new User to the database.
+ *
+ * The database connection must already be established
+ * for this function to work. Otherwise it will return
+ * 'false'.
+ *
+ * @param $user login of the user
+ * @param $pwd encrypted password
+ * @param $name full name of the user
+ * @param $mail email address
+ * @param $grps array of groups the user should become member of
+ * @return bool
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _addUser($user,$pwd,$name,$mail,$grps){
+ if($this->dbcon && is_array($grps)) {
+ $sql = str_replace('%{user}', addslashes($user),$this->cnf['addUser']);
+ $sql = str_replace('%{pass}', addslashes($pwd),$sql);
+ $sql = str_replace('%{name}', addslashes($name),$sql);
+ $sql = str_replace('%{email}',addslashes($mail),$sql);
+ if($this->_modifyDB($sql)){
+ $uid = $this->_getUserID($user);
+ }else{
+ return false;
+ }
+
+ if ($uid) {
+ foreach($grps as $group) {
+ $gid = $this->_addUserToGroup($uid, $group, 1);
+ if ($gid === false) break;
+ }
+
+ if ($gid) return true;
+ else {
+ /* remove the new user and all group relations if a group can't
+ * be assigned. Newly created groups will remain in the database
+ * and won't be removed. This might create orphaned groups but
+ * is not a big issue so we ignore this problem here.
+ */
+ $this->_delUser($user);
+ if ($this->cnf['debug'])
+ msg("PgSQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
+ }
+ }
+ }
+ return false;
+ }
+
+ // @inherit function _delUser($user)
+ // @inherit function _getUserInfo($user)
+ // @inherit function _updateUserInfo($changes, $uid)
+ // @inherit function _getGroupID($group)
+
+ /**
+ * Opens a connection to a database and saves the handle for further
+ * usage in the object. The successful call to this functions is
+ * essential for most functions in this object.
+ *
+ * @return bool
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _openDB() {
+ if (!$this->dbcon) {
+ $dsn = $this->cnf['server'] ? 'host='.$this->cnf['server'] : '';
+ $dsn .= ' port='.$this->cnf['port'];
+ $dsn .= ' dbname='.$this->cnf['database'];
+ $dsn .= ' user='.$this->cnf['user'];
+ $dsn .= ' password='.$this->cnf['password'];
+
+ $con = @pg_connect($dsn);
+ if ($con) {
+ $this->dbcon = $con;
+ return true; // connection and database successfully opened
+ } else if ($this->cnf['debug']){
+ msg ("PgSQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
+ -1,__LINE__,__FILE__);
+ }
+ return false; // connection failed
+ }
+ return true; // connection already open
+ }
+
+ /**
+ * Closes a database connection.
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _closeDB() {
+ if ($this->dbcon) {
+ pg_close ($this->dbcon);
+ $this->dbcon = 0;
+ }
+ }
+
+ /**
+ * Sends a SQL query to the database and transforms the result into
+ * an associative array.
+ *
+ * This function is only able to handle queries that returns a
+ * table such as SELECT.
+ *
+ * @param $query SQL string that contains the query
+ * @return array with the result table
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _queryDB($query) {
+ if ($this->dbcon) {
+ $result = @pg_query($this->dbcon,$query);
+ if ($result) {
+ while (($t = pg_fetch_assoc($result)) !== false)
+ $resultarray[]=$t;
+ pg_free_result ($result);
+ return $resultarray;
+ }elseif ($this->cnf['debug'])
+ msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
+ return false;
+ }
+
+ /**
+ * Executes an update or insert query. This differs from the
+ * MySQL one because it does NOT return the last insertID
+ *
+ * @author Andreas Gohr
+ */
+ function _modifyDB($query) {
+ if ($this->dbcon) {
+ $result = @pg_query($this->dbcon,$query);
+ if ($result) {
+ pg_free_result ($result);
+ return true;
+ }
+ if ($this->cnf['debug']){
+ msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Start a transaction
+ *
+ * @param $mode could be 'READ' or 'WRITE'
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _lockTables($mode) {
+ if ($this->dbcon) {
+ $this->_modifyDB('BEGIN');
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Commit a transaction
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+ function _unlockTables() {
+ if ($this->dbcon) {
+ $this->_modifyDB('COMMIT');
+ return true;
+ }
+ return false;
+ }
+
+ // @inherit function _createSQLFilter($sql, $filter)
+
+
+ /**
+ * Escape a string for insertion into the database
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @param string $string The string to escape
+ * @param boolean $like Escape wildcard chars as well?
+ */
+ function _escape($string,$like=false){
+ $string = pg_escape_string($string);
+ if($like){
+ $string = addcslashes($string,'%_');
+ }
+ return $string;
+ }
+
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/auth/plain.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/auth/plain.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/auth/plain.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,319 +1,319 @@
-<?php
-/**
- * Plaintext authentication backend
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- */
-
-define('DOKU_AUTH', dirname(__FILE__));
-require_once(DOKU_AUTH.'/basic.class.php');
-
-define('AUTH_USERFILE',DOKU_CONF.'users.auth.php');
-
-// we only accept page ids for auth_plain
-if(isset($_REQUEST['u']))
- $_REQUEST['u'] = cleanID($_REQUEST['u']);
-if(isset($_REQUEST['acl_user']))
- $_REQUEST['acl_user'] = cleanID($_REQUEST['acl_user']);
-// the same goes for password reset requests
-if(isset($_POST['login'])){
- $_POST['login'] = cleanID($_POST['login']);
-}
-
-class auth_plain extends auth_basic {
-
- var $users = null;
- var $_pattern = array();
-
- /**
- * Constructor
- *
- * Carry out sanity checks to ensure the object is
- * able to operate. Set capabilities.
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
- function auth_plain() {
- if (!@is_readable(AUTH_USERFILE)){
- $this->success = false;
- }else{
- if(@is_writable(AUTH_USERFILE)){
- $this->cando['addUser'] = true;
- $this->cando['delUser'] = true;
- $this->cando['modLogin'] = true;
- $this->cando['modPass'] = true;
- $this->cando['modName'] = true;
- $this->cando['modMail'] = true;
- $this->cando['modGroups'] = true;
- }
- $this->cando['getUsers'] = true;
- $this->cando['getUserCount'] = true;
- }
- }
-
- /**
- * Check user+password [required auth function]
- *
- * Checks if the given user exists and the given
- * plaintext password is correct
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool
- */
- function checkPass($user,$pass){
-
- $userinfo = $this->getUserData($user);
- if ($userinfo === false) return false;
-
- return auth_verifyPassword($pass,$this->users[$user]['pass']);
- }
-
- /**
- * Return user info
- *
- * Returns info about the given user needs to contain
- * at least these fields:
- *
- * name string full name of the user
- * mail string email addres of the user
- * grps array list of groups the user is in
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function getUserData($user){
-
- if($this->users === null) $this->_loadUserData();
- return isset($this->users[$user]) ? $this->users[$user] : false;
- }
-
- /**
- * Create a new User
- *
- * Returns false if the user already exists, null when an error
- * occurred and true if everything went well.
- *
- * The new user will be added to the default group by this
- * function if grps are not specified (default behaviour).
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- */
- function createUser($user,$pwd,$name,$mail,$grps=null){
- global $conf;
-
- // user mustn't already exist
- if ($this->getUserData($user) !== false) return false;
-
- $pass = auth_cryptPassword($pwd);
-
- // set default group if no groups specified
- if (!is_array($grps)) $grps = array($conf['defaultgroup']);
-
- // prepare user line
- $groups = join(',',$grps);
- $userline = join(':',array($user,$pass,$name,$mail,$groups))."\n";
-
- if (io_saveFile(AUTH_USERFILE,$userline,true)) {
- $this->users[$user] = compact('pass','name','mail','grps');
- return $pwd;
- }
-
- msg('The '.AUTH_USERFILE.' file is not writable. Please inform the Wiki-Admin',-1);
- return null;
- }
-
- /**
- * Modify user data
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @param $user nick of the user to be changed
- * @param $changes array of field/value pairs to be changed (password will be clear text)
- * @return bool
- */
- function modifyUser($user, $changes) {
- global $conf;
- global $ACT;
- global $INFO;
-
- // sanity checks, user must already exist and there must be something to change
- if (($userinfo = $this->getUserData($user)) === false) return false;
- if (!is_array($changes) || !count($changes)) return true;
-
- // update userinfo with new data, remembering to encrypt any password
- $newuser = $user;
- foreach ($changes as $field => $value) {
- if ($field == 'user') {
- $newuser = $value;
- continue;
- }
- if ($field == 'pass') $value = auth_cryptPassword($value);
- $userinfo[$field] = $value;
- }
-
- $groups = join(',',$userinfo['grps']);
- $userline = join(':',array($newuser, $userinfo['pass'], $userinfo['name'], $userinfo['mail'], $groups))."\n";
-
- if (!$this->deleteUsers(array($user))) {
- msg('Unable to modify user data. Please inform the Wiki-Admin',-1);
- return false;
- }
-
- if (!io_saveFile(AUTH_USERFILE,$userline,true)) {
- msg('There was an error modifying your user data. You should register again.',-1);
- // FIXME, user has been deleted but not recreated, should force a logout and redirect to login page
- $ACT == 'register';
- return false;
- }
-
- $this->users[$newuser] = $userinfo;
- return true;
- }
-
- /**
- * Remove one or more users from the list of registered users
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- * @param array $users array of users to be deleted
- * @return int the number of users deleted
- */
- function deleteUsers($users) {
-
- if (!is_array($users) || empty($users)) return 0;
-
- if ($this->users === null) $this->_loadUserData();
-
- $deleted = array();
- foreach ($users as $user) {
- if (isset($this->users[$user])) $deleted[] = preg_quote($user,'/');
- }
-
- if (empty($deleted)) return 0;
-
- $pattern = '/^('.join('|',$deleted).'):/';
-
- if (io_deleteFromFile(AUTH_USERFILE,$pattern,true)) {
- foreach ($deleted as $user) unset($this->users[$user]);
- return count($deleted);
- }
-
- // problem deleting, reload the user list and count the difference
- $count = count($this->users);
- $this->_loadUserData();
- $count -= count($this->users);
- return $count;
- }
-
- /**
- * Return a count of the number of user which meet $filter criteria
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- */
- function getUserCount($filter=array()) {
-
- if($this->users === null) $this->_loadUserData();
-
- if (!count($filter)) return count($this->users);
-
- $count = 0;
- $this->_constructPattern($filter);
-
- foreach ($this->users as $user => $info) {
- $count += $this->_filter($user, $info);
- }
-
- return $count;
- }
-
- /**
- * Bulk retrieval of user data
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- * @param start index of first user to be returned
- * @param limit max number of users to be returned
- * @param filter array of field/pattern pairs
- * @return array of userinfo (refer getUserData for internal userinfo details)
- */
- function retrieveUsers($start=0,$limit=0,$filter=array()) {
-
- if ($this->users === null) $this->_loadUserData();
-
- ksort($this->users);
-
- $i = 0;
- $count = 0;
- $out = array();
- $this->_constructPattern($filter);
-
- foreach ($this->users as $user => $info) {
- if ($this->_filter($user, $info)) {
- if ($i >= $start) {
- $out[$user] = $info;
- $count++;
- if (($limit > 0) && ($count >= $limit)) break;
- }
- $i++;
- }
- }
-
- return $out;
- }
-
- /**
- * Load all user data
- *
- * loads the user file into a datastructure
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _loadUserData(){
- $this->users = array();
-
- if(!@file_exists(AUTH_USERFILE)) return;
-
- $lines = file(AUTH_USERFILE);
- foreach($lines as $line){
- $line = preg_replace('/#.*$/','',$line); //ignore comments
- $line = trim($line);
- if(empty($line)) continue;
-
- $row = split(":",$line,5);
- $groups = split(",",$row[4]);
-
- $this->users[$row[0]]['pass'] = $row[1];
- $this->users[$row[0]]['name'] = urldecode($row[2]);
- $this->users[$row[0]]['mail'] = $row[3];
- $this->users[$row[0]]['grps'] = $groups;
- }
- }
-
- /**
- * return 1 if $user + $info match $filter criteria, 0 otherwise
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- */
- function _filter($user, $info) {
- // FIXME
- foreach ($this->_pattern as $item => $pattern) {
- if ($item == 'user') {
- if (!preg_match($pattern, $user)) return 0;
- } else if ($item == 'grps') {
- if (!count(preg_grep($pattern, $info['grps']))) return 0;
- } else {
- if (!preg_match($pattern, $info[$item])) return 0;
- }
- }
- return 1;
- }
-
- function _constructPattern($filter) {
- $this->_pattern = array();
- foreach ($filter as $item => $pattern) {
-// $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters
- $this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters
- }
- }
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Plaintext authentication backend
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+
+define('DOKU_AUTH', dirname(__FILE__));
+require_once(DOKU_AUTH.'/basic.class.php');
+
+define('AUTH_USERFILE',DOKU_CONF.'users.auth.php');
+
+// we only accept page ids for auth_plain
+if(isset($_REQUEST['u']))
+ $_REQUEST['u'] = cleanID($_REQUEST['u']);
+if(isset($_REQUEST['acl_user']))
+ $_REQUEST['acl_user'] = cleanID($_REQUEST['acl_user']);
+// the same goes for password reset requests
+if(isset($_POST['login'])){
+ $_POST['login'] = cleanID($_POST['login']);
+}
+
+class auth_plain extends auth_basic {
+
+ var $users = null;
+ var $_pattern = array();
+
+ /**
+ * Constructor
+ *
+ * Carry out sanity checks to ensure the object is
+ * able to operate. Set capabilities.
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+ function auth_plain() {
+ if (!@is_readable(AUTH_USERFILE)){
+ $this->success = false;
+ }else{
+ if(@is_writable(AUTH_USERFILE)){
+ $this->cando['addUser'] = true;
+ $this->cando['delUser'] = true;
+ $this->cando['modLogin'] = true;
+ $this->cando['modPass'] = true;
+ $this->cando['modName'] = true;
+ $this->cando['modMail'] = true;
+ $this->cando['modGroups'] = true;
+ }
+ $this->cando['getUsers'] = true;
+ $this->cando['getUserCount'] = true;
+ }
+ }
+
+ /**
+ * Check user+password [required auth function]
+ *
+ * Checks if the given user exists and the given
+ * plaintext password is correct
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool
+ */
+ function checkPass($user,$pass){
+
+ $userinfo = $this->getUserData($user);
+ if ($userinfo === false) return false;
+
+ return auth_verifyPassword($pass,$this->users[$user]['pass']);
+ }
+
+ /**
+ * Return user info
+ *
+ * Returns info about the given user needs to contain
+ * at least these fields:
+ *
+ * name string full name of the user
+ * mail string email addres of the user
+ * grps array list of groups the user is in
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function getUserData($user){
+
+ if($this->users === null) $this->_loadUserData();
+ return isset($this->users[$user]) ? $this->users[$user] : false;
+ }
+
+ /**
+ * Create a new User
+ *
+ * Returns false if the user already exists, null when an error
+ * occurred and true if everything went well.
+ *
+ * The new user will be added to the default group by this
+ * function if grps are not specified (default behaviour).
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+ function createUser($user,$pwd,$name,$mail,$grps=null){
+ global $conf;
+
+ // user mustn't already exist
+ if ($this->getUserData($user) !== false) return false;
+
+ $pass = auth_cryptPassword($pwd);
+
+ // set default group if no groups specified
+ if (!is_array($grps)) $grps = array($conf['defaultgroup']);
+
+ // prepare user line
+ $groups = join(',',$grps);
+ $userline = join(':',array($user,$pass,$name,$mail,$groups))."\n";
+
+ if (io_saveFile(AUTH_USERFILE,$userline,true)) {
+ $this->users[$user] = compact('pass','name','mail','grps');
+ return $pwd;
+ }
+
+ msg('The '.AUTH_USERFILE.' file is not writable. Please inform the Wiki-Admin',-1);
+ return null;
+ }
+
+ /**
+ * Modify user data
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @param $user nick of the user to be changed
+ * @param $changes array of field/value pairs to be changed (password will be clear text)
+ * @return bool
+ */
+ function modifyUser($user, $changes) {
+ global $conf;
+ global $ACT;
+ global $INFO;
+
+ // sanity checks, user must already exist and there must be something to change
+ if (($userinfo = $this->getUserData($user)) === false) return false;
+ if (!is_array($changes) || !count($changes)) return true;
+
+ // update userinfo with new data, remembering to encrypt any password
+ $newuser = $user;
+ foreach ($changes as $field => $value) {
+ if ($field == 'user') {
+ $newuser = $value;
+ continue;
+ }
+ if ($field == 'pass') $value = auth_cryptPassword($value);
+ $userinfo[$field] = $value;
+ }
+
+ $groups = join(',',$userinfo['grps']);
+ $userline = join(':',array($newuser, $userinfo['pass'], $userinfo['name'], $userinfo['mail'], $groups))."\n";
+
+ if (!$this->deleteUsers(array($user))) {
+ msg('Unable to modify user data. Please inform the Wiki-Admin',-1);
+ return false;
+ }
+
+ if (!io_saveFile(AUTH_USERFILE,$userline,true)) {
+ msg('There was an error modifying your user data. You should register again.',-1);
+ // FIXME, user has been deleted but not recreated, should force a logout and redirect to login page
+ $ACT == 'register';
+ return false;
+ }
+
+ $this->users[$newuser] = $userinfo;
+ return true;
+ }
+
+ /**
+ * Remove one or more users from the list of registered users
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ * @param array $users array of users to be deleted
+ * @return int the number of users deleted
+ */
+ function deleteUsers($users) {
+
+ if (!is_array($users) || empty($users)) return 0;
+
+ if ($this->users === null) $this->_loadUserData();
+
+ $deleted = array();
+ foreach ($users as $user) {
+ if (isset($this->users[$user])) $deleted[] = preg_quote($user,'/');
+ }
+
+ if (empty($deleted)) return 0;
+
+ $pattern = '/^('.join('|',$deleted).'):/';
+
+ if (io_deleteFromFile(AUTH_USERFILE,$pattern,true)) {
+ foreach ($deleted as $user) unset($this->users[$user]);
+ return count($deleted);
+ }
+
+ // problem deleting, reload the user list and count the difference
+ $count = count($this->users);
+ $this->_loadUserData();
+ $count -= count($this->users);
+ return $count;
+ }
+
+ /**
+ * Return a count of the number of user which meet $filter criteria
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+ function getUserCount($filter=array()) {
+
+ if($this->users === null) $this->_loadUserData();
+
+ if (!count($filter)) return count($this->users);
+
+ $count = 0;
+ $this->_constructPattern($filter);
+
+ foreach ($this->users as $user => $info) {
+ $count += $this->_filter($user, $info);
+ }
+
+ return $count;
+ }
+
+ /**
+ * Bulk retrieval of user data
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @param start index of first user to be returned
+ * @param limit max number of users to be returned
+ * @param filter array of field/pattern pairs
+ * @return array of userinfo (refer getUserData for internal userinfo details)
+ */
+ function retrieveUsers($start=0,$limit=0,$filter=array()) {
+
+ if ($this->users === null) $this->_loadUserData();
+
+ ksort($this->users);
+
+ $i = 0;
+ $count = 0;
+ $out = array();
+ $this->_constructPattern($filter);
+
+ foreach ($this->users as $user => $info) {
+ if ($this->_filter($user, $info)) {
+ if ($i >= $start) {
+ $out[$user] = $info;
+ $count++;
+ if (($limit > 0) && ($count >= $limit)) break;
+ }
+ $i++;
+ }
+ }
+
+ return $out;
+ }
+
+ /**
+ * Load all user data
+ *
+ * loads the user file into a datastructure
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _loadUserData(){
+ $this->users = array();
+
+ if(!@file_exists(AUTH_USERFILE)) return;
+
+ $lines = file(AUTH_USERFILE);
+ foreach($lines as $line){
+ $line = preg_replace('/#.*$/','',$line); //ignore comments
+ $line = trim($line);
+ if(empty($line)) continue;
+
+ $row = split(":",$line,5);
+ $groups = split(",",$row[4]);
+
+ $this->users[$row[0]]['pass'] = $row[1];
+ $this->users[$row[0]]['name'] = urldecode($row[2]);
+ $this->users[$row[0]]['mail'] = $row[3];
+ $this->users[$row[0]]['grps'] = $groups;
+ }
+ }
+
+ /**
+ * return 1 if $user + $info match $filter criteria, 0 otherwise
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+ function _filter($user, $info) {
+ // FIXME
+ foreach ($this->_pattern as $item => $pattern) {
+ if ($item == 'user') {
+ if (!preg_match($pattern, $user)) return 0;
+ } else if ($item == 'grps') {
+ if (!count(preg_grep($pattern, $info['grps']))) return 0;
+ } else {
+ if (!preg_match($pattern, $info[$item])) return 0;
+ }
+ }
+ return 1;
+ }
+
+ function _constructPattern($filter) {
+ $this->_pattern = array();
+ foreach ($filter as $item => $pattern) {
+// $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters
+ $this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters
+ }
+ }
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/auth/punbb.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/auth/punbb.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/auth/punbb.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,164 +1,164 @@
-<?php
-/**
- * PunBB auth backend
- *
- * Uses external Trust mechanism to check against PunBB's
- * user cookie. PunBB's PUN_ROOT must be defined correctly.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('PUN_ROOT')) define('PUN_ROOT', DOKU_INC.'../forum/');
-if(get_magic_quotes_gpc()){
- nice_die('Sorry the punbb auth backend requires the PHP option
- <a href="http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc">magic_quotes_gpc</a>
- to be disabled for proper operation. Either setup your PHP install accordingly or
- choose a different auth backend.');
-}
-
-require_once PUN_ROOT.'include/common.php';
-require_once DOKU_INC.'inc/auth/mysql.class.php';
-
-#dbg($GLOBALS);
-#dbg($pun_user);
-
-class auth_punbb extends auth_mysql {
-
- /**
- * Constructor.
- *
- * Sets additional capabilities and config strings
- */
- function auth_punbb(){
- global $conf;
- $this->cando['external'] = true;
- $this->cando['logoff'] = true;
-
- // make sure we use a crypt understood by punbb
- if(function_exists('sha1')){
- $conf['passcrypt'] = 'sha1';
- }else{
- $conf['passcrypt'] = 'md5';
- }
-
- // get global vars from PunBB config
- global $db_host;
- global $db_name;
- global $db_username;
- global $db_password;
- global $db_prefix;
-
- // now set up the mysql config strings
- $conf['auth']['mysql']['server'] = $db_host;
- $conf['auth']['mysql']['user'] = $db_username;
- $conf['auth']['mysql']['password'] = $db_password;
- $conf['auth']['mysql']['database'] = $db_name;
-
- $conf['auth']['mysql']['checkPass'] = "SELECT u.password AS pass
- FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
- WHERE u.group_id = g.g_id
- AND u.username = '%{user}'
- AND g.g_title != 'Guest'";
- $conf['auth']['mysql']['getUserInfo'] = "SELECT password AS pass, realname AS name, email AS mail,
- id, g_title as `group`
- FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
- WHERE u.group_id = g.g_id
- AND u.username = '%{user}'";
- $conf['auth']['mysql']['getGroups'] = "SELECT g.g_title as `group`
- FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
- WHERE u.group_id = g.g_id
- AND u.username = '%{user}'";
- $conf['auth']['mysql']['getUsers'] = "SELECT DISTINCT u.username AS user
- FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
- WHERE u.group_id = g.g_id";
- $conf['auth']['mysql']['FilterLogin'] = "u.username LIKE '%{user}'";
- $conf['auth']['mysql']['FilterName'] = "u.realname LIKE '%{name}'";
- $conf['auth']['mysql']['FilterEmail'] = "u.email LIKE '%{email}'";
- $conf['auth']['mysql']['FilterGroup'] = "g.g_title LIKE '%{group}'";
- $conf['auth']['mysql']['SortOrder'] = "ORDER BY u.username";
- $conf['auth']['mysql']['addUser'] = "INSERT INTO ${db_prefix}users
- (username, password, email, realname)
- VALUES ('%{user}', '%{pass}', '%{email}', '%{name}')";
- $conf['auth']['mysql']['addGroup'] = "INSERT INTO ${db_prefix}groups (g_title) VALUES ('%{group}')";
- $conf['auth']['mysql']['addUserGroup']= "UPDATE ${db_prefix}users
- SET group_id=%{gid}
- WHERE id='%{uid}'";
- $conf['auth']['mysql']['delGroup'] = "DELETE FROM ${db_prefix}groups WHERE g_id='%{gid}'";
- $conf['auth']['mysql']['getUserID'] = "SELECT id FROM ${db_prefix}users WHERE username='%{user}'";
- $conf['auth']['mysql']['updateUser'] = "UPDATE ${db_prefix}users SET";
- $conf['auth']['mysql']['UpdateLogin'] = "username='%{user}'";
- $conf['auth']['mysql']['UpdatePass'] = "password='%{pass}'";
- $conf['auth']['mysql']['UpdateEmail'] = "email='%{email}'";
- $conf['auth']['mysql']['UpdateName'] = "realname='%{name}'";
- $conf['auth']['mysql']['UpdateTarget']= "WHERE id=%{uid}";
- $conf['auth']['mysql']['delUserGroup']= "UPDATE ${db_prefix}users SET g_id=4 WHERE id=%{uid}";
- $conf['auth']['mysql']['getGroupID'] = "SELECT g_id AS id FROM ${db_prefix}groups WHERE g_title='%{group}'";
-
- $conf['auth']['mysql']['TablesToLock']= array("${db_prefix}users", "${db_prefix}users AS u",
- "${db_prefix}groups", "${db_prefix}groups AS g");
-
- $conf['auth']['mysql']['debug'] = 1;
- // call mysql constructor
- $this->auth_mysql();
- }
-
- /**
- * Just checks against the $pun_user variable
- */
- function trustExternal($user,$pass,$sticky=false){
- global $USERINFO;
- global $conf;
- global $lang;
- global $pun_user;
- global $pun_config;
- $sticky ? $sticky = true : $sticky = false; //sanity check
-
- // someone used the login form
- if(!empty($user)){
- if($this->checkPass($user,$pass)){
- $expire = ($sticky) ? time() + 31536000 : 0;
- $uinfo = $this->getUserData($user);
- pun_setcookie($uinfo['id'], auth_cryptPassword($pass), $expire);
- $pun_user = array();
- $pun_user['password'] = auth_cryptPassword($pass);
- $pun_user['username'] = $user;
- $pun_user['realname'] = $uinfo['name'];
- $pun_user['email'] = $uinfo['mail'];
- $pun_user['g_title'] = $uinfo['group'];
- }else{
- //invalid credentials - log off
- msg($lang['badlogin'],-1);
- auth_logoff();
- return false;
- }
- }
-
- if(isset($pun_user) && !$pun_user['is_guest']){
- // okay we're logged in - set the globals
- $USERINFO['pass'] = $pun_user['password'];
- $USERINFO['name'] = $pun_user['realname'];
- $USERINFO['mail'] = $pun_user['email'];
- $USERINFO['grps'] = array($pun_user['g_title']);
-
- $_SERVER['REMOTE_USER'] = $pun_user['username'];
- $_SESSION[DOKU_COOKIE]['auth']['user'] = $pun_user['username'];
- $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
- return true;
- }
-
- // to be sure
- auth_logoff();
- return false;
- }
-
- /**
- * remove punbb cookie on logout
- */
- function logOff(){
- global $pun_user;
- $pun_user = array();
- $pun_user['is_guest'] = 1;
- pun_setcookie(1, random_pass(8), time() + 31536000);
- }
-}
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * PunBB auth backend
+ *
+ * Uses external Trust mechanism to check against PunBB's
+ * user cookie. PunBB's PUN_ROOT must be defined correctly.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('PUN_ROOT')) define('PUN_ROOT', DOKU_INC.'../forum/');
+if(get_magic_quotes_gpc()){
+ nice_die('Sorry the punbb auth backend requires the PHP option
+ <a href="http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc">magic_quotes_gpc</a>
+ to be disabled for proper operation. Either setup your PHP install accordingly or
+ choose a different auth backend.');
+}
+
+require_once PUN_ROOT.'include/common.php';
+require_once DOKU_INC.'inc/auth/mysql.class.php';
+
+#dbg($GLOBALS);
+#dbg($pun_user);
+
+class auth_punbb extends auth_mysql {
+
+ /**
+ * Constructor.
+ *
+ * Sets additional capabilities and config strings
+ */
+ function auth_punbb(){
+ global $conf;
+ $this->cando['external'] = true;
+ $this->cando['logoff'] = true;
+
+ // make sure we use a crypt understood by punbb
+ if(function_exists('sha1')){
+ $conf['passcrypt'] = 'sha1';
+ }else{
+ $conf['passcrypt'] = 'md5';
+ }
+
+ // get global vars from PunBB config
+ global $db_host;
+ global $db_name;
+ global $db_username;
+ global $db_password;
+ global $db_prefix;
+
+ // now set up the mysql config strings
+ $conf['auth']['mysql']['server'] = $db_host;
+ $conf['auth']['mysql']['user'] = $db_username;
+ $conf['auth']['mysql']['password'] = $db_password;
+ $conf['auth']['mysql']['database'] = $db_name;
+
+ $conf['auth']['mysql']['checkPass'] = "SELECT u.password AS pass
+ FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
+ WHERE u.group_id = g.g_id
+ AND u.username = '%{user}'
+ AND g.g_title != 'Guest'";
+ $conf['auth']['mysql']['getUserInfo'] = "SELECT password AS pass, realname AS name, email AS mail,
+ id, g_title as `group`
+ FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
+ WHERE u.group_id = g.g_id
+ AND u.username = '%{user}'";
+ $conf['auth']['mysql']['getGroups'] = "SELECT g.g_title as `group`
+ FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
+ WHERE u.group_id = g.g_id
+ AND u.username = '%{user}'";
+ $conf['auth']['mysql']['getUsers'] = "SELECT DISTINCT u.username AS user
+ FROM ${db_prefix}users AS u, ${db_prefix}groups AS g
+ WHERE u.group_id = g.g_id";
+ $conf['auth']['mysql']['FilterLogin'] = "u.username LIKE '%{user}'";
+ $conf['auth']['mysql']['FilterName'] = "u.realname LIKE '%{name}'";
+ $conf['auth']['mysql']['FilterEmail'] = "u.email LIKE '%{email}'";
+ $conf['auth']['mysql']['FilterGroup'] = "g.g_title LIKE '%{group}'";
+ $conf['auth']['mysql']['SortOrder'] = "ORDER BY u.username";
+ $conf['auth']['mysql']['addUser'] = "INSERT INTO ${db_prefix}users
+ (username, password, email, realname)
+ VALUES ('%{user}', '%{pass}', '%{email}', '%{name}')";
+ $conf['auth']['mysql']['addGroup'] = "INSERT INTO ${db_prefix}groups (g_title) VALUES ('%{group}')";
+ $conf['auth']['mysql']['addUserGroup']= "UPDATE ${db_prefix}users
+ SET group_id=%{gid}
+ WHERE id='%{uid}'";
+ $conf['auth']['mysql']['delGroup'] = "DELETE FROM ${db_prefix}groups WHERE g_id='%{gid}'";
+ $conf['auth']['mysql']['getUserID'] = "SELECT id FROM ${db_prefix}users WHERE username='%{user}'";
+ $conf['auth']['mysql']['updateUser'] = "UPDATE ${db_prefix}users SET";
+ $conf['auth']['mysql']['UpdateLogin'] = "username='%{user}'";
+ $conf['auth']['mysql']['UpdatePass'] = "password='%{pass}'";
+ $conf['auth']['mysql']['UpdateEmail'] = "email='%{email}'";
+ $conf['auth']['mysql']['UpdateName'] = "realname='%{name}'";
+ $conf['auth']['mysql']['UpdateTarget']= "WHERE id=%{uid}";
+ $conf['auth']['mysql']['delUserGroup']= "UPDATE ${db_prefix}users SET g_id=4 WHERE id=%{uid}";
+ $conf['auth']['mysql']['getGroupID'] = "SELECT g_id AS id FROM ${db_prefix}groups WHERE g_title='%{group}'";
+
+ $conf['auth']['mysql']['TablesToLock']= array("${db_prefix}users", "${db_prefix}users AS u",
+ "${db_prefix}groups", "${db_prefix}groups AS g");
+
+ $conf['auth']['mysql']['debug'] = 1;
+ // call mysql constructor
+ $this->auth_mysql();
+ }
+
+ /**
+ * Just checks against the $pun_user variable
+ */
+ function trustExternal($user,$pass,$sticky=false){
+ global $USERINFO;
+ global $conf;
+ global $lang;
+ global $pun_user;
+ global $pun_config;
+ $sticky ? $sticky = true : $sticky = false; //sanity check
+
+ // someone used the login form
+ if(!empty($user)){
+ if($this->checkPass($user,$pass)){
+ $expire = ($sticky) ? time() + 31536000 : 0;
+ $uinfo = $this->getUserData($user);
+ pun_setcookie($uinfo['id'], auth_cryptPassword($pass), $expire);
+ $pun_user = array();
+ $pun_user['password'] = auth_cryptPassword($pass);
+ $pun_user['username'] = $user;
+ $pun_user['realname'] = $uinfo['name'];
+ $pun_user['email'] = $uinfo['mail'];
+ $pun_user['g_title'] = $uinfo['group'];
+ }else{
+ //invalid credentials - log off
+ msg($lang['badlogin'],-1);
+ auth_logoff();
+ return false;
+ }
+ }
+
+ if(isset($pun_user) && !$pun_user['is_guest']){
+ // okay we're logged in - set the globals
+ $USERINFO['pass'] = $pun_user['password'];
+ $USERINFO['name'] = $pun_user['realname'];
+ $USERINFO['mail'] = $pun_user['email'];
+ $USERINFO['grps'] = array($pun_user['g_title']);
+
+ $_SERVER['REMOTE_USER'] = $pun_user['username'];
+ $_SESSION[DOKU_COOKIE]['auth']['user'] = $pun_user['username'];
+ $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
+ return true;
+ }
+
+ // to be sure
+ auth_logoff();
+ return false;
+ }
+
+ /**
+ * remove punbb cookie on logout
+ */
+ function logOff(){
+ global $pun_user;
+ $pun_user = array();
+ $pun_user['is_guest'] = 1;
+ pun_setcookie(1, random_pass(8), time() + 31536000);
+ }
+}
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/auth.php
===================================================================
--- site/trunk/www-root/wiki/inc/auth.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/auth.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,897 +1,897 @@
-<?php
-/**
- * Authentication library
- *
- * Including this file will automatically try to login
- * a user by calling auth_login()
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/io.php');
-
- // some ACL level defines
- define('AUTH_NONE',0);
- define('AUTH_READ',1);
- define('AUTH_EDIT',2);
- define('AUTH_CREATE',4);
- define('AUTH_UPLOAD',8);
- define('AUTH_DELETE',16);
- define('AUTH_ADMIN',255);
-
- global $conf;
-
- if($conf['useacl']){
- require_once(DOKU_INC.'inc/blowfish.php');
- require_once(DOKU_INC.'inc/mail.php');
-
- global $auth;
-
- // load the the backend auth functions and instantiate the auth object
- if (@file_exists(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php')) {
- require_once(DOKU_INC.'inc/auth/basic.class.php');
- require_once(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php');
-
- $auth_class = "auth_".$conf['authtype'];
- if (class_exists($auth_class)) {
- $auth = new $auth_class();
- if ($auth->success == false) {
- // degrade to unauthenticated user
- unset($auth);
- auth_logoff();
- msg($lang['authtempfail'], -1);
- }
- } else {
- nice_die($lang['authmodfailed']);
- }
- } else {
- nice_die($lang['authmodfailed']);
- }
- }
-
- // do the login either by cookie or provided credentials
- if($conf['useacl']){
- if($auth){
- if (!isset($_REQUEST['u'])) $_REQUEST['u'] = '';
- if (!isset($_REQUEST['p'])) $_REQUEST['p'] = '';
- if (!isset($_REQUEST['r'])) $_REQUEST['r'] = '';
-
- // if no credentials were given try to use HTTP auth (for SSO)
- if(empty($_REQUEST['u']) && empty($_COOKIE[DOKU_COOKIE]) && !empty($_SERVER['PHP_AUTH_USER'])){
- $_REQUEST['u'] = $_SERVER['PHP_AUTH_USER'];
- $_REQUEST['p'] = $_SERVER['PHP_AUTH_PW'];
- }
-
- // external trust mechanism in place?
- if(!is_null($auth) && $auth->canDo('external')){
- $auth->trustExternal($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);
- }else{
- auth_login($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);
- }
- }
-
- //load ACL into a global array
- global $AUTH_ACL;
- if(is_readable(DOKU_CONF.'acl.auth.php')){
- $AUTH_ACL = file(DOKU_CONF.'acl.auth.php');
- if(isset($_SERVER['REMOTE_USER'])){
- $AUTH_ACL = str_replace('@USER@',$_SERVER['REMOTE_USER'],$AUTH_ACL);
- }
- }else{
- $AUTH_ACL = array();
- }
- }
-
-/**
- * This tries to login the user based on the sent auth credentials
- *
- * The authentication works like this: if a username was given
- * a new login is assumed and user/password are checked. If they
- * are correct the password is encrypted with blowfish and stored
- * together with the username in a cookie - the same info is stored
- * in the session, too. Additonally a browserID is stored in the
- * session.
- *
- * If no username was given the cookie is checked: if the username,
- * crypted password and browserID match between session and cookie
- * no further testing is done and the user is accepted
- *
- * If a cookie was found but no session info was availabe the
- * blowfish encrypted password from the cookie is decrypted and
- * together with username rechecked by calling this function again.
- *
- * On a successful login $_SERVER[REMOTE_USER] and $USERINFO
- * are set.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @param string $user Username
- * @param string $pass Cleartext Password
- * @param bool $sticky Cookie should not expire
- * @param bool $silent Don't show error on bad auth
- * @return bool true on successful auth
-*/
-function auth_login($user,$pass,$sticky=false,$silent=false){
- global $USERINFO;
- global $conf;
- global $lang;
- global $auth;
- $sticky ? $sticky = true : $sticky = false; //sanity check
-
- if(!empty($user)){
- //usual login
- if ($auth->checkPass($user,$pass)){
- // make logininfo globally available
- $_SERVER['REMOTE_USER'] = $user;
- $USERINFO = $auth->getUserData($user);
-
- // set cookie
- $pass = PMA_blowfish_encrypt($pass,auth_cookiesalt());
- $cookie = base64_encode("$user|$sticky|$pass");
- if($sticky) $time = time()+60*60*24*365; //one year
- setcookie(DOKU_COOKIE,$cookie,$time,DOKU_REL);
-
- // set session
- $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
- $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
- $_SESSION[DOKU_COOKIE]['auth']['buid'] = auth_browseruid();
- $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
- $_SESSION[DOKU_COOKIE]['auth']['time'] = time();
-
- return true;
- }else{
- //invalid credentials - log off
- if(!$silent) msg($lang['badlogin'],-1);
- auth_logoff();
- return false;
- }
- }else{
- // read cookie information
- $cookie = base64_decode($_COOKIE[DOKU_COOKIE]);
- list($user,$sticky,$pass) = split('\|',$cookie,3);
- // get session info
- $session = $_SESSION[DOKU_COOKIE]['auth'];
- if($user && $pass){
- // we got a cookie - see if we can trust it
- if(isset($session) &&
- $auth->useSessionCache($user) &&
- ($session['time'] >= time()-$conf['auth_security_timeout']) &&
- ($session['user'] == $user) &&
- ($session['pass'] == $pass) && //still crypted
- ($session['buid'] == auth_browseruid()) ){
- // he has session, cookie and browser right - let him in
- $_SERVER['REMOTE_USER'] = $user;
- $USERINFO = $session['info']; //FIXME move all references to session
- return true;
- }
- // no we don't trust it yet - recheck pass but silent
- $pass = PMA_blowfish_decrypt($pass,auth_cookiesalt());
- return auth_login($user,$pass,$sticky,true);
- }
- }
- //just to be sure
- auth_logoff();
- return false;
-}
-
-/**
- * Builds a pseudo UID from browser and IP data
- *
- * This is neither unique nor unfakable - still it adds some
- * security. Using the first part of the IP makes sure
- * proxy farms like AOLs are stil okay.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @return string a MD5 sum of various browser headers
- */
-function auth_browseruid(){
- $uid = '';
- $uid .= $_SERVER['HTTP_USER_AGENT'];
- $uid .= $_SERVER['HTTP_ACCEPT_ENCODING'];
- $uid .= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
- $uid .= $_SERVER['HTTP_ACCEPT_CHARSET'];
- $uid .= substr($_SERVER['REMOTE_ADDR'],0,strpos($_SERVER['REMOTE_ADDR'],'.'));
- return md5($uid);
-}
-
-/**
- * Creates a random key to encrypt the password in cookies
- *
- * This function tries to read the password for encrypting
- * cookies from $conf['metadir'].'/_htcookiesalt'
- * if no such file is found a random key is created and
- * and stored in this file.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @return string
- */
-function auth_cookiesalt(){
- global $conf;
- $file = $conf['metadir'].'/_htcookiesalt';
- $salt = io_readFile($file);
- if(empty($salt)){
- $salt = uniqid(rand(),true);
- io_saveFile($file,$salt);
- }
- return $salt;
-}
-
-/**
- * This clears all authenticationdata and thus log the user
- * off
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function auth_logoff(){
- global $conf;
- global $USERINFO;
- global $INFO, $ID;
- global $auth;
-
- if(isset($_SESSION[DOKU_COOKIE]['auth']['user']))
- unset($_SESSION[DOKU_COOKIE]['auth']['user']);
- if(isset($_SESSION[DOKU_COOKIE]['auth']['pass']))
- unset($_SESSION[DOKU_COOKIE]['auth']['pass']);
- if(isset($_SESSION[DOKU_COOKIE]['auth']['info']))
- unset($_SESSION[DOKU_COOKIE]['auth']['info']);
- if(isset($_SERVER['REMOTE_USER']))
- unset($_SERVER['REMOTE_USER']);
- $USERINFO=null; //FIXME
- setcookie(DOKU_COOKIE,'',time()-600000,DOKU_REL);
-
- if($auth && $auth->canDo('logoff')){
- $auth->logOff();
- }
-}
-
-/**
- * Check if a user is a manager
- *
- * Should usually be called without any parameters to check the current
- * user.
- *
- * The info is available through $INFO['ismanager'], too
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see auth_isadmin
- * @param string user - Username
- * @param array groups - List of groups the user is in
- * @param bool adminonly - when true checks if user is admin
- */
-function auth_ismanager($user=null,$groups=null,$adminonly=false){
- global $conf;
- global $USERINFO;
-
- if(!$conf['useacl']) return false;
- if(is_null($user)) $user = $_SERVER['REMOTE_USER'];
- if(is_null($groups)) $groups = (array) $USERINFO['grps'];
- $user = auth_nameencode($user);
-
- // check username against superuser and manager
- $superusers = explode(',', $conf['superuser']);
- $superusers = array_unique($superusers);
- $superusers = array_map('trim', $superusers);
- // prepare an array containing only true values for array_map call
- $alltrue = array_fill(0, count($superusers), true);
- $superusers = array_map('auth_nameencode', $superusers, $alltrue);
- if(in_array($user, $superusers)) return true;
-
- if(!$adminonly){
- $managers = explode(',', $conf['manager']);
- $managers = array_unique($managers);
- $managers = array_map('trim', $managers);
- // prepare an array containing only true values for array_map call
- $alltrue = array_fill(0, count($managers), true);
- $managers = array_map('auth_nameencode', $managers, $alltrue);
- if(in_array($user, $managers)) return true;
- }
-
- // check user's groups against superuser and manager
- if (!empty($groups)) {
-
- //prepend groups with @ and nameencode
- $cnt = count($groups);
- for($i=0; $i<$cnt; $i++){
- $groups[$i] = '@'.auth_nameencode($groups[$i]);
- }
-
- // check groups against superuser and manager
- foreach($superusers as $supu)
- if(in_array($supu, $groups)) return true;
- if(!$adminonly){
- foreach($managers as $mana)
- if(in_array($mana, $groups)) return true;
- }
- }
-
- return false;
-}
-
-/**
- * Check if a user is admin
- *
- * Alias to auth_ismanager with adminonly=true
- *
- * The info is available through $INFO['isadmin'], too
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see auth_ismanager
- */
-function auth_isadmin($user=null,$groups=null){
- return auth_ismanager($user,$groups,true);
-}
-
-/**
- * Convinience function for auth_aclcheck()
- *
- * This checks the permissions for the current user
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @param string $id page ID
- * @return int permission level
- */
-function auth_quickaclcheck($id){
- global $conf;
- global $USERINFO;
- # if no ACL is used always return upload rights
- if(!$conf['useacl']) return AUTH_UPLOAD;
- return auth_aclcheck($id,$_SERVER['REMOTE_USER'],$USERINFO['grps']);
-}
-
-/**
- * Returns the maximum rights a user has for
- * the given ID or its namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @param string $id page ID
- * @param string $user Username
- * @param array $groups Array of groups the user is in
- * @return int permission level
- */
-function auth_aclcheck($id,$user,$groups){
- global $conf;
- global $AUTH_ACL;
-
- // if no ACL is used always return upload rights
- if(!$conf['useacl']) return AUTH_UPLOAD;
-
- //make sure groups is an array
- if(!is_array($groups)) $groups = array();
-
- //if user is superuser or in superusergroup return 255 (acl_admin)
- if(auth_isadmin($user,$groups)) { return AUTH_ADMIN; }
-
- $user = auth_nameencode($user);
-
- //prepend groups with @ and nameencode
- $cnt = count($groups);
- for($i=0; $i<$cnt; $i++){
- $groups[$i] = '@'.auth_nameencode($groups[$i]);
- }
-
- $ns = getNS($id);
- $perm = -1;
-
- if($user){
- //add ALL group
- $groups[] = '@ALL';
- //add User
- $groups[] = $user;
- //build regexp
- $regexp = join('|',$groups);
- }else{
- $regexp = '@ALL';
- }
-
- //check exact match first
- $matches = preg_grep('/^'.preg_quote($id,'/').'\s+('.$regexp.')\s+/',$AUTH_ACL);
- if(count($matches)){
- foreach($matches as $match){
- $match = preg_replace('/#.*$/','',$match); //ignore comments
- $acl = preg_split('/\s+/',$match);
- if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
- if($acl[2] > $perm){
- $perm = $acl[2];
- }
- }
- if($perm > -1){
- //we had a match - return it
- return $perm;
- }
- }
-
- //still here? do the namespace checks
- if($ns){
- $path = $ns.':\*';
- }else{
- $path = '\*'; //root document
- }
-
- do{
- $matches = preg_grep('/^'.$path.'\s+('.$regexp.')\s+/',$AUTH_ACL);
- if(count($matches)){
- foreach($matches as $match){
- $match = preg_replace('/#.*$/','',$match); //ignore comments
- $acl = preg_split('/\s+/',$match);
- if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
- if($acl[2] > $perm){
- $perm = $acl[2];
- }
- }
- //we had a match - return it
- return $perm;
- }
-
- //get next higher namespace
- $ns = getNS($ns);
-
- if($path != '\*'){
- $path = $ns.':\*';
- if($path == ':\*') $path = '\*';
- }else{
- //we did this already
- //looks like there is something wrong with the ACL
- //break here
- msg('No ACL setup yet! Denying access to everyone.');
- return AUTH_NONE;
- }
- }while(1); //this should never loop endless
-
- //still here? return no permissions
- return AUTH_NONE;
-}
-
-/**
- * Encode ASCII special chars
- *
- * Some auth backends allow special chars in their user and groupnames
- * The special chars are encoded with this function. Only ASCII chars
- * are encoded UTF-8 multibyte are left as is (different from usual
- * urlencoding!).
- *
- * Decoding can be done with rawurldecode
- *
- * @author Andreas Gohr <gohr at cosmocode.de>
- * @see rawurldecode()
- */
-function auth_nameencode($name,$skip_group=false){
- global $cache_authname;
- $cache =& $cache_authname;
- $name = (string) $name;
-
- if (!isset($cache[$name][$skip_group])) {
- if($skip_group && $name{0} =='@'){
- $cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
- "'%'.dechex(ord(substr('\\1',-1)))",substr($name,1));
- }else{
- $cache[$name][$skip_group] = preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
- "'%'.dechex(ord(substr('\\1',-1)))",$name);
- }
- }
-
- return $cache[$name][$skip_group];
-}
-
-/**
- * Create a pronouncable password
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @link http://www.phpbuilder.com/annotate/message.php3?id=1014451
- *
- * @return string pronouncable password
- */
-function auth_pwgen(){
- $pw = '';
- $c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones
- $v = 'aeiou'; //vowels
- $a = $c.$v; //both
-
- //use two syllables...
- for($i=0;$i < 2; $i++){
- $pw .= $c[rand(0, strlen($c)-1)];
- $pw .= $v[rand(0, strlen($v)-1)];
- $pw .= $a[rand(0, strlen($a)-1)];
- }
- //... and add a nice number
- $pw .= rand(10,99);
-
- return $pw;
-}
-
-/**
- * Sends a password to the given user
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @return bool true on success
- */
-function auth_sendPassword($user,$password){
- global $conf;
- global $lang;
- global $auth;
-
- $hdrs = '';
- $userinfo = $auth->getUserData($user);
-
- if(!$userinfo['mail']) return false;
-
- $text = rawLocale('password');
- $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
- $text = str_replace('@FULLNAME@',$userinfo['name'],$text);
- $text = str_replace('@LOGIN@',$user,$text);
- $text = str_replace('@PASSWORD@',$password,$text);
- $text = str_replace('@TITLE@',$conf['title'],$text);
-
- return mail_send($userinfo['name'].' <'.$userinfo['mail'].'>',
- $lang['regpwmail'],
- $text,
- $conf['mailfrom']);
-}
-
-/**
- * Register a new user
- *
- * This registers a new user - Data is read directly from $_POST
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @return bool true on success, false on any error
- */
-function register(){
- global $lang;
- global $conf;
- global $auth;
-
- if(!$_POST['save']) return false;
- if(!$auth->canDo('addUser')) return false;
-
- //clean username
- $_POST['login'] = preg_replace('/.*:/','',$_POST['login']);
- $_POST['login'] = cleanID($_POST['login']);
- //clean fullname and email
- $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname']));
- $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email']));
-
- if( empty($_POST['login']) ||
- empty($_POST['fullname']) ||
- empty($_POST['email']) ){
- msg($lang['regmissing'],-1);
- return false;
- }
-
- if ($conf['autopasswd']) {
- $pass = auth_pwgen(); // automatically generate password
- } elseif (empty($_POST['pass']) ||
- empty($_POST['passchk'])) {
- msg($lang['regmissing'], -1); // complain about missing passwords
- return false;
- } elseif ($_POST['pass'] != $_POST['passchk']) {
- msg($lang['regbadpass'], -1); // complain about misspelled passwords
- return false;
- } else {
- $pass = $_POST['pass']; // accept checked and valid password
- }
-
- //check mail
- if(!mail_isvalid($_POST['email'])){
- msg($lang['regbadmail'],-1);
- return false;
- }
-
- //okay try to create the user
- if(!$auth->createUser($_POST['login'],$pass,$_POST['fullname'],$_POST['email'])){
- msg($lang['reguexists'],-1);
- return false;
- }
-
- // create substitutions for use in notification email
- $substitutions = array(
- 'NEWUSER' => $_POST['login'],
- 'NEWNAME' => $_POST['fullname'],
- 'NEWEMAIL' => $_POST['email'],
- );
-
- if (!$conf['autopasswd']) {
- msg($lang['regsuccess2'],1);
- notify('', 'register', '', $_POST['login'], false, $substitutions);
- return true;
- }
-
- // autogenerated password? then send him the password
- if (auth_sendPassword($_POST['login'],$pass)){
- msg($lang['regsuccess'],1);
- notify('', 'register', '', $_POST['login'], false, $substitutions);
- return true;
- }else{
- msg($lang['regmailfail'],-1);
- return false;
- }
-}
-
-/**
- * Update user profile
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-function updateprofile() {
- global $conf;
- global $INFO;
- global $lang;
- global $auth;
-
- if(empty($_POST['save'])) return false;
- if(!checkSecurityToken()) return false;
-
- // should not be able to get here without Profile being possible...
- if(!$auth->canDo('Profile')) {
- msg($lang['profna'],-1);
- return false;
- }
-
- if ($_POST['newpass'] != $_POST['passchk']) {
- msg($lang['regbadpass'], -1); // complain about misspelled passwords
- return false;
- }
-
- //clean fullname and email
- $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname']));
- $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email']));
-
- if (empty($_POST['fullname']) || empty($_POST['email'])) {
- msg($lang['profnoempty'],-1);
- return false;
- }
-
- if (!mail_isvalid($_POST['email'])){
- msg($lang['regbadmail'],-1);
- return false;
- }
-
- if ($_POST['fullname'] != $INFO['userinfo']['name'] && $auth->canDo('modName')) $changes['name'] = $_POST['fullname'];
- if ($_POST['email'] != $INFO['userinfo']['mail'] && $auth->canDo('modMail')) $changes['mail'] = $_POST['email'];
- if (!empty($_POST['newpass']) && $auth->canDo('modPass')) $changes['pass'] = $_POST['newpass'];
-
-
- if (!count($changes)) {
- msg($lang['profnochange'], -1);
- return false;
- }
-
- if ($conf['profileconfirm']) {
- if (!$auth->checkPass($_SERVER['REMOTE_USER'], $_POST['oldpass'])) {
- msg($lang['badlogin'],-1);
- return false;
- }
- }
-
- return $auth->modifyUser($_SERVER['REMOTE_USER'], $changes);
-}
-
-/**
- * Send a new password
- *
- * This function handles both phases of the password reset:
- *
- * - handling the first request of password reset
- * - validating the password reset auth token
- *
- * @author Benoit Chesneau <benoit at bchesneau.info>
- * @author Chris Smith <chris at jalakai.co.uk>
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @return bool true on success, false on any error
-*/
-function act_resendpwd(){
- global $lang;
- global $conf;
- global $auth;
-
- if(!actionOK('resendpwd')) return false;
-
- // should not be able to get here without modPass being possible...
- if(!$auth->canDo('modPass')) {
- msg($lang['resendna'],-1);
- return false;
- }
-
- $token = preg_replace('/[^a-f0-9]+/','',$_REQUEST['pwauth']);
-
- if($token){
- // we're in token phase
-
- $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
- if(!@file_exists($tfile)){
- msg($lang['resendpwdbadauth'],-1);
- return false;
- }
- $user = io_readfile($tfile);
- @unlink($tfile);
- $userinfo = $auth->getUserData($user);
- if(!$userinfo['mail']) {
- msg($lang['resendpwdnouser'], -1);
- return false;
- }
-
- $pass = auth_pwgen();
- if (!$auth->modifyUser($user,array('pass' => $pass))) {
- msg('error modifying user data',-1);
- return false;
- }
-
- if (auth_sendPassword($user,$pass)) {
- msg($lang['resendpwdsuccess'],1);
- } else {
- msg($lang['regmailfail'],-1);
- }
- return true;
-
- } else {
- // we're in request phase
-
- if(!$_POST['save']) return false;
-
- if (empty($_POST['login'])) {
- msg($lang['resendpwdmissing'], -1);
- return false;
- } else {
- $_POST['login'] = preg_replace('/.*:/','',$_POST['login']);
- $user = cleanID($_POST['login']);
- }
-
- $userinfo = $auth->getUserData($user);
- if(!$userinfo['mail']) {
- msg($lang['resendpwdnouser'], -1);
- return false;
- }
-
- // generate auth token
- $token = md5(auth_cookiesalt().$user); //secret but user based
- $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
- $url = wl('',array('do'=>'resendpwd','pwauth'=>$token),true,'&');
-
- io_saveFile($tfile,$user);
-
- $text = rawLocale('pwconfirm');
- $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
- $text = str_replace('@FULLNAME@',$userinfo['name'],$text);
- $text = str_replace('@LOGIN@',$user,$text);
- $text = str_replace('@TITLE@',$conf['title'],$text);
- $text = str_replace('@CONFIRM@',$url,$text);
-
- if(mail_send($userinfo['name'].' <'.$userinfo['mail'].'>',
- $lang['regpwmail'],
- $text,
- $conf['mailfrom'])){
- msg($lang['resendpwdconfirm'],1);
- }else{
- msg($lang['regmailfail'],-1);
- }
- return true;
- }
-
- return false; // never reached
-}
-
-/**
- * Uses a regular expresion to check if a given mail address is valid
- *
- * May not be completly RFC conform!
- *
- * @link http://www.webmasterworld.com/forum88/135.htm
- *
- * @param string $email the address to check
- * @return bool true if address is valid
- */
-function isvalidemail($email){
- return eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email);
-}
-
-/**
- * Encrypts a password using the given method and salt
- *
- * If the selected method needs a salt and none was given, a random one
- * is chosen.
- *
- * The following methods are understood:
- *
- * smd5 - Salted MD5 hashing
- * md5 - Simple MD5 hashing
- * sha1 - SHA1 hashing
- * ssha - Salted SHA1 hashing
- * crypt - Unix crypt
- * mysql - MySQL password (old method)
- * my411 - MySQL 4.1.1 password
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return string The crypted password
- */
-function auth_cryptPassword($clear,$method='',$salt=''){
- global $conf;
- if(empty($method)) $method = $conf['passcrypt'];
-
- //prepare a salt
- if(empty($salt)) $salt = md5(uniqid(rand(), true));
-
- switch(strtolower($method)){
- case 'smd5':
- return crypt($clear,'$1$'.substr($salt,0,8).'$');
- case 'md5':
- return md5($clear);
- case 'sha1':
- return sha1($clear);
- case 'ssha':
- $salt=substr($salt,0,4);
- return '{SSHA}'.base64_encode(pack("H*", sha1($clear.$salt)).$salt);
- case 'crypt':
- return crypt($clear,substr($salt,0,2));
- case 'mysql':
- //from http://www.php.net/mysql comment by <soren at byu dot edu>
- $nr=0x50305735;
- $nr2=0x12345671;
- $add=7;
- $charArr = preg_split("//", $clear);
- foreach ($charArr as $char) {
- if (($char == '') || ($char == ' ') || ($char == '\t')) continue;
- $charVal = ord($char);
- $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
- $nr2 += ($nr2 << 8) ^ $nr;
- $add += $charVal;
- }
- return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
- case 'my411':
- return '*'.sha1(pack("H*", sha1($clear)));
- default:
- msg("Unsupported crypt method $method",-1);
- }
-}
-
-/**
- * Verifies a cleartext password against a crypted hash
- *
- * The method and salt used for the crypted hash is determined automatically
- * then the clear text password is crypted using the same method. If both hashs
- * match true is is returned else false
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool
- */
-function auth_verifyPassword($clear,$crypt){
- $method='';
- $salt='';
-
- //determine the used method and salt
- $len = strlen($crypt);
- if(substr($crypt,0,3) == '$1$'){
- $method = 'smd5';
- $salt = substr($crypt,3,8);
- }elseif(substr($crypt,0,6) == '{SSHA}'){
- $method = 'ssha';
- $salt = substr(base64_decode(substr($crypt, 6)),20);
- }elseif($len == 32){
- $method = 'md5';
- }elseif($len == 40){
- $method = 'sha1';
- }elseif($len == 16){
- $method = 'mysql';
- }elseif($len == 41 && $crypt[0] == '*'){
- $method = 'my411';
- }else{
- $method = 'crypt';
- $salt = substr($crypt,0,2);
- }
-
- //crypt and compare
- if(auth_cryptPassword($clear,$method,$salt) === $crypt){
- return true;
- }
- return false;
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Authentication library
+ *
+ * Including this file will automatically try to login
+ * a user by calling auth_login()
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/io.php');
+
+ // some ACL level defines
+ define('AUTH_NONE',0);
+ define('AUTH_READ',1);
+ define('AUTH_EDIT',2);
+ define('AUTH_CREATE',4);
+ define('AUTH_UPLOAD',8);
+ define('AUTH_DELETE',16);
+ define('AUTH_ADMIN',255);
+
+ global $conf;
+
+ if($conf['useacl']){
+ require_once(DOKU_INC.'inc/blowfish.php');
+ require_once(DOKU_INC.'inc/mail.php');
+
+ global $auth;
+
+ // load the the backend auth functions and instantiate the auth object
+ if (@file_exists(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php')) {
+ require_once(DOKU_INC.'inc/auth/basic.class.php');
+ require_once(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php');
+
+ $auth_class = "auth_".$conf['authtype'];
+ if (class_exists($auth_class)) {
+ $auth = new $auth_class();
+ if ($auth->success == false) {
+ // degrade to unauthenticated user
+ unset($auth);
+ auth_logoff();
+ msg($lang['authtempfail'], -1);
+ }
+ } else {
+ nice_die($lang['authmodfailed']);
+ }
+ } else {
+ nice_die($lang['authmodfailed']);
+ }
+ }
+
+ // do the login either by cookie or provided credentials
+ if($conf['useacl']){
+ if($auth){
+ if (!isset($_REQUEST['u'])) $_REQUEST['u'] = '';
+ if (!isset($_REQUEST['p'])) $_REQUEST['p'] = '';
+ if (!isset($_REQUEST['r'])) $_REQUEST['r'] = '';
+
+ // if no credentials were given try to use HTTP auth (for SSO)
+ if(empty($_REQUEST['u']) && empty($_COOKIE[DOKU_COOKIE]) && !empty($_SERVER['PHP_AUTH_USER'])){
+ $_REQUEST['u'] = $_SERVER['PHP_AUTH_USER'];
+ $_REQUEST['p'] = $_SERVER['PHP_AUTH_PW'];
+ }
+
+ // external trust mechanism in place?
+ if(!is_null($auth) && $auth->canDo('external')){
+ $auth->trustExternal($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);
+ }else{
+ auth_login($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);
+ }
+ }
+
+ //load ACL into a global array
+ global $AUTH_ACL;
+ if(is_readable(DOKU_CONF.'acl.auth.php')){
+ $AUTH_ACL = file(DOKU_CONF.'acl.auth.php');
+ if(isset($_SERVER['REMOTE_USER'])){
+ $AUTH_ACL = str_replace('@USER@',$_SERVER['REMOTE_USER'],$AUTH_ACL);
+ }
+ }else{
+ $AUTH_ACL = array();
+ }
+ }
+
+/**
+ * This tries to login the user based on the sent auth credentials
+ *
+ * The authentication works like this: if a username was given
+ * a new login is assumed and user/password are checked. If they
+ * are correct the password is encrypted with blowfish and stored
+ * together with the username in a cookie - the same info is stored
+ * in the session, too. Additonally a browserID is stored in the
+ * session.
+ *
+ * If no username was given the cookie is checked: if the username,
+ * crypted password and browserID match between session and cookie
+ * no further testing is done and the user is accepted
+ *
+ * If a cookie was found but no session info was availabe the
+ * blowfish encrypted password from the cookie is decrypted and
+ * together with username rechecked by calling this function again.
+ *
+ * On a successful login $_SERVER[REMOTE_USER] and $USERINFO
+ * are set.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @param string $user Username
+ * @param string $pass Cleartext Password
+ * @param bool $sticky Cookie should not expire
+ * @param bool $silent Don't show error on bad auth
+ * @return bool true on successful auth
+*/
+function auth_login($user,$pass,$sticky=false,$silent=false){
+ global $USERINFO;
+ global $conf;
+ global $lang;
+ global $auth;
+ $sticky ? $sticky = true : $sticky = false; //sanity check
+
+ if(!empty($user)){
+ //usual login
+ if ($auth->checkPass($user,$pass)){
+ // make logininfo globally available
+ $_SERVER['REMOTE_USER'] = $user;
+ $USERINFO = $auth->getUserData($user);
+
+ // set cookie
+ $pass = PMA_blowfish_encrypt($pass,auth_cookiesalt());
+ $cookie = base64_encode("$user|$sticky|$pass");
+ if($sticky) $time = time()+60*60*24*365; //one year
+ setcookie(DOKU_COOKIE,$cookie,$time,DOKU_REL);
+
+ // set session
+ $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
+ $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
+ $_SESSION[DOKU_COOKIE]['auth']['buid'] = auth_browseruid();
+ $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
+ $_SESSION[DOKU_COOKIE]['auth']['time'] = time();
+
+ return true;
+ }else{
+ //invalid credentials - log off
+ if(!$silent) msg($lang['badlogin'],-1);
+ auth_logoff();
+ return false;
+ }
+ }else{
+ // read cookie information
+ $cookie = base64_decode($_COOKIE[DOKU_COOKIE]);
+ list($user,$sticky,$pass) = split('\|',$cookie,3);
+ // get session info
+ $session = $_SESSION[DOKU_COOKIE]['auth'];
+ if($user && $pass){
+ // we got a cookie - see if we can trust it
+ if(isset($session) &&
+ $auth->useSessionCache($user) &&
+ ($session['time'] >= time()-$conf['auth_security_timeout']) &&
+ ($session['user'] == $user) &&
+ ($session['pass'] == $pass) && //still crypted
+ ($session['buid'] == auth_browseruid()) ){
+ // he has session, cookie and browser right - let him in
+ $_SERVER['REMOTE_USER'] = $user;
+ $USERINFO = $session['info']; //FIXME move all references to session
+ return true;
+ }
+ // no we don't trust it yet - recheck pass but silent
+ $pass = PMA_blowfish_decrypt($pass,auth_cookiesalt());
+ return auth_login($user,$pass,$sticky,true);
+ }
+ }
+ //just to be sure
+ auth_logoff();
+ return false;
+}
+
+/**
+ * Builds a pseudo UID from browser and IP data
+ *
+ * This is neither unique nor unfakable - still it adds some
+ * security. Using the first part of the IP makes sure
+ * proxy farms like AOLs are stil okay.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @return string a MD5 sum of various browser headers
+ */
+function auth_browseruid(){
+ $uid = '';
+ $uid .= $_SERVER['HTTP_USER_AGENT'];
+ $uid .= $_SERVER['HTTP_ACCEPT_ENCODING'];
+ $uid .= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
+ $uid .= $_SERVER['HTTP_ACCEPT_CHARSET'];
+ $uid .= substr($_SERVER['REMOTE_ADDR'],0,strpos($_SERVER['REMOTE_ADDR'],'.'));
+ return md5($uid);
+}
+
+/**
+ * Creates a random key to encrypt the password in cookies
+ *
+ * This function tries to read the password for encrypting
+ * cookies from $conf['metadir'].'/_htcookiesalt'
+ * if no such file is found a random key is created and
+ * and stored in this file.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @return string
+ */
+function auth_cookiesalt(){
+ global $conf;
+ $file = $conf['metadir'].'/_htcookiesalt';
+ $salt = io_readFile($file);
+ if(empty($salt)){
+ $salt = uniqid(rand(),true);
+ io_saveFile($file,$salt);
+ }
+ return $salt;
+}
+
+/**
+ * This clears all authenticationdata and thus log the user
+ * off
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function auth_logoff(){
+ global $conf;
+ global $USERINFO;
+ global $INFO, $ID;
+ global $auth;
+
+ if(isset($_SESSION[DOKU_COOKIE]['auth']['user']))
+ unset($_SESSION[DOKU_COOKIE]['auth']['user']);
+ if(isset($_SESSION[DOKU_COOKIE]['auth']['pass']))
+ unset($_SESSION[DOKU_COOKIE]['auth']['pass']);
+ if(isset($_SESSION[DOKU_COOKIE]['auth']['info']))
+ unset($_SESSION[DOKU_COOKIE]['auth']['info']);
+ if(isset($_SERVER['REMOTE_USER']))
+ unset($_SERVER['REMOTE_USER']);
+ $USERINFO=null; //FIXME
+ setcookie(DOKU_COOKIE,'',time()-600000,DOKU_REL);
+
+ if($auth && $auth->canDo('logoff')){
+ $auth->logOff();
+ }
+}
+
+/**
+ * Check if a user is a manager
+ *
+ * Should usually be called without any parameters to check the current
+ * user.
+ *
+ * The info is available through $INFO['ismanager'], too
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see auth_isadmin
+ * @param string user - Username
+ * @param array groups - List of groups the user is in
+ * @param bool adminonly - when true checks if user is admin
+ */
+function auth_ismanager($user=null,$groups=null,$adminonly=false){
+ global $conf;
+ global $USERINFO;
+
+ if(!$conf['useacl']) return false;
+ if(is_null($user)) $user = $_SERVER['REMOTE_USER'];
+ if(is_null($groups)) $groups = (array) $USERINFO['grps'];
+ $user = auth_nameencode($user);
+
+ // check username against superuser and manager
+ $superusers = explode(',', $conf['superuser']);
+ $superusers = array_unique($superusers);
+ $superusers = array_map('trim', $superusers);
+ // prepare an array containing only true values for array_map call
+ $alltrue = array_fill(0, count($superusers), true);
+ $superusers = array_map('auth_nameencode', $superusers, $alltrue);
+ if(in_array($user, $superusers)) return true;
+
+ if(!$adminonly){
+ $managers = explode(',', $conf['manager']);
+ $managers = array_unique($managers);
+ $managers = array_map('trim', $managers);
+ // prepare an array containing only true values for array_map call
+ $alltrue = array_fill(0, count($managers), true);
+ $managers = array_map('auth_nameencode', $managers, $alltrue);
+ if(in_array($user, $managers)) return true;
+ }
+
+ // check user's groups against superuser and manager
+ if (!empty($groups)) {
+
+ //prepend groups with @ and nameencode
+ $cnt = count($groups);
+ for($i=0; $i<$cnt; $i++){
+ $groups[$i] = '@'.auth_nameencode($groups[$i]);
+ }
+
+ // check groups against superuser and manager
+ foreach($superusers as $supu)
+ if(in_array($supu, $groups)) return true;
+ if(!$adminonly){
+ foreach($managers as $mana)
+ if(in_array($mana, $groups)) return true;
+ }
+ }
+
+ return false;
+}
+
+/**
+ * Check if a user is admin
+ *
+ * Alias to auth_ismanager with adminonly=true
+ *
+ * The info is available through $INFO['isadmin'], too
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see auth_ismanager
+ */
+function auth_isadmin($user=null,$groups=null){
+ return auth_ismanager($user,$groups,true);
+}
+
+/**
+ * Convinience function for auth_aclcheck()
+ *
+ * This checks the permissions for the current user
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @param string $id page ID
+ * @return int permission level
+ */
+function auth_quickaclcheck($id){
+ global $conf;
+ global $USERINFO;
+ # if no ACL is used always return upload rights
+ if(!$conf['useacl']) return AUTH_UPLOAD;
+ return auth_aclcheck($id,$_SERVER['REMOTE_USER'],$USERINFO['grps']);
+}
+
+/**
+ * Returns the maximum rights a user has for
+ * the given ID or its namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @param string $id page ID
+ * @param string $user Username
+ * @param array $groups Array of groups the user is in
+ * @return int permission level
+ */
+function auth_aclcheck($id,$user,$groups){
+ global $conf;
+ global $AUTH_ACL;
+
+ // if no ACL is used always return upload rights
+ if(!$conf['useacl']) return AUTH_UPLOAD;
+
+ //make sure groups is an array
+ if(!is_array($groups)) $groups = array();
+
+ //if user is superuser or in superusergroup return 255 (acl_admin)
+ if(auth_isadmin($user,$groups)) { return AUTH_ADMIN; }
+
+ $user = auth_nameencode($user);
+
+ //prepend groups with @ and nameencode
+ $cnt = count($groups);
+ for($i=0; $i<$cnt; $i++){
+ $groups[$i] = '@'.auth_nameencode($groups[$i]);
+ }
+
+ $ns = getNS($id);
+ $perm = -1;
+
+ if($user){
+ //add ALL group
+ $groups[] = '@ALL';
+ //add User
+ $groups[] = $user;
+ //build regexp
+ $regexp = join('|',$groups);
+ }else{
+ $regexp = '@ALL';
+ }
+
+ //check exact match first
+ $matches = preg_grep('/^'.preg_quote($id,'/').'\s+('.$regexp.')\s+/',$AUTH_ACL);
+ if(count($matches)){
+ foreach($matches as $match){
+ $match = preg_replace('/#.*$/','',$match); //ignore comments
+ $acl = preg_split('/\s+/',$match);
+ if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
+ if($acl[2] > $perm){
+ $perm = $acl[2];
+ }
+ }
+ if($perm > -1){
+ //we had a match - return it
+ return $perm;
+ }
+ }
+
+ //still here? do the namespace checks
+ if($ns){
+ $path = $ns.':\*';
+ }else{
+ $path = '\*'; //root document
+ }
+
+ do{
+ $matches = preg_grep('/^'.$path.'\s+('.$regexp.')\s+/',$AUTH_ACL);
+ if(count($matches)){
+ foreach($matches as $match){
+ $match = preg_replace('/#.*$/','',$match); //ignore comments
+ $acl = preg_split('/\s+/',$match);
+ if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
+ if($acl[2] > $perm){
+ $perm = $acl[2];
+ }
+ }
+ //we had a match - return it
+ return $perm;
+ }
+
+ //get next higher namespace
+ $ns = getNS($ns);
+
+ if($path != '\*'){
+ $path = $ns.':\*';
+ if($path == ':\*') $path = '\*';
+ }else{
+ //we did this already
+ //looks like there is something wrong with the ACL
+ //break here
+ msg('No ACL setup yet! Denying access to everyone.');
+ return AUTH_NONE;
+ }
+ }while(1); //this should never loop endless
+
+ //still here? return no permissions
+ return AUTH_NONE;
+}
+
+/**
+ * Encode ASCII special chars
+ *
+ * Some auth backends allow special chars in their user and groupnames
+ * The special chars are encoded with this function. Only ASCII chars
+ * are encoded UTF-8 multibyte are left as is (different from usual
+ * urlencoding!).
+ *
+ * Decoding can be done with rawurldecode
+ *
+ * @author Andreas Gohr <gohr at cosmocode.de>
+ * @see rawurldecode()
+ */
+function auth_nameencode($name,$skip_group=false){
+ global $cache_authname;
+ $cache =& $cache_authname;
+ $name = (string) $name;
+
+ if (!isset($cache[$name][$skip_group])) {
+ if($skip_group && $name{0} =='@'){
+ $cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
+ "'%'.dechex(ord(substr('\\1',-1)))",substr($name,1));
+ }else{
+ $cache[$name][$skip_group] = preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
+ "'%'.dechex(ord(substr('\\1',-1)))",$name);
+ }
+ }
+
+ return $cache[$name][$skip_group];
+}
+
+/**
+ * Create a pronouncable password
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @link http://www.phpbuilder.com/annotate/message.php3?id=1014451
+ *
+ * @return string pronouncable password
+ */
+function auth_pwgen(){
+ $pw = '';
+ $c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones
+ $v = 'aeiou'; //vowels
+ $a = $c.$v; //both
+
+ //use two syllables...
+ for($i=0;$i < 2; $i++){
+ $pw .= $c[rand(0, strlen($c)-1)];
+ $pw .= $v[rand(0, strlen($v)-1)];
+ $pw .= $a[rand(0, strlen($a)-1)];
+ }
+ //... and add a nice number
+ $pw .= rand(10,99);
+
+ return $pw;
+}
+
+/**
+ * Sends a password to the given user
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @return bool true on success
+ */
+function auth_sendPassword($user,$password){
+ global $conf;
+ global $lang;
+ global $auth;
+
+ $hdrs = '';
+ $userinfo = $auth->getUserData($user);
+
+ if(!$userinfo['mail']) return false;
+
+ $text = rawLocale('password');
+ $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
+ $text = str_replace('@FULLNAME@',$userinfo['name'],$text);
+ $text = str_replace('@LOGIN@',$user,$text);
+ $text = str_replace('@PASSWORD@',$password,$text);
+ $text = str_replace('@TITLE@',$conf['title'],$text);
+
+ return mail_send($userinfo['name'].' <'.$userinfo['mail'].'>',
+ $lang['regpwmail'],
+ $text,
+ $conf['mailfrom']);
+}
+
+/**
+ * Register a new user
+ *
+ * This registers a new user - Data is read directly from $_POST
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @return bool true on success, false on any error
+ */
+function register(){
+ global $lang;
+ global $conf;
+ global $auth;
+
+ if(!$_POST['save']) return false;
+ if(!$auth->canDo('addUser')) return false;
+
+ //clean username
+ $_POST['login'] = preg_replace('/.*:/','',$_POST['login']);
+ $_POST['login'] = cleanID($_POST['login']);
+ //clean fullname and email
+ $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname']));
+ $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email']));
+
+ if( empty($_POST['login']) ||
+ empty($_POST['fullname']) ||
+ empty($_POST['email']) ){
+ msg($lang['regmissing'],-1);
+ return false;
+ }
+
+ if ($conf['autopasswd']) {
+ $pass = auth_pwgen(); // automatically generate password
+ } elseif (empty($_POST['pass']) ||
+ empty($_POST['passchk'])) {
+ msg($lang['regmissing'], -1); // complain about missing passwords
+ return false;
+ } elseif ($_POST['pass'] != $_POST['passchk']) {
+ msg($lang['regbadpass'], -1); // complain about misspelled passwords
+ return false;
+ } else {
+ $pass = $_POST['pass']; // accept checked and valid password
+ }
+
+ //check mail
+ if(!mail_isvalid($_POST['email'])){
+ msg($lang['regbadmail'],-1);
+ return false;
+ }
+
+ //okay try to create the user
+ if(!$auth->createUser($_POST['login'],$pass,$_POST['fullname'],$_POST['email'])){
+ msg($lang['reguexists'],-1);
+ return false;
+ }
+
+ // create substitutions for use in notification email
+ $substitutions = array(
+ 'NEWUSER' => $_POST['login'],
+ 'NEWNAME' => $_POST['fullname'],
+ 'NEWEMAIL' => $_POST['email'],
+ );
+
+ if (!$conf['autopasswd']) {
+ msg($lang['regsuccess2'],1);
+ notify('', 'register', '', $_POST['login'], false, $substitutions);
+ return true;
+ }
+
+ // autogenerated password? then send him the password
+ if (auth_sendPassword($_POST['login'],$pass)){
+ msg($lang['regsuccess'],1);
+ notify('', 'register', '', $_POST['login'], false, $substitutions);
+ return true;
+ }else{
+ msg($lang['regmailfail'],-1);
+ return false;
+ }
+}
+
+/**
+ * Update user profile
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+function updateprofile() {
+ global $conf;
+ global $INFO;
+ global $lang;
+ global $auth;
+
+ if(empty($_POST['save'])) return false;
+ if(!checkSecurityToken()) return false;
+
+ // should not be able to get here without Profile being possible...
+ if(!$auth->canDo('Profile')) {
+ msg($lang['profna'],-1);
+ return false;
+ }
+
+ if ($_POST['newpass'] != $_POST['passchk']) {
+ msg($lang['regbadpass'], -1); // complain about misspelled passwords
+ return false;
+ }
+
+ //clean fullname and email
+ $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname']));
+ $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email']));
+
+ if (empty($_POST['fullname']) || empty($_POST['email'])) {
+ msg($lang['profnoempty'],-1);
+ return false;
+ }
+
+ if (!mail_isvalid($_POST['email'])){
+ msg($lang['regbadmail'],-1);
+ return false;
+ }
+
+ if ($_POST['fullname'] != $INFO['userinfo']['name'] && $auth->canDo('modName')) $changes['name'] = $_POST['fullname'];
+ if ($_POST['email'] != $INFO['userinfo']['mail'] && $auth->canDo('modMail')) $changes['mail'] = $_POST['email'];
+ if (!empty($_POST['newpass']) && $auth->canDo('modPass')) $changes['pass'] = $_POST['newpass'];
+
+
+ if (!count($changes)) {
+ msg($lang['profnochange'], -1);
+ return false;
+ }
+
+ if ($conf['profileconfirm']) {
+ if (!$auth->checkPass($_SERVER['REMOTE_USER'], $_POST['oldpass'])) {
+ msg($lang['badlogin'],-1);
+ return false;
+ }
+ }
+
+ return $auth->modifyUser($_SERVER['REMOTE_USER'], $changes);
+}
+
+/**
+ * Send a new password
+ *
+ * This function handles both phases of the password reset:
+ *
+ * - handling the first request of password reset
+ * - validating the password reset auth token
+ *
+ * @author Benoit Chesneau <benoit at bchesneau.info>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @return bool true on success, false on any error
+*/
+function act_resendpwd(){
+ global $lang;
+ global $conf;
+ global $auth;
+
+ if(!actionOK('resendpwd')) return false;
+
+ // should not be able to get here without modPass being possible...
+ if(!$auth->canDo('modPass')) {
+ msg($lang['resendna'],-1);
+ return false;
+ }
+
+ $token = preg_replace('/[^a-f0-9]+/','',$_REQUEST['pwauth']);
+
+ if($token){
+ // we're in token phase
+
+ $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
+ if(!@file_exists($tfile)){
+ msg($lang['resendpwdbadauth'],-1);
+ return false;
+ }
+ $user = io_readfile($tfile);
+ @unlink($tfile);
+ $userinfo = $auth->getUserData($user);
+ if(!$userinfo['mail']) {
+ msg($lang['resendpwdnouser'], -1);
+ return false;
+ }
+
+ $pass = auth_pwgen();
+ if (!$auth->modifyUser($user,array('pass' => $pass))) {
+ msg('error modifying user data',-1);
+ return false;
+ }
+
+ if (auth_sendPassword($user,$pass)) {
+ msg($lang['resendpwdsuccess'],1);
+ } else {
+ msg($lang['regmailfail'],-1);
+ }
+ return true;
+
+ } else {
+ // we're in request phase
+
+ if(!$_POST['save']) return false;
+
+ if (empty($_POST['login'])) {
+ msg($lang['resendpwdmissing'], -1);
+ return false;
+ } else {
+ $_POST['login'] = preg_replace('/.*:/','',$_POST['login']);
+ $user = cleanID($_POST['login']);
+ }
+
+ $userinfo = $auth->getUserData($user);
+ if(!$userinfo['mail']) {
+ msg($lang['resendpwdnouser'], -1);
+ return false;
+ }
+
+ // generate auth token
+ $token = md5(auth_cookiesalt().$user); //secret but user based
+ $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
+ $url = wl('',array('do'=>'resendpwd','pwauth'=>$token),true,'&');
+
+ io_saveFile($tfile,$user);
+
+ $text = rawLocale('pwconfirm');
+ $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
+ $text = str_replace('@FULLNAME@',$userinfo['name'],$text);
+ $text = str_replace('@LOGIN@',$user,$text);
+ $text = str_replace('@TITLE@',$conf['title'],$text);
+ $text = str_replace('@CONFIRM@',$url,$text);
+
+ if(mail_send($userinfo['name'].' <'.$userinfo['mail'].'>',
+ $lang['regpwmail'],
+ $text,
+ $conf['mailfrom'])){
+ msg($lang['resendpwdconfirm'],1);
+ }else{
+ msg($lang['regmailfail'],-1);
+ }
+ return true;
+ }
+
+ return false; // never reached
+}
+
+/**
+ * Uses a regular expresion to check if a given mail address is valid
+ *
+ * May not be completly RFC conform!
+ *
+ * @link http://www.webmasterworld.com/forum88/135.htm
+ *
+ * @param string $email the address to check
+ * @return bool true if address is valid
+ */
+function isvalidemail($email){
+ return eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email);
+}
+
+/**
+ * Encrypts a password using the given method and salt
+ *
+ * If the selected method needs a salt and none was given, a random one
+ * is chosen.
+ *
+ * The following methods are understood:
+ *
+ * smd5 - Salted MD5 hashing
+ * md5 - Simple MD5 hashing
+ * sha1 - SHA1 hashing
+ * ssha - Salted SHA1 hashing
+ * crypt - Unix crypt
+ * mysql - MySQL password (old method)
+ * my411 - MySQL 4.1.1 password
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return string The crypted password
+ */
+function auth_cryptPassword($clear,$method='',$salt=''){
+ global $conf;
+ if(empty($method)) $method = $conf['passcrypt'];
+
+ //prepare a salt
+ if(empty($salt)) $salt = md5(uniqid(rand(), true));
+
+ switch(strtolower($method)){
+ case 'smd5':
+ return crypt($clear,'$1$'.substr($salt,0,8).'$');
+ case 'md5':
+ return md5($clear);
+ case 'sha1':
+ return sha1($clear);
+ case 'ssha':
+ $salt=substr($salt,0,4);
+ return '{SSHA}'.base64_encode(pack("H*", sha1($clear.$salt)).$salt);
+ case 'crypt':
+ return crypt($clear,substr($salt,0,2));
+ case 'mysql':
+ //from http://www.php.net/mysql comment by <soren at byu dot edu>
+ $nr=0x50305735;
+ $nr2=0x12345671;
+ $add=7;
+ $charArr = preg_split("//", $clear);
+ foreach ($charArr as $char) {
+ if (($char == '') || ($char == ' ') || ($char == '\t')) continue;
+ $charVal = ord($char);
+ $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
+ $nr2 += ($nr2 << 8) ^ $nr;
+ $add += $charVal;
+ }
+ return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
+ case 'my411':
+ return '*'.sha1(pack("H*", sha1($clear)));
+ default:
+ msg("Unsupported crypt method $method",-1);
+ }
+}
+
+/**
+ * Verifies a cleartext password against a crypted hash
+ *
+ * The method and salt used for the crypted hash is determined automatically
+ * then the clear text password is crypted using the same method. If both hashs
+ * match true is is returned else false
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool
+ */
+function auth_verifyPassword($clear,$crypt){
+ $method='';
+ $salt='';
+
+ //determine the used method and salt
+ $len = strlen($crypt);
+ if(substr($crypt,0,3) == '$1$'){
+ $method = 'smd5';
+ $salt = substr($crypt,3,8);
+ }elseif(substr($crypt,0,6) == '{SSHA}'){
+ $method = 'ssha';
+ $salt = substr(base64_decode(substr($crypt, 6)),20);
+ }elseif($len == 32){
+ $method = 'md5';
+ }elseif($len == 40){
+ $method = 'sha1';
+ }elseif($len == 16){
+ $method = 'mysql';
+ }elseif($len == 41 && $crypt[0] == '*'){
+ $method = 'my411';
+ }else{
+ $method = 'crypt';
+ $salt = substr($crypt,0,2);
+ }
+
+ //crypt and compare
+ if(auth_cryptPassword($clear,$method,$salt) === $crypt){
+ return true;
+ }
+ return false;
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/blowfish.php
===================================================================
--- site/trunk/www-root/wiki/inc/blowfish.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/blowfish.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,567 +1,567 @@
-<?php
-
-/* $Id: blowfish.php,v 2.4 2004/12/16 18:26:43 lem9 Exp $ */
-// vim: expandtab sw=4 ts=4 sts=4:
-
-/**
- * The Cipher_blowfish:: class implements the Cipher interface enryption data
- * using the Blowfish algorithm.
- *
- * $Horde: horde/lib/Cipher/blowfish.php,v 1.2.2.3 2003/01/03 13:23:22 jan Exp $
- *
- * Copyright 2002-2003 Mike Cochrane <mike at graftonhall.co.nz>
- *
- * See the enclosed file COPYING for license information (LGPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
- *
- * @author Mike Cochrane <mike at graftonhall.co.nz>
- * @version $Revision: 2.4 $
- * @since Horde 2.2
- * @package horde.cipher
- */
-
-// Change for phpMyAdmin by lem9:
-//class Horde_Cipher_blowfish extends Horde_Cipher {
-class Horde_Cipher_blowfish {
-
- /* Pi Array */
- var $p = array(
- 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,
- 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,
- 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
- 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,
- 0x9216D5D9, 0x8979FB1B);
-
- /* S Boxes */
- var $s1 = array(
- 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
- 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
- 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
- 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
- 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
- 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
- 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
- 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
- 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
- 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
- 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
- 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
- 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
- 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
- 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
- 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
- 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
- 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
- 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
- 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
- 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
- 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
- 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
- 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
- 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
- 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
- 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
- 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
- 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
- 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
- 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
- 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
- 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
- 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
- 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
- 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
- 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
- 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
- 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
- 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
- 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
- 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
- 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
- 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
- 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
- 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
- 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
- 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
- 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
- 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
- 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
- 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
- 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
- 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
- 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
- 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
- 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
- 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
- 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
- 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
- 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
- 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
- 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
- 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A);
- var $s2 = array(
- 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
- 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
- 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
- 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
- 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
- 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
- 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
- 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
- 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
- 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
- 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
- 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
- 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
- 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
- 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
- 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
- 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
- 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
- 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
- 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
- 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
- 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
- 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
- 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
- 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
- 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
- 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
- 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
- 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
- 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
- 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
- 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
- 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
- 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
- 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
- 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
- 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
- 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
- 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
- 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
- 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
- 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
- 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
- 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
- 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
- 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
- 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
- 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
- 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
- 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
- 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
- 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
- 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
- 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
- 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
- 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
- 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
- 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
- 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
- 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
- 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
- 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
- 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
- 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7);
- var $s3 = array(
- 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
- 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
- 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
- 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
- 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
- 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
- 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
- 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
- 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
- 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
- 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
- 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
- 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
- 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
- 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
- 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
- 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
- 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
- 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
- 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
- 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
- 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
- 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
- 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
- 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
- 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
- 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
- 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
- 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
- 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
- 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
- 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
- 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
- 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
- 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
- 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
- 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
- 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
- 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
- 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
- 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
- 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
- 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
- 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
- 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
- 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
- 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
- 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
- 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
- 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
- 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
- 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
- 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
- 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
- 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
- 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
- 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
- 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
- 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
- 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
- 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
- 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
- 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
- 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0);
- var $s4 = array(
- 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
- 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
- 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
- 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
- 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
- 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
- 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
- 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
- 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
- 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
- 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
- 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
- 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
- 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
- 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
- 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
- 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
- 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
- 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
- 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
- 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
- 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
- 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
- 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
- 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
- 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
- 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
- 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
- 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
- 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
- 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
- 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
- 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
- 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
- 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
- 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
- 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
- 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
- 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
- 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
- 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
- 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
- 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
- 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
- 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
- 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
- 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
- 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
- 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
- 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
- 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
- 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
- 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
- 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
- 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
- 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
- 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
- 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
- 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
- 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
- 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
- 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
- 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
- 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6);
-
- /* The number of rounds to do */
- var $_rounds = 16;
-
- /* Constructor */
- function Cipher_blowfish($params = null)
- {
- }
-
- /**
- * Set the key to be used for en/decryption
- *
- * @param String $key The key to use
- */
- function setKey($key)
- {
- $key = $this->_formatKey($key);
- $keyPos = $keyXor = 0;
-
- $iMax = count($this->p);
- $keyLen = count($key);
- for ($i = 0; $i < $iMax; $i++) {
- for ($t = 0; $t < 4; $t++) {
- $keyXor = ($keyXor << 8) | (($key[$keyPos]) & 0x0ff);
- if (++$keyPos == $keyLen) {
- $keyPos = 0;
- }
- }
- $this->p[$i] = $this->p[$i] ^ $keyXor;
- }
-
- $encZero = array('L' => 0, 'R' => 0);
- for ($i = 0; $i + 1 < $iMax; $i += 2) {
- $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
- $this->p[$i] = $encZero['L'];
- $this->p[$i + 1] = $encZero['R'];
- }
-
- $iMax = count($this->s1);
- for ($i = 0; $i < $iMax; $i += 2) {
- $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
- $this->s1[$i] = $encZero['L'];
- $this->s1[$i + 1] = $encZero['R'];
- }
-
- $iMax = count($this->s2);
- for ($i = 0; $i < $iMax; $i += 2) {
- $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
- $this->s2[$i] = $encZero['L'];
- $this->s2[$i + 1] = $encZero['R'];
- }
-
- $iMax = count($this->s3);
- for ($i = 0; $i < $iMax; $i += 2) {
- $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
- $this->s3[$i] = $encZero['L'];
- $this->s3[$i + 1] = $encZero['R'];
- }
-
- $iMax = count($this->s4);
- for ($i = 0; $i < $iMax; $i += 2) {
- $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
- $this->s4[$i] = $encZero['L'];
- $this->s4[$i + 1] = $encZero['R'];
- }
-
- }
-
- /**
- * Return the size of the blocks that this cipher needs
- *
- * @return Integer The number of characters per block
- */
- function getBlockSize()
- {
- return 8;
- }
-
- /**
- * Encrypt a block on data.
- *
- * @param String $block The data to encrypt
- * @param optional String $key The key to use
- *
- * @return String the encrypted output
- */
- function encryptBlock($block, $key = null)
- {
- if (!is_null($key)) {
- $this->setKey($key);
- }
-
- list($L, $R) = array_values(unpack('N*', $block));
- $parts = $this->_encryptBlock($L, $R);
- return pack("NN", $parts['L'], $parts['R']);
- }
-
- /**
- * Encrypt a block on data.
- *
- * @param String $L The data to encrypt.
- * @param String $R The data to encrypt.
- *
- * @return String The encrypted output.
- */
- function _encryptBlock($L, $R)
- {
- $L ^= $this->p[0];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[1];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[2];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[3];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[4];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[5];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[6];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[7];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[8];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[9];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[10];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[11];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[12];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[13];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[14];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[15];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[16];
- $R ^= $this->p[17];
-
- return array('L' => $R, 'R' => $L);
- }
-
- /**
- * Decrypt a block on data.
- *
- * @param String $block The data to decrypt
- * @param optional String $key The key to use
- *
- * @return String the decrypted output
- */
- function decryptBlock($block, $key = null)
- {
- if (!is_null($key)) {
- $this->setKey($key);
- }
-
-// change for phpMyAdmin
- $L = null;
- $R = null;
-
- $retarray = array_values(unpack('N*', $block));
- if(isset($retarray[0])) {
- $L = $retarray[0];
- }
- if(isset($retarray[1])) {
- $R = $retarray[1];
- }
-// end change for phpMyAdmin
-
- $L ^= $this->p[17];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[16];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[15];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[14];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[13];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[12];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[11];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[10];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[9];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[8];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[7];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[6];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[5];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[4];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[3];
- $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[2];
- $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[1];
-
- $decrypted = pack("NN", $R ^ $this->p[0], $L);
- return $decrypted;
- }
-
- /**
- * Converts a text key into an array.
- *
- * @return array The key.
- */
- function _formatKey($key)
- {
- return array_values(unpack('C*', $key));
- }
-
-}
-
-// higher-level functions:
-
-/**
- * String padding
- *
- * @param string input string
- * @param integer length of the result
- * @param string the filling string
- * @param integer padding mode
- *
- * @return string the padded string
- *
- * @access public
- */
-function full_str_pad($input, $pad_length, $pad_string = '', $pad_type = 0) {
- $str = '';
- $length = $pad_length - strlen($input);
- if ($length > 0) { // str_repeat doesn't like negatives
- if ($pad_type == STR_PAD_RIGHT) { // STR_PAD_RIGHT == 1
- $str = $input.str_repeat($pad_string, $length);
- } elseif ($pad_type == STR_PAD_BOTH) { // STR_PAD_BOTH == 2
- $str = str_repeat($pad_string, floor($length/2));
- $str .= $input;
- $str .= str_repeat($pad_string, ceil($length/2));
- } else { // defaults to STR_PAD_LEFT == 0
- $str = str_repeat($pad_string, $length).$input;
- }
- } else { // if $length is negative or zero we don't need to do anything
- $str = $input;
- }
- return $str;
-}
-
-/**
- * Encryption using blowfish algorithm
- *
- * @param string original data
- * @param string the secret
- *
- * @return string the encrypted result
- *
- * @access public
- *
- * @author lem9
- */
-function PMA_blowfish_encrypt($data, $secret) {
- $pma_cipher = new Horde_Cipher_blowfish;
- $encrypt = '';
- for ($i=0; $i<strlen($data); $i+=8) {
- $block = substr($data, $i, 8);
- if (strlen($block) < 8) {
- $block = full_str_pad($block,8,"\0", 1);
- }
- $encrypt .= $pma_cipher->encryptBlock($block, $secret);
- }
- return base64_encode($encrypt);
-}
-
-/**
- * Decryption using blowfish algorithm
- *
- * @param string encrypted data
- * @param string the secret
- *
- * @return string original data
- *
- * @access public
- *
- * @author lem9
- */
-function PMA_blowfish_decrypt($encdata, $secret) {
- $pma_cipher = new Horde_Cipher_blowfish;
- $decrypt = '';
- $data = base64_decode($encdata);
- for ($i=0; $i<strlen($data); $i+=8) {
- $decrypt .= $pma_cipher->decryptBlock(substr($data, $i, 8), $secret);
- }
- return trim($decrypt);
-}
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+
+/* $Id: blowfish.php,v 2.4 2004/12/16 18:26:43 lem9 Exp $ */
+// vim: expandtab sw=4 ts=4 sts=4:
+
+/**
+ * The Cipher_blowfish:: class implements the Cipher interface enryption data
+ * using the Blowfish algorithm.
+ *
+ * $Horde: horde/lib/Cipher/blowfish.php,v 1.2.2.3 2003/01/03 13:23:22 jan Exp $
+ *
+ * Copyright 2002-2003 Mike Cochrane <mike at graftonhall.co.nz>
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @author Mike Cochrane <mike at graftonhall.co.nz>
+ * @version $Revision: 2.4 $
+ * @since Horde 2.2
+ * @package horde.cipher
+ */
+
+// Change for phpMyAdmin by lem9:
+//class Horde_Cipher_blowfish extends Horde_Cipher {
+class Horde_Cipher_blowfish {
+
+ /* Pi Array */
+ var $p = array(
+ 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,
+ 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,
+ 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
+ 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,
+ 0x9216D5D9, 0x8979FB1B);
+
+ /* S Boxes */
+ var $s1 = array(
+ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
+ 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
+ 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
+ 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
+ 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
+ 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
+ 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
+ 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
+ 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
+ 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
+ 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
+ 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
+ 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
+ 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
+ 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
+ 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
+ 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
+ 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
+ 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
+ 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
+ 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
+ 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
+ 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
+ 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
+ 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
+ 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
+ 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
+ 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
+ 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
+ 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
+ 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
+ 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
+ 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
+ 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
+ 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
+ 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
+ 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
+ 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
+ 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
+ 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
+ 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
+ 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
+ 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
+ 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
+ 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
+ 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
+ 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
+ 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
+ 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
+ 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
+ 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
+ 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
+ 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
+ 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
+ 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
+ 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
+ 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
+ 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
+ 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
+ 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
+ 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
+ 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
+ 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
+ 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A);
+ var $s2 = array(
+ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
+ 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
+ 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
+ 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
+ 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
+ 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
+ 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
+ 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
+ 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
+ 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
+ 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
+ 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
+ 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
+ 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
+ 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
+ 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
+ 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
+ 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
+ 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
+ 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
+ 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
+ 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
+ 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
+ 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
+ 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
+ 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
+ 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
+ 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
+ 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
+ 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
+ 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
+ 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
+ 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
+ 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
+ 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
+ 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
+ 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
+ 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
+ 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
+ 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
+ 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
+ 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
+ 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
+ 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
+ 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
+ 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
+ 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
+ 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
+ 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
+ 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
+ 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
+ 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
+ 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
+ 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
+ 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
+ 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
+ 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
+ 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
+ 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
+ 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
+ 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
+ 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
+ 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
+ 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7);
+ var $s3 = array(
+ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
+ 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
+ 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
+ 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
+ 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
+ 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
+ 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
+ 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
+ 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
+ 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
+ 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
+ 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
+ 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
+ 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
+ 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
+ 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
+ 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
+ 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
+ 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
+ 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
+ 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
+ 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
+ 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
+ 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
+ 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
+ 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
+ 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
+ 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
+ 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
+ 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
+ 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
+ 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
+ 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
+ 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
+ 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
+ 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
+ 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
+ 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
+ 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
+ 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
+ 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
+ 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
+ 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
+ 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
+ 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
+ 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
+ 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
+ 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
+ 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
+ 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
+ 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
+ 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
+ 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
+ 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
+ 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
+ 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
+ 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
+ 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
+ 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
+ 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
+ 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
+ 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
+ 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
+ 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0);
+ var $s4 = array(
+ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
+ 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
+ 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
+ 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
+ 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
+ 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
+ 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
+ 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
+ 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
+ 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
+ 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
+ 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
+ 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
+ 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
+ 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
+ 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
+ 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
+ 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
+ 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
+ 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
+ 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
+ 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
+ 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
+ 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
+ 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
+ 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
+ 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
+ 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
+ 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
+ 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
+ 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
+ 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
+ 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
+ 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
+ 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
+ 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
+ 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
+ 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
+ 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
+ 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
+ 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
+ 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
+ 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
+ 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
+ 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
+ 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
+ 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
+ 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
+ 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
+ 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
+ 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
+ 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
+ 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
+ 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
+ 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
+ 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
+ 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
+ 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
+ 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
+ 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
+ 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
+ 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
+ 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
+ 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6);
+
+ /* The number of rounds to do */
+ var $_rounds = 16;
+
+ /* Constructor */
+ function Cipher_blowfish($params = null)
+ {
+ }
+
+ /**
+ * Set the key to be used for en/decryption
+ *
+ * @param String $key The key to use
+ */
+ function setKey($key)
+ {
+ $key = $this->_formatKey($key);
+ $keyPos = $keyXor = 0;
+
+ $iMax = count($this->p);
+ $keyLen = count($key);
+ for ($i = 0; $i < $iMax; $i++) {
+ for ($t = 0; $t < 4; $t++) {
+ $keyXor = ($keyXor << 8) | (($key[$keyPos]) & 0x0ff);
+ if (++$keyPos == $keyLen) {
+ $keyPos = 0;
+ }
+ }
+ $this->p[$i] = $this->p[$i] ^ $keyXor;
+ }
+
+ $encZero = array('L' => 0, 'R' => 0);
+ for ($i = 0; $i + 1 < $iMax; $i += 2) {
+ $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
+ $this->p[$i] = $encZero['L'];
+ $this->p[$i + 1] = $encZero['R'];
+ }
+
+ $iMax = count($this->s1);
+ for ($i = 0; $i < $iMax; $i += 2) {
+ $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
+ $this->s1[$i] = $encZero['L'];
+ $this->s1[$i + 1] = $encZero['R'];
+ }
+
+ $iMax = count($this->s2);
+ for ($i = 0; $i < $iMax; $i += 2) {
+ $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
+ $this->s2[$i] = $encZero['L'];
+ $this->s2[$i + 1] = $encZero['R'];
+ }
+
+ $iMax = count($this->s3);
+ for ($i = 0; $i < $iMax; $i += 2) {
+ $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
+ $this->s3[$i] = $encZero['L'];
+ $this->s3[$i + 1] = $encZero['R'];
+ }
+
+ $iMax = count($this->s4);
+ for ($i = 0; $i < $iMax; $i += 2) {
+ $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
+ $this->s4[$i] = $encZero['L'];
+ $this->s4[$i + 1] = $encZero['R'];
+ }
+
+ }
+
+ /**
+ * Return the size of the blocks that this cipher needs
+ *
+ * @return Integer The number of characters per block
+ */
+ function getBlockSize()
+ {
+ return 8;
+ }
+
+ /**
+ * Encrypt a block on data.
+ *
+ * @param String $block The data to encrypt
+ * @param optional String $key The key to use
+ *
+ * @return String the encrypted output
+ */
+ function encryptBlock($block, $key = null)
+ {
+ if (!is_null($key)) {
+ $this->setKey($key);
+ }
+
+ list($L, $R) = array_values(unpack('N*', $block));
+ $parts = $this->_encryptBlock($L, $R);
+ return pack("NN", $parts['L'], $parts['R']);
+ }
+
+ /**
+ * Encrypt a block on data.
+ *
+ * @param String $L The data to encrypt.
+ * @param String $R The data to encrypt.
+ *
+ * @return String The encrypted output.
+ */
+ function _encryptBlock($L, $R)
+ {
+ $L ^= $this->p[0];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[1];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[2];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[3];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[4];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[5];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[6];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[7];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[8];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[9];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[10];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[11];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[12];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[13];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[14];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[15];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[16];
+ $R ^= $this->p[17];
+
+ return array('L' => $R, 'R' => $L);
+ }
+
+ /**
+ * Decrypt a block on data.
+ *
+ * @param String $block The data to decrypt
+ * @param optional String $key The key to use
+ *
+ * @return String the decrypted output
+ */
+ function decryptBlock($block, $key = null)
+ {
+ if (!is_null($key)) {
+ $this->setKey($key);
+ }
+
+// change for phpMyAdmin
+ $L = null;
+ $R = null;
+
+ $retarray = array_values(unpack('N*', $block));
+ if(isset($retarray[0])) {
+ $L = $retarray[0];
+ }
+ if(isset($retarray[1])) {
+ $R = $retarray[1];
+ }
+// end change for phpMyAdmin
+
+ $L ^= $this->p[17];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[16];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[15];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[14];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[13];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[12];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[11];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[10];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[9];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[8];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[7];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[6];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[5];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[4];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[3];
+ $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[2];
+ $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[1];
+
+ $decrypted = pack("NN", $R ^ $this->p[0], $L);
+ return $decrypted;
+ }
+
+ /**
+ * Converts a text key into an array.
+ *
+ * @return array The key.
+ */
+ function _formatKey($key)
+ {
+ return array_values(unpack('C*', $key));
+ }
+
+}
+
+// higher-level functions:
+
+/**
+ * String padding
+ *
+ * @param string input string
+ * @param integer length of the result
+ * @param string the filling string
+ * @param integer padding mode
+ *
+ * @return string the padded string
+ *
+ * @access public
+ */
+function full_str_pad($input, $pad_length, $pad_string = '', $pad_type = 0) {
+ $str = '';
+ $length = $pad_length - strlen($input);
+ if ($length > 0) { // str_repeat doesn't like negatives
+ if ($pad_type == STR_PAD_RIGHT) { // STR_PAD_RIGHT == 1
+ $str = $input.str_repeat($pad_string, $length);
+ } elseif ($pad_type == STR_PAD_BOTH) { // STR_PAD_BOTH == 2
+ $str = str_repeat($pad_string, floor($length/2));
+ $str .= $input;
+ $str .= str_repeat($pad_string, ceil($length/2));
+ } else { // defaults to STR_PAD_LEFT == 0
+ $str = str_repeat($pad_string, $length).$input;
+ }
+ } else { // if $length is negative or zero we don't need to do anything
+ $str = $input;
+ }
+ return $str;
+}
+
+/**
+ * Encryption using blowfish algorithm
+ *
+ * @param string original data
+ * @param string the secret
+ *
+ * @return string the encrypted result
+ *
+ * @access public
+ *
+ * @author lem9
+ */
+function PMA_blowfish_encrypt($data, $secret) {
+ $pma_cipher = new Horde_Cipher_blowfish;
+ $encrypt = '';
+ for ($i=0; $i<strlen($data); $i+=8) {
+ $block = substr($data, $i, 8);
+ if (strlen($block) < 8) {
+ $block = full_str_pad($block,8,"\0", 1);
+ }
+ $encrypt .= $pma_cipher->encryptBlock($block, $secret);
+ }
+ return base64_encode($encrypt);
+}
+
+/**
+ * Decryption using blowfish algorithm
+ *
+ * @param string encrypted data
+ * @param string the secret
+ *
+ * @return string original data
+ *
+ * @access public
+ *
+ * @author lem9
+ */
+function PMA_blowfish_decrypt($encdata, $secret) {
+ $pma_cipher = new Horde_Cipher_blowfish;
+ $decrypt = '';
+ $data = base64_decode($encdata);
+ for ($i=0; $i<strlen($data); $i+=8) {
+ $decrypt .= $pma_cipher->decryptBlock(substr($data, $i, 8), $secret);
+ }
+ return trim($decrypt);
+}
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/cache.php
===================================================================
--- site/trunk/www-root/wiki/inc/cache.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/cache.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,291 +1,291 @@
-<?php
-/**
- * Generic class to handle caching
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Chris Smith <chris at jalakai.co.uk>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-
-require_once(DOKU_INC.'inc/io.php');
-require_once(DOKU_INC.'inc/pageutils.php');
-require_once(DOKU_INC.'inc/parserutils.php');
-
-class cache {
- var $key = ''; // primary identifier for this item
- var $ext = ''; // file ext for cache data, secondary identifier for this item
- var $cache = ''; // cache file name
- var $depends = array(); // array containing cache dependency information,
- // used by _useCache to determine cache validity
-
- var $_event = ''; // event to be triggered during useCache
-
- function cache($key,$ext) {
- $this->key = $key;
- $this->ext = $ext;
- $this->cache = getCacheName($key,$ext);
- }
-
- /**
- * public method to determine whether the cache can be used
- *
- * to assist in cetralisation of event triggering and calculation of cache statistics,
- * don't override this function override _useCache()
- *
- * @param array $depends array of cache dependencies, support dependecies:
- * 'age' => max age of the cache in seconds
- * 'files' => cache must be younger than mtime of each file
- * (nb. dependency passes if file doesn't exist)
- *
- * @return bool true if cache can be used, false otherwise
- */
- function useCache($depends=array()) {
- $this->depends = $depends;
- $this->_addDependencies();
-
- if ($this->_event) {
- return $this->_stats(trigger_event($this->_event,$this,array($this,'_useCache')));
- } else {
- return $this->_stats($this->_useCache());
- }
- }
-
- /**
- * private method containing cache use decision logic
- *
- * this function processes the following keys in the depends array
- * purge - force a purge on any non empty value
- * age - expire cache if older than age (seconds)
- * files - expire cache if any file in this array was updated more recently than the cache
- *
- * can be overridden
- *
- * @return bool see useCache()
- */
- function _useCache() {
-
- if (!empty($this->depends['purge'])) return false; // purge requested?
- if (!($this->_time = @filemtime($this->cache))) return false; // cache exists?
-
- // cache too old?
- if (!empty($this->depends['age']) && ((time() - $this->_time) > $this->depends['age'])) return false;
-
- if (!empty($this->depends['files'])) {
- foreach ($this->depends['files'] as $file) {
- if ($this->_time < @filemtime($file)) return false; // cache older than files it depends on?
- }
- }
-
- return true;
- }
-
- /**
- * add dependencies to the depends array
- *
- * this method should only add dependencies,
- * it should not remove any existing dependencies and
- * it should only overwrite a dependency when the new value is more stringent than the old
- */
- function _addDependencies() {
- if (isset($_REQUEST['purge'])) $this->depends['purge'] = true; // purge requested
- }
-
- /**
- * retrieve the cached data
- *
- * @param bool $clean true to clean line endings, false to leave line endings alone
- * @return string cache contents
- */
- function retrieveCache($clean=true) {
- return io_readFile($this->cache, $clean);
- }
-
- /**
- * cache $data
- *
- * @param string $data the data to be cached
- * @return bool true on success, false otherwise
- */
- function storeCache($data) {
- return io_savefile($this->cache, $data);
- }
-
- /**
- * remove any cached data associated with this cache instance
- */
- function removeCache() {
- @unlink($this->cache);
- }
-
- /**
- * Record cache hits statistics.
- * (Only when debugging allowed, to reduce overhead.)
- *
- * @param bool $success result of this cache use attempt
- * @return bool pass-thru $success value
- */
- function _stats($success) {
- global $conf;
- static $stats = NULL;
- static $file;
-
- if (!$conf['allowdebug']) { return $success; }
-
- if (is_null($stats)) {
- $file = $conf['cachedir'].'/cache_stats.txt';
- $lines = explode("\n",io_readFile($file));
-
- foreach ($lines as $line) {
- $i = strpos($line,',');
- $stats[substr($line,0,$i)] = $line;
- }
- }
-
- if (isset($stats[$this->ext])) {
- list($ext,$count,$hits) = explode(',',$stats[$this->ext]);
- } else {
- $ext = $this->ext;
- $count = 0;
- $hits = 0;
- }
-
- $count++;
- if ($success) $hits++;
- $stats[$this->ext] = "$ext,$count,$hits";
-
- io_saveFile($file,join("\n",$stats));
-
- return $success;
- }
-}
-
-class cache_parser extends cache {
-
- var $file = ''; // source file for cache
- var $mode = ''; // input mode (represents the processing the input file will undergo)
-
- var $_event = 'PARSER_CACHE_USE';
-
- function cache_parser($id, $file, $mode) {
- if ($id) $this->page = $id;
- $this->file = $file;
- $this->mode = $mode;
-
- parent::cache($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode);
- }
-
- function _useCache() {
-
- if (!@file_exists($this->file)) return false; // source exists?
- return parent::_useCache();
- }
-
- function _addDependencies() {
- global $conf;
-
- $this->depends['age'] = isset($this->depends['age']) ?
- min($this->depends['age'],$conf['cachetime']) : $conf['cachetime'];
-
- // parser cache file dependencies ...
- $files = array($this->file, // ... source
- DOKU_CONF.'dokuwiki.php', // ... config
- DOKU_CONF.'local.php', // ... local config
- DOKU_INC.'inc/parser/parser.php', // ... parser
- DOKU_INC.'inc/parser/handler.php', // ... handler
- );
-
- $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files;
- parent::_addDependencies();
- }
-
-}
-
-class cache_renderer extends cache_parser {
-
- function useCache($depends=array()) {
- $use = parent::useCache($depends);
-
- // meta data needs to be kept in step with the cache
- if (!$use && isset($this->page)) {
- p_set_metadata($this->page,array(),true);
- }
-
- return $use;
- }
-
- function _useCache() {
- global $conf;
-
- if (!parent::_useCache()) return false;
-
- // for wiki pages, check metadata dependencies
- if (isset($this->page)) {
- $metadata = p_get_metadata($this->page);
-
- // check currnent link existence is consistent with cache version
- // first check the purgefile
- // - if the cache is more recent that the purgefile we know no links can have been updated
- if ($this->_time < @filemtime($conf['cachedir'].'/purgefile')) {
-
-# $links = p_get_metadata($this->page,"relation references");
- $links = $metadata['relation']['references'];
-
- if (!empty($links)) {
- foreach ($links as $id => $exists) {
- if ($exists != page_exists($id,'',false)) return false;
- }
- }
- }
- }
-
- return true;
- }
-
- function _addDependencies() {
-
- // renderer cache file dependencies ...
- $files = array(
- DOKU_INC.'inc/parser/'.$this->mode.'.php', // ... the renderer
- );
-
- // page implies metadata and possibly some other dependencies
- if (isset($this->page)) {
-
- $metafile = metaFN($this->page,'.meta');
- if (@file_exists($metafile)) {
- $files[] = $metafile; // ... the page's own metadata
- $files[] = DOKU_INC.'inc/parser/metadata.php'; // ... the metadata renderer
-
- $valid = p_get_metadata($this->page, 'date valid');
- if (!empty($valid['age'])) {
- $this->depends['age'] = isset($this->depends['age']) ?
- min($this->depends['age'],$valid['age']) : $valid['age'];
- }
-
- } else {
- $this->depends['purge'] = true; // ... purging cache will generate metadata
- return;
- }
- }
-
- $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files;
- parent::_addDependencies();
- }
-}
-
-class cache_instructions extends cache_parser {
-
- function cache_instructions($id, $file) {
- parent::cache_parser($id, $file, 'i');
- }
-
- function retrieveCache() {
- $contents = io_readFile($this->cache, false);
- return !empty($contents) ? unserialize($contents) : array();
- }
-
- function storeCache($instructions) {
- return io_savefile($this->cache,serialize($instructions));
- }
-}
+<?php
+/**
+ * Generic class to handle caching
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+
+require_once(DOKU_INC.'inc/io.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/parserutils.php');
+
+class cache {
+ var $key = ''; // primary identifier for this item
+ var $ext = ''; // file ext for cache data, secondary identifier for this item
+ var $cache = ''; // cache file name
+ var $depends = array(); // array containing cache dependency information,
+ // used by _useCache to determine cache validity
+
+ var $_event = ''; // event to be triggered during useCache
+
+ function cache($key,$ext) {
+ $this->key = $key;
+ $this->ext = $ext;
+ $this->cache = getCacheName($key,$ext);
+ }
+
+ /**
+ * public method to determine whether the cache can be used
+ *
+ * to assist in cetralisation of event triggering and calculation of cache statistics,
+ * don't override this function override _useCache()
+ *
+ * @param array $depends array of cache dependencies, support dependecies:
+ * 'age' => max age of the cache in seconds
+ * 'files' => cache must be younger than mtime of each file
+ * (nb. dependency passes if file doesn't exist)
+ *
+ * @return bool true if cache can be used, false otherwise
+ */
+ function useCache($depends=array()) {
+ $this->depends = $depends;
+ $this->_addDependencies();
+
+ if ($this->_event) {
+ return $this->_stats(trigger_event($this->_event,$this,array($this,'_useCache')));
+ } else {
+ return $this->_stats($this->_useCache());
+ }
+ }
+
+ /**
+ * private method containing cache use decision logic
+ *
+ * this function processes the following keys in the depends array
+ * purge - force a purge on any non empty value
+ * age - expire cache if older than age (seconds)
+ * files - expire cache if any file in this array was updated more recently than the cache
+ *
+ * can be overridden
+ *
+ * @return bool see useCache()
+ */
+ function _useCache() {
+
+ if (!empty($this->depends['purge'])) return false; // purge requested?
+ if (!($this->_time = @filemtime($this->cache))) return false; // cache exists?
+
+ // cache too old?
+ if (!empty($this->depends['age']) && ((time() - $this->_time) > $this->depends['age'])) return false;
+
+ if (!empty($this->depends['files'])) {
+ foreach ($this->depends['files'] as $file) {
+ if ($this->_time < @filemtime($file)) return false; // cache older than files it depends on?
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * add dependencies to the depends array
+ *
+ * this method should only add dependencies,
+ * it should not remove any existing dependencies and
+ * it should only overwrite a dependency when the new value is more stringent than the old
+ */
+ function _addDependencies() {
+ if (isset($_REQUEST['purge'])) $this->depends['purge'] = true; // purge requested
+ }
+
+ /**
+ * retrieve the cached data
+ *
+ * @param bool $clean true to clean line endings, false to leave line endings alone
+ * @return string cache contents
+ */
+ function retrieveCache($clean=true) {
+ return io_readFile($this->cache, $clean);
+ }
+
+ /**
+ * cache $data
+ *
+ * @param string $data the data to be cached
+ * @return bool true on success, false otherwise
+ */
+ function storeCache($data) {
+ return io_savefile($this->cache, $data);
+ }
+
+ /**
+ * remove any cached data associated with this cache instance
+ */
+ function removeCache() {
+ @unlink($this->cache);
+ }
+
+ /**
+ * Record cache hits statistics.
+ * (Only when debugging allowed, to reduce overhead.)
+ *
+ * @param bool $success result of this cache use attempt
+ * @return bool pass-thru $success value
+ */
+ function _stats($success) {
+ global $conf;
+ static $stats = NULL;
+ static $file;
+
+ if (!$conf['allowdebug']) { return $success; }
+
+ if (is_null($stats)) {
+ $file = $conf['cachedir'].'/cache_stats.txt';
+ $lines = explode("\n",io_readFile($file));
+
+ foreach ($lines as $line) {
+ $i = strpos($line,',');
+ $stats[substr($line,0,$i)] = $line;
+ }
+ }
+
+ if (isset($stats[$this->ext])) {
+ list($ext,$count,$hits) = explode(',',$stats[$this->ext]);
+ } else {
+ $ext = $this->ext;
+ $count = 0;
+ $hits = 0;
+ }
+
+ $count++;
+ if ($success) $hits++;
+ $stats[$this->ext] = "$ext,$count,$hits";
+
+ io_saveFile($file,join("\n",$stats));
+
+ return $success;
+ }
+}
+
+class cache_parser extends cache {
+
+ var $file = ''; // source file for cache
+ var $mode = ''; // input mode (represents the processing the input file will undergo)
+
+ var $_event = 'PARSER_CACHE_USE';
+
+ function cache_parser($id, $file, $mode) {
+ if ($id) $this->page = $id;
+ $this->file = $file;
+ $this->mode = $mode;
+
+ parent::cache($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode);
+ }
+
+ function _useCache() {
+
+ if (!@file_exists($this->file)) return false; // source exists?
+ return parent::_useCache();
+ }
+
+ function _addDependencies() {
+ global $conf;
+
+ $this->depends['age'] = isset($this->depends['age']) ?
+ min($this->depends['age'],$conf['cachetime']) : $conf['cachetime'];
+
+ // parser cache file dependencies ...
+ $files = array($this->file, // ... source
+ DOKU_CONF.'dokuwiki.php', // ... config
+ DOKU_CONF.'local.php', // ... local config
+ DOKU_INC.'inc/parser/parser.php', // ... parser
+ DOKU_INC.'inc/parser/handler.php', // ... handler
+ );
+
+ $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files;
+ parent::_addDependencies();
+ }
+
+}
+
+class cache_renderer extends cache_parser {
+
+ function useCache($depends=array()) {
+ $use = parent::useCache($depends);
+
+ // meta data needs to be kept in step with the cache
+ if (!$use && isset($this->page)) {
+ p_set_metadata($this->page,array(),true);
+ }
+
+ return $use;
+ }
+
+ function _useCache() {
+ global $conf;
+
+ if (!parent::_useCache()) return false;
+
+ // for wiki pages, check metadata dependencies
+ if (isset($this->page)) {
+ $metadata = p_get_metadata($this->page);
+
+ // check currnent link existence is consistent with cache version
+ // first check the purgefile
+ // - if the cache is more recent that the purgefile we know no links can have been updated
+ if ($this->_time < @filemtime($conf['cachedir'].'/purgefile')) {
+
+# $links = p_get_metadata($this->page,"relation references");
+ $links = $metadata['relation']['references'];
+
+ if (!empty($links)) {
+ foreach ($links as $id => $exists) {
+ if ($exists != page_exists($id,'',false)) return false;
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+
+ function _addDependencies() {
+
+ // renderer cache file dependencies ...
+ $files = array(
+ DOKU_INC.'inc/parser/'.$this->mode.'.php', // ... the renderer
+ );
+
+ // page implies metadata and possibly some other dependencies
+ if (isset($this->page)) {
+
+ $metafile = metaFN($this->page,'.meta');
+ if (@file_exists($metafile)) {
+ $files[] = $metafile; // ... the page's own metadata
+ $files[] = DOKU_INC.'inc/parser/metadata.php'; // ... the metadata renderer
+
+ $valid = p_get_metadata($this->page, 'date valid');
+ if (!empty($valid['age'])) {
+ $this->depends['age'] = isset($this->depends['age']) ?
+ min($this->depends['age'],$valid['age']) : $valid['age'];
+ }
+
+ } else {
+ $this->depends['purge'] = true; // ... purging cache will generate metadata
+ return;
+ }
+ }
+
+ $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files;
+ parent::_addDependencies();
+ }
+}
+
+class cache_instructions extends cache_parser {
+
+ function cache_instructions($id, $file) {
+ parent::cache_parser($id, $file, 'i');
+ }
+
+ function retrieveCache() {
+ $contents = io_readFile($this->cache, false);
+ return !empty($contents) ? unserialize($contents) : array();
+ }
+
+ function storeCache($instructions) {
+ return io_savefile($this->cache,serialize($instructions));
+ }
+}
Modified: site/trunk/www-root/wiki/inc/changelog.php
===================================================================
--- site/trunk/www-root/wiki/inc/changelog.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/changelog.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,378 +1,378 @@
-<?php
-/**
- * Changelog handling functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-// Constants for known core changelog line types.
-// Use these in place of string literals for more readable code.
-define('DOKU_CHANGE_TYPE_CREATE', 'C');
-define('DOKU_CHANGE_TYPE_EDIT', 'E');
-define('DOKU_CHANGE_TYPE_MINOR_EDIT', 'e');
-define('DOKU_CHANGE_TYPE_DELETE', 'D');
-define('DOKU_CHANGE_TYPE_REVERT', 'R');
-
-/**
- * parses a changelog line into it's components
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function parseChangelogLine($line) {
- $tmp = explode("\t", $line);
- if ($tmp!==false && count($tmp)>1) {
- $info = array();
- $info['date'] = (int)$tmp[0]; // unix timestamp
- $info['ip'] = $tmp[1]; // IPv4 address (127.0.0.1)
- $info['type'] = $tmp[2]; // log line type
- $info['id'] = $tmp[3]; // page id
- $info['user'] = $tmp[4]; // user name
- $info['sum'] = $tmp[5]; // edit summary (or action reason)
- $info['extra'] = rtrim($tmp[6], "\n"); // extra data (varies by line type)
- return $info;
- } else { return false; }
-}
-
-/**
- * Add's an entry to the changelog and saves the metadata for the page
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Esther Brunner <wikidesign at gmail.com>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extra='', $flags=null){
- global $conf, $INFO;
-
- // check for special flags as keys
- if (!is_array($flags)) { $flags = array(); }
- $flagExternalEdit = isset($flags['ExternalEdit']);
-
- $id = cleanid($id);
- $file = wikiFN($id);
- $created = @filectime($file);
- $minor = ($type===DOKU_CHANGE_TYPE_MINOR_EDIT);
- $wasRemoved = ($type===DOKU_CHANGE_TYPE_DELETE);
-
- if(!$date) $date = time(); //use current time if none supplied
- $remote = (!$flagExternalEdit)?$_SERVER['REMOTE_ADDR']:'127.0.0.1';
- $user = (!$flagExternalEdit)?$_SERVER['REMOTE_USER']:'';
-
- $strip = array("\t", "\n");
- $logline = array(
- 'date' => $date,
- 'ip' => $remote,
- 'type' => str_replace($strip, '', $type),
- 'id' => $id,
- 'user' => $user,
- 'sum' => str_replace($strip, '', $summary),
- 'extra' => str_replace($strip, '', $extra)
- );
-
- // update metadata
- if (!$wasRemoved) {
- $oldmeta = p_read_metadata($id);
- $meta = array();
- if (!$INFO['exists'] && empty($oldmeta['persistent']['date']['created'])){ // newly created
- $meta['date']['created'] = $created;
- if ($user) $meta['creator'] = $INFO['userinfo']['name'];
- } elseif (!$INFO['exists'] && !empty($oldmeta['persistent']['date']['created'])) { // re-created / restored
- $meta['date']['created'] = $oldmeta['persistent']['date']['created'];
- $meta['date']['modified'] = $created; // use the files ctime here
- $meta['creator'] = $oldmeta['persistent']['creator'];
- if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name'];
- } elseif (!$minor) { // non-minor modification
- $meta['date']['modified'] = $date;
- if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name'];
- }
- $meta['last_change'] = $logline;
- p_set_metadata($id, $meta, true);
- }
-
- // add changelog lines
- $logline = implode("\t", $logline)."\n";
- io_saveFile(metaFN($id,'.changes'),$logline,true); //page changelog
- io_saveFile($conf['changelog'],$logline,true); //global changelog cache
-}
-
-/**
- * returns an array of recently changed files using the
- * changelog
- *
- * The following constants can be used to control which changes are
- * included. Add them together as needed.
- *
- * RECENTS_SKIP_DELETED - don't include deleted pages
- * RECENTS_SKIP_MINORS - don't include minor changes
- * RECENTS_SKIP_SUBSPACES - don't include subspaces
- *
- * @param int $first number of first entry returned (for paginating
- * @param int $num return $num entries
- * @param string $ns restrict to given namespace
- * @param bool $flags see above
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function getRecents($first,$num,$ns='',$flags=0){
- global $conf;
- $recent = array();
- $count = 0;
-
- if(!$num)
- return $recent;
-
- // read all recent changes. (kept short)
- $lines = @file($conf['changelog']);
-
-
- // handle lines
- for($i = count($lines)-1; $i >= 0; $i--){
- $rec = _handleRecent($lines[$i], $ns, $flags);
- if($rec !== false) {
- if(--$first >= 0) continue; // skip first entries
- $recent[] = $rec;
- $count++;
- // break when we have enough entries
- if($count >= $num){ break; }
- }
- }
-
- return $recent;
-}
-
-/**
- * Internal function used by getRecents
- *
- * don't call directly
- *
- * @see getRecents()
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function _handleRecent($line,$ns,$flags){
- static $seen = array(); //caches seen pages and skip them
- if(empty($line)) return false; //skip empty lines
-
- // split the line into parts
- $recent = parseChangelogLine($line);
- if ($recent===false) { return false; }
-
- // skip seen ones
- if(isset($seen[$recent['id']])) return false;
-
- // skip minors
- if($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT && ($flags & RECENTS_SKIP_MINORS)) return false;
-
- // remember in seen to skip additional sights
- $seen[$recent['id']] = 1;
-
- // check if it's a hidden page
- if(isHiddenPage($recent['id'])) return false;
-
- // filter namespace
- if (($ns) && (strpos($recent['id'],$ns.':') !== 0)) return false;
-
- // exclude subnamespaces
- if (($flags & RECENTS_SKIP_SUBSPACES) && (getNS($recent['id']) != $ns)) return false;
-
- // check ACL
- if (auth_quickaclcheck($recent['id']) < AUTH_READ) return false;
-
- // check existance
- if((!@file_exists(wikiFN($recent['id']))) && ($flags & RECENTS_SKIP_DELETED)) return false;
-
- return $recent;
-}
-
-/**
- * Get the changelog information for a specific page id
- * and revision (timestamp). Adjacent changelog lines
- * are optimistically parsed and cached to speed up
- * consecutive calls to getRevisionInfo. For large
- * changelog files, only the chunk containing the
- * requested changelog line is read.
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function getRevisionInfo($id, $rev, $chunk_size=8192) {
- global $cache_revinfo;
- $cache =& $cache_revinfo;
- if (!isset($cache[$id])) { $cache[$id] = array(); }
- $rev = max($rev, 0);
-
- // check if it's already in the memory cache
- if (isset($cache[$id]) && isset($cache[$id][$rev])) {
- return $cache[$id][$rev];
- }
-
- $file = metaFN($id, '.changes');
- if (!@file_exists($file)) { return false; }
- if (filesize($file)<$chunk_size || $chunk_size==0) {
- // read whole file
- $lines = file($file);
- if ($lines===false) { return false; }
- } else {
- // read by chunk
- $fp = fopen($file, 'rb'); // "file pointer"
- if ($fp===false) { return false; }
- $head = 0;
- fseek($fp, 0, SEEK_END);
- $tail = ftell($fp);
- $finger = 0;
- $finger_rev = 0;
-
- // find chunk
- while ($tail-$head>$chunk_size) {
- $finger = $head+floor(($tail-$head)/2.0);
- fseek($fp, $finger);
- fgets($fp); // slip the finger forward to a new line
- $finger = ftell($fp);
- $tmp = fgets($fp); // then read at that location
- $tmp = parseChangelogLine($tmp);
- $finger_rev = $tmp['date'];
- if ($finger==$head || $finger==$tail) { break; }
- if ($finger_rev>$rev) {
- $tail = $finger;
- } else {
- $head = $finger;
- }
- }
-
- if ($tail-$head<1) {
- // cound not find chunk, assume requested rev is missing
- fclose($fp);
- return false;
- }
-
- // read chunk
- $chunk = '';
- $chunk_size = max($tail-$head, 0); // found chunk size
- $got = 0;
- fseek($fp, $head);
- while ($got<$chunk_size && !feof($fp)) {
- $tmp = fread($fp, max($chunk_size-$got, 0));
- if ($tmp===false) { break; } //error state
- $got += strlen($tmp);
- $chunk .= $tmp;
- }
- $lines = explode("\n", $chunk);
- array_pop($lines); // remove trailing newline
- fclose($fp);
- }
-
- // parse and cache changelog lines
- foreach ($lines as $value) {
- $tmp = parseChangelogLine($value);
- if ($tmp!==false) {
- $cache[$id][$tmp['date']] = $tmp;
- }
- }
- if (!isset($cache[$id][$rev])) { return false; }
- return $cache[$id][$rev];
-}
-
-/**
- * Return a list of page revisions numbers
- * Does not guarantee that the revision exists in the attic,
- * only that a line with the date exists in the changelog.
- * By default the current revision is skipped.
- *
- * id: the page of interest
- * first: skip the first n changelog lines
- * num: number of revisions to return
- *
- * The current revision is automatically skipped when the page exists.
- * See $INFO['meta']['last_change'] for the current revision.
- *
- * For efficiency, the log lines are parsed and cached for later
- * calls to getRevisionInfo. Large changelog files are read
- * backwards in chunks untill the requested number of changelog
- * lines are recieved.
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function getRevisions($id, $first, $num, $chunk_size=8192) {
- global $cache_revinfo;
- $cache =& $cache_revinfo;
- if (!isset($cache[$id])) { $cache[$id] = array(); }
-
- $revs = array();
- $lines = array();
- $count = 0;
- $file = metaFN($id, '.changes');
- $num = max($num, 0);
- $chunk_size = max($chunk_size, 0);
- if ($first<0) { $first = 0; }
- else if (@file_exists(wikiFN($id))) {
- // skip current revision if the page exists
- $first = max($first+1, 0);
- }
-
- if (!@file_exists($file)) { return $revs; }
- if (filesize($file)<$chunk_size || $chunk_size==0) {
- // read whole file
- $lines = file($file);
- if ($lines===false) { return $revs; }
- } else {
- // read chunks backwards
- $fp = fopen($file, 'rb'); // "file pointer"
- if ($fp===false) { return $revs; }
- fseek($fp, 0, SEEK_END);
- $tail = ftell($fp);
-
- // chunk backwards
- $finger = max($tail-$chunk_size, 0);
- while ($count<$num+$first) {
- fseek($fp, $finger);
- if ($finger>0) {
- fgets($fp); // slip the finger forward to a new line
- $finger = ftell($fp);
- }
-
- // read chunk
- if ($tail<=$finger) { break; }
- $chunk = '';
- $read_size = max($tail-$finger, 0); // found chunk size
- $got = 0;
- while ($got<$read_size && !feof($fp)) {
- $tmp = fread($fp, max($read_size-$got, 0));
- if ($tmp===false) { break; } //error state
- $got += strlen($tmp);
- $chunk .= $tmp;
- }
- $tmp = explode("\n", $chunk);
- array_pop($tmp); // remove trailing newline
-
- // combine with previous chunk
- $count += count($tmp);
- $lines = array_merge($tmp, $lines);
-
- // next chunk
- if ($finger==0) { break; } // already read all the lines
- else {
- $tail = $finger;
- $finger = max($tail-$chunk_size, 0);
- }
- }
- fclose($fp);
- }
-
- // skip parsing extra lines
- $num = max(min(count($lines)-$first, $num), 0);
- if ($first>0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$first-$num, 0), $num); }
- else if ($first>0 && $num==0) { $lines = array_slice($lines, 0, max(count($lines)-$first, 0)); }
- else if ($first==0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$num, 0)); }
-
- // handle lines in reverse order
- for ($i = count($lines)-1; $i >= 0; $i--) {
- $tmp = parseChangelogLine($lines[$i]);
- if ($tmp!==false) {
- $cache[$id][$tmp['date']] = $tmp;
- $revs[] = $tmp['date'];
- }
- }
-
- return $revs;
-}
-
-
+<?php
+/**
+ * Changelog handling functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+// Constants for known core changelog line types.
+// Use these in place of string literals for more readable code.
+define('DOKU_CHANGE_TYPE_CREATE', 'C');
+define('DOKU_CHANGE_TYPE_EDIT', 'E');
+define('DOKU_CHANGE_TYPE_MINOR_EDIT', 'e');
+define('DOKU_CHANGE_TYPE_DELETE', 'D');
+define('DOKU_CHANGE_TYPE_REVERT', 'R');
+
+/**
+ * parses a changelog line into it's components
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function parseChangelogLine($line) {
+ $tmp = explode("\t", $line);
+ if ($tmp!==false && count($tmp)>1) {
+ $info = array();
+ $info['date'] = (int)$tmp[0]; // unix timestamp
+ $info['ip'] = $tmp[1]; // IPv4 address (127.0.0.1)
+ $info['type'] = $tmp[2]; // log line type
+ $info['id'] = $tmp[3]; // page id
+ $info['user'] = $tmp[4]; // user name
+ $info['sum'] = $tmp[5]; // edit summary (or action reason)
+ $info['extra'] = rtrim($tmp[6], "\n"); // extra data (varies by line type)
+ return $info;
+ } else { return false; }
+}
+
+/**
+ * Add's an entry to the changelog and saves the metadata for the page
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Esther Brunner <wikidesign at gmail.com>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extra='', $flags=null){
+ global $conf, $INFO;
+
+ // check for special flags as keys
+ if (!is_array($flags)) { $flags = array(); }
+ $flagExternalEdit = isset($flags['ExternalEdit']);
+
+ $id = cleanid($id);
+ $file = wikiFN($id);
+ $created = @filectime($file);
+ $minor = ($type===DOKU_CHANGE_TYPE_MINOR_EDIT);
+ $wasRemoved = ($type===DOKU_CHANGE_TYPE_DELETE);
+
+ if(!$date) $date = time(); //use current time if none supplied
+ $remote = (!$flagExternalEdit)?$_SERVER['REMOTE_ADDR']:'127.0.0.1';
+ $user = (!$flagExternalEdit)?$_SERVER['REMOTE_USER']:'';
+
+ $strip = array("\t", "\n");
+ $logline = array(
+ 'date' => $date,
+ 'ip' => $remote,
+ 'type' => str_replace($strip, '', $type),
+ 'id' => $id,
+ 'user' => $user,
+ 'sum' => str_replace($strip, '', $summary),
+ 'extra' => str_replace($strip, '', $extra)
+ );
+
+ // update metadata
+ if (!$wasRemoved) {
+ $oldmeta = p_read_metadata($id);
+ $meta = array();
+ if (!$INFO['exists'] && empty($oldmeta['persistent']['date']['created'])){ // newly created
+ $meta['date']['created'] = $created;
+ if ($user) $meta['creator'] = $INFO['userinfo']['name'];
+ } elseif (!$INFO['exists'] && !empty($oldmeta['persistent']['date']['created'])) { // re-created / restored
+ $meta['date']['created'] = $oldmeta['persistent']['date']['created'];
+ $meta['date']['modified'] = $created; // use the files ctime here
+ $meta['creator'] = $oldmeta['persistent']['creator'];
+ if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name'];
+ } elseif (!$minor) { // non-minor modification
+ $meta['date']['modified'] = $date;
+ if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name'];
+ }
+ $meta['last_change'] = $logline;
+ p_set_metadata($id, $meta, true);
+ }
+
+ // add changelog lines
+ $logline = implode("\t", $logline)."\n";
+ io_saveFile(metaFN($id,'.changes'),$logline,true); //page changelog
+ io_saveFile($conf['changelog'],$logline,true); //global changelog cache
+}
+
+/**
+ * returns an array of recently changed files using the
+ * changelog
+ *
+ * The following constants can be used to control which changes are
+ * included. Add them together as needed.
+ *
+ * RECENTS_SKIP_DELETED - don't include deleted pages
+ * RECENTS_SKIP_MINORS - don't include minor changes
+ * RECENTS_SKIP_SUBSPACES - don't include subspaces
+ *
+ * @param int $first number of first entry returned (for paginating
+ * @param int $num return $num entries
+ * @param string $ns restrict to given namespace
+ * @param bool $flags see above
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function getRecents($first,$num,$ns='',$flags=0){
+ global $conf;
+ $recent = array();
+ $count = 0;
+
+ if(!$num)
+ return $recent;
+
+ // read all recent changes. (kept short)
+ $lines = @file($conf['changelog']);
+
+
+ // handle lines
+ for($i = count($lines)-1; $i >= 0; $i--){
+ $rec = _handleRecent($lines[$i], $ns, $flags);
+ if($rec !== false) {
+ if(--$first >= 0) continue; // skip first entries
+ $recent[] = $rec;
+ $count++;
+ // break when we have enough entries
+ if($count >= $num){ break; }
+ }
+ }
+
+ return $recent;
+}
+
+/**
+ * Internal function used by getRecents
+ *
+ * don't call directly
+ *
+ * @see getRecents()
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function _handleRecent($line,$ns,$flags){
+ static $seen = array(); //caches seen pages and skip them
+ if(empty($line)) return false; //skip empty lines
+
+ // split the line into parts
+ $recent = parseChangelogLine($line);
+ if ($recent===false) { return false; }
+
+ // skip seen ones
+ if(isset($seen[$recent['id']])) return false;
+
+ // skip minors
+ if($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT && ($flags & RECENTS_SKIP_MINORS)) return false;
+
+ // remember in seen to skip additional sights
+ $seen[$recent['id']] = 1;
+
+ // check if it's a hidden page
+ if(isHiddenPage($recent['id'])) return false;
+
+ // filter namespace
+ if (($ns) && (strpos($recent['id'],$ns.':') !== 0)) return false;
+
+ // exclude subnamespaces
+ if (($flags & RECENTS_SKIP_SUBSPACES) && (getNS($recent['id']) != $ns)) return false;
+
+ // check ACL
+ if (auth_quickaclcheck($recent['id']) < AUTH_READ) return false;
+
+ // check existance
+ if((!@file_exists(wikiFN($recent['id']))) && ($flags & RECENTS_SKIP_DELETED)) return false;
+
+ return $recent;
+}
+
+/**
+ * Get the changelog information for a specific page id
+ * and revision (timestamp). Adjacent changelog lines
+ * are optimistically parsed and cached to speed up
+ * consecutive calls to getRevisionInfo. For large
+ * changelog files, only the chunk containing the
+ * requested changelog line is read.
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function getRevisionInfo($id, $rev, $chunk_size=8192) {
+ global $cache_revinfo;
+ $cache =& $cache_revinfo;
+ if (!isset($cache[$id])) { $cache[$id] = array(); }
+ $rev = max($rev, 0);
+
+ // check if it's already in the memory cache
+ if (isset($cache[$id]) && isset($cache[$id][$rev])) {
+ return $cache[$id][$rev];
+ }
+
+ $file = metaFN($id, '.changes');
+ if (!@file_exists($file)) { return false; }
+ if (filesize($file)<$chunk_size || $chunk_size==0) {
+ // read whole file
+ $lines = file($file);
+ if ($lines===false) { return false; }
+ } else {
+ // read by chunk
+ $fp = fopen($file, 'rb'); // "file pointer"
+ if ($fp===false) { return false; }
+ $head = 0;
+ fseek($fp, 0, SEEK_END);
+ $tail = ftell($fp);
+ $finger = 0;
+ $finger_rev = 0;
+
+ // find chunk
+ while ($tail-$head>$chunk_size) {
+ $finger = $head+floor(($tail-$head)/2.0);
+ fseek($fp, $finger);
+ fgets($fp); // slip the finger forward to a new line
+ $finger = ftell($fp);
+ $tmp = fgets($fp); // then read at that location
+ $tmp = parseChangelogLine($tmp);
+ $finger_rev = $tmp['date'];
+ if ($finger==$head || $finger==$tail) { break; }
+ if ($finger_rev>$rev) {
+ $tail = $finger;
+ } else {
+ $head = $finger;
+ }
+ }
+
+ if ($tail-$head<1) {
+ // cound not find chunk, assume requested rev is missing
+ fclose($fp);
+ return false;
+ }
+
+ // read chunk
+ $chunk = '';
+ $chunk_size = max($tail-$head, 0); // found chunk size
+ $got = 0;
+ fseek($fp, $head);
+ while ($got<$chunk_size && !feof($fp)) {
+ $tmp = fread($fp, max($chunk_size-$got, 0));
+ if ($tmp===false) { break; } //error state
+ $got += strlen($tmp);
+ $chunk .= $tmp;
+ }
+ $lines = explode("\n", $chunk);
+ array_pop($lines); // remove trailing newline
+ fclose($fp);
+ }
+
+ // parse and cache changelog lines
+ foreach ($lines as $value) {
+ $tmp = parseChangelogLine($value);
+ if ($tmp!==false) {
+ $cache[$id][$tmp['date']] = $tmp;
+ }
+ }
+ if (!isset($cache[$id][$rev])) { return false; }
+ return $cache[$id][$rev];
+}
+
+/**
+ * Return a list of page revisions numbers
+ * Does not guarantee that the revision exists in the attic,
+ * only that a line with the date exists in the changelog.
+ * By default the current revision is skipped.
+ *
+ * id: the page of interest
+ * first: skip the first n changelog lines
+ * num: number of revisions to return
+ *
+ * The current revision is automatically skipped when the page exists.
+ * See $INFO['meta']['last_change'] for the current revision.
+ *
+ * For efficiency, the log lines are parsed and cached for later
+ * calls to getRevisionInfo. Large changelog files are read
+ * backwards in chunks untill the requested number of changelog
+ * lines are recieved.
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function getRevisions($id, $first, $num, $chunk_size=8192) {
+ global $cache_revinfo;
+ $cache =& $cache_revinfo;
+ if (!isset($cache[$id])) { $cache[$id] = array(); }
+
+ $revs = array();
+ $lines = array();
+ $count = 0;
+ $file = metaFN($id, '.changes');
+ $num = max($num, 0);
+ $chunk_size = max($chunk_size, 0);
+ if ($first<0) { $first = 0; }
+ else if (@file_exists(wikiFN($id))) {
+ // skip current revision if the page exists
+ $first = max($first+1, 0);
+ }
+
+ if (!@file_exists($file)) { return $revs; }
+ if (filesize($file)<$chunk_size || $chunk_size==0) {
+ // read whole file
+ $lines = file($file);
+ if ($lines===false) { return $revs; }
+ } else {
+ // read chunks backwards
+ $fp = fopen($file, 'rb'); // "file pointer"
+ if ($fp===false) { return $revs; }
+ fseek($fp, 0, SEEK_END);
+ $tail = ftell($fp);
+
+ // chunk backwards
+ $finger = max($tail-$chunk_size, 0);
+ while ($count<$num+$first) {
+ fseek($fp, $finger);
+ if ($finger>0) {
+ fgets($fp); // slip the finger forward to a new line
+ $finger = ftell($fp);
+ }
+
+ // read chunk
+ if ($tail<=$finger) { break; }
+ $chunk = '';
+ $read_size = max($tail-$finger, 0); // found chunk size
+ $got = 0;
+ while ($got<$read_size && !feof($fp)) {
+ $tmp = fread($fp, max($read_size-$got, 0));
+ if ($tmp===false) { break; } //error state
+ $got += strlen($tmp);
+ $chunk .= $tmp;
+ }
+ $tmp = explode("\n", $chunk);
+ array_pop($tmp); // remove trailing newline
+
+ // combine with previous chunk
+ $count += count($tmp);
+ $lines = array_merge($tmp, $lines);
+
+ // next chunk
+ if ($finger==0) { break; } // already read all the lines
+ else {
+ $tail = $finger;
+ $finger = max($tail-$chunk_size, 0);
+ }
+ }
+ fclose($fp);
+ }
+
+ // skip parsing extra lines
+ $num = max(min(count($lines)-$first, $num), 0);
+ if ($first>0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$first-$num, 0), $num); }
+ else if ($first>0 && $num==0) { $lines = array_slice($lines, 0, max(count($lines)-$first, 0)); }
+ else if ($first==0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$num, 0)); }
+
+ // handle lines in reverse order
+ for ($i = count($lines)-1; $i >= 0; $i--) {
+ $tmp = parseChangelogLine($lines[$i]);
+ if ($tmp!==false) {
+ $cache[$id][$tmp['date']] = $tmp;
+ $revs[] = $tmp['date'];
+ }
+ }
+
+ return $revs;
+}
+
+
Modified: site/trunk/www-root/wiki/inc/cliopts.php
===================================================================
--- site/trunk/www-root/wiki/inc/cliopts.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/cliopts.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,362 +1,362 @@
-<?php
-/**
-* Brutally chopped and modified from http://pear.php.net/package/Console_Getopts
-*/
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2003 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 3.0 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available through the world-wide-web at the following url: |
-// | http://www.php.net/license/3_0.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license at php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Author: Andrei Zmievski <andrei at php.net> |
-// | Modified: Harry Fuecks hfuecks gmail.com |
-// +----------------------------------------------------------------------+
-//
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-
-//------------------------------------------------------------------------------
-/**
-* Sets up CLI environment based on SAPI and PHP version
-* Helps resolve some issues between the CGI and CLI SAPIs
-* as well is inconsistencies between PHP 4.3+ and older versions
-*/
-if (version_compare(phpversion(), '4.3.0', '<') || php_sapi_name() == 'cgi') {
- // Handle output buffering
- @ob_end_flush();
- ob_implicit_flush(true);
-
- // PHP ini settings
- set_time_limit(0);
- ini_set('track_errors', true);
- ini_set('html_errors', false);
- ini_set('magic_quotes_runtime', false);
-
- // Define stream constants
- define('STDIN', fopen('php://stdin', 'r'));
- define('STDOUT', fopen('php://stdout', 'w'));
- define('STDERR', fopen('php://stderr', 'w'));
-
- // Close the streams on script termination
- register_shutdown_function(
- create_function('',
- 'fclose(STDIN); fclose(STDOUT); fclose(STDERR); return true;')
- );
-}
-
-//------------------------------------------------------------------------------
-/**
-* Error codes
-*/
-define('DOKU_CLI_OPTS_UNKNOWN_OPT',1); //Unrecognized option
-define('DOKU_CLI_OPTS_OPT_ARG_REQUIRED',2); //Option requires argument
-define('DOKU_CLI_OPTS_OPT_ARG_DENIED',3); //Option not allowed argument
-define('DOKU_CLI_OPTS_OPT_ABIGUOUS',4);//Option abiguous
-define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv
-
-//------------------------------------------------------------------------------
-/**
- * Command-line options parsing class.
- *
- * @author Andrei Zmievski <andrei at php.net>
- *
- */
- class Doku_Cli_Opts {
-
- /**
- * <?php ?>
- * @see http://www.sitepoint.com/article/php-command-line-1/3
- * @param string executing file name - this MUST be passed the __FILE__ constant
- * @param string short options
- * @param array (optional) long options
- * @return Doku_Cli_Opts_Container or Doku_Cli_Opts_Error
- */
- function & getOptions($bin_file, $short_options, $long_options = null) {
- $args = Doku_Cli_Opts::readPHPArgv();
-
- if ( Doku_Cli_Opts::isError($args) ) {
- return $args;
- }
-
- // Compatibility between "php extensions.php" and "./extensions.php"
- if ( fullpath($_SERVER['argv'][0]) == $bin_file ) {
- $options = Doku_Cli_Opts::getOpt($args,$short_options,$long_options);
- } else {
- $options = Doku_Cli_Opts::getOpt2($args,$short_options,$long_options);
- }
-
- if ( Doku_Cli_Opts::isError($options) ) {
- return $options;
- }
-
- $container = new Doku_Cli_Opts_Container($options);
- return $container;
- }
-
- function getopt2($args, $short_options, $long_options = null) {
- return Doku_Cli_Opts::doGetopt(
- 2, $args, $short_options, $long_options
- );
- }
-
- function getopt($args, $short_options, $long_options = null) {
- return Doku_Cli_Opts::doGetopt(
- 1, $args, $short_options, $long_options
- );
- }
-
- function doGetopt($version, $args, $short_options, $long_options = null) {
-
- // in case you pass directly readPHPArgv() as the first arg
- if (Doku_Cli_Opts::isError($args)) {
- return $args;
- }
- if (empty($args)) {
- return array(array(), array());
- }
- $opts = array();
- $non_opts = array();
-
- settype($args, 'array');
-
- if ($long_options && is_array($long_options)) {
- sort($long_options);
- }
-
- /*
- * Preserve backwards compatibility with callers that relied on
- * erroneous POSIX fix.
- */
- if ($version < 2) {
- if (isset($args[0]{0}) && $args[0]{0} != '-') {
- array_shift($args);
- }
- }
-
- reset($args);
- while (list($i, $arg) = each($args)) {
-
- /* The special element '--' means explicit end of
- options. Treat the rest of the arguments as non-options
- and end the loop. */
- if ($arg == '--') {
- $non_opts = array_merge($non_opts, array_slice($args, $i + 1));
- break;
- }
-
- if ($arg{0} != '-' || (strlen($arg) > 1 && $arg{1} == '-' && !$long_options)) {
- $non_opts = array_merge($non_opts, array_slice($args, $i));
- break;
- } elseif (strlen($arg) > 1 && $arg{1} == '-') {
- $error = Doku_Cli_Opts::_parseLongOption(substr($arg, 2), $long_options, $opts, $args);
- if (Doku_Cli_Opts::isError($error))
- return $error;
- } else {
- $error = Doku_Cli_Opts::_parseShortOption(substr($arg, 1), $short_options, $opts, $args);
- if (Doku_Cli_Opts::isError($error))
- return $error;
- }
- }
-
- return array($opts, $non_opts);
- }
-
- function _parseShortOption($arg, $short_options, &$opts, &$args) {
- for ($i = 0; $i < strlen($arg); $i++) {
- $opt = $arg{$i};
- $opt_arg = null;
-
- /* Try to find the short option in the specifier string. */
- if (($spec = strstr($short_options, $opt)) === false || $arg{$i} == ':')
- {
- return Doku_Cli_Opts::raiseError(
- DOKU_CLI_OPTS_UNKNOWN_OPT,
- "Unrecognized option -- $opt"
- );
- }
-
- if (strlen($spec) > 1 && $spec{1} == ':') {
- if (strlen($spec) > 2 && $spec{2} == ':') {
- if ($i + 1 < strlen($arg)) {
- /* Option takes an optional argument. Use the remainder of
- the arg string if there is anything left. */
- $opts[] = array($opt, substr($arg, $i + 1));
- break;
- }
- } else {
- /* Option requires an argument. Use the remainder of the arg
- string if there is anything left. */
- if ($i + 1 < strlen($arg)) {
- $opts[] = array($opt, substr($arg, $i + 1));
- break;
- } else if (list(, $opt_arg) = each($args))
- /* Else use the next argument. */;
- else
- return Doku_Cli_Opts::raiseError(
- DOKU_CLI_OPTS_OPT_ARG_REQUIRED,
- "Option requires an argument -- $opt"
- );
- }
- }
-
- $opts[] = array($opt, $opt_arg);
- }
- }
-
- function _parseLongOption($arg, $long_options, &$opts, &$args) {
- @list($opt, $opt_arg) = explode('=', $arg);
- $opt_len = strlen($opt);
-
- for ($i = 0; $i < count($long_options); $i++) {
- $long_opt = $long_options[$i];
- $opt_start = substr($long_opt, 0, $opt_len);
-
- /* Option doesn't match. Go on to the next one. */
- if ($opt_start != $opt)
- continue;
-
- $opt_rest = substr($long_opt, $opt_len);
-
- /* Check that the options uniquely matches one of the allowed
- options. */
- if ($opt_rest != '' && $opt{0} != '=' &&
- $i + 1 < count($long_options) &&
- $opt == substr($long_options[$i+1], 0, $opt_len)) {
- return Doku_Cli_Opts::raiseError(
- DOKU_CLI_OPTS_OPT_ABIGUOUS,
- "Option --$opt is ambiguous"
- );
- }
-
- if (substr($long_opt, -1) == '=') {
- if (substr($long_opt, -2) != '==') {
- /* Long option requires an argument.
- Take the next argument if one wasn't specified. */;
- if (!strlen($opt_arg) && !(list(, $opt_arg) = each($args))) {
- return Doku_Cli_Opts::raiseError(
- DOKU_CLI_OPTS_OPT_ARG_REQUIRED,
- "Option --$opt requires an argument"
- );
- }
- }
- } else if ($opt_arg) {
- return Doku_Cli_Opts::raiseError(
- DOKU_CLI_OPTS_OPT_ARG_DENIED,
- "Option --$opt doesn't allow an argument"
- );
- }
-
- $opts[] = array('--' . $opt, $opt_arg);
- return;
- }
-
- return Doku_Cli_Opts::raiseError(
- DOKU_CLI_OPTS_UNKNOWN_OPT,
- "Unrecognized option --$opt"
- );
- }
-
- function readPHPArgv() {
- global $argv;
- if (!is_array($argv)) {
- if (!@is_array($_SERVER['argv'])) {
- if (!@is_array($GLOBALS['HTTP_SERVER_VARS']['argv'])) {
- return Doku_Cli_Opts::raiseError(
- DOKU_CLI_OPTS_ARG_READ,
- "Could not read cmd args (register_argc_argv=Off?)"
- );
- }
- return $GLOBALS['HTTP_SERVER_VARS']['argv'];
- }
- return $_SERVER['argv'];
- }
- return $argv;
- }
-
- function raiseError($code, $msg) {
- return new Doku_Cli_Opts_Error($code, $msg);
- }
-
- function isError($obj) {
- return is_a($obj, 'Doku_Cli_Opts_Error');
- }
-
-}
-
-//------------------------------------------------------------------------------
-class Doku_Cli_Opts_Error {
-
- var $code;
- var $msg;
-
- function Doku_Cli_Opts_Error($code, $msg) {
- $this->code = $code;
- $this->msg = $msg;
- }
-
- function getMessage() {
- return $this->msg;
- }
-
- function isError() {
- return true;
- }
-
-}
-
-//------------------------------------------------------------------------------
-class Doku_Cli_Opts_Container {
-
- var $options = array();
- var $args = array();
-
- function Doku_Cli_Opts_Container($options) {
- foreach ( $options[0] as $option ) {
- if ( false !== ( strpos($option[0], '--') ) ) {
- $opt_name = substr($option[0], 2);
- } else {
- $opt_name = $option[0];
- }
- $this->options[$opt_name] = $option[1];
- }
-
-
- $this->args = $options[1];
- }
-
- function has($option) {
- return array_key_exists($option, $this->options);
- }
-
- function get($option) {
- if ( isset($this->options[$option]) ) {
- return ( $this->options[$option] ) ;
- }
- }
-
- function arg($index) {
- if ( isset($this->args[$index]) ) {
- return $this->args[$index];
- }
- }
-
- function numArgs() {
- return count($this->args);
- }
-
- function hasArgs() {
- return count($this->args) !== 0;
- }
-
- function isError() {
- return false;
- }
-
-}
+<?php
+/**
+* Brutally chopped and modified from http://pear.php.net/package/Console_Getopts
+*/
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2003 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 3.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available through the world-wide-web at the following url: |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license at php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Author: Andrei Zmievski <andrei at php.net> |
+// | Modified: Harry Fuecks hfuecks gmail.com |
+// +----------------------------------------------------------------------+
+//
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+
+//------------------------------------------------------------------------------
+/**
+* Sets up CLI environment based on SAPI and PHP version
+* Helps resolve some issues between the CGI and CLI SAPIs
+* as well is inconsistencies between PHP 4.3+ and older versions
+*/
+if (version_compare(phpversion(), '4.3.0', '<') || php_sapi_name() == 'cgi') {
+ // Handle output buffering
+ @ob_end_flush();
+ ob_implicit_flush(true);
+
+ // PHP ini settings
+ set_time_limit(0);
+ ini_set('track_errors', true);
+ ini_set('html_errors', false);
+ ini_set('magic_quotes_runtime', false);
+
+ // Define stream constants
+ define('STDIN', fopen('php://stdin', 'r'));
+ define('STDOUT', fopen('php://stdout', 'w'));
+ define('STDERR', fopen('php://stderr', 'w'));
+
+ // Close the streams on script termination
+ register_shutdown_function(
+ create_function('',
+ 'fclose(STDIN); fclose(STDOUT); fclose(STDERR); return true;')
+ );
+}
+
+//------------------------------------------------------------------------------
+/**
+* Error codes
+*/
+define('DOKU_CLI_OPTS_UNKNOWN_OPT',1); //Unrecognized option
+define('DOKU_CLI_OPTS_OPT_ARG_REQUIRED',2); //Option requires argument
+define('DOKU_CLI_OPTS_OPT_ARG_DENIED',3); //Option not allowed argument
+define('DOKU_CLI_OPTS_OPT_ABIGUOUS',4);//Option abiguous
+define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv
+
+//------------------------------------------------------------------------------
+/**
+ * Command-line options parsing class.
+ *
+ * @author Andrei Zmievski <andrei at php.net>
+ *
+ */
+ class Doku_Cli_Opts {
+
+ /**
+ * <?php ?>
+ * @see http://www.sitepoint.com/article/php-command-line-1/3
+ * @param string executing file name - this MUST be passed the __FILE__ constant
+ * @param string short options
+ * @param array (optional) long options
+ * @return Doku_Cli_Opts_Container or Doku_Cli_Opts_Error
+ */
+ function & getOptions($bin_file, $short_options, $long_options = null) {
+ $args = Doku_Cli_Opts::readPHPArgv();
+
+ if ( Doku_Cli_Opts::isError($args) ) {
+ return $args;
+ }
+
+ // Compatibility between "php extensions.php" and "./extensions.php"
+ if ( realpath($_SERVER['argv'][0]) == $bin_file ) {
+ $options = Doku_Cli_Opts::getOpt($args,$short_options,$long_options);
+ } else {
+ $options = Doku_Cli_Opts::getOpt2($args,$short_options,$long_options);
+ }
+
+ if ( Doku_Cli_Opts::isError($options) ) {
+ return $options;
+ }
+
+ $container = new Doku_Cli_Opts_Container($options);
+ return $container;
+ }
+
+ function getopt2($args, $short_options, $long_options = null) {
+ return Doku_Cli_Opts::doGetopt(
+ 2, $args, $short_options, $long_options
+ );
+ }
+
+ function getopt($args, $short_options, $long_options = null) {
+ return Doku_Cli_Opts::doGetopt(
+ 1, $args, $short_options, $long_options
+ );
+ }
+
+ function doGetopt($version, $args, $short_options, $long_options = null) {
+
+ // in case you pass directly readPHPArgv() as the first arg
+ if (Doku_Cli_Opts::isError($args)) {
+ return $args;
+ }
+ if (empty($args)) {
+ return array(array(), array());
+ }
+ $opts = array();
+ $non_opts = array();
+
+ settype($args, 'array');
+
+ if ($long_options && is_array($long_options)) {
+ sort($long_options);
+ }
+
+ /*
+ * Preserve backwards compatibility with callers that relied on
+ * erroneous POSIX fix.
+ */
+ if ($version < 2) {
+ if (isset($args[0]{0}) && $args[0]{0} != '-') {
+ array_shift($args);
+ }
+ }
+
+ reset($args);
+ while (list($i, $arg) = each($args)) {
+
+ /* The special element '--' means explicit end of
+ options. Treat the rest of the arguments as non-options
+ and end the loop. */
+ if ($arg == '--') {
+ $non_opts = array_merge($non_opts, array_slice($args, $i + 1));
+ break;
+ }
+
+ if ($arg{0} != '-' || (strlen($arg) > 1 && $arg{1} == '-' && !$long_options)) {
+ $non_opts = array_merge($non_opts, array_slice($args, $i));
+ break;
+ } elseif (strlen($arg) > 1 && $arg{1} == '-') {
+ $error = Doku_Cli_Opts::_parseLongOption(substr($arg, 2), $long_options, $opts, $args);
+ if (Doku_Cli_Opts::isError($error))
+ return $error;
+ } else {
+ $error = Doku_Cli_Opts::_parseShortOption(substr($arg, 1), $short_options, $opts, $args);
+ if (Doku_Cli_Opts::isError($error))
+ return $error;
+ }
+ }
+
+ return array($opts, $non_opts);
+ }
+
+ function _parseShortOption($arg, $short_options, &$opts, &$args) {
+ for ($i = 0; $i < strlen($arg); $i++) {
+ $opt = $arg{$i};
+ $opt_arg = null;
+
+ /* Try to find the short option in the specifier string. */
+ if (($spec = strstr($short_options, $opt)) === false || $arg{$i} == ':')
+ {
+ return Doku_Cli_Opts::raiseError(
+ DOKU_CLI_OPTS_UNKNOWN_OPT,
+ "Unrecognized option -- $opt"
+ );
+ }
+
+ if (strlen($spec) > 1 && $spec{1} == ':') {
+ if (strlen($spec) > 2 && $spec{2} == ':') {
+ if ($i + 1 < strlen($arg)) {
+ /* Option takes an optional argument. Use the remainder of
+ the arg string if there is anything left. */
+ $opts[] = array($opt, substr($arg, $i + 1));
+ break;
+ }
+ } else {
+ /* Option requires an argument. Use the remainder of the arg
+ string if there is anything left. */
+ if ($i + 1 < strlen($arg)) {
+ $opts[] = array($opt, substr($arg, $i + 1));
+ break;
+ } else if (list(, $opt_arg) = each($args))
+ /* Else use the next argument. */;
+ else
+ return Doku_Cli_Opts::raiseError(
+ DOKU_CLI_OPTS_OPT_ARG_REQUIRED,
+ "Option requires an argument -- $opt"
+ );
+ }
+ }
+
+ $opts[] = array($opt, $opt_arg);
+ }
+ }
+
+ function _parseLongOption($arg, $long_options, &$opts, &$args) {
+ @list($opt, $opt_arg) = explode('=', $arg);
+ $opt_len = strlen($opt);
+
+ for ($i = 0; $i < count($long_options); $i++) {
+ $long_opt = $long_options[$i];
+ $opt_start = substr($long_opt, 0, $opt_len);
+
+ /* Option doesn't match. Go on to the next one. */
+ if ($opt_start != $opt)
+ continue;
+
+ $opt_rest = substr($long_opt, $opt_len);
+
+ /* Check that the options uniquely matches one of the allowed
+ options. */
+ if ($opt_rest != '' && $opt{0} != '=' &&
+ $i + 1 < count($long_options) &&
+ $opt == substr($long_options[$i+1], 0, $opt_len)) {
+ return Doku_Cli_Opts::raiseError(
+ DOKU_CLI_OPTS_OPT_ABIGUOUS,
+ "Option --$opt is ambiguous"
+ );
+ }
+
+ if (substr($long_opt, -1) == '=') {
+ if (substr($long_opt, -2) != '==') {
+ /* Long option requires an argument.
+ Take the next argument if one wasn't specified. */;
+ if (!strlen($opt_arg) && !(list(, $opt_arg) = each($args))) {
+ return Doku_Cli_Opts::raiseError(
+ DOKU_CLI_OPTS_OPT_ARG_REQUIRED,
+ "Option --$opt requires an argument"
+ );
+ }
+ }
+ } else if ($opt_arg) {
+ return Doku_Cli_Opts::raiseError(
+ DOKU_CLI_OPTS_OPT_ARG_DENIED,
+ "Option --$opt doesn't allow an argument"
+ );
+ }
+
+ $opts[] = array('--' . $opt, $opt_arg);
+ return;
+ }
+
+ return Doku_Cli_Opts::raiseError(
+ DOKU_CLI_OPTS_UNKNOWN_OPT,
+ "Unrecognized option --$opt"
+ );
+ }
+
+ function readPHPArgv() {
+ global $argv;
+ if (!is_array($argv)) {
+ if (!@is_array($_SERVER['argv'])) {
+ if (!@is_array($GLOBALS['HTTP_SERVER_VARS']['argv'])) {
+ return Doku_Cli_Opts::raiseError(
+ DOKU_CLI_OPTS_ARG_READ,
+ "Could not read cmd args (register_argc_argv=Off?)"
+ );
+ }
+ return $GLOBALS['HTTP_SERVER_VARS']['argv'];
+ }
+ return $_SERVER['argv'];
+ }
+ return $argv;
+ }
+
+ function raiseError($code, $msg) {
+ return new Doku_Cli_Opts_Error($code, $msg);
+ }
+
+ function isError($obj) {
+ return is_a($obj, 'Doku_Cli_Opts_Error');
+ }
+
+}
+
+//------------------------------------------------------------------------------
+class Doku_Cli_Opts_Error {
+
+ var $code;
+ var $msg;
+
+ function Doku_Cli_Opts_Error($code, $msg) {
+ $this->code = $code;
+ $this->msg = $msg;
+ }
+
+ function getMessage() {
+ return $this->msg;
+ }
+
+ function isError() {
+ return true;
+ }
+
+}
+
+//------------------------------------------------------------------------------
+class Doku_Cli_Opts_Container {
+
+ var $options = array();
+ var $args = array();
+
+ function Doku_Cli_Opts_Container($options) {
+ foreach ( $options[0] as $option ) {
+ if ( false !== ( strpos($option[0], '--') ) ) {
+ $opt_name = substr($option[0], 2);
+ } else {
+ $opt_name = $option[0];
+ }
+ $this->options[$opt_name] = $option[1];
+ }
+
+
+ $this->args = $options[1];
+ }
+
+ function has($option) {
+ return array_key_exists($option, $this->options);
+ }
+
+ function get($option) {
+ if ( isset($this->options[$option]) ) {
+ return ( $this->options[$option] ) ;
+ }
+ }
+
+ function arg($index) {
+ if ( isset($this->args[$index]) ) {
+ return $this->args[$index];
+ }
+ }
+
+ function numArgs() {
+ return count($this->args);
+ }
+
+ function hasArgs() {
+ return count($this->args) !== 0;
+ }
+
+ function isError() {
+ return false;
+ }
+
+}
Modified: site/trunk/www-root/wiki/inc/common.php
===================================================================
--- site/trunk/www-root/wiki/inc/common.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/common.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1210 +1,1209 @@
-<?php
-/**
- * Common DokuWiki functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-require_once(DOKU_CONF.'dokuwiki.php');
-require_once(DOKU_INC.'inc/io.php');
-require_once(DOKU_INC.'inc/changelog.php');
-require_once(DOKU_INC.'inc/utf8.php');
-require_once(DOKU_INC.'inc/mail.php');
-require_once(DOKU_INC.'inc/parserutils.php');
-require_once(DOKU_INC.'inc/infoutils.php');
-
-/**
- * These constants are used with the recents function
- */
-define('RECENTS_SKIP_DELETED',2);
-define('RECENTS_SKIP_MINORS',4);
-define('RECENTS_SKIP_SUBSPACES',8);
-
-/**
- * Wrapper around htmlspecialchars()
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see htmlspecialchars()
- */
-function hsc($string){
- return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
-}
-
-/**
- * print a newline terminated string
- *
- * You can give an indention as optional parameter
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ptln($string,$indent=0){
- echo str_repeat(' ', $indent)."$string\n";
-}
-
-/**
- * strips control characters (<32) from the given string
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function stripctl($string){
- return preg_replace('/[\x00-\x1F]+/s','',$string);
-}
-
-/**
- * Return a secret token to be used for CSRF attack prevention
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @link http://en.wikipedia.org/wiki/Cross-site_request_forgery
- * @link http://christ1an.blogspot.com/2007/04/preventing-csrf-efficiently.html
- * @return string
- */
-function getSecurityToken(){
- return md5(auth_cookiesalt().session_id());
-}
-
-/**
- * Check the secret CSRF token
- */
-function checkSecurityToken($token=null){
- if(is_null($token)) $token = $_REQUEST['sectok'];
- if(getSecurityToken() != $token){
- msg('Security Token did not match. Possible CSRF attack.',-1);
- return false;
- }
- return true;
-}
-
-/**
- * Print a hidden form field with a secret CSRF token
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function formSecurityToken($print=true){
- $ret = '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" /></div>'."\n";
- if($print){
- echo $ret;
- }else{
- return $ret;
- }
-}
-
-/**
- * Return info about the current document as associative
- * array.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function pageinfo(){
- global $ID;
- global $REV;
- global $USERINFO;
- global $conf;
-
- // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml
- // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary
- $info['id'] = $ID;
- $info['rev'] = $REV;
-
- if($_SERVER['REMOTE_USER']){
- $info['userinfo'] = $USERINFO;
- $info['perm'] = auth_quickaclcheck($ID);
- $info['subscribed'] = is_subscribed($ID,$_SERVER['REMOTE_USER'],false);
- $info['subscribedns'] = is_subscribed($ID,$_SERVER['REMOTE_USER'],true);
- $info['client'] = $_SERVER['REMOTE_USER'];
-
- // set info about manager/admin status
- $info['isadmin'] = false;
- $info['ismanager'] = false;
- if($info['perm'] == AUTH_ADMIN){
- $info['isadmin'] = true;
- $info['ismanager'] = true;
- }elseif(auth_ismanager()){
- $info['ismanager'] = true;
- }
-
- // if some outside auth were used only REMOTE_USER is set
- if(!$info['userinfo']['name']){
- $info['userinfo']['name'] = $_SERVER['REMOTE_USER'];
- }
-
- }else{
- $info['perm'] = auth_aclcheck($ID,'',null);
- $info['subscribed'] = false;
- $info['client'] = clientIP(true);
- }
-
- $info['namespace'] = getNS($ID);
- $info['locked'] = checklock($ID);
- $info['filepath'] = fullpath(wikiFN($ID));
- $info['exists'] = @file_exists($info['filepath']);
- if($REV){
- //check if current revision was meant
- if($info['exists'] && (@filemtime($info['filepath'])==$REV)){
- $REV = '';
- }else{
- //really use old revision
- $info['filepath'] = fullpath(wikiFN($ID,$REV));
- $info['exists'] = @file_exists($info['filepath']);
- }
- }
- $info['rev'] = $REV;
- if($info['exists']){
- $info['writable'] = (is_writable($info['filepath']) &&
- ($info['perm'] >= AUTH_EDIT));
- }else{
- $info['writable'] = ($info['perm'] >= AUTH_CREATE);
- }
- $info['editable'] = ($info['writable'] && empty($info['lock']));
- $info['lastmod'] = @filemtime($info['filepath']);
-
- //load page meta data
- $info['meta'] = p_get_metadata($ID);
-
- //who's the editor
- if($REV){
- $revinfo = getRevisionInfo($ID, $REV, 1024);
- }else{
- if (is_array($info['meta']['last_change'])) {
- $revinfo = $info['meta']['last_change'];
- } else {
- $revinfo = getRevisionInfo($ID, $info['lastmod'], 1024);
- // cache most recent changelog line in metadata if missing and still valid
- if ($revinfo!==false) {
- $info['meta']['last_change'] = $revinfo;
- p_set_metadata($ID, array('last_change' => $revinfo));
- }
- }
- }
- //and check for an external edit
- if($revinfo!==false && $revinfo['date']!=$info['lastmod']){
- // cached changelog line no longer valid
- $revinfo = false;
- $info['meta']['last_change'] = $revinfo;
- p_set_metadata($ID, array('last_change' => $revinfo));
- }
-
- $info['ip'] = $revinfo['ip'];
- $info['user'] = $revinfo['user'];
- $info['sum'] = $revinfo['sum'];
- // See also $INFO['meta']['last_change'] which is the most recent log line for page $ID.
- // Use $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT in place of $info['minor'].
-
- if($revinfo['user']){
- $info['editor'] = $revinfo['user'];
- }else{
- $info['editor'] = $revinfo['ip'];
- }
-
- // draft
- $draft = getCacheName($info['client'].$ID,'.draft');
- if(@file_exists($draft)){
- if(@filemtime($draft) < @filemtime(wikiFN($ID))){
- // remove stale draft
- @unlink($draft);
- }else{
- $info['draft'] = $draft;
- }
- }
-
- return $info;
-}
-
-/**
- * Build an string of URL parameters
- *
- * @author Andreas Gohr
- */
-function buildURLparams($params, $sep='&'){
- $url = '';
- $amp = false;
- foreach($params as $key => $val){
- if($amp) $url .= $sep;
-
- $url .= $key.'=';
- $url .= rawurlencode($val);
- $amp = true;
- }
- return $url;
-}
-
-/**
- * Build an string of html tag attributes
- *
- * Skips keys starting with '_', values get HTML encoded
- *
- * @author Andreas Gohr
- */
-function buildAttributes($params,$skipempty=false){
- $url = '';
- foreach($params as $key => $val){
- if($key{0} == '_') continue;
- if($val === '' && $skipempty) continue;
-
- $url .= $key.'="';
- $url .= htmlspecialchars ($val);
- $url .= '" ';
- }
- return $url;
-}
-
-
-/**
- * This builds the breadcrumb trail and returns it as array
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function breadcrumbs(){
- // we prepare the breadcrumbs early for quick session closing
- static $crumbs = null;
- if($crumbs != null) return $crumbs;
-
- global $ID;
- global $ACT;
- global $conf;
- $crumbs = $_SESSION[DOKU_COOKIE]['bc'];
-
- //first visit?
- if (!is_array($crumbs)){
- $crumbs = array();
- }
- //we only save on show and existing wiki documents
- $file = wikiFN($ID);
- if($ACT != 'show' || !@file_exists($file)){
- $_SESSION[DOKU_COOKIE]['bc'] = $crumbs;
- return $crumbs;
- }
-
- // page names
- $name = noNSorNS($ID);
- if ($conf['useheading']) {
- // get page title
- $title = p_get_first_heading($ID,true);
- if ($title) {
- $name = $title;
- }
- }
-
- //remove ID from array
- if (isset($crumbs[$ID])) {
- unset($crumbs[$ID]);
- }
-
- //add to array
- $crumbs[$ID] = $name;
- //reduce size
- while(count($crumbs) > $conf['breadcrumbs']){
- array_shift($crumbs);
- }
- //save to session
- $_SESSION[DOKU_COOKIE]['bc'] = $crumbs;
- return $crumbs;
-}
-
-/**
- * Filter for page IDs
- *
- * This is run on a ID before it is outputted somewhere
- * currently used to replace the colon with something else
- * on Windows systems and to have proper URL encoding
- *
- * Urlencoding is ommitted when the second parameter is false
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function idfilter($id,$ue=true){
- global $conf;
- if ($conf['useslash'] && $conf['userewrite']){
- $id = strtr($id,':','/');
- }elseif (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' &&
- $conf['userewrite']) {
- $id = strtr($id,':',';');
- }
- if($ue){
- $id = rawurlencode($id);
- $id = str_replace('%3A',':',$id); //keep as colon
- $id = str_replace('%2F','/',$id); //keep as slash
- }
- return $id;
-}
-
-/**
- * This builds a link to a wikipage
- *
- * It handles URL rewriting and adds additional parameter if
- * given in $more
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function wl($id='',$more='',$abs=false,$sep='&'){
- global $conf;
- if(is_array($more)){
- $more = buildURLparams($more,$sep);
- }else{
- $more = str_replace(',',$sep,$more);
- }
-
- $id = idfilter($id);
- if($abs){
- $xlink = DOKU_URL;
- }else{
- $xlink = DOKU_BASE;
- }
-
- if($conf['userewrite'] == 2){
- $xlink .= DOKU_SCRIPT.'/'.$id;
- if($more) $xlink .= '?'.$more;
- }elseif($conf['userewrite']){
- $xlink .= $id;
- if($more) $xlink .= '?'.$more;
- }elseif($id){
- $xlink .= DOKU_SCRIPT.'?id='.$id;
- if($more) $xlink .= $sep.$more;
- }else{
- $xlink .= DOKU_SCRIPT;
- if($more) $xlink .= '?'.$more;
- }
-
- return $xlink;
-}
-
-/**
- * This builds a link to an alternate page format
- *
- * Handles URL rewriting if enabled. Follows the style of wl().
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function exportlink($id='',$format='raw',$more='',$abs=false,$sep='&'){
- global $conf;
- if(is_array($more)){
- $more = buildURLparams($more,$sep);
- }else{
- $more = str_replace(',',$sep,$more);
- }
-
- $format = rawurlencode($format);
- $id = idfilter($id);
- if($abs){
- $xlink = DOKU_URL;
- }else{
- $xlink = DOKU_BASE;
- }
-
- if($conf['userewrite'] == 2){
- $xlink .= DOKU_SCRIPT.'/'.$id.'?do=export_'.$format;
- if($more) $xlink .= $sep.$more;
- }elseif($conf['userewrite'] == 1){
- $xlink .= '_export/'.$format.'/'.$id;
- if($more) $xlink .= '?'.$more;
- }else{
- $xlink .= DOKU_SCRIPT.'?do=export_'.$format.$sep.'id='.$id;
- if($more) $xlink .= $sep.$more;
- }
-
- return $xlink;
-}
-
-/**
- * Build a link to a media file
- *
- * Will return a link to the detail page if $direct is false
- */
-function ml($id='',$more='',$direct=true,$sep='&',$abs=false){
- global $conf;
- if(is_array($more)){
- $more = buildURLparams($more,$sep);
- }else{
- $more = str_replace(',',$sep,$more);
- }
-
- if($abs){
- $xlink = DOKU_URL;
- }else{
- $xlink = DOKU_BASE;
- }
-
- // external URLs are always direct without rewriting
- if(preg_match('#^(https?|ftp)://#i',$id)){
- $xlink .= 'lib/exe/fetch.php';
- if($more){
- $xlink .= '?'.$more;
- $xlink .= $sep.'media='.rawurlencode($id);
- }else{
- $xlink .= '?media='.rawurlencode($id);
- }
- return $xlink;
- }
-
- $id = idfilter($id);
-
- // decide on scriptname
- if($direct){
- if($conf['userewrite'] == 1){
- $script = '_media';
- }else{
- $script = 'lib/exe/fetch.php';
- }
- }else{
- if($conf['userewrite'] == 1){
- $script = '_detail';
- }else{
- $script = 'lib/exe/detail.php';
- }
- }
-
- // build URL based on rewrite mode
- if($conf['userewrite']){
- $xlink .= $script.'/'.$id;
- if($more) $xlink .= '?'.$more;
- }else{
- if($more){
- $xlink .= $script.'?'.$more;
- $xlink .= $sep.'media='.$id;
- }else{
- $xlink .= $script.'?media='.$id;
- }
- }
-
- return $xlink;
-}
-
-
-
-/**
- * Just builds a link to a script
- *
- * @todo maybe obsolete
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function script($script='doku.php'){
-# $link = getBaseURL();
-# $link .= $script;
-# return $link;
- return DOKU_BASE.DOKU_SCRIPT;
-}
-
-/**
- * Spamcheck against wordlist
- *
- * Checks the wikitext against a list of blocked expressions
- * returns true if the text contains any bad words
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function checkwordblock(){
- global $TEXT;
- global $conf;
-
- if(!$conf['usewordblock']) return false;
-
- // we prepare the text a tiny bit to prevent spammers circumventing URL checks
- $text = preg_replace('!(\b)(www\.[\w.:?\-;,]+?\.[\w.:?\-;,]+?[\w/\#~:.?+=&%@\!\-.:?\-;,]+?)([.:?\-;,]*[^\w/\#~:.?+=&%@\!\-.:?\-;,])!i','\1http://\2 \2\3',$TEXT);
-
- $wordblocks = getWordblocks();
- //how many lines to read at once (to work around some PCRE limits)
- if(version_compare(phpversion(),'4.3.0','<')){
- //old versions of PCRE define a maximum of parenthesises even if no
- //backreferences are used - the maximum is 99
- //this is very bad performancewise and may even be too high still
- $chunksize = 40;
- }else{
- //read file in chunks of 200 - this should work around the
- //MAX_PATTERN_SIZE in modern PCRE
- $chunksize = 200;
- }
- while($blocks = array_splice($wordblocks,0,$chunksize)){
- $re = array();
- #build regexp from blocks
- foreach($blocks as $block){
- $block = preg_replace('/#.*$/','',$block);
- $block = trim($block);
- if(empty($block)) continue;
- $re[] = $block;
- }
- if(count($re) && preg_match('#('.join('|',$re).')#si',$text)) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * Return the IP of the client
- *
- * Honours X-Forwarded-For and X-Real-IP Proxy Headers
- *
- * It returns a comma separated list of IPs if the above mentioned
- * headers are set. If the single parameter is set, it tries to return
- * a routable public address, prefering the ones suplied in the X
- * headers
- *
- * @param boolean $single If set only a single IP is returned
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function clientIP($single=false){
- $ip = array();
- $ip[] = $_SERVER['REMOTE_ADDR'];
- if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
- $ip = array_merge($ip,explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']));
- if(!empty($_SERVER['HTTP_X_REAL_IP']))
- $ip = array_merge($ip,explode(',',$_SERVER['HTTP_X_REAL_IP']));
-
- // remove any non-IP stuff
- $cnt = count($ip);
- $match = array();
- for($i=0; $i<$cnt; $i++){
- if(preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$ip[$i],$match)) {
- $ip[$i] = $match[0];
- } else {
- $ip[$i] = '';
- }
- if(empty($ip[$i])) unset($ip[$i]);
- }
- $ip = array_values(array_unique($ip));
- if(!$ip[0]) $ip[0] = '0.0.0.0'; // for some strange reason we don't have a IP
-
- if(!$single) return join(',',$ip);
-
- // decide which IP to use, trying to avoid local addresses
- $ip = array_reverse($ip);
- foreach($ip as $i){
- if(preg_match('/^(127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/',$i)){
- continue;
- }else{
- return $i;
- }
- }
- // still here? just use the first (last) address
- return $ip[0];
-}
-
-/**
- * Convert one or more comma separated IPs to hostnames
- *
- * @author Glen Harris <astfgl at iamnota.org>
- * @returns a comma separated list of hostnames
- */
-function gethostsbyaddrs($ips){
- $hosts = array();
- $ips = explode(',',$ips);
-
- if(is_array($ips)) {
- foreach($ips as $ip){
- $hosts[] = gethostbyaddr(trim($ip));
- }
- return join(',',$hosts);
- } else {
- return gethostbyaddr(trim($ips));
- }
-}
-
-/**
- * Checks if a given page is currently locked.
- *
- * removes stale lockfiles
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function checklock($id){
- global $conf;
- $lock = wikiLockFN($id);
-
- //no lockfile
- if(!@file_exists($lock)) return false;
-
- //lockfile expired
- if((time() - filemtime($lock)) > $conf['locktime']){
- @unlink($lock);
- return false;
- }
-
- //my own lock
- $ip = io_readFile($lock);
- if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){
- return false;
- }
-
- return $ip;
-}
-
-/**
- * Lock a page for editing
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function lock($id){
- $lock = wikiLockFN($id);
- if($_SERVER['REMOTE_USER']){
- io_saveFile($lock,$_SERVER['REMOTE_USER']);
- }else{
- io_saveFile($lock,clientIP());
- }
-}
-
-/**
- * Unlock a page if it was locked by the user
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool true if a lock was removed
- */
-function unlock($id){
- $lock = wikiLockFN($id);
- if(@file_exists($lock)){
- $ip = io_readFile($lock);
- if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){
- @unlink($lock);
- return true;
- }
- }
- return false;
-}
-
-/**
- * convert line ending to unix format
- *
- * @see formText() for 2crlf conversion
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function cleanText($text){
- $text = preg_replace("/(\015\012)|(\015)/","\012",$text);
- return $text;
-}
-
-/**
- * Prepares text for print in Webforms by encoding special chars.
- * It also converts line endings to Windows format which is
- * pseudo standard for webforms.
- *
- * @see cleanText() for 2unix conversion
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function formText($text){
- $text = str_replace("\012","\015\012",$text);
- return htmlspecialchars($text);
-}
-
-/**
- * Returns the specified local text in raw format
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function rawLocale($id){
- return io_readFile(localeFN($id));
-}
-
-/**
- * Returns the raw WikiText
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function rawWiki($id,$rev=''){
- return io_readWikiPage(wikiFN($id, $rev), $id, $rev);
-}
-
-/**
- * Returns the pagetemplate contents for the ID's namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function pageTemplate($data){
- $id = $data[0];
- global $conf;
- global $INFO;
-
- $path = dirname(wikiFN($id));
-
- if(@file_exists($path.'/_template.txt')){
- $tpl = io_readFile($path.'/_template.txt');
- }else{
- // search upper namespaces for templates
- $len = strlen(rtrim($conf['datadir'],'/'));
- while (strlen($path) >= $len){
- if(@file_exists($path.'/__template.txt')){
- $tpl = io_readFile($path.'/__template.txt');
- break;
- }
- $path = substr($path, 0, strrpos($path, '/'));
- }
- }
- if(!$tpl) return '';
-
- // replace placeholders
- $tpl = str_replace('@ID@',$id,$tpl);
- $tpl = str_replace('@NS@',getNS($id),$tpl);
- $tpl = str_replace('@PAGE@',strtr(noNS($id),'_',' '),$tpl);
- $tpl = str_replace('@USER@',$_SERVER['REMOTE_USER'],$tpl);
- $tpl = str_replace('@NAME@',$INFO['userinfo']['name'],$tpl);
- $tpl = str_replace('@MAIL@',$INFO['userinfo']['mail'],$tpl);
- $tpl = str_replace('@DATE@',$conf['dformat'],$tpl);
- $tpl = strftime($tpl);
- return $tpl;
-}
-
-
-/**
- * Returns the raw Wiki Text in three slices.
- *
- * The range parameter needs to have the form "from-to"
- * and gives the range of the section in bytes - no
- * UTF-8 awareness is needed.
- * The returned order is prefix, section and suffix.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function rawWikiSlices($range,$id,$rev=''){
- list($from,$to) = split('-',$range,2);
- $text = io_readWikiPage(wikiFN($id, $rev), $id, $rev);
- if(!$from) $from = 0;
- if(!$to) $to = strlen($text)+1;
-
- $slices[0] = substr($text,0,$from-1);
- $slices[1] = substr($text,$from-1,$to-$from);
- $slices[2] = substr($text,$to);
-
- return $slices;
-}
-
-/**
- * Joins wiki text slices
- *
- * function to join the text slices with correct lineendings again.
- * When the pretty parameter is set to true it adds additional empty
- * lines between sections if needed (used on saving).
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function con($pre,$text,$suf,$pretty=false){
-
- if($pretty){
- if($pre && substr($pre,-1) != "\n") $pre .= "\n";
- if($suf && substr($text,-1) != "\n") $text .= "\n";
- }
-
- if($pre) $pre .= "\n";
- if($suf) $text .= "\n";
- return $pre.$text.$suf;
-}
-
-/**
- * Saves a wikitext by calling io_writeWikiPage.
- * Also directs changelog and attic updates.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function saveWikiText($id,$text,$summary,$minor=false){
- /* Note to developers:
- This code is subtle and delicate. Test the behavior of
- the attic and changelog with dokuwiki and external edits
- after any changes. External edits change the wiki page
- directly without using php or dokuwiki.
- */
- global $conf;
- global $lang;
- global $REV;
- // ignore if no changes were made
- if($text == rawWiki($id,'')){
- return;
- }
-
- $file = wikiFN($id);
- $old = @filemtime($file); // from page
- $wasRemoved = empty($text);
- $wasCreated = !@file_exists($file);
- $wasReverted = ($REV==true);
- $newRev = false;
- $oldRev = getRevisions($id, -1, 1, 1024); // from changelog
- $oldRev = (int)(empty($oldRev)?0:$oldRev[0]);
- if(!@file_exists(wikiFN($id, $old)) && @file_exists($file) && $old>=$oldRev) {
- // add old revision to the attic if missing
- saveOldRevision($id);
- // add a changelog entry if this edit came from outside dokuwiki
- if ($old>$oldRev) {
- addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=>true));
- // remove soon to be stale instructions
- $cache = new cache_instructions($id, $file);
- $cache->removeCache();
- }
- }
-
- if ($wasRemoved){
- // Send "update" event with empty data, so plugins can react to page deletion
- $data = array(array($file, '', false), getNS($id), noNS($id), false);
- trigger_event('IO_WIKIPAGE_WRITE', $data);
- // pre-save deleted revision
- @touch($file);
- clearstatcache();
- $newRev = saveOldRevision($id);
- // remove empty file
- @unlink($file);
- // remove old meta info...
- $mfiles = metaFiles($id);
- $changelog = metaFN($id, '.changes');
- $metadata = metaFN($id, '.meta');
- foreach ($mfiles as $mfile) {
- // but keep per-page changelog to preserve page history and keep meta data
- if (@file_exists($mfile) && $mfile!==$changelog && $mfile!==$metadata) { @unlink($mfile); }
- }
- // purge meta data
- p_purge_metadata($id);
- $del = true;
- // autoset summary on deletion
- if(empty($summary)) $summary = $lang['deleted'];
- // remove empty namespaces
- io_sweepNS($id, 'datadir');
- io_sweepNS($id, 'mediadir');
- }else{
- // save file (namespace dir is created in io_writeWikiPage)
- io_writeWikiPage($file, $text, $id);
- // pre-save the revision, to keep the attic in sync
- $newRev = saveOldRevision($id);
- $del = false;
- }
-
- // select changelog line type
- $extra = '';
- $type = DOKU_CHANGE_TYPE_EDIT;
- if ($wasReverted) {
- $type = DOKU_CHANGE_TYPE_REVERT;
- $extra = $REV;
- }
- else if ($wasCreated) { $type = DOKU_CHANGE_TYPE_CREATE; }
- else if ($wasRemoved) { $type = DOKU_CHANGE_TYPE_DELETE; }
- else if ($minor && $conf['useacl'] && $_SERVER['REMOTE_USER']) { $type = DOKU_CHANGE_TYPE_MINOR_EDIT; } //minor edits only for logged in users
-
- addLogEntry($newRev, $id, $type, $summary, $extra);
- // send notify mails
- notify($id,'admin',$old,$summary,$minor);
- notify($id,'subscribers',$old,$summary,$minor);
-
- // update the purgefile (timestamp of the last time anything within the wiki was changed)
- io_saveFile($conf['cachedir'].'/purgefile',time());
-}
-
-/**
- * moves the current version to the attic and returns its
- * revision date
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function saveOldRevision($id){
- global $conf;
- $oldf = wikiFN($id);
- if(!@file_exists($oldf)) return '';
- $date = filemtime($oldf);
- $newf = wikiFN($id,$date);
- io_writeWikiPage($newf, rawWiki($id), $id, $date);
- return $date;
-}
-
-/**
- * Sends a notify mail on page change
- *
- * @param string $id The changed page
- * @param string $who Who to notify (admin|subscribers)
- * @param int $rev Old page revision
- * @param string $summary What changed
- * @param boolean $minor Is this a minor edit?
- * @param array $replace Additional string substitutions, @KEY@ to be replaced by value
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){
- global $lang;
- global $conf;
- global $INFO;
-
- // decide if there is something to do
- if($who == 'admin'){
- if(empty($conf['notify'])) return; //notify enabled?
- $text = rawLocale('mailtext');
- $to = $conf['notify'];
- $bcc = '';
- }elseif($who == 'subscribers'){
- if(!$conf['subscribers']) return; //subscribers enabled?
- if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) return; //skip minors
- $bcc = subscriber_addresslist($id);
- if(empty($bcc)) return;
- $to = '';
- $text = rawLocale('subscribermail');
- }elseif($who == 'register'){
- if(empty($conf['registernotify'])) return;
- $text = rawLocale('registermail');
- $to = $conf['registernotify'];
- $bcc = '';
- }else{
- return; //just to be safe
- }
-
- $ip = clientIP();
- $text = str_replace('@DATE@',strftime($conf['dformat']),$text);
- $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text);
- $text = str_replace('@IPADDRESS@',$ip,$text);
- $text = str_replace('@HOSTNAME@',gethostsbyaddrs($ip),$text);
- $text = str_replace('@NEWPAGE@',wl($id,'',true,'&'),$text);
- $text = str_replace('@PAGE@',$id,$text);
- $text = str_replace('@TITLE@',$conf['title'],$text);
- $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
- $text = str_replace('@SUMMARY@',$summary,$text);
- $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text);
-
- foreach ($replace as $key => $substitution) {
- $text = str_replace('@'.strtoupper($key).'@',$substitution, $text);
- }
-
- if($who == 'register'){
- $subject = $lang['mail_new_user'].' '.$summary;
- }elseif($rev){
- $subject = $lang['mail_changed'].' '.$id;
- $text = str_replace('@OLDPAGE@',wl($id,"rev=$rev",true,'&'),$text);
- require_once(DOKU_INC.'inc/DifferenceEngine.php');
- $df = new Diff(split("\n",rawWiki($id,$rev)),
- split("\n",rawWiki($id)));
- $dformat = new UnifiedDiffFormatter();
- $diff = $dformat->format($df);
- }else{
- $subject=$lang['mail_newpage'].' '.$id;
- $text = str_replace('@OLDPAGE@','none',$text);
- $diff = rawWiki($id);
- }
- $text = str_replace('@DIFF@',$diff,$text);
- $subject = '['.$conf['title'].'] '.$subject;
-
- $from = $conf['mailfrom'];
- $from = str_replace('@USER@',$_SERVER['REMOTE_USER'],$from);
- $from = str_replace('@NAME@',$INFO['userinfo']['name'],$from);
- $from = str_replace('@MAIL@',$INFO['userinfo']['mail'],$from);
-
- mail_send($to,$subject,$text,$from,'',$bcc);
-}
-
-/**
- * extracts the query from a search engine referrer
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Todd Augsburger <todd at rollerorgans.com>
- */
-function getGoogleQuery(){
- $url = parse_url($_SERVER['HTTP_REFERER']);
- if(!$url) return '';
-
- $query = array();
- parse_str($url['query'],$query);
- if(isset($query['q']))
- $q = $query['q']; // google, live/msn, aol, ask, altavista, alltheweb, gigablast
- elseif(isset($query['p']))
- $q = $query['p']; // yahoo
- elseif(isset($query['query']))
- $q = $query['query']; // lycos, netscape, clusty, hotbot
- elseif(preg_match("#a9\.com#i",$url['host'])) // a9
- $q = urldecode(ltrim($url['path'],'/'));
-
- if(!$q) return '';
- $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/',$q,-1,PREG_SPLIT_NO_EMPTY);
- return $q;
-}
-
-/**
- * Try to set correct locale
- *
- * @deprecated No longer used
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function setCorrectLocale(){
- global $conf;
- global $lang;
-
- $enc = strtoupper($lang['encoding']);
- foreach ($lang['locales'] as $loc){
- //try locale
- if(@setlocale(LC_ALL,$loc)) return;
- //try loceale with encoding
- if(@setlocale(LC_ALL,"$loc.$enc")) return;
- }
- //still here? try to set from environment
- @setlocale(LC_ALL,"");
-}
-
-/**
- * Return the human readable size of a file
- *
- * @param int $size A file size
- * @param int $dec A number of decimal places
- * @author Martin Benjamin <b.martin at cybernet.ch>
- * @author Aidan Lister <aidan at php.net>
- * @version 1.0.0
- */
-function filesize_h($size, $dec = 1){
- $sizes = array('B', 'KB', 'MB', 'GB');
- $count = count($sizes);
- $i = 0;
-
- while ($size >= 1024 && ($i < $count - 1)) {
- $size /= 1024;
- $i++;
- }
-
- return round($size, $dec) . ' ' . $sizes[$i];
-}
-
-/**
- * return an obfuscated email address in line with $conf['mailguard'] setting
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-function obfuscate($email) {
- global $conf;
-
- switch ($conf['mailguard']) {
- case 'visible' :
- $obfuscate = array('@' => ' [at] ', '.' => ' [dot] ', '-' => ' [dash] ');
- return strtr($email, $obfuscate);
-
- case 'hex' :
- $encode = '';
- for ($x=0; $x < strlen($email); $x++) $encode .= '&#x' . bin2hex($email{$x}).';';
- return $encode;
-
- case 'none' :
- default :
- return $email;
- }
-}
-
-/**
- * Let us know if a user is tracking a page or a namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function is_subscribed($id,$uid,$ns=false){
- if(!$ns) {
- $file=metaFN($id,'.mlist');
- } else {
- if(!getNS($id)) {
- $file = metaFN(getNS($id),'.mlist');
- } else {
- $file = metaFN(getNS($id),'/.mlist');
- }
- }
- if (@file_exists($file)) {
- $mlist = file($file);
- $pos = array_search($uid."\n",$mlist);
- return is_int($pos);
- }
-
- return false;
-}
-
-/**
- * Return a string with the email addresses of all the
- * users subscribed to a page
- *
- * @author Steven Danz <steven-danz at kc.rr.com>
- */
-function subscriber_addresslist($id){
- global $conf;
- global $auth;
-
- $emails = '';
-
- if (!$conf['subscribers']) return;
-
- // load the page mlist file content
- $mlist = array();
- $file=metaFN($id,'.mlist');
- if (@file_exists($file)) {
- $mlist = file($file);
- }
- if(count($mlist) > 0) {
- foreach ($mlist as $who) {
- $who = rtrim($who);
- $info = $auth->getUserData($who);
- if($info === false) continue;
- $level = auth_aclcheck($id,$who,$info['grps']);
- if ($level >= AUTH_READ) {
- if (strcasecmp($info['mail'],$conf['notify']) != 0) {
- if (empty($emails)) {
- $emails = $info['mail'];
- } else {
- $emails = "$emails,".$info['mail'];
- }
- }
- }
- }
- }
-
- // load also the namespace mlist file content
- if(!getNS($id)) {
- $nsfile = metaFN(getNS($id),'.mlist');
- } else {
- $nsfile = metaFN(getNS($id),'/.mlist');
- }
- if (@file_exists($nsfile)) {
- $mlist = file($nsfile);
- }
- if(count($mlist) > 0) {
- foreach ($mlist as $who) {
- $who = rtrim($who);
- $info = $auth->getUserData($who);
- if($info === false) continue;
- $level = auth_aclcheck($id,$who,$info['grps']);
- if ($level >= AUTH_READ) {
- if (strcasecmp($info['mail'],$conf['notify']) != 0) {
- if (empty($emails)) {
- $emails = $info['mail'];
- } else {
- $emails = "$emails,".$info['mail'];
- }
- }
- }
- }
- }
-
- return $emails;
-}
-
-/**
- * Removes quoting backslashes
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function unslash($string,$char="'"){
- return str_replace('\\'.$char,$char,$string);
-}
-
-/**
- * Convert php.ini shorthands to byte
- *
- * @author <gilthans dot NO dot SPAM at gmail dot com>
- * @link http://de3.php.net/manual/en/ini.core.php#79564
- */
-function php_to_byte($v){
- $l = substr($v, -1);
- $ret = substr($v, 0, -1);
- switch(strtoupper($l)){
- case 'P':
- $ret *= 1024;
- case 'T':
- $ret *= 1024;
- case 'G':
- $ret *= 1024;
- case 'M':
- $ret *= 1024;
- case 'K':
- $ret *= 1024;
- break;
- }
- return $ret;
-}
-
-/**
- * Wrapper around preg_quote adding the default delimiter
- */
-function preg_quote_cb($string){
- return preg_quote($string,'/');
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Common DokuWiki functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+require_once(DOKU_CONF.'dokuwiki.php');
+require_once(DOKU_INC.'inc/io.php');
+require_once(DOKU_INC.'inc/changelog.php');
+require_once(DOKU_INC.'inc/utf8.php');
+require_once(DOKU_INC.'inc/mail.php');
+require_once(DOKU_INC.'inc/parserutils.php');
+require_once(DOKU_INC.'inc/infoutils.php');
+
+/**
+ * These constants are used with the recents function
+ */
+define('RECENTS_SKIP_DELETED',2);
+define('RECENTS_SKIP_MINORS',4);
+define('RECENTS_SKIP_SUBSPACES',8);
+
+/**
+ * Wrapper around htmlspecialchars()
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see htmlspecialchars()
+ */
+function hsc($string){
+ return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
+}
+
+/**
+ * print a newline terminated string
+ *
+ * You can give an indention as optional parameter
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ptln($string,$indent=0){
+ echo str_repeat(' ', $indent)."$string\n";
+}
+
+/**
+ * strips control characters (<32) from the given string
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function stripctl($string){
+ return preg_replace('/[\x00-\x1F]+/s','',$string);
+}
+
+/**
+ * Return a secret token to be used for CSRF attack prevention
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @link http://en.wikipedia.org/wiki/Cross-site_request_forgery
+ * @link http://christ1an.blogspot.com/2007/04/preventing-csrf-efficiently.html
+ * @return string
+ */
+function getSecurityToken(){
+ return md5(auth_cookiesalt().session_id());
+}
+
+/**
+ * Check the secret CSRF token
+ */
+function checkSecurityToken($token=null){
+ if(is_null($token)) $token = $_REQUEST['sectok'];
+ if(getSecurityToken() != $token){
+ msg('Security Token did not match. Possible CSRF attack.',-1);
+ return false;
+ }
+ return true;
+}
+
+/**
+ * Print a hidden form field with a secret CSRF token
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function formSecurityToken($print=true){
+ $ret = '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" /></div>'."\n";
+ if($print){
+ echo $ret;
+ }else{
+ return $ret;
+ }
+}
+
+/**
+ * Return info about the current document as associative
+ * array.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function pageinfo(){
+ global $ID;
+ global $REV;
+ global $USERINFO;
+ global $conf;
+
+ // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml
+ // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary
+ $info['id'] = $ID;
+ $info['rev'] = $REV;
+
+ if($_SERVER['REMOTE_USER']){
+ $info['userinfo'] = $USERINFO;
+ $info['perm'] = auth_quickaclcheck($ID);
+ $info['subscribed'] = is_subscribed($ID,$_SERVER['REMOTE_USER'],false);
+ $info['subscribedns'] = is_subscribed($ID,$_SERVER['REMOTE_USER'],true);
+ $info['client'] = $_SERVER['REMOTE_USER'];
+
+ // set info about manager/admin status
+ $info['isadmin'] = false;
+ $info['ismanager'] = false;
+ if($info['perm'] == AUTH_ADMIN){
+ $info['isadmin'] = true;
+ $info['ismanager'] = true;
+ }elseif(auth_ismanager()){
+ $info['ismanager'] = true;
+ }
+
+ // if some outside auth were used only REMOTE_USER is set
+ if(!$info['userinfo']['name']){
+ $info['userinfo']['name'] = $_SERVER['REMOTE_USER'];
+ }
+
+ }else{
+ $info['perm'] = auth_aclcheck($ID,'',null);
+ $info['subscribed'] = false;
+ $info['client'] = clientIP(true);
+ }
+
+ $info['namespace'] = getNS($ID);
+ $info['locked'] = checklock($ID);
+ $info['filepath'] = fullpath(wikiFN($ID));
+ $info['exists'] = @file_exists($info['filepath']);
+ if($REV){
+ //check if current revision was meant
+ if($info['exists'] && (@filemtime($info['filepath'])==$REV)){
+ $REV = '';
+ }else{
+ //really use old revision
+ $info['filepath'] = fullpath(wikiFN($ID,$REV));
+ $info['exists'] = @file_exists($info['filepath']);
+ }
+ }
+ $info['rev'] = $REV;
+ if($info['exists']){
+ $info['writable'] = (is_writable($info['filepath']) &&
+ ($info['perm'] >= AUTH_EDIT));
+ }else{
+ $info['writable'] = ($info['perm'] >= AUTH_CREATE);
+ }
+ $info['editable'] = ($info['writable'] && empty($info['lock']));
+ $info['lastmod'] = @filemtime($info['filepath']);
+
+ //load page meta data
+ $info['meta'] = p_get_metadata($ID);
+
+ //who's the editor
+ if($REV){
+ $revinfo = getRevisionInfo($ID, $REV, 1024);
+ }else{
+ if (is_array($info['meta']['last_change'])) {
+ $revinfo = $info['meta']['last_change'];
+ } else {
+ $revinfo = getRevisionInfo($ID, $info['lastmod'], 1024);
+ // cache most recent changelog line in metadata if missing and still valid
+ if ($revinfo!==false) {
+ $info['meta']['last_change'] = $revinfo;
+ p_set_metadata($ID, array('last_change' => $revinfo));
+ }
+ }
+ }
+ //and check for an external edit
+ if($revinfo!==false && $revinfo['date']!=$info['lastmod']){
+ // cached changelog line no longer valid
+ $revinfo = false;
+ $info['meta']['last_change'] = $revinfo;
+ p_set_metadata($ID, array('last_change' => $revinfo));
+ }
+
+ $info['ip'] = $revinfo['ip'];
+ $info['user'] = $revinfo['user'];
+ $info['sum'] = $revinfo['sum'];
+ // See also $INFO['meta']['last_change'] which is the most recent log line for page $ID.
+ // Use $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT in place of $info['minor'].
+
+ if($revinfo['user']){
+ $info['editor'] = $revinfo['user'];
+ }else{
+ $info['editor'] = $revinfo['ip'];
+ }
+
+ // draft
+ $draft = getCacheName($info['client'].$ID,'.draft');
+ if(@file_exists($draft)){
+ if(@filemtime($draft) < @filemtime(wikiFN($ID))){
+ // remove stale draft
+ @unlink($draft);
+ }else{
+ $info['draft'] = $draft;
+ }
+ }
+
+ return $info;
+}
+
+/**
+ * Build an string of URL parameters
+ *
+ * @author Andreas Gohr
+ */
+function buildURLparams($params, $sep='&'){
+ $url = '';
+ $amp = false;
+ foreach($params as $key => $val){
+ if($amp) $url .= $sep;
+
+ $url .= $key.'=';
+ $url .= rawurlencode($val);
+ $amp = true;
+ }
+ return $url;
+}
+
+/**
+ * Build an string of html tag attributes
+ *
+ * Skips keys starting with '_', values get HTML encoded
+ *
+ * @author Andreas Gohr
+ */
+function buildAttributes($params,$skipempty=false){
+ $url = '';
+ foreach($params as $key => $val){
+ if($key{0} == '_') continue;
+ if($val === '' && $skipempty) continue;
+
+ $url .= $key.'="';
+ $url .= htmlspecialchars ($val);
+ $url .= '" ';
+ }
+ return $url;
+}
+
+
+/**
+ * This builds the breadcrumb trail and returns it as array
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function breadcrumbs(){
+ // we prepare the breadcrumbs early for quick session closing
+ static $crumbs = null;
+ if($crumbs != null) return $crumbs;
+
+ global $ID;
+ global $ACT;
+ global $conf;
+ $crumbs = $_SESSION[DOKU_COOKIE]['bc'];
+
+ //first visit?
+ if (!is_array($crumbs)){
+ $crumbs = array();
+ }
+ //we only save on show and existing wiki documents
+ $file = wikiFN($ID);
+ if($ACT != 'show' || !@file_exists($file)){
+ $_SESSION[DOKU_COOKIE]['bc'] = $crumbs;
+ return $crumbs;
+ }
+
+ // page names
+ $name = noNSorNS($ID);
+ if ($conf['useheading']) {
+ // get page title
+ $title = p_get_first_heading($ID,true);
+ if ($title) {
+ $name = $title;
+ }
+ }
+
+ //remove ID from array
+ if (isset($crumbs[$ID])) {
+ unset($crumbs[$ID]);
+ }
+
+ //add to array
+ $crumbs[$ID] = $name;
+ //reduce size
+ while(count($crumbs) > $conf['breadcrumbs']){
+ array_shift($crumbs);
+ }
+ //save to session
+ $_SESSION[DOKU_COOKIE]['bc'] = $crumbs;
+ return $crumbs;
+}
+
+/**
+ * Filter for page IDs
+ *
+ * This is run on a ID before it is outputted somewhere
+ * currently used to replace the colon with something else
+ * on Windows systems and to have proper URL encoding
+ *
+ * Urlencoding is ommitted when the second parameter is false
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function idfilter($id,$ue=true){
+ global $conf;
+ if ($conf['useslash'] && $conf['userewrite']){
+ $id = strtr($id,':','/');
+ }elseif (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' &&
+ $conf['userewrite']) {
+ $id = strtr($id,':',';');
+ }
+ if($ue){
+ $id = rawurlencode($id);
+ $id = str_replace('%3A',':',$id); //keep as colon
+ $id = str_replace('%2F','/',$id); //keep as slash
+ }
+ return $id;
+}
+
+/**
+ * This builds a link to a wikipage
+ *
+ * It handles URL rewriting and adds additional parameter if
+ * given in $more
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function wl($id='',$more='',$abs=false,$sep='&'){
+ global $conf;
+ if(is_array($more)){
+ $more = buildURLparams($more,$sep);
+ }else{
+ $more = str_replace(',',$sep,$more);
+ }
+
+ $id = idfilter($id);
+ if($abs){
+ $xlink = DOKU_URL;
+ }else{
+ $xlink = DOKU_BASE;
+ }
+
+ if($conf['userewrite'] == 2){
+ $xlink .= DOKU_SCRIPT.'/'.$id;
+ if($more) $xlink .= '?'.$more;
+ }elseif($conf['userewrite']){
+ $xlink .= $id;
+ if($more) $xlink .= '?'.$more;
+ }elseif($id){
+ $xlink .= DOKU_SCRIPT.'?id='.$id;
+ if($more) $xlink .= $sep.$more;
+ }else{
+ $xlink .= DOKU_SCRIPT;
+ if($more) $xlink .= '?'.$more;
+ }
+
+ return $xlink;
+}
+
+/**
+ * This builds a link to an alternate page format
+ *
+ * Handles URL rewriting if enabled. Follows the style of wl().
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function exportlink($id='',$format='raw',$more='',$abs=false,$sep='&'){
+ global $conf;
+ if(is_array($more)){
+ $more = buildURLparams($more,$sep);
+ }else{
+ $more = str_replace(',',$sep,$more);
+ }
+
+ $format = rawurlencode($format);
+ $id = idfilter($id);
+ if($abs){
+ $xlink = DOKU_URL;
+ }else{
+ $xlink = DOKU_BASE;
+ }
+
+ if($conf['userewrite'] == 2){
+ $xlink .= DOKU_SCRIPT.'/'.$id.'?do=export_'.$format;
+ if($more) $xlink .= $sep.$more;
+ }elseif($conf['userewrite'] == 1){
+ $xlink .= '_export/'.$format.'/'.$id;
+ if($more) $xlink .= '?'.$more;
+ }else{
+ $xlink .= DOKU_SCRIPT.'?do=export_'.$format.$sep.'id='.$id;
+ if($more) $xlink .= $sep.$more;
+ }
+
+ return $xlink;
+}
+
+/**
+ * Build a link to a media file
+ *
+ * Will return a link to the detail page if $direct is false
+ */
+function ml($id='',$more='',$direct=true,$sep='&',$abs=false){
+ global $conf;
+ if(is_array($more)){
+ $more = buildURLparams($more,$sep);
+ }else{
+ $more = str_replace(',',$sep,$more);
+ }
+
+ if($abs){
+ $xlink = DOKU_URL;
+ }else{
+ $xlink = DOKU_BASE;
+ }
+
+ // external URLs are always direct without rewriting
+ if(preg_match('#^(https?|ftp)://#i',$id)){
+ $xlink .= 'lib/exe/fetch.php';
+ if($more){
+ $xlink .= '?'.$more;
+ $xlink .= $sep.'media='.rawurlencode($id);
+ }else{
+ $xlink .= '?media='.rawurlencode($id);
+ }
+ return $xlink;
+ }
+
+ $id = idfilter($id);
+
+ // decide on scriptname
+ if($direct){
+ if($conf['userewrite'] == 1){
+ $script = '_media';
+ }else{
+ $script = 'lib/exe/fetch.php';
+ }
+ }else{
+ if($conf['userewrite'] == 1){
+ $script = '_detail';
+ }else{
+ $script = 'lib/exe/detail.php';
+ }
+ }
+
+ // build URL based on rewrite mode
+ if($conf['userewrite']){
+ $xlink .= $script.'/'.$id;
+ if($more) $xlink .= '?'.$more;
+ }else{
+ if($more){
+ $xlink .= $script.'?'.$more;
+ $xlink .= $sep.'media='.$id;
+ }else{
+ $xlink .= $script.'?media='.$id;
+ }
+ }
+
+ return $xlink;
+}
+
+
+
+/**
+ * Just builds a link to a script
+ *
+ * @todo maybe obsolete
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function script($script='doku.php'){
+# $link = getBaseURL();
+# $link .= $script;
+# return $link;
+ return DOKU_BASE.DOKU_SCRIPT;
+}
+
+/**
+ * Spamcheck against wordlist
+ *
+ * Checks the wikitext against a list of blocked expressions
+ * returns true if the text contains any bad words
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function checkwordblock(){
+ global $TEXT;
+ global $conf;
+
+ if(!$conf['usewordblock']) return false;
+
+ // we prepare the text a tiny bit to prevent spammers circumventing URL checks
+ $text = preg_replace('!(\b)(www\.[\w.:?\-;,]+?\.[\w.:?\-;,]+?[\w/\#~:.?+=&%@\!\-.:?\-;,]+?)([.:?\-;,]*[^\w/\#~:.?+=&%@\!\-.:?\-;,])!i','\1http://\2 \2\3',$TEXT);
+
+ $wordblocks = getWordblocks();
+ //how many lines to read at once (to work around some PCRE limits)
+ if(version_compare(phpversion(),'4.3.0','<')){
+ //old versions of PCRE define a maximum of parenthesises even if no
+ //backreferences are used - the maximum is 99
+ //this is very bad performancewise and may even be too high still
+ $chunksize = 40;
+ }else{
+ //read file in chunks of 200 - this should work around the
+ //MAX_PATTERN_SIZE in modern PCRE
+ $chunksize = 200;
+ }
+ while($blocks = array_splice($wordblocks,0,$chunksize)){
+ $re = array();
+ #build regexp from blocks
+ foreach($blocks as $block){
+ $block = preg_replace('/#.*$/','',$block);
+ $block = trim($block);
+ if(empty($block)) continue;
+ $re[] = $block;
+ }
+ if(count($re) && preg_match('#('.join('|',$re).')#si',$text)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
+ * Return the IP of the client
+ *
+ * Honours X-Forwarded-For and X-Real-IP Proxy Headers
+ *
+ * It returns a comma separated list of IPs if the above mentioned
+ * headers are set. If the single parameter is set, it tries to return
+ * a routable public address, prefering the ones suplied in the X
+ * headers
+ *
+ * @param boolean $single If set only a single IP is returned
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function clientIP($single=false){
+ $ip = array();
+ $ip[] = $_SERVER['REMOTE_ADDR'];
+ if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
+ $ip = array_merge($ip,explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']));
+ if(!empty($_SERVER['HTTP_X_REAL_IP']))
+ $ip = array_merge($ip,explode(',',$_SERVER['HTTP_X_REAL_IP']));
+
+ // remove any non-IP stuff
+ $cnt = count($ip);
+ $match = array();
+ for($i=0; $i<$cnt; $i++){
+ if(preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$ip[$i],$match)) {
+ $ip[$i] = $match[0];
+ } else {
+ $ip[$i] = '';
+ }
+ if(empty($ip[$i])) unset($ip[$i]);
+ }
+ $ip = array_values(array_unique($ip));
+ if(!$ip[0]) $ip[0] = '0.0.0.0'; // for some strange reason we don't have a IP
+
+ if(!$single) return join(',',$ip);
+
+ // decide which IP to use, trying to avoid local addresses
+ $ip = array_reverse($ip);
+ foreach($ip as $i){
+ if(preg_match('/^(127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/',$i)){
+ continue;
+ }else{
+ return $i;
+ }
+ }
+ // still here? just use the first (last) address
+ return $ip[0];
+}
+
+/**
+ * Convert one or more comma separated IPs to hostnames
+ *
+ * @author Glen Harris <astfgl at iamnota.org>
+ * @returns a comma separated list of hostnames
+ */
+function gethostsbyaddrs($ips){
+ $hosts = array();
+ $ips = explode(',',$ips);
+
+ if(is_array($ips)) {
+ foreach($ips as $ip){
+ $hosts[] = gethostbyaddr(trim($ip));
+ }
+ return join(',',$hosts);
+ } else {
+ return gethostbyaddr(trim($ips));
+ }
+}
+
+/**
+ * Checks if a given page is currently locked.
+ *
+ * removes stale lockfiles
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function checklock($id){
+ global $conf;
+ $lock = wikiLockFN($id);
+
+ //no lockfile
+ if(!@file_exists($lock)) return false;
+
+ //lockfile expired
+ if((time() - filemtime($lock)) > $conf['locktime']){
+ @unlink($lock);
+ return false;
+ }
+
+ //my own lock
+ $ip = io_readFile($lock);
+ if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){
+ return false;
+ }
+
+ return $ip;
+}
+
+/**
+ * Lock a page for editing
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function lock($id){
+ $lock = wikiLockFN($id);
+ if($_SERVER['REMOTE_USER']){
+ io_saveFile($lock,$_SERVER['REMOTE_USER']);
+ }else{
+ io_saveFile($lock,clientIP());
+ }
+}
+
+/**
+ * Unlock a page if it was locked by the user
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool true if a lock was removed
+ */
+function unlock($id){
+ $lock = wikiLockFN($id);
+ if(@file_exists($lock)){
+ $ip = io_readFile($lock);
+ if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){
+ @unlink($lock);
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
+ * convert line ending to unix format
+ *
+ * @see formText() for 2crlf conversion
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function cleanText($text){
+ $text = preg_replace("/(\015\012)|(\015)/","\012",$text);
+ return $text;
+}
+
+/**
+ * Prepares text for print in Webforms by encoding special chars.
+ * It also converts line endings to Windows format which is
+ * pseudo standard for webforms.
+ *
+ * @see cleanText() for 2unix conversion
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function formText($text){
+ $text = str_replace("\012","\015\012",$text);
+ return htmlspecialchars($text);
+}
+
+/**
+ * Returns the specified local text in raw format
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function rawLocale($id){
+ return io_readFile(localeFN($id));
+}
+
+/**
+ * Returns the raw WikiText
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function rawWiki($id,$rev=''){
+ return io_readWikiPage(wikiFN($id, $rev), $id, $rev);
+}
+
+/**
+ * Returns the pagetemplate contents for the ID's namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function pageTemplate($data){
+ $id = $data[0];
+ global $conf;
+ global $INFO;
+
+ $path = dirname(wikiFN($id));
+
+ if(@file_exists($path.'/_template.txt')){
+ $tpl = io_readFile($path.'/_template.txt');
+ }else{
+ // search upper namespaces for templates
+ $len = strlen(rtrim($conf['datadir'],'/'));
+ while (strlen($path) >= $len){
+ if(@file_exists($path.'/__template.txt')){
+ $tpl = io_readFile($path.'/__template.txt');
+ break;
+ }
+ $path = substr($path, 0, strrpos($path, '/'));
+ }
+ }
+ if(!$tpl) return '';
+
+ // replace placeholders
+ $tpl = str_replace('@ID@',$id,$tpl);
+ $tpl = str_replace('@NS@',getNS($id),$tpl);
+ $tpl = str_replace('@PAGE@',strtr(noNS($id),'_',' '),$tpl);
+ $tpl = str_replace('@USER@',$_SERVER['REMOTE_USER'],$tpl);
+ $tpl = str_replace('@NAME@',$INFO['userinfo']['name'],$tpl);
+ $tpl = str_replace('@MAIL@',$INFO['userinfo']['mail'],$tpl);
+ $tpl = str_replace('@DATE@',$conf['dformat'],$tpl);
+ // we need the callback to work around strftime's char limit
+ $tpl = preg_replace_callback('/%./',create_function('$m','return strftime($m[0]);'),$tpl);
+
+ return $tpl;
+}
+
+
+/**
+ * Returns the raw Wiki Text in three slices.
+ *
+ * The range parameter needs to have the form "from-to"
+ * and gives the range of the section in bytes - no
+ * UTF-8 awareness is needed.
+ * The returned order is prefix, section and suffix.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function rawWikiSlices($range,$id,$rev=''){
+ list($from,$to) = split('-',$range,2);
+ $text = io_readWikiPage(wikiFN($id, $rev), $id, $rev);
+ if(!$from) $from = 0;
+ if(!$to) $to = strlen($text)+1;
+
+ $slices[0] = substr($text,0,$from-1);
+ $slices[1] = substr($text,$from-1,$to-$from);
+ $slices[2] = substr($text,$to);
+
+ return $slices;
+}
+
+/**
+ * Joins wiki text slices
+ *
+ * function to join the text slices with correct lineendings again.
+ * When the pretty parameter is set to true it adds additional empty
+ * lines between sections if needed (used on saving).
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function con($pre,$text,$suf,$pretty=false){
+
+ if($pretty){
+ if($pre && substr($pre,-1) != "\n") $pre .= "\n";
+ if($suf && substr($text,-1) != "\n") $text .= "\n";
+ }
+
+ // Avoid double newline above section when saving section edit
+ //if($pre) $pre .= "\n";
+ if($suf) $text .= "\n";
+ return $pre.$text.$suf;
+}
+
+/**
+ * Saves a wikitext by calling io_writeWikiPage.
+ * Also directs changelog and attic updates.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function saveWikiText($id,$text,$summary,$minor=false){
+ /* Note to developers:
+ This code is subtle and delicate. Test the behavior of
+ the attic and changelog with dokuwiki and external edits
+ after any changes. External edits change the wiki page
+ directly without using php or dokuwiki.
+ */
+ global $conf;
+ global $lang;
+ global $REV;
+ // ignore if no changes were made
+ if($text == rawWiki($id,'')){
+ return;
+ }
+
+ $file = wikiFN($id);
+ $old = @filemtime($file); // from page
+ $wasRemoved = empty($text);
+ $wasCreated = !@file_exists($file);
+ $wasReverted = ($REV==true);
+ $newRev = false;
+ $oldRev = getRevisions($id, -1, 1, 1024); // from changelog
+ $oldRev = (int)(empty($oldRev)?0:$oldRev[0]);
+ if(!@file_exists(wikiFN($id, $old)) && @file_exists($file) && $old>=$oldRev) {
+ // add old revision to the attic if missing
+ saveOldRevision($id);
+ // add a changelog entry if this edit came from outside dokuwiki
+ if ($old>$oldRev) {
+ addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=>true));
+ // remove soon to be stale instructions
+ $cache = new cache_instructions($id, $file);
+ $cache->removeCache();
+ }
+ }
+
+ if ($wasRemoved){
+ // Send "update" event with empty data, so plugins can react to page deletion
+ $data = array(array($file, '', false), getNS($id), noNS($id), false);
+ trigger_event('IO_WIKIPAGE_WRITE', $data);
+ // pre-save deleted revision
+ @touch($file);
+ clearstatcache();
+ $newRev = saveOldRevision($id);
+ // remove empty file
+ @unlink($file);
+ // remove old meta info...
+ $mfiles = metaFiles($id);
+ $changelog = metaFN($id, '.changes');
+ $metadata = metaFN($id, '.meta');
+ foreach ($mfiles as $mfile) {
+ // but keep per-page changelog to preserve page history and keep meta data
+ if (@file_exists($mfile) && $mfile!==$changelog && $mfile!==$metadata) { @unlink($mfile); }
+ }
+ // purge meta data
+ p_purge_metadata($id);
+ $del = true;
+ // autoset summary on deletion
+ if(empty($summary)) $summary = $lang['deleted'];
+ // remove empty namespaces
+ io_sweepNS($id, 'datadir');
+ io_sweepNS($id, 'mediadir');
+ }else{
+ // save file (namespace dir is created in io_writeWikiPage)
+ io_writeWikiPage($file, $text, $id);
+ // pre-save the revision, to keep the attic in sync
+ $newRev = saveOldRevision($id);
+ $del = false;
+ }
+
+ // select changelog line type
+ $extra = '';
+ $type = DOKU_CHANGE_TYPE_EDIT;
+ if ($wasReverted) {
+ $type = DOKU_CHANGE_TYPE_REVERT;
+ $extra = $REV;
+ }
+ else if ($wasCreated) { $type = DOKU_CHANGE_TYPE_CREATE; }
+ else if ($wasRemoved) { $type = DOKU_CHANGE_TYPE_DELETE; }
+ else if ($minor && $conf['useacl'] && $_SERVER['REMOTE_USER']) { $type = DOKU_CHANGE_TYPE_MINOR_EDIT; } //minor edits only for logged in users
+
+ addLogEntry($newRev, $id, $type, $summary, $extra);
+ // send notify mails
+ notify($id,'admin',$old,$summary,$minor);
+ notify($id,'subscribers',$old,$summary,$minor);
+
+ // update the purgefile (timestamp of the last time anything within the wiki was changed)
+ io_saveFile($conf['cachedir'].'/purgefile',time());
+}
+
+/**
+ * moves the current version to the attic and returns its
+ * revision date
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function saveOldRevision($id){
+ global $conf;
+ $oldf = wikiFN($id);
+ if(!@file_exists($oldf)) return '';
+ $date = filemtime($oldf);
+ $newf = wikiFN($id,$date);
+ io_writeWikiPage($newf, rawWiki($id), $id, $date);
+ return $date;
+}
+
+/**
+ * Sends a notify mail on page change
+ *
+ * @param string $id The changed page
+ * @param string $who Who to notify (admin|subscribers)
+ * @param int $rev Old page revision
+ * @param string $summary What changed
+ * @param boolean $minor Is this a minor edit?
+ * @param array $replace Additional string substitutions, @KEY@ to be replaced by value
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){
+ global $lang;
+ global $conf;
+ global $INFO;
+
+ // decide if there is something to do
+ if($who == 'admin'){
+ if(empty($conf['notify'])) return; //notify enabled?
+ $text = rawLocale('mailtext');
+ $to = $conf['notify'];
+ $bcc = '';
+ }elseif($who == 'subscribers'){
+ if(!$conf['subscribers']) return; //subscribers enabled?
+ if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) return; //skip minors
+ $bcc = subscriber_addresslist($id);
+ if(empty($bcc)) return;
+ $to = '';
+ $text = rawLocale('subscribermail');
+ }elseif($who == 'register'){
+ if(empty($conf['registernotify'])) return;
+ $text = rawLocale('registermail');
+ $to = $conf['registernotify'];
+ $bcc = '';
+ }else{
+ return; //just to be safe
+ }
+
+ $ip = clientIP();
+ $text = str_replace('@DATE@',strftime($conf['dformat']),$text);
+ $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text);
+ $text = str_replace('@IPADDRESS@',$ip,$text);
+ $text = str_replace('@HOSTNAME@',gethostsbyaddrs($ip),$text);
+ $text = str_replace('@NEWPAGE@',wl($id,'',true,'&'),$text);
+ $text = str_replace('@PAGE@',$id,$text);
+ $text = str_replace('@TITLE@',$conf['title'],$text);
+ $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
+ $text = str_replace('@SUMMARY@',$summary,$text);
+ $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text);
+
+ foreach ($replace as $key => $substitution) {
+ $text = str_replace('@'.strtoupper($key).'@',$substitution, $text);
+ }
+
+ if($who == 'register'){
+ $subject = $lang['mail_new_user'].' '.$summary;
+ }elseif($rev){
+ $subject = $lang['mail_changed'].' '.$id;
+ $text = str_replace('@OLDPAGE@',wl($id,"rev=$rev",true,'&'),$text);
+ require_once(DOKU_INC.'inc/DifferenceEngine.php');
+ $df = new Diff(split("\n",rawWiki($id,$rev)),
+ split("\n",rawWiki($id)));
+ $dformat = new UnifiedDiffFormatter();
+ $diff = $dformat->format($df);
+ }else{
+ $subject=$lang['mail_newpage'].' '.$id;
+ $text = str_replace('@OLDPAGE@','none',$text);
+ $diff = rawWiki($id);
+ }
+ $text = str_replace('@DIFF@',$diff,$text);
+ $subject = '['.$conf['title'].'] '.$subject;
+
+ $from = $conf['mailfrom'];
+ $from = str_replace('@USER@',$_SERVER['REMOTE_USER'],$from);
+ $from = str_replace('@NAME@',$INFO['userinfo']['name'],$from);
+ $from = str_replace('@MAIL@',$INFO['userinfo']['mail'],$from);
+
+ mail_send($to,$subject,$text,$from,'',$bcc);
+}
+
+/**
+ * extracts the query from a search engine referrer
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Todd Augsburger <todd at rollerorgans.com>
+ */
+function getGoogleQuery(){
+ $url = parse_url($_SERVER['HTTP_REFERER']);
+ if(!$url) return '';
+
+ $query = array();
+ parse_str($url['query'],$query);
+ if(isset($query['q']))
+ $q = $query['q']; // google, live/msn, aol, ask, altavista, alltheweb, gigablast
+ elseif(isset($query['p']))
+ $q = $query['p']; // yahoo
+ elseif(isset($query['query']))
+ $q = $query['query']; // lycos, netscape, clusty, hotbot
+ elseif(preg_match("#a9\.com#i",$url['host'])) // a9
+ $q = urldecode(ltrim($url['path'],'/'));
+
+ if(!$q) return '';
+ $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/',$q,-1,PREG_SPLIT_NO_EMPTY);
+ return $q;
+}
+
+/**
+ * Try to set correct locale
+ *
+ * @deprecated No longer used
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function setCorrectLocale(){
+ global $conf;
+ global $lang;
+
+ $enc = strtoupper($lang['encoding']);
+ foreach ($lang['locales'] as $loc){
+ //try locale
+ if(@setlocale(LC_ALL,$loc)) return;
+ //try loceale with encoding
+ if(@setlocale(LC_ALL,"$loc.$enc")) return;
+ }
+ //still here? try to set from environment
+ @setlocale(LC_ALL,"");
+}
+
+/**
+ * Return the human readable size of a file
+ *
+ * @param int $size A file size
+ * @param int $dec A number of decimal places
+ * @author Martin Benjamin <b.martin at cybernet.ch>
+ * @author Aidan Lister <aidan at php.net>
+ * @version 1.0.0
+ */
+function filesize_h($size, $dec = 1){
+ $sizes = array('B', 'KB', 'MB', 'GB');
+ $count = count($sizes);
+ $i = 0;
+
+ while ($size >= 1024 && ($i < $count - 1)) {
+ $size /= 1024;
+ $i++;
+ }
+
+ return round($size, $dec) . ' ' . $sizes[$i];
+}
+
+/**
+ * return an obfuscated email address in line with $conf['mailguard'] setting
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+function obfuscate($email) {
+ global $conf;
+
+ switch ($conf['mailguard']) {
+ case 'visible' :
+ $obfuscate = array('@' => ' [at] ', '.' => ' [dot] ', '-' => ' [dash] ');
+ return strtr($email, $obfuscate);
+
+ case 'hex' :
+ $encode = '';
+ for ($x=0; $x < strlen($email); $x++) $encode .= '&#x' . bin2hex($email{$x}).';';
+ return $encode;
+
+ case 'none' :
+ default :
+ return $email;
+ }
+}
+
+/**
+ * Let us know if a user is tracking a page or a namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function is_subscribed($id,$uid,$ns=false){
+ if(!$ns) {
+ $file=metaFN($id,'.mlist');
+ } else {
+ if(!getNS($id)) {
+ $file = metaFN(getNS($id),'.mlist');
+ } else {
+ $file = metaFN(getNS($id),'/.mlist');
+ }
+ }
+ if (@file_exists($file)) {
+ $mlist = file($file);
+ $pos = array_search($uid."\n",$mlist);
+ return is_int($pos);
+ }
+
+ return false;
+}
+
+/**
+ * Return a string with the email addresses of all the
+ * users subscribed to a page
+ *
+ * @author Steven Danz <steven-danz at kc.rr.com>
+ */
+function subscriber_addresslist($id){
+ global $conf;
+ global $auth;
+
+ if (!$conf['subscribers']) return '';
+
+ $users = array();
+ $emails = array();
+
+ // load the page mlist file content
+ $mlist = array();
+ $file=metaFN($id,'.mlist');
+ if (@file_exists($file)) {
+ $mlist = file($file);
+ foreach ($mlist as $who) {
+ $who = rtrim($who);
+ $users[$who] = true;
+ }
+ }
+
+ // load also the namespace mlist file content
+ $ns = getNS($id);
+ while ($ns) {
+ $nsfile = metaFN($ns,'/.mlist');
+ if (@file_exists($nsfile)) {
+ $mlist = file($nsfile);
+ foreach ($mlist as $who) {
+ $who = rtrim($who);
+ $users[$who] = true;
+ }
+ }
+ $ns = getNS($ns);
+ }
+ // root namespace
+ $nsfile = metaFN('','.mlist');
+ if (@file_exists($nsfile)) {
+ $mlist = file($nsfile);
+ foreach ($mlist as $who) {
+ $who = rtrim($who);
+ $users[$who] = true;
+ }
+ }
+ if(!empty($users)) {
+ foreach (array_keys($users) as $who) {
+ $info = $auth->getUserData($who);
+ if($info === false) continue;
+ $level = auth_aclcheck($id,$who,$info['grps']);
+ if ($level >= AUTH_READ) {
+ if (strcasecmp($info['mail'],$conf['notify']) != 0) {
+ $emails[] = $info['mail'];
+ }
+ }
+ }
+ }
+
+ return implode(',',$emails);
+}
+
+/**
+ * Removes quoting backslashes
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function unslash($string,$char="'"){
+ return str_replace('\\'.$char,$char,$string);
+}
+
+/**
+ * Convert php.ini shorthands to byte
+ *
+ * @author <gilthans dot NO dot SPAM at gmail dot com>
+ * @link http://de3.php.net/manual/en/ini.core.php#79564
+ */
+function php_to_byte($v){
+ $l = substr($v, -1);
+ $ret = substr($v, 0, -1);
+ switch(strtoupper($l)){
+ case 'P':
+ $ret *= 1024;
+ case 'T':
+ $ret *= 1024;
+ case 'G':
+ $ret *= 1024;
+ case 'M':
+ $ret *= 1024;
+ case 'K':
+ $ret *= 1024;
+ break;
+ }
+ return $ret;
+}
+
+/**
+ * Wrapper around preg_quote adding the default delimiter
+ */
+function preg_quote_cb($string){
+ return preg_quote($string,'/');
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/confutils.php
===================================================================
--- site/trunk/www-root/wiki/inc/confutils.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/confutils.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,190 +1,194 @@
-<?php
-/**
- * Utilities for collecting data from config files
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-
-/**
- * Returns the (known) extension and mimetype of a given filename
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function mimetype($file){
- $ret = array(false,false); // return array
- $mtypes = getMimeTypes(); // known mimetypes
- $exts = join('|',array_keys($mtypes)); // known extensions (regexp)
- if(preg_match('#\.('.$exts.')$#i',$file,$matches)){
- $ext = strtolower($matches[1]);
- }
-
- if($ext && $mtypes[$ext]){
- $ret = array($ext, $mtypes[$ext]);
- }
-
- return $ret;
-}
-
-/**
- * returns a hash of mimetypes
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function getMimeTypes() {
- static $mime = NULL;
- if ( !$mime ) {
- $mime = confToHash(DOKU_CONF.'mime.conf');
- if (@file_exists(DOKU_CONF.'mime.local.conf')) {
- $local = confToHash(DOKU_CONF.'mime.local.conf');
- $mime = array_merge($mime, $local);
- }
- }
- return $mime;
-}
-
-/**
- * returns a hash of acronyms
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-function getAcronyms() {
- static $acronyms = NULL;
- if ( !$acronyms ) {
- $acronyms = confToHash(DOKU_CONF.'acronyms.conf');
- if (@file_exists(DOKU_CONF.'acronyms.local.conf')) {
- $local = confToHash(DOKU_CONF.'acronyms.local.conf');
- $acronyms = array_merge($acronyms, $local);
- }
- }
- return $acronyms;
-}
-
-/**
- * returns a hash of smileys
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-function getSmileys() {
- static $smileys = NULL;
- if ( !$smileys ) {
- $smileys = confToHash(DOKU_CONF.'smileys.conf');
- if (@file_exists(DOKU_CONF.'smileys.local.conf')) {
- $local = confToHash(DOKU_CONF.'smileys.local.conf');
- $smileys = array_merge($smileys, $local);
- }
- }
- return $smileys;
-}
-
-/**
- * returns a hash of entities
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-function getEntities() {
- static $entities = NULL;
- if ( !$entities ) {
- $entities = confToHash(DOKU_CONF.'entities.conf');
- if (@file_exists(DOKU_CONF.'entities.local.conf')) {
- $local = confToHash(DOKU_CONF.'entities.local.conf');
- $entities = array_merge($entities, $local);
- }
- }
- return $entities;
-}
-
-/**
- * returns a hash of interwikilinks
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-function getInterwiki() {
- static $wikis = NULL;
- if ( !$wikis ) {
- $wikis = confToHash(DOKU_CONF.'interwiki.conf',true);
- if (@file_exists(DOKU_CONF.'interwiki.local.conf')) {
- $local = confToHash(DOKU_CONF.'interwiki.local.conf');
- $wikis = array_merge($wikis, $local);
- }
- }
- //add sepecial case 'this'
- $wikis['this'] = DOKU_URL.'{NAME}';
- return $wikis;
-}
-
-/**
- * returns array of wordblock patterns
- *
- */
-function getWordblocks() {
- static $wordblocks = NULL;
- if ( !$wordblocks ) {
- $wordblocks = file(DOKU_CONF.'wordblock.conf');
- if (@file_exists(DOKU_CONF.'wordblock.local.conf')) {
- $local = file(DOKU_CONF.'wordblock.local.conf');
- $wordblocks = array_merge($wordblocks, $local);
- }
- }
- return $wordblocks;
-}
-
-
-/**
- * Builds a hash from a configfile
- *
- * If $lower is set to true all hash keys are converted to
- * lower case.
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function confToHash($file,$lower=false) {
- $conf = array();
- $lines = @file( $file );
- if ( !$lines ) return $conf;
-
- foreach ( $lines as $line ) {
- //ignore comments (except escaped ones)
- $line = preg_replace('/(?<![&\\\\])#.*$/','',$line);
- $line = str_replace('\\#','#',$line);
- $line = trim($line);
- if(empty($line)) continue;
- $line = preg_split('/\s+/',$line,2);
- // Build the associative array
- if($lower){
- $conf[strtolower($line[0])] = $line[1];
- }else{
- $conf[$line[0]] = $line[1];
- }
- }
-
- return $conf;
-}
-
-/**
- * check if the given action was disabled in config
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @returns boolean true if enabled, false if disabled
- */
-function actionOK($action){
- static $disabled = null;
- if(is_null($disabled)){
- global $conf;
-
- // prepare disabled actions array and handle legacy options
- $disabled = explode(',',$conf['disableactions']);
- $disabled = array_map('trim',$disabled);
- if(isset($conf['openregister']) && !$conf['openregister']) $disabled[] = 'register';
- if(isset($conf['resendpasswd']) && !$conf['resendpasswd']) $disabled[] = 'resendpwd';
- $disabled = array_unique($disabled);
- }
-
- return !in_array($action,$disabled);
-}
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Utilities for collecting data from config files
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+
+/**
+ * Returns the (known) extension and mimetype of a given filename
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function mimetype($file){
+ $ret = array(false,false); // return array
+ $mtypes = getMimeTypes(); // known mimetypes
+ $exts = join('|',array_keys($mtypes)); // known extensions (regexp)
+ if(preg_match('#\.('.$exts.')$#i',$file,$matches)){
+ $ext = strtolower($matches[1]);
+ }
+
+ if($ext && $mtypes[$ext]){
+ $ret = array($ext, $mtypes[$ext]);
+ }
+
+ return $ret;
+}
+
+/**
+ * returns a hash of mimetypes
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function getMimeTypes() {
+ static $mime = NULL;
+ if ( !$mime ) {
+ $mime = confToHash(DOKU_CONF.'mime.conf');
+ if (@file_exists(DOKU_CONF.'mime.local.conf')) {
+ $local = confToHash(DOKU_CONF.'mime.local.conf');
+ $mime = array_merge($mime, $local);
+ }
+ }
+ return $mime;
+}
+
+/**
+ * returns a hash of acronyms
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+function getAcronyms() {
+ static $acronyms = NULL;
+ if ( !$acronyms ) {
+ $acronyms = confToHash(DOKU_CONF.'acronyms.conf');
+ if (@file_exists(DOKU_CONF.'acronyms.local.conf')) {
+ $local = confToHash(DOKU_CONF.'acronyms.local.conf');
+ $acronyms = array_merge($acronyms, $local);
+ }
+ }
+ return $acronyms;
+}
+
+/**
+ * returns a hash of smileys
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+function getSmileys() {
+ static $smileys = NULL;
+ if ( !$smileys ) {
+ $smileys = confToHash(DOKU_CONF.'smileys.conf');
+ if (@file_exists(DOKU_CONF.'smileys.local.conf')) {
+ $local = confToHash(DOKU_CONF.'smileys.local.conf');
+ $smileys = array_merge($smileys, $local);
+ }
+ }
+ return $smileys;
+}
+
+/**
+ * returns a hash of entities
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+function getEntities() {
+ static $entities = NULL;
+ if ( !$entities ) {
+ $entities = confToHash(DOKU_CONF.'entities.conf');
+ if (@file_exists(DOKU_CONF.'entities.local.conf')) {
+ $local = confToHash(DOKU_CONF.'entities.local.conf');
+ $entities = array_merge($entities, $local);
+ }
+ }
+ return $entities;
+}
+
+/**
+ * returns a hash of interwikilinks
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+function getInterwiki() {
+ static $wikis = NULL;
+ if ( !$wikis ) {
+ $wikis = confToHash(DOKU_CONF.'interwiki.conf',true);
+ if (@file_exists(DOKU_CONF.'interwiki.local.conf')) {
+ $local = confToHash(DOKU_CONF.'interwiki.local.conf');
+ $wikis = array_merge($wikis, $local);
+ }
+ }
+ //add sepecial case 'this'
+ $wikis['this'] = DOKU_URL.'{NAME}';
+ return $wikis;
+}
+
+/**
+ * returns array of wordblock patterns
+ *
+ */
+function getWordblocks() {
+ static $wordblocks = NULL;
+ if ( !$wordblocks ) {
+ $wordblocks = file(DOKU_CONF.'wordblock.conf');
+ if (@file_exists(DOKU_CONF.'wordblock.local.conf')) {
+ $local = file(DOKU_CONF.'wordblock.local.conf');
+ $wordblocks = array_merge($wordblocks, $local);
+ }
+ }
+ return $wordblocks;
+}
+
+
+/**
+ * Builds a hash from a configfile
+ *
+ * If $lower is set to true all hash keys are converted to
+ * lower case.
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function confToHash($file,$lower=false) {
+ $conf = array();
+ $lines = @file( $file );
+ if ( !$lines ) return $conf;
+
+ foreach ( $lines as $line ) {
+ //ignore comments (except escaped ones)
+ $line = preg_replace('/(?<![&\\\\])#.*$/','',$line);
+ $line = str_replace('\\#','#',$line);
+ $line = trim($line);
+ if(empty($line)) continue;
+ $line = preg_split('/\s+/',$line,2);
+ // Build the associative array
+ if($lower){
+ $conf[strtolower($line[0])] = $line[1];
+ }else{
+ $conf[$line[0]] = $line[1];
+ }
+ }
+
+ return $conf;
+}
+
+/**
+ * check if the given action was disabled in config
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @returns boolean true if enabled, false if disabled
+ */
+function actionOK($action){
+ static $disabled = null;
+ if(is_null($disabled)){
+ global $conf;
+
+ // prepare disabled actions array and handle legacy options
+ $disabled = explode(',',$conf['disableactions']);
+ $disabled = array_map('trim',$disabled);
+ if(isset($conf['openregister']) && !$conf['openregister']) $disabled[] = 'register';
+ if(isset($conf['resendpasswd']) && !$conf['resendpasswd']) $disabled[] = 'resendpwd';
+ if(isset($conf['subscribers']) && !$conf['subscribers']) {
+ $disabled[] = 'subscribe';
+ $disabled[] = 'subscribens';
+ }
+ $disabled = array_unique($disabled);
+ }
+
+ return !in_array($action,$disabled);
+}
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/events.php
===================================================================
--- site/trunk/www-root/wiki/inc/events.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/events.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,202 +1,202 @@
-<?php
-/**
- * DokuWiki Events
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-require_once(DOKU_INC.'inc/pluginutils.php');
-
-class Doku_Event {
-
- // public properties
- var $name = ''; // READONLY event name, objects must register against this name to see the event
- var $data = NULL; // READWRITE data relevant to the event, no standardised format (YET!)
- var $result = NULL; // READWRITE the results of the event action, only relevant in "_AFTER" advise
- // event handlers may modify this if they are preventing the default action
- // to provide the after event handlers with event results
- var $canPreventDefault = true; // READONLY if true, event handlers can prevent the events default action
-
- // private properties, event handlers can effect these through the provided methods
- var $_default = true; // whether or not to carry out the default action associated with the event
- var $_continue = true; // whether or not to continue propagating the event to other handlers
-
- /**
- * event constructor
- */
- function Doku_Event($name, &$data) {
-
- $this->name = $name;
- $this->data =& $data;
-
- }
-
- /**
- * advise functions
- *
- * advise all registered handlers of this event
- *
- * if these methods are used by functions outside of this object, they must
- * properly handle correct processing of any default action and issue an
- * advise_after() signal. e.g.
- * $evt = new Doku_Event(name, data);
- * if ($evt->advise_before(canPreventDefault) {
- * // default action code block
- * }
- * $evt->advise_after();
- * unset($evt);
- *
- * @return results of processing the event, usually $this->_default
- */
- function advise_before($enablePreventDefault=true) {
- global $EVENT_HANDLER;
-
- $this->canPreventDefault = $enablePreventDefault;
- $EVENT_HANDLER->process_event($this,'BEFORE');
-
- return (!$enablePreventDefault || $this->_default);
- }
-
- function advise_after() {
- global $EVENT_HANDLER;
-
- $this->_continue = true;
- $EVENT_HANDLER->process_event($this,'AFTER');
- }
-
- /**
- * trigger
- *
- * - advise all registered (<event>_BEFORE) handlers that this event is about to take place
- * - carry out the default action using $this->data based on $enablePrevent and
- * $this->_default, all of which may have been modified by the event handlers.
- * - advise all registered (<event>_AFTER) handlers that the event has taken place
- *
- * @return $event->results
- * the value set by any <event>_before or <event> handlers if the default action is prevented
- * or the results of the default action (as modified by <event>_after handlers)
- * or NULL no action took place and no handler modified the value
- */
- function trigger($action=NULL, $enablePrevent=true) {
-
- if (!is_callable($action)) $enablePrevent = false;
-
- if ($this->advise_before($enablePrevent) && is_callable($action)) {
- if (is_array($action)) {
- list($obj,$method) = $action;
- $this->result = $obj->$method($this->data);
- } else {
- $this->result = $action($this->data);
- }
- }
-
- $this->advise_after();
-
- return $this->result;
- }
-
- /**
- * stopPropagation
- *
- * stop any further processing of the event by event handlers
- * this function does not prevent the default action taking place
- */
- function stopPropagation() { $this->_continue = false; }
-
- /**
- * preventDefault
- *
- * prevent the default action taking place
- */
- function preventDefault() { $this->_default = false; }
-}
-
-class Doku_Event_Handler {
-
- // public properties: none
-
- // private properties
- var $_hooks = array(); // array of events and their registered handlers
-
- /**
- * event_handler
- *
- * constructor, loads all action plugins and calls their register() method giving them
- * an opportunity to register any hooks they require
- */
- function Doku_Event_Handler() {
-
- // load action plugins
- $plugin = NULL;
- $pluginlist = plugin_list('action');
-
- foreach ($pluginlist as $plugin_name) {
- $plugin =& plugin_load('action',$plugin_name);
-
- if ($plugin !== NULL) $plugin->register($this);
- }
- }
-
- /**
- * register_hook
- *
- * register a hook for an event
- *
- * @PARAM $event (string) name used by the event, (incl '_before' or '_after' for triggers)
- * @PARAM $obj (obj) object in whose scope method is to be executed,
- * if NULL, method is assumed to be a globally available function
- * @PARAM $method (function) event handler function
- * @PARAM $param (mixed) data passed to the event handler
- */
- function register_hook($event, $advise, &$obj, $method, $param=NULL) {
- $this->_hooks[$event.'_'.$advise][] = array(&$obj, $method, $param);
- }
-
- function process_event(&$event,$advise='') {
-
- $evt_name = $event->name . ($advise ? '_'.$advise : '_BEFORE');
-
- if (!empty($this->_hooks[$evt_name])) {
- $hook = reset($this->_hooks[$evt_name]);
- do {
-// list($obj, $method, $param) = $hook;
- $obj =& $hook[0];
- $method = $hook[1];
- $param = $hook[2];
-
- if (is_null($obj)) {
- $method($event, $param);
- } else {
- $obj->$method($event, $param);
- }
-
- } while ($event->_continue && $hook = next($this->_hooks[$evt_name]));
- }
- }
-}
-
-/**
- * trigger_event
- *
- * function wrapper to process (create, trigger and destroy) an event
- *
- * @PARAM $name (string) name for the event
- * @PARAM $data (mixed) event data
- * @PARAM $action (callback) (optional, default=NULL) default action, a php callback function
- * @PARAM $canPreventDefault (bool) (optional, default=true) can hooks prevent the default action
- *
- * @RETURN (mixed) the event results value after all event processing is complete
- * by default this is the return value of the default action however
- * it can be set or modified by event handler hooks
- */
-function trigger_event($name, &$data, $action=NULL, $canPreventDefault=true) {
-
- $evt = new Doku_Event($name, $data);
- return $evt->trigger($action, $canPreventDefault);
-}
-
-// create the event handler
-global $EVENT_HANDLER;
-$EVENT_HANDLER = new Doku_Event_Handler();
+<?php
+/**
+ * DokuWiki Events
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+require_once(DOKU_INC.'inc/pluginutils.php');
+
+class Doku_Event {
+
+ // public properties
+ var $name = ''; // READONLY event name, objects must register against this name to see the event
+ var $data = NULL; // READWRITE data relevant to the event, no standardised format (YET!)
+ var $result = NULL; // READWRITE the results of the event action, only relevant in "_AFTER" advise
+ // event handlers may modify this if they are preventing the default action
+ // to provide the after event handlers with event results
+ var $canPreventDefault = true; // READONLY if true, event handlers can prevent the events default action
+
+ // private properties, event handlers can effect these through the provided methods
+ var $_default = true; // whether or not to carry out the default action associated with the event
+ var $_continue = true; // whether or not to continue propagating the event to other handlers
+
+ /**
+ * event constructor
+ */
+ function Doku_Event($name, &$data) {
+
+ $this->name = $name;
+ $this->data =& $data;
+
+ }
+
+ /**
+ * advise functions
+ *
+ * advise all registered handlers of this event
+ *
+ * if these methods are used by functions outside of this object, they must
+ * properly handle correct processing of any default action and issue an
+ * advise_after() signal. e.g.
+ * $evt = new Doku_Event(name, data);
+ * if ($evt->advise_before(canPreventDefault) {
+ * // default action code block
+ * }
+ * $evt->advise_after();
+ * unset($evt);
+ *
+ * @return results of processing the event, usually $this->_default
+ */
+ function advise_before($enablePreventDefault=true) {
+ global $EVENT_HANDLER;
+
+ $this->canPreventDefault = $enablePreventDefault;
+ $EVENT_HANDLER->process_event($this,'BEFORE');
+
+ return (!$enablePreventDefault || $this->_default);
+ }
+
+ function advise_after() {
+ global $EVENT_HANDLER;
+
+ $this->_continue = true;
+ $EVENT_HANDLER->process_event($this,'AFTER');
+ }
+
+ /**
+ * trigger
+ *
+ * - advise all registered (<event>_BEFORE) handlers that this event is about to take place
+ * - carry out the default action using $this->data based on $enablePrevent and
+ * $this->_default, all of which may have been modified by the event handlers.
+ * - advise all registered (<event>_AFTER) handlers that the event has taken place
+ *
+ * @return $event->results
+ * the value set by any <event>_before or <event> handlers if the default action is prevented
+ * or the results of the default action (as modified by <event>_after handlers)
+ * or NULL no action took place and no handler modified the value
+ */
+ function trigger($action=NULL, $enablePrevent=true) {
+
+ if (!is_callable($action)) $enablePrevent = false;
+
+ if ($this->advise_before($enablePrevent) && is_callable($action)) {
+ if (is_array($action)) {
+ list($obj,$method) = $action;
+ $this->result = $obj->$method($this->data);
+ } else {
+ $this->result = $action($this->data);
+ }
+ }
+
+ $this->advise_after();
+
+ return $this->result;
+ }
+
+ /**
+ * stopPropagation
+ *
+ * stop any further processing of the event by event handlers
+ * this function does not prevent the default action taking place
+ */
+ function stopPropagation() { $this->_continue = false; }
+
+ /**
+ * preventDefault
+ *
+ * prevent the default action taking place
+ */
+ function preventDefault() { $this->_default = false; }
+}
+
+class Doku_Event_Handler {
+
+ // public properties: none
+
+ // private properties
+ var $_hooks = array(); // array of events and their registered handlers
+
+ /**
+ * event_handler
+ *
+ * constructor, loads all action plugins and calls their register() method giving them
+ * an opportunity to register any hooks they require
+ */
+ function Doku_Event_Handler() {
+
+ // load action plugins
+ $plugin = NULL;
+ $pluginlist = plugin_list('action');
+
+ foreach ($pluginlist as $plugin_name) {
+ $plugin =& plugin_load('action',$plugin_name);
+
+ if ($plugin !== NULL) $plugin->register($this);
+ }
+ }
+
+ /**
+ * register_hook
+ *
+ * register a hook for an event
+ *
+ * @PARAM $event (string) name used by the event, (incl '_before' or '_after' for triggers)
+ * @PARAM $obj (obj) object in whose scope method is to be executed,
+ * if NULL, method is assumed to be a globally available function
+ * @PARAM $method (function) event handler function
+ * @PARAM $param (mixed) data passed to the event handler
+ */
+ function register_hook($event, $advise, &$obj, $method, $param=NULL) {
+ $this->_hooks[$event.'_'.$advise][] = array(&$obj, $method, $param);
+ }
+
+ function process_event(&$event,$advise='') {
+
+ $evt_name = $event->name . ($advise ? '_'.$advise : '_BEFORE');
+
+ if (!empty($this->_hooks[$evt_name])) {
+ $hook = reset($this->_hooks[$evt_name]);
+ do {
+// list($obj, $method, $param) = $hook;
+ $obj =& $hook[0];
+ $method = $hook[1];
+ $param = $hook[2];
+
+ if (is_null($obj)) {
+ $method($event, $param);
+ } else {
+ $obj->$method($event, $param);
+ }
+
+ } while ($event->_continue && $hook = next($this->_hooks[$evt_name]));
+ }
+ }
+}
+
+/**
+ * trigger_event
+ *
+ * function wrapper to process (create, trigger and destroy) an event
+ *
+ * @PARAM $name (string) name for the event
+ * @PARAM $data (mixed) event data
+ * @PARAM $action (callback) (optional, default=NULL) default action, a php callback function
+ * @PARAM $canPreventDefault (bool) (optional, default=true) can hooks prevent the default action
+ *
+ * @RETURN (mixed) the event results value after all event processing is complete
+ * by default this is the return value of the default action however
+ * it can be set or modified by event handler hooks
+ */
+function trigger_event($name, &$data, $action=NULL, $canPreventDefault=true) {
+
+ $evt = new Doku_Event($name, $data);
+ return $evt->trigger($action, $canPreventDefault);
+}
+
+// create the event handler
+global $EVENT_HANDLER;
+$EVENT_HANDLER = new Doku_Event_Handler();
Modified: site/trunk/www-root/wiki/inc/feedcreator.class.php
===================================================================
--- site/trunk/www-root/wiki/inc/feedcreator.class.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/feedcreator.class.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1573 +1,1573 @@
-<?php
-/***************************************************************************
- * FeedCreator class v1.7.2-ppt
- * originally (c) Kai Blankenhorn
- * www.bitfolge.de
- * kaib at bitfolge.de
- * v1.3 work by Scott Reynen (scott at randomchaos.com) and Kai Blankenhorn
- * v1.5 OPML support by Dirk Clemens
- * v1.7.2-mod on-the-fly feed generation by Fabian Wolf (info at f2w.de)
- * v1.7.2-ppt ATOM 1.0 support by Mohammad Hafiz bin Ismail (mypapit at gmail.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @author www.bitfolge.de
- *
- * Changelog:
- *
- * this version contains some smaller modifications for DokuWiki as well
- *
- * v1.7.2-ppt 11-21-05
- * added Atom 1.0 support
- * added enclosure support for RSS 2.0/ATOM 1.0
- * added docs for v1.7.2-ppt only!
- *
- * v1.7.2-mod 03-12-05
- * added output function outputFeed for on-the-fly feed generation
- *
- * v1.7.2 10-11-04
- * license changed to LGPL
- *
- * v1.7.1
- * fixed a syntax bug
- * fixed left over debug code
- *
- * v1.7 07-18-04
- * added HTML and JavaScript feeds (configurable via CSS) (thanks to Pascal Van Hecke)
- * added HTML descriptions for all feed formats (thanks to Pascal Van Hecke)
- * added a switch to select an external stylesheet (thanks to Pascal Van Hecke)
- * changed default content-type to application/xml
- * added character encoding setting
- * fixed numerous smaller bugs (thanks to Sören Fuhrmann of golem.de)
- * improved changing ATOM versions handling (thanks to August Trometer)
- * improved the UniversalFeedCreator's useCached method (thanks to Sören Fuhrmann of golem.de)
- * added charset output in HTTP headers (thanks to Sören Fuhrmann of golem.de)
- * added Slashdot namespace to RSS 1.0 (thanks to Sören Fuhrmann of golem.de)
- *
- * See www.bitfolge.de for additional changelog info
- */
-// your local timezone, set to "" to disable or for GMT
-define("TIME_ZONE",date("O", time()));
-
-
-
-
-/**
- * Version string.
- **/
-
-define("FEEDCREATOR_VERSION", "FeedCreator 1.7.2-ppt DokuWiki");
-
-
-
-/**
- * A FeedItem is a part of a FeedCreator feed.
- *
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- * @since 1.3
- */
-class FeedItem extends HtmlDescribable {
- /**
- * Mandatory attributes of an item.
- */
- var $title, $description, $link;
-
- /**
- * Optional attributes of an item.
- */
- var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator;
-
- /**
- * Publishing date of an item. May be in one of the following formats:
- *
- * RFC 822:
- * "Mon, 20 Jan 03 18:05:41 +0400"
- * "20 Jan 03 18:05:41 +0000"
- *
- * ISO 8601:
- * "2003-01-20T18:05:41+04:00"
- *
- * Unix:
- * 1043082341
- */
- var $date;
-
- /**
- * Add <enclosure> element tag RSS 2.0
- * modified by : Mohammad Hafiz bin Ismail (mypapit at gmail.com)
- *
- *
- * display :
- * <enclosure length="17691" url="http://something.com/picture.jpg" type="image/jpeg" />
- *
- */
- var $enclosure;
-
- /**
- * Any additional elements to include as an assiciated array. All $key => $value pairs
- * will be included unencoded in the feed item in the form
- * <$key>$value</$key>
- * Again: No encoding will be used! This means you can invalidate or enhance the feed
- * if $value contains markup. This may be abused to embed tags not implemented by
- * the FeedCreator class used.
- */
- var $additionalElements = Array();
-
- // on hold
- // var $source;
-}
-
-class EnclosureItem extends HtmlDescribable {
- /*
- *
- * core variables
- *
- **/
- var $url,$length,$type;
-
- /*
- * For use with another extension like Yahoo mRSS
- * Warning :
- * These variables might not show up in
- * later release / not finalize yet!
- *
- */
- var $width, $height, $title, $description, $keywords, $thumburl;
-
- var $additionalElements = Array();
-
-}
-
-
-/**
- * An FeedImage may be added to a FeedCreator feed.
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- * @since 1.3
- */
-class FeedImage extends HtmlDescribable {
- /**
- * Mandatory attributes of an image.
- */
- var $title, $url, $link;
-
- /**
- * Optional attributes of an image.
- */
- var $width, $height, $description;
-}
-
-
-
-/**
- * An HtmlDescribable is an item within a feed that can have a description that may
- * include HTML markup.
- */
-class HtmlDescribable {
- /**
- * Indicates whether the description field should be rendered in HTML.
- */
- var $descriptionHtmlSyndicated;
-
- /**
- * Indicates whether and to how many characters a description should be truncated.
- */
- var $descriptionTruncSize;
-
- /**
- * Returns a formatted description field, depending on descriptionHtmlSyndicated and
- * $descriptionTruncSize properties
- * @return string the formatted description
- */
- function getDescription() {
- $descriptionField = new FeedHtmlField($this->description);
- $descriptionField->syndicateHtml = $this->descriptionHtmlSyndicated;
- $descriptionField->truncSize = $this->descriptionTruncSize;
- return $descriptionField->output();
- }
-
-}
-
-
-
-/**
- * An FeedHtmlField describes and generates
- * a feed, item or image html field (probably a description). Output is
- * generated based on $truncSize, $syndicateHtml properties.
- * @author Pascal Van Hecke <feedcreator.class.php at vanhecke.info>
- * @version 1.6
- */
-class FeedHtmlField {
- /**
- * Mandatory attributes of a FeedHtmlField.
- */
- var $rawFieldContent;
-
- /**
- * Optional attributes of a FeedHtmlField.
- *
- */
- var $truncSize, $syndicateHtml;
-
- /**
- * Creates a new instance of FeedHtmlField.
- * @param $string: if given, sets the rawFieldContent property
- */
- function FeedHtmlField($parFieldContent) {
- if ($parFieldContent) {
- $this->rawFieldContent = $parFieldContent;
- }
- }
-
-
- /**
- * Creates the right output, depending on $truncSize, $syndicateHtml properties.
- * @return string the formatted field
- */
- function output() {
- // when field available and syndicated in html we assume
- // - valid html in $rawFieldContent and we enclose in CDATA tags
- // - no truncation (truncating risks producing invalid html)
- if (!$this->rawFieldContent) {
- $result = "";
- } elseif ($this->syndicateHtml) {
- $result = "<![CDATA[".$this->rawFieldContent."]]>";
- } else {
- if ($this->truncSize and is_int($this->truncSize)) {
- $result = FeedCreator::iTrunc(htmlspecialchars($this->rawFieldContent),$this->truncSize);
- } else {
- $result = htmlspecialchars($this->rawFieldContent);
- }
- }
- return $result;
- }
-
-}
-
-
-
-/**
- * UniversalFeedCreator lets you choose during runtime which
- * format to build.
- * For general usage of a feed class, see the FeedCreator class
- * below or the example above.
- *
- * @since 1.3
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- */
-class UniversalFeedCreator extends FeedCreator {
- var $_feed;
-
- function _setFormat($format) {
- switch (strtoupper($format)) {
-
- case "2.0":
- // fall through
- case "RSS2.0":
- $this->_feed = new RSSCreator20();
- break;
-
- case "1.0":
- // fall through
- case "RSS1.0":
- $this->_feed = new RSSCreator10();
- break;
-
- case "0.91":
- // fall through
- case "RSS0.91":
- $this->_feed = new RSSCreator091();
- break;
-
- case "PIE0.1":
- $this->_feed = new PIECreator01();
- break;
-
- case "MBOX":
- $this->_feed = new MBOXCreator();
- break;
-
- case "OPML":
- $this->_feed = new OPMLCreator();
- break;
-
- case "ATOM":
- // fall through: always the latest ATOM version
- case "ATOM1.0":
- $this->_feed = new AtomCreator10();
- break;
-
- case "ATOM0.3":
- $this->_feed = new AtomCreator03();
- break;
-
- case "HTML":
- $this->_feed = new HTMLCreator();
- break;
-
- case "JS":
- // fall through
- case "JAVASCRIPT":
- $this->_feed = new JSCreator();
- break;
-
- default:
- $this->_feed = new RSSCreator091();
- break;
- }
-
- $vars = get_object_vars($this);
- foreach ($vars as $key => $value) {
- // prevent overwriting of properties "contentType", "encoding"; do not copy "_feed" itself
- if (!in_array($key, array("_feed", "contentType", "encoding"))) {
- $this->_feed->{$key} = $this->{$key};
- }
- }
- }
-
- function _sendMIME($format) {
- header('Content-Type: '.$this->contentType.'; charset='.$this->encoding, true);
- }
-
- /**
- * Creates a syndication feed based on the items previously added.
- *
- * @see FeedCreator::addItem()
- * @param string format format the feed should comply to. Valid values are:
- * "PIE0.1", "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3", "HTML", "JS"
- * @return string the contents of the feed.
- */
- function createFeed($format = "RSS0.91") {
- $this->_setFormat($format);
- return $this->_feed->createFeed();
- }
-
- /**
- * Saves this feed as a file on the local disk. After the file is saved, an HTTP redirect
- * header may be sent to redirect the use to the newly created file.
- * @since 1.4
- *
- * @param string format format the feed should comply to. Valid values are:
- * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM", "ATOM0.3", "HTML", "JS"
- * @param string filename optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param boolean displayContents optional send the content of the file or not. If true, the file will be sent in the body of the response.
- */
- function saveFeed($format="RSS0.91", $filename="", $displayContents=true) {
- $this->_setFormat($format);
- $this->_feed->saveFeed($filename, $displayContents);
- }
-
-
- /**
- * Turns on caching and checks if there is a recent version of this feed in the cache.
- * If there is, an HTTP redirect header is sent.
- * To effectively use caching, you should create the FeedCreator object and call this method
- * before anything else, especially before you do the time consuming task to build the feed
- * (web fetching, for example).
- *
- * @param string format format the feed should comply to. Valid values are:
- * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
- * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
- */
- function useCached($format="RSS0.91", $filename="", $timeout=3600) {
- $this->_setFormat($format);
- $this->_feed->useCached($filename, $timeout);
- }
-
-
- /**
- * Outputs feed to the browser - needed for on-the-fly feed generation (like it is done in WordPress, etc.)
- *
- * @param format string format the feed should comply to. Valid values are:
- * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
- */
- function outputFeed($format='RSS0.91') {
- $this->_setFormat($format);
- $this->_sendMIME($format);
- $this->_feed->outputFeed();
- }
-
-
-}
-
-
-/**
- * FeedCreator is the abstract base implementation for concrete
- * implementations that implement a specific format of syndication.
- *
- * @abstract
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- * @since 1.4
- */
-class FeedCreator extends HtmlDescribable {
-
- /**
- * Mandatory attributes of a feed.
- */
- var $title, $description, $link;
-
-
- /**
- * Optional attributes of a feed.
- */
- var $syndicationURL, $image, $language, $copyright, $pubDate, $lastBuildDate, $editor, $editorEmail, $webmaster, $category, $docs, $ttl, $rating, $skipHours, $skipDays;
-
- /**
- * The url of the external xsl stylesheet used to format the naked rss feed.
- * Ignored in the output when empty.
- */
- var $xslStyleSheet = "";
-
-
- /**
- * @access private
- */
- var $items = Array();
-
-
- /**
- * This feed's MIME content type.
- * @since 1.4
- * @access private
- */
- var $contentType = "application/xml";
-
-
- /**
- * This feed's character encoding.
- * @since 1.6.1
- **/
- var $encoding = "utf-8";
-
-
- /**
- * Any additional elements to include as an assiciated array. All $key => $value pairs
- * will be included unencoded in the feed in the form
- * <$key>$value</$key>
- * Again: No encoding will be used! This means you can invalidate or enhance the feed
- * if $value contains markup. This may be abused to embed tags not implemented by
- * the FeedCreator class used.
- */
- var $additionalElements = Array();
-
-
- /**
- * Adds an FeedItem to the feed.
- *
- * @param object FeedItem $item The FeedItem to add to the feed.
- * @access public
- */
- function addItem($item) {
- $this->items[] = $item;
- }
-
-
- /**
- * Truncates a string to a certain length at the most sensible point.
- * First, if there's a '.' character near the end of the string, the string is truncated after this character.
- * If there is no '.', the string is truncated after the last ' ' character.
- * If the string is truncated, " ..." is appended.
- * If the string is already shorter than $length, it is returned unchanged.
- *
- * @static
- * @param string string A string to be truncated.
- * @param int length the maximum length the string should be truncated to
- * @return string the truncated string
- */
- function iTrunc($string, $length) {
- if (strlen($string)<=$length) {
- return $string;
- }
-
- $pos = strrpos($string,".");
- if ($pos>=$length-4) {
- $string = substr($string,0,$length-4);
- $pos = strrpos($string,".");
- }
- if ($pos>=$length*0.4) {
- return substr($string,0,$pos+1)." ...";
- }
-
- $pos = strrpos($string," ");
- if ($pos>=$length-4) {
- $string = substr($string,0,$length-4);
- $pos = strrpos($string," ");
- }
- if ($pos>=$length*0.4) {
- return substr($string,0,$pos)." ...";
- }
-
- return substr($string,0,$length-4)." ...";
-
- }
-
-
- /**
- * Creates a comment indicating the generator of this feed.
- * The format of this comment seems to be recognized by
- * Syndic8.com.
- */
- function _createGeneratorComment() {
- return "<!-- generator=\"".FEEDCREATOR_VERSION."\" -->\n";
- }
-
-
- /**
- * Creates a string containing all additional elements specified in
- * $additionalElements.
- * @param elements array an associative array containing key => value pairs
- * @param indentString string a string that will be inserted before every generated line
- * @return string the XML tags corresponding to $additionalElements
- */
- function _createAdditionalElements($elements, $indentString="") {
- $ae = "";
- if (is_array($elements)) {
- foreach($elements AS $key => $value) {
- $ae.= $indentString."<$key>$value</$key>\n";
- }
- }
- return $ae;
- }
-
- function _createStylesheetReferences() {
- $xml = "";
- if ($this->cssStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->cssStyleSheet."\" type=\"text/css\"?>\n";
- if ($this->xslStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->xslStyleSheet."\" type=\"text/xsl\"?>\n";
- return $xml;
- }
-
-
- /**
- * Builds the feed's text.
- * @abstract
- * @return string the feed's complete text
- */
- function createFeed() {
- }
-
- /**
- * Generate a filename for the feed cache file. The result will be $_SERVER["PHP_SELF"] with the extension changed to .xml.
- * For example:
- *
- * echo $_SERVER["PHP_SELF"]."\n";
- * echo FeedCreator::_generateFilename();
- *
- * would produce:
- *
- * /rss/latestnews.php
- * latestnews.xml
- *
- * @return string the feed cache filename
- * @since 1.4
- * @access private
- */
- function _generateFilename() {
- $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
- return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".xml";
- }
-
-
- /**
- * @since 1.4
- * @access private
- */
- function _redirect($filename) {
- // attention, heavily-commented-out-area
-
- // maybe use this in addition to file time checking
- //Header("Expires: ".date("r",time()+$this->_timeout));
-
- /* no caching at all, doesn't seem to work as good:
- Header("Cache-Control: no-cache");
- Header("Pragma: no-cache");
- */
-
- // HTTP redirect, some feed readers' simple HTTP implementations don't follow it
- //Header("Location: ".$filename);
-
- header("Content-Type: ".$this->contentType."; charset=".$this->encoding."; filename=".basename($filename));
- header("Content-Disposition: inline; filename=".basename($filename));
- readfile($filename, "r");
- die();
- }
-
- /**
- * Turns on caching and checks if there is a recent version of this feed in the cache.
- * If there is, an HTTP redirect header is sent.
- * To effectively use caching, you should create the FeedCreator object and call this method
- * before anything else, especially before you do the time consuming task to build the feed
- * (web fetching, for example).
- * @since 1.4
- * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
- */
- function useCached($filename="", $timeout=3600) {
- $this->_timeout = $timeout;
- if ($filename=="") {
- $filename = $this->_generateFilename();
- }
- if (file_exists($filename) AND (time()-filemtime($filename) < $timeout)) {
- $this->_redirect($filename);
- }
- }
-
-
- /**
- * Saves this feed as a file on the local disk. After the file is saved, a redirect
- * header may be sent to redirect the user to the newly created file.
- * @since 1.4
- *
- * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
- * @param redirect boolean optional send an HTTP redirect header or not. If true, the user will be automatically redirected to the created file.
- */
- function saveFeed($filename="", $displayContents=true) {
- if ($filename=="") {
- $filename = $this->_generateFilename();
- }
- $feedFile = fopen($filename, "w+");
- if ($feedFile) {
- fputs($feedFile,$this->createFeed());
- fclose($feedFile);
- if ($displayContents) {
- $this->_redirect($filename);
- }
- } else {
- echo "<br /><b>Error creating feed file, please check write permissions.</b><br />";
- }
- }
-
- /**
- * Outputs this feed directly to the browser - for on-the-fly feed generation
- * @since 1.7.2-mod
- *
- * still missing: proper header output - currently you have to add it manually
- */
- function outputFeed() {
- echo $this->createFeed();
- }
-
-
-}
-
-
-/**
- * FeedDate is an internal class that stores a date for a feed or feed item.
- * Usually, you won't need to use this.
- */
-class FeedDate {
- var $unix;
-
- /**
- * Creates a new instance of FeedDate representing a given date.
- * Accepts RFC 822, ISO 8601 date formats as well as unix time stamps.
- * @param mixed $dateString optional the date this FeedDate will represent. If not specified, the current date and time is used.
- */
- function FeedDate($dateString="") {
- if ($dateString=="") $dateString = date("r");
-
- if (is_numeric($dateString)) {
- $this->unix = $dateString;
- return;
- }
- if (preg_match("~(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s+)?(\\d{1,2})\\s+([a-zA-Z]{3})\\s+(\\d{4})\\s+(\\d{2}):(\\d{2}):(\\d{2})\\s+(.*)~",$dateString,$matches)) {
- $months = Array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12);
- $this->unix = mktime($matches[4],$matches[5],$matches[6],$months[$matches[2]],$matches[1],$matches[3]);
- if (substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
- $tzOffset = (substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;
- } else {
- if (strlen($matches[7])==1) {
- $oneHour = 3600;
- $ord = ord($matches[7]);
- if ($ord < ord("M")) {
- $tzOffset = (ord("A") - $ord - 1) * $oneHour;
- } elseif ($ord >= ord("M") AND $matches[7]!="Z") {
- $tzOffset = ($ord - ord("M")) * $oneHour;
- } elseif ($matches[7]=="Z") {
- $tzOffset = 0;
- }
- }
- switch ($matches[7]) {
- case "UT":
- case "GMT": $tzOffset = 0;
- }
- }
- $this->unix += $tzOffset;
- return;
- }
- if (preg_match("~(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(.*)~",$dateString,$matches)) {
- $this->unix = mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]);
- if (substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
- $tzOffset = (substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;
- } else {
- if ($matches[7]=="Z") {
- $tzOffset = 0;
- }
- }
- $this->unix += $tzOffset;
- return;
- }
- $this->unix = 0;
- }
-
- /**
- * Gets the date stored in this FeedDate as an RFC 822 date.
- *
- * @return a date in RFC 822 format
- */
- function rfc822() {
- //return gmdate("r",$this->unix);
- $date = gmdate("D, d M Y H:i:s", $this->unix);
- if (TIME_ZONE!="") $date .= " ".str_replace(":","",TIME_ZONE);
- return $date;
- }
-
- /**
- * Gets the date stored in this FeedDate as an ISO 8601 date.
- *
- * @return a date in ISO 8601 (RFC 3339) format
- */
- function iso8601() {
- $date = gmdate("Y-m-d\TH:i:sO",$this->unix);
- if (TIME_ZONE!="") $date = str_replace("+0000",TIME_ZONE,$date);
- $date = substr($date,0,22) . ':' . substr($date,-2);
- return $date;
- }
-
-
- /**
- * Gets the date stored in this FeedDate as unix time stamp.
- *
- * @return a date as a unix time stamp
- */
- function unix() {
- return $this->unix;
- }
-}
-
-
-/**
- * RSSCreator10 is a FeedCreator that implements RDF Site Summary (RSS) 1.0.
- *
- * @see http://www.purl.org/rss/1.0/
- * @since 1.3
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- */
-class RSSCreator10 extends FeedCreator {
-
- /**
- * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0.
- * The feed will contain all items previously added in the same order.
- * @return string the feed's complete text
- */
- function createFeed() {
- $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
- $feed.= $this->_createGeneratorComment();
- if ($this->cssStyleSheet=="") {
- $cssStyleSheet = "http://www.w3.org/2000/08/w3c-synd/style.css";
- }
- $feed.= $this->_createStylesheetReferences();
- $feed.= "<rdf:RDF\n";
- $feed.= " xmlns=\"http://purl.org/rss/1.0/\"\n";
- $feed.= " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
- $feed.= " xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n";
- $feed.= " xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n";
- $feed.= " <channel rdf:about=\"".$this->syndicationURL."\">\n";
- $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
- $feed.= " <description>".htmlspecialchars($this->description)."</description>\n";
- $feed.= " <link>".$this->link."</link>\n";
- if ($this->image!=null) {
- $feed.= " <image rdf:resource=\"".$this->image->url."\" />\n";
- }
- $now = new FeedDate();
- $feed.= " <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n";
- $feed.= " <items>\n";
- $feed.= " <rdf:Seq>\n";
- for ($i=0;$i<count($this->items);$i++) {
- $feed.= " <rdf:li rdf:resource=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
- }
- $feed.= " </rdf:Seq>\n";
- $feed.= " </items>\n";
- $feed.= " </channel>\n";
- if ($this->image!=null) {
- $feed.= " <image rdf:about=\"".$this->image->url."\">\n";
- $feed.= " <title>".htmlspecialchars($this->image->title)."</title>\n";
- $feed.= " <link>".$this->image->link."</link>\n";
- $feed.= " <url>".$this->image->url."</url>\n";
- $feed.= " </image>\n";
- }
- $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
-
- for ($i=0;$i<count($this->items);$i++) {
- $feed.= " <item rdf:about=\"".htmlspecialchars($this->items[$i]->link)."\">\n";
- //$feed.= " <dc:type>Posting</dc:type>\n";
- $feed.= " <dc:format>text/html</dc:format>\n";
- if ($this->items[$i]->date!=null) {
- $itemDate = new FeedDate($this->items[$i]->date);
- $feed.= " <dc:date>".htmlspecialchars($itemDate->iso8601())."</dc:date>\n";
- }
- if ($this->items[$i]->source!="") {
- $feed.= " <dc:source>".htmlspecialchars($this->items[$i]->source)."</dc:source>\n";
- }
- if ($this->items[$i]->author!="") {
- $feed.= " <dc:creator>".htmlspecialchars($this->items[$i]->author)."</dc:creator>\n";
- }
- $feed.= " <title>".htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r"," ")))."</title>\n";
- $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
- $feed.= " <description>".htmlspecialchars($this->items[$i]->description)."</description>\n";
- $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
- $feed.= " </item>\n";
- }
- $feed.= "</rdf:RDF>\n";
- return $feed;
- }
-}
-
-
-
-/**
- * RSSCreator091 is a FeedCreator that implements RSS 0.91 Spec, revision 3.
- *
- * @see http://my.netscape.com/publish/formats/rss-spec-0.91.html
- * @since 1.3
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- */
-class RSSCreator091 extends FeedCreator {
-
- /**
- * Stores this RSS feed's version number.
- * @access private
- */
- var $RSSVersion;
-
- function RSSCreator091() {
- $this->_setRSSVersion("0.91");
- $this->contentType = "application/rss+xml";
- }
-
- /**
- * Sets this RSS feed's version number.
- * @access private
- */
- function _setRSSVersion($version) {
- $this->RSSVersion = $version;
- }
-
- /**
- * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0.
- * The feed will contain all items previously added in the same order.
- * @return string the feed's complete text
- */
- function createFeed() {
- $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
- $feed.= $this->_createGeneratorComment();
- $feed.= $this->_createStylesheetReferences();
- $feed.= "<rss version=\"".$this->RSSVersion."\">\n";
- $feed.= " <channel>\n";
- $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
- $this->descriptionTruncSize = 500;
- $feed.= " <description>".$this->getDescription()."</description>\n";
- $feed.= " <link>".$this->link."</link>\n";
- $now = new FeedDate();
- $feed.= " <lastBuildDate>".htmlspecialchars($now->rfc822())."</lastBuildDate>\n";
- $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n";
-
- if ($this->image!=null) {
- $feed.= " <image>\n";
- $feed.= " <url>".$this->image->url."</url>\n";
- $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title),100)."</title>\n";
- $feed.= " <link>".$this->image->link."</link>\n";
- if ($this->image->width!="") {
- $feed.= " <width>".$this->image->width."</width>\n";
- }
- if ($this->image->height!="") {
- $feed.= " <height>".$this->image->height."</height>\n";
- }
- if ($this->image->description!="") {
- $feed.= " <description>".$this->image->getDescription()."</description>\n";
- }
- $feed.= " </image>\n";
- }
- if ($this->language!="") {
- $feed.= " <language>".$this->language."</language>\n";
- }
- if ($this->copyright!="") {
- $feed.= " <copyright>".FeedCreator::iTrunc(htmlspecialchars($this->copyright),100)."</copyright>\n";
- }
- if ($this->editor!="") {
- $feed.= " <managingEditor>".FeedCreator::iTrunc(htmlspecialchars($this->editor),100)."</managingEditor>\n";
- }
- if ($this->webmaster!="") {
- $feed.= " <webMaster>".FeedCreator::iTrunc(htmlspecialchars($this->webmaster),100)."</webMaster>\n";
- }
- if ($this->pubDate!="") {
- $pubDate = new FeedDate($this->pubDate);
- $feed.= " <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n";
- }
- if ($this->category!="") {
- // Changed for DokuWiki: multiple categories are possible
- if(is_array($this->category)) foreach($this->category as $cat){
- $feed.= " <category>".htmlspecialchars($cat)."</category>\n";
- }else{
- $feed.= " <category>".htmlspecialchars($this->category)."</category>\n";
- }
- }
- if ($this->docs!="") {
- $feed.= " <docs>".FeedCreator::iTrunc(htmlspecialchars($this->docs),500)."</docs>\n";
- }
- if ($this->ttl!="") {
- $feed.= " <ttl>".htmlspecialchars($this->ttl)."</ttl>\n";
- }
- if ($this->rating!="") {
- $feed.= " <rating>".FeedCreator::iTrunc(htmlspecialchars($this->rating),500)."</rating>\n";
- }
- if ($this->skipHours!="") {
- $feed.= " <skipHours>".htmlspecialchars($this->skipHours)."</skipHours>\n";
- }
- if ($this->skipDays!="") {
- $feed.= " <skipDays>".htmlspecialchars($this->skipDays)."</skipDays>\n";
- }
- $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
-
- for ($i=0;$i<count($this->items);$i++) {
- $feed.= " <item>\n";
- $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n";
- $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
- $feed.= " <description>".$this->items[$i]->getDescription()."</description>\n";
-
- if ($this->items[$i]->author!="") {
- $feed.= " <author>".htmlspecialchars($this->items[$i]->author)."</author>\n";
- }
- /*
- // on hold
- if ($this->items[$i]->source!="") {
- $feed.= " <source>".htmlspecialchars($this->items[$i]->source)."</source>\n";
- }
- */
- if ($this->items[$i]->category!="") {
- // Changed for DokuWiki: multiple categories are possible
- if(is_array($this->items[$i]->category)) foreach($this->items[$i]->category as $cat){
- $feed.= " <category>".htmlspecialchars($cat)."</category>\n";
- }else{
- $feed.= " <category>".htmlspecialchars($this->items[$i]->category)."</category>\n";
- }
- }
-
- if ($this->items[$i]->comments!="") {
- $feed.= " <comments>".htmlspecialchars($this->items[$i]->comments)."</comments>\n";
- }
- if ($this->items[$i]->date!="") {
- $itemDate = new FeedDate($this->items[$i]->date);
- $feed.= " <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n";
- }
- if ($this->items[$i]->guid!="") {
- $feed.= " <guid>".htmlspecialchars($this->items[$i]->guid)."</guid>\n";
- }
- $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
-
- if ($this->RSSVersion == "2.0" && $this->items[$i]->enclosure != NULL)
- {
- $feed.= " <enclosure url=\"";
- $feed.= $this->items[$i]->enclosure->url;
- $feed.= "\" length=\"";
- $feed.= $this->items[$i]->enclosure->length;
- $feed.= "\" type=\"";
- $feed.= $this->items[$i]->enclosure->type;
- $feed.= "\"/>\n";
- }
-
-
-
- $feed.= " </item>\n";
- }
-
- $feed.= " </channel>\n";
- $feed.= "</rss>\n";
- return $feed;
- }
-}
-
-
-
-/**
- * RSSCreator20 is a FeedCreator that implements RDF Site Summary (RSS) 2.0.
- *
- * @see http://backend.userland.com/rss
- * @since 1.3
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- */
-class RSSCreator20 extends RSSCreator091 {
-
- function RSSCreator20() {
- parent::_setRSSVersion("2.0");
- }
-
-}
-
-
-/**
- * PIECreator01 is a FeedCreator that implements the emerging PIE specification,
- * as in http://intertwingly.net/wiki/pie/Syntax.
- *
- * @deprecated
- * @since 1.3
- * @author Scott Reynen <scott at randomchaos.com> and Kai Blankenhorn <kaib at bitfolge.de>
- */
-class PIECreator01 extends FeedCreator {
-
- function PIECreator01() {
- $this->encoding = "utf-8";
- }
-
- function createFeed() {
- $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
- $feed.= $this->_createStylesheetReferences();
- $feed.= "<feed version=\"0.1\" xmlns=\"http://example.com/newformat#\">\n";
- $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
- $this->truncSize = 500;
- $feed.= " <subtitle>".$this->getDescription()."</subtitle>\n";
- $feed.= " <link>".$this->link."</link>\n";
- for ($i=0;$i<count($this->items);$i++) {
- $feed.= " <entry>\n";
- $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n";
- $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
- $itemDate = new FeedDate($this->items[$i]->date);
- $feed.= " <created>".htmlspecialchars($itemDate->iso8601())."</created>\n";
- $feed.= " <issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n";
- $feed.= " <modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n";
- $feed.= " <id>".htmlspecialchars($this->items[$i]->guid)."</id>\n";
- if ($this->items[$i]->author!="") {
- $feed.= " <author>\n";
- $feed.= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
- if ($this->items[$i]->authorEmail!="") {
- $feed.= " <email>".$this->items[$i]->authorEmail."</email>\n";
- }
- $feed.=" </author>\n";
- }
- $feed.= " <content type=\"text/html\" xml:lang=\"en-us\">\n";
- $feed.= " <div xmlns=\"http://www.w3.org/1999/xhtml\">".$this->items[$i]->getDescription()."</div>\n";
- $feed.= " </content>\n";
- $feed.= " </entry>\n";
- }
- $feed.= "</feed>\n";
- return $feed;
- }
-}
-
-/**
- * AtomCreator10 is a FeedCreator that implements the atom specification,
- * as in http://www.atomenabled.org/developers/syndication/atom-format-spec.php
- * Please note that just by using AtomCreator10 you won't automatically
- * produce valid atom files. For example, you have to specify either an editor
- * for the feed or an author for every single feed item.
- *
- * Some elements have not been implemented yet. These are (incomplete list):
- * author URL, item author's email and URL, item contents, alternate links,
- * other link content types than text/html. Some of them may be created with
- * AtomCreator10::additionalElements.
- *
- * @see FeedCreator#additionalElements
- * @since 1.7.2-mod (modified)
- * @author Mohammad Hafiz Ismail (mypapit at gmail.com)
- */
- class AtomCreator10 extends FeedCreator {
-
- function AtomCreator10() {
- $this->contentType = "application/atom+xml";
- $this->encoding = "utf-8";
- }
-
- function createFeed() {
- $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
- $feed.= $this->_createGeneratorComment();
- $feed.= $this->_createStylesheetReferences();
- $feed.= "<feed xmlns=\"http://www.w3.org/2005/Atom\"";
- if ($this->language!="") {
- $feed.= " xml:lang=\"".$this->language."\"";
- }
- $feed.= ">\n";
- $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
- $feed.= " <subtitle>".htmlspecialchars($this->description)."</subtitle>\n";
- $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";
- $feed.= " <id>".htmlspecialchars($this->link)."</id>\n";
- $now = new FeedDate();
- $feed.= " <updated>".htmlspecialchars($now->iso8601())."</updated>\n";
- if ($this->editor!="") {
- $feed.= " <author>\n";
- $feed.= " <name>".$this->editor."</name>\n";
- if ($this->editorEmail!="") {
- $feed.= " <email>".$this->editorEmail."</email>\n";
- }
- $feed.= " </author>\n";
- }
- $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n";
- $feed.= "<link rel=\"self\" type=\"application/atom+xml\" href=\"". $this->syndicationURL . "\" />\n";
- $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
- for ($i=0;$i<count($this->items);$i++) {
- $feed.= " <entry>\n";
- $feed.= " <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";
- $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
- if ($this->items[$i]->date=="") {
- $this->items[$i]->date = time();
- }
- $itemDate = new FeedDate($this->items[$i]->date);
- $feed.= " <published>".htmlspecialchars($itemDate->iso8601())."</published>\n";
- $feed.= " <updated>".htmlspecialchars($itemDate->iso8601())."</updated>\n";
- $feed.= " <id>".htmlspecialchars($this->items[$i]->link)."</id>\n";
- $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
- if ($this->items[$i]->author!="") {
- $feed.= " <author>\n";
- $feed.= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
- $feed.= " </author>\n";
- }
- if ($this->items[$i]->description!="") {
- $feed.= " <summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n";
- }
- if ($this->items[$i]->enclosure != NULL) {
- $feed.=" <link rel=\"enclosure\" href=\"". $this->items[$i]->enclosure->url ."\" type=\"". $this->items[$i]->enclosure->type."\" length=\"". $this->items[$i]->enclosure->length . "\" />\n";
- }
- $feed.= " </entry>\n";
- }
- $feed.= "</feed>\n";
- return $feed;
- }
-
-
-}
-
-
-/**
- * AtomCreator03 is a FeedCreator that implements the atom specification,
- * as in http://www.intertwingly.net/wiki/pie/FrontPage.
- * Please note that just by using AtomCreator03 you won't automatically
- * produce valid atom files. For example, you have to specify either an editor
- * for the feed or an author for every single feed item.
- *
- * Some elements have not been implemented yet. These are (incomplete list):
- * author URL, item author's email and URL, item contents, alternate links,
- * other link content types than text/html. Some of them may be created with
- * AtomCreator03::additionalElements.
- *
- * @see FeedCreator#additionalElements
- * @since 1.6
- * @author Kai Blankenhorn <kaib at bitfolge.de>, Scott Reynen <scott at randomchaos.com>
- */
-class AtomCreator03 extends FeedCreator {
-
- function AtomCreator03() {
- $this->contentType = "application/atom+xml";
- $this->encoding = "utf-8";
- }
-
- function createFeed() {
- $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
- $feed.= $this->_createGeneratorComment();
- $feed.= $this->_createStylesheetReferences();
- $feed.= "<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\"";
- if ($this->language!="") {
- $feed.= " xml:lang=\"".$this->language."\"";
- }
- $feed.= ">\n";
- $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
- $feed.= " <tagline>".htmlspecialchars($this->description)."</tagline>\n";
- $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";
- $feed.= " <id>".htmlspecialchars($this->link)."</id>\n";
- $now = new FeedDate();
- $feed.= " <modified>".htmlspecialchars($now->iso8601())."</modified>\n";
- if ($this->editor!="") {
- $feed.= " <author>\n";
- $feed.= " <name>".$this->editor."</name>\n";
- if ($this->editorEmail!="") {
- $feed.= " <email>".$this->editorEmail."</email>\n";
- }
- $feed.= " </author>\n";
- }
- $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n";
- $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
- for ($i=0;$i<count($this->items);$i++) {
- $feed.= " <entry>\n";
- $feed.= " <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";
- $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
- if ($this->items[$i]->date=="") {
- $this->items[$i]->date = time();
- }
- $itemDate = new FeedDate($this->items[$i]->date);
- $feed.= " <created>".htmlspecialchars($itemDate->iso8601())."</created>\n";
- $feed.= " <issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n";
- $feed.= " <modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n";
- $feed.= " <id>".htmlspecialchars($this->items[$i]->link)."</id>\n";
- $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
- if ($this->items[$i]->author!="") {
- $feed.= " <author>\n";
- $feed.= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
- $feed.= " </author>\n";
- }
- if ($this->items[$i]->description!="") {
- $feed.= " <summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n";
- }
- $feed.= " </entry>\n";
- }
- $feed.= "</feed>\n";
- return $feed;
- }
-}
-
-
-/**
- * MBOXCreator is a FeedCreator that implements the mbox format
- * as described in http://www.qmail.org/man/man5/mbox.html
- *
- * @since 1.3
- * @author Kai Blankenhorn <kaib at bitfolge.de>
- */
-class MBOXCreator extends FeedCreator {
-
- function MBOXCreator() {
- $this->contentType = "text/plain";
- $this->encoding = "utf-8";
- }
-
- function qp_enc($input = "", $line_max = 76) {
- $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
- $lines = preg_split("/(?:\r\n|\r|\n)/", $input);
- $eol = "\r\n";
- $escape = "=";
- $output = "";
- while( list(, $line) = each($lines) ) {
- //$line = rtrim($line); // remove trailing white space -> no =20\r\n necessary
- $linlen = strlen($line);
- $newline = "";
- for($i = 0; $i < $linlen; $i++) {
- $c = substr($line, $i, 1);
- $dec = ord($c);
- if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at eol only
- $c = "=20";
- } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
- $h2 = floor($dec/16); $h1 = floor($dec%16);
- $c = $escape.$hex["$h2"].$hex["$h1"];
- }
- if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
- $output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay
- $newline = "";
- }
- $newline .= $c;
- } // end of for
- $output .= $newline.$eol;
- }
- return trim($output);
- }
-
-
- /**
- * Builds the MBOX contents.
- * @return string the feed's complete text
- */
- function createFeed() {
- for ($i=0;$i<count($this->items);$i++) {
- if ($this->items[$i]->author!="") {
- $from = $this->items[$i]->author;
- } else {
- $from = $this->title;
- }
- $itemDate = new FeedDate($this->items[$i]->date);
- $feed.= "From ".strtr(MBOXCreator::qp_enc($from)," ","_")." ".date("D M d H:i:s Y",$itemDate->unix())."\n";
- $feed.= "Content-Type: text/plain;\n";
- $feed.= " charset=\"".$this->encoding."\"\n";
- $feed.= "Content-Transfer-Encoding: quoted-printable\n";
- $feed.= "Content-Type: text/plain\n";
- $feed.= "From: \"".MBOXCreator::qp_enc($from)."\"\n";
- $feed.= "Date: ".$itemDate->rfc822()."\n";
- $feed.= "Subject: ".MBOXCreator::qp_enc(FeedCreator::iTrunc($this->items[$i]->title,100))."\n";
- $feed.= "\n";
- $body = chunk_split(MBOXCreator::qp_enc($this->items[$i]->description));
- $feed.= preg_replace("~\nFrom ([^\n]*)(\n?)~","\n>From $1$2\n",$body);
- $feed.= "\n";
- $feed.= "\n";
- }
- return $feed;
- }
-
- /**
- * Generate a filename for the feed cache file. Overridden from FeedCreator to prevent XML data types.
- * @return string the feed cache filename
- * @since 1.4
- * @access private
- */
- function _generateFilename() {
- $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
- return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".mbox";
- }
-}
-
-
-/**
- * OPMLCreator is a FeedCreator that implements OPML 1.0.
- *
- * @see http://opml.scripting.com/spec
- * @author Dirk Clemens, Kai Blankenhorn
- * @since 1.5
- */
-class OPMLCreator extends FeedCreator {
-
- function OPMLCreator() {
- $this->encoding = "utf-8";
- }
-
- function createFeed() {
- $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
- $feed.= $this->_createGeneratorComment();
- $feed.= $this->_createStylesheetReferences();
- $feed.= "<opml xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
- $feed.= " <head>\n";
- $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
- if ($this->pubDate!="") {
- $date = new FeedDate($this->pubDate);
- $feed.= " <dateCreated>".$date->rfc822()."</dateCreated>\n";
- }
- if ($this->lastBuildDate!="") {
- $date = new FeedDate($this->lastBuildDate);
- $feed.= " <dateModified>".$date->rfc822()."</dateModified>\n";
- }
- if ($this->editor!="") {
- $feed.= " <ownerName>".$this->editor."</ownerName>\n";
- }
- if ($this->editorEmail!="") {
- $feed.= " <ownerEmail>".$this->editorEmail."</ownerEmail>\n";
- }
- $feed.= " </head>\n";
- $feed.= " <body>\n";
- for ($i=0;$i<count($this->items);$i++) {
- $feed.= " <outline type=\"rss\" ";
- $title = htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r"," ")));
- $feed.= " title=\"".$title."\"";
- $feed.= " text=\"".$title."\"";
- //$feed.= " description=\"".htmlspecialchars($this->items[$i]->description)."\"";
- $feed.= " url=\"".htmlspecialchars($this->items[$i]->link)."\"";
- $feed.= "/>\n";
- }
- $feed.= " </body>\n";
- $feed.= "</opml>\n";
- return $feed;
- }
-}
-
-
-
-/**
- * HTMLCreator is a FeedCreator that writes an HTML feed file to a specific
- * location, overriding the createFeed method of the parent FeedCreator.
- * The HTML produced can be included over http by scripting languages, or serve
- * as the source for an IFrame.
- * All output by this class is embedded in <div></div> tags to enable formatting
- * using CSS.
- *
- * @author Pascal Van Hecke
- * @since 1.7
- */
-class HTMLCreator extends FeedCreator {
-
- var $contentType = "text/html";
-
- /**
- * Contains HTML to be output at the start of the feed's html representation.
- */
- var $header;
-
- /**
- * Contains HTML to be output at the end of the feed's html representation.
- */
- var $footer ;
-
- /**
- * Contains HTML to be output between entries. A separator is only used in
- * case of multiple entries.
- */
- var $separator;
-
- /**
- * Used to prefix the stylenames to make sure they are unique
- * and do not clash with stylenames on the users' page.
- */
- var $stylePrefix;
-
- /**
- * Determines whether the links open in a new window or not.
- */
- var $openInNewWindow = true;
-
- var $imageAlign ="right";
-
- /**
- * In case of very simple output you may want to get rid of the style tags,
- * hence this variable. There's no equivalent on item level, but of course you can
- * add strings to it while iterating over the items ($this->stylelessOutput .= ...)
- * and when it is non-empty, ONLY the styleless output is printed, the rest is ignored
- * in the function createFeed().
- */
- var $stylelessOutput ="";
-
- /**
- * Writes the HTML.
- * @return string the scripts's complete text
- */
- function createFeed() {
- // if there is styleless output, use the content of this variable and ignore the rest
- if ($this->stylelessOutput!="") {
- return $this->stylelessOutput;
- }
-
- //if no stylePrefix is set, generate it yourself depending on the script name
- if ($this->stylePrefix=="") {
- $this->stylePrefix = str_replace(".", "_", $this->_generateFilename())."_";
- }
-
- //set an openInNewWindow_token_to be inserted or not
- if ($this->openInNewWindow) {
- $targetInsert = " target='_blank'";
- }
-
- // use this array to put the lines in and implode later with "document.write" javascript
- $feedArray = array();
- if ($this->image!=null) {
- $imageStr = "<a href='".$this->image->link."'".$targetInsert.">".
- "<img src='".$this->image->url."' border='0' alt='".
- FeedCreator::iTrunc(htmlspecialchars($this->image->title),100).
- "' align='".$this->imageAlign."' ";
- if ($this->image->width) {
- $imageStr .=" width='".$this->image->width. "' ";
- }
- if ($this->image->height) {
- $imageStr .=" height='".$this->image->height."' ";
- }
- $imageStr .="/></a>";
- $feedArray[] = $imageStr;
- }
-
- if ($this->title) {
- $feedArray[] = "<div class='".$this->stylePrefix."title'><a href='".$this->link."' ".$targetInsert." class='".$this->stylePrefix."title'>".
- FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</a></div>";
- }
- if ($this->getDescription()) {
- $feedArray[] = "<div class='".$this->stylePrefix."description'>".
- str_replace("]]>", "", str_replace("<![CDATA[", "", $this->getDescription())).
- "</div>";
- }
-
- if ($this->header) {
- $feedArray[] = "<div class='".$this->stylePrefix."header'>".$this->header."</div>";
- }
-
- for ($i=0;$i<count($this->items);$i++) {
- if ($this->separator and $i > 0) {
- $feedArray[] = "<div class='".$this->stylePrefix."separator'>".$this->separator."</div>";
- }
-
- if ($this->items[$i]->title) {
- if ($this->items[$i]->link) {
- $feedArray[] =
- "<div class='".$this->stylePrefix."item_title'><a href='".$this->items[$i]->link."' class='".$this->stylePrefix.
- "item_title'".$targetInsert.">".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).
- "</a></div>";
- } else {
- $feedArray[] =
- "<div class='".$this->stylePrefix."item_title'>".
- FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).
- "</div>";
- }
- }
- if ($this->items[$i]->getDescription()) {
- $feedArray[] =
- "<div class='".$this->stylePrefix."item_description'>".
- str_replace("]]>", "", str_replace("<![CDATA[", "", $this->items[$i]->getDescription())).
- "</div>";
- }
- }
- if ($this->footer) {
- $feedArray[] = "<div class='".$this->stylePrefix."footer'>".$this->footer."</div>";
- }
-
- $feed= "".join($feedArray, "\r\n");
- return $feed;
- }
-
- /**
- * Overrrides parent to produce .html extensions
- *
- * @return string the feed cache filename
- * @since 1.4
- * @access private
- */
- function _generateFilename() {
- $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
- return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".html";
- }
-}
-
-
-/**
- * JSCreator is a class that writes a js file to a specific
- * location, overriding the createFeed method of the parent HTMLCreator.
- *
- * @author Pascal Van Hecke
- */
-class JSCreator extends HTMLCreator {
- var $contentType = "text/javascript";
-
- /**
- * writes the javascript
- * @return string the scripts's complete text
- */
- function createFeed()
- {
- $feed = parent::createFeed();
- $feedArray = explode("\n",$feed);
-
- $jsFeed = "";
- foreach ($feedArray as $value) {
- $jsFeed .= "document.write('".trim(addslashes($value))."');\n";
- }
- return $jsFeed;
- }
-
- /**
- * Overrrides parent to produce .js extensions
- *
- * @return string the feed cache filename
- * @since 1.4
- * @access private
- */
- function _generateFilename() {
- $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
- return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".js";
- }
-
-}
-
-/**
- * This class allows to override the hardcoded charset
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-class DokuWikiFeedCreator extends UniversalFeedCreator{
- function createFeed($format = "RSS0.91",$encoding='iso-8859-15') {
- $this->_setFormat($format);
- $this->_feed->encoding = $encoding;
- return $this->_feed->createFeed();
- }
-}
-
-
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
-?>
+<?php
+/***************************************************************************
+ * FeedCreator class v1.7.2-ppt
+ * originally (c) Kai Blankenhorn
+ * www.bitfolge.de
+ * kaib at bitfolge.de
+ * v1.3 work by Scott Reynen (scott at randomchaos.com) and Kai Blankenhorn
+ * v1.5 OPML support by Dirk Clemens
+ * v1.7.2-mod on-the-fly feed generation by Fabian Wolf (info at f2w.de)
+ * v1.7.2-ppt ATOM 1.0 support by Mohammad Hafiz bin Ismail (mypapit at gmail.com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @author www.bitfolge.de
+ *
+ * Changelog:
+ *
+ * this version contains some smaller modifications for DokuWiki as well
+ *
+ * v1.7.2-ppt 11-21-05
+ * added Atom 1.0 support
+ * added enclosure support for RSS 2.0/ATOM 1.0
+ * added docs for v1.7.2-ppt only!
+ *
+ * v1.7.2-mod 03-12-05
+ * added output function outputFeed for on-the-fly feed generation
+ *
+ * v1.7.2 10-11-04
+ * license changed to LGPL
+ *
+ * v1.7.1
+ * fixed a syntax bug
+ * fixed left over debug code
+ *
+ * v1.7 07-18-04
+ * added HTML and JavaScript feeds (configurable via CSS) (thanks to Pascal Van Hecke)
+ * added HTML descriptions for all feed formats (thanks to Pascal Van Hecke)
+ * added a switch to select an external stylesheet (thanks to Pascal Van Hecke)
+ * changed default content-type to application/xml
+ * added character encoding setting
+ * fixed numerous smaller bugs (thanks to Sören Fuhrmann of golem.de)
+ * improved changing ATOM versions handling (thanks to August Trometer)
+ * improved the UniversalFeedCreator's useCached method (thanks to Sören Fuhrmann of golem.de)
+ * added charset output in HTTP headers (thanks to Sören Fuhrmann of golem.de)
+ * added Slashdot namespace to RSS 1.0 (thanks to Sören Fuhrmann of golem.de)
+ *
+ * See www.bitfolge.de for additional changelog info
+ */
+// your local timezone, set to "" to disable or for GMT
+define("TIME_ZONE",date("O", time()));
+
+
+
+
+/**
+ * Version string.
+ **/
+
+define("FEEDCREATOR_VERSION", "FeedCreator 1.7.2-ppt DokuWiki");
+
+
+
+/**
+ * A FeedItem is a part of a FeedCreator feed.
+ *
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ * @since 1.3
+ */
+class FeedItem extends HtmlDescribable {
+ /**
+ * Mandatory attributes of an item.
+ */
+ var $title, $description, $link;
+
+ /**
+ * Optional attributes of an item.
+ */
+ var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator;
+
+ /**
+ * Publishing date of an item. May be in one of the following formats:
+ *
+ * RFC 822:
+ * "Mon, 20 Jan 03 18:05:41 +0400"
+ * "20 Jan 03 18:05:41 +0000"
+ *
+ * ISO 8601:
+ * "2003-01-20T18:05:41+04:00"
+ *
+ * Unix:
+ * 1043082341
+ */
+ var $date;
+
+ /**
+ * Add <enclosure> element tag RSS 2.0
+ * modified by : Mohammad Hafiz bin Ismail (mypapit at gmail.com)
+ *
+ *
+ * display :
+ * <enclosure length="17691" url="http://something.com/picture.jpg" type="image/jpeg" />
+ *
+ */
+ var $enclosure;
+
+ /**
+ * Any additional elements to include as an assiciated array. All $key => $value pairs
+ * will be included unencoded in the feed item in the form
+ * <$key>$value</$key>
+ * Again: No encoding will be used! This means you can invalidate or enhance the feed
+ * if $value contains markup. This may be abused to embed tags not implemented by
+ * the FeedCreator class used.
+ */
+ var $additionalElements = Array();
+
+ // on hold
+ // var $source;
+}
+
+class EnclosureItem extends HtmlDescribable {
+ /*
+ *
+ * core variables
+ *
+ **/
+ var $url,$length,$type;
+
+ /*
+ * For use with another extension like Yahoo mRSS
+ * Warning :
+ * These variables might not show up in
+ * later release / not finalize yet!
+ *
+ */
+ var $width, $height, $title, $description, $keywords, $thumburl;
+
+ var $additionalElements = Array();
+
+}
+
+
+/**
+ * An FeedImage may be added to a FeedCreator feed.
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ * @since 1.3
+ */
+class FeedImage extends HtmlDescribable {
+ /**
+ * Mandatory attributes of an image.
+ */
+ var $title, $url, $link;
+
+ /**
+ * Optional attributes of an image.
+ */
+ var $width, $height, $description;
+}
+
+
+
+/**
+ * An HtmlDescribable is an item within a feed that can have a description that may
+ * include HTML markup.
+ */
+class HtmlDescribable {
+ /**
+ * Indicates whether the description field should be rendered in HTML.
+ */
+ var $descriptionHtmlSyndicated;
+
+ /**
+ * Indicates whether and to how many characters a description should be truncated.
+ */
+ var $descriptionTruncSize;
+
+ /**
+ * Returns a formatted description field, depending on descriptionHtmlSyndicated and
+ * $descriptionTruncSize properties
+ * @return string the formatted description
+ */
+ function getDescription() {
+ $descriptionField = new FeedHtmlField($this->description);
+ $descriptionField->syndicateHtml = $this->descriptionHtmlSyndicated;
+ $descriptionField->truncSize = $this->descriptionTruncSize;
+ return $descriptionField->output();
+ }
+
+}
+
+
+
+/**
+ * An FeedHtmlField describes and generates
+ * a feed, item or image html field (probably a description). Output is
+ * generated based on $truncSize, $syndicateHtml properties.
+ * @author Pascal Van Hecke <feedcreator.class.php at vanhecke.info>
+ * @version 1.6
+ */
+class FeedHtmlField {
+ /**
+ * Mandatory attributes of a FeedHtmlField.
+ */
+ var $rawFieldContent;
+
+ /**
+ * Optional attributes of a FeedHtmlField.
+ *
+ */
+ var $truncSize, $syndicateHtml;
+
+ /**
+ * Creates a new instance of FeedHtmlField.
+ * @param $string: if given, sets the rawFieldContent property
+ */
+ function FeedHtmlField($parFieldContent) {
+ if ($parFieldContent) {
+ $this->rawFieldContent = $parFieldContent;
+ }
+ }
+
+
+ /**
+ * Creates the right output, depending on $truncSize, $syndicateHtml properties.
+ * @return string the formatted field
+ */
+ function output() {
+ // when field available and syndicated in html we assume
+ // - valid html in $rawFieldContent and we enclose in CDATA tags
+ // - no truncation (truncating risks producing invalid html)
+ if (!$this->rawFieldContent) {
+ $result = "";
+ } elseif ($this->syndicateHtml) {
+ $result = "<![CDATA[".$this->rawFieldContent."]]>";
+ } else {
+ if ($this->truncSize and is_int($this->truncSize)) {
+ $result = FeedCreator::iTrunc(htmlspecialchars($this->rawFieldContent),$this->truncSize);
+ } else {
+ $result = htmlspecialchars($this->rawFieldContent);
+ }
+ }
+ return $result;
+ }
+
+}
+
+
+
+/**
+ * UniversalFeedCreator lets you choose during runtime which
+ * format to build.
+ * For general usage of a feed class, see the FeedCreator class
+ * below or the example above.
+ *
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ */
+class UniversalFeedCreator extends FeedCreator {
+ var $_feed;
+
+ function _setFormat($format) {
+ switch (strtoupper($format)) {
+
+ case "2.0":
+ // fall through
+ case "RSS2.0":
+ $this->_feed = new RSSCreator20();
+ break;
+
+ case "1.0":
+ // fall through
+ case "RSS1.0":
+ $this->_feed = new RSSCreator10();
+ break;
+
+ case "0.91":
+ // fall through
+ case "RSS0.91":
+ $this->_feed = new RSSCreator091();
+ break;
+
+ case "PIE0.1":
+ $this->_feed = new PIECreator01();
+ break;
+
+ case "MBOX":
+ $this->_feed = new MBOXCreator();
+ break;
+
+ case "OPML":
+ $this->_feed = new OPMLCreator();
+ break;
+
+ case "ATOM":
+ // fall through: always the latest ATOM version
+ case "ATOM1.0":
+ $this->_feed = new AtomCreator10();
+ break;
+
+ case "ATOM0.3":
+ $this->_feed = new AtomCreator03();
+ break;
+
+ case "HTML":
+ $this->_feed = new HTMLCreator();
+ break;
+
+ case "JS":
+ // fall through
+ case "JAVASCRIPT":
+ $this->_feed = new JSCreator();
+ break;
+
+ default:
+ $this->_feed = new RSSCreator091();
+ break;
+ }
+
+ $vars = get_object_vars($this);
+ foreach ($vars as $key => $value) {
+ // prevent overwriting of properties "contentType", "encoding"; do not copy "_feed" itself
+ if (!in_array($key, array("_feed", "contentType", "encoding"))) {
+ $this->_feed->{$key} = $this->{$key};
+ }
+ }
+ }
+
+ function _sendMIME($format) {
+ header('Content-Type: '.$this->contentType.'; charset='.$this->encoding, true);
+ }
+
+ /**
+ * Creates a syndication feed based on the items previously added.
+ *
+ * @see FeedCreator::addItem()
+ * @param string format format the feed should comply to. Valid values are:
+ * "PIE0.1", "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3", "HTML", "JS"
+ * @return string the contents of the feed.
+ */
+ function createFeed($format = "RSS0.91") {
+ $this->_setFormat($format);
+ return $this->_feed->createFeed();
+ }
+
+ /**
+ * Saves this feed as a file on the local disk. After the file is saved, an HTTP redirect
+ * header may be sent to redirect the use to the newly created file.
+ * @since 1.4
+ *
+ * @param string format format the feed should comply to. Valid values are:
+ * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM", "ATOM0.3", "HTML", "JS"
+ * @param string filename optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param boolean displayContents optional send the content of the file or not. If true, the file will be sent in the body of the response.
+ */
+ function saveFeed($format="RSS0.91", $filename="", $displayContents=true) {
+ $this->_setFormat($format);
+ $this->_feed->saveFeed($filename, $displayContents);
+ }
+
+
+ /**
+ * Turns on caching and checks if there is a recent version of this feed in the cache.
+ * If there is, an HTTP redirect header is sent.
+ * To effectively use caching, you should create the FeedCreator object and call this method
+ * before anything else, especially before you do the time consuming task to build the feed
+ * (web fetching, for example).
+ *
+ * @param string format format the feed should comply to. Valid values are:
+ * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
+ * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
+ */
+ function useCached($format="RSS0.91", $filename="", $timeout=3600) {
+ $this->_setFormat($format);
+ $this->_feed->useCached($filename, $timeout);
+ }
+
+
+ /**
+ * Outputs feed to the browser - needed for on-the-fly feed generation (like it is done in WordPress, etc.)
+ *
+ * @param format string format the feed should comply to. Valid values are:
+ * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3".
+ */
+ function outputFeed($format='RSS0.91') {
+ $this->_setFormat($format);
+ $this->_sendMIME($format);
+ $this->_feed->outputFeed();
+ }
+
+
+}
+
+
+/**
+ * FeedCreator is the abstract base implementation for concrete
+ * implementations that implement a specific format of syndication.
+ *
+ * @abstract
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ * @since 1.4
+ */
+class FeedCreator extends HtmlDescribable {
+
+ /**
+ * Mandatory attributes of a feed.
+ */
+ var $title, $description, $link;
+
+
+ /**
+ * Optional attributes of a feed.
+ */
+ var $syndicationURL, $image, $language, $copyright, $pubDate, $lastBuildDate, $editor, $editorEmail, $webmaster, $category, $docs, $ttl, $rating, $skipHours, $skipDays;
+
+ /**
+ * The url of the external xsl stylesheet used to format the naked rss feed.
+ * Ignored in the output when empty.
+ */
+ var $xslStyleSheet = "";
+
+
+ /**
+ * @access private
+ */
+ var $items = Array();
+
+
+ /**
+ * This feed's MIME content type.
+ * @since 1.4
+ * @access private
+ */
+ var $contentType = "application/xml";
+
+
+ /**
+ * This feed's character encoding.
+ * @since 1.6.1
+ **/
+ var $encoding = "utf-8";
+
+
+ /**
+ * Any additional elements to include as an assiciated array. All $key => $value pairs
+ * will be included unencoded in the feed in the form
+ * <$key>$value</$key>
+ * Again: No encoding will be used! This means you can invalidate or enhance the feed
+ * if $value contains markup. This may be abused to embed tags not implemented by
+ * the FeedCreator class used.
+ */
+ var $additionalElements = Array();
+
+
+ /**
+ * Adds an FeedItem to the feed.
+ *
+ * @param object FeedItem $item The FeedItem to add to the feed.
+ * @access public
+ */
+ function addItem($item) {
+ $this->items[] = $item;
+ }
+
+
+ /**
+ * Truncates a string to a certain length at the most sensible point.
+ * First, if there's a '.' character near the end of the string, the string is truncated after this character.
+ * If there is no '.', the string is truncated after the last ' ' character.
+ * If the string is truncated, " ..." is appended.
+ * If the string is already shorter than $length, it is returned unchanged.
+ *
+ * @static
+ * @param string string A string to be truncated.
+ * @param int length the maximum length the string should be truncated to
+ * @return string the truncated string
+ */
+ function iTrunc($string, $length) {
+ if (strlen($string)<=$length) {
+ return $string;
+ }
+
+ $pos = strrpos($string,".");
+ if ($pos>=$length-4) {
+ $string = substr($string,0,$length-4);
+ $pos = strrpos($string,".");
+ }
+ if ($pos>=$length*0.4) {
+ return substr($string,0,$pos+1)." ...";
+ }
+
+ $pos = strrpos($string," ");
+ if ($pos>=$length-4) {
+ $string = substr($string,0,$length-4);
+ $pos = strrpos($string," ");
+ }
+ if ($pos>=$length*0.4) {
+ return substr($string,0,$pos)." ...";
+ }
+
+ return substr($string,0,$length-4)." ...";
+
+ }
+
+
+ /**
+ * Creates a comment indicating the generator of this feed.
+ * The format of this comment seems to be recognized by
+ * Syndic8.com.
+ */
+ function _createGeneratorComment() {
+ return "<!-- generator=\"".FEEDCREATOR_VERSION."\" -->\n";
+ }
+
+
+ /**
+ * Creates a string containing all additional elements specified in
+ * $additionalElements.
+ * @param elements array an associative array containing key => value pairs
+ * @param indentString string a string that will be inserted before every generated line
+ * @return string the XML tags corresponding to $additionalElements
+ */
+ function _createAdditionalElements($elements, $indentString="") {
+ $ae = "";
+ if (is_array($elements)) {
+ foreach($elements AS $key => $value) {
+ $ae.= $indentString."<$key>$value</$key>\n";
+ }
+ }
+ return $ae;
+ }
+
+ function _createStylesheetReferences() {
+ $xml = "";
+ if ($this->cssStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->cssStyleSheet."\" type=\"text/css\"?>\n";
+ if ($this->xslStyleSheet) $xml .= "<?xml-stylesheet href=\"".$this->xslStyleSheet."\" type=\"text/xsl\"?>\n";
+ return $xml;
+ }
+
+
+ /**
+ * Builds the feed's text.
+ * @abstract
+ * @return string the feed's complete text
+ */
+ function createFeed() {
+ }
+
+ /**
+ * Generate a filename for the feed cache file. The result will be $_SERVER["PHP_SELF"] with the extension changed to .xml.
+ * For example:
+ *
+ * echo $_SERVER["PHP_SELF"]."\n";
+ * echo FeedCreator::_generateFilename();
+ *
+ * would produce:
+ *
+ * /rss/latestnews.php
+ * latestnews.xml
+ *
+ * @return string the feed cache filename
+ * @since 1.4
+ * @access private
+ */
+ function _generateFilename() {
+ $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+ return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".xml";
+ }
+
+
+ /**
+ * @since 1.4
+ * @access private
+ */
+ function _redirect($filename) {
+ // attention, heavily-commented-out-area
+
+ // maybe use this in addition to file time checking
+ //Header("Expires: ".date("r",time()+$this->_timeout));
+
+ /* no caching at all, doesn't seem to work as good:
+ Header("Cache-Control: no-cache");
+ Header("Pragma: no-cache");
+ */
+
+ // HTTP redirect, some feed readers' simple HTTP implementations don't follow it
+ //Header("Location: ".$filename);
+
+ header("Content-Type: ".$this->contentType."; charset=".$this->encoding."; filename=".basename($filename));
+ header("Content-Disposition: inline; filename=".basename($filename));
+ readfile($filename, "r");
+ die();
+ }
+
+ /**
+ * Turns on caching and checks if there is a recent version of this feed in the cache.
+ * If there is, an HTTP redirect header is sent.
+ * To effectively use caching, you should create the FeedCreator object and call this method
+ * before anything else, especially before you do the time consuming task to build the feed
+ * (web fetching, for example).
+ * @since 1.4
+ * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour)
+ */
+ function useCached($filename="", $timeout=3600) {
+ $this->_timeout = $timeout;
+ if ($filename=="") {
+ $filename = $this->_generateFilename();
+ }
+ if (file_exists($filename) AND (time()-filemtime($filename) < $timeout)) {
+ $this->_redirect($filename);
+ }
+ }
+
+
+ /**
+ * Saves this feed as a file on the local disk. After the file is saved, a redirect
+ * header may be sent to redirect the user to the newly created file.
+ * @since 1.4
+ *
+ * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()).
+ * @param redirect boolean optional send an HTTP redirect header or not. If true, the user will be automatically redirected to the created file.
+ */
+ function saveFeed($filename="", $displayContents=true) {
+ if ($filename=="") {
+ $filename = $this->_generateFilename();
+ }
+ $feedFile = fopen($filename, "w+");
+ if ($feedFile) {
+ fputs($feedFile,$this->createFeed());
+ fclose($feedFile);
+ if ($displayContents) {
+ $this->_redirect($filename);
+ }
+ } else {
+ echo "<br /><b>Error creating feed file, please check write permissions.</b><br />";
+ }
+ }
+
+ /**
+ * Outputs this feed directly to the browser - for on-the-fly feed generation
+ * @since 1.7.2-mod
+ *
+ * still missing: proper header output - currently you have to add it manually
+ */
+ function outputFeed() {
+ echo $this->createFeed();
+ }
+
+
+}
+
+
+/**
+ * FeedDate is an internal class that stores a date for a feed or feed item.
+ * Usually, you won't need to use this.
+ */
+class FeedDate {
+ var $unix;
+
+ /**
+ * Creates a new instance of FeedDate representing a given date.
+ * Accepts RFC 822, ISO 8601 date formats as well as unix time stamps.
+ * @param mixed $dateString optional the date this FeedDate will represent. If not specified, the current date and time is used.
+ */
+ function FeedDate($dateString="") {
+ if ($dateString=="") $dateString = date("r");
+
+ if (is_numeric($dateString)) {
+ $this->unix = $dateString;
+ return;
+ }
+ if (preg_match("~(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s+)?(\\d{1,2})\\s+([a-zA-Z]{3})\\s+(\\d{4})\\s+(\\d{2}):(\\d{2}):(\\d{2})\\s+(.*)~",$dateString,$matches)) {
+ $months = Array("Jan"=>1,"Feb"=>2,"Mar"=>3,"Apr"=>4,"May"=>5,"Jun"=>6,"Jul"=>7,"Aug"=>8,"Sep"=>9,"Oct"=>10,"Nov"=>11,"Dec"=>12);
+ $this->unix = mktime($matches[4],$matches[5],$matches[6],$months[$matches[2]],$matches[1],$matches[3]);
+ if (substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
+ $tzOffset = (substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;
+ } else {
+ if (strlen($matches[7])==1) {
+ $oneHour = 3600;
+ $ord = ord($matches[7]);
+ if ($ord < ord("M")) {
+ $tzOffset = (ord("A") - $ord - 1) * $oneHour;
+ } elseif ($ord >= ord("M") AND $matches[7]!="Z") {
+ $tzOffset = ($ord - ord("M")) * $oneHour;
+ } elseif ($matches[7]=="Z") {
+ $tzOffset = 0;
+ }
+ }
+ switch ($matches[7]) {
+ case "UT":
+ case "GMT": $tzOffset = 0;
+ }
+ }
+ $this->unix += $tzOffset;
+ return;
+ }
+ if (preg_match("~(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(.*)~",$dateString,$matches)) {
+ $this->unix = mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[3],$matches[1]);
+ if (substr($matches[7],0,1)=='+' OR substr($matches[7],0,1)=='-') {
+ $tzOffset = (substr($matches[7],0,3) * 60 + substr($matches[7],-2)) * 60;
+ } else {
+ if ($matches[7]=="Z") {
+ $tzOffset = 0;
+ }
+ }
+ $this->unix += $tzOffset;
+ return;
+ }
+ $this->unix = 0;
+ }
+
+ /**
+ * Gets the date stored in this FeedDate as an RFC 822 date.
+ *
+ * @return a date in RFC 822 format
+ */
+ function rfc822() {
+ //return gmdate("r",$this->unix);
+ $date = gmdate("D, d M Y H:i:s", $this->unix);
+ if (TIME_ZONE!="") $date .= " ".str_replace(":","",TIME_ZONE);
+ return $date;
+ }
+
+ /**
+ * Gets the date stored in this FeedDate as an ISO 8601 date.
+ *
+ * @return a date in ISO 8601 (RFC 3339) format
+ */
+ function iso8601() {
+ $date = gmdate("Y-m-d\TH:i:sO",$this->unix);
+ if (TIME_ZONE!="") $date = str_replace("+0000",TIME_ZONE,$date);
+ $date = substr($date,0,22) . ':' . substr($date,-2);
+ return $date;
+ }
+
+
+ /**
+ * Gets the date stored in this FeedDate as unix time stamp.
+ *
+ * @return a date as a unix time stamp
+ */
+ function unix() {
+ return $this->unix;
+ }
+}
+
+
+/**
+ * RSSCreator10 is a FeedCreator that implements RDF Site Summary (RSS) 1.0.
+ *
+ * @see http://www.purl.org/rss/1.0/
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ */
+class RSSCreator10 extends FeedCreator {
+
+ /**
+ * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0.
+ * The feed will contain all items previously added in the same order.
+ * @return string the feed's complete text
+ */
+ function createFeed() {
+ $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+ $feed.= $this->_createGeneratorComment();
+ if ($this->cssStyleSheet=="") {
+ $cssStyleSheet = "http://www.w3.org/2000/08/w3c-synd/style.css";
+ }
+ $feed.= $this->_createStylesheetReferences();
+ $feed.= "<rdf:RDF\n";
+ $feed.= " xmlns=\"http://purl.org/rss/1.0/\"\n";
+ $feed.= " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
+ $feed.= " xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n";
+ $feed.= " xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n";
+ $feed.= " <channel rdf:about=\"".$this->syndicationURL."\">\n";
+ $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
+ $feed.= " <description>".htmlspecialchars($this->description)."</description>\n";
+ $feed.= " <link>".$this->link."</link>\n";
+ if ($this->image!=null) {
+ $feed.= " <image rdf:resource=\"".$this->image->url."\" />\n";
+ }
+ $now = new FeedDate();
+ $feed.= " <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n";
+ $feed.= " <items>\n";
+ $feed.= " <rdf:Seq>\n";
+ for ($i=0;$i<count($this->items);$i++) {
+ $feed.= " <rdf:li rdf:resource=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
+ }
+ $feed.= " </rdf:Seq>\n";
+ $feed.= " </items>\n";
+ $feed.= " </channel>\n";
+ if ($this->image!=null) {
+ $feed.= " <image rdf:about=\"".$this->image->url."\">\n";
+ $feed.= " <title>".htmlspecialchars($this->image->title)."</title>\n";
+ $feed.= " <link>".$this->image->link."</link>\n";
+ $feed.= " <url>".$this->image->url."</url>\n";
+ $feed.= " </image>\n";
+ }
+ $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
+
+ for ($i=0;$i<count($this->items);$i++) {
+ $feed.= " <item rdf:about=\"".htmlspecialchars($this->items[$i]->link)."\">\n";
+ //$feed.= " <dc:type>Posting</dc:type>\n";
+ $feed.= " <dc:format>text/html</dc:format>\n";
+ if ($this->items[$i]->date!=null) {
+ $itemDate = new FeedDate($this->items[$i]->date);
+ $feed.= " <dc:date>".htmlspecialchars($itemDate->iso8601())."</dc:date>\n";
+ }
+ if ($this->items[$i]->source!="") {
+ $feed.= " <dc:source>".htmlspecialchars($this->items[$i]->source)."</dc:source>\n";
+ }
+ if ($this->items[$i]->author!="") {
+ $feed.= " <dc:creator>".htmlspecialchars($this->items[$i]->author)."</dc:creator>\n";
+ }
+ $feed.= " <title>".htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r"," ")))."</title>\n";
+ $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
+ $feed.= " <description>".htmlspecialchars($this->items[$i]->description)."</description>\n";
+ $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
+ $feed.= " </item>\n";
+ }
+ $feed.= "</rdf:RDF>\n";
+ return $feed;
+ }
+}
+
+
+
+/**
+ * RSSCreator091 is a FeedCreator that implements RSS 0.91 Spec, revision 3.
+ *
+ * @see http://my.netscape.com/publish/formats/rss-spec-0.91.html
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ */
+class RSSCreator091 extends FeedCreator {
+
+ /**
+ * Stores this RSS feed's version number.
+ * @access private
+ */
+ var $RSSVersion;
+
+ function RSSCreator091() {
+ $this->_setRSSVersion("0.91");
+ $this->contentType = "application/rss+xml";
+ }
+
+ /**
+ * Sets this RSS feed's version number.
+ * @access private
+ */
+ function _setRSSVersion($version) {
+ $this->RSSVersion = $version;
+ }
+
+ /**
+ * Builds the RSS feed's text. The feed will be compliant to RDF Site Summary (RSS) 1.0.
+ * The feed will contain all items previously added in the same order.
+ * @return string the feed's complete text
+ */
+ function createFeed() {
+ $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+ $feed.= $this->_createGeneratorComment();
+ $feed.= $this->_createStylesheetReferences();
+ $feed.= "<rss version=\"".$this->RSSVersion."\">\n";
+ $feed.= " <channel>\n";
+ $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
+ $this->descriptionTruncSize = 500;
+ $feed.= " <description>".$this->getDescription()."</description>\n";
+ $feed.= " <link>".$this->link."</link>\n";
+ $now = new FeedDate();
+ $feed.= " <lastBuildDate>".htmlspecialchars($now->rfc822())."</lastBuildDate>\n";
+ $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n";
+
+ if ($this->image!=null) {
+ $feed.= " <image>\n";
+ $feed.= " <url>".$this->image->url."</url>\n";
+ $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title),100)."</title>\n";
+ $feed.= " <link>".$this->image->link."</link>\n";
+ if ($this->image->width!="") {
+ $feed.= " <width>".$this->image->width."</width>\n";
+ }
+ if ($this->image->height!="") {
+ $feed.= " <height>".$this->image->height."</height>\n";
+ }
+ if ($this->image->description!="") {
+ $feed.= " <description>".$this->image->getDescription()."</description>\n";
+ }
+ $feed.= " </image>\n";
+ }
+ if ($this->language!="") {
+ $feed.= " <language>".$this->language."</language>\n";
+ }
+ if ($this->copyright!="") {
+ $feed.= " <copyright>".FeedCreator::iTrunc(htmlspecialchars($this->copyright),100)."</copyright>\n";
+ }
+ if ($this->editor!="") {
+ $feed.= " <managingEditor>".FeedCreator::iTrunc(htmlspecialchars($this->editor),100)."</managingEditor>\n";
+ }
+ if ($this->webmaster!="") {
+ $feed.= " <webMaster>".FeedCreator::iTrunc(htmlspecialchars($this->webmaster),100)."</webMaster>\n";
+ }
+ if ($this->pubDate!="") {
+ $pubDate = new FeedDate($this->pubDate);
+ $feed.= " <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n";
+ }
+ if ($this->category!="") {
+ // Changed for DokuWiki: multiple categories are possible
+ if(is_array($this->category)) foreach($this->category as $cat){
+ $feed.= " <category>".htmlspecialchars($cat)."</category>\n";
+ }else{
+ $feed.= " <category>".htmlspecialchars($this->category)."</category>\n";
+ }
+ }
+ if ($this->docs!="") {
+ $feed.= " <docs>".FeedCreator::iTrunc(htmlspecialchars($this->docs),500)."</docs>\n";
+ }
+ if ($this->ttl!="") {
+ $feed.= " <ttl>".htmlspecialchars($this->ttl)."</ttl>\n";
+ }
+ if ($this->rating!="") {
+ $feed.= " <rating>".FeedCreator::iTrunc(htmlspecialchars($this->rating),500)."</rating>\n";
+ }
+ if ($this->skipHours!="") {
+ $feed.= " <skipHours>".htmlspecialchars($this->skipHours)."</skipHours>\n";
+ }
+ if ($this->skipDays!="") {
+ $feed.= " <skipDays>".htmlspecialchars($this->skipDays)."</skipDays>\n";
+ }
+ $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
+
+ for ($i=0;$i<count($this->items);$i++) {
+ $feed.= " <item>\n";
+ $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n";
+ $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
+ $feed.= " <description>".$this->items[$i]->getDescription()."</description>\n";
+
+ if ($this->items[$i]->author!="") {
+ $feed.= " <author>".htmlspecialchars($this->items[$i]->author)."</author>\n";
+ }
+ /*
+ // on hold
+ if ($this->items[$i]->source!="") {
+ $feed.= " <source>".htmlspecialchars($this->items[$i]->source)."</source>\n";
+ }
+ */
+ if ($this->items[$i]->category!="") {
+ // Changed for DokuWiki: multiple categories are possible
+ if(is_array($this->items[$i]->category)) foreach($this->items[$i]->category as $cat){
+ $feed.= " <category>".htmlspecialchars($cat)."</category>\n";
+ }else{
+ $feed.= " <category>".htmlspecialchars($this->items[$i]->category)."</category>\n";
+ }
+ }
+
+ if ($this->items[$i]->comments!="") {
+ $feed.= " <comments>".htmlspecialchars($this->items[$i]->comments)."</comments>\n";
+ }
+ if ($this->items[$i]->date!="") {
+ $itemDate = new FeedDate($this->items[$i]->date);
+ $feed.= " <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n";
+ }
+ if ($this->items[$i]->guid!="") {
+ $feed.= " <guid>".htmlspecialchars($this->items[$i]->guid)."</guid>\n";
+ }
+ $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
+
+ if ($this->RSSVersion == "2.0" && $this->items[$i]->enclosure != NULL)
+ {
+ $feed.= " <enclosure url=\"";
+ $feed.= $this->items[$i]->enclosure->url;
+ $feed.= "\" length=\"";
+ $feed.= $this->items[$i]->enclosure->length;
+ $feed.= "\" type=\"";
+ $feed.= $this->items[$i]->enclosure->type;
+ $feed.= "\"/>\n";
+ }
+
+
+
+ $feed.= " </item>\n";
+ }
+
+ $feed.= " </channel>\n";
+ $feed.= "</rss>\n";
+ return $feed;
+ }
+}
+
+
+
+/**
+ * RSSCreator20 is a FeedCreator that implements RDF Site Summary (RSS) 2.0.
+ *
+ * @see http://backend.userland.com/rss
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ */
+class RSSCreator20 extends RSSCreator091 {
+
+ function RSSCreator20() {
+ parent::_setRSSVersion("2.0");
+ }
+
+}
+
+
+/**
+ * PIECreator01 is a FeedCreator that implements the emerging PIE specification,
+ * as in http://intertwingly.net/wiki/pie/Syntax.
+ *
+ * @deprecated
+ * @since 1.3
+ * @author Scott Reynen <scott at randomchaos.com> and Kai Blankenhorn <kaib at bitfolge.de>
+ */
+class PIECreator01 extends FeedCreator {
+
+ function PIECreator01() {
+ $this->encoding = "utf-8";
+ }
+
+ function createFeed() {
+ $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+ $feed.= $this->_createStylesheetReferences();
+ $feed.= "<feed version=\"0.1\" xmlns=\"http://example.com/newformat#\">\n";
+ $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
+ $this->truncSize = 500;
+ $feed.= " <subtitle>".$this->getDescription()."</subtitle>\n";
+ $feed.= " <link>".$this->link."</link>\n";
+ for ($i=0;$i<count($this->items);$i++) {
+ $feed.= " <entry>\n";
+ $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n";
+ $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
+ $itemDate = new FeedDate($this->items[$i]->date);
+ $feed.= " <created>".htmlspecialchars($itemDate->iso8601())."</created>\n";
+ $feed.= " <issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n";
+ $feed.= " <modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n";
+ $feed.= " <id>".htmlspecialchars($this->items[$i]->guid)."</id>\n";
+ if ($this->items[$i]->author!="") {
+ $feed.= " <author>\n";
+ $feed.= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
+ if ($this->items[$i]->authorEmail!="") {
+ $feed.= " <email>".$this->items[$i]->authorEmail."</email>\n";
+ }
+ $feed.=" </author>\n";
+ }
+ $feed.= " <content type=\"text/html\" xml:lang=\"en-us\">\n";
+ $feed.= " <div xmlns=\"http://www.w3.org/1999/xhtml\">".$this->items[$i]->getDescription()."</div>\n";
+ $feed.= " </content>\n";
+ $feed.= " </entry>\n";
+ }
+ $feed.= "</feed>\n";
+ return $feed;
+ }
+}
+
+/**
+ * AtomCreator10 is a FeedCreator that implements the atom specification,
+ * as in http://www.atomenabled.org/developers/syndication/atom-format-spec.php
+ * Please note that just by using AtomCreator10 you won't automatically
+ * produce valid atom files. For example, you have to specify either an editor
+ * for the feed or an author for every single feed item.
+ *
+ * Some elements have not been implemented yet. These are (incomplete list):
+ * author URL, item author's email and URL, item contents, alternate links,
+ * other link content types than text/html. Some of them may be created with
+ * AtomCreator10::additionalElements.
+ *
+ * @see FeedCreator#additionalElements
+ * @since 1.7.2-mod (modified)
+ * @author Mohammad Hafiz Ismail (mypapit at gmail.com)
+ */
+ class AtomCreator10 extends FeedCreator {
+
+ function AtomCreator10() {
+ $this->contentType = "application/atom+xml";
+ $this->encoding = "utf-8";
+ }
+
+ function createFeed() {
+ $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+ $feed.= $this->_createGeneratorComment();
+ $feed.= $this->_createStylesheetReferences();
+ $feed.= "<feed xmlns=\"http://www.w3.org/2005/Atom\"";
+ if ($this->language!="") {
+ $feed.= " xml:lang=\"".$this->language."\"";
+ }
+ $feed.= ">\n";
+ $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
+ $feed.= " <subtitle>".htmlspecialchars($this->description)."</subtitle>\n";
+ $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";
+ $feed.= " <id>".htmlspecialchars($this->link)."</id>\n";
+ $now = new FeedDate();
+ $feed.= " <updated>".htmlspecialchars($now->iso8601())."</updated>\n";
+ if ($this->editor!="") {
+ $feed.= " <author>\n";
+ $feed.= " <name>".$this->editor."</name>\n";
+ if ($this->editorEmail!="") {
+ $feed.= " <email>".$this->editorEmail."</email>\n";
+ }
+ $feed.= " </author>\n";
+ }
+ $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n";
+ $feed.= "<link rel=\"self\" type=\"application/atom+xml\" href=\"". $this->syndicationURL . "\" />\n";
+ $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
+ for ($i=0;$i<count($this->items);$i++) {
+ $feed.= " <entry>\n";
+ $feed.= " <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";
+ $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
+ if ($this->items[$i]->date=="") {
+ $this->items[$i]->date = time();
+ }
+ $itemDate = new FeedDate($this->items[$i]->date);
+ $feed.= " <published>".htmlspecialchars($itemDate->iso8601())."</published>\n";
+ $feed.= " <updated>".htmlspecialchars($itemDate->iso8601())."</updated>\n";
+ $feed.= " <id>".htmlspecialchars($this->items[$i]->link)."</id>\n";
+ $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
+ if ($this->items[$i]->author!="") {
+ $feed.= " <author>\n";
+ $feed.= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
+ $feed.= " </author>\n";
+ }
+ if ($this->items[$i]->description!="") {
+ $feed.= " <summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n";
+ }
+ if ($this->items[$i]->enclosure != NULL) {
+ $feed.=" <link rel=\"enclosure\" href=\"". $this->items[$i]->enclosure->url ."\" type=\"". $this->items[$i]->enclosure->type."\" length=\"". $this->items[$i]->enclosure->length . "\" />\n";
+ }
+ $feed.= " </entry>\n";
+ }
+ $feed.= "</feed>\n";
+ return $feed;
+ }
+
+
+}
+
+
+/**
+ * AtomCreator03 is a FeedCreator that implements the atom specification,
+ * as in http://www.intertwingly.net/wiki/pie/FrontPage.
+ * Please note that just by using AtomCreator03 you won't automatically
+ * produce valid atom files. For example, you have to specify either an editor
+ * for the feed or an author for every single feed item.
+ *
+ * Some elements have not been implemented yet. These are (incomplete list):
+ * author URL, item author's email and URL, item contents, alternate links,
+ * other link content types than text/html. Some of them may be created with
+ * AtomCreator03::additionalElements.
+ *
+ * @see FeedCreator#additionalElements
+ * @since 1.6
+ * @author Kai Blankenhorn <kaib at bitfolge.de>, Scott Reynen <scott at randomchaos.com>
+ */
+class AtomCreator03 extends FeedCreator {
+
+ function AtomCreator03() {
+ $this->contentType = "application/atom+xml";
+ $this->encoding = "utf-8";
+ }
+
+ function createFeed() {
+ $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+ $feed.= $this->_createGeneratorComment();
+ $feed.= $this->_createStylesheetReferences();
+ $feed.= "<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\"";
+ if ($this->language!="") {
+ $feed.= " xml:lang=\"".$this->language."\"";
+ }
+ $feed.= ">\n";
+ $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
+ $feed.= " <tagline>".htmlspecialchars($this->description)."</tagline>\n";
+ $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";
+ $feed.= " <id>".htmlspecialchars($this->link)."</id>\n";
+ $now = new FeedDate();
+ $feed.= " <modified>".htmlspecialchars($now->iso8601())."</modified>\n";
+ if ($this->editor!="") {
+ $feed.= " <author>\n";
+ $feed.= " <name>".$this->editor."</name>\n";
+ if ($this->editorEmail!="") {
+ $feed.= " <email>".$this->editorEmail."</email>\n";
+ }
+ $feed.= " </author>\n";
+ }
+ $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n";
+ $feed.= $this->_createAdditionalElements($this->additionalElements, " ");
+ for ($i=0;$i<count($this->items);$i++) {
+ $feed.= " <entry>\n";
+ $feed.= " <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";
+ $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
+ if ($this->items[$i]->date=="") {
+ $this->items[$i]->date = time();
+ }
+ $itemDate = new FeedDate($this->items[$i]->date);
+ $feed.= " <created>".htmlspecialchars($itemDate->iso8601())."</created>\n";
+ $feed.= " <issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n";
+ $feed.= " <modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n";
+ $feed.= " <id>".htmlspecialchars($this->items[$i]->link)."</id>\n";
+ $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " ");
+ if ($this->items[$i]->author!="") {
+ $feed.= " <author>\n";
+ $feed.= " <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
+ $feed.= " </author>\n";
+ }
+ if ($this->items[$i]->description!="") {
+ $feed.= " <summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n";
+ }
+ $feed.= " </entry>\n";
+ }
+ $feed.= "</feed>\n";
+ return $feed;
+ }
+}
+
+
+/**
+ * MBOXCreator is a FeedCreator that implements the mbox format
+ * as described in http://www.qmail.org/man/man5/mbox.html
+ *
+ * @since 1.3
+ * @author Kai Blankenhorn <kaib at bitfolge.de>
+ */
+class MBOXCreator extends FeedCreator {
+
+ function MBOXCreator() {
+ $this->contentType = "text/plain";
+ $this->encoding = "utf-8";
+ }
+
+ function qp_enc($input = "", $line_max = 76) {
+ $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
+ $lines = preg_split("/(?:\r\n|\r|\n)/", $input);
+ $eol = "\r\n";
+ $escape = "=";
+ $output = "";
+ while( list(, $line) = each($lines) ) {
+ //$line = rtrim($line); // remove trailing white space -> no =20\r\n necessary
+ $linlen = strlen($line);
+ $newline = "";
+ for($i = 0; $i < $linlen; $i++) {
+ $c = substr($line, $i, 1);
+ $dec = ord($c);
+ if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at eol only
+ $c = "=20";
+ } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
+ $h2 = floor($dec/16); $h1 = floor($dec%16);
+ $c = $escape.$hex["$h2"].$hex["$h1"];
+ }
+ if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
+ $output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay
+ $newline = "";
+ }
+ $newline .= $c;
+ } // end of for
+ $output .= $newline.$eol;
+ }
+ return trim($output);
+ }
+
+
+ /**
+ * Builds the MBOX contents.
+ * @return string the feed's complete text
+ */
+ function createFeed() {
+ for ($i=0;$i<count($this->items);$i++) {
+ if ($this->items[$i]->author!="") {
+ $from = $this->items[$i]->author;
+ } else {
+ $from = $this->title;
+ }
+ $itemDate = new FeedDate($this->items[$i]->date);
+ $feed.= "From ".strtr(MBOXCreator::qp_enc($from)," ","_")." ".date("D M d H:i:s Y",$itemDate->unix())."\n";
+ $feed.= "Content-Type: text/plain;\n";
+ $feed.= " charset=\"".$this->encoding."\"\n";
+ $feed.= "Content-Transfer-Encoding: quoted-printable\n";
+ $feed.= "Content-Type: text/plain\n";
+ $feed.= "From: \"".MBOXCreator::qp_enc($from)."\"\n";
+ $feed.= "Date: ".$itemDate->rfc822()."\n";
+ $feed.= "Subject: ".MBOXCreator::qp_enc(FeedCreator::iTrunc($this->items[$i]->title,100))."\n";
+ $feed.= "\n";
+ $body = chunk_split(MBOXCreator::qp_enc($this->items[$i]->description));
+ $feed.= preg_replace("~\nFrom ([^\n]*)(\n?)~","\n>From $1$2\n",$body);
+ $feed.= "\n";
+ $feed.= "\n";
+ }
+ return $feed;
+ }
+
+ /**
+ * Generate a filename for the feed cache file. Overridden from FeedCreator to prevent XML data types.
+ * @return string the feed cache filename
+ * @since 1.4
+ * @access private
+ */
+ function _generateFilename() {
+ $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+ return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".mbox";
+ }
+}
+
+
+/**
+ * OPMLCreator is a FeedCreator that implements OPML 1.0.
+ *
+ * @see http://opml.scripting.com/spec
+ * @author Dirk Clemens, Kai Blankenhorn
+ * @since 1.5
+ */
+class OPMLCreator extends FeedCreator {
+
+ function OPMLCreator() {
+ $this->encoding = "utf-8";
+ }
+
+ function createFeed() {
+ $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
+ $feed.= $this->_createGeneratorComment();
+ $feed.= $this->_createStylesheetReferences();
+ $feed.= "<opml xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
+ $feed.= " <head>\n";
+ $feed.= " <title>".htmlspecialchars($this->title)."</title>\n";
+ if ($this->pubDate!="") {
+ $date = new FeedDate($this->pubDate);
+ $feed.= " <dateCreated>".$date->rfc822()."</dateCreated>\n";
+ }
+ if ($this->lastBuildDate!="") {
+ $date = new FeedDate($this->lastBuildDate);
+ $feed.= " <dateModified>".$date->rfc822()."</dateModified>\n";
+ }
+ if ($this->editor!="") {
+ $feed.= " <ownerName>".$this->editor."</ownerName>\n";
+ }
+ if ($this->editorEmail!="") {
+ $feed.= " <ownerEmail>".$this->editorEmail."</ownerEmail>\n";
+ }
+ $feed.= " </head>\n";
+ $feed.= " <body>\n";
+ for ($i=0;$i<count($this->items);$i++) {
+ $feed.= " <outline type=\"rss\" ";
+ $title = htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r"," ")));
+ $feed.= " title=\"".$title."\"";
+ $feed.= " text=\"".$title."\"";
+ //$feed.= " description=\"".htmlspecialchars($this->items[$i]->description)."\"";
+ $feed.= " url=\"".htmlspecialchars($this->items[$i]->link)."\"";
+ $feed.= "/>\n";
+ }
+ $feed.= " </body>\n";
+ $feed.= "</opml>\n";
+ return $feed;
+ }
+}
+
+
+
+/**
+ * HTMLCreator is a FeedCreator that writes an HTML feed file to a specific
+ * location, overriding the createFeed method of the parent FeedCreator.
+ * The HTML produced can be included over http by scripting languages, or serve
+ * as the source for an IFrame.
+ * All output by this class is embedded in <div></div> tags to enable formatting
+ * using CSS.
+ *
+ * @author Pascal Van Hecke
+ * @since 1.7
+ */
+class HTMLCreator extends FeedCreator {
+
+ var $contentType = "text/html";
+
+ /**
+ * Contains HTML to be output at the start of the feed's html representation.
+ */
+ var $header;
+
+ /**
+ * Contains HTML to be output at the end of the feed's html representation.
+ */
+ var $footer ;
+
+ /**
+ * Contains HTML to be output between entries. A separator is only used in
+ * case of multiple entries.
+ */
+ var $separator;
+
+ /**
+ * Used to prefix the stylenames to make sure they are unique
+ * and do not clash with stylenames on the users' page.
+ */
+ var $stylePrefix;
+
+ /**
+ * Determines whether the links open in a new window or not.
+ */
+ var $openInNewWindow = true;
+
+ var $imageAlign ="right";
+
+ /**
+ * In case of very simple output you may want to get rid of the style tags,
+ * hence this variable. There's no equivalent on item level, but of course you can
+ * add strings to it while iterating over the items ($this->stylelessOutput .= ...)
+ * and when it is non-empty, ONLY the styleless output is printed, the rest is ignored
+ * in the function createFeed().
+ */
+ var $stylelessOutput ="";
+
+ /**
+ * Writes the HTML.
+ * @return string the scripts's complete text
+ */
+ function createFeed() {
+ // if there is styleless output, use the content of this variable and ignore the rest
+ if ($this->stylelessOutput!="") {
+ return $this->stylelessOutput;
+ }
+
+ //if no stylePrefix is set, generate it yourself depending on the script name
+ if ($this->stylePrefix=="") {
+ $this->stylePrefix = str_replace(".", "_", $this->_generateFilename())."_";
+ }
+
+ //set an openInNewWindow_token_to be inserted or not
+ if ($this->openInNewWindow) {
+ $targetInsert = " target='_blank'";
+ }
+
+ // use this array to put the lines in and implode later with "document.write" javascript
+ $feedArray = array();
+ if ($this->image!=null) {
+ $imageStr = "<a href='".$this->image->link."'".$targetInsert.">".
+ "<img src='".$this->image->url."' border='0' alt='".
+ FeedCreator::iTrunc(htmlspecialchars($this->image->title),100).
+ "' align='".$this->imageAlign."' ";
+ if ($this->image->width) {
+ $imageStr .=" width='".$this->image->width. "' ";
+ }
+ if ($this->image->height) {
+ $imageStr .=" height='".$this->image->height."' ";
+ }
+ $imageStr .="/></a>";
+ $feedArray[] = $imageStr;
+ }
+
+ if ($this->title) {
+ $feedArray[] = "<div class='".$this->stylePrefix."title'><a href='".$this->link."' ".$targetInsert." class='".$this->stylePrefix."title'>".
+ FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</a></div>";
+ }
+ if ($this->getDescription()) {
+ $feedArray[] = "<div class='".$this->stylePrefix."description'>".
+ str_replace("]]>", "", str_replace("<![CDATA[", "", $this->getDescription())).
+ "</div>";
+ }
+
+ if ($this->header) {
+ $feedArray[] = "<div class='".$this->stylePrefix."header'>".$this->header."</div>";
+ }
+
+ for ($i=0;$i<count($this->items);$i++) {
+ if ($this->separator and $i > 0) {
+ $feedArray[] = "<div class='".$this->stylePrefix."separator'>".$this->separator."</div>";
+ }
+
+ if ($this->items[$i]->title) {
+ if ($this->items[$i]->link) {
+ $feedArray[] =
+ "<div class='".$this->stylePrefix."item_title'><a href='".$this->items[$i]->link."' class='".$this->stylePrefix.
+ "item_title'".$targetInsert.">".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).
+ "</a></div>";
+ } else {
+ $feedArray[] =
+ "<div class='".$this->stylePrefix."item_title'>".
+ FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).
+ "</div>";
+ }
+ }
+ if ($this->items[$i]->getDescription()) {
+ $feedArray[] =
+ "<div class='".$this->stylePrefix."item_description'>".
+ str_replace("]]>", "", str_replace("<![CDATA[", "", $this->items[$i]->getDescription())).
+ "</div>";
+ }
+ }
+ if ($this->footer) {
+ $feedArray[] = "<div class='".$this->stylePrefix."footer'>".$this->footer."</div>";
+ }
+
+ $feed= "".join($feedArray, "\r\n");
+ return $feed;
+ }
+
+ /**
+ * Overrrides parent to produce .html extensions
+ *
+ * @return string the feed cache filename
+ * @since 1.4
+ * @access private
+ */
+ function _generateFilename() {
+ $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+ return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".html";
+ }
+}
+
+
+/**
+ * JSCreator is a class that writes a js file to a specific
+ * location, overriding the createFeed method of the parent HTMLCreator.
+ *
+ * @author Pascal Van Hecke
+ */
+class JSCreator extends HTMLCreator {
+ var $contentType = "text/javascript";
+
+ /**
+ * writes the javascript
+ * @return string the scripts's complete text
+ */
+ function createFeed()
+ {
+ $feed = parent::createFeed();
+ $feedArray = explode("\n",$feed);
+
+ $jsFeed = "";
+ foreach ($feedArray as $value) {
+ $jsFeed .= "document.write('".trim(addslashes($value))."');\n";
+ }
+ return $jsFeed;
+ }
+
+ /**
+ * Overrrides parent to produce .js extensions
+ *
+ * @return string the feed cache filename
+ * @since 1.4
+ * @access private
+ */
+ function _generateFilename() {
+ $fileInfo = pathinfo($_SERVER["PHP_SELF"]);
+ return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".js";
+ }
+
+}
+
+/**
+ * This class allows to override the hardcoded charset
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+class DokuWikiFeedCreator extends UniversalFeedCreator{
+ function createFeed($format = "RSS0.91",$encoding='iso-8859-15') {
+ $this->_setFormat($format);
+ $this->_feed->encoding = $encoding;
+ return $this->_feed->createFeed();
+ }
+}
+
+
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
+?>
Modified: site/trunk/www-root/wiki/inc/form.php
===================================================================
--- site/trunk/www-root/wiki/inc/form.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/form.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,893 +1,893 @@
-<?php
-/**
- * DokuWiki XHTML Form
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-if(!defined('NL')) define('NL',"\n");
-require_once(DOKU_INC.'inc/html.php');
-
-/**
- * Class for creating simple HTML forms.
- *
- * The forms is built from a list of pseudo-tags (arrays with expected keys).
- * Every pseudo-tag must have the key '_elem' set to the name of the element.
- * When printed, the form class calls functions named 'form_$type' for each
- * element it contains.
- *
- * Standard practice is for non-attribute keys in a pseudo-element to start
- * with '_'. Other keys are HTML attributes that will be included in the element
- * tag. That way, the element output functions can pass the pseudo-element
- * directly to buildAttributes.
- *
- * See the form_make* functions later in this file.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-class Doku_Form {
-
- // Usually either DOKU_SCRIPT or wl($ID)
- var $action = '';
-
- // Most likely no need to change this
- var $method = 'post';
-
- // Change for special forms only
- var $enctype = '';
-
- // Form id attribute
- var $id = '';
-
- // Draw a border around form fields.
- // Adds <fieldset></fieldset> around the elements
- var $_infieldset = false;
-
- // Hidden form fields.
- var $_hidden = array();
-
- // Array of pseudo-tags
- var $_content = array();
-
- /**
- * Constructor
- *
- * Autoadds a security token
- *
- * @param string $id ID attribute of the form.
- * @param string $action (optional) submit URL, defaults to DOKU_SCRIPT
- * @param string $method (optional) 'POST' or 'GET', default is post
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function Doku_Form($id, $action=false, $method=false, $enctype=false) {
- $this->id = $id;
- $this->action = ($action) ? $action : script();
- if ($method) $this->method = $method;
- if ($enctype) $this->enctype = $enctype;
-
- $this->addHidden('sectok', getSecurityToken());
- }
-
- /**
- * startFieldset
- *
- * Add <fieldset></fieldset> tags around fields.
- * Usually results in a border drawn around the form.
- *
- * @param string $legend Label that will be printed with the border.
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function startFieldset($legend) {
- if ($this->_infieldset) {
- $this->addElement(array('_elem'=>'closefieldset'));
- }
- $this->addElement(array('_elem'=>'openfieldset', '_legend'=>$legend));
- $this->_infieldset = true;
- }
-
- /**
- * endFieldset
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function endFieldset() {
- if ($this->_infieldset) {
- $this->addElement(array('_elem'=>'closefieldset'));
- }
- $this->_infieldset = false;
- }
-
- /**
- * addHidden
- *
- * Adds a name/value pair as a hidden field.
- * The value of the field (but not the name) will be passed to
- * formText() before printing.
- *
- * @param string $name Field name.
- * @param string $value Field value. If null, remove a previously added field.
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function addHidden($name, $value) {
- if (is_null($value))
- unset($this->_hidden[$name]);
- else
- $this->_hidden[$name] = $value;
- }
-
- /**
- * addElement
- *
- * Appends a content element to the form.
- * The element can be either a pseudo-tag or string.
- * If string, it is printed without escaping special chars. *
- *
- * @param string $elem Pseudo-tag or string to add to the form.
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function addElement($elem) {
- $this->_content[] = $elem;
- }
-
- /**
- * insertElement
- *
- * Inserts a content element at a position.
- *
- * @param string $pos 0-based index where the element will be inserted.
- * @param string $elem Pseudo-tag or string to add to the form.
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function insertElement($pos, $elem) {
- array_splice($this->_content, $pos, 0, array($elem));
- }
-
- /**
- * replaceElement
- *
- * Replace with NULL to remove an element.
- *
- * @param int $pos 0-based index the element will be placed at.
- * @param string $elem Pseudo-tag or string to add to the form.
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function replaceElement($pos, $elem) {
- $rep = array();
- if (!is_null($elem)) $rep[] = $elem;
- array_splice($this->_content, $pos, 1, $rep);
- }
-
- /**
- * findElementByType
- *
- * Gets the position of the first of a type of element.
- *
- * @param string $type Element type to look for.
- * @return array pseudo-element if found, false otherwise
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function findElementByType($type) {
- foreach ($this->_content as $pos=>$elem) {
- if (is_array($elem) && $elem['_elem'] == $type)
- return $pos;
- }
- return false;
- }
-
- /**
- * findElementById
- *
- * Gets the position of the element with an ID attribute.
- *
- * @param string $id ID of the element to find.
- * @return array pseudo-element if found, false otherwise
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function findElementById($id) {
- foreach ($this->_content as $pos=>$elem) {
- if (is_array($elem) && isset($elem['id']) && $elem['id'] == $id)
- return $pos;
- }
- return false;
- }
-
- /**
- * findElementByAttribute
- *
- * Gets the position of the first element with a matching attribute value.
- *
- * @param string $name Attribute name.
- * @param string $value Attribute value.
- * @return array pseudo-element if found, false otherwise
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function findElementByAttribute($name, $value) {
- foreach ($this->_content as $pos=>$elem) {
- if (is_array($elem) && isset($elem[$name]) && $elem[$name] == $value)
- return $pos;
- }
- return false;
- }
-
- /**
- * getElementAt
- *
- * Returns a reference to the element at a position.
- * A position out-of-bounds will return either the
- * first (underflow) or last (overflow) element.
- *
- * @param int $pos 0-based index
- * @return arrayreference pseudo-element
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function &getElementAt($pos) {
- if ($pos < 0) $pos = count($this->_content) + $pos;
- if ($pos < 0) $pos = 0;
- if ($pos >= count($this->_content)) $pos = count($this->_content) - 1;
- return $this->_content[$pos];
- }
-
- /**
- * printForm
- *
- * Output the form.
- * Each element in the form will be passed to a function named
- * 'form_$type'. The function should return the HTML to be printed.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
- function printForm() {
- global $lang;
- print '<form action="'.$this->action.'" method="'.$this->method.'" accept-charset="'.$lang['encoding'].'"';
- if (!empty($this->id)) print ' id="'.$this->id.'"';
- if (!empty($this->enctype)) print ' enctype="'.$this->enctype.'"';
- print '>'.NL;
- if (!empty($this->_hidden)) {
- print '<div class="no">';
- foreach ($this->_hidden as $name=>$value)
- print form_hidden(array('name'=>$name, 'value'=>$value));
- print '</div>'.NL;
- }
- foreach ($this->_content as $element) {
- if (is_array($element)) {
- $elem_type = $element['_elem'];
- if (function_exists('form_'.$elem_type)) {
- print call_user_func('form_'.$elem_type, $element).NL;
- }
- } else {
- print $element;
- }
- }
- if ($this->_infieldset) print form_closefieldset().NL;
- print '</form>'.NL;
- }
-
-}
-
-/**
- * form_makeTag
- *
- * Create a form element for a non-specific empty tag.
- *
- * @param string $tag Tag name.
- * @param array $attrs Optional attributes.
- * @return array pseudo-tag
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeTag($tag, $attrs=array()) {
- $elem = array('_elem'=>'tag', '_tag'=>$tag);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeOpenTag
- *
- * Create a form element for a non-specific opening tag.
- * Remember to put a matching close tag after this as well.
- *
- * @param string $tag Tag name.
- * @param array $attrs Optional attributes.
- * @return array pseudo-tag
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeOpenTag($tag, $attrs=array()) {
- $elem = array('_elem'=>'opentag', '_tag'=>$tag);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeCloseTag
- *
- * Create a form element for a non-specific closing tag.
- * Careless use of this will result in invalid XHTML.
- *
- * @param string $tag Tag name.
- * @return array pseudo-tag
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeCloseTag($tag) {
- return array('_elem'=>'closetag', '_tag'=>$tag);
-}
-
-/**
- * form_makeWikiText
- *
- * Create a form element for a textarea containing wiki text.
- * Only one wikitext element is allowed on a page. It will have
- * a name of 'wikitext' and id 'wiki__text'. The text will
- * be passed to formText() before printing.
- *
- * @param string $text Text to fill the field with.
- * @param array $attrs Optional attributes.
- * @return array pseudo-tag
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeWikiText($text, $attrs=array()) {
- $elem = array('_elem'=>'wikitext', '_text'=>$text,
- 'class'=>'edit', 'cols'=>'80', 'rows'=>'10');
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeButton
- *
- * Create a form element for an action button.
- * A title will automatically be generated using the value and
- * accesskey attributes, unless you provide one.
- *
- * @param string $type Type attribute. 'submit' or 'cancel'
- * @param string $act Wiki action of the button, will be used as the do= parameter
- * @param string $value (optional) Displayed label. Uses $act if not provided.
- * @param array $attrs Optional attributes.
- * @return array pseudo-tag
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeButton($type, $act, $value='', $attrs=array()) {
- if ($value == '') $value = $act;
- //$name = (!empty($act)) ? 'do[$act]' : null;
- $elem = array('_elem'=>'button', 'type'=>$type, '_action'=>$act,
- 'value'=>$value, 'class'=>'button');
- if (!empty($attrs['accesskey']) && empty($attrs['title'])) {
- $attrs['title'] = $value . ' [ALT+'.strtoupper($attrs['accesskey']).']';
- }
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeField
- *
- * Create a form element for a labelled input element.
- * The label text will be printed before the input.
- *
- * @param string $type Type attribute of input.
- * @param string $name Name attribute of the input.
- * @param string $value (optional) Default value.
- * @param string $class Class attribute of the label. If this is 'block',
- * then a line break will be added after the field.
- * @param string $label Label that will be printed before the input.
- * @param string $id ID attribute of the input. If set, the label will
- * reference it with a 'for' attribute.
- * @param array $attrs Optional attributes.
- * @return array pseudo-tag
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeField($type, $name, $value='', $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- $elem = array('_elem'=>'field', '_text'=>$label, '_class'=>$class,
- 'type'=>$type, 'id'=>$id, 'name'=>$name, 'value'=>$value);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeFieldRight
- *
- * Create a form element for a labelled input element.
- * The label text will be printed after the input.
- *
- * @see form_makeField
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeFieldRight($type, $name, $value='', $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- $elem = array('_elem'=>'fieldright', '_text'=>$label, '_class'=>$class,
- 'type'=>$type, 'id'=>$id, 'name'=>$name, 'value'=>$value);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeTextField
- *
- * Create a form element for a text input element with label.
- *
- * @see form_makeField
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeTextField($name, $value='', $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- $elem = array('_elem'=>'textfield', '_text'=>$label, '_class'=>$class,
- 'id'=>$id, 'name'=>$name, 'value'=>$value, 'class'=>'edit');
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makePasswordField
- *
- * Create a form element for a password input element with label.
- * Password elements have no default value, for obvious reasons.
- *
- * @see form_makeField
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makePasswordField($name, $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- $elem = array('_elem'=>'passwordfield', '_text'=>$label, '_class'=>$class,
- 'id'=>$id, 'name'=>$name, 'class'=>'edit');
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeFileField
- *
- * Create a form element for a file input element with label
- *
- * @see form_makeField
- * @author Michael Klier <chi at chimeric.de>
- */
-function form_makeFileField($name, $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- $elem = array('_elem'=>'filefield', '_text'=>$label, '_class'=>$class,
- 'id'=>$id, 'name'=>$name, 'class'=>'edit');
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeCheckboxField
- *
- * Create a form element for a checkbox input element with label.
- *
- * @see form_makeFieldRight
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeCheckboxField($name, $value='1', $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- if (is_null($value) || $value=='') $value='0';
- $elem = array('_elem'=>'checkboxfield', '_text'=>$label, '_class'=>$class,
- 'id'=>$id, 'name'=>$name, 'value'=>$value);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeRadioField
- *
- * Create a form element for a radio button input element with label.
- *
- * @see form_makeFieldRight
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeRadioField($name, $value='1', $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- if (is_null($value) || $value=='') $value='0';
- $elem = array('_elem'=>'radiofield', '_text'=>$label, '_class'=>$class,
- 'id'=>$id, 'name'=>$name, 'value'=>$value);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeMenuField
- *
- * Create a form element for a drop-down menu with label.
- * The list of values can be strings, arrays of (value,text),
- * or an associative array with the values as keys and labels as values.
- * An item is selected by supplying its value or integer index.
- * If the list of values is an associative array, the selected item must be
- * a string.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeMenuField($name, $values, $selected='', $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- $options = array();
- reset($values);
- // FIXME: php doesn't know the difference between a string and an integer
- if (is_string(key($values))) {
- foreach ($values as $val=>$text) {
- $options[] = array($val,$text, (!is_null($selected) && $val==$selected));
- }
- } else {
- if (is_integer($selected)) $selected = $values[$selected];
- foreach ($values as $val) {
- if (is_array($val))
- @list($val,$text) = $val;
- else
- $text = null;
- $options[] = array($val,$text,$val===$selected);
- }
- }
- $elem = array('_elem'=>'menufield', '_options'=>$options, '_text'=>$label, '_class'=>$class,
- 'id'=>$id, 'name'=>$name);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_makeListboxField
- *
- * Create a form element for a list box with label.
- * The list of values can be strings, arrays of (value,text),
- * or an associative array with the values as keys and labels as values.
- * Items are selected by supplying its value or an array of values.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_makeListboxField($name, $values, $selected='', $label=null, $id='', $class='', $attrs=array()) {
- if (is_null($label)) $label = $name;
- $options = array();
- reset($values);
- if (is_null($selected) || $selected == '')
- $selected = array();
- elseif (!is_array($selected))
- $selected = array($selected);
- // FIXME: php doesn't know the difference between a string and an integer
- if (is_string(key($values))) {
- foreach ($values as $val=>$text) {
- $options[] = array($val,$text,in_array($val,$selected));
- }
- } else {
- foreach ($values as $val) {
- if (is_array($val))
- @list($val,$text) = $val;
- else
- $text = null;
- $options[] = array($val,$text,in_array($val,$selected));
- }
- }
- $elem = array('_elem'=>'listboxfield', '_options'=>$options, '_text'=>$label, '_class'=>$class,
- 'id'=>$id, 'name'=>$name);
- return array_merge($elem, $attrs);
-}
-
-/**
- * form_tag
- *
- * Print the HTML for a generic empty tag.
- * Requires '_tag' key with name of the tag.
- * Attributes are passed to buildAttributes()
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_tag($attrs) {
- return '<'.$attrs['_tag'].' '.buildAttributes($attrs,true).'/>';
-}
-
-/**
- * form_opentag
- *
- * Print the HTML for a generic opening tag.
- * Requires '_tag' key with name of the tag.
- * Attributes are passed to buildAttributes()
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_opentag($attrs) {
- return '<'.$attrs['_tag'].' '.buildAttributes($attrs,true).'>';
-}
-
-/**
- * form_closetag
- *
- * Print the HTML for a generic closing tag.
- * Requires '_tag' key with name of the tag.
- * There are no attributes.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_closetag($attrs) {
- return '</'.$attrs['_tag'].'>';
-}
-
-/**
- * form_openfieldset
- *
- * Print the HTML for an opening fieldset tag.
- * Uses the '_legend' key.
- * Attributes are passed to buildAttributes()
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_openfieldset($attrs) {
- $s = '<fieldset '.buildAttributes($attrs,true).'>';
- if (!is_null($attrs['_legend'])) $s .= '<legend>'.$attrs['_legend'].'</legend>';
- return $s;
-}
-
-/**
- * form_closefieldset
- *
- * Print the HTML for a closing fieldset tag.
- * There are no attributes.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_closefieldset() {
- return '</fieldset>';
-}
-
-/**
- * form_hidden
- *
- * Print the HTML for a hidden input element.
- * Uses only 'name' and 'value' attributes.
- * Value is passed to formText()
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_hidden($attrs) {
- return '<input type="hidden" name="'.$attrs['name'].'" value="'.formText($attrs['value']).'" />';
-}
-
-/**
- * form_wikitext
- *
- * Print the HTML for the wiki textarea.
- * Requires '_text' with default text of the field.
- * Text will be passed to formText(), attributes to buildAttributes()
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_wikitext($attrs) {
- // mandatory attributes
- unset($attrs['name']);
- unset($attrs['id']);
- return '<textarea name="wikitext" id="wiki__text" '
- .buildAttributes($attrs,true).'>'.NL
- .formText($attrs['_text'])
- .'</textarea>';
-}
-
-/**
- * form_button
- *
- * Print the HTML for a form button.
- * If '_action' is set, the button name will be "do[_action]".
- * Other attributes are passed to buildAttributes()
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_button($attrs) {
- $p = (!empty($attrs['_action'])) ? 'name="do['.$attrs['_action'].']" ' : '';
- return '<input '.$p.buildAttributes($attrs,true).'/>';
-}
-
-/**
- * form_field
- *
- * Print the HTML for a form input field.
- * _class : class attribute used on the label tag
- * _text : Text to display before the input. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_field($attrs) {
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><span>'.$attrs['_text'].'</span>';
- $s .= ' <input '.buildAttributes($attrs,true).'/></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_fieldright
- *
- * Print the HTML for a form input field. (right-aligned)
- * _class : class attribute used on the label tag
- * _text : Text to display after the input. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_fieldright($attrs) {
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><input '.buildAttributes($attrs,true).'/>';
- $s .= ' <span>'.$attrs['_text'].'</span></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_textfield
- *
- * Print the HTML for a text input field.
- * _class : class attribute used on the label tag
- * _text : Text to display before the input. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_textfield($attrs) {
- // mandatory attributes
- unset($attrs['type']);
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><span>'.$attrs['_text'].'</span> ';
- $s .= '<input type="text" '.buildAttributes($attrs,true).'/></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_passwordfield
- *
- * Print the HTML for a password input field.
- * _class : class attribute used on the label tag
- * _text : Text to display before the input. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_passwordfield($attrs) {
- // mandatory attributes
- unset($attrs['type']);
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><span>'.$attrs['_text'].'</span> ';
- $s .= '<input type="password" '.buildAttributes($attrs,true).'/></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_filefield
- *
- * Print the HTML for a file input field.
- * _class : class attribute used on the label tag
- * _text : Text to display before the input. Not escaped
- * _maxlength : Allowed size in byte
- * _accept : Accepted mime-type
- * Other attributes are passed to buildAttributes() for the input tag
- *
- * @author Michael Klier <chi at chimeric.de>
- */
-function form_filefield($attrs) {
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><span>'.$attrs['_text'].'</span> ';
- $s .= '<input type="file" '.buildAttributes($attrs,true);
- if (!empty($attrs['_maxlength'])) $s .= ' maxlength="'.$attrs['_maxlength'].'"';
- if (!empty($attrs['_accept'])) $s .= ' accept="'.$attrs['_accept'].'"';
- $s .= '/></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_checkboxfield
- *
- * Print the HTML for a checkbox input field.
- * _class : class attribute used on the label tag
- * _text : Text to display after the input. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_checkboxfield($attrs) {
- // mandatory attributes
- unset($attrs['type']);
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><input type="checkbox" '.buildAttributes($attrs,true).'/>';
- $s .= ' <span>'.$attrs['_text'].'</span></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_radiofield
- *
- * Print the HTML for a radio button input field.
- * _class : class attribute used on the label tag
- * _text : Text to display after the input. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_radiofield($attrs) {
- // mandatory attributes
- unset($attrs['type']);
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><input type="radio" '.buildAttributes($attrs,true).'/>';
- $s .= ' <span>'.$attrs['_text'].'</span></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_menufield
- *
- * Print the HTML for a drop-down menu.
- * _options : Array of (value,text,selected) for the menu.
- * Text can be omitted. Text and value are passed to formText()
- * Only one item can be selected.
- * _class : class attribute used on the label tag
- * _text : Text to display before the menu. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_menufield($attrs) {
- $attrs['size'] = '1';
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><span>'.$attrs['_text'].'</span>';
- $s .= ' <select '.buildAttributes($attrs,true).'>'.NL;
- if (!empty($attrs['_options'])) {
- $selected = false;
- for($n=0;$n<count($attrs['_options']);$n++){
- @list($value,$text,$select) = $attrs['_options'][$n];
- $p = '';
- if (!is_null($text))
- $p .= ' value="'.formText($value).'"';
- else
- $text = $value;
- if (!empty($select) && !$selected) {
- $p .= ' selected="selected"';
- $selected = true;
- }
- $s .= '<option'.$p.'>'.formText($text).'</option>';
- }
- } else {
- $s .= '<option></option>';
- }
- $s .= NL.'</select></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
-
-/**
- * form_listboxfield
- *
- * Print the HTML for a list box.
- * _options : Array of (value,text,selected) for the list.
- * Text can be omitted. Text and value are passed to formText()
- * _class : class attribute used on the label tag
- * _text : Text to display before the menu. Not escaped.
- * Other attributes are passed to buildAttributes() for the input tag.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function form_listboxfield($attrs) {
- $s = '<label class="'.$attrs['_class'].'"';
- if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
- $s .= '><span>'.$attrs['_text'].'</span> ';
- $s = '<select '.buildAttributes($attrs,true).'>'.NL;
- if (!empty($attrs['_options'])) {
- foreach ($attrs['_options'] as $opt) {
- @list($value,$text,$select) = $opt;
- $p = '';
- if (!is_null($text))
- $p .= ' value="'.formText($value).'"';
- else
- $text = $value;
- if (!empty($select)) $p .= ' selected="selected"';
- $s .= '<option'.$p.'>'.formText($text).'</option>';
- }
- } else {
- $s .= '<option></option>';
- }
- $s .= NL.'</select></label>';
- if (preg_match('/(^| )block($| )/', $attrs['_class']))
- $s .= '<br />';
- return $s;
-}
+<?php
+/**
+ * DokuWiki XHTML Form
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+if(!defined('NL')) define('NL',"\n");
+require_once(DOKU_INC.'inc/html.php');
+
+/**
+ * Class for creating simple HTML forms.
+ *
+ * The forms is built from a list of pseudo-tags (arrays with expected keys).
+ * Every pseudo-tag must have the key '_elem' set to the name of the element.
+ * When printed, the form class calls functions named 'form_$type' for each
+ * element it contains.
+ *
+ * Standard practice is for non-attribute keys in a pseudo-element to start
+ * with '_'. Other keys are HTML attributes that will be included in the element
+ * tag. That way, the element output functions can pass the pseudo-element
+ * directly to buildAttributes.
+ *
+ * See the form_make* functions later in this file.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+class Doku_Form {
+
+ // Usually either DOKU_SCRIPT or wl($ID)
+ var $action = '';
+
+ // Most likely no need to change this
+ var $method = 'post';
+
+ // Change for special forms only
+ var $enctype = '';
+
+ // Form id attribute
+ var $id = '';
+
+ // Draw a border around form fields.
+ // Adds <fieldset></fieldset> around the elements
+ var $_infieldset = false;
+
+ // Hidden form fields.
+ var $_hidden = array();
+
+ // Array of pseudo-tags
+ var $_content = array();
+
+ /**
+ * Constructor
+ *
+ * Autoadds a security token
+ *
+ * @param string $id ID attribute of the form.
+ * @param string $action (optional) submit URL, defaults to DOKU_SCRIPT
+ * @param string $method (optional) 'POST' or 'GET', default is post
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function Doku_Form($id, $action=false, $method=false, $enctype=false) {
+ $this->id = $id;
+ $this->action = ($action) ? $action : script();
+ if ($method) $this->method = $method;
+ if ($enctype) $this->enctype = $enctype;
+
+ $this->addHidden('sectok', getSecurityToken());
+ }
+
+ /**
+ * startFieldset
+ *
+ * Add <fieldset></fieldset> tags around fields.
+ * Usually results in a border drawn around the form.
+ *
+ * @param string $legend Label that will be printed with the border.
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function startFieldset($legend) {
+ if ($this->_infieldset) {
+ $this->addElement(array('_elem'=>'closefieldset'));
+ }
+ $this->addElement(array('_elem'=>'openfieldset', '_legend'=>$legend));
+ $this->_infieldset = true;
+ }
+
+ /**
+ * endFieldset
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function endFieldset() {
+ if ($this->_infieldset) {
+ $this->addElement(array('_elem'=>'closefieldset'));
+ }
+ $this->_infieldset = false;
+ }
+
+ /**
+ * addHidden
+ *
+ * Adds a name/value pair as a hidden field.
+ * The value of the field (but not the name) will be passed to
+ * formText() before printing.
+ *
+ * @param string $name Field name.
+ * @param string $value Field value. If null, remove a previously added field.
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function addHidden($name, $value) {
+ if (is_null($value))
+ unset($this->_hidden[$name]);
+ else
+ $this->_hidden[$name] = $value;
+ }
+
+ /**
+ * addElement
+ *
+ * Appends a content element to the form.
+ * The element can be either a pseudo-tag or string.
+ * If string, it is printed without escaping special chars. *
+ *
+ * @param string $elem Pseudo-tag or string to add to the form.
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function addElement($elem) {
+ $this->_content[] = $elem;
+ }
+
+ /**
+ * insertElement
+ *
+ * Inserts a content element at a position.
+ *
+ * @param string $pos 0-based index where the element will be inserted.
+ * @param string $elem Pseudo-tag or string to add to the form.
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function insertElement($pos, $elem) {
+ array_splice($this->_content, $pos, 0, array($elem));
+ }
+
+ /**
+ * replaceElement
+ *
+ * Replace with NULL to remove an element.
+ *
+ * @param int $pos 0-based index the element will be placed at.
+ * @param string $elem Pseudo-tag or string to add to the form.
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function replaceElement($pos, $elem) {
+ $rep = array();
+ if (!is_null($elem)) $rep[] = $elem;
+ array_splice($this->_content, $pos, 1, $rep);
+ }
+
+ /**
+ * findElementByType
+ *
+ * Gets the position of the first of a type of element.
+ *
+ * @param string $type Element type to look for.
+ * @return array pseudo-element if found, false otherwise
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function findElementByType($type) {
+ foreach ($this->_content as $pos=>$elem) {
+ if (is_array($elem) && $elem['_elem'] == $type)
+ return $pos;
+ }
+ return false;
+ }
+
+ /**
+ * findElementById
+ *
+ * Gets the position of the element with an ID attribute.
+ *
+ * @param string $id ID of the element to find.
+ * @return array pseudo-element if found, false otherwise
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function findElementById($id) {
+ foreach ($this->_content as $pos=>$elem) {
+ if (is_array($elem) && isset($elem['id']) && $elem['id'] == $id)
+ return $pos;
+ }
+ return false;
+ }
+
+ /**
+ * findElementByAttribute
+ *
+ * Gets the position of the first element with a matching attribute value.
+ *
+ * @param string $name Attribute name.
+ * @param string $value Attribute value.
+ * @return array pseudo-element if found, false otherwise
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function findElementByAttribute($name, $value) {
+ foreach ($this->_content as $pos=>$elem) {
+ if (is_array($elem) && isset($elem[$name]) && $elem[$name] == $value)
+ return $pos;
+ }
+ return false;
+ }
+
+ /**
+ * getElementAt
+ *
+ * Returns a reference to the element at a position.
+ * A position out-of-bounds will return either the
+ * first (underflow) or last (overflow) element.
+ *
+ * @param int $pos 0-based index
+ * @return arrayreference pseudo-element
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function &getElementAt($pos) {
+ if ($pos < 0) $pos = count($this->_content) + $pos;
+ if ($pos < 0) $pos = 0;
+ if ($pos >= count($this->_content)) $pos = count($this->_content) - 1;
+ return $this->_content[$pos];
+ }
+
+ /**
+ * printForm
+ *
+ * Output the form.
+ * Each element in the form will be passed to a function named
+ * 'form_$type'. The function should return the HTML to be printed.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+ function printForm() {
+ global $lang;
+ print '<form action="'.$this->action.'" method="'.$this->method.'" accept-charset="'.$lang['encoding'].'"';
+ if (!empty($this->id)) print ' id="'.$this->id.'"';
+ if (!empty($this->enctype)) print ' enctype="'.$this->enctype.'"';
+ print '>'.NL;
+ if (!empty($this->_hidden)) {
+ print '<div class="no">';
+ foreach ($this->_hidden as $name=>$value)
+ print form_hidden(array('name'=>$name, 'value'=>$value));
+ print '</div>'.NL;
+ }
+ foreach ($this->_content as $element) {
+ if (is_array($element)) {
+ $elem_type = $element['_elem'];
+ if (function_exists('form_'.$elem_type)) {
+ print call_user_func('form_'.$elem_type, $element).NL;
+ }
+ } else {
+ print $element;
+ }
+ }
+ if ($this->_infieldset) print form_closefieldset().NL;
+ print '</form>'.NL;
+ }
+
+}
+
+/**
+ * form_makeTag
+ *
+ * Create a form element for a non-specific empty tag.
+ *
+ * @param string $tag Tag name.
+ * @param array $attrs Optional attributes.
+ * @return array pseudo-tag
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeTag($tag, $attrs=array()) {
+ $elem = array('_elem'=>'tag', '_tag'=>$tag);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeOpenTag
+ *
+ * Create a form element for a non-specific opening tag.
+ * Remember to put a matching close tag after this as well.
+ *
+ * @param string $tag Tag name.
+ * @param array $attrs Optional attributes.
+ * @return array pseudo-tag
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeOpenTag($tag, $attrs=array()) {
+ $elem = array('_elem'=>'opentag', '_tag'=>$tag);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeCloseTag
+ *
+ * Create a form element for a non-specific closing tag.
+ * Careless use of this will result in invalid XHTML.
+ *
+ * @param string $tag Tag name.
+ * @return array pseudo-tag
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeCloseTag($tag) {
+ return array('_elem'=>'closetag', '_tag'=>$tag);
+}
+
+/**
+ * form_makeWikiText
+ *
+ * Create a form element for a textarea containing wiki text.
+ * Only one wikitext element is allowed on a page. It will have
+ * a name of 'wikitext' and id 'wiki__text'. The text will
+ * be passed to formText() before printing.
+ *
+ * @param string $text Text to fill the field with.
+ * @param array $attrs Optional attributes.
+ * @return array pseudo-tag
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeWikiText($text, $attrs=array()) {
+ $elem = array('_elem'=>'wikitext', '_text'=>$text,
+ 'class'=>'edit', 'cols'=>'80', 'rows'=>'10');
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeButton
+ *
+ * Create a form element for an action button.
+ * A title will automatically be generated using the value and
+ * accesskey attributes, unless you provide one.
+ *
+ * @param string $type Type attribute. 'submit' or 'cancel'
+ * @param string $act Wiki action of the button, will be used as the do= parameter
+ * @param string $value (optional) Displayed label. Uses $act if not provided.
+ * @param array $attrs Optional attributes.
+ * @return array pseudo-tag
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeButton($type, $act, $value='', $attrs=array()) {
+ if ($value == '') $value = $act;
+ //$name = (!empty($act)) ? 'do[$act]' : null;
+ $elem = array('_elem'=>'button', 'type'=>$type, '_action'=>$act,
+ 'value'=>$value, 'class'=>'button');
+ if (!empty($attrs['accesskey']) && empty($attrs['title'])) {
+ $attrs['title'] = $value . ' [ALT+'.strtoupper($attrs['accesskey']).']';
+ }
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeField
+ *
+ * Create a form element for a labelled input element.
+ * The label text will be printed before the input.
+ *
+ * @param string $type Type attribute of input.
+ * @param string $name Name attribute of the input.
+ * @param string $value (optional) Default value.
+ * @param string $class Class attribute of the label. If this is 'block',
+ * then a line break will be added after the field.
+ * @param string $label Label that will be printed before the input.
+ * @param string $id ID attribute of the input. If set, the label will
+ * reference it with a 'for' attribute.
+ * @param array $attrs Optional attributes.
+ * @return array pseudo-tag
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeField($type, $name, $value='', $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ $elem = array('_elem'=>'field', '_text'=>$label, '_class'=>$class,
+ 'type'=>$type, 'id'=>$id, 'name'=>$name, 'value'=>$value);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeFieldRight
+ *
+ * Create a form element for a labelled input element.
+ * The label text will be printed after the input.
+ *
+ * @see form_makeField
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeFieldRight($type, $name, $value='', $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ $elem = array('_elem'=>'fieldright', '_text'=>$label, '_class'=>$class,
+ 'type'=>$type, 'id'=>$id, 'name'=>$name, 'value'=>$value);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeTextField
+ *
+ * Create a form element for a text input element with label.
+ *
+ * @see form_makeField
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeTextField($name, $value='', $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ $elem = array('_elem'=>'textfield', '_text'=>$label, '_class'=>$class,
+ 'id'=>$id, 'name'=>$name, 'value'=>$value, 'class'=>'edit');
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makePasswordField
+ *
+ * Create a form element for a password input element with label.
+ * Password elements have no default value, for obvious reasons.
+ *
+ * @see form_makeField
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makePasswordField($name, $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ $elem = array('_elem'=>'passwordfield', '_text'=>$label, '_class'=>$class,
+ 'id'=>$id, 'name'=>$name, 'class'=>'edit');
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeFileField
+ *
+ * Create a form element for a file input element with label
+ *
+ * @see form_makeField
+ * @author Michael Klier <chi at chimeric.de>
+ */
+function form_makeFileField($name, $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ $elem = array('_elem'=>'filefield', '_text'=>$label, '_class'=>$class,
+ 'id'=>$id, 'name'=>$name, 'class'=>'edit');
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeCheckboxField
+ *
+ * Create a form element for a checkbox input element with label.
+ *
+ * @see form_makeFieldRight
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeCheckboxField($name, $value='1', $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ if (is_null($value) || $value=='') $value='0';
+ $elem = array('_elem'=>'checkboxfield', '_text'=>$label, '_class'=>$class,
+ 'id'=>$id, 'name'=>$name, 'value'=>$value);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeRadioField
+ *
+ * Create a form element for a radio button input element with label.
+ *
+ * @see form_makeFieldRight
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeRadioField($name, $value='1', $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ if (is_null($value) || $value=='') $value='0';
+ $elem = array('_elem'=>'radiofield', '_text'=>$label, '_class'=>$class,
+ 'id'=>$id, 'name'=>$name, 'value'=>$value);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeMenuField
+ *
+ * Create a form element for a drop-down menu with label.
+ * The list of values can be strings, arrays of (value,text),
+ * or an associative array with the values as keys and labels as values.
+ * An item is selected by supplying its value or integer index.
+ * If the list of values is an associative array, the selected item must be
+ * a string.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeMenuField($name, $values, $selected='', $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ $options = array();
+ reset($values);
+ // FIXME: php doesn't know the difference between a string and an integer
+ if (is_string(key($values))) {
+ foreach ($values as $val=>$text) {
+ $options[] = array($val,$text, (!is_null($selected) && $val==$selected));
+ }
+ } else {
+ if (is_integer($selected)) $selected = $values[$selected];
+ foreach ($values as $val) {
+ if (is_array($val))
+ @list($val,$text) = $val;
+ else
+ $text = null;
+ $options[] = array($val,$text,$val===$selected);
+ }
+ }
+ $elem = array('_elem'=>'menufield', '_options'=>$options, '_text'=>$label, '_class'=>$class,
+ 'id'=>$id, 'name'=>$name);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_makeListboxField
+ *
+ * Create a form element for a list box with label.
+ * The list of values can be strings, arrays of (value,text),
+ * or an associative array with the values as keys and labels as values.
+ * Items are selected by supplying its value or an array of values.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_makeListboxField($name, $values, $selected='', $label=null, $id='', $class='', $attrs=array()) {
+ if (is_null($label)) $label = $name;
+ $options = array();
+ reset($values);
+ if (is_null($selected) || $selected == '')
+ $selected = array();
+ elseif (!is_array($selected))
+ $selected = array($selected);
+ // FIXME: php doesn't know the difference between a string and an integer
+ if (is_string(key($values))) {
+ foreach ($values as $val=>$text) {
+ $options[] = array($val,$text,in_array($val,$selected));
+ }
+ } else {
+ foreach ($values as $val) {
+ if (is_array($val))
+ @list($val,$text) = $val;
+ else
+ $text = null;
+ $options[] = array($val,$text,in_array($val,$selected));
+ }
+ }
+ $elem = array('_elem'=>'listboxfield', '_options'=>$options, '_text'=>$label, '_class'=>$class,
+ 'id'=>$id, 'name'=>$name);
+ return array_merge($elem, $attrs);
+}
+
+/**
+ * form_tag
+ *
+ * Print the HTML for a generic empty tag.
+ * Requires '_tag' key with name of the tag.
+ * Attributes are passed to buildAttributes()
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_tag($attrs) {
+ return '<'.$attrs['_tag'].' '.buildAttributes($attrs,true).'/>';
+}
+
+/**
+ * form_opentag
+ *
+ * Print the HTML for a generic opening tag.
+ * Requires '_tag' key with name of the tag.
+ * Attributes are passed to buildAttributes()
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_opentag($attrs) {
+ return '<'.$attrs['_tag'].' '.buildAttributes($attrs,true).'>';
+}
+
+/**
+ * form_closetag
+ *
+ * Print the HTML for a generic closing tag.
+ * Requires '_tag' key with name of the tag.
+ * There are no attributes.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_closetag($attrs) {
+ return '</'.$attrs['_tag'].'>';
+}
+
+/**
+ * form_openfieldset
+ *
+ * Print the HTML for an opening fieldset tag.
+ * Uses the '_legend' key.
+ * Attributes are passed to buildAttributes()
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_openfieldset($attrs) {
+ $s = '<fieldset '.buildAttributes($attrs,true).'>';
+ if (!is_null($attrs['_legend'])) $s .= '<legend>'.$attrs['_legend'].'</legend>';
+ return $s;
+}
+
+/**
+ * form_closefieldset
+ *
+ * Print the HTML for a closing fieldset tag.
+ * There are no attributes.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_closefieldset() {
+ return '</fieldset>';
+}
+
+/**
+ * form_hidden
+ *
+ * Print the HTML for a hidden input element.
+ * Uses only 'name' and 'value' attributes.
+ * Value is passed to formText()
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_hidden($attrs) {
+ return '<input type="hidden" name="'.$attrs['name'].'" value="'.formText($attrs['value']).'" />';
+}
+
+/**
+ * form_wikitext
+ *
+ * Print the HTML for the wiki textarea.
+ * Requires '_text' with default text of the field.
+ * Text will be passed to formText(), attributes to buildAttributes()
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_wikitext($attrs) {
+ // mandatory attributes
+ unset($attrs['name']);
+ unset($attrs['id']);
+ return '<textarea name="wikitext" id="wiki__text" '
+ .buildAttributes($attrs,true).'>'.NL
+ .formText($attrs['_text'])
+ .'</textarea>';
+}
+
+/**
+ * form_button
+ *
+ * Print the HTML for a form button.
+ * If '_action' is set, the button name will be "do[_action]".
+ * Other attributes are passed to buildAttributes()
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_button($attrs) {
+ $p = (!empty($attrs['_action'])) ? 'name="do['.$attrs['_action'].']" ' : '';
+ return '<input '.$p.buildAttributes($attrs,true).'/>';
+}
+
+/**
+ * form_field
+ *
+ * Print the HTML for a form input field.
+ * _class : class attribute used on the label tag
+ * _text : Text to display before the input. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_field($attrs) {
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><span>'.$attrs['_text'].'</span>';
+ $s .= ' <input '.buildAttributes($attrs,true).'/></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_fieldright
+ *
+ * Print the HTML for a form input field. (right-aligned)
+ * _class : class attribute used on the label tag
+ * _text : Text to display after the input. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_fieldright($attrs) {
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><input '.buildAttributes($attrs,true).'/>';
+ $s .= ' <span>'.$attrs['_text'].'</span></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_textfield
+ *
+ * Print the HTML for a text input field.
+ * _class : class attribute used on the label tag
+ * _text : Text to display before the input. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_textfield($attrs) {
+ // mandatory attributes
+ unset($attrs['type']);
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><span>'.$attrs['_text'].'</span> ';
+ $s .= '<input type="text" '.buildAttributes($attrs,true).'/></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_passwordfield
+ *
+ * Print the HTML for a password input field.
+ * _class : class attribute used on the label tag
+ * _text : Text to display before the input. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_passwordfield($attrs) {
+ // mandatory attributes
+ unset($attrs['type']);
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><span>'.$attrs['_text'].'</span> ';
+ $s .= '<input type="password" '.buildAttributes($attrs,true).'/></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_filefield
+ *
+ * Print the HTML for a file input field.
+ * _class : class attribute used on the label tag
+ * _text : Text to display before the input. Not escaped
+ * _maxlength : Allowed size in byte
+ * _accept : Accepted mime-type
+ * Other attributes are passed to buildAttributes() for the input tag
+ *
+ * @author Michael Klier <chi at chimeric.de>
+ */
+function form_filefield($attrs) {
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><span>'.$attrs['_text'].'</span> ';
+ $s .= '<input type="file" '.buildAttributes($attrs,true);
+ if (!empty($attrs['_maxlength'])) $s .= ' maxlength="'.$attrs['_maxlength'].'"';
+ if (!empty($attrs['_accept'])) $s .= ' accept="'.$attrs['_accept'].'"';
+ $s .= '/></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_checkboxfield
+ *
+ * Print the HTML for a checkbox input field.
+ * _class : class attribute used on the label tag
+ * _text : Text to display after the input. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_checkboxfield($attrs) {
+ // mandatory attributes
+ unset($attrs['type']);
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><input type="checkbox" '.buildAttributes($attrs,true).'/>';
+ $s .= ' <span>'.$attrs['_text'].'</span></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_radiofield
+ *
+ * Print the HTML for a radio button input field.
+ * _class : class attribute used on the label tag
+ * _text : Text to display after the input. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_radiofield($attrs) {
+ // mandatory attributes
+ unset($attrs['type']);
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><input type="radio" '.buildAttributes($attrs,true).'/>';
+ $s .= ' <span>'.$attrs['_text'].'</span></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_menufield
+ *
+ * Print the HTML for a drop-down menu.
+ * _options : Array of (value,text,selected) for the menu.
+ * Text can be omitted. Text and value are passed to formText()
+ * Only one item can be selected.
+ * _class : class attribute used on the label tag
+ * _text : Text to display before the menu. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_menufield($attrs) {
+ $attrs['size'] = '1';
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><span>'.$attrs['_text'].'</span>';
+ $s .= ' <select '.buildAttributes($attrs,true).'>'.NL;
+ if (!empty($attrs['_options'])) {
+ $selected = false;
+ for($n=0;$n<count($attrs['_options']);$n++){
+ @list($value,$text,$select) = $attrs['_options'][$n];
+ $p = '';
+ if (!is_null($text))
+ $p .= ' value="'.formText($value).'"';
+ else
+ $text = $value;
+ if (!empty($select) && !$selected) {
+ $p .= ' selected="selected"';
+ $selected = true;
+ }
+ $s .= '<option'.$p.'>'.formText($text).'</option>';
+ }
+ } else {
+ $s .= '<option></option>';
+ }
+ $s .= NL.'</select></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
+
+/**
+ * form_listboxfield
+ *
+ * Print the HTML for a list box.
+ * _options : Array of (value,text,selected) for the list.
+ * Text can be omitted. Text and value are passed to formText()
+ * _class : class attribute used on the label tag
+ * _text : Text to display before the menu. Not escaped.
+ * Other attributes are passed to buildAttributes() for the input tag.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function form_listboxfield($attrs) {
+ $s = '<label class="'.$attrs['_class'].'"';
+ if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"';
+ $s .= '><span>'.$attrs['_text'].'</span> ';
+ $s .= '<select '.buildAttributes($attrs,true).'>'.NL;
+ if (!empty($attrs['_options'])) {
+ foreach ($attrs['_options'] as $opt) {
+ @list($value,$text,$select) = $opt;
+ $p = '';
+ if (!is_null($text))
+ $p .= ' value="'.formText($value).'"';
+ else
+ $text = $value;
+ if (!empty($select)) $p .= ' selected="selected"';
+ $s .= '<option'.$p.'>'.formText($text).'</option>';
+ }
+ } else {
+ $s .= '<option></option>';
+ }
+ $s .= NL.'</select></label>';
+ if (preg_match('/(^| )block($| )/', $attrs['_class']))
+ $s .= '<br />';
+ return $s;
+}
Modified: site/trunk/www-root/wiki/inc/fulltext.php
===================================================================
--- site/trunk/www-root/wiki/inc/fulltext.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/fulltext.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,405 +1,405 @@
-<?php
-/**
- * DokuWiki fulltextsearch functions using the index
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_INC.'inc/indexer.php');
-
-
-/**
- * The fulltext search
- *
- * Returns a list of matching documents for the given query
- *
- */
-function ft_pageSearch($query,&$highlight){
- $q = ft_queryParser($query);
-
- $highlight = array();
-
- // remember for hilighting later
- foreach($q['words'] as $wrd){
- $highlight[] = str_replace('*','',$wrd);
- }
-
- // lookup all words found in the query
- $words = array_merge($q['and'],$q['not']);
- if(!count($words)) return array();
- $result = idx_lookup($words);
- if(!count($result)) return array();
-
- // merge search results with query
- foreach($q['and'] as $pos => $w){
- $q['and'][$pos] = $result[$w];
- }
- // create a list of unwanted docs
- $not = array();
- foreach($q['not'] as $pos => $w){
- $not = array_merge($not,array_keys($result[$w]));
- }
-
- // combine and-words
- if(count($q['and']) > 1){
- $docs = ft_resultCombine($q['and']);
- }else{
- $docs = $q['and'][0];
- }
- if(!count($docs)) return array();
-
- // create a list of hidden pages in the result
- $hidden = array();
- $hidden = array_filter(array_keys($docs),'isHiddenPage');
- $not = array_merge($not,$hidden);
-
- // filter unmatched namespaces
- if(!empty($q['ns'])) {
- $pattern = implode('|^',$q['ns']);
- foreach($docs as $key => $val) {
- if(!preg_match('/^'.$pattern.'/',$key)) {
- unset($docs[$key]);
- }
- }
- }
-
- // remove negative matches
- foreach($not as $n){
- unset($docs[$n]);
- }
-
- if(!count($docs)) return array();
- // handle phrases
- if(count($q['phrases'])){
- $q['phrases'] = array_map('utf8_strtolower',$q['phrases']);
- // use this for higlighting later:
- $highlight = array_merge($highlight,$q['phrases']);
- $q['phrases'] = array_map('preg_quote_cb',$q['phrases']);
- // check the source of all documents for the exact phrases
- foreach(array_keys($docs) as $id){
- $text = utf8_strtolower(rawWiki($id));
- foreach($q['phrases'] as $phrase){
- if(!preg_match('/'.$phrase.'/usi',$text)){
- unset($docs[$id]); // no hit - remove
- break;
- }
- }
- }
- }
-
- if(!count($docs)) return array();
-
- // check ACL permissions
- foreach(array_keys($docs) as $doc){
- if(auth_quickaclcheck($doc) < AUTH_READ){
- unset($docs[$doc]);
- }
- }
-
- if(!count($docs)) return array();
-
- // if there are any hits left, sort them by count
- arsort($docs);
-
- return $docs;
-}
-
-/**
- * Returns the backlinks for a given page
- *
- * Does a quick lookup with the fulltext index, then
- * evaluates the instructions of the found pages
- */
-function ft_backlinks($id){
- global $conf;
- $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
- $stopwords = @file_exists($swfile) ? file($swfile) : array();
-
- $result = array();
-
- // quick lookup of the pagename
- $page = noNS($id);
- $matches = idx_lookup(idx_tokenizer($page,$stopwords)); // pagename may contain specials (_ or .)
- $docs = array_keys(ft_resultCombine(array_values($matches)));
- $docs = array_filter($docs,'isVisiblePage'); // discard hidden pages
- if(!count($docs)) return $result;
- require_once(DOKU_INC.'inc/parserutils.php');
-
- // check metadata for matching links
- foreach($docs as $match){
- // metadata relation reference links are already resolved
- $links = p_get_metadata($match,'relation references');
- if (isset($links[$id])) $result[] = $match;
- }
-
- if(!count($result)) return $result;
-
- // check ACL permissions
- foreach(array_keys($result) as $idx){
- if(auth_quickaclcheck($result[$idx]) < AUTH_READ){
- unset($result[$idx]);
- }
- }
-
- sort($result);
- return $result;
-}
-
-/**
- * Returns the pages that use a given media file
- *
- * Does a quick lookup with the fulltext index, then
- * evaluates the instructions of the found pages
- *
- * Aborts after $max found results
- */
-function ft_mediause($id,$max){
- global $conf;
- $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
- $stopwords = @file_exists($swfile) ? file($swfile) : array();
-
- if(!$max) $max = 1; // need to find at least one
-
- $result = array();
-
- // quick lookup of the mediafile
- $media = noNS($id);
- $matches = idx_lookup(idx_tokenizer($media,$stopwords));
- $docs = array_keys(ft_resultCombine(array_values($matches)));
- if(!count($docs)) return $result;
-
- // go through all found pages
- $found = 0;
- $pcre = preg_quote($media,'/');
- foreach($docs as $doc){
- $ns = getNS($doc);
- preg_match_all('/\{\{([^|}]*'.$pcre.'[^|}]*)(|[^}]+)?\}\}/i',rawWiki($doc),$matches);
- foreach($matches[1] as $img){
- $img = trim($img);
- if(preg_match('/^https?:\/\//i',$img)) continue; // skip external images
- list($img) = explode('?',$img); // remove any parameters
- resolve_mediaid($ns,$img,$exists); // resolve the possibly relative img
-
- if($img == $id){ // we have a match
- $result[] = $doc;
- $found++;
- break;
- }
- }
- if($found >= $max) break;
- }
-
- sort($result);
- return $result;
-}
-
-
-
-/**
- * Quicksearch for pagenames
- *
- * By default it only matches the pagename and ignores the
- * namespace. This can be changed with the second parameter
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ft_pageLookup($id,$pageonly=true){
- global $conf;
- $id = preg_quote($id,'/');
- $pages = file($conf['indexdir'].'/page.idx');
- if($id) $pages = array_values(preg_grep('/'.$id.'/',$pages));
-
- $cnt = count($pages);
- for($i=0; $i<$cnt; $i++){
- if($pageonly){
- if(!preg_match('/'.$id.'/',noNS($pages[$i]))){
- unset($pages[$i]);
- continue;
- }
- }
- if(!page_exists($pages[$i])){
- unset($pages[$i]);
- continue;
- }
- }
-
- $pages = array_filter($pages,'isVisiblePage'); // discard hidden pages
- if(!count($pages)) return array();
-
- // check ACL permissions
- foreach(array_keys($pages) as $idx){
- if(auth_quickaclcheck($pages[$idx]) < AUTH_READ){
- unset($pages[$idx]);
- }
- }
-
- $pages = array_map('trim',$pages);
- sort($pages);
- return $pages;
-}
-
-/**
- * Creates a snippet extract
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ft_snippet($id,$highlight){
- $text = rawWiki($id);
- $match = array();
- $snippets = array();
- $utf8_offset = $offset = $end = 0;
- $len = utf8_strlen($text);
-
- // build a regexp from the phrases to highlight
- $re = join('|',array_map('preg_quote_cb',array_filter((array) $highlight)));
-
- for ($cnt=3; $cnt--;) {
- if (!preg_match('#('.$re.')#iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) break;
-
- list($str,$idx) = $match[0];
-
- // convert $idx (a byte offset) into a utf8 character offset
- $utf8_idx = utf8_strlen(substr($text,0,$idx));
- $utf8_len = utf8_strlen($str);
-
- // establish context, 100 bytes surrounding the match string
- // first look to see if we can go 100 either side,
- // then drop to 50 adding any excess if the other side can't go to 50,
- $pre = min($utf8_idx-$utf8_offset,100);
- $post = min($len-$utf8_idx-$utf8_len,100);
-
- if ($pre>50 && $post>50) {
- $pre = $post = 50;
- } else if ($pre>50) {
- $pre = min($pre,100-$post);
- } else if ($post>50) {
- $post = min($post, 100-$pre);
- } else {
- // both are less than 50, means the context is the whole string
- // make it so and break out of this loop - there is no need for the
- // complex snippet calculations
- $snippets = array($text);
- break;
- }
-
- // establish context start and end points, try to append to previous
- // context if possible
- $start = $utf8_idx - $pre;
- $append = ($start < $end) ? $end : false; // still the end of the previous context snippet
- $end = $utf8_idx + $utf8_len + $post; // now set it to the end of this context
-
- if ($append) {
- $snippets[count($snippets)-1] .= utf8_substr($text,$append,$end-$append);
- } else {
- $snippets[] = utf8_substr($text,$start,$end-$start);
- }
-
- // set $offset for next match attempt
- // substract strlen to avoid splitting a potential search success,
- // this is an approximation as the search pattern may match strings
- // of varying length and it will fail if the context snippet
- // boundary breaks a matching string longer than the current match
- $utf8_offset = $utf8_idx + $post;
- $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$post));
- $offset = utf8_correctIdx($text,$offset);
- }
-
- $m = "\1";
- $snippets = preg_replace('#('.$re.')#iu',$m.'$1'.$m,$snippets);
- $snippet = preg_replace('#'.$m.'([^'.$m.']*?)'.$m.'#iu','<strong class="search_hit">$1</strong>',hsc(join('... ',$snippets)));
-
- return $snippet;
-}
-
-/**
- * Combine found documents and sum up their scores
- *
- * This function is used to combine searched words with a logical
- * AND. Only documents available in all arrays are returned.
- *
- * based upon PEAR's PHP_Compat function for array_intersect_key()
- *
- * @param array $args An array of page arrays
- */
-function ft_resultCombine($args){
- $array_count = count($args);
- if($array_count == 1){
- return $args[0];
- }
-
- $result = array();
- if ($array_count > 1) {
- foreach ($args[0] as $key => $value) {
- $result[$key] = $value;
- for ($i = 1; $i !== $array_count; $i++) {
- if (!isset($args[$i][$key])) {
- unset($result[$key]);
- break;
- }
- $result[$key] += $args[$i][$key];
- }
- }
- }
- return $result;
-}
-
-/**
- * Builds an array of search words from a query
- *
- * @todo support OR and parenthesises?
- */
-function ft_queryParser($query){
- global $conf;
- $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
- if(@file_exists($swfile)){
- $stopwords = file($swfile);
- }else{
- $stopwords = array();
- }
-
- $q = array();
- $q['query'] = $query;
- $q['ns'] = array();
- $q['phrases'] = array();
- $q['words'] = array();
- $q['and'] = array();
- $q['not'] = array();
-
- // strip namespace from query
- if(preg_match('/([^@]*)@(.*)/',$query,$match)) {
- $query = $match[1];
- $q['ns'] = explode('@',preg_replace("/ /",'',$match[2]));
- }
-
- // handle phrase searches
- while(preg_match('/"(.*?)"/',$query,$match)){
- $q['phrases'][] = $match[1];
- $q['and'] = array_merge($q['and'], idx_tokenizer($match[0],$stopwords));
- $query = preg_replace('/"(.*?)"/','',$query,1);
- }
-
- $words = explode(' ',$query);
- foreach($words as $w){
- if($w{0} == '-'){
- $token = idx_tokenizer($w,$stopwords,true);
- if(count($token)) $q['not'] = array_merge($q['not'],$token);
- }else{
- // asian "words" need to be searched as phrases
- if(@preg_match_all('/(('.IDX_ASIAN.')+)/u',$w,$matches)){
- $q['phrases'] = array_merge($q['phrases'],$matches[1]);
-
- }
- $token = idx_tokenizer($w,$stopwords,true);
- if(count($token)){
- $q['and'] = array_merge($q['and'],$token);
- $q['words'] = array_merge($q['words'],$token);
- }
- }
- }
-
- return $q;
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * DokuWiki fulltextsearch functions using the index
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_INC.'inc/indexer.php');
+
+
+/**
+ * The fulltext search
+ *
+ * Returns a list of matching documents for the given query
+ *
+ */
+function ft_pageSearch($query,&$highlight){
+ $q = ft_queryParser($query);
+
+ $highlight = array();
+
+ // remember for hilighting later
+ foreach($q['words'] as $wrd){
+ $highlight[] = str_replace('*','',$wrd);
+ }
+
+ // lookup all words found in the query
+ $words = array_merge($q['and'],$q['not']);
+ if(!count($words)) return array();
+ $result = idx_lookup($words);
+ if(!count($result)) return array();
+
+ // merge search results with query
+ foreach($q['and'] as $pos => $w){
+ $q['and'][$pos] = $result[$w];
+ }
+ // create a list of unwanted docs
+ $not = array();
+ foreach($q['not'] as $pos => $w){
+ $not = array_merge($not,array_keys($result[$w]));
+ }
+
+ // combine and-words
+ if(count($q['and']) > 1){
+ $docs = ft_resultCombine($q['and']);
+ }else{
+ $docs = $q['and'][0];
+ }
+ if(!count($docs)) return array();
+
+ // create a list of hidden pages in the result
+ $hidden = array();
+ $hidden = array_filter(array_keys($docs),'isHiddenPage');
+ $not = array_merge($not,$hidden);
+
+ // filter unmatched namespaces
+ if(!empty($q['ns'])) {
+ $pattern = implode('|^',$q['ns']);
+ foreach($docs as $key => $val) {
+ if(!preg_match('/^'.$pattern.'/',$key)) {
+ unset($docs[$key]);
+ }
+ }
+ }
+
+ // remove negative matches
+ foreach($not as $n){
+ unset($docs[$n]);
+ }
+
+ if(!count($docs)) return array();
+ // handle phrases
+ if(count($q['phrases'])){
+ $q['phrases'] = array_map('utf8_strtolower',$q['phrases']);
+ // use this for higlighting later:
+ $highlight = array_merge($highlight,$q['phrases']);
+ $q['phrases'] = array_map('preg_quote_cb',$q['phrases']);
+ // check the source of all documents for the exact phrases
+ foreach(array_keys($docs) as $id){
+ $text = utf8_strtolower(rawWiki($id));
+ foreach($q['phrases'] as $phrase){
+ if(!preg_match('/'.$phrase.'/usi',$text)){
+ unset($docs[$id]); // no hit - remove
+ break;
+ }
+ }
+ }
+ }
+
+ if(!count($docs)) return array();
+
+ // check ACL permissions
+ foreach(array_keys($docs) as $doc){
+ if(auth_quickaclcheck($doc) < AUTH_READ){
+ unset($docs[$doc]);
+ }
+ }
+
+ if(!count($docs)) return array();
+
+ // if there are any hits left, sort them by count
+ arsort($docs);
+
+ return $docs;
+}
+
+/**
+ * Returns the backlinks for a given page
+ *
+ * Does a quick lookup with the fulltext index, then
+ * evaluates the instructions of the found pages
+ */
+function ft_backlinks($id){
+ global $conf;
+ $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
+ $stopwords = @file_exists($swfile) ? file($swfile) : array();
+
+ $result = array();
+
+ // quick lookup of the pagename
+ $page = noNS($id);
+ $matches = idx_lookup(idx_tokenizer($page,$stopwords)); // pagename may contain specials (_ or .)
+ $docs = array_keys(ft_resultCombine(array_values($matches)));
+ $docs = array_filter($docs,'isVisiblePage'); // discard hidden pages
+ if(!count($docs)) return $result;
+ require_once(DOKU_INC.'inc/parserutils.php');
+
+ // check metadata for matching links
+ foreach($docs as $match){
+ // metadata relation reference links are already resolved
+ $links = p_get_metadata($match,'relation references');
+ if (isset($links[$id])) $result[] = $match;
+ }
+
+ if(!count($result)) return $result;
+
+ // check ACL permissions
+ foreach(array_keys($result) as $idx){
+ if(auth_quickaclcheck($result[$idx]) < AUTH_READ){
+ unset($result[$idx]);
+ }
+ }
+
+ sort($result);
+ return $result;
+}
+
+/**
+ * Returns the pages that use a given media file
+ *
+ * Does a quick lookup with the fulltext index, then
+ * evaluates the instructions of the found pages
+ *
+ * Aborts after $max found results
+ */
+function ft_mediause($id,$max){
+ global $conf;
+ $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
+ $stopwords = @file_exists($swfile) ? file($swfile) : array();
+
+ if(!$max) $max = 1; // need to find at least one
+
+ $result = array();
+
+ // quick lookup of the mediafile
+ $media = noNS($id);
+ $matches = idx_lookup(idx_tokenizer($media,$stopwords));
+ $docs = array_keys(ft_resultCombine(array_values($matches)));
+ if(!count($docs)) return $result;
+
+ // go through all found pages
+ $found = 0;
+ $pcre = preg_quote($media,'/');
+ foreach($docs as $doc){
+ $ns = getNS($doc);
+ preg_match_all('/\{\{([^|}]*'.$pcre.'[^|}]*)(|[^}]+)?\}\}/i',rawWiki($doc),$matches);
+ foreach($matches[1] as $img){
+ $img = trim($img);
+ if(preg_match('/^https?:\/\//i',$img)) continue; // skip external images
+ list($img) = explode('?',$img); // remove any parameters
+ resolve_mediaid($ns,$img,$exists); // resolve the possibly relative img
+
+ if($img == $id){ // we have a match
+ $result[] = $doc;
+ $found++;
+ break;
+ }
+ }
+ if($found >= $max) break;
+ }
+
+ sort($result);
+ return $result;
+}
+
+
+
+/**
+ * Quicksearch for pagenames
+ *
+ * By default it only matches the pagename and ignores the
+ * namespace. This can be changed with the second parameter
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ft_pageLookup($id,$pageonly=true){
+ global $conf;
+ $id = preg_quote($id,'/');
+ $pages = file($conf['indexdir'].'/page.idx');
+ if($id) $pages = array_values(preg_grep('/'.$id.'/',$pages));
+
+ $cnt = count($pages);
+ for($i=0; $i<$cnt; $i++){
+ if($pageonly){
+ if(!preg_match('/'.$id.'/',noNS($pages[$i]))){
+ unset($pages[$i]);
+ continue;
+ }
+ }
+ if(!page_exists($pages[$i])){
+ unset($pages[$i]);
+ continue;
+ }
+ }
+
+ $pages = array_filter($pages,'isVisiblePage'); // discard hidden pages
+ if(!count($pages)) return array();
+
+ // check ACL permissions
+ foreach(array_keys($pages) as $idx){
+ if(auth_quickaclcheck($pages[$idx]) < AUTH_READ){
+ unset($pages[$idx]);
+ }
+ }
+
+ $pages = array_map('trim',$pages);
+ sort($pages);
+ return $pages;
+}
+
+/**
+ * Creates a snippet extract
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ft_snippet($id,$highlight){
+ $text = rawWiki($id);
+ $match = array();
+ $snippets = array();
+ $utf8_offset = $offset = $end = 0;
+ $len = utf8_strlen($text);
+
+ // build a regexp from the phrases to highlight
+ $re = join('|',array_map('preg_quote_cb',array_filter((array) $highlight)));
+
+ for ($cnt=3; $cnt--;) {
+ if (!preg_match('#('.$re.')#iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) break;
+
+ list($str,$idx) = $match[0];
+
+ // convert $idx (a byte offset) into a utf8 character offset
+ $utf8_idx = utf8_strlen(substr($text,0,$idx));
+ $utf8_len = utf8_strlen($str);
+
+ // establish context, 100 bytes surrounding the match string
+ // first look to see if we can go 100 either side,
+ // then drop to 50 adding any excess if the other side can't go to 50,
+ $pre = min($utf8_idx-$utf8_offset,100);
+ $post = min($len-$utf8_idx-$utf8_len,100);
+
+ if ($pre>50 && $post>50) {
+ $pre = $post = 50;
+ } else if ($pre>50) {
+ $pre = min($pre,100-$post);
+ } else if ($post>50) {
+ $post = min($post, 100-$pre);
+ } else {
+ // both are less than 50, means the context is the whole string
+ // make it so and break out of this loop - there is no need for the
+ // complex snippet calculations
+ $snippets = array($text);
+ break;
+ }
+
+ // establish context start and end points, try to append to previous
+ // context if possible
+ $start = $utf8_idx - $pre;
+ $append = ($start < $end) ? $end : false; // still the end of the previous context snippet
+ $end = $utf8_idx + $utf8_len + $post; // now set it to the end of this context
+
+ if ($append) {
+ $snippets[count($snippets)-1] .= utf8_substr($text,$append,$end-$append);
+ } else {
+ $snippets[] = utf8_substr($text,$start,$end-$start);
+ }
+
+ // set $offset for next match attempt
+ // substract strlen to avoid splitting a potential search success,
+ // this is an approximation as the search pattern may match strings
+ // of varying length and it will fail if the context snippet
+ // boundary breaks a matching string longer than the current match
+ $utf8_offset = $utf8_idx + $post;
+ $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$post));
+ $offset = utf8_correctIdx($text,$offset);
+ }
+
+ $m = "\1";
+ $snippets = preg_replace('#('.$re.')#iu',$m.'$1'.$m,$snippets);
+ $snippet = preg_replace('#'.$m.'([^'.$m.']*?)'.$m.'#iu','<strong class="search_hit">$1</strong>',hsc(join('... ',$snippets)));
+
+ return $snippet;
+}
+
+/**
+ * Combine found documents and sum up their scores
+ *
+ * This function is used to combine searched words with a logical
+ * AND. Only documents available in all arrays are returned.
+ *
+ * based upon PEAR's PHP_Compat function for array_intersect_key()
+ *
+ * @param array $args An array of page arrays
+ */
+function ft_resultCombine($args){
+ $array_count = count($args);
+ if($array_count == 1){
+ return $args[0];
+ }
+
+ $result = array();
+ if ($array_count > 1) {
+ foreach ($args[0] as $key => $value) {
+ $result[$key] = $value;
+ for ($i = 1; $i !== $array_count; $i++) {
+ if (!isset($args[$i][$key])) {
+ unset($result[$key]);
+ break;
+ }
+ $result[$key] += $args[$i][$key];
+ }
+ }
+ }
+ return $result;
+}
+
+/**
+ * Builds an array of search words from a query
+ *
+ * @todo support OR and parenthesises?
+ */
+function ft_queryParser($query){
+ global $conf;
+ $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
+ if(@file_exists($swfile)){
+ $stopwords = file($swfile);
+ }else{
+ $stopwords = array();
+ }
+
+ $q = array();
+ $q['query'] = $query;
+ $q['ns'] = array();
+ $q['phrases'] = array();
+ $q['words'] = array();
+ $q['and'] = array();
+ $q['not'] = array();
+
+ // strip namespace from query
+ if(preg_match('/([^@]*)@(.*)/',$query,$match)) {
+ $query = $match[1];
+ $q['ns'] = explode('@',preg_replace("/ /",'',$match[2]));
+ }
+
+ // handle phrase searches
+ while(preg_match('/"(.*?)"/',$query,$match)){
+ $q['phrases'][] = $match[1];
+ $q['and'] = array_merge($q['and'], idx_tokenizer($match[0],$stopwords));
+ $query = preg_replace('/"(.*?)"/','',$query,1);
+ }
+
+ $words = explode(' ',$query);
+ foreach($words as $w){
+ if($w{0} == '-'){
+ $token = idx_tokenizer($w,$stopwords,true);
+ if(count($token)) $q['not'] = array_merge($q['not'],$token);
+ }else{
+ // asian "words" need to be searched as phrases
+ if(@preg_match_all('/(('.IDX_ASIAN.')+)/u',$w,$matches)){
+ $q['phrases'] = array_merge($q['phrases'],$matches[1]);
+
+ }
+ $token = idx_tokenizer($w,$stopwords,true);
+ if(count($token)){
+ $q['and'] = array_merge($q['and'],$token);
+ $q['words'] = array_merge($q['words'],$token);
+ }
+ }
+ }
+
+ return $q;
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/geshi/abap.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/abap.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/abap.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,136 +1,136 @@
-<?php
-/*************************************************************************************
- * abap.php
- * --------
- * Author: Andres Picazo (andres at andrespicazo.com)
- * Copyright: (c) 2007 Andres Picazo
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * ABAP language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2007/06/27 (1.0.0)
- * - First Release
- *
- * TODO
- * ----
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'ABAP',
- 'COMMENT_SINGLE' => array(1 => '"', 2 => '*'),
- 'CASE_KEYWORDS' => 0,
- 'QUOTEMARKS' => array("'"),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'if', 'return', 'while', 'case', 'default',
- 'do', 'else', 'for', 'endif', 'elseif', 'eq',
- 'not', 'and'
- ),
- 2 => array(
- 'data', 'types', 'seletion-screen', 'parameters', 'field-symbols', 'extern', 'inline'
- ),
- 3 => array(
- 'report', 'write', 'append', 'select', 'endselect', 'call method', 'call function',
- 'loop', 'endloop', 'raise', 'read table', 'concatenate', 'split', 'shift',
- 'condense', 'describe', 'clear', 'endfunction', 'assign', 'create data', 'translate',
- 'continue', 'start-of-selection', 'at selection-screen', 'modify', 'call screen',
- 'create object', 'perform', 'form', 'endform',
- 'reuse_alv_block_list_init', 'zbcialv', 'include'
- ),
- 4 => array(
- 'type ref to', 'type', 'begin of', 'end of', 'like', 'into',
- 'from', 'where', 'order by', 'with key', 'into', 'string', 'separated by',
- 'exporting', 'importing', 'to upper case', 'to', 'exceptions', 'tables',
- 'using', 'changing'
- ),
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #339933;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #202020;',
- 2 => 'color: #202020;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://sap4.com/wiki/index.php?title={FNAME}',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * abap.php
+ * --------
+ * Author: Andres Picazo (andres at andrespicazo.com)
+ * Copyright: (c) 2007 Andres Picazo
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * ABAP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2007/06/27 (1.0.0)
+ * - First Release
+ *
+ * TODO
+ * ----
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'ABAP',
+ 'COMMENT_SINGLE' => array(1 => '"', 2 => '*'),
+ 'CASE_KEYWORDS' => 0,
+ 'QUOTEMARKS' => array("'"),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'if', 'return', 'while', 'case', 'default',
+ 'do', 'else', 'for', 'endif', 'elseif', 'eq',
+ 'not', 'and'
+ ),
+ 2 => array(
+ 'data', 'types', 'seletion-screen', 'parameters', 'field-symbols', 'extern', 'inline'
+ ),
+ 3 => array(
+ 'report', 'write', 'append', 'select', 'endselect', 'call method', 'call function',
+ 'loop', 'endloop', 'raise', 'read table', 'concatenate', 'split', 'shift',
+ 'condense', 'describe', 'clear', 'endfunction', 'assign', 'create data', 'translate',
+ 'continue', 'start-of-selection', 'at selection-screen', 'modify', 'call screen',
+ 'create object', 'perform', 'form', 'endform',
+ 'reuse_alv_block_list_init', 'zbcialv', 'include'
+ ),
+ 4 => array(
+ 'type ref to', 'type', 'begin of', 'end of', 'like', 'into',
+ 'from', 'where', 'order by', 'with key', 'into', 'string', 'separated by',
+ 'exporting', 'importing', 'to upper case', 'to', 'exceptions', 'tables',
+ 'using', 'changing'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #339933;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #202020;',
+ 2 => 'color: #202020;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://sap4.com/wiki/index.php?title={FNAME}',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/actionscript-french.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/actionscript-french.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/actionscript-french.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,957 +1,957 @@
-<?php
-/*************************************************************************************
- * actionscript.php
- * ----------------
- * Author: Steffen Krause (Steffen.krause at muse.de)
- * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.9
- * CVS Revision Version: $Revision: 1.9 $
- * Date Started: 2004/06/20
- * Last Modified: $Date: 2006/04/23 01:14:41 $
- *
- * Actionscript language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/25 (1.0.2)
- * Author [ NikO ] - http://niko.informatif.org
- * - add full link for myInstance.methods to http://wiki.media-box.net/documentation/flash
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Actionscript',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- '#include',
- 'for',
- 'foreach',
- 'if',
- 'elseif',
- 'else',
- 'while',
- 'do',
- 'dowhile',
- 'endwhile',
- 'endif',
- 'switch',
- 'case',
- 'endswitch',
- 'break',
- 'continue',
- 'in',
- 'null',
- 'false',
- 'true',
- 'var',
- 'default',
- 'new',
- '_global',
- 'undefined',
- 'super'
- ),
- 2 => array(
- 'static',
- 'private',
- 'public',
- 'class',
- 'extends',
- 'implements',
- 'import',
- 'return',
- 'trace',
- '_quality',
- '_root',
- 'set',
- 'setInterval',
- 'setProperty',
- 'stopAllSounds',
- 'targetPath',
- 'this',
- 'typeof',
- 'unescape',
- 'updateAfterEvent'
- ),
- 3 => array (
- 'Accessibility',
- 'Array',
- 'Boolean',
- 'Button',
- 'Camera',
- 'Color',
- 'ContextMenuItem',
- 'ContextMenu',
- 'Cookie',
- 'Date',
- 'Error',
- 'function',
- 'FWEndCommand',
- 'FWJavascript',
- 'Key',
- 'LoadMovieNum',
- 'LoadMovie',
- 'LoadVariablesNum',
- 'LoadVariables',
- 'LoadVars',
- 'LocalConnection',
- 'Math',
- 'Microphone',
- 'MMExecute',
- 'MMEndCommand',
- 'MMSave',
- 'Mouse',
- 'MovieClipLoader',
- 'MovieClip',
- 'NetConnexion',
- 'NetStream',
- 'Number',
- 'Object',
- 'printAsBitmapNum',
- 'printNum',
- 'printAsBitmap',
- 'printJob',
- 'print',
- 'Selection',
- 'SharedObject',
- 'Sound',
- 'Stage',
- 'String',
- 'System',
- 'TextField',
- 'TextFormat',
- 'Tween',
- 'Video',
- 'XMLUI',
- 'XMLNode',
- 'XMLSocket',
- 'XML'
- ),
- 4 => array (
- 'isactive',
- 'updateProperties'
- ),
- 5 => array (
- 'callee',
- 'caller',
- ),
- 6 => array (
- 'concat',
- 'join',
- 'pop',
- 'push',
- 'reverse',
- 'shift',
- 'slice',
- 'sort',
- 'sortOn',
- 'splice',
- 'toString',
- 'unshift'
- ),
- 7 => array (
- 'valueOf'
- ),
- 8 => array (
- 'onDragOut',
- 'onDragOver',
- 'onKeyUp',
- 'onKillFocus',
- 'onPress',
- 'onRelease',
- 'onReleaseOutside',
- 'onRollOut',
- 'onRollOver',
- 'onSetFocus'
- ),
- 9 => array (
- 'setMode',
- 'setMotionLevel',
- 'setQuality',
- 'activityLevel',
- 'bandwidth',
- 'currentFps',
- 'fps',
- 'index',
- 'motionLevel',
- 'motionTimeOut',
- 'muted',
- 'names',
- 'quality',
- 'onActivity',
- 'onStatus'
- ),
- 10 => array (
- 'getRGB',
- 'setRGB',
- 'getTransform',
- 'setTransform'
- ),
- 11 => array (
- 'caption',
- 'enabled',
- 'separatorBefore',
- 'visible',
- 'onSelect'
- ),
- 12 => array (
- 'setCookie',
- 'getcookie'
- ),
- 13 => array (
- 'hideBuiltInItems',
- 'builtInItems',
- 'customItems',
- 'onSelect'
- ),
- 14 => array (
- 'CustomActions.get',
- 'CustomActions.install',
- 'CustomActions.list',
- 'CustomActions.uninstall',
- ),
- 15 => array (
- 'getDate',
- 'getDay',
- 'getFullYear',
- 'getHours',
- 'getMilliseconds',
- 'getMinutes',
- 'getMonth',
- 'getSeconds',
- 'getTime',
- 'getTimezoneOffset',
- 'getUTCDate',
- 'getUTCDay',
- 'getUTCFullYear',
- 'getUTCHours',
- 'getUTCMinutes',
- 'getUTCMilliseconds',
- 'getUTCMonth',
- 'getUTCSeconds',
- 'getYear',
- 'setDate',
- 'setFullYear',
- 'setHours',
- 'setMilliseconds',
- 'setMinutes',
- 'setMonth',
- 'setSeconds',
- 'setTime',
- 'setUTCDate',
- 'setUTCDay',
- 'setUTCFullYear',
- 'setUTCHours',
- 'setUTCMinutes',
- 'setUTCMilliseconds',
- 'setUTCMonth',
- 'setUTCSeconds',
- 'setYear',
- 'UTC'
- ),
- 16 => array (
- 'message',
- 'name',
- 'throw',
- 'try',
- 'catch',
- 'finally'
- ),
- 17 => array (
- 'apply',
- 'call'
- ),
- 18 => array (
- 'BACKSPACE',
- 'CAPSLOCK',
- 'CONTROL',
- 'DELETEKEY',
- 'DOWN',
- 'END',
- 'ENTER',
- 'ESCAPE',
- 'getAscii',
- 'getCode',
- 'HOME',
- 'INSERT',
- 'isDown',
- 'isToggled',
- 'LEFT',
- 'onKeyDown',
- 'onKeyUp',
- 'PGDN',
- 'PGUP',
- 'RIGHT',
- 'SPACE',
- 'TAB',
- 'UP'
- ),
- 19 => array (
- 'addRequestHeader',
- 'contentType',
- 'decode'
- ),
- 20 => array (
- 'allowDomain',
- 'allowInsecureDomain',
- 'close',
- 'domain'
- ),
- 21 => array (
- 'abs',
- 'acos',
- 'asin',
- 'atan',
- 'atan2',
- 'ceil',
- 'cos',
- 'exp',
- 'floor',
- 'log',
- 'LN2',
- 'LN10',
- 'LOG2E',
- 'LOG10E',
- 'max',
- 'min',
- 'PI',
- 'pow',
- 'random',
- 'sin',
- 'SQRT1_2',
- 'sqrt',
- 'tan',
- 'round',
- 'SQRT2'
- ),
- 22 => array (
- 'activityLevel',
- 'muted',
- 'names',
- 'onActivity',
- 'onStatus',
- 'setRate',
- 'setGain',
- 'gain',
- 'rate',
- 'setSilenceLevel',
- 'setUseEchoSuppression',
- 'silenceLevel',
- 'silenceTimeOut',
- 'useEchoSuppression'
- ),
- 23 => array (
- 'hide',
- 'onMouseDown',
- 'onMouseMove',
- 'onMouseUp',
- 'onMouseWeel',
- 'show'
- ),
- 24 => array (
- '_alpha',
- 'attachAudio',
- 'attachMovie',
- 'beginFill',
- 'beginGradientFill',
- 'clear',
- 'createEmptyMovieClip',
- 'createTextField',
- '_current',
- 'curveTo',
- '_dropTarget',
- 'duplicateMovieClip',
- 'endFill',
- 'focusEnabled',
- 'enabled',
- '_focusrec',
- '_framesLoaded',
- 'getBounds',
- 'getBytesLoaded',
- 'getBytesTotal',
- 'getDepth',
- 'getInstanceAtDepth',
- 'getNextHighestDepth',
- 'getSWFVersion',
- 'getTextSnapshot',
- 'getURL',
- 'globalToLocal',
- 'gotoAndPlay',
- 'gotoAndStop',
- '_height',
- 'hitArea',
- 'hitTest',
- 'lineStyle',
- 'lineTo',
- 'localToGlobal',
- '_lockroot',
- 'menu',
- 'onUnload',
- '_parent',
- 'play',
- 'prevFrame',
- '_quality',
- 'removeMovieClip',
- '_rotation',
- 'setMask',
- '_soundbuftime',
- 'startDrag',
- 'stopDrag',
- 'stop',
- 'swapDepths',
- 'tabChildren',
- '_target',
- '_totalFrames',
- 'trackAsMenu',
- 'unloadMovie',
- 'useHandCursor',
- '_visible',
- '_width',
- '_xmouse',
- '_xscale',
- '_x',
- '_ymouse',
- '_yscale',
- '_y'
- ),
- 25 => array (
- 'getProgress',
- 'loadClip',
- 'onLoadComplete',
- 'onLoadError',
- 'onLoadInit',
- 'onLoadProgress',
- 'onLoadStart'
- ),
- 26 => array (
- 'bufferLength',
- 'currentFps',
- 'seek',
- 'setBufferTime',
- 'bufferTime',
- 'time',
- 'pause'
- ),
- 27 => array (
- 'MAX_VALUE',
- 'MIN_VALUE',
- 'NEGATIVE_INFINITY',
- 'POSITIVE_INFINITY'
- ),
- 28 => array (
- 'addProperty',
- 'constructor',
- '__proto__',
- 'registerClass',
- '__resolve',
- 'unwatch',
- 'watch',
- 'onUpDate'
- ),
- 29 => array (
- 'addPage'
- ),
- 30 => array (
- 'getBeginIndex',
- 'getCaretIndex',
- 'getEndIndex',
- 'setSelection'
- ),
- 31 => array (
- 'flush',
- 'getLocal',
- 'getSize'
- ),
- 32 => array (
- 'attachSound',
- 'duration',
- 'getPan',
- 'getVolume',
- 'onID3',
- 'loadSound',
- 'id3',
- 'onSoundComplete',
- 'position',
- 'setPan',
- 'setVolume'
- ),
- 33 => array (
- 'getBeginIndex',
- 'getCaretIndex',
- 'getEndIndex',
- 'setSelection'
- ),
- 34 => array (
- 'getEndIndex',
- ),
- 35 => array (
- 'align',
- 'height',
- 'width',
- 'onResize',
- 'scaleMode',
- 'showMenu'
- ),
- 36 => array (
- 'charAt',
- 'charCodeAt',
- 'concat',
- 'fromCharCode',
- 'indexOf',
- 'lastIndexOf',
- 'substr',
- 'substring',
- 'toLowerCase',
- 'toUpperCase'
- ),
- 37 => array (
- 'avHardwareDisable',
- 'hasAccessibility',
- 'hasAudioEncoder',
- 'hasAudio',
- 'hasEmbeddedVideo',
- 'hasMP3',
- 'hasPrinting',
- 'hasScreenBroadcast',
- 'hasScreenPlayback',
- 'hasStreamingAudio',
- 'hasStreamingVideo',
- 'hasVideoEncoder',
- 'isDebugger',
- 'language',
- 'localFileReadDisable',
- 'manufacturer',
- 'os',
- 'pixelAspectRatio',
- 'playerType',
- 'screenColor',
- 'screenDPI',
- 'screenResolutionX',
- 'screenResolutionY',
- 'serverString',
- 'version'
- ),
- 38 => array (
- 'allowDomain',
- 'allowInsecureDomain',
- 'loadPolicyFile'
- ),
- 39 => array (
- 'exactSettings',
- 'setClipboard',
- 'showSettings',
- 'useCodepage'
- ),
- 40 => array (
- 'getStyle',
- 'getStyleNames',
- 'parseCSS',
- 'setStyle',
- 'transform'
- ),
- 41 => array (
- 'autoSize',
- 'background',
- 'backgroundColor',
- 'border',
- 'borderColor',
- 'bottomScroll',
- 'condenseWhite',
- 'embedFonts',
- 'getFontList',
- 'getNewTextFormat',
- 'getTextFormat',
- 'hscroll',
- 'htmlText',
- 'html',
- 'maxChars',
- 'maxhscroll',
- 'maxscroll',
- 'mouseWheelEnabled',
- 'multiline',
- 'onScroller',
- 'password',
- 'removeTextField',
- 'replaceSel',
- 'replaceText',
- 'restrict',
- 'scroll',
- 'selectable',
- 'setNewTextFormat',
- 'setTextFormat',
- 'styleSheet',
- 'tabEnabled',
- 'tabIndex',
- 'textColor',
- 'textHeight',
- 'textWidth',
- 'text',
- 'type',
- '_url',
- 'variable',
- 'wordWrap'
- ),
- 42 => array (
- 'blockIndent',
- 'bold',
- 'bullet',
- 'font',
- 'getTextExtent',
- 'indent',
- 'italic',
- 'leading',
- 'leftMargin',
- 'rightMargin',
- 'size',
- 'tabStops',
- 'underline'
- ),
- 43 => array (
- 'findText',
- 'getCount',
- 'getSelected',
- 'getSelectedText',
- 'getText',
- 'hitTestTextNearPos',
- 'setSelectColor',
- 'setSelected'
- ),
- 44 => array (
- 'begin',
- 'change',
- 'continueTo',
- 'fforward',
- 'finish',
- 'func',
- 'FPS',
- 'getPosition',
- 'isPlaying',
- 'looping',
- 'obj',
- 'onMotionChanged',
- 'onMotionFinished',
- 'onMotionLooped',
- 'onMotionStarted',
- 'onMotionResumed',
- 'onMotionStopped',
- 'prop',
- 'rewind',
- 'resume',
- 'setPosition',
- 'time',
- 'userSeconds',
- 'yoyo'
- ),
- 45 => array (
- 'attachVideo',
- 'deblocking',
- 'smoothing'
- ),
- 46 => array (
- 'addRequestHeader',
- 'appendChild',
- 'attributes',
- 'childNodes',
- 'cloneNode',
- 'contentType',
- 'createElement',
- 'createTextNode',
- 'docTypeDecl',
- 'firstChild',
- 'hasChildNodes',
- 'ignoreWhite',
- 'insertBefore',
- 'lastChild',
- 'nextSibling',
- 'nodeName',
- 'nodeType',
- 'nodeValue',
- 'parentNode',
- 'parseXML',
- 'previousSibling',
- 'removeNode',
- 'xmlDecl'
- ),
- 47 => array (
- 'onClose',
- 'onXML'
- ),
- 48 => array (
- 'add',
- 'and',
- '_highquality',
- 'chr',
- 'eq',
- 'ge',
- 'ifFrameLoaded',
- 'int',
- 'le',
- 'it',
- 'mbchr',
- 'mblength',
- 'mbord',
- 'ne',
- 'not',
- 'or',
- 'ord',
- 'tellTarget',
- 'toggleHighQuality'
- ),
- 49 => array (
- 'ASSetPropFlags',
- 'ASnative',
- 'ASconstructor',
- 'AsSetupError',
- 'FWEndCommand',
- 'FWJavascript',
- 'MMEndCommand',
- 'MMSave',
- 'XMLUI'
- ),
- 50 => array (
- 'System.capabilities'
- ),
- 51 => array (
- 'System.security'
- ),
- 52 => array (
- 'TextField.StyleSheet'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>','='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true,
- 5 => true,
- 6 => true,
- 7 => true,
- 8 => true,
- 9 => true,
- 10 => true,
- 11 => true,
- 12 => true,
- 13 => true,
- 14 => true,
- 15 => true,
- 16 => true,
- 17 => true,
- 18 => true,
- 19 => true,
- 20 => true,
- 21 => true,
- 22 => true,
- 23 => true,
- 24 => true,
- 25 => true,
- 26 => true,
- 27 => true,
- 28 => true,
- 29 => true,
- 30 => true,
- 31 => true,
- 32 => true,
- 33 => true,
- 34 => true,
- 35 => true,
- 36 => true,
- 37 => true,
- 38 => true,
- 39 => true,
- 40 => true,
- 41 => true,
- 42 => true,
- 43 => true,
- 44 => true,
- 45 => true,
- 46 => true,
- 47 => true,
- 48 => true,
- 49 => true,
- 50 => true,
- 51 => true,
- 52 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff;',
- 2 => 'color: #006600;',
- 3 => 'color: #000080;',
- 4 => 'color: #006600;',
- 5 => 'color: #006600;',
- 6 => 'color: #006600;',
- 7 => 'color: #006600;',
- 8 => 'color: #006600;',
- 9 => 'color: #006600;',
- 10 => 'color: #006600;',
- 11 => 'color: #006600;',
- 12 => 'color: #006600;',
- 13 => 'color: #006600;',
- 14 => 'color: #006600;',
- 15 => 'color: #006600;',
- 16 => 'color: #006600;',
- 17 => 'color: #006600;',
- 18 => 'color: #006600;',
- 19 => 'color: #006600;',
- 20 => 'color: #006600;',
- 21 => 'color: #006600;',
- 22 => 'color: #006600;',
- 23 => 'color: #006600;',
- 24 => 'color: #006600;',
- 25 => 'color: #006600;',
- 26 => 'color: #006600;',
- 27 => 'color: #006600;',
- 28 => 'color: #006600;',
- 29 => 'color: #006600;',
- 30 => 'color: #006600;',
- 31 => 'color: #006600;',
- 32 => 'color: #006600;',
- 33 => 'color: #006600;',
- 34 => 'color: #006600;',
- 35 => 'color: #006600;',
- 36 => 'color: #006600;',
- 37 => 'color: #006600;',
- 38 => 'color: #006600;',
- 39 => 'color: #006600;',
- 40 => 'color: #006600;',
- 41 => 'color: #006600;',
- 42 => 'color: #006600;',
- 43 => 'color: #006600;',
- 44 => 'color: #006600;',
- 45 => 'color: #006600;',
- 46 => 'color: #006600;',
- 47 => 'color: #006600;',
- 48 => 'color: #CC0000;',
- 49 => 'color: #5700d1;',
- 50 => 'color: #006600;',
- 51 => 'color: #006600;',
- 52 => 'color: #CC0000;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #ff8000; font-style: italic;',
- 2 => 'color: #ff8000; font-style: italic;',
- 'MULTI' => 'color: #ff8000; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #333333;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #333333; background-color: #eeeeee;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #c50000;'
- ),
-
- 'SYMBOLS' => array(
- 0 => 'color: #000000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
- 2 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
- 3 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
- 4 => 'http://wiki.media-box.net/documentation/flash/accessibility/{FNAME}',
- 5 => 'http://wiki.media-box.net/documentation/flash/arguments/{FNAME}',
- 6 => 'http://wiki.media-box.net/documentation/flash/array/{FNAME}',
- 7 => 'http://wiki.media-box.net/documentation/flash/boolean/{FNAME}',
- 8 => 'http://wiki.media-box.net/documentation/flash/button/{FNAME}',
- 9 => 'http://wiki.media-box.net/documentation/flash/camera/{FNAME}',
- 10 => 'http://wiki.media-box.net/documentation/flash/color/{FNAME}',
- 11 => 'http://wiki.media-box.net/documentation/flash/contextmenuitem/{FNAME}',
- 12 => 'http://wiki.media-box.net/documentation/flash/contextmenu/{FNAME}',
- 13 => 'http://wiki.media-box.net/documentation/flash/cookie/{FNAME}',
- 14 => 'http://wiki.media-box.net/documentation/flash/customactions/{FNAME}',
- 15 => 'http://wiki.media-box.net/documentation/flash/date/{FNAME}',
- 16 => 'http://wiki.media-box.net/documentation/flash/error/{FNAME}',
- 17 => 'http://wiki.media-box.net/documentation/flash/function/{FNAME}',
- 18 => 'http://wiki.media-box.net/documentation/flash/key/{FNAME}',
- 19 => 'http://wiki.media-box.net/documentation/flash/loadvars/{FNAME}',
- 20 => 'http://wiki.media-box.net/documentation/flash/localconnection/{FNAME}',
- 21 => 'http://wiki.media-box.net/documentation/flash/math/{FNAME}',
- 22 => 'http://wiki.media-box.net/documentation/flash/microphone/{FNAME}',
- 23 => 'http://wiki.media-box.net/documentation/flash/mouse/{FNAME}',
- 24 => 'http://wiki.media-box.net/documentation/flash/movieclip/{FNAME}',
- 25 => 'http://wiki.media-box.net/documentation/flash/moviecliploader/{FNAME}',
- 26 => 'http://wiki.media-box.net/documentation/flash/netstream/{FNAME}',
- 27 => 'http://wiki.media-box.net/documentation/flash/number/{FNAME}',
- 28 => 'http://wiki.media-box.net/documentation/flash/object/{FNAME}',
- 29 => 'http://wiki.media-box.net/documentation/flash/printJob/{FNAME}',
- 30 => 'http://wiki.media-box.net/documentation/flash/selection/{FNAME}',
- 31 => 'http://wiki.media-box.net/documentation/flash/sharedobject/{FNAME}',
- 32 => 'http://wiki.media-box.net/documentation/flash/sound/{FNAME}',
- 33 => 'http://wiki.media-box.net/documentation/flash/selection/{FNAME}',
- 34 => 'http://wiki.media-box.net/documentation/flash/sharedobject/{FNAME}',
- 35 => 'http://wiki.media-box.net/documentation/flash/stage/{FNAME}',
- 36 => 'http://wiki.media-box.net/documentation/flash/string/{FNAME}',
- 37 => 'http://wiki.media-box.net/documentation/flash/system/capabilities/{FNAME}',
- 38 => 'http://wiki.media-box.net/documentation/flash/system/security/{FNAME}',
- 39 => 'http://wiki.media-box.net/documentation/flash/system/{FNAME}',
- 40 => 'http://wiki.media-box.net/documentation/flash/textfield/stylesheet/{FNAME}',
- 41 => 'http://wiki.media-box.net/documentation/flash/textfield/{FNAME}',
- 42 => 'http://wiki.media-box.net/documentation/flash/textformat/{FNAME}',
- 43 => 'http://wiki.media-box.net/documentation/flash/textsnapshot/{FNAME}',
- 44 => 'http://wiki.media-box.net/documentation/flash/tween/{FNAME}',
- 45 => 'http://wiki.media-box.net/documentation/flash/video/{FNAME}',
- 46 => 'http://wiki.media-box.net/documentation/flash/xml/{FNAME}',
- 47 => 'http://wiki.media-box.net/documentation/flash/xmlsocket/{FNAME}',
- 48 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
- 49 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
- 50 => 'http://wiki.media-box.net/documentation/flash/system/capabilities',
- 51 => 'http://wiki.media-box.net/documentation/flash/system/security',
- 52 => 'http://wiki.media-box.net/documentation/flash/textfield/stylesheet'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(),
- 'HIGHLIGHT_STRICT_BLOCK' => array()
-);
-
-?>
+<?php
+/*************************************************************************************
+ * actionscript.php
+ * ----------------
+ * Author: Steffen Krause (Steffen.krause at muse.de)
+ * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.9
+ * CVS Revision Version: $Revision: 1.9 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2006/04/23 01:14:41 $
+ *
+ * Actionscript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/25 (1.0.2)
+ * Author [ NikO ] - http://niko.informatif.org
+ * - add full link for myInstance.methods to http://wiki.media-box.net/documentation/flash
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Actionscript',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '#include',
+ 'for',
+ 'foreach',
+ 'if',
+ 'elseif',
+ 'else',
+ 'while',
+ 'do',
+ 'dowhile',
+ 'endwhile',
+ 'endif',
+ 'switch',
+ 'case',
+ 'endswitch',
+ 'break',
+ 'continue',
+ 'in',
+ 'null',
+ 'false',
+ 'true',
+ 'var',
+ 'default',
+ 'new',
+ '_global',
+ 'undefined',
+ 'super'
+ ),
+ 2 => array(
+ 'static',
+ 'private',
+ 'public',
+ 'class',
+ 'extends',
+ 'implements',
+ 'import',
+ 'return',
+ 'trace',
+ '_quality',
+ '_root',
+ 'set',
+ 'setInterval',
+ 'setProperty',
+ 'stopAllSounds',
+ 'targetPath',
+ 'this',
+ 'typeof',
+ 'unescape',
+ 'updateAfterEvent'
+ ),
+ 3 => array (
+ 'Accessibility',
+ 'Array',
+ 'Boolean',
+ 'Button',
+ 'Camera',
+ 'Color',
+ 'ContextMenuItem',
+ 'ContextMenu',
+ 'Cookie',
+ 'Date',
+ 'Error',
+ 'function',
+ 'FWEndCommand',
+ 'FWJavascript',
+ 'Key',
+ 'LoadMovieNum',
+ 'LoadMovie',
+ 'LoadVariablesNum',
+ 'LoadVariables',
+ 'LoadVars',
+ 'LocalConnection',
+ 'Math',
+ 'Microphone',
+ 'MMExecute',
+ 'MMEndCommand',
+ 'MMSave',
+ 'Mouse',
+ 'MovieClipLoader',
+ 'MovieClip',
+ 'NetConnexion',
+ 'NetStream',
+ 'Number',
+ 'Object',
+ 'printAsBitmapNum',
+ 'printNum',
+ 'printAsBitmap',
+ 'printJob',
+ 'print',
+ 'Selection',
+ 'SharedObject',
+ 'Sound',
+ 'Stage',
+ 'String',
+ 'System',
+ 'TextField',
+ 'TextFormat',
+ 'Tween',
+ 'Video',
+ 'XMLUI',
+ 'XMLNode',
+ 'XMLSocket',
+ 'XML'
+ ),
+ 4 => array (
+ 'isactive',
+ 'updateProperties'
+ ),
+ 5 => array (
+ 'callee',
+ 'caller',
+ ),
+ 6 => array (
+ 'concat',
+ 'join',
+ 'pop',
+ 'push',
+ 'reverse',
+ 'shift',
+ 'slice',
+ 'sort',
+ 'sortOn',
+ 'splice',
+ 'toString',
+ 'unshift'
+ ),
+ 7 => array (
+ 'valueOf'
+ ),
+ 8 => array (
+ 'onDragOut',
+ 'onDragOver',
+ 'onKeyUp',
+ 'onKillFocus',
+ 'onPress',
+ 'onRelease',
+ 'onReleaseOutside',
+ 'onRollOut',
+ 'onRollOver',
+ 'onSetFocus'
+ ),
+ 9 => array (
+ 'setMode',
+ 'setMotionLevel',
+ 'setQuality',
+ 'activityLevel',
+ 'bandwidth',
+ 'currentFps',
+ 'fps',
+ 'index',
+ 'motionLevel',
+ 'motionTimeOut',
+ 'muted',
+ 'names',
+ 'quality',
+ 'onActivity',
+ 'onStatus'
+ ),
+ 10 => array (
+ 'getRGB',
+ 'setRGB',
+ 'getTransform',
+ 'setTransform'
+ ),
+ 11 => array (
+ 'caption',
+ 'enabled',
+ 'separatorBefore',
+ 'visible',
+ 'onSelect'
+ ),
+ 12 => array (
+ 'setCookie',
+ 'getcookie'
+ ),
+ 13 => array (
+ 'hideBuiltInItems',
+ 'builtInItems',
+ 'customItems',
+ 'onSelect'
+ ),
+ 14 => array (
+ 'CustomActions.get',
+ 'CustomActions.install',
+ 'CustomActions.list',
+ 'CustomActions.uninstall',
+ ),
+ 15 => array (
+ 'getDate',
+ 'getDay',
+ 'getFullYear',
+ 'getHours',
+ 'getMilliseconds',
+ 'getMinutes',
+ 'getMonth',
+ 'getSeconds',
+ 'getTime',
+ 'getTimezoneOffset',
+ 'getUTCDate',
+ 'getUTCDay',
+ 'getUTCFullYear',
+ 'getUTCHours',
+ 'getUTCMinutes',
+ 'getUTCMilliseconds',
+ 'getUTCMonth',
+ 'getUTCSeconds',
+ 'getYear',
+ 'setDate',
+ 'setFullYear',
+ 'setHours',
+ 'setMilliseconds',
+ 'setMinutes',
+ 'setMonth',
+ 'setSeconds',
+ 'setTime',
+ 'setUTCDate',
+ 'setUTCDay',
+ 'setUTCFullYear',
+ 'setUTCHours',
+ 'setUTCMinutes',
+ 'setUTCMilliseconds',
+ 'setUTCMonth',
+ 'setUTCSeconds',
+ 'setYear',
+ 'UTC'
+ ),
+ 16 => array (
+ 'message',
+ 'name',
+ 'throw',
+ 'try',
+ 'catch',
+ 'finally'
+ ),
+ 17 => array (
+ 'apply',
+ 'call'
+ ),
+ 18 => array (
+ 'BACKSPACE',
+ 'CAPSLOCK',
+ 'CONTROL',
+ 'DELETEKEY',
+ 'DOWN',
+ 'END',
+ 'ENTER',
+ 'ESCAPE',
+ 'getAscii',
+ 'getCode',
+ 'HOME',
+ 'INSERT',
+ 'isDown',
+ 'isToggled',
+ 'LEFT',
+ 'onKeyDown',
+ 'onKeyUp',
+ 'PGDN',
+ 'PGUP',
+ 'RIGHT',
+ 'SPACE',
+ 'TAB',
+ 'UP'
+ ),
+ 19 => array (
+ 'addRequestHeader',
+ 'contentType',
+ 'decode'
+ ),
+ 20 => array (
+ 'allowDomain',
+ 'allowInsecureDomain',
+ 'close',
+ 'domain'
+ ),
+ 21 => array (
+ 'abs',
+ 'acos',
+ 'asin',
+ 'atan',
+ 'atan2',
+ 'ceil',
+ 'cos',
+ 'exp',
+ 'floor',
+ 'log',
+ 'LN2',
+ 'LN10',
+ 'LOG2E',
+ 'LOG10E',
+ 'max',
+ 'min',
+ 'PI',
+ 'pow',
+ 'random',
+ 'sin',
+ 'SQRT1_2',
+ 'sqrt',
+ 'tan',
+ 'round',
+ 'SQRT2'
+ ),
+ 22 => array (
+ 'activityLevel',
+ 'muted',
+ 'names',
+ 'onActivity',
+ 'onStatus',
+ 'setRate',
+ 'setGain',
+ 'gain',
+ 'rate',
+ 'setSilenceLevel',
+ 'setUseEchoSuppression',
+ 'silenceLevel',
+ 'silenceTimeOut',
+ 'useEchoSuppression'
+ ),
+ 23 => array (
+ 'hide',
+ 'onMouseDown',
+ 'onMouseMove',
+ 'onMouseUp',
+ 'onMouseWeel',
+ 'show'
+ ),
+ 24 => array (
+ '_alpha',
+ 'attachAudio',
+ 'attachMovie',
+ 'beginFill',
+ 'beginGradientFill',
+ 'clear',
+ 'createEmptyMovieClip',
+ 'createTextField',
+ '_current',
+ 'curveTo',
+ '_dropTarget',
+ 'duplicateMovieClip',
+ 'endFill',
+ 'focusEnabled',
+ 'enabled',
+ '_focusrec',
+ '_framesLoaded',
+ 'getBounds',
+ 'getBytesLoaded',
+ 'getBytesTotal',
+ 'getDepth',
+ 'getInstanceAtDepth',
+ 'getNextHighestDepth',
+ 'getSWFVersion',
+ 'getTextSnapshot',
+ 'getURL',
+ 'globalToLocal',
+ 'gotoAndPlay',
+ 'gotoAndStop',
+ '_height',
+ 'hitArea',
+ 'hitTest',
+ 'lineStyle',
+ 'lineTo',
+ 'localToGlobal',
+ '_lockroot',
+ 'menu',
+ 'onUnload',
+ '_parent',
+ 'play',
+ 'prevFrame',
+ '_quality',
+ 'removeMovieClip',
+ '_rotation',
+ 'setMask',
+ '_soundbuftime',
+ 'startDrag',
+ 'stopDrag',
+ 'stop',
+ 'swapDepths',
+ 'tabChildren',
+ '_target',
+ '_totalFrames',
+ 'trackAsMenu',
+ 'unloadMovie',
+ 'useHandCursor',
+ '_visible',
+ '_width',
+ '_xmouse',
+ '_xscale',
+ '_x',
+ '_ymouse',
+ '_yscale',
+ '_y'
+ ),
+ 25 => array (
+ 'getProgress',
+ 'loadClip',
+ 'onLoadComplete',
+ 'onLoadError',
+ 'onLoadInit',
+ 'onLoadProgress',
+ 'onLoadStart'
+ ),
+ 26 => array (
+ 'bufferLength',
+ 'currentFps',
+ 'seek',
+ 'setBufferTime',
+ 'bufferTime',
+ 'time',
+ 'pause'
+ ),
+ 27 => array (
+ 'MAX_VALUE',
+ 'MIN_VALUE',
+ 'NEGATIVE_INFINITY',
+ 'POSITIVE_INFINITY'
+ ),
+ 28 => array (
+ 'addProperty',
+ 'constructor',
+ '__proto__',
+ 'registerClass',
+ '__resolve',
+ 'unwatch',
+ 'watch',
+ 'onUpDate'
+ ),
+ 29 => array (
+ 'addPage'
+ ),
+ 30 => array (
+ 'getBeginIndex',
+ 'getCaretIndex',
+ 'getEndIndex',
+ 'setSelection'
+ ),
+ 31 => array (
+ 'flush',
+ 'getLocal',
+ 'getSize'
+ ),
+ 32 => array (
+ 'attachSound',
+ 'duration',
+ 'getPan',
+ 'getVolume',
+ 'onID3',
+ 'loadSound',
+ 'id3',
+ 'onSoundComplete',
+ 'position',
+ 'setPan',
+ 'setVolume'
+ ),
+ 33 => array (
+ 'getBeginIndex',
+ 'getCaretIndex',
+ 'getEndIndex',
+ 'setSelection'
+ ),
+ 34 => array (
+ 'getEndIndex',
+ ),
+ 35 => array (
+ 'align',
+ 'height',
+ 'width',
+ 'onResize',
+ 'scaleMode',
+ 'showMenu'
+ ),
+ 36 => array (
+ 'charAt',
+ 'charCodeAt',
+ 'concat',
+ 'fromCharCode',
+ 'indexOf',
+ 'lastIndexOf',
+ 'substr',
+ 'substring',
+ 'toLowerCase',
+ 'toUpperCase'
+ ),
+ 37 => array (
+ 'avHardwareDisable',
+ 'hasAccessibility',
+ 'hasAudioEncoder',
+ 'hasAudio',
+ 'hasEmbeddedVideo',
+ 'hasMP3',
+ 'hasPrinting',
+ 'hasScreenBroadcast',
+ 'hasScreenPlayback',
+ 'hasStreamingAudio',
+ 'hasStreamingVideo',
+ 'hasVideoEncoder',
+ 'isDebugger',
+ 'language',
+ 'localFileReadDisable',
+ 'manufacturer',
+ 'os',
+ 'pixelAspectRatio',
+ 'playerType',
+ 'screenColor',
+ 'screenDPI',
+ 'screenResolutionX',
+ 'screenResolutionY',
+ 'serverString',
+ 'version'
+ ),
+ 38 => array (
+ 'allowDomain',
+ 'allowInsecureDomain',
+ 'loadPolicyFile'
+ ),
+ 39 => array (
+ 'exactSettings',
+ 'setClipboard',
+ 'showSettings',
+ 'useCodepage'
+ ),
+ 40 => array (
+ 'getStyle',
+ 'getStyleNames',
+ 'parseCSS',
+ 'setStyle',
+ 'transform'
+ ),
+ 41 => array (
+ 'autoSize',
+ 'background',
+ 'backgroundColor',
+ 'border',
+ 'borderColor',
+ 'bottomScroll',
+ 'condenseWhite',
+ 'embedFonts',
+ 'getFontList',
+ 'getNewTextFormat',
+ 'getTextFormat',
+ 'hscroll',
+ 'htmlText',
+ 'html',
+ 'maxChars',
+ 'maxhscroll',
+ 'maxscroll',
+ 'mouseWheelEnabled',
+ 'multiline',
+ 'onScroller',
+ 'password',
+ 'removeTextField',
+ 'replaceSel',
+ 'replaceText',
+ 'restrict',
+ 'scroll',
+ 'selectable',
+ 'setNewTextFormat',
+ 'setTextFormat',
+ 'styleSheet',
+ 'tabEnabled',
+ 'tabIndex',
+ 'textColor',
+ 'textHeight',
+ 'textWidth',
+ 'text',
+ 'type',
+ '_url',
+ 'variable',
+ 'wordWrap'
+ ),
+ 42 => array (
+ 'blockIndent',
+ 'bold',
+ 'bullet',
+ 'font',
+ 'getTextExtent',
+ 'indent',
+ 'italic',
+ 'leading',
+ 'leftMargin',
+ 'rightMargin',
+ 'size',
+ 'tabStops',
+ 'underline'
+ ),
+ 43 => array (
+ 'findText',
+ 'getCount',
+ 'getSelected',
+ 'getSelectedText',
+ 'getText',
+ 'hitTestTextNearPos',
+ 'setSelectColor',
+ 'setSelected'
+ ),
+ 44 => array (
+ 'begin',
+ 'change',
+ 'continueTo',
+ 'fforward',
+ 'finish',
+ 'func',
+ 'FPS',
+ 'getPosition',
+ 'isPlaying',
+ 'looping',
+ 'obj',
+ 'onMotionChanged',
+ 'onMotionFinished',
+ 'onMotionLooped',
+ 'onMotionStarted',
+ 'onMotionResumed',
+ 'onMotionStopped',
+ 'prop',
+ 'rewind',
+ 'resume',
+ 'setPosition',
+ 'time',
+ 'userSeconds',
+ 'yoyo'
+ ),
+ 45 => array (
+ 'attachVideo',
+ 'deblocking',
+ 'smoothing'
+ ),
+ 46 => array (
+ 'addRequestHeader',
+ 'appendChild',
+ 'attributes',
+ 'childNodes',
+ 'cloneNode',
+ 'contentType',
+ 'createElement',
+ 'createTextNode',
+ 'docTypeDecl',
+ 'firstChild',
+ 'hasChildNodes',
+ 'ignoreWhite',
+ 'insertBefore',
+ 'lastChild',
+ 'nextSibling',
+ 'nodeName',
+ 'nodeType',
+ 'nodeValue',
+ 'parentNode',
+ 'parseXML',
+ 'previousSibling',
+ 'removeNode',
+ 'xmlDecl'
+ ),
+ 47 => array (
+ 'onClose',
+ 'onXML'
+ ),
+ 48 => array (
+ 'add',
+ 'and',
+ '_highquality',
+ 'chr',
+ 'eq',
+ 'ge',
+ 'ifFrameLoaded',
+ 'int',
+ 'le',
+ 'it',
+ 'mbchr',
+ 'mblength',
+ 'mbord',
+ 'ne',
+ 'not',
+ 'or',
+ 'ord',
+ 'tellTarget',
+ 'toggleHighQuality'
+ ),
+ 49 => array (
+ 'ASSetPropFlags',
+ 'ASnative',
+ 'ASconstructor',
+ 'AsSetupError',
+ 'FWEndCommand',
+ 'FWJavascript',
+ 'MMEndCommand',
+ 'MMSave',
+ 'XMLUI'
+ ),
+ 50 => array (
+ 'System.capabilities'
+ ),
+ 51 => array (
+ 'System.security'
+ ),
+ 52 => array (
+ 'TextField.StyleSheet'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>','='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ 4 => true,
+ 5 => true,
+ 6 => true,
+ 7 => true,
+ 8 => true,
+ 9 => true,
+ 10 => true,
+ 11 => true,
+ 12 => true,
+ 13 => true,
+ 14 => true,
+ 15 => true,
+ 16 => true,
+ 17 => true,
+ 18 => true,
+ 19 => true,
+ 20 => true,
+ 21 => true,
+ 22 => true,
+ 23 => true,
+ 24 => true,
+ 25 => true,
+ 26 => true,
+ 27 => true,
+ 28 => true,
+ 29 => true,
+ 30 => true,
+ 31 => true,
+ 32 => true,
+ 33 => true,
+ 34 => true,
+ 35 => true,
+ 36 => true,
+ 37 => true,
+ 38 => true,
+ 39 => true,
+ 40 => true,
+ 41 => true,
+ 42 => true,
+ 43 => true,
+ 44 => true,
+ 45 => true,
+ 46 => true,
+ 47 => true,
+ 48 => true,
+ 49 => true,
+ 50 => true,
+ 51 => true,
+ 52 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff;',
+ 2 => 'color: #006600;',
+ 3 => 'color: #000080;',
+ 4 => 'color: #006600;',
+ 5 => 'color: #006600;',
+ 6 => 'color: #006600;',
+ 7 => 'color: #006600;',
+ 8 => 'color: #006600;',
+ 9 => 'color: #006600;',
+ 10 => 'color: #006600;',
+ 11 => 'color: #006600;',
+ 12 => 'color: #006600;',
+ 13 => 'color: #006600;',
+ 14 => 'color: #006600;',
+ 15 => 'color: #006600;',
+ 16 => 'color: #006600;',
+ 17 => 'color: #006600;',
+ 18 => 'color: #006600;',
+ 19 => 'color: #006600;',
+ 20 => 'color: #006600;',
+ 21 => 'color: #006600;',
+ 22 => 'color: #006600;',
+ 23 => 'color: #006600;',
+ 24 => 'color: #006600;',
+ 25 => 'color: #006600;',
+ 26 => 'color: #006600;',
+ 27 => 'color: #006600;',
+ 28 => 'color: #006600;',
+ 29 => 'color: #006600;',
+ 30 => 'color: #006600;',
+ 31 => 'color: #006600;',
+ 32 => 'color: #006600;',
+ 33 => 'color: #006600;',
+ 34 => 'color: #006600;',
+ 35 => 'color: #006600;',
+ 36 => 'color: #006600;',
+ 37 => 'color: #006600;',
+ 38 => 'color: #006600;',
+ 39 => 'color: #006600;',
+ 40 => 'color: #006600;',
+ 41 => 'color: #006600;',
+ 42 => 'color: #006600;',
+ 43 => 'color: #006600;',
+ 44 => 'color: #006600;',
+ 45 => 'color: #006600;',
+ 46 => 'color: #006600;',
+ 47 => 'color: #006600;',
+ 48 => 'color: #CC0000;',
+ 49 => 'color: #5700d1;',
+ 50 => 'color: #006600;',
+ 51 => 'color: #006600;',
+ 52 => 'color: #CC0000;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #ff8000; font-style: italic;',
+ 2 => 'color: #ff8000; font-style: italic;',
+ 'MULTI' => 'color: #ff8000; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #333333;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #333333; background-color: #eeeeee;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #c50000;'
+ ),
+
+ 'SYMBOLS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
+ 2 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
+ 3 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
+ 4 => 'http://wiki.media-box.net/documentation/flash/accessibility/{FNAME}',
+ 5 => 'http://wiki.media-box.net/documentation/flash/arguments/{FNAME}',
+ 6 => 'http://wiki.media-box.net/documentation/flash/array/{FNAME}',
+ 7 => 'http://wiki.media-box.net/documentation/flash/boolean/{FNAME}',
+ 8 => 'http://wiki.media-box.net/documentation/flash/button/{FNAME}',
+ 9 => 'http://wiki.media-box.net/documentation/flash/camera/{FNAME}',
+ 10 => 'http://wiki.media-box.net/documentation/flash/color/{FNAME}',
+ 11 => 'http://wiki.media-box.net/documentation/flash/contextmenuitem/{FNAME}',
+ 12 => 'http://wiki.media-box.net/documentation/flash/contextmenu/{FNAME}',
+ 13 => 'http://wiki.media-box.net/documentation/flash/cookie/{FNAME}',
+ 14 => 'http://wiki.media-box.net/documentation/flash/customactions/{FNAME}',
+ 15 => 'http://wiki.media-box.net/documentation/flash/date/{FNAME}',
+ 16 => 'http://wiki.media-box.net/documentation/flash/error/{FNAME}',
+ 17 => 'http://wiki.media-box.net/documentation/flash/function/{FNAME}',
+ 18 => 'http://wiki.media-box.net/documentation/flash/key/{FNAME}',
+ 19 => 'http://wiki.media-box.net/documentation/flash/loadvars/{FNAME}',
+ 20 => 'http://wiki.media-box.net/documentation/flash/localconnection/{FNAME}',
+ 21 => 'http://wiki.media-box.net/documentation/flash/math/{FNAME}',
+ 22 => 'http://wiki.media-box.net/documentation/flash/microphone/{FNAME}',
+ 23 => 'http://wiki.media-box.net/documentation/flash/mouse/{FNAME}',
+ 24 => 'http://wiki.media-box.net/documentation/flash/movieclip/{FNAME}',
+ 25 => 'http://wiki.media-box.net/documentation/flash/moviecliploader/{FNAME}',
+ 26 => 'http://wiki.media-box.net/documentation/flash/netstream/{FNAME}',
+ 27 => 'http://wiki.media-box.net/documentation/flash/number/{FNAME}',
+ 28 => 'http://wiki.media-box.net/documentation/flash/object/{FNAME}',
+ 29 => 'http://wiki.media-box.net/documentation/flash/printJob/{FNAME}',
+ 30 => 'http://wiki.media-box.net/documentation/flash/selection/{FNAME}',
+ 31 => 'http://wiki.media-box.net/documentation/flash/sharedobject/{FNAME}',
+ 32 => 'http://wiki.media-box.net/documentation/flash/sound/{FNAME}',
+ 33 => 'http://wiki.media-box.net/documentation/flash/selection/{FNAME}',
+ 34 => 'http://wiki.media-box.net/documentation/flash/sharedobject/{FNAME}',
+ 35 => 'http://wiki.media-box.net/documentation/flash/stage/{FNAME}',
+ 36 => 'http://wiki.media-box.net/documentation/flash/string/{FNAME}',
+ 37 => 'http://wiki.media-box.net/documentation/flash/system/capabilities/{FNAME}',
+ 38 => 'http://wiki.media-box.net/documentation/flash/system/security/{FNAME}',
+ 39 => 'http://wiki.media-box.net/documentation/flash/system/{FNAME}',
+ 40 => 'http://wiki.media-box.net/documentation/flash/textfield/stylesheet/{FNAME}',
+ 41 => 'http://wiki.media-box.net/documentation/flash/textfield/{FNAME}',
+ 42 => 'http://wiki.media-box.net/documentation/flash/textformat/{FNAME}',
+ 43 => 'http://wiki.media-box.net/documentation/flash/textsnapshot/{FNAME}',
+ 44 => 'http://wiki.media-box.net/documentation/flash/tween/{FNAME}',
+ 45 => 'http://wiki.media-box.net/documentation/flash/video/{FNAME}',
+ 46 => 'http://wiki.media-box.net/documentation/flash/xml/{FNAME}',
+ 47 => 'http://wiki.media-box.net/documentation/flash/xmlsocket/{FNAME}',
+ 48 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
+ 49 => 'http://wiki.media-box.net/documentation/flash/{FNAME}',
+ 50 => 'http://wiki.media-box.net/documentation/flash/system/capabilities',
+ 51 => 'http://wiki.media-box.net/documentation/flash/system/security',
+ 52 => 'http://wiki.media-box.net/documentation/flash/textfield/stylesheet'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(),
+ 'HIGHLIGHT_STRICT_BLOCK' => array()
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/actionscript.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/actionscript.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/actionscript.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,197 +1,197 @@
-<?php
-/*************************************************************************************
- * actionscript.php
- * ----------------
- * Author: Steffen Krause (Steffen.krause at muse.de)
- * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/20
- *
- * Actionscript language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'ActionScript',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- '#include', 'for', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'dowhile',
- 'endwhile', 'endif', 'switch', 'case', 'endswitch', 'return', 'break', 'continue', 'in'
- ),
- 2 => array(
- 'null', 'false', 'true', 'var',
- 'default', 'function', 'class',
- 'new', '_global'
- ),
- 3 => array(
- '#endinitclip', '#initclip', '__proto__', '_accProps', '_alpha', '_currentframe',
- '_droptarget', '_focusrect', '_framesloaded', '_height', '_highquality', '_lockroot',
- '_name', '_parent', '_quality', '_root', '_rotation', '_soundbuftime', '_target', '_totalframes',
- '_url', '_visible', '_width', '_x', '_xmouse', '_xscale', '_y', '_ymouse', '_yscale', 'abs',
- 'Accessibility', 'acos', 'activityLevel', 'add', 'addListener', 'addPage', 'addProperty',
- 'addRequestHeader', 'align', 'allowDomain', 'allowInsecureDomain', 'and', 'appendChild',
- 'apply', 'Arguments', 'Array', 'asfunction', 'asin', 'atan', 'atan2', 'attachAudio', 'attachMovie',
- 'attachSound', 'attachVideo', 'attributes', 'autosize', 'avHardwareDisable', 'background',
- 'backgroundColor', 'BACKSPACE', 'bandwidth', 'beginFill', 'beginGradientFill', 'blockIndent',
- 'bold', 'Boolean', 'border', 'borderColor', 'bottomScroll', 'bufferLength', 'bufferTime',
- 'builtInItems', 'bullet', 'Button', 'bytesLoaded', 'bytesTotal', 'call', 'callee', 'caller',
- 'Camera', 'capabilities', 'CAPSLOCK', 'caption', 'catch', 'ceil', 'charAt', 'charCodeAt',
- 'childNodes', 'chr', 'clear', 'clearInterval', 'cloneNode', 'close', 'Color', 'concat',
- 'connect', 'condenseWhite', 'constructor', 'contentType', 'ContextMenu', 'ContextMenuItem',
- 'CONTROL', 'copy', 'cos', 'createElement', 'createEmptyMovieClip', 'createTextField',
- 'createTextNode', 'currentFps', 'curveTo', 'CustomActions', 'customItems', 'data', 'Date',
- 'deblocking', 'delete', 'DELETEKEY', 'docTypeDecl', 'domain', 'DOWN',
- 'duplicateMovieClip', 'duration', 'dynamic', 'E', 'embedFonts', 'enabled',
- 'END', 'endFill', 'ENTER', 'eq', 'Error', 'ESCAPE(Konstante)', 'escape(Funktion)', 'eval',
- 'exactSettings', 'exp', 'extends', 'finally', 'findText', 'firstChild', 'floor',
- 'flush', 'focusEnabled', 'font', 'fps', 'fromCharCode', 'fscommand',
- 'gain', 'ge', 'get', 'getAscii', 'getBeginIndex', 'getBounds', 'getBytesLoaded', 'getBytesTotal',
- 'getCaretIndex', 'getCode', 'getCount', 'getDate', 'getDay', 'getDepth', 'getEndIndex', 'getFocus',
- 'getFontList', 'getFullYear', 'getHours', 'getInstanceAtDepth', 'getLocal', 'getMilliseconds',
- 'getMinutes', 'getMonth', 'getNewTextFormat', 'getNextHighestDepth', 'getPan', 'getProgress',
- 'getProperty', 'getRGB', 'getSeconds', 'getSelected', 'getSelectedText', 'getSize', 'getStyle',
- 'getStyleNames', 'getSWFVersion', 'getText', 'getTextExtent', 'getTextFormat', 'getTextSnapshot',
- 'getTime', 'getTimer', 'getTimezoneOffset', 'getTransform', 'getURL', 'getUTCDate', 'getUTCDay',
- 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
- 'getVersion', 'getVolume', 'getYear', 'globalToLocal', 'goto', 'gotoAndPlay', 'gotoAndStop',
- 'hasAccessibility', 'hasAudio', 'hasAudioEncoder', 'hasChildNodes', 'hasEmbeddedVideo', 'hasMP3',
- 'hasPrinting', 'hasScreenBroadcast', 'hasScreenPlayback', 'hasStreamingAudio', 'hasStreamingVideo',
- 'hasVideoEncoder', 'height', 'hide', 'hideBuiltInItems', 'hitArea', 'hitTest', 'hitTestTextNearPos',
- 'HOME', 'hscroll', 'html', 'htmlText', 'ID3', 'ifFrameLoaded', 'ignoreWhite', 'implements',
- 'import', 'indent', 'index', 'indexOf', 'Infinity', '-Infinity', 'INSERT', 'insertBefore', 'install',
- 'instanceof', 'int', 'interface', 'isActive', 'isDebugger', 'isDown', 'isFinite', 'isNaN', 'isToggled',
- 'italic', 'join', 'Key', 'language', 'lastChild', 'lastIndexOf', 'le', 'leading', 'LEFT', 'leftMargin',
- 'length', 'level', 'lineStyle', 'lineTo', 'list', 'LN10', 'LN2', 'load', 'loadClip', 'loaded', 'loadMovie',
- 'loadMovieNum', 'loadSound', 'loadVariables', 'loadVariablesNum', 'LoadVars', 'LocalConnection',
- 'localFileReadDisable', 'localToGlobal', 'log', 'LOG10E', 'LOG2E', 'manufacturer', 'Math', 'max',
- 'MAX_VALUE', 'maxChars', 'maxhscroll', 'maxscroll', 'mbchr', 'mblength', 'mbord', 'mbsubstring', 'menu',
- 'message', 'Microphone', 'min', 'MIN_VALUE', 'MMExecute', 'motionLevel', 'motionTimeOut', 'Mouse',
- 'mouseWheelEnabled', 'moveTo', 'Movieclip', 'MovieClipLoader', 'multiline', 'muted', 'name', 'names', 'NaN',
- 'ne', 'NEGATIVE_INFINITY', 'NetConnection', 'NetStream', 'newline', 'nextFrame',
- 'nextScene', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', 'not', 'Number', 'Object',
- 'on', 'onActivity', 'onChanged', 'onClipEvent', 'onClose', 'onConnect', 'onData', 'onDragOut',
- 'onDragOver', 'onEnterFrame', 'onID3', 'onKeyDown', 'onKeyUp', 'onKillFocus', 'onLoad', 'onLoadComplete',
- 'onLoadError', 'onLoadInit', 'onLoadProgress', 'onLoadStart', 'onMouseDown', 'onMouseMove', 'onMouseUp',
- 'onMouseWheel', 'onPress', 'onRelease', 'onReleaseOutside', 'onResize', 'onRollOut', 'onRollOver',
- 'onScroller', 'onSelect', 'onSetFocus', 'onSoundComplete', 'onStatus', 'onUnload', 'onUpdate', 'onXML',
- 'or(logischesOR)', 'ord', 'os', 'parentNode', 'parseCSS', 'parseFloat', 'parseInt', 'parseXML', 'password',
- 'pause', 'PGDN', 'PGUP', 'PI', 'pixelAspectRatio', 'play', 'playerType', 'pop', 'position',
- 'POSITIVE_INFINITY', 'pow', 'prevFrame', 'previousSibling', 'prevScene', 'print', 'printAsBitmap',
- 'printAsBitmapNum', 'PrintJob', 'printNum', 'private', 'prototype', 'public', 'push', 'quality',
- 'random', 'rate', 'registerClass', 'removeListener', 'removeMovieClip', 'removeNode', 'removeTextField',
- 'replaceSel', 'replaceText', 'resolutionX', 'resolutionY', 'restrict', 'reverse', 'RIGHT',
- 'rightMargin', 'round', 'scaleMode', 'screenColor', 'screenDPI', 'screenResolutionX', 'screenResolutionY',
- 'scroll', 'seek', 'selectable', 'Selection', 'send', 'sendAndLoad', 'separatorBefore', 'serverString',
- 'set', 'setvariable', 'setBufferTime', 'setClipboard', 'setDate', 'setFocus', 'setFullYear', 'setGain',
- 'setHours', 'setInterval', 'setMask', 'setMilliseconds', 'setMinutes', 'setMode', 'setMonth',
- 'setMotionLevel', 'setNewTextFormat', 'setPan', 'setProperty', 'setQuality', 'setRate', 'setRGB',
- 'setSeconds', 'setSelectColor', 'setSelected', 'setSelection', 'setSilenceLevel', 'setStyle',
- 'setTextFormat', 'setTime', 'setTransform', 'setUseEchoSuppression', 'setUTCDate', 'setUTCFullYear',
- 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setVolume',
- 'setYear', 'SharedObject', 'SHIFT(Konstante)', 'shift(Methode)', 'show', 'showMenu', 'showSettings',
- 'silenceLevel', 'silenceTimeout', 'sin', 'size', 'slice', 'smoothing', 'sort', 'sortOn', 'Sound', 'SPACE',
- 'splice', 'split', 'sqrt', 'SQRT1_2', 'SQRT2', 'Stage', 'start', 'startDrag', 'static', 'status', 'stop',
- 'stopAllSounds', 'stopDrag', 'String', 'StyleSheet(Klasse)', 'styleSheet(Eigenschaft)', 'substr',
- 'substring', 'super', 'swapDepths', 'System', 'TAB', 'tabChildren', 'tabEnabled', 'tabIndex',
- 'tabStops', 'tan', 'target', 'targetPath', 'tellTarget', 'text', 'textColor', 'TextField', 'TextFormat',
- 'textHeight', 'TextSnapshot', 'textWidth', 'this', 'throw', 'time', 'toggleHighQuality', 'toLowerCase',
- 'toString', 'toUpperCase', 'trace', 'trackAsMenu', 'try', 'type', 'typeof', 'undefined',
- 'underline', 'unescape', 'uninstall', 'unloadClip', 'unloadMovie', 'unLoadMovieNum', 'unshift', 'unwatch',
- 'UP', 'updateAfterEvent', 'updateProperties', 'url', 'useCodePage', 'useEchoSuppression', 'useHandCursor',
- 'UTC', 'valueOf', 'variable', 'version', 'Video', 'visible', 'void', 'watch', 'width',
- 'with', 'wordwrap', 'XML', 'xmlDecl', 'XMLNode', 'XMLSocket'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #0066CC;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(),
- 'HIGHLIGHT_STRICT_BLOCK' => array()
-);
-
-?>
+<?php
+/*************************************************************************************
+ * actionscript.php
+ * ----------------
+ * Author: Steffen Krause (Steffen.krause at muse.de)
+ * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/20
+ *
+ * Actionscript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'ActionScript',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '#include', 'for', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'dowhile',
+ 'endwhile', 'endif', 'switch', 'case', 'endswitch', 'return', 'break', 'continue', 'in'
+ ),
+ 2 => array(
+ 'null', 'false', 'true', 'var',
+ 'default', 'function', 'class',
+ 'new', '_global'
+ ),
+ 3 => array(
+ '#endinitclip', '#initclip', '__proto__', '_accProps', '_alpha', '_currentframe',
+ '_droptarget', '_focusrect', '_framesloaded', '_height', '_highquality', '_lockroot',
+ '_name', '_parent', '_quality', '_root', '_rotation', '_soundbuftime', '_target', '_totalframes',
+ '_url', '_visible', '_width', '_x', '_xmouse', '_xscale', '_y', '_ymouse', '_yscale', 'abs',
+ 'Accessibility', 'acos', 'activityLevel', 'add', 'addListener', 'addPage', 'addProperty',
+ 'addRequestHeader', 'align', 'allowDomain', 'allowInsecureDomain', 'and', 'appendChild',
+ 'apply', 'Arguments', 'Array', 'asfunction', 'asin', 'atan', 'atan2', 'attachAudio', 'attachMovie',
+ 'attachSound', 'attachVideo', 'attributes', 'autosize', 'avHardwareDisable', 'background',
+ 'backgroundColor', 'BACKSPACE', 'bandwidth', 'beginFill', 'beginGradientFill', 'blockIndent',
+ 'bold', 'Boolean', 'border', 'borderColor', 'bottomScroll', 'bufferLength', 'bufferTime',
+ 'builtInItems', 'bullet', 'Button', 'bytesLoaded', 'bytesTotal', 'call', 'callee', 'caller',
+ 'Camera', 'capabilities', 'CAPSLOCK', 'caption', 'catch', 'ceil', 'charAt', 'charCodeAt',
+ 'childNodes', 'chr', 'clear', 'clearInterval', 'cloneNode', 'close', 'Color', 'concat',
+ 'connect', 'condenseWhite', 'constructor', 'contentType', 'ContextMenu', 'ContextMenuItem',
+ 'CONTROL', 'copy', 'cos', 'createElement', 'createEmptyMovieClip', 'createTextField',
+ 'createTextNode', 'currentFps', 'curveTo', 'CustomActions', 'customItems', 'data', 'Date',
+ 'deblocking', 'delete', 'DELETEKEY', 'docTypeDecl', 'domain', 'DOWN',
+ 'duplicateMovieClip', 'duration', 'dynamic', 'E', 'embedFonts', 'enabled',
+ 'END', 'endFill', 'ENTER', 'eq', 'Error', 'ESCAPE(Konstante)', 'escape(Funktion)', 'eval',
+ 'exactSettings', 'exp', 'extends', 'finally', 'findText', 'firstChild', 'floor',
+ 'flush', 'focusEnabled', 'font', 'fps', 'fromCharCode', 'fscommand',
+ 'gain', 'ge', 'get', 'getAscii', 'getBeginIndex', 'getBounds', 'getBytesLoaded', 'getBytesTotal',
+ 'getCaretIndex', 'getCode', 'getCount', 'getDate', 'getDay', 'getDepth', 'getEndIndex', 'getFocus',
+ 'getFontList', 'getFullYear', 'getHours', 'getInstanceAtDepth', 'getLocal', 'getMilliseconds',
+ 'getMinutes', 'getMonth', 'getNewTextFormat', 'getNextHighestDepth', 'getPan', 'getProgress',
+ 'getProperty', 'getRGB', 'getSeconds', 'getSelected', 'getSelectedText', 'getSize', 'getStyle',
+ 'getStyleNames', 'getSWFVersion', 'getText', 'getTextExtent', 'getTextFormat', 'getTextSnapshot',
+ 'getTime', 'getTimer', 'getTimezoneOffset', 'getTransform', 'getURL', 'getUTCDate', 'getUTCDay',
+ 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
+ 'getVersion', 'getVolume', 'getYear', 'globalToLocal', 'goto', 'gotoAndPlay', 'gotoAndStop',
+ 'hasAccessibility', 'hasAudio', 'hasAudioEncoder', 'hasChildNodes', 'hasEmbeddedVideo', 'hasMP3',
+ 'hasPrinting', 'hasScreenBroadcast', 'hasScreenPlayback', 'hasStreamingAudio', 'hasStreamingVideo',
+ 'hasVideoEncoder', 'height', 'hide', 'hideBuiltInItems', 'hitArea', 'hitTest', 'hitTestTextNearPos',
+ 'HOME', 'hscroll', 'html', 'htmlText', 'ID3', 'ifFrameLoaded', 'ignoreWhite', 'implements',
+ 'import', 'indent', 'index', 'indexOf', 'Infinity', '-Infinity', 'INSERT', 'insertBefore', 'install',
+ 'instanceof', 'int', 'interface', 'isActive', 'isDebugger', 'isDown', 'isFinite', 'isNaN', 'isToggled',
+ 'italic', 'join', 'Key', 'language', 'lastChild', 'lastIndexOf', 'le', 'leading', 'LEFT', 'leftMargin',
+ 'length', 'level', 'lineStyle', 'lineTo', 'list', 'LN10', 'LN2', 'load', 'loadClip', 'loaded', 'loadMovie',
+ 'loadMovieNum', 'loadSound', 'loadVariables', 'loadVariablesNum', 'LoadVars', 'LocalConnection',
+ 'localFileReadDisable', 'localToGlobal', 'log', 'LOG10E', 'LOG2E', 'manufacturer', 'Math', 'max',
+ 'MAX_VALUE', 'maxChars', 'maxhscroll', 'maxscroll', 'mbchr', 'mblength', 'mbord', 'mbsubstring', 'menu',
+ 'message', 'Microphone', 'min', 'MIN_VALUE', 'MMExecute', 'motionLevel', 'motionTimeOut', 'Mouse',
+ 'mouseWheelEnabled', 'moveTo', 'Movieclip', 'MovieClipLoader', 'multiline', 'muted', 'name', 'names', 'NaN',
+ 'ne', 'NEGATIVE_INFINITY', 'NetConnection', 'NetStream', 'newline', 'nextFrame',
+ 'nextScene', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', 'not', 'Number', 'Object',
+ 'on', 'onActivity', 'onChanged', 'onClipEvent', 'onClose', 'onConnect', 'onData', 'onDragOut',
+ 'onDragOver', 'onEnterFrame', 'onID3', 'onKeyDown', 'onKeyUp', 'onKillFocus', 'onLoad', 'onLoadComplete',
+ 'onLoadError', 'onLoadInit', 'onLoadProgress', 'onLoadStart', 'onMouseDown', 'onMouseMove', 'onMouseUp',
+ 'onMouseWheel', 'onPress', 'onRelease', 'onReleaseOutside', 'onResize', 'onRollOut', 'onRollOver',
+ 'onScroller', 'onSelect', 'onSetFocus', 'onSoundComplete', 'onStatus', 'onUnload', 'onUpdate', 'onXML',
+ 'or(logischesOR)', 'ord', 'os', 'parentNode', 'parseCSS', 'parseFloat', 'parseInt', 'parseXML', 'password',
+ 'pause', 'PGDN', 'PGUP', 'PI', 'pixelAspectRatio', 'play', 'playerType', 'pop', 'position',
+ 'POSITIVE_INFINITY', 'pow', 'prevFrame', 'previousSibling', 'prevScene', 'print', 'printAsBitmap',
+ 'printAsBitmapNum', 'PrintJob', 'printNum', 'private', 'prototype', 'public', 'push', 'quality',
+ 'random', 'rate', 'registerClass', 'removeListener', 'removeMovieClip', 'removeNode', 'removeTextField',
+ 'replaceSel', 'replaceText', 'resolutionX', 'resolutionY', 'restrict', 'reverse', 'RIGHT',
+ 'rightMargin', 'round', 'scaleMode', 'screenColor', 'screenDPI', 'screenResolutionX', 'screenResolutionY',
+ 'scroll', 'seek', 'selectable', 'Selection', 'send', 'sendAndLoad', 'separatorBefore', 'serverString',
+ 'set', 'setvariable', 'setBufferTime', 'setClipboard', 'setDate', 'setFocus', 'setFullYear', 'setGain',
+ 'setHours', 'setInterval', 'setMask', 'setMilliseconds', 'setMinutes', 'setMode', 'setMonth',
+ 'setMotionLevel', 'setNewTextFormat', 'setPan', 'setProperty', 'setQuality', 'setRate', 'setRGB',
+ 'setSeconds', 'setSelectColor', 'setSelected', 'setSelection', 'setSilenceLevel', 'setStyle',
+ 'setTextFormat', 'setTime', 'setTransform', 'setUseEchoSuppression', 'setUTCDate', 'setUTCFullYear',
+ 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setVolume',
+ 'setYear', 'SharedObject', 'SHIFT(Konstante)', 'shift(Methode)', 'show', 'showMenu', 'showSettings',
+ 'silenceLevel', 'silenceTimeout', 'sin', 'size', 'slice', 'smoothing', 'sort', 'sortOn', 'Sound', 'SPACE',
+ 'splice', 'split', 'sqrt', 'SQRT1_2', 'SQRT2', 'Stage', 'start', 'startDrag', 'static', 'status', 'stop',
+ 'stopAllSounds', 'stopDrag', 'String', 'StyleSheet(Klasse)', 'styleSheet(Eigenschaft)', 'substr',
+ 'substring', 'super', 'swapDepths', 'System', 'TAB', 'tabChildren', 'tabEnabled', 'tabIndex',
+ 'tabStops', 'tan', 'target', 'targetPath', 'tellTarget', 'text', 'textColor', 'TextField', 'TextFormat',
+ 'textHeight', 'TextSnapshot', 'textWidth', 'this', 'throw', 'time', 'toggleHighQuality', 'toLowerCase',
+ 'toString', 'toUpperCase', 'trace', 'trackAsMenu', 'try', 'type', 'typeof', 'undefined',
+ 'underline', 'unescape', 'uninstall', 'unloadClip', 'unloadMovie', 'unLoadMovieNum', 'unshift', 'unwatch',
+ 'UP', 'updateAfterEvent', 'updateProperties', 'url', 'useCodePage', 'useEchoSuppression', 'useHandCursor',
+ 'UTC', 'valueOf', 'variable', 'version', 'Video', 'visible', 'void', 'watch', 'width',
+ 'with', 'wordwrap', 'XML', 'xmlDecl', 'XMLNode', 'XMLSocket'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #0066CC;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(),
+ 'HIGHLIGHT_STRICT_BLOCK' => array()
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/ada.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/ada.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/ada.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,133 +1,133 @@
-<?php
-/*************************************************************************************
- * ada.php
- * -------
- * Author: Tux (tux at inmail.cz)
- * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/29
- *
- * Ada language file for GeSHi.
- * Words are from SciTe configuration file
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.2)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.1)
- * - Removed apostrophe as string delimiter
- * - Added URL support
- * 2004/08/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Ada',
- 'COMMENT_SINGLE' => array(1 => '--'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if',
- 'is', 'loop', 'while', 'then', 'is', 'end', 'select', 'case', 'while', 'until',
- 'goto', 'return'
- ),
- 2 => array(
- 'abs', 'and', 'mod', 'not', 'or', 'rem', 'xor'
- ),
- 3 => array(
- 'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array', 'at', 'body',
- 'constant', 'delay', 'delta', 'digits', 'entry', 'exit',
- 'function', 'generic', 'in', 'limited', 'new', 'null', 'of', 'others', 'out', 'package', 'pragma',
- 'private', 'procedure', 'protected', 'raise', 'range', 'record', 'renames', 'requeue', 'reverse',
- 'separate', 'subtype', 'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #00007f;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #46aa03; font-weight:bold;',
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #adadad; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f007f;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #202020;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * ada.php
+ * -------
+ * Author: Tux (tux at inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/29
+ *
+ * Ada language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ * - Removed apostrophe as string delimiter
+ * - Added URL support
+ * 2004/08/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Ada',
+ 'COMMENT_SINGLE' => array(1 => '--'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if',
+ 'is', 'loop', 'while', 'then', 'is', 'end', 'select', 'case', 'while', 'until',
+ 'goto', 'return'
+ ),
+ 2 => array(
+ 'abs', 'and', 'mod', 'not', 'or', 'rem', 'xor'
+ ),
+ 3 => array(
+ 'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array', 'at', 'body',
+ 'constant', 'delay', 'delta', 'digits', 'entry', 'exit',
+ 'function', 'generic', 'in', 'limited', 'new', 'null', 'of', 'others', 'out', 'package', 'pragma',
+ 'private', 'procedure', 'protected', 'raise', 'range', 'record', 'renames', 'requeue', 'reverse',
+ 'separate', 'subtype', 'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #00007f;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #46aa03; font-weight:bold;',
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #adadad; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f007f;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #202020;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/apache.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/apache.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/apache.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,171 +1,171 @@
-<?php
-/*************************************************************************************
- * apache.php
- * ----------
- * Author: Tux (tux at inmail.cz)
- * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/29/07
- *
- * Apache language file for GeSHi.
- * Words are from SciTe configuration file
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.2)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.1)
- * - Added support for URLs
- * 2004/08/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/07/29)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Apache Log',
- 'COMMENT_SINGLE' => array(1 => '#'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- /*keywords*/
- 1 => array(
- 'accessconfig','accessfilename','action','addalt',
- 'addaltbyencoding','addaltbytype','addcharset',
- 'adddefaultcharset','adddescription',
- 'addencoding','addhandler','addicon','addiconbyencoding',
- 'addiconbytype','addlanguage','addmodule','addmoduleinfo',
- 'addtype','agentlog','alias','aliasmatch',
- 'allow','allowconnect','allowoverride','anonymous',
- 'anonymous_authoritative','anonymous_logemail','anonymous_mustgiveemail',
- 'anonymous_nouserid','anonymous_verifyemail','authauthoritative',
- 'authdbauthoritative','authdbgroupfile','authdbmauthoritative',
- 'authdbmgroupfile','authdbmgroupfile','authdbuserfile','authdbmuserfile',
- 'authdigestfile','authgroupfile','authname','authtype',
- 'authuserfile','bindaddress','browsermatch','browsermatchnocase',
- 'bs2000account','cachedefaultexpire','cachedirlength','cachedirlevels',
- 'cacheforcecompletion','cachegcinterval','cachelastmodifiedfactor','cachemaxexpire',
- 'cachenegotiateddocs','cacheroot','cachesize','checkspelling',
- 'clearmodulelist','contentdigest','cookieexpires','cookielog',
- 'cookielog','cookietracking','coredumpdirectory','customlog',
- 'defaulticon','defaultlanguage','defaulttype','define',
- 'deny','directory','directorymatch','directoryindex',
- 'documentroot','errordocument','errorlog','example',
- 'expiresactive','expiresbytype','expiresdefault','extendedstatus',
- 'fancyindexing','files','filesmatch','forcetype',
- 'group','header','headername','hostnamelookups',
- 'identitycheck','ifdefine','ifmodule','imapbase',
- 'imapdefault','imapmenu','include','indexignore',
- 'indexoptions','keepalive','keepalivetimeout','languagepriority',
- 'limit','limitexcept','limitrequestbody','limitrequestfields',
- 'limitrequestfieldsize','limitrequestline','listen','listenbacklog',
- 'loadfile','loadmodule','location','locationmatch',
- 'lockfile','logformat','loglevel','maxclients',
- 'maxkeepaliverequests','maxrequestsperchild','maxspareservers','metadir',
- 'metafiles','metasuffix','mimemagicfile','minspareservers',
- 'mmapfile','namevirtualhost','nocache','options','order',
- 'passenv','pidfile','port','proxyblock','proxydomain',
- 'proxypass','proxypassreverse','proxyreceivebuffersize','proxyremote',
- 'proxyrequests','proxyvia','qsc','readmename',
- 'redirect','redirectmatch','redirectpermanent','redirecttemp',
- 'refererignore','refererlog','removehandler','require',
- 'resourceconfig','rewritebase','rewritecond','rewriteengine',
- 'rewritelock','rewritelog','rewriteloglevel','rewritemap',
- 'rewriteoptions','rewriterule','rlimitcpu','rlimitmem',
- 'rlimitnproc','satisfy','scoreboardfile','script',
- 'scriptalias','scriptaliasmatch','scriptinterpretersource','scriptlog',
- 'scriptlogbuffer','scriptloglength','sendbuffersize',
- 'serveradmin','serveralias','servername','serverpath',
- 'serverroot','serversignature','servertokens','servertype',
- 'setenv','setenvif','setenvifnocase','sethandler',
- 'singlelisten','startservers','threadsperchild','timeout',
- 'transferlog','typesconfig','unsetenv','usecanonicalname',
- 'user','userdir','virtualhost','virtualdocumentroot',
- 'virtualdocumentrootip','virtualscriptalias','virtualscriptaliasip',
- 'xbithack','from','all'
- ),
- /*keyords 2*/
- 2 => array(
- 'on','off','standalone','inetd',
- 'force-response-1.0','downgrade-1.0','nokeepalive',
- 'ndexes','includes','followsymlinks','none',
- 'x-compress','x-gzip'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #00007f;',
- 2 => 'color: #0000ff;',
- ),
- 'COMMENTS' => array(
- 1 => 'color: #adadad; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f007f;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * apache.php
+ * ----------
+ * Author: Tux (tux at inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/29/07
+ *
+ * Apache language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ * - Added support for URLs
+ * 2004/08/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/07/29)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Apache Log',
+ 'COMMENT_SINGLE' => array(1 => '#'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ /*keywords*/
+ 1 => array(
+ 'accessconfig','accessfilename','action','addalt',
+ 'addaltbyencoding','addaltbytype','addcharset',
+ 'adddefaultcharset','adddescription',
+ 'addencoding','addhandler','addicon','addiconbyencoding',
+ 'addiconbytype','addlanguage','addmodule','addmoduleinfo',
+ 'addtype','agentlog','alias','aliasmatch',
+ 'allow','allowconnect','allowoverride','anonymous',
+ 'anonymous_authoritative','anonymous_logemail','anonymous_mustgiveemail',
+ 'anonymous_nouserid','anonymous_verifyemail','authauthoritative',
+ 'authdbauthoritative','authdbgroupfile','authdbmauthoritative',
+ 'authdbmgroupfile','authdbmgroupfile','authdbuserfile','authdbmuserfile',
+ 'authdigestfile','authgroupfile','authname','authtype',
+ 'authuserfile','bindaddress','browsermatch','browsermatchnocase',
+ 'bs2000account','cachedefaultexpire','cachedirlength','cachedirlevels',
+ 'cacheforcecompletion','cachegcinterval','cachelastmodifiedfactor','cachemaxexpire',
+ 'cachenegotiateddocs','cacheroot','cachesize','checkspelling',
+ 'clearmodulelist','contentdigest','cookieexpires','cookielog',
+ 'cookielog','cookietracking','coredumpdirectory','customlog',
+ 'defaulticon','defaultlanguage','defaulttype','define',
+ 'deny','directory','directorymatch','directoryindex',
+ 'documentroot','errordocument','errorlog','example',
+ 'expiresactive','expiresbytype','expiresdefault','extendedstatus',
+ 'fancyindexing','files','filesmatch','forcetype',
+ 'group','header','headername','hostnamelookups',
+ 'identitycheck','ifdefine','ifmodule','imapbase',
+ 'imapdefault','imapmenu','include','indexignore',
+ 'indexoptions','keepalive','keepalivetimeout','languagepriority',
+ 'limit','limitexcept','limitrequestbody','limitrequestfields',
+ 'limitrequestfieldsize','limitrequestline','listen','listenbacklog',
+ 'loadfile','loadmodule','location','locationmatch',
+ 'lockfile','logformat','loglevel','maxclients',
+ 'maxkeepaliverequests','maxrequestsperchild','maxspareservers','metadir',
+ 'metafiles','metasuffix','mimemagicfile','minspareservers',
+ 'mmapfile','namevirtualhost','nocache','options','order',
+ 'passenv','pidfile','port','proxyblock','proxydomain',
+ 'proxypass','proxypassreverse','proxyreceivebuffersize','proxyremote',
+ 'proxyrequests','proxyvia','qsc','readmename',
+ 'redirect','redirectmatch','redirectpermanent','redirecttemp',
+ 'refererignore','refererlog','removehandler','require',
+ 'resourceconfig','rewritebase','rewritecond','rewriteengine',
+ 'rewritelock','rewritelog','rewriteloglevel','rewritemap',
+ 'rewriteoptions','rewriterule','rlimitcpu','rlimitmem',
+ 'rlimitnproc','satisfy','scoreboardfile','script',
+ 'scriptalias','scriptaliasmatch','scriptinterpretersource','scriptlog',
+ 'scriptlogbuffer','scriptloglength','sendbuffersize',
+ 'serveradmin','serveralias','servername','serverpath',
+ 'serverroot','serversignature','servertokens','servertype',
+ 'setenv','setenvif','setenvifnocase','sethandler',
+ 'singlelisten','startservers','threadsperchild','timeout',
+ 'transferlog','typesconfig','unsetenv','usecanonicalname',
+ 'user','userdir','virtualhost','virtualdocumentroot',
+ 'virtualdocumentrootip','virtualscriptalias','virtualscriptaliasip',
+ 'xbithack','from','all'
+ ),
+ /*keyords 2*/
+ 2 => array(
+ 'on','off','standalone','inetd',
+ 'force-response-1.0','downgrade-1.0','nokeepalive',
+ 'ndexes','includes','followsymlinks','none',
+ 'x-compress','x-gzip'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #00007f;',
+ 2 => 'color: #0000ff;',
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #adadad; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f007f;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/applescript.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/applescript.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/applescript.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,134 +1,134 @@
-<?php
-/*************************************************************************************
- * applescript.php
- * --------
- * Author: Stephan Klimek (http://www.initware.org)
- * Copyright: Stephan Klimek (http://www.initware.org)
- * Release Version: 1.0.7.21
- * Date Started: 2005/07/20
- *
- * AppleScript language file for GeSHi.
- *
- * CHANGES
- * -------
- *
- * TODO
- * -------------------------
- * URL settings to references
- *
- **************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'AppleScript',
- 'COMMENT_SINGLE' => array(1 => '--'),
- 'COMMENT_MULTI' => array( '(*' => '*)'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"',"'"),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'script','property','prop','end','copy','to','set','global','local','on','to','of',
- 'in','given','with','without','return','continue','tell','if','then','else','repeat',
- 'times','while','until','from','exit','try','error','considering','ignoring','timeout',
- 'transaction','my','get','put','into','is'
- ),
- 2 => array(
- 'each','some','every','whose','where','id','index','first','second','third','fourth',
- 'fifth','sixth','seventh','eighth','ninth','tenth','last','front','back','st','nd',
- 'rd','th','middle','named','through','thru','before','after','beginning','the'
- ),
- 3 => array(
- 'close','copy','count','delete','duplicate','exists','launch','make','move','open',
- 'print','quit','reopen','run','save','saving',
- 'it','me','version','pi','result','space','tab','anything','case','diacriticals','expansion',
- 'hyphens','punctuation','bold','condensed','expanded','hidden','italic','outline','plain',
- 'shadow','strikethrough','subscript','superscript','underline','ask','no','yes','false',
- 'true','weekday','monday','mon','tuesday','tue','wednesday','wed','thursday','thu','friday',
- 'fri','saturday','sat','sunday','sun','month','january','jan','february','feb','march',
- 'mar','april','apr','may','june','jun','july','jul','august','aug','september',
- 'sep','october','oct','november','nov','december','dec','minutes','hours',
- 'days','weeks','div','mod','and','not','or','as','contains','equal','equals','isnt'
- )
- ),
- 'SYMBOLS' => array(
- ')','+','-','^','*','/','&','<','>=','<','<=','=','�'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;',
- 4 => 'color: #009999;',
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 3 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => ',+-=<>/?^&*'
- ),
- 'REGEXPS' => array(
- 0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
- 4 => '<[a-zA-Z_][a-zA-Z0-9_]*>',
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * applescript.php
+ * --------
+ * Author: Stephan Klimek (http://www.initware.org)
+ * Copyright: Stephan Klimek (http://www.initware.org)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/07/20
+ *
+ * AppleScript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ *
+ * TODO
+ * -------------------------
+ * URL settings to references
+ *
+ **************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'AppleScript',
+ 'COMMENT_SINGLE' => array(1 => '--'),
+ 'COMMENT_MULTI' => array( '(*' => '*)'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"',"'"),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'script','property','prop','end','copy','to','set','global','local','on','to','of',
+ 'in','given','with','without','return','continue','tell','if','then','else','repeat',
+ 'times','while','until','from','exit','try','error','considering','ignoring','timeout',
+ 'transaction','my','get','put','into','is'
+ ),
+ 2 => array(
+ 'each','some','every','whose','where','id','index','first','second','third','fourth',
+ 'fifth','sixth','seventh','eighth','ninth','tenth','last','front','back','st','nd',
+ 'rd','th','middle','named','through','thru','before','after','beginning','the'
+ ),
+ 3 => array(
+ 'close','copy','count','delete','duplicate','exists','launch','make','move','open',
+ 'print','quit','reopen','run','save','saving',
+ 'it','me','version','pi','result','space','tab','anything','case','diacriticals','expansion',
+ 'hyphens','punctuation','bold','condensed','expanded','hidden','italic','outline','plain',
+ 'shadow','strikethrough','subscript','superscript','underline','ask','no','yes','false',
+ 'true','weekday','monday','mon','tuesday','tue','wednesday','wed','thursday','thu','friday',
+ 'fri','saturday','sat','sunday','sun','month','january','jan','february','feb','march',
+ 'mar','april','apr','may','june','jun','july','jul','august','aug','september',
+ 'sep','october','oct','november','nov','december','dec','minutes','hours',
+ 'days','weeks','div','mod','and','not','or','as','contains','equal','equals','isnt'
+ )
+ ),
+ 'SYMBOLS' => array(
+ ')','+','-','^','*','/','&','<','>=','<','<=','=','�'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;',
+ 4 => 'color: #009999;',
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 3 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => ',+-=<>/?^&*'
+ ),
+ 'REGEXPS' => array(
+ 0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
+ 4 => '<[a-zA-Z_][a-zA-Z0-9_]*>',
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/asm.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/asm.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/asm.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,199 +1,199 @@
-<?php
-/*************************************************************************************
- * asm.php
- * -------
- * Author: Tux (tux at inmail.cz)
- * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/27
- *
- * x86 Assembler language file for GeSHi.
- * Words are from SciTe configuration file (based on NASM syntax)
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.2)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.1)
- * - Added support for URLs
- * - Added binary and hexadecimal regexps
- * 2004/08/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'ASM',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- /*CPU*/
- 1 => array(
- 'aaa','aad','aam','aas','adc','add','and','call','cbw','clc','cld','cli','cmc','cmp',
- 'cmps','cmpsb','cmpsw','cwd','daa','das','dec','div','esc','hlt','idiv','imul','in','inc',
- 'int','into','iret','ja','jae','jb','jbe','jc','jcxz','je','jg','jge','jl','jle','jmp',
- 'jna','jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
- 'jo','jp','jpe','jpo','js','jz','lahf','lds','lea','les','lods','lodsb','lodsw','loop',
- 'loope','loopew','loopne','loopnew','loopnz','loopnzw','loopw','loopz','loopzw','mov',
- 'movs','movsb','movsw','mul','neg','nop','not','or','out','pop','popf','push','pushf',
- 'rcl','rcr','ret','retf','retn','rol','ror','sahf','sal','sar','sbb','scas','scasb','scasw',
- 'shl','shr','stc','std','sti','stos','stosb','stosw','sub','test','wait','xchg','xlat',
- 'xlatb','xor','bound','enter','ins','insb','insw','leave','outs','outsb','outsw','popa','pusha','pushw',
- 'arpl','lar','lsl','sgdt','sidt','sldt','smsw','str','verr','verw','clts','lgdt','lidt','lldt','lmsw','ltr',
- 'bsf','bsr','bt','btc','btr','bts','cdq','cmpsd','cwde','insd','iretd','iretdf','iretf',
- 'jecxz','lfs','lgs','lodsd','loopd','looped','loopned','loopnzd','loopzd','lss','movsd',
- 'movsx','movzx','outsd','popad','popfd','pushad','pushd','pushfd','scasd','seta','setae',
- 'setb','setbe','setc','sete','setg','setge','setl','setle','setna','setnae','setnb','setnbe',
- 'setnc','setne','setng','setnge','setnl','setnle','setno','setnp','setns','setnz','seto','setp',
- 'setpe','setpo','sets','setz','shld','shrd','stosd','bswap','cmpxchg','invd','invlpg','wbinvd','xadd','lock',
- 'rep','repe','repne','repnz','repz'
- ),
- /*FPU*/
- 2 => array(
- 'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp',
- 'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv',
- 'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1',
- 'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul',
- 'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv',
- 'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave',
- 'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',
- 'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',
- 'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',
- 'fstenvd','fucom','fucomp','fucompp'
- ),
- /*registers*/
- 3 => array(
- 'ah','al','ax','bh','bl','bp','bx','ch','cl','cr0','cr2','cr3','cs','cx','dh','di','dl',
- 'dr0','dr1','dr2','dr3','dr6','dr7','ds','dx','eax','ebp','ebx','ecx','edi','edx',
- 'es','esi','esp','fs','gs','si','sp','ss','st','tr3','tr4','tr5','tr6','tr7', 'ah', 'bh', 'ch', 'dh'
- ),
- /*Directive*/
- 4 => array(
- '186','286','286c','286p','287','386','386c','386p','387','486','486p',
- '8086','8087','alpha','break','code','const','continue','cref','data','data?',
- 'dosseg','else','elseif','endif','endw','err','err1','err2','errb',
- 'errdef','errdif','errdifi','erre','erridn','erridni','errnb','errndef',
- 'errnz','exit','fardata','fardata?','if','lall','lfcond','list','listall',
- 'listif','listmacro','listmacroall',' model','no87','nocref','nolist',
- 'nolistif','nolistmacro','radix','repeat','sall','seq','sfcond','stack',
- 'startup','tfcond','type','until','untilcxz','while','xall','xcref',
- 'xlist','alias','align','assume','catstr','comm','comment','db','dd','df','dosseg','dq',
- 'dt','dup','dw','echo','else','elseif','elseif1','elseif2','elseifb','elseifdef','elseifdif',
- 'elseifdifi','elseife','elseifidn','elseifidni','elseifnb','elseifndef','end',
- 'endif','endm','endp','ends','eq',' equ','even','exitm','extern','externdef','extrn','for',
- 'forc','ge','goto','group','high','highword','if','if1','if2','ifb','ifdef','ifdif',
- 'ifdifi','ife',' ifidn','ifidni','ifnb','ifndef','include','includelib','instr','invoke',
- 'irp','irpc','label','le','length','lengthof','local','low','lowword','lroffset',
- 'macro','mask','mod','msfloat','name','ne','offset','opattr','option','org','%out',
- 'page','popcontext','proc','proto','ptr','public','purge','pushcontext','record',
- 'repeat','rept','seg','segment','short','size','sizeof','sizestr','struc','struct',
- 'substr','subtitle','subttl','textequ','this','title','type','typedef','union','while','width',
- '.model', '.stack', '.code', '.data'
-
- ),
-
- /*Operands*/
- 5 => array(
- '@b','@f','addr','basic','byte','c','carry?','dword',
- 'far','far16','fortran','fword','near','near16','overflow?','parity?','pascal','qword',
- 'real4',' real8','real10','sbyte','sdword','sign?','stdcall','sword','syscall','tbyte',
- 'vararg','word','zero?','flat','near32','far32',
- 'abs','all','assumes','at','casemap','common','compact',
- 'cpu','dotname','emulator','epilogue','error','export','expr16','expr32','farstack','flat',
- 'forceframe','huge','language','large','listing','ljmp','loadds','m510','medium','memory',
- 'nearstack','nodotname','noemulator','nokeyword','noljmp','nom510','none','nonunique',
- 'nooldmacros','nooldstructs','noreadonly','noscoped','nosignextend','nothing',
- 'notpublic','oldmacros','oldstructs','os_dos','para','private','prologue','radix',
- 'readonly','req','scoped','setif2','smallstack','tiny','use16','use32','uses'
- )
- ),
- 'SYMBOLS' => array(
- '[', ']', '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #00007f;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #46aa03; font-weight:bold;',
- 4 => 'color: #0000ff;',
- 5 => 'color: #0000ff;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #adadad; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f007f;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #ff0000;',
- 1 => 'color: #ff0000;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '0[0-9a-fA-F]{1,32}[hH]',
- 1 => '[01]{1,64}[bB]'
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 8
-);
-
-?>
+<?php
+/*************************************************************************************
+ * asm.php
+ * -------
+ * Author: Tux (tux at inmail.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/27
+ *
+ * x86 Assembler language file for GeSHi.
+ * Words are from SciTe configuration file (based on NASM syntax)
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ * - Added support for URLs
+ * - Added binary and hexadecimal regexps
+ * 2004/08/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'ASM',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ /*CPU*/
+ 1 => array(
+ 'aaa','aad','aam','aas','adc','add','and','call','cbw','clc','cld','cli','cmc','cmp',
+ 'cmps','cmpsb','cmpsw','cwd','daa','das','dec','div','esc','hlt','idiv','imul','in','inc',
+ 'int','into','iret','ja','jae','jb','jbe','jc','jcxz','je','jg','jge','jl','jle','jmp',
+ 'jna','jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
+ 'jo','jp','jpe','jpo','js','jz','lahf','lds','lea','les','lods','lodsb','lodsw','loop',
+ 'loope','loopew','loopne','loopnew','loopnz','loopnzw','loopw','loopz','loopzw','mov',
+ 'movs','movsb','movsw','mul','neg','nop','not','or','out','pop','popf','push','pushf',
+ 'rcl','rcr','ret','retf','retn','rol','ror','sahf','sal','sar','sbb','scas','scasb','scasw',
+ 'shl','shr','stc','std','sti','stos','stosb','stosw','sub','test','wait','xchg','xlat',
+ 'xlatb','xor','bound','enter','ins','insb','insw','leave','outs','outsb','outsw','popa','pusha','pushw',
+ 'arpl','lar','lsl','sgdt','sidt','sldt','smsw','str','verr','verw','clts','lgdt','lidt','lldt','lmsw','ltr',
+ 'bsf','bsr','bt','btc','btr','bts','cdq','cmpsd','cwde','insd','iretd','iretdf','iretf',
+ 'jecxz','lfs','lgs','lodsd','loopd','looped','loopned','loopnzd','loopzd','lss','movsd',
+ 'movsx','movzx','outsd','popad','popfd','pushad','pushd','pushfd','scasd','seta','setae',
+ 'setb','setbe','setc','sete','setg','setge','setl','setle','setna','setnae','setnb','setnbe',
+ 'setnc','setne','setng','setnge','setnl','setnle','setno','setnp','setns','setnz','seto','setp',
+ 'setpe','setpo','sets','setz','shld','shrd','stosd','bswap','cmpxchg','invd','invlpg','wbinvd','xadd','lock',
+ 'rep','repe','repne','repnz','repz'
+ ),
+ /*FPU*/
+ 2 => array(
+ 'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp',
+ 'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv',
+ 'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1',
+ 'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul',
+ 'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv',
+ 'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave',
+ 'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',
+ 'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',
+ 'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',
+ 'fstenvd','fucom','fucomp','fucompp'
+ ),
+ /*registers*/
+ 3 => array(
+ 'ah','al','ax','bh','bl','bp','bx','ch','cl','cr0','cr2','cr3','cs','cx','dh','di','dl',
+ 'dr0','dr1','dr2','dr3','dr6','dr7','ds','dx','eax','ebp','ebx','ecx','edi','edx',
+ 'es','esi','esp','fs','gs','si','sp','ss','st','tr3','tr4','tr5','tr6','tr7', 'ah', 'bh', 'ch', 'dh'
+ ),
+ /*Directive*/
+ 4 => array(
+ '186','286','286c','286p','287','386','386c','386p','387','486','486p',
+ '8086','8087','alpha','break','code','const','continue','cref','data','data?',
+ 'dosseg','else','elseif','endif','endw','err','err1','err2','errb',
+ 'errdef','errdif','errdifi','erre','erridn','erridni','errnb','errndef',
+ 'errnz','exit','fardata','fardata?','if','lall','lfcond','list','listall',
+ 'listif','listmacro','listmacroall',' model','no87','nocref','nolist',
+ 'nolistif','nolistmacro','radix','repeat','sall','seq','sfcond','stack',
+ 'startup','tfcond','type','until','untilcxz','while','xall','xcref',
+ 'xlist','alias','align','assume','catstr','comm','comment','db','dd','df','dosseg','dq',
+ 'dt','dup','dw','echo','else','elseif','elseif1','elseif2','elseifb','elseifdef','elseifdif',
+ 'elseifdifi','elseife','elseifidn','elseifidni','elseifnb','elseifndef','end',
+ 'endif','endm','endp','ends','eq',' equ','even','exitm','extern','externdef','extrn','for',
+ 'forc','ge','goto','group','high','highword','if','if1','if2','ifb','ifdef','ifdif',
+ 'ifdifi','ife',' ifidn','ifidni','ifnb','ifndef','include','includelib','instr','invoke',
+ 'irp','irpc','label','le','length','lengthof','local','low','lowword','lroffset',
+ 'macro','mask','mod','msfloat','name','ne','offset','opattr','option','org','%out',
+ 'page','popcontext','proc','proto','ptr','public','purge','pushcontext','record',
+ 'repeat','rept','seg','segment','short','size','sizeof','sizestr','struc','struct',
+ 'substr','subtitle','subttl','textequ','this','title','type','typedef','union','while','width',
+ '.model', '.stack', '.code', '.data'
+
+ ),
+
+ /*Operands*/
+ 5 => array(
+ '@b','@f','addr','basic','byte','c','carry?','dword',
+ 'far','far16','fortran','fword','near','near16','overflow?','parity?','pascal','qword',
+ 'real4',' real8','real10','sbyte','sdword','sign?','stdcall','sword','syscall','tbyte',
+ 'vararg','word','zero?','flat','near32','far32',
+ 'abs','all','assumes','at','casemap','common','compact',
+ 'cpu','dotname','emulator','epilogue','error','export','expr16','expr32','farstack','flat',
+ 'forceframe','huge','language','large','listing','ljmp','loadds','m510','medium','memory',
+ 'nearstack','nodotname','noemulator','nokeyword','noljmp','nom510','none','nonunique',
+ 'nooldmacros','nooldstructs','noreadonly','noscoped','nosignextend','nothing',
+ 'notpublic','oldmacros','oldstructs','os_dos','para','private','prologue','radix',
+ 'readonly','req','scoped','setif2','smallstack','tiny','use16','use32','uses'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #00007f;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #46aa03; font-weight:bold;',
+ 4 => 'color: #0000ff;',
+ 5 => 'color: #0000ff;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #adadad; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f007f;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #ff0000;',
+ 1 => 'color: #ff0000;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '0[0-9a-fA-F]{1,32}[hH]',
+ 1 => '[01]{1,64}[bB]'
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 8
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/asp.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/asp.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/asp.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,153 +1,153 @@
-<?php
-/*************************************************************************************
- * asp.php
- * --------
- * Author: Amit Gupta (http://blog.igeek.info/)
- * Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/13
- *
- * ASP language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/12/30 (1.0.3)
- * - Strings only delimited by ", comments by '
- * 2004/11/27 (1.0.2)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.1)
- * - Added support for URLs
- * 2004/08/13 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Include all the functions, keywords etc that I have missed
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'ASP',
- 'COMMENT_SINGLE' => array(1 => "'", 2 => '//'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => 0,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'include', 'file', 'Dim', 'Option', 'Explicit', 'Implicit', 'Set', 'Select', 'ReDim', 'Preserve',
- 'ByVal', 'ByRef', 'End', 'Private', 'Public', 'If', 'Then', 'Else', 'ElseIf', 'Case', 'With', 'NOT',
- 'While', 'Wend', 'For', 'Loop', 'Do', 'Request', 'Response', 'Server', 'ADODB', 'Session', 'Application',
- 'Each', 'In', 'Get', 'Next', 'INT', 'CINT', 'CBOOL', 'CDATE', 'CBYTE', 'CCUR', 'CDBL', 'CLNG', 'CSNG',
- 'CSTR', 'Fix', 'Is', 'Sgn', 'String', 'Boolean', 'Currency', 'Me', 'Single', 'Long', 'Integer', 'Byte',
- 'Variant', 'Double', 'To', 'Let', 'Xor', 'Resume', 'On', 'Error', 'Imp', 'GoTo', 'Call', 'Global'
- ),
- 2 => array(
- 'Null', 'Nothing', 'And',
- 'False', '<%', '%>',
- '<script language=', '</script>',
- 'True', 'var', 'Or', 'BOF', 'EOF',
- 'Function', 'Class', 'New', 'Sub'
- ),
- 3 => array(
- 'CreateObject', 'Write', 'Redirect', 'Cookies', 'BinaryRead', 'ClientCertificate', 'Form', 'QueryString',
- 'ServerVariables', 'TotalBytes', 'AddHeader', 'AppendToLog', 'BinaryWrite', 'Buffer', 'CacheControl',
- 'Charset', 'Clear', 'ContentType', 'End()', 'Expires', 'ExpiresAbsolute', 'Flush()', 'IsClientConnected',
- 'PICS', 'Status', 'Connection', 'Recordset', 'Execute', 'Abandon', 'Lock', 'UnLock', 'Command', 'Fields',
- 'Properties', 'Property', 'Send', 'Replace', 'InStr', 'TRIM', 'NOW', 'Day', 'Month', 'Hour', 'Minute', 'Second',
- 'Year', 'MonthName', 'LCase', 'UCase', 'Abs', 'Array', 'As', 'LEN', 'MoveFirst', 'MoveLast', 'MovePrevious',
- 'MoveNext', 'LBound', 'UBound', 'Transfer', 'Open', 'Close', 'MapPath', 'FileExists', 'OpenTextFile', 'ReadAll'
- )
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #990099; font-weight: bold;',
- 2 => 'color: #0000ff; font-weight: bold;',
- 3 => 'color: #330066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008000;',
- 2 => 'color: #ff6600;',
- 'MULTI' => 'color: #008000;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #006600; font-weight:bold'
- ),
- 'STRINGS' => array(
- 0 => 'color: #cc0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #800000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #9900cc;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #006600; font-weight: bold'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<%' => '%>'
- ),
- 1 => array(
- '<script language="vbscript" runat="server">' => '</script>'
- ),
- 2 => array(
- '<script language="javascript" runat="server">' => '</script>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- 1 => true,
- 2 => true,
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * asp.php
+ * --------
+ * Author: Amit Gupta (http://blog.igeek.info/)
+ * Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/13
+ *
+ * ASP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/30 (1.0.3)
+ * - Strings only delimited by ", comments by '
+ * 2004/11/27 (1.0.2)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ * - Added support for URLs
+ * 2004/08/13 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Include all the functions, keywords etc that I have missed
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'ASP',
+ 'COMMENT_SINGLE' => array(1 => "'", 2 => '//'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => 0,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'include', 'file', 'Dim', 'Option', 'Explicit', 'Implicit', 'Set', 'Select', 'ReDim', 'Preserve',
+ 'ByVal', 'ByRef', 'End', 'Private', 'Public', 'If', 'Then', 'Else', 'ElseIf', 'Case', 'With', 'NOT',
+ 'While', 'Wend', 'For', 'Loop', 'Do', 'Request', 'Response', 'Server', 'ADODB', 'Session', 'Application',
+ 'Each', 'In', 'Get', 'Next', 'INT', 'CINT', 'CBOOL', 'CDATE', 'CBYTE', 'CCUR', 'CDBL', 'CLNG', 'CSNG',
+ 'CSTR', 'Fix', 'Is', 'Sgn', 'String', 'Boolean', 'Currency', 'Me', 'Single', 'Long', 'Integer', 'Byte',
+ 'Variant', 'Double', 'To', 'Let', 'Xor', 'Resume', 'On', 'Error', 'Imp', 'GoTo', 'Call', 'Global'
+ ),
+ 2 => array(
+ 'Null', 'Nothing', 'And',
+ 'False', '<%', '%>',
+ '<script language=', '</script>',
+ 'True', 'var', 'Or', 'BOF', 'EOF',
+ 'Function', 'Class', 'New', 'Sub'
+ ),
+ 3 => array(
+ 'CreateObject', 'Write', 'Redirect', 'Cookies', 'BinaryRead', 'ClientCertificate', 'Form', 'QueryString',
+ 'ServerVariables', 'TotalBytes', 'AddHeader', 'AppendToLog', 'BinaryWrite', 'Buffer', 'CacheControl',
+ 'Charset', 'Clear', 'ContentType', 'End()', 'Expires', 'ExpiresAbsolute', 'Flush()', 'IsClientConnected',
+ 'PICS', 'Status', 'Connection', 'Recordset', 'Execute', 'Abandon', 'Lock', 'UnLock', 'Command', 'Fields',
+ 'Properties', 'Property', 'Send', 'Replace', 'InStr', 'TRIM', 'NOW', 'Day', 'Month', 'Hour', 'Minute', 'Second',
+ 'Year', 'MonthName', 'LCase', 'UCase', 'Abs', 'Array', 'As', 'LEN', 'MoveFirst', 'MoveLast', 'MovePrevious',
+ 'MoveNext', 'LBound', 'UBound', 'Transfer', 'Open', 'Close', 'MapPath', 'FileExists', 'OpenTextFile', 'ReadAll'
+ )
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #990099; font-weight: bold;',
+ 2 => 'color: #0000ff; font-weight: bold;',
+ 3 => 'color: #330066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008000;',
+ 2 => 'color: #ff6600;',
+ 'MULTI' => 'color: #008000;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #006600; font-weight:bold'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #cc0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #800000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #9900cc;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #006600; font-weight: bold'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<%' => '%>'
+ ),
+ 1 => array(
+ '<script language="vbscript" runat="server">' => '</script>'
+ ),
+ 2 => array(
+ '<script language="javascript" runat="server">' => '</script>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ 1 => true,
+ 2 => true,
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/autoit.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/autoit.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/autoit.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,453 +1,453 @@
-<?php
-/*************************************************************************************
- * autoit.php
- * --------
- * Author: big_daddy (robert.i.anthony at gmail.com)
- * Copyright: (c) 2006 and to GESHi ;)
- * Release Version: 1.0.7.21
- * Date Started: 2006/01/26
- *
- * Current bugs & todo:
- * ----------
- * - dosn't highlight symbols (Please note that in 1.0.X these are not used. Hopefully they will be used in 1.2.X.)
- * - not sure how to get sendkeys to work " {!}, {SPACE} etc... "
- * - jut copyied the regexp for variable from php so this HAVE to be checked and fixed to a better one ;)
- *
- * Reference: http://www.autoitscript.com/autoit3/docs/
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'AutoIt',
- 'COMMENT_SINGLE' => array(';'),
- 'COMMENT_MULTI' => array('#comments-start' => '#comments-end', '#cs' => '#ce'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'false', 'and', 'byref', 'case', 'const',
- 'continuecase', 'continueloop', 'default', 'dim', 'do',
- 'else', 'elseif', 'endfunc', 'endif', 'endselect',
- 'endswitch', 'endwith', 'enum', 'exit', 'exitloop',
- 'for', 'func', 'global', 'if', 'in',
- 'local', 'next', 'not', 'or', 'redim',
- 'return', 'select', 'step', 'switch', 'then',
- 'to', 'true', 'until', 'wend', 'while',
- 'with'
- ),
- 2 => array(
- '@appdatacommondir', '@appdatadir', '@autoitexe', '@autoitpid',
- '@autoitversion', '@com_eventobj', '@commonfilesdir', '@compiled',
- '@computername', '@comspec', '@cr', '@crlf', '@desktopcommondir',
- '@desktopdepth', '@desktopdir', '@desktopheight',
- '@desktoprefresh', '@desktopwidth', '@documentscommondir',
- '@error', '@exitcode', '@exitmethod', '@extended',
- '@favoritescommondir', '@favoritesdir', '@gui_ctrlhandle',
- '@gui_ctrlid', '@gui_dragfile', '@gui_dragid', '@gui_dropid',
- '@gui_winhandle', '@homedrive', '@homepath', '@homeshare',
- '@hotkeypressed', '@hour', '@inetgetactive', '@inetgetbytesread',
- '@ipaddress1', '@ipaddress2', '@ipaddress3', '@ipaddress4',
- '@kblayout', '@lf', '@logondnsdomain', '@logondomain',
- '@logonserver', '@mday', '@min', '@mon', '@mydocumentsdir',
- '@numparams', '@osbuild', '@oslang', '@osservicepack', '@ostype',
- '@osversion', '@processorarch', '@programfilesdir',
- '@programscommondir', '@programsdir', '@scriptdir',
- '@scriptfullpath', '@scriptlinenumber', '@scriptname', '@sec',
- '@startmenucommondir', '@startmenudir', '@startupcommondir',
- '@startupdir', '@sw_disable', '@sw_enable', '@sw_hide', '@sw_lock',
- '@sw_maximize', '@sw_minimize', '@sw_restore', '@sw_show',
- '@sw_showdefault', '@sw_showmaximized', '@sw_showminimized',
- '@sw_showminnoactive', '@sw_showna', '@sw_shownoactivate',
- '@sw_shownormal', '@sw_unlock', '@systemdir', '@tab', '@tempdir',
- '@tray_id', '@trayiconflashing', '@trayiconvisible', '@username',
- '@userprofiledir', '@wday', '@windowsdir', '@workingdir', '@yday',
- '@year'
- ),
- 3 => array(
- 'abs', 'acos', 'adlibdisable', 'adlibenable', 'asc', 'asin',
- 'assign', 'atan', 'autoitsetoption', 'autoitwingettitle',
- 'autoitwinsettitle', 'beep', 'binarystring', 'bitand', 'bitnot',
- 'bitor', 'bitrotate', 'bitshift', 'bitxor', 'blockinput', 'break',
- 'call', 'cdtray', 'ceiling', 'chr', 'clipget', 'clipput',
- 'consoleread', 'consolewrite', 'consolewriteerror', 'controlclick',
- 'controlcommand', 'controldisable', 'controlenable',
- 'controlfocus', 'controlgetfocus', 'controlgethandle',
- 'controlgetpos', 'controlgettext', 'controlhide',
- 'controllistview', 'controlmove', 'controlsend', 'controlsettext',
- 'controlshow', 'cos', 'dec', 'dircopy', 'dircreate', 'dirgetsize',
- 'dirmove', 'dirremove', 'dllcall', 'dllclose', 'dllopen',
- 'dllstructcreate', 'dllstructgetdata', 'dllstructgetptr',
- 'dllstructgetsize', 'dllstructsetdata', 'drivegetdrive',
- 'drivegetfilesystem', 'drivegetlabel', 'drivegetserial',
- 'drivegettype', 'drivemapadd', 'drivemapdel', 'drivemapget',
- 'drivesetlabel', 'drivespacefree', 'drivespacetotal',
- 'drivestatus', 'envget', 'envset', 'envupdate', 'eval', 'execute',
- 'exp', 'filechangedir', 'fileclose', 'filecopy',
- 'filecreatentfslink', 'filecreateshortcut', 'filedelete',
- 'fileexists', 'filefindfirstfile', 'filefindnextfile',
- 'filegetattrib', 'filegetlongname', 'filegetshortcut',
- 'filegetshortname', 'filegetsize', 'filegettime', 'filegetversion',
- 'fileinstall', 'filemove', 'fileopen', 'fileopendialog',
- 'fileread', 'filereadline', 'filerecycle', 'filerecycleempty',
- 'filesavedialog', 'fileselectfolder', 'filesetattrib',
- 'filesettime', 'filewrite', 'filewriteline', 'floor',
- 'ftpsetproxy', 'guicreate', 'guictrlcreateavi',
- 'guictrlcreatebutton', 'guictrlcreatecheckbox',
- 'guictrlcreatecombo', 'guictrlcreatecontextmenu',
- 'guictrlcreatedate', 'guictrlcreatedummy', 'guictrlcreateedit',
- 'guictrlcreategraphic', 'guictrlcreategroup', 'guictrlcreateicon',
- 'guictrlcreateinput', 'guictrlcreatelabel', 'guictrlcreatelist',
- 'guictrlcreatelistview', 'guictrlcreatelistviewitem',
- 'guictrlcreatemenu', 'guictrlcreatemenuitem',
- 'guictrlcreatemonthcal', 'guictrlcreateobj', 'guictrlcreatepic',
- 'guictrlcreateprogress', 'guictrlcreateradio',
- 'guictrlcreateslider', 'guictrlcreatetab', 'guictrlcreatetabitem',
- 'guictrlcreatetreeview', 'guictrlcreatetreeviewitem',
- 'guictrlcreateupdown', 'guictrldelete', 'guictrlgethandle',
- 'guictrlgetstate', 'guictrlread', 'guictrlrecvmsg',
- 'guictrlregisterlistviewsort', 'guictrlsendmsg',
- 'guictrlsendtodummy', 'guictrlsetbkcolor', 'guictrlsetcolor',
- 'guictrlsetcursor', 'guictrlsetdata', 'guictrlsetfont',
- 'guictrlsetgraphic', 'guictrlsetimage', 'guictrlsetlimit',
- 'guictrlsetonevent', 'guictrlsetpos', 'guictrlsetresizing',
- 'guictrlsetstate', 'guictrlsetstyle', 'guictrlsettip', 'guidelete',
- 'guigetcursorinfo', 'guigetmsg', 'guiregistermsg', 'guisetbkcolor',
- 'guisetcoord', 'guisetcursor', 'guisetfont', 'guisethelp',
- 'guiseticon', 'guisetonevent', 'guisetstate', 'guistartgroup',
- 'guiswitch', 'hex', 'hotkeyset', 'httpsetproxy', 'hwnd', 'inetget',
- 'inetgetsize', 'inidelete', 'iniread', 'inireadsection',
- 'inireadsectionnames', 'inirenamesection', 'iniwrite',
- 'iniwritesection', 'inputbox', 'int', 'isadmin', 'isarray',
- 'isbinarystring', 'isbool', 'isdeclared', 'isdllstruct', 'isfloat',
- 'ishwnd', 'isint', 'iskeyword', 'isnumber', 'isobj', 'isstring',
- 'log', 'memgetstats', 'mod', 'mouseclick', 'mouseclickdrag',
- 'mousedown', 'mousegetcursor', 'mousegetpos', 'mousemove',
- 'mouseup', 'mousewheel', 'msgbox', 'number', 'objcreate',
- 'objevent', 'objget', 'objname', 'opt', 'ping', 'pixelchecksum',
- 'pixelgetcolor', 'pixelsearch', 'pluginclose', 'pluginopen',
- 'processclose', 'processexists', 'processlist',
- 'processsetpriority', 'processwait', 'processwaitclose',
- 'progressoff', 'progresson', 'progressset', 'random', 'regdelete',
- 'regenumkey', 'regenumval', 'regread', 'regwrite', 'round', 'run',
- 'runasset', 'runwait', 'send', 'seterror', 'setextended',
- 'shellexecute', 'shellexecutewait', 'shutdown', 'sin', 'sleep',
- 'soundplay', 'soundsetwavevolume', 'splashimageon', 'splashoff',
- 'splashtexton', 'sqrt', 'srandom', 'statusbargettext',
- 'stderrread', 'stdinwrite', 'stdoutread', 'string', 'stringaddcr',
- 'stringformat', 'stringinstr', 'stringisalnum', 'stringisalpha',
- 'stringisascii', 'stringisdigit', 'stringisfloat', 'stringisint',
- 'stringislower', 'stringisspace', 'stringisupper',
- 'stringisxdigit', 'stringleft', 'stringlen', 'stringlower',
- 'stringmid', 'stringregexp', 'stringregexpreplace',
- 'stringreplace', 'stringright', 'stringsplit', 'stringstripcr',
- 'stringstripws', 'stringtrimleft', 'stringtrimright',
- 'stringupper', 'tan', 'tcpaccept', 'tcpclosesocket', 'tcpconnect',
- 'tcplisten', 'tcpnametoip', 'tcprecv', 'tcpsend', 'tcpshutdown',
- 'tcpstartup', 'timerdiff', 'timerinit', 'timerstart', 'timerstop',
- 'tooltip', 'traycreateitem', 'traycreatemenu', 'traygetmsg',
- 'trayitemdelete', 'trayitemgethandle', 'trayitemgetstate',
- 'trayitemgettext', 'trayitemsetonevent', 'trayitemsetstate',
- 'trayitemsettext', 'traysetclick', 'trayseticon', 'traysetonevent',
- 'traysetpauseicon', 'traysetstate', 'traysettooltip', 'traytip',
- 'ubound', 'udpbind', 'udpclosesocket', 'udpopen', 'udprecv',
- 'udpsend', 'winactivate', 'winactive', 'winclose', 'winexists',
- 'winflash', 'wingetcaretpos', 'wingetclasslist',
- 'wingetclientsize', 'wingethandle', 'wingetpos', 'wingetprocess',
- 'wingetstate', 'wingettext', 'wingettitle', 'winkill', 'winlist',
- 'winmenuselectitem', 'winminimizeall', 'winminimizeallundo',
- 'winmove', 'winsetontop', 'winsetstate', 'winsettitle',
- 'winsettrans', 'winshow', 'winwait', 'winwaitactive',
- 'winwaitclose', 'winwaitnotactive'
- ),
- 4 => array(
- '_arrayadd', '_arraybinarysearch', '_arraycreate', '_arraydelete',
- '_arraydisplay', '_arrayinsert', '_arraymax', '_arraymaxindex',
- '_arraymin', '_arrayminindex', '_arraypop', '_arraypush',
- '_arrayreverse', '_arraysearch', '_arraysort', '_arrayswap',
- '_arraytoclip', '_arraytostring', '_arraytrim', '_colorgetblue',
- '_colorgetgreen', '_colorgetred', '_dateadd', '_datedayofweek',
- '_datedaysinmonth', '_datediff', '_dateisleapyear', '_dateisvalid',
- '_datetimeformat', '_datetimesplit', '_datetodayofweek',
- '_datetodayofweekiso', '_datetodayvalue', '_dayvaluetodate',
- '_now', '_nowcalc', '_nowcalcdate', '_nowdate', '_nowtime',
- '_setdate', '_settime', '_tickstotime', '_timetoticks',
- '_weeknumberiso', '_filecountlines', '_filecreate',
- '_filelisttoarray', '_fileprint', '_filereadtoarray',
- '_filewritefromarray', '_filewritelog', '_filewritetoline',
- '_pathfull', '_pathmake', '_pathsplit', '_replacestringinfile',
- '_tempfile', '_guictrlcomboadddir', '_guictrlcomboaddstring',
- '_guictrlcomboautocomplete', '_guictrlcombodeletestring',
- '_guictrlcombofindstring', '_guictrlcombogetcount',
- '_guictrlcombogetcursel', '_guictrlcombogetdroppedcontrolrect',
- '_guictrlcombogetdroppedstate', '_guictrlcombogetdroppedwidth',
- '_guictrlcombogeteditsel', '_guictrlcombogetextendedui',
- '_guictrlcombogethorizontalextent', '_guictrlcombogetitemheight',
- '_guictrlcombogetlbtext', '_guictrlcombogetlbtextlen',
- '_guictrlcombogetlist', '_guictrlcombogetlocale',
- '_guictrlcombogetminvisible', '_guictrlcombogettopindex',
- '_guictrlcomboinitstorage', '_guictrlcomboinsertstring',
- '_guictrlcombolimittext', '_guictrlcomboresetcontent',
- '_guictrlcomboselectstring', '_guictrlcombosetcursel',
- '_guictrlcombosetdroppedwidth', '_guictrlcomboseteditsel',
- '_guictrlcombosetextendedui', '_guictrlcombosethorizontalextent',
- '_guictrlcombosetitemheight', '_guictrlcombosetminvisible',
- '_guictrlcombosettopindex', '_guictrlcomboshowdropdown',
- '_guictrleditcanundo', '_guictrleditemptyundobuffer',
- '_guictrleditfind', '_guictrleditgetfirstvisibleline',
- '_guictrleditgetline', '_guictrleditgetlinecount',
- '_guictrleditgetmodify', '_guictrleditgetrect',
- '_guictrleditgetsel', '_guictrleditlinefromchar',
- '_guictrleditlineindex', '_guictrleditlinelength',
- '_guictrleditlinescroll', '_guictrleditreplacesel',
- '_guictrleditscroll', '_guictrleditsetmodify',
- '_guictrleditsetrect', '_guictrleditsetsel', '_guictrleditundo',
- '_guictrlipaddressclear', '_guictrlipaddresscreate',
- '_guictrlipaddressdelete', '_guictrlipaddressget',
- '_guictrlipaddressisblank', '_guictrlipaddressset',
- '_guictrlipaddresssetfocus', '_guictrlipaddresssetfont',
- '_guictrlipaddresssetrange', '_guictrlipaddressshowhide',
- '_guictrllistadddir', '_guictrllistadditem', '_guictrllistclear',
- '_guictrllistcount', '_guictrllistdeleteitem',
- '_guictrllistfindstring', '_guictrllistgetanchorindex',
- '_guictrllistgetcaretindex', '_guictrllistgethorizontalextent',
- '_guictrllistgetinfo', '_guictrllistgetitemrect',
- '_guictrllistgetlocale', '_guictrllistgetselcount',
- '_guictrllistgetselitems', '_guictrllistgetselitemstext',
- '_guictrllistgetselstate', '_guictrllistgettext',
- '_guictrllistgettextlen', '_guictrllistgettopindex',
- '_guictrllistinsertitem', '_guictrllistreplacestring',
- '_guictrllistselectedindex', '_guictrllistselectindex',
- '_guictrllistselectstring', '_guictrllistselitemrange',
- '_guictrllistselitemrangeex', '_guictrllistsetanchorindex',
- '_guictrllistsetcaretindex', '_guictrllistsethorizontalextent',
- '_guictrllistsetlocale', '_guictrllistsetsel',
- '_guictrllistsettopindex', '_guictrllistsort',
- '_guictrllistswapstring', '_guictrllistviewcopyitems',
- '_guictrllistviewdeleteallitems', '_guictrllistviewdeletecolumn',
- '_guictrllistviewdeleteitem',
- '_guictrllistviewdeleteitemsselected',
- '_guictrllistviewensurevisible', '_guictrllistviewfinditem',
- '_guictrllistviewgetbackcolor', '_guictrllistviewgetcallbackmask',
- '_guictrllistviewgetcheckedstate',
- '_guictrllistviewgetcolumnorder', '_guictrllistviewgetcolumnwidth',
- '_guictrllistviewgetcounterpage', '_guictrllistviewgetcursel',
- '_guictrllistviewgetextendedlistviewstyle',
- '_guictrllistviewgetheader', '_guictrllistviewgethotcursor',
- '_guictrllistviewgethotitem', '_guictrllistviewgethovertime',
- '_guictrllistviewgetitemcount', '_guictrllistviewgetitemtext',
- '_guictrllistviewgetitemtextarray', '_guictrllistviewgetnextitem',
- '_guictrllistviewgetselectedcount',
- '_guictrllistviewgetselectedindices',
- '_guictrllistviewgetsubitemscount', '_guictrllistviewgettopindex',
- '_guictrllistviewgetunicodeformat', '_guictrllistviewhidecolumn',
- '_guictrllistviewinsertcolumn', '_guictrllistviewinsertitem',
- '_guictrllistviewjustifycolumn', '_guictrllistviewscroll',
- '_guictrllistviewsetcheckstate',
- '_guictrllistviewsetcolumnheadertext',
- '_guictrllistviewsetcolumnorder', '_guictrllistviewsetcolumnwidth',
- '_guictrllistviewsethotitem', '_guictrllistviewsethovertime',
- '_guictrllistviewsetitemcount', '_guictrllistviewsetitemselstate',
- '_guictrllistviewsetitemtext', '_guictrllistviewsort',
- '_guictrlmonthcalget1stdow', '_guictrlmonthcalgetcolor',
- '_guictrlmonthcalgetdelta', '_guictrlmonthcalgetmaxselcount',
- '_guictrlmonthcalgetmaxtodaywidth',
- '_guictrlmonthcalgetminreqrect', '_guictrlmonthcalset1stdow',
- '_guictrlmonthcalsetcolor', '_guictrlmonthcalsetdelta',
- '_guictrlmonthcalsetmaxselcount', '_guictrlslidercleartics',
- '_guictrlslidergetlinesize', '_guictrlslidergetnumtics',
- '_guictrlslidergetpagesize', '_guictrlslidergetpos',
- '_guictrlslidergetrangemax', '_guictrlslidergetrangemin',
- '_guictrlslidersetlinesize', '_guictrlslidersetpagesize',
- '_guictrlslidersetpos', '_guictrlslidersetticfreq',
- '_guictrlstatusbarcreate', '_guictrlstatusbarcreateprogress',
- '_guictrlstatusbardelete', '_guictrlstatusbargetborders',
- '_guictrlstatusbargeticon', '_guictrlstatusbargetparts',
- '_guictrlstatusbargetrect', '_guictrlstatusbargettext',
- '_guictrlstatusbargettextlength', '_guictrlstatusbargettip',
- '_guictrlstatusbargetunicode', '_guictrlstatusbarissimple',
- '_guictrlstatusbarresize', '_guictrlstatusbarsetbkcolor',
- '_guictrlstatusbarseticon', '_guictrlstatusbarsetminheight',
- '_guictrlstatusbarsetparts', '_guictrlstatusbarsetsimple',
- '_guictrlstatusbarsettext', '_guictrlstatusbarsettip',
- '_guictrlstatusbarsetunicode', '_guictrlstatusbarshowhide',
- '_guictrltabdeleteallitems', '_guictrltabdeleteitem',
- '_guictrltabdeselectall', '_guictrltabgetcurfocus',
- '_guictrltabgetcursel', '_guictrltabgetextendedstyle',
- '_guictrltabgetitemcount', '_guictrltabgetitemrect',
- '_guictrltabgetrowcount', '_guictrltabgetunicodeformat',
- '_guictrltabhighlightitem', '_guictrltabsetcurfocus',
- '_guictrltabsetcursel', '_guictrltabsetmintabwidth',
- '_guictrltabsetunicodeformat', '_guictrltreeviewdeleteallitems',
- '_guictrltreeviewdeleteitem', '_guictrltreeviewexpand',
- '_guictrltreeviewgetbkcolor', '_guictrltreeviewgetcount',
- '_guictrltreeviewgetindent', '_guictrltreeviewgetlinecolor',
- '_guictrltreeviewgetparenthandle', '_guictrltreeviewgetparentid',
- '_guictrltreeviewgetstate', '_guictrltreeviewgettext',
- '_guictrltreeviewgettextcolor', '_guictrltreeviewgettree',
- '_guictrltreeviewinsertitem', '_guictrltreeviewsetbkcolor',
- '_guictrltreeviewseticon', '_guictrltreeviewsetindent',
- '_guictrltreeviewsetlinecolor', '_guictrltreeviewsetstate',
- '_guictrltreeviewsettext', '_guictrltreeviewsettextcolor',
- '_guictrltreeviewsort', '_ie_example', '_ie_introduction',
- '_ie_versioninfo', '_ieaction', '_ieattach', '_iebodyreadhtml',
- '_iebodyreadtext', '_iebodywritehtml', '_iecreate',
- '_iecreateembedded', '_iedocgetobj', '_iedocinserthtml',
- '_iedocinserttext', '_iedocreadhtml', '_iedocwritehtml',
- '_ieerrorhandlerderegister', '_ieerrorhandlerregister',
- '_ieerrornotify', '_ieformelementcheckboxselect',
- '_ieformelementgetcollection', '_ieformelementgetobjbyname',
- '_ieformelementgetvalue', '_ieformelementoptionselect',
- '_ieformelementradioselect', '_ieformelementsetvalue',
- '_ieformgetcollection', '_ieformgetobjbyname', '_ieformimageclick',
- '_ieformreset', '_ieformsubmit', '_ieframegetcollection',
- '_ieframegetobjbyname', '_iegetobjbyname',
- '_ieheadinserteventscript', '_ieimgclick', '_ieimggetcollection',
- '_ieisframeset', '_ielinkclickbyindex', '_ielinkclickbytext',
- '_ielinkgetcollection', '_ieloadwait', '_ieloadwaittimeout',
- '_ienavigate', '_iepropertyget', '_iepropertyset', '_iequit',
- '_ietablegetcollection', '_ietablewritetoarray',
- '_ietagnameallgetcollection', '_ietagnamegetcollection', '_getip',
- '_inetexplorercapable', '_inetgetsource', '_inetmail',
- '_inetsmtpmail', '_tcpiptoname', '_degree', '_mathcheckdiv',
- '_max', '_min', '_radian', '_choosecolor', '_choosefont',
- '_clipputfile', '_iif', '_ispressed', '_mousetrap', '_singleton',
- '_processgetname', '_processgetpriority', '_rundos',
- '_sendmessage', '_soundclose', '_soundlength', '_soundopen',
- '_soundpause', '_soundplay', '_soundpos', '_soundresume',
- '_soundseek', '_soundstatus', '_soundstop', '_sqlite_changes',
- '_sqlite_close', '_sqlite_display2dresult', '_sqlite_encode',
- '_sqlite_errcode', '_sqlite_errmsg', '_sqlite_escape',
- '_sqlite_exec', '_sqlite_fetchdata', '_sqlite_fetchnames',
- '_sqlite_gettable', '_sqlite_gettable2d',
- '_sqlite_lastinsertrowid', '_sqlite_libversion', '_sqlite_open',
- '_sqlite_query', '_sqlite_queryfinalize', '_sqlite_queryreset',
- '_sqlite_querysinglerow', '_sqlite_savemode', '_sqlite_settimeout',
- '_sqlite_shutdown', '_sqlite_sqliteexe', '_sqlite_startup',
- '_sqlite_totalchanges', '_hextostring', '_stringaddcomma',
- '_stringbetween', '_stringencrypt', '_stringinsert',
- '_stringproper', '_stringrepeat', '_stringreverse', '_stringtohex',
- '_viclose', '_viexeccommand', '_vifindgpib', '_vigpibbusreset',
- '_vigtl', '_viopen', '_visetattribute', '_visettimeout'
- ),
- 5 => array(
- '#include', '#include-once', '#notrayicon'
- ),
- 6 => array(
- '#forceref', '#compiler_allow_decompile', '#compiler_au3check_dat',
- '#compiler_au3check_parameters',
- '#compiler_au3check_stop_onwarning', '#compiler_aut2exe',
- '#compiler_autoit3', '#compiler_compression', '#compiler_icon',
- '#compiler_outfile', '#compiler_outfile_type',
- '#compiler_passphrase', '#compiler_plugin_funcs',
- '#compiler_prompt', '#compiler_res_comment',
- '#compiler_res_description', '#compiler_res_field',
- '#compiler_res_field1name', '#compiler_res_field1value',
- '#compiler_res_field2name', '#compiler_res_field2value',
- '#compiler_res_fileversion',
- '#compiler_res_fileversion_autoincrement',
- '#compiler_res_legalcopyright', '#compiler_run_after',
- '#compiler_run_au3check', '#compiler_run_before',
- '#compiler_run_cvswrapper', '#compiler_run_tidy',
- '#compiler_tidy_stop_onerror', '#compiler_useupx', '#endregion',
- '#region', '#run_debug_mode', '#tidy_parameters'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '&', '*', '/', '<', '>', '+', '-', '^', '=', '.'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
- 6 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000FF; font-weight: bold;',
- 2 => 'color: #800000; font-weight: bold;',
- 3 => 'color: #000080; font-style: italic; font-weight: bold;',
- 4 => 'color: #0080FF; font-style: italic; font-weight: bold;',
- 5 => 'color: #F000FF; font-style: italic;',
- 6 => 'color: #A00FF0; font-style: italic;'
- ),
- 'COMMENTS' => array(
- 0 => 'font-style: italic; color: #009933;',
- 'MULTI' => 'font-style: italic; color: #669900;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => ''
- ),
- 'BRACKETS' => array(
- 0 => 'color: #FF0000; font-weight: bold;'
- ),
- 'STRINGS' => array(
- 0 => 'font-weight: bold; color: #008080;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #AC00A9; font-style: italic; font-weight: bold;'
- ),
- 'METHODS' => array(
- 1 => 'color: #0000FF; font-style: italic; font-weight: bold;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #FF0000; font-weight: bold;'
- ),
- 'REGEXPS' => array(
- 0 => 'font-weight: bold; color: #AA0000;'
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => '',
- 5 => '',
- 6 => ''
- )
- ),
- 'URLS' => array(
- 1 => 'http://www.autoitscript.com/autoit3/docs/keywords.htm',
- 2 => 'http://www.autoitscript.com/autoit3/docs/macros.htm',
- 3 => 'http://www.autoitscript.com/autoit3/docs/functions/{FNAME}.htm',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- 0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*'
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- 1 => true,
- 2 => true,
- 3 => true
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * autoit.php
+ * --------
+ * Author: big_daddy (robert.i.anthony at gmail.com)
+ * Copyright: (c) 2006 and to GESHi ;)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/01/26
+ *
+ * Current bugs & todo:
+ * ----------
+ * - dosn't highlight symbols (Please note that in 1.0.X these are not used. Hopefully they will be used in 1.2.X.)
+ * - not sure how to get sendkeys to work " {!}, {SPACE} etc... "
+ * - jut copyied the regexp for variable from php so this HAVE to be checked and fixed to a better one ;)
+ *
+ * Reference: http://www.autoitscript.com/autoit3/docs/
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'AutoIt',
+ 'COMMENT_SINGLE' => array(';'),
+ 'COMMENT_MULTI' => array('#comments-start' => '#comments-end', '#cs' => '#ce'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'false', 'and', 'byref', 'case', 'const',
+ 'continuecase', 'continueloop', 'default', 'dim', 'do',
+ 'else', 'elseif', 'endfunc', 'endif', 'endselect',
+ 'endswitch', 'endwith', 'enum', 'exit', 'exitloop',
+ 'for', 'func', 'global', 'if', 'in',
+ 'local', 'next', 'not', 'or', 'redim',
+ 'return', 'select', 'step', 'switch', 'then',
+ 'to', 'true', 'until', 'wend', 'while',
+ 'with'
+ ),
+ 2 => array(
+ '@appdatacommondir', '@appdatadir', '@autoitexe', '@autoitpid',
+ '@autoitversion', '@com_eventobj', '@commonfilesdir', '@compiled',
+ '@computername', '@comspec', '@cr', '@crlf', '@desktopcommondir',
+ '@desktopdepth', '@desktopdir', '@desktopheight',
+ '@desktoprefresh', '@desktopwidth', '@documentscommondir',
+ '@error', '@exitcode', '@exitmethod', '@extended',
+ '@favoritescommondir', '@favoritesdir', '@gui_ctrlhandle',
+ '@gui_ctrlid', '@gui_dragfile', '@gui_dragid', '@gui_dropid',
+ '@gui_winhandle', '@homedrive', '@homepath', '@homeshare',
+ '@hotkeypressed', '@hour', '@inetgetactive', '@inetgetbytesread',
+ '@ipaddress1', '@ipaddress2', '@ipaddress3', '@ipaddress4',
+ '@kblayout', '@lf', '@logondnsdomain', '@logondomain',
+ '@logonserver', '@mday', '@min', '@mon', '@mydocumentsdir',
+ '@numparams', '@osbuild', '@oslang', '@osservicepack', '@ostype',
+ '@osversion', '@processorarch', '@programfilesdir',
+ '@programscommondir', '@programsdir', '@scriptdir',
+ '@scriptfullpath', '@scriptlinenumber', '@scriptname', '@sec',
+ '@startmenucommondir', '@startmenudir', '@startupcommondir',
+ '@startupdir', '@sw_disable', '@sw_enable', '@sw_hide', '@sw_lock',
+ '@sw_maximize', '@sw_minimize', '@sw_restore', '@sw_show',
+ '@sw_showdefault', '@sw_showmaximized', '@sw_showminimized',
+ '@sw_showminnoactive', '@sw_showna', '@sw_shownoactivate',
+ '@sw_shownormal', '@sw_unlock', '@systemdir', '@tab', '@tempdir',
+ '@tray_id', '@trayiconflashing', '@trayiconvisible', '@username',
+ '@userprofiledir', '@wday', '@windowsdir', '@workingdir', '@yday',
+ '@year'
+ ),
+ 3 => array(
+ 'abs', 'acos', 'adlibdisable', 'adlibenable', 'asc', 'asin',
+ 'assign', 'atan', 'autoitsetoption', 'autoitwingettitle',
+ 'autoitwinsettitle', 'beep', 'binarystring', 'bitand', 'bitnot',
+ 'bitor', 'bitrotate', 'bitshift', 'bitxor', 'blockinput', 'break',
+ 'call', 'cdtray', 'ceiling', 'chr', 'clipget', 'clipput',
+ 'consoleread', 'consolewrite', 'consolewriteerror', 'controlclick',
+ 'controlcommand', 'controldisable', 'controlenable',
+ 'controlfocus', 'controlgetfocus', 'controlgethandle',
+ 'controlgetpos', 'controlgettext', 'controlhide',
+ 'controllistview', 'controlmove', 'controlsend', 'controlsettext',
+ 'controlshow', 'cos', 'dec', 'dircopy', 'dircreate', 'dirgetsize',
+ 'dirmove', 'dirremove', 'dllcall', 'dllclose', 'dllopen',
+ 'dllstructcreate', 'dllstructgetdata', 'dllstructgetptr',
+ 'dllstructgetsize', 'dllstructsetdata', 'drivegetdrive',
+ 'drivegetfilesystem', 'drivegetlabel', 'drivegetserial',
+ 'drivegettype', 'drivemapadd', 'drivemapdel', 'drivemapget',
+ 'drivesetlabel', 'drivespacefree', 'drivespacetotal',
+ 'drivestatus', 'envget', 'envset', 'envupdate', 'eval', 'execute',
+ 'exp', 'filechangedir', 'fileclose', 'filecopy',
+ 'filecreatentfslink', 'filecreateshortcut', 'filedelete',
+ 'fileexists', 'filefindfirstfile', 'filefindnextfile',
+ 'filegetattrib', 'filegetlongname', 'filegetshortcut',
+ 'filegetshortname', 'filegetsize', 'filegettime', 'filegetversion',
+ 'fileinstall', 'filemove', 'fileopen', 'fileopendialog',
+ 'fileread', 'filereadline', 'filerecycle', 'filerecycleempty',
+ 'filesavedialog', 'fileselectfolder', 'filesetattrib',
+ 'filesettime', 'filewrite', 'filewriteline', 'floor',
+ 'ftpsetproxy', 'guicreate', 'guictrlcreateavi',
+ 'guictrlcreatebutton', 'guictrlcreatecheckbox',
+ 'guictrlcreatecombo', 'guictrlcreatecontextmenu',
+ 'guictrlcreatedate', 'guictrlcreatedummy', 'guictrlcreateedit',
+ 'guictrlcreategraphic', 'guictrlcreategroup', 'guictrlcreateicon',
+ 'guictrlcreateinput', 'guictrlcreatelabel', 'guictrlcreatelist',
+ 'guictrlcreatelistview', 'guictrlcreatelistviewitem',
+ 'guictrlcreatemenu', 'guictrlcreatemenuitem',
+ 'guictrlcreatemonthcal', 'guictrlcreateobj', 'guictrlcreatepic',
+ 'guictrlcreateprogress', 'guictrlcreateradio',
+ 'guictrlcreateslider', 'guictrlcreatetab', 'guictrlcreatetabitem',
+ 'guictrlcreatetreeview', 'guictrlcreatetreeviewitem',
+ 'guictrlcreateupdown', 'guictrldelete', 'guictrlgethandle',
+ 'guictrlgetstate', 'guictrlread', 'guictrlrecvmsg',
+ 'guictrlregisterlistviewsort', 'guictrlsendmsg',
+ 'guictrlsendtodummy', 'guictrlsetbkcolor', 'guictrlsetcolor',
+ 'guictrlsetcursor', 'guictrlsetdata', 'guictrlsetfont',
+ 'guictrlsetgraphic', 'guictrlsetimage', 'guictrlsetlimit',
+ 'guictrlsetonevent', 'guictrlsetpos', 'guictrlsetresizing',
+ 'guictrlsetstate', 'guictrlsetstyle', 'guictrlsettip', 'guidelete',
+ 'guigetcursorinfo', 'guigetmsg', 'guiregistermsg', 'guisetbkcolor',
+ 'guisetcoord', 'guisetcursor', 'guisetfont', 'guisethelp',
+ 'guiseticon', 'guisetonevent', 'guisetstate', 'guistartgroup',
+ 'guiswitch', 'hex', 'hotkeyset', 'httpsetproxy', 'hwnd', 'inetget',
+ 'inetgetsize', 'inidelete', 'iniread', 'inireadsection',
+ 'inireadsectionnames', 'inirenamesection', 'iniwrite',
+ 'iniwritesection', 'inputbox', 'int', 'isadmin', 'isarray',
+ 'isbinarystring', 'isbool', 'isdeclared', 'isdllstruct', 'isfloat',
+ 'ishwnd', 'isint', 'iskeyword', 'isnumber', 'isobj', 'isstring',
+ 'log', 'memgetstats', 'mod', 'mouseclick', 'mouseclickdrag',
+ 'mousedown', 'mousegetcursor', 'mousegetpos', 'mousemove',
+ 'mouseup', 'mousewheel', 'msgbox', 'number', 'objcreate',
+ 'objevent', 'objget', 'objname', 'opt', 'ping', 'pixelchecksum',
+ 'pixelgetcolor', 'pixelsearch', 'pluginclose', 'pluginopen',
+ 'processclose', 'processexists', 'processlist',
+ 'processsetpriority', 'processwait', 'processwaitclose',
+ 'progressoff', 'progresson', 'progressset', 'random', 'regdelete',
+ 'regenumkey', 'regenumval', 'regread', 'regwrite', 'round', 'run',
+ 'runasset', 'runwait', 'send', 'seterror', 'setextended',
+ 'shellexecute', 'shellexecutewait', 'shutdown', 'sin', 'sleep',
+ 'soundplay', 'soundsetwavevolume', 'splashimageon', 'splashoff',
+ 'splashtexton', 'sqrt', 'srandom', 'statusbargettext',
+ 'stderrread', 'stdinwrite', 'stdoutread', 'string', 'stringaddcr',
+ 'stringformat', 'stringinstr', 'stringisalnum', 'stringisalpha',
+ 'stringisascii', 'stringisdigit', 'stringisfloat', 'stringisint',
+ 'stringislower', 'stringisspace', 'stringisupper',
+ 'stringisxdigit', 'stringleft', 'stringlen', 'stringlower',
+ 'stringmid', 'stringregexp', 'stringregexpreplace',
+ 'stringreplace', 'stringright', 'stringsplit', 'stringstripcr',
+ 'stringstripws', 'stringtrimleft', 'stringtrimright',
+ 'stringupper', 'tan', 'tcpaccept', 'tcpclosesocket', 'tcpconnect',
+ 'tcplisten', 'tcpnametoip', 'tcprecv', 'tcpsend', 'tcpshutdown',
+ 'tcpstartup', 'timerdiff', 'timerinit', 'timerstart', 'timerstop',
+ 'tooltip', 'traycreateitem', 'traycreatemenu', 'traygetmsg',
+ 'trayitemdelete', 'trayitemgethandle', 'trayitemgetstate',
+ 'trayitemgettext', 'trayitemsetonevent', 'trayitemsetstate',
+ 'trayitemsettext', 'traysetclick', 'trayseticon', 'traysetonevent',
+ 'traysetpauseicon', 'traysetstate', 'traysettooltip', 'traytip',
+ 'ubound', 'udpbind', 'udpclosesocket', 'udpopen', 'udprecv',
+ 'udpsend', 'winactivate', 'winactive', 'winclose', 'winexists',
+ 'winflash', 'wingetcaretpos', 'wingetclasslist',
+ 'wingetclientsize', 'wingethandle', 'wingetpos', 'wingetprocess',
+ 'wingetstate', 'wingettext', 'wingettitle', 'winkill', 'winlist',
+ 'winmenuselectitem', 'winminimizeall', 'winminimizeallundo',
+ 'winmove', 'winsetontop', 'winsetstate', 'winsettitle',
+ 'winsettrans', 'winshow', 'winwait', 'winwaitactive',
+ 'winwaitclose', 'winwaitnotactive'
+ ),
+ 4 => array(
+ '_arrayadd', '_arraybinarysearch', '_arraycreate', '_arraydelete',
+ '_arraydisplay', '_arrayinsert', '_arraymax', '_arraymaxindex',
+ '_arraymin', '_arrayminindex', '_arraypop', '_arraypush',
+ '_arrayreverse', '_arraysearch', '_arraysort', '_arrayswap',
+ '_arraytoclip', '_arraytostring', '_arraytrim', '_colorgetblue',
+ '_colorgetgreen', '_colorgetred', '_dateadd', '_datedayofweek',
+ '_datedaysinmonth', '_datediff', '_dateisleapyear', '_dateisvalid',
+ '_datetimeformat', '_datetimesplit', '_datetodayofweek',
+ '_datetodayofweekiso', '_datetodayvalue', '_dayvaluetodate',
+ '_now', '_nowcalc', '_nowcalcdate', '_nowdate', '_nowtime',
+ '_setdate', '_settime', '_tickstotime', '_timetoticks',
+ '_weeknumberiso', '_filecountlines', '_filecreate',
+ '_filelisttoarray', '_fileprint', '_filereadtoarray',
+ '_filewritefromarray', '_filewritelog', '_filewritetoline',
+ '_pathfull', '_pathmake', '_pathsplit', '_replacestringinfile',
+ '_tempfile', '_guictrlcomboadddir', '_guictrlcomboaddstring',
+ '_guictrlcomboautocomplete', '_guictrlcombodeletestring',
+ '_guictrlcombofindstring', '_guictrlcombogetcount',
+ '_guictrlcombogetcursel', '_guictrlcombogetdroppedcontrolrect',
+ '_guictrlcombogetdroppedstate', '_guictrlcombogetdroppedwidth',
+ '_guictrlcombogeteditsel', '_guictrlcombogetextendedui',
+ '_guictrlcombogethorizontalextent', '_guictrlcombogetitemheight',
+ '_guictrlcombogetlbtext', '_guictrlcombogetlbtextlen',
+ '_guictrlcombogetlist', '_guictrlcombogetlocale',
+ '_guictrlcombogetminvisible', '_guictrlcombogettopindex',
+ '_guictrlcomboinitstorage', '_guictrlcomboinsertstring',
+ '_guictrlcombolimittext', '_guictrlcomboresetcontent',
+ '_guictrlcomboselectstring', '_guictrlcombosetcursel',
+ '_guictrlcombosetdroppedwidth', '_guictrlcomboseteditsel',
+ '_guictrlcombosetextendedui', '_guictrlcombosethorizontalextent',
+ '_guictrlcombosetitemheight', '_guictrlcombosetminvisible',
+ '_guictrlcombosettopindex', '_guictrlcomboshowdropdown',
+ '_guictrleditcanundo', '_guictrleditemptyundobuffer',
+ '_guictrleditfind', '_guictrleditgetfirstvisibleline',
+ '_guictrleditgetline', '_guictrleditgetlinecount',
+ '_guictrleditgetmodify', '_guictrleditgetrect',
+ '_guictrleditgetsel', '_guictrleditlinefromchar',
+ '_guictrleditlineindex', '_guictrleditlinelength',
+ '_guictrleditlinescroll', '_guictrleditreplacesel',
+ '_guictrleditscroll', '_guictrleditsetmodify',
+ '_guictrleditsetrect', '_guictrleditsetsel', '_guictrleditundo',
+ '_guictrlipaddressclear', '_guictrlipaddresscreate',
+ '_guictrlipaddressdelete', '_guictrlipaddressget',
+ '_guictrlipaddressisblank', '_guictrlipaddressset',
+ '_guictrlipaddresssetfocus', '_guictrlipaddresssetfont',
+ '_guictrlipaddresssetrange', '_guictrlipaddressshowhide',
+ '_guictrllistadddir', '_guictrllistadditem', '_guictrllistclear',
+ '_guictrllistcount', '_guictrllistdeleteitem',
+ '_guictrllistfindstring', '_guictrllistgetanchorindex',
+ '_guictrllistgetcaretindex', '_guictrllistgethorizontalextent',
+ '_guictrllistgetinfo', '_guictrllistgetitemrect',
+ '_guictrllistgetlocale', '_guictrllistgetselcount',
+ '_guictrllistgetselitems', '_guictrllistgetselitemstext',
+ '_guictrllistgetselstate', '_guictrllistgettext',
+ '_guictrllistgettextlen', '_guictrllistgettopindex',
+ '_guictrllistinsertitem', '_guictrllistreplacestring',
+ '_guictrllistselectedindex', '_guictrllistselectindex',
+ '_guictrllistselectstring', '_guictrllistselitemrange',
+ '_guictrllistselitemrangeex', '_guictrllistsetanchorindex',
+ '_guictrllistsetcaretindex', '_guictrllistsethorizontalextent',
+ '_guictrllistsetlocale', '_guictrllistsetsel',
+ '_guictrllistsettopindex', '_guictrllistsort',
+ '_guictrllistswapstring', '_guictrllistviewcopyitems',
+ '_guictrllistviewdeleteallitems', '_guictrllistviewdeletecolumn',
+ '_guictrllistviewdeleteitem',
+ '_guictrllistviewdeleteitemsselected',
+ '_guictrllistviewensurevisible', '_guictrllistviewfinditem',
+ '_guictrllistviewgetbackcolor', '_guictrllistviewgetcallbackmask',
+ '_guictrllistviewgetcheckedstate',
+ '_guictrllistviewgetcolumnorder', '_guictrllistviewgetcolumnwidth',
+ '_guictrllistviewgetcounterpage', '_guictrllistviewgetcursel',
+ '_guictrllistviewgetextendedlistviewstyle',
+ '_guictrllistviewgetheader', '_guictrllistviewgethotcursor',
+ '_guictrllistviewgethotitem', '_guictrllistviewgethovertime',
+ '_guictrllistviewgetitemcount', '_guictrllistviewgetitemtext',
+ '_guictrllistviewgetitemtextarray', '_guictrllistviewgetnextitem',
+ '_guictrllistviewgetselectedcount',
+ '_guictrllistviewgetselectedindices',
+ '_guictrllistviewgetsubitemscount', '_guictrllistviewgettopindex',
+ '_guictrllistviewgetunicodeformat', '_guictrllistviewhidecolumn',
+ '_guictrllistviewinsertcolumn', '_guictrllistviewinsertitem',
+ '_guictrllistviewjustifycolumn', '_guictrllistviewscroll',
+ '_guictrllistviewsetcheckstate',
+ '_guictrllistviewsetcolumnheadertext',
+ '_guictrllistviewsetcolumnorder', '_guictrllistviewsetcolumnwidth',
+ '_guictrllistviewsethotitem', '_guictrllistviewsethovertime',
+ '_guictrllistviewsetitemcount', '_guictrllistviewsetitemselstate',
+ '_guictrllistviewsetitemtext', '_guictrllistviewsort',
+ '_guictrlmonthcalget1stdow', '_guictrlmonthcalgetcolor',
+ '_guictrlmonthcalgetdelta', '_guictrlmonthcalgetmaxselcount',
+ '_guictrlmonthcalgetmaxtodaywidth',
+ '_guictrlmonthcalgetminreqrect', '_guictrlmonthcalset1stdow',
+ '_guictrlmonthcalsetcolor', '_guictrlmonthcalsetdelta',
+ '_guictrlmonthcalsetmaxselcount', '_guictrlslidercleartics',
+ '_guictrlslidergetlinesize', '_guictrlslidergetnumtics',
+ '_guictrlslidergetpagesize', '_guictrlslidergetpos',
+ '_guictrlslidergetrangemax', '_guictrlslidergetrangemin',
+ '_guictrlslidersetlinesize', '_guictrlslidersetpagesize',
+ '_guictrlslidersetpos', '_guictrlslidersetticfreq',
+ '_guictrlstatusbarcreate', '_guictrlstatusbarcreateprogress',
+ '_guictrlstatusbardelete', '_guictrlstatusbargetborders',
+ '_guictrlstatusbargeticon', '_guictrlstatusbargetparts',
+ '_guictrlstatusbargetrect', '_guictrlstatusbargettext',
+ '_guictrlstatusbargettextlength', '_guictrlstatusbargettip',
+ '_guictrlstatusbargetunicode', '_guictrlstatusbarissimple',
+ '_guictrlstatusbarresize', '_guictrlstatusbarsetbkcolor',
+ '_guictrlstatusbarseticon', '_guictrlstatusbarsetminheight',
+ '_guictrlstatusbarsetparts', '_guictrlstatusbarsetsimple',
+ '_guictrlstatusbarsettext', '_guictrlstatusbarsettip',
+ '_guictrlstatusbarsetunicode', '_guictrlstatusbarshowhide',
+ '_guictrltabdeleteallitems', '_guictrltabdeleteitem',
+ '_guictrltabdeselectall', '_guictrltabgetcurfocus',
+ '_guictrltabgetcursel', '_guictrltabgetextendedstyle',
+ '_guictrltabgetitemcount', '_guictrltabgetitemrect',
+ '_guictrltabgetrowcount', '_guictrltabgetunicodeformat',
+ '_guictrltabhighlightitem', '_guictrltabsetcurfocus',
+ '_guictrltabsetcursel', '_guictrltabsetmintabwidth',
+ '_guictrltabsetunicodeformat', '_guictrltreeviewdeleteallitems',
+ '_guictrltreeviewdeleteitem', '_guictrltreeviewexpand',
+ '_guictrltreeviewgetbkcolor', '_guictrltreeviewgetcount',
+ '_guictrltreeviewgetindent', '_guictrltreeviewgetlinecolor',
+ '_guictrltreeviewgetparenthandle', '_guictrltreeviewgetparentid',
+ '_guictrltreeviewgetstate', '_guictrltreeviewgettext',
+ '_guictrltreeviewgettextcolor', '_guictrltreeviewgettree',
+ '_guictrltreeviewinsertitem', '_guictrltreeviewsetbkcolor',
+ '_guictrltreeviewseticon', '_guictrltreeviewsetindent',
+ '_guictrltreeviewsetlinecolor', '_guictrltreeviewsetstate',
+ '_guictrltreeviewsettext', '_guictrltreeviewsettextcolor',
+ '_guictrltreeviewsort', '_ie_example', '_ie_introduction',
+ '_ie_versioninfo', '_ieaction', '_ieattach', '_iebodyreadhtml',
+ '_iebodyreadtext', '_iebodywritehtml', '_iecreate',
+ '_iecreateembedded', '_iedocgetobj', '_iedocinserthtml',
+ '_iedocinserttext', '_iedocreadhtml', '_iedocwritehtml',
+ '_ieerrorhandlerderegister', '_ieerrorhandlerregister',
+ '_ieerrornotify', '_ieformelementcheckboxselect',
+ '_ieformelementgetcollection', '_ieformelementgetobjbyname',
+ '_ieformelementgetvalue', '_ieformelementoptionselect',
+ '_ieformelementradioselect', '_ieformelementsetvalue',
+ '_ieformgetcollection', '_ieformgetobjbyname', '_ieformimageclick',
+ '_ieformreset', '_ieformsubmit', '_ieframegetcollection',
+ '_ieframegetobjbyname', '_iegetobjbyname',
+ '_ieheadinserteventscript', '_ieimgclick', '_ieimggetcollection',
+ '_ieisframeset', '_ielinkclickbyindex', '_ielinkclickbytext',
+ '_ielinkgetcollection', '_ieloadwait', '_ieloadwaittimeout',
+ '_ienavigate', '_iepropertyget', '_iepropertyset', '_iequit',
+ '_ietablegetcollection', '_ietablewritetoarray',
+ '_ietagnameallgetcollection', '_ietagnamegetcollection', '_getip',
+ '_inetexplorercapable', '_inetgetsource', '_inetmail',
+ '_inetsmtpmail', '_tcpiptoname', '_degree', '_mathcheckdiv',
+ '_max', '_min', '_radian', '_choosecolor', '_choosefont',
+ '_clipputfile', '_iif', '_ispressed', '_mousetrap', '_singleton',
+ '_processgetname', '_processgetpriority', '_rundos',
+ '_sendmessage', '_soundclose', '_soundlength', '_soundopen',
+ '_soundpause', '_soundplay', '_soundpos', '_soundresume',
+ '_soundseek', '_soundstatus', '_soundstop', '_sqlite_changes',
+ '_sqlite_close', '_sqlite_display2dresult', '_sqlite_encode',
+ '_sqlite_errcode', '_sqlite_errmsg', '_sqlite_escape',
+ '_sqlite_exec', '_sqlite_fetchdata', '_sqlite_fetchnames',
+ '_sqlite_gettable', '_sqlite_gettable2d',
+ '_sqlite_lastinsertrowid', '_sqlite_libversion', '_sqlite_open',
+ '_sqlite_query', '_sqlite_queryfinalize', '_sqlite_queryreset',
+ '_sqlite_querysinglerow', '_sqlite_savemode', '_sqlite_settimeout',
+ '_sqlite_shutdown', '_sqlite_sqliteexe', '_sqlite_startup',
+ '_sqlite_totalchanges', '_hextostring', '_stringaddcomma',
+ '_stringbetween', '_stringencrypt', '_stringinsert',
+ '_stringproper', '_stringrepeat', '_stringreverse', '_stringtohex',
+ '_viclose', '_viexeccommand', '_vifindgpib', '_vigpibbusreset',
+ '_vigtl', '_viopen', '_visetattribute', '_visettimeout'
+ ),
+ 5 => array(
+ '#include', '#include-once', '#notrayicon'
+ ),
+ 6 => array(
+ '#forceref', '#compiler_allow_decompile', '#compiler_au3check_dat',
+ '#compiler_au3check_parameters',
+ '#compiler_au3check_stop_onwarning', '#compiler_aut2exe',
+ '#compiler_autoit3', '#compiler_compression', '#compiler_icon',
+ '#compiler_outfile', '#compiler_outfile_type',
+ '#compiler_passphrase', '#compiler_plugin_funcs',
+ '#compiler_prompt', '#compiler_res_comment',
+ '#compiler_res_description', '#compiler_res_field',
+ '#compiler_res_field1name', '#compiler_res_field1value',
+ '#compiler_res_field2name', '#compiler_res_field2value',
+ '#compiler_res_fileversion',
+ '#compiler_res_fileversion_autoincrement',
+ '#compiler_res_legalcopyright', '#compiler_run_after',
+ '#compiler_run_au3check', '#compiler_run_before',
+ '#compiler_run_cvswrapper', '#compiler_run_tidy',
+ '#compiler_tidy_stop_onerror', '#compiler_useupx', '#endregion',
+ '#region', '#run_debug_mode', '#tidy_parameters'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '&', '*', '/', '<', '>', '+', '-', '^', '=', '.'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000FF; font-weight: bold;',
+ 2 => 'color: #800000; font-weight: bold;',
+ 3 => 'color: #000080; font-style: italic; font-weight: bold;',
+ 4 => 'color: #0080FF; font-style: italic; font-weight: bold;',
+ 5 => 'color: #F000FF; font-style: italic;',
+ 6 => 'color: #A00FF0; font-style: italic;'
+ ),
+ 'COMMENTS' => array(
+ 0 => 'font-style: italic; color: #009933;',
+ 'MULTI' => 'font-style: italic; color: #669900;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => ''
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #FF0000; font-weight: bold;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'font-weight: bold; color: #008080;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #AC00A9; font-style: italic; font-weight: bold;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #0000FF; font-style: italic; font-weight: bold;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #FF0000; font-weight: bold;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'font-weight: bold; color: #AA0000;'
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => '',
+ 6 => ''
+ )
+ ),
+ 'URLS' => array(
+ 1 => 'http://www.autoitscript.com/autoit3/docs/keywords.htm',
+ 2 => 'http://www.autoitscript.com/autoit3/docs/macros.htm',
+ 3 => 'http://www.autoitscript.com/autoit3/docs/functions/{FNAME}.htm',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ 0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*'
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ 1 => true,
+ 2 => true,
+ 3 => true
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/bash.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/bash.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/bash.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/*************************************************************************************
- * bash.php
- * --------
- * Author: Andreas Gohr (andi at splitbrain.org)
- * Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/20
- *
- * BASH language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2007/09/05 (1.0.7.21)
- * - PARSER_CONTROL patch using SF #1788408 (BenBE)
- * 2007/06/11 (1.0.7.20)
- * - Added a lot of keywords (BenBE / Jan G)
- * 2004/11/27 (1.0.2)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.1)
- * - Added support for URLs
- * 2004/08/20 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Get symbols working
- * * Highlight builtin vars
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Bash',
- // Bash DOES have single line comments with # markers. But bash also has
- // the $# variable, so comments need special handling (see sf.net
- // 1564839)
- 'COMMENT_SINGLE' => array('#'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'case', 'do', 'done', 'elif', 'else', 'esac', 'fi', 'for', 'function',
- 'if', 'in', 'select', 'set', 'then', 'until', 'while', 'time'
- ),
- 2 => array(
- 'aclocal', 'aconnect', 'aplay', 'apm', 'apmsleep', 'apropos',
- 'ar', 'arch', 'arecord', 'as', 'as86', 'autoconf', 'autoheader',
- 'automake', 'awk',
- 'basename', 'bc', 'bison', 'bunzip2', 'bzip2', 'bzcat',
- 'bzcmp', 'bzdiff', 'bzegrep', 'bzegrep', 'bzfgrep', 'bzgrep',
- 'bzip2', 'bzip2recover', 'bzless', 'bzmore',
- 'c++', 'cal', 'cat', 'chattr', 'cc', 'cdda2wav', 'cdparanoia',
- 'cdrdao', 'cd-read', 'cdrecord', 'chfn', 'chgrp', 'chmod',
- 'chown', 'chroot', 'chsh', 'chvt', 'clear', 'cmp', 'comm', 'co',
- 'col', 'cp', 'cpio', 'cpp', 'cut',
- 'date', 'dd', 'dc', 'dcop', 'deallocvt', 'df', 'diff', 'diff3', 'dir',
- 'dircolors', 'directomatic', 'dirname', 'dmesg',
- 'dnsdomainname', 'domainname', 'du', 'dumpkeys',
- 'ed', 'egrep', 'env', 'expr',
- 'false', 'fbset', 'fgconsole','fgrep', 'find', 'file', 'flex', 'flex++',
- 'fmt', 'free', 'ftp', 'funzip', 'fuser',
- 'g++', 'gawk', 'gc','gcc', 'gdb', 'getent', 'getkeycodes',
- 'getopt', 'gettext', 'gettextize', 'gimp', 'gimp-remote',
- 'gimptool', 'gmake', 'gocr', 'grep', 'groups', 'gs', 'gunzip',
- 'gzexe', 'gzip',
- 'head', 'hexdump', 'hostname',
- 'id', 'igawk', 'install',
- 'join',
- 'kbd_mode','kbdrate', 'kdialog', 'kfile', 'kill', 'killall',
- 'last', 'lastb', 'ld', 'ld86', 'ldd', 'less', 'lex', 'link', 'ln', 'loadkeys',
- 'loadunimap', 'locate', 'lockfile', 'login', 'logname',
- 'lp', 'lpr', 'ls', 'lsattr', 'lsmod', 'lsmod.old', 'lynx',
- 'm4', 'make', 'man', 'mapscrn', 'mesg', 'mkdir', 'mkfifo',
- 'mknod', 'mktemp', 'more', 'mount', 'msgfmt', 'mv',
- 'namei', 'nano', 'nasm', 'nawk', 'netstat', 'nice',
- 'nisdomainname', 'nl', 'nm', 'nm86', 'nmap', 'nohup', 'nop',
- 'od', 'openvt',
- 'passwd', 'patch', 'pcregrep', 'pcretest', 'perl', 'perror',
- 'pgawk', 'pidof', 'ping', 'pr', 'procmail', 'prune', 'ps', 'pstree',
- 'ps2ascii', 'ps2epsi', 'ps2frag', 'ps2pdf', 'ps2ps', 'psbook',
- 'psmerge', 'psnup', 'psresize', 'psselect', 'pstops',
- 'rbash', 'rcs', 'read', 'readlink', 'red', 'resizecons', 'rev', 'rm',
- 'rmdir', 'run-parts',
- 'sash', 'sed', 'setfont', 'setkeycodes', 'setleds',
- 'setmetamode', 'setserial', 'scp', 'seq', 'setterm', 'sh',
- 'showkey', 'shred', 'size', 'size86', 'skill', 'sleep', 'slogin',
- 'snice', 'sort', 'sox', 'split', 'ssed', 'ssh', 'ssh-add',
- 'ssh-agent', 'ssh-keygen', 'ssh-keyscan', 'stat', 'strings',
- 'strip', 'stty', 'su', 'sudo', 'suidperl', 'sum', 'sync',
- 'tac', 'tail', 'tar', 'tee', 'tempfile', 'touch', 'tr', 'true',
- 'umount', 'uname', 'unicode_start', 'unicode_stop', 'uniq',
- 'unlink', 'unzip', 'updatedb', 'updmap', 'uptime', 'users',
- 'utmpdump', 'uuidgen',
- 'vdir', 'vmstat',
- 'w', 'wall', 'wc', 'wget', 'whatis', 'whereis', 'which', 'who',
- 'whoami', 'write',
- 'xargs', 'xhost', 'xmodmap', 'xset',
- 'yacc', 'yes', 'ypdomainname',
- 'zcat', 'zcmp', 'zdiff', 'zegrep', 'zfgrep', 'zforce', 'zgrep',
- 'zip', 'zless', 'zmore', 'znew', 'zsh', ' zsoelim'
- ),
- 3 => array(
- 'alias', 'bg', 'bind', 'break', 'builtin', 'cd', 'command',
- 'compgen', 'complete', 'continue', 'declare', 'dirs', 'disown',
- 'echo', 'enable', 'eval', 'exec', 'exit', 'export', 'fc',
- 'fg', 'getopts', 'hash', 'help', 'history', 'jobs', 'kill', 'let',
- 'local', 'logout', 'popd', 'printf', 'pushd', 'pwd', 'readonly',
- 'return', 'shift', 'shopt', 'source', 'suspend', 'test', 'times',
- 'trap', 'type', 'typeset', 'ulimit', 'umask', 'unalias', 'unset',
- 'wait'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => true,
- 2 => true,
- 3 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000000; font-weight: bold;',
- 2 => 'color: #c20cb9; font-weight: bold;',
- 3 => 'color: #7a0874; font-weight: bold;'
- ),
- 'COMMENTS' => array(
- 0 => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #7a0874; font-weight: bold;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #000000;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000000; font-weight: bold;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #007800;',
- 1 => 'color: #007800;',
- 2 => 'color: #007800;',
-// 3 => 'color: #808080; font-style: italic;',
- 4 => 'color: #007800;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}",
- 1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*",
- 2 => "([a-zA-Z_][a-zA-Z0-9_]*)=",
-// 3 => "(?<!\\$)#[^\n]*",
- 4 => "\\$[*#\$\\-\\?!]"
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'PARSER_CONTROL' => array(
- 'COMMENTS' => array(
- 'DISALLOWED_BEFORE' => '$'
- )
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * bash.php
+ * --------
+ * Author: Andreas Gohr (andi at splitbrain.org)
+ * Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/20
+ *
+ * BASH language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2007/09/05 (1.0.7.21)
+ * - PARSER_CONTROL patch using SF #1788408 (BenBE)
+ * 2007/06/11 (1.0.7.20)
+ * - Added a lot of keywords (BenBE / Jan G)
+ * 2004/11/27 (1.0.2)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ * - Added support for URLs
+ * 2004/08/20 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Get symbols working
+ * * Highlight builtin vars
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Bash',
+ // Bash DOES have single line comments with # markers. But bash also has
+ // the $# variable, so comments need special handling (see sf.net
+ // 1564839)
+ 'COMMENT_SINGLE' => array('#'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'case', 'do', 'done', 'elif', 'else', 'esac', 'fi', 'for', 'function',
+ 'if', 'in', 'select', 'set', 'then', 'until', 'while', 'time'
+ ),
+ 2 => array(
+ 'aclocal', 'aconnect', 'aplay', 'apm', 'apmsleep', 'apropos',
+ 'ar', 'arch', 'arecord', 'as', 'as86', 'autoconf', 'autoheader',
+ 'automake', 'awk',
+ 'basename', 'bc', 'bison', 'bunzip2', 'bzip2', 'bzcat',
+ 'bzcmp', 'bzdiff', 'bzegrep', 'bzegrep', 'bzfgrep', 'bzgrep',
+ 'bzip2', 'bzip2recover', 'bzless', 'bzmore',
+ 'c++', 'cal', 'cat', 'chattr', 'cc', 'cdda2wav', 'cdparanoia',
+ 'cdrdao', 'cd-read', 'cdrecord', 'chfn', 'chgrp', 'chmod',
+ 'chown', 'chroot', 'chsh', 'chvt', 'clear', 'cmp', 'comm', 'co',
+ 'col', 'cp', 'cpio', 'cpp', 'cut',
+ 'date', 'dd', 'dc', 'dcop', 'deallocvt', 'df', 'diff', 'diff3', 'dir',
+ 'dircolors', 'directomatic', 'dirname', 'dmesg',
+ 'dnsdomainname', 'domainname', 'du', 'dumpkeys',
+ 'ed', 'egrep', 'env', 'expr',
+ 'false', 'fbset', 'fgconsole','fgrep', 'find', 'file', 'flex', 'flex++',
+ 'fmt', 'free', 'ftp', 'funzip', 'fuser',
+ 'g++', 'gawk', 'gc','gcc', 'gdb', 'getent', 'getkeycodes',
+ 'getopt', 'gettext', 'gettextize', 'gimp', 'gimp-remote',
+ 'gimptool', 'gmake', 'gocr', 'grep', 'groups', 'gs', 'gunzip',
+ 'gzexe', 'gzip',
+ 'head', 'hexdump', 'hostname',
+ 'id', 'igawk', 'install',
+ 'join',
+ 'kbd_mode','kbdrate', 'kdialog', 'kfile', 'kill', 'killall',
+ 'last', 'lastb', 'ld', 'ld86', 'ldd', 'less', 'lex', 'link', 'ln', 'loadkeys',
+ 'loadunimap', 'locate', 'lockfile', 'login', 'logname',
+ 'lp', 'lpr', 'ls', 'lsattr', 'lsmod', 'lsmod.old', 'lynx',
+ 'm4', 'make', 'man', 'mapscrn', 'mesg', 'mkdir', 'mkfifo',
+ 'mknod', 'mktemp', 'more', 'mount', 'msgfmt', 'mv',
+ 'namei', 'nano', 'nasm', 'nawk', 'netstat', 'nice',
+ 'nisdomainname', 'nl', 'nm', 'nm86', 'nmap', 'nohup', 'nop',
+ 'od', 'openvt',
+ 'passwd', 'patch', 'pcregrep', 'pcretest', 'perl', 'perror',
+ 'pgawk', 'pidof', 'ping', 'pr', 'procmail', 'prune', 'ps', 'pstree',
+ 'ps2ascii', 'ps2epsi', 'ps2frag', 'ps2pdf', 'ps2ps', 'psbook',
+ 'psmerge', 'psnup', 'psresize', 'psselect', 'pstops',
+ 'rbash', 'rcs', 'read', 'readlink', 'red', 'resizecons', 'rev', 'rm',
+ 'rmdir', 'run-parts',
+ 'sash', 'sed', 'setfont', 'setkeycodes', 'setleds',
+ 'setmetamode', 'setserial', 'scp', 'seq', 'setterm', 'sh',
+ 'showkey', 'shred', 'size', 'size86', 'skill', 'sleep', 'slogin',
+ 'snice', 'sort', 'sox', 'split', 'ssed', 'ssh', 'ssh-add',
+ 'ssh-agent', 'ssh-keygen', 'ssh-keyscan', 'stat', 'strings',
+ 'strip', 'stty', 'su', 'sudo', 'suidperl', 'sum', 'sync',
+ 'tac', 'tail', 'tar', 'tee', 'tempfile', 'touch', 'tr', 'true',
+ 'umount', 'uname', 'unicode_start', 'unicode_stop', 'uniq',
+ 'unlink', 'unzip', 'updatedb', 'updmap', 'uptime', 'users',
+ 'utmpdump', 'uuidgen',
+ 'vdir', 'vmstat',
+ 'w', 'wall', 'wc', 'wget', 'whatis', 'whereis', 'which', 'who',
+ 'whoami', 'write',
+ 'xargs', 'xhost', 'xmodmap', 'xset',
+ 'yacc', 'yes', 'ypdomainname',
+ 'zcat', 'zcmp', 'zdiff', 'zegrep', 'zfgrep', 'zforce', 'zgrep',
+ 'zip', 'zless', 'zmore', 'znew', 'zsh', ' zsoelim'
+ ),
+ 3 => array(
+ 'alias', 'bg', 'bind', 'break', 'builtin', 'cd', 'command',
+ 'compgen', 'complete', 'continue', 'declare', 'dirs', 'disown',
+ 'echo', 'enable', 'eval', 'exec', 'exit', 'export', 'fc',
+ 'fg', 'getopts', 'hash', 'help', 'history', 'jobs', 'kill', 'let',
+ 'local', 'logout', 'popd', 'printf', 'pushd', 'pwd', 'readonly',
+ 'return', 'shift', 'shopt', 'source', 'suspend', 'test', 'times',
+ 'trap', 'type', 'typeset', 'ulimit', 'umask', 'unalias', 'unset',
+ 'wait'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => true,
+ 2 => true,
+ 3 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000000; font-weight: bold;',
+ 2 => 'color: #c20cb9; font-weight: bold;',
+ 3 => 'color: #7a0874; font-weight: bold;'
+ ),
+ 'COMMENTS' => array(
+ 0 => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #7a0874; font-weight: bold;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000000; font-weight: bold;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #007800;',
+ 1 => 'color: #007800;',
+ 2 => 'color: #007800;',
+// 3 => 'color: #808080; font-style: italic;',
+ 4 => 'color: #007800;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}",
+ 1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*",
+ 2 => "([a-zA-Z_][a-zA-Z0-9_]*)=",
+// 3 => "(?<!\\$)#[^\n]*",
+ 4 => "\\$[*#\$\\-\\?!]"
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'PARSER_CONTROL' => array(
+ 'COMMENTS' => array(
+ 'DISALLOWED_BEFORE' => '$'
+ )
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/basic4gl.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/basic4gl.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/basic4gl.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,336 +1,336 @@
-<?php
-/*************************************************************************************
- * basic4gl.php
- * ---------------------------------
- * Author: Matthew Webb (bmatthew1 at blueyonder.co.uk)
- * Copyright: (c) 2004 Matthew Webb (http://matthew-4gl.wikispaces.com)
- * Release Version: 1.0.7.21
- * Date Started: 2007/09/15
- *
- * Basic4GL language file for GeSHi.
- *
- * You can find the Basic4GL Website at (http://www.basic4gl.net/)
- *
- * CHANGES
- * -------
- * 2007/09/17 (1.0.0)
- * - First Release
- *
- * TODO (updated 2007/09/17)
- * -------------------------
- * Make sure all the OpenGL and Basic4GL commands have been added and are complete.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Basic4GL',
- 'COMMENT_SINGLE' => array(1 => "'"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
-
- // Navy Blue Bold Keywords
-
- 'true','rnd_max','m_pi','m_e','false','VK_ZOOM','VK_UP','VK_TAB','VK_SUBTRACT','VK_SPACE','VK_SNAPSHOT',
- 'VK_SHIFT','VK_SEPARATOR','VK_SELECT','VK_SCROLL','VK_RWIN','VK_RSHIFT','VK_RMENU','VK_RIGHT','VK_RETURN',
- 'VK_RCONTROL','VK_RBUTTON','VK_PROCESSKEY','VK_PRIOR','VK_PRINT','VK_PLAY','VK_PAUSE','VK_NUMPAD9','VK_NUMPAD8',
- 'VK_NUMPAD7','VK_NUMPAD6','VK_NUMPAD5','VK_NUMPAD4','VK_NUMPAD3','VK_NUMPAD2','VK_NUMPAD1','VK_NUMPAD0',
- 'VK_NUMLOCK','VK_NONCONVERT','VK_NEXT','VK_MULTIPLY','VK_MODECHANGE','VK_MENU','VK_MBUTTON','VK_LWIN',
- 'VK_LSHIFT','VK_LMENU','VK_LEFT','VK_LCONTROL','VK_LBUTTON','VK_KANJI','VK_KANA','VK_JUNJA','VK_INSERT',
- 'VK_HOME','VK_HELP','VK_HANJA','VK_HANGUL','VK_HANGEUL','VK_FINAL','VK_F9','VK_F8','VK_F7','VK_F6','VK_F5',
- 'VK_F4','VK_F3','VK_F24','VK_F23','VK_F22','VK_F21','VK_F20','VK_F2','VK_F19','VK_F18','VK_F17','VK_F16',
- 'VK_F15','VK_F14','VK_F13','VK_F12','VK_F11','VK_F10','VK_F1','VK_EXSEL','VK_EXECUTE','VK_ESCAPE','VK_EREOF',
- 'VK_END','VK_DOWN','VK_DIVIDE','VK_DELETE','VK_DECIMAL','VK_CRSEL','VK_CONVERT','VK_CONTROL','VK_CLEAR',
- 'VK_CAPITAL','VK_CANCEL','VK_BACK','VK_ATTN','VK_APPS','VK_ADD','VK_ACCEPT','TEXT_SIMPLE','TEXT_OVERLAID',
- 'TEXT_BUFFERED','SPR_TILEMAP','SPR_SPRITE','SPR_INVALID','MOUSE_RBUTTON','MOUSE_MBUTTON','MOUSE_LBUTTON',
- 'GL_ZOOM_Y','GL_ZOOM_X','GL_ZERO','GL_XOR','GL_WIN_swap_hint','GL_WIN_draw_range_elements','GL_VIEWPORT_BIT',
- 'GL_VIEWPORT','GL_VERTEX_ARRAY_TYPE_EXT','GL_VERTEX_ARRAY_TYPE','GL_VERTEX_ARRAY_STRIDE_EXT','GL_VERTEX_ARRAY_STRIDE',
- 'GL_VERTEX_ARRAY_SIZE_EXT','GL_VERTEX_ARRAY_SIZE','GL_VERTEX_ARRAY_POINTER_EXT','GL_VERTEX_ARRAY_POINTER',
- 'GL_VERTEX_ARRAY_EXT','GL_VERTEX_ARRAY_COUNT_EXT','GL_VERTEX_ARRAY','GL_VERSION_1_1','GL_VERSION','GL_VENDOR',
- 'GL_V3F','GL_V2F','GL_UNSIGNED_SHORT','GL_UNSIGNED_INT','GL_UNSIGNED_BYTE','GL_UNPACK_SWAP_BYTES','GL_UNPACK_SKIP_ROWS',
- 'GL_UNPACK_SKIP_PIXELS','GL_UNPACK_ROW_LENGTH','GL_UNPACK_LSB_FIRST','GL_UNPACK_ALIGNMENT','GL_TRUE','GL_TRIANGLE_STRIP',
- 'GL_TRIANGLE_FAN','GL_TRIANGLES','GL_TRANSFORM_BIT','GL_TEXTURE_WRAP_T','GL_TEXTURE_WRAP_S','GL_TEXTURE_WIDTH',
- 'GL_TEXTURE_STACK_DEPTH','GL_TEXTURE_RESIDENT','GL_TEXTURE_RED_SIZE','GL_TEXTURE_PRIORITY','GL_TEXTURE_MIN_FILTER',
- 'GL_TEXTURE_MATRIX','GL_TEXTURE_MAG_FILTER','GL_TEXTURE_LUMINANCE_SIZE','GL_TEXTURE_INTERNAL_FORMAT','GL_TEXTURE_INTENSITY_SIZE',
- 'GL_TEXTURE_HEIGHT','GL_TEXTURE_GREEN_SIZE','GL_TEXTURE_GEN_T','GL_TEXTURE_GEN_S','GL_TEXTURE_GEN_R','GL_TEXTURE_GEN_Q',
- 'GL_TEXTURE_GEN_MODE','GL_TEXTURE_ENV_MODE','GL_TEXTURE_ENV_COLOR','GL_TEXTURE_ENV','GL_TEXTURE_COORD_ARRAY_TYPE_EXT',
- 'GL_TEXTURE_COORD_ARRAY_TYPE','GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','GL_TEXTURE_COORD_ARRAY_STRIDE','GL_TEXTURE_COORD_ARRAY_SIZE_EXT',
- 'GL_TEXTURE_COORD_ARRAY_SIZE','GL_TEXTURE_COORD_ARRAY_POINTER_EXT','GL_TEXTURE_COORD_ARRAY_POINTER','GL_TEXTURE_COORD_ARRAY_EXT',
- 'GL_TEXTURE_COORD_ARRAY_COUNT_EXT','GL_TEXTURE_COORD_ARRAY','GL_TEXTURE_COMPONENTS','GL_TEXTURE_BORDER_COLOR','GL_TEXTURE_BORDER',
- 'GL_TEXTURE_BLUE_SIZE','GL_TEXTURE_BIT','GL_TEXTURE_BINDING_2D','GL_TEXTURE_BINDING_1D','GL_TEXTURE_ALPHA_SIZE',
- 'GL_TEXTURE_2D','GL_TEXTURE_1D','GL_TEXTURE9_ARB','GL_TEXTURE9','GL_TEXTURE8_ARB','GL_TEXTURE8','GL_TEXTURE7_ARB',
- 'GL_TEXTURE7','GL_TEXTURE6_ARB','GL_TEXTURE6','GL_TEXTURE5_ARB','GL_TEXTURE5','GL_TEXTURE4_ARB','GL_TEXTURE4',
- 'GL_TEXTURE3_ARB','GL_TEXTURE31_ARB','GL_TEXTURE31','GL_TEXTURE30_ARB','GL_TEXTURE30','GL_TEXTURE3','GL_TEXTURE2_ARB',
- 'GL_TEXTURE29_ARB','GL_TEXTURE29','GL_TEXTURE28_ARB','GL_TEXTURE28','GL_TEXTURE27_ARB','GL_TEXTURE27','GL_TEXTURE26_ARB',
- 'GL_TEXTURE26','GL_TEXTURE25_ARB','GL_TEXTURE25','GL_TEXTURE24_ARB','GL_TEXTURE24','GL_TEXTURE23_ARB','GL_TEXTURE23',
- 'GL_TEXTURE22_ARB','GL_TEXTURE22','GL_TEXTURE21_ARB','GL_TEXTURE21','GL_TEXTURE20_ARB','GL_TEXTURE20','GL_TEXTURE2',
- 'GL_TEXTURE1_ARB','GL_TEXTURE19_ARB','GL_TEXTURE19','GL_TEXTURE18_ARB','GL_TEXTURE18','GL_TEXTURE17_ARB',
- 'GL_TEXTURE17','GL_TEXTURE16_ARB','GL_TEXTURE16','GL_TEXTURE15_ARB','GL_TEXTURE15','GL_TEXTURE14_ARB','GL_TEXTURE14',
- 'GL_TEXTURE13_ARB','GL_TEXTURE13','GL_TEXTURE12_ARB','GL_TEXTURE12','GL_TEXTURE11_ARB','GL_TEXTURE11','GL_TEXTURE10_ARB',
- 'GL_TEXTURE10','GL_TEXTURE1','GL_TEXTURE0_ARB','GL_TEXTURE0','GL_TEXTURE','GL_T4F_V4F','GL_T4F_C4F_N3F_V4F','GL_T2F_V3F',
- 'GL_T2F_N3F_V3F','GL_T2F_C4UB_V3F','GL_T2F_C4F_N3F_V3F','GL_T2F_C3F_V3F','GL_T','GL_SUBPIXEL_BITS','GL_STEREO',
- 'GL_STENCIL_WRITEMASK','GL_STENCIL_VALUE_MASK','GL_STENCIL_TEST','GL_STENCIL_REF','GL_STENCIL_PASS_DEPTH_PASS',
- 'GL_STENCIL_PASS_DEPTH_FAIL','GL_STENCIL_INDEX','GL_STENCIL_FUNC','GL_STENCIL_FAIL','GL_STENCIL_CLEAR_VALUE',
- 'GL_STENCIL_BUFFER_BIT','GL_STENCIL_BITS','GL_STENCIL','GL_STACK_UNDERFLOW','GL_STACK_OVERFLOW','GL_SRC_COLOR',
- 'GL_SRC_ALPHA_SATURATE','GL_SRC_ALPHA','GL_SPOT_EXPONENT','GL_SPOT_DIRECTION','GL_SPOT_CUTOFF','GL_SPHERE_MAP',
- 'GL_SPECULAR','GL_SOURCE2_RGB_EXT','GL_SOURCE2_RGB','GL_SOURCE2_ALPHA_EXT','GL_SOURCE2_ALPHA','GL_SOURCE1_RGB_EXT',
- 'GL_SOURCE1_RGB','GL_SOURCE1_ALPHA_EXT','GL_SOURCE1_ALPHA','GL_SOURCE0_RGB_EXT','GL_SOURCE0_RGB','GL_SOURCE0_ALPHA_EXT',
- 'GL_SOURCE0_ALPHA','GL_SMOOTH','GL_SHORT','GL_SHININESS','GL_SHADE_MODEL','GL_SET','GL_SELECTION_BUFFER_SIZE',
- 'GL_SELECTION_BUFFER_POINTER','GL_SELECT','GL_SCISSOR_TEST','GL_SCISSOR_BOX','GL_SCISSOR_BIT','GL_S','GL_RIGHT',
- 'GL_RGB_SCALE_EXT','GL_RGB_SCALE','GL_RGBA_MODE','GL_RGBA8','GL_RGBA4','GL_RGBA2','GL_RGBA16','GL_RGBA12','GL_RGBA',
- 'GL_RGB8','GL_RGB5_A1','GL_RGB5','GL_RGB4','GL_RGB16','GL_RGB12','GL_RGB10_A2','GL_RGB10','GL_RGB','GL_RETURN',
- 'GL_REPLACE','GL_REPEAT','GL_RENDER_MODE','GL_RENDERER','GL_RENDER','GL_RED_SCALE','GL_RED_BITS','GL_RED_BIAS',
- 'GL_RED','GL_READ_BUFFER','GL_R3_G3_B2','GL_R','GL_QUAD_STRIP','GL_QUADS','GL_QUADRATIC_ATTENUATION','GL_Q',
- 'GL_PROXY_TEXTURE_2D','GL_PROXY_TEXTURE_1D','GL_PROJECTION_STACK_DEPTH','GL_PROJECTION_MATRIX','GL_PROJECTION',
- 'GL_PRIMARY_COLOR_EXT','GL_PRIMARY_COLOR','GL_PREVIOUS_EXT','GL_PREVIOUS','GL_POSITION','GL_POLYGON_TOKEN',
- 'GL_POLYGON_STIPPLE_BIT','GL_POLYGON_STIPPLE','GL_POLYGON_SMOOTH_HINT','GL_POLYGON_SMOOTH','GL_POLYGON_OFFSET_UNITS',
- 'GL_POLYGON_OFFSET_POINT','GL_POLYGON_OFFSET_LINE','GL_POLYGON_OFFSET_FILL','GL_POLYGON_OFFSET_FACTOR','GL_POLYGON_MODE',
- 'GL_POLYGON_BIT','GL_POLYGON','GL_POINT_TOKEN','GL_POINT_SMOOTH_HINT','GL_POINT_SMOOTH','GL_POINT_SIZE_RANGE',
- 'GL_POINT_SIZE_GRANULARITY','GL_POINT_SIZE','GL_POINT_BIT','GL_POINTS','GL_POINT','GL_PIXEL_MODE_BIT',
- 'GL_PIXEL_MAP_S_TO_S_SIZE','GL_PIXEL_MAP_S_TO_S','GL_PIXEL_MAP_R_TO_R_SIZE','GL_PIXEL_MAP_R_TO_R','GL_PIXEL_MAP_I_TO_R_SIZE',
- 'GL_PIXEL_MAP_I_TO_R','GL_PIXEL_MAP_I_TO_I_SIZE','GL_PIXEL_MAP_I_TO_I','GL_PIXEL_MAP_I_TO_G_SIZE','GL_PIXEL_MAP_I_TO_G',
- 'GL_PIXEL_MAP_I_TO_B_SIZE','GL_PIXEL_MAP_I_TO_B','GL_PIXEL_MAP_I_TO_A_SIZE','GL_PIXEL_MAP_I_TO_A','GL_PIXEL_MAP_G_TO_G_SIZE',
- 'GL_PIXEL_MAP_G_TO_G','GL_PIXEL_MAP_B_TO_B_SIZE','GL_PIXEL_MAP_B_TO_B','GL_PIXEL_MAP_A_TO_A_SIZE','GL_PIXEL_MAP_A_TO_A',
- 'GL_PHONG_WIN','GL_PHONG_HINT_WIN','GL_PERSPECTIVE_CORRECTION_HINT','GL_PASS_THROUGH_TOKEN','GL_PACK_SWAP_BYTES',
- 'GL_PACK_SKIP_ROWS','GL_PACK_SKIP_PIXELS','GL_PACK_ROW_LENGTH','GL_PACK_LSB_FIRST','GL_PACK_ALIGNMENT','GL_OUT_OF_MEMORY',
- 'GL_OR_REVERSE','GL_OR_INVERTED','GL_ORDER','GL_OR','GL_OPERAND2_RGB_EXT','GL_OPERAND2_RGB','GL_OPERAND2_ALPHA_EXT',
- 'GL_OPERAND2_ALPHA','GL_OPERAND1_RGB_EXT','GL_OPERAND1_RGB','GL_OPERAND1_ALPHA_EXT','GL_OPERAND1_ALPHA','GL_OPERAND0_RGB_EXT',
- 'GL_OPERAND0_RGB','GL_OPERAND0_ALPHA_EXT','GL_OPERAND0_ALPHA','GL_ONE_MINUS_SRC_COLOR','GL_ONE_MINUS_SRC_ALPHA',
- 'GL_ONE_MINUS_DST_COLOR','GL_ONE_MINUS_DST_ALPHA','GL_ONE','GL_OBJECT_PLANE','GL_OBJECT_LINEAR','GL_NO_ERROR',
- 'GL_NOTEQUAL','GL_NORMAL_ARRAY_TYPE_EXT','GL_NORMAL_ARRAY_TYPE','GL_NORMAL_ARRAY_STRIDE_EXT','GL_NORMAL_ARRAY_STRIDE',
- 'GL_NORMAL_ARRAY_POINTER_EXT','GL_NORMAL_ARRAY_POINTER','GL_NORMAL_ARRAY_EXT','GL_NORMAL_ARRAY_COUNT_EXT',
- 'GL_NORMAL_ARRAY','GL_NORMALIZE','GL_NOR','GL_NOOP','GL_NONE','GL_NICEST','GL_NEVER','GL_NEAREST_MIPMAP_NEAREST','GL_NEAREST_MIPMAP_LINEAR',
- 'GL_NEAREST','GL_NAND','GL_NAME_STACK_DEPTH','GL_N3F_V3F','GL_MULT','GL_MODULATE','GL_MODELVIEW_STACK_DEPTH','GL_MODELVIEW_MATRIX',
- 'GL_MODELVIEW','GL_MAX_VIEWPORT_DIMS','GL_MAX_TEXTURE_UNITS_ARB','GL_MAX_TEXTURE_UNITS','GL_MAX_TEXTURE_STACK_DEPTH',
- 'GL_MAX_TEXTURE_SIZE','GL_MAX_PROJECTION_STACK_DEPTH','GL_MAX_PIXEL_MAP_TABLE','GL_MAX_NAME_STACK_DEPTH','GL_MAX_MODELVIEW_STACK_DEPTH',
- 'GL_MAX_LIST_NESTING','GL_MAX_LIGHTS','GL_MAX_EVAL_ORDER','GL_MAX_ELEMENTS_VERTICES_WIN','GL_MAX_ELEMENTS_INDICES_WIN',
- 'GL_MAX_CLIP_PLANES','GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','GL_MAX_ATTRIB_STACK_DEPTH','GL_MATRIX_MODE','GL_MAP_STENCIL',
- 'GL_MAP_COLOR','GL_MAP2_VERTEX_4','GL_MAP2_VERTEX_3','GL_MAP2_TEXTURE_COORD_4','GL_MAP2_TEXTURE_COORD_3','GL_MAP2_TEXTURE_COORD_2',
- 'GL_MAP2_TEXTURE_COORD_1','GL_MAP2_NORMAL','GL_MAP2_INDEX','GL_MAP2_GRID_SEGMENTS','GL_MAP2_GRID_DOMAIN','GL_MAP2_COLOR_4',
- 'GL_MAP1_VERTEX_4','GL_MAP1_VERTEX_3','GL_MAP1_TEXTURE_COORD_4','GL_MAP1_TEXTURE_COORD_3','GL_MAP1_TEXTURE_COORD_2',
- 'GL_MAP1_TEXTURE_COORD_1','GL_MAP1_NORMAL','GL_MAP1_INDEX','GL_MAP1_GRID_SEGMENTS','GL_MAP1_GRID_DOMAIN',
- 'GL_MAP1_COLOR_4','GL_LUMINANCE_ALPHA','GL_LUMINANCE8_ALPHA8','GL_LUMINANCE8','GL_LUMINANCE6_ALPHA2','GL_LUMINANCE4_ALPHA4',
- 'GL_LUMINANCE4','GL_LUMINANCE16_ALPHA16','GL_LUMINANCE16','GL_LUMINANCE12_ALPHA4','GL_LUMINANCE12_ALPHA12','GL_LUMINANCE12',
- 'GL_LUMINANCE','GL_LOGIC_OP_MODE','GL_LOGIC_OP','GL_LOAD','GL_LIST_MODE','GL_LIST_INDEX','GL_LIST_BIT',
- 'GL_LIST_BASE','GL_LINE_WIDTH_RANGE','GL_LINE_WIDTH_GRANULARITY','GL_LINE_WIDTH','GL_LINE_TOKEN','GL_LINE_STRIP','GL_LINE_STIPPLE_REPEAT',
- 'GL_LINE_STIPPLE_PATTERN','GL_LINE_STIPPLE','GL_LINE_SMOOTH_HINT','GL_LINE_SMOOTH','GL_LINE_RESET_TOKEN','GL_LINE_LOOP',
- 'GL_LINE_BIT','GL_LINES','GL_LINEAR_MIPMAP_NEAREST','GL_LINEAR_MIPMAP_LINEAR','GL_LINEAR_ATTENUATION','GL_LINEAR',
- 'GL_LINE','GL_LIGHT_MODEL_TWO_SIDE','GL_LIGHT_MODEL_LOCAL_VIEWER','GL_LIGHT_MODEL_AMBIENT','GL_LIGHTING_BIT',
- 'GL_LIGHTING','GL_LIGHT7','GL_LIGHT6','GL_LIGHT5','GL_LIGHT4','GL_LIGHT3','GL_LIGHT2','GL_LIGHT1','GL_LIGHT0',
- 'GL_LESS','GL_LEQUAL','GL_LEFT','GL_KEEP','GL_INVERT','GL_INVALID_VALUE','GL_INVALID_OPERATION','GL_INVALID_ENUM','GL_INTERPOLATE_EXT',
- 'GL_INTERPOLATE','GL_INTENSITY8','GL_INTENSITY4','GL_INTENSITY16','GL_INTENSITY12','GL_INTENSITY','GL_INT',
- 'GL_INDEX_WRITEMASK','GL_INDEX_SHIFT','GL_INDEX_OFFSET','GL_INDEX_MODE','GL_INDEX_LOGIC_OP','GL_INDEX_CLEAR_VALUE','GL_INDEX_BITS',
- 'GL_INDEX_ARRAY_TYPE_EXT','GL_INDEX_ARRAY_TYPE','GL_INDEX_ARRAY_STRIDE_EXT','GL_INDEX_ARRAY_STRIDE','GL_INDEX_ARRAY_POINTER_EXT',
- 'GL_INDEX_ARRAY_POINTER','GL_INDEX_ARRAY_EXT','GL_INDEX_ARRAY_COUNT_EXT','GL_INDEX_ARRAY','GL_INCR','GL_HINT_BIT',
- 'GL_GREEN_SCALE','GL_GREEN_BITS','GL_GREEN_BIAS','GL_GREEN','GL_GREATER','GL_GEQUAL','GL_FRONT_RIGHT','GL_FRONT_LEFT',
- 'GL_FRONT_FACE','GL_FRONT_AND_BACK','GL_FRONT','GL_FOG_START','GL_FOG_SPECULAR_TEXTURE_WIN','GL_FOG_MODE','GL_FOG_INDEX',
- 'GL_FOG_HINT','GL_FOG_END','GL_FOG_DENSITY','GL_FOG_COLOR','GL_FOG_BIT','GL_FOG','GL_FLOAT','GL_FLAT','GL_FILL',
- 'GL_FEEDBACK_BUFFER_TYPE','GL_FEEDBACK_BUFFER_SIZE','GL_FEEDBACK_BUFFER_POINTER','GL_FEEDBACK','GL_FASTEST','GL_FALSE',
- 'GL_EYE_PLANE','GL_EYE_LINEAR','GL_EXT_vertex_array','GL_EXT_paletted_texture','GL_EXT_bgra','GL_EXTENSIONS','GL_EXP2',
- 'GL_EXP','GL_EVAL_BIT','GL_EQUIV','GL_EQUAL','GL_ENABLE_BIT','GL_EMISSION','GL_EDGE_FLAG_ARRAY_STRIDE_EXT','GL_EDGE_FLAG_ARRAY_STRIDE',
- 'GL_EDGE_FLAG_ARRAY_POINTER_EXT','GL_EDGE_FLAG_ARRAY_POINTER','GL_EDGE_FLAG_ARRAY_EXT','GL_EDGE_FLAG_ARRAY_COUNT_EXT','GL_EDGE_FLAG_ARRAY',
- 'GL_EDGE_FLAG','GL_DST_COLOR','GL_DST_ALPHA','GL_DRAW_PIXEL_TOKEN','GL_DRAW_BUFFER','GL_DOUBLE_EXT','GL_DOUBLEBUFFER',
- 'GL_DOUBLE','GL_DONT_CARE','GL_DOMAIN','GL_DITHER','GL_DIFFUSE','GL_DEPTH_WRITEMASK','GL_DEPTH_TEST','GL_DEPTH_SCALE',
- 'GL_DEPTH_RANGE','GL_DEPTH_FUNC','GL_DEPTH_COMPONENT','GL_DEPTH_CLEAR_VALUE','GL_DEPTH_BUFFER_BIT','GL_DEPTH_BITS',
- 'GL_DEPTH_BIAS','GL_DEPTH','GL_DECR','GL_DECAL','GL_CW','GL_CURRENT_TEXTURE_COORDS','GL_CURRENT_RASTER_TEXTURE_COORDS','GL_CURRENT_RASTER_POSITION_VALID',
- 'GL_CURRENT_RASTER_POSITION','GL_CURRENT_RASTER_INDEX','GL_CURRENT_RASTER_DISTANCE','GL_CURRENT_RASTER_COLOR','GL_CURRENT_NORMAL',
- 'GL_CURRENT_INDEX','GL_CURRENT_COLOR','GL_CURRENT_BIT','GL_CULL_FACE_MODE','GL_CULL_FACE','GL_COPY_PIXEL_TOKEN',
- 'GL_COPY_INVERTED','GL_COPY','GL_CONSTANT_EXT','GL_CONSTANT_ATTENUATION','GL_CONSTANT','GL_COMPILE_AND_EXECUTE','GL_COMPILE','GL_COMBINE_RGB_EXT',
- 'GL_COMBINE_RGB','GL_COMBINE_EXT','GL_COMBINE_ALPHA_EXT','GL_COMBINE_ALPHA','GL_COMBINE','GL_COLOR_WRITEMASK',
- 'GL_COLOR_TABLE_WIDTH_EXT','GL_COLOR_TABLE_RED_SIZE_EXT','GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','GL_COLOR_TABLE_INTENSITY_SIZE_EXT',
- 'GL_COLOR_TABLE_GREEN_SIZE_EXT','GL_COLOR_TABLE_FORMAT_EXT','GL_COLOR_TABLE_BLUE_SIZE_EXT','GL_COLOR_TABLE_ALPHA_SIZE_EXT',
- 'GL_COLOR_MATERIAL_PARAMETER','GL_COLOR_MATERIAL_FACE','GL_COLOR_MATERIAL','GL_COLOR_LOGIC_OP','GL_COLOR_INDEXES',
- 'GL_COLOR_INDEX8_EXT','GL_COLOR_INDEX4_EXT','GL_COLOR_INDEX2_EXT','GL_COLOR_INDEX1_EXT','GL_COLOR_INDEX16_EXT',
- 'GL_COLOR_INDEX12_EXT','GL_COLOR_INDEX','GL_COLOR_CLEAR_VALUE','GL_COLOR_BUFFER_BIT','GL_COLOR_ARRAY_TYPE_EXT',
- 'GL_COLOR_ARRAY_TYPE','GL_COLOR_ARRAY_STRIDE_EXT','GL_COLOR_ARRAY_STRIDE','GL_COLOR_ARRAY_SIZE_EXT','GL_COLOR_ARRAY_SIZE',
- 'GL_COLOR_ARRAY_POINTER_EXT','GL_COLOR_ARRAY_POINTER','GL_COLOR_ARRAY_EXT','GL_COLOR_ARRAY_COUNT_EXT','GL_COLOR_ARRAY',
- 'GL_COLOR','GL_COEFF','GL_CLIP_PLANE5','GL_CLIP_PLANE4','GL_CLIP_PLANE3','GL_CLIP_PLANE2','GL_CLIP_PLANE1','GL_CLIP_PLANE0',
- 'GL_CLIENT_VERTEX_ARRAY_BIT','GL_CLIENT_PIXEL_STORE_BIT','GL_CLIENT_ATTRIB_STACK_DEPTH','GL_CLIENT_ALL_ATTRIB_BITS',
- 'GL_CLIENT_ACTIVE_TEXTURE_ARB','GL_CLIENT_ACTIVE_TEXTURE','GL_CLEAR','GL_CLAMP','GL_CCW','GL_C4UB_V3F','GL_C4UB_V2F',
- 'GL_C4F_N3F_V3F','GL_C3F_V3F','GL_BYTE','GL_BLUE_SCALE','GL_BLUE_BITS','GL_BLUE_BIAS','GL_BLUE','GL_BLEND_SRC','GL_BLEND_DST',
- 'GL_BLEND','GL_BITMAP_TOKEN','GL_BITMAP','GL_BGR_EXT','GL_BGRA_EXT','GL_BACK_RIGHT','GL_BACK_LEFT','GL_BACK',
- 'GL_AUX_BUFFERS','GL_AUX3','GL_AUX2','GL_AUX1','GL_AUX0','GL_AUTO_NORMAL','GL_ATTRIB_STACK_DEPTH','GL_AND_REVERSE',
- 'GL_AND_INVERTED','GL_AND','GL_AMBIENT_AND_DIFFUSE','GL_AMBIENT','GL_ALWAYS','GL_ALPHA_TEST_REF','GL_ALPHA_TEST_FUNC',
- 'GL_ALPHA_TEST','GL_ALPHA_SCALE','GL_ALPHA_BITS','GL_ALPHA_BIAS','GL_ALPHA8','GL_ALPHA4','GL_ALPHA16','GL_ALPHA12',
- 'GL_ALPHA','GL_ALL_ATTRIB_BITS','GL_ADD_SIGNED_EXT','GL_ADD_SIGNED','GL_ADD','GL_ACTIVE_TEXTURE_ARB','GL_ACTIVE_TEXTURE',
- 'GL_ACCUM_RED_BITS','GL_ACCUM_GREEN_BITS','GL_ACCUM_CLEAR_VALUE','GL_ACCUM_BUFFER_BIT','GL_ACCUM_BLUE_BITS','GL_ACCUM_ALPHA_BITS',
- 'GL_ACCUM','GL_4_BYTES','GL_4D_COLOR_TEXTURE','GL_3_BYTES','GL_3D_COLOR_TEXTURE','GL_3D_COLOR','GL_3D','GL_2_BYTES',
- 'GL_2D','GLU_V_STEP','GLU_VERTEX','GLU_VERSION_1_2','GLU_VERSION_1_1','GLU_VERSION','GLU_U_STEP','GLU_UNKNOWN','GLU_TRUE',
- 'GLU_TESS_WINDING_RULE','GLU_TESS_WINDING_POSITIVE','GLU_TESS_WINDING_ODD','GLU_TESS_WINDING_NONZERO','GLU_TESS_WINDING_NEGATIVE',
- 'GLU_TESS_WINDING_ABS_GEQ_TWO','GLU_TESS_VERTEX_DATA','GLU_TESS_VERTEX','GLU_TESS_TOLERANCE','GLU_TESS_NEED_COMBINE_CALLBACK','GLU_TESS_MISSING_END_POLYGON',
- 'GLU_TESS_MISSING_END_CONTOUR','GLU_TESS_MISSING_BEGIN_POLYGON','GLU_TESS_MISSING_BEGIN_CONTOUR','GLU_TESS_ERROR_DATA',
- 'GLU_TESS_ERROR8','GLU_TESS_ERROR7','GLU_TESS_ERROR6','GLU_TESS_ERROR5','GLU_TESS_ERROR4','GLU_TESS_ERROR3','GLU_TESS_ERROR2',
- 'GLU_TESS_ERROR1','GLU_TESS_ERROR','GLU_TESS_END_DATA','GLU_TESS_END','GLU_TESS_EDGE_FLAG_DATA','GLU_TESS_EDGE_FLAG',
- 'GLU_TESS_COORD_TOO_LARGE','GLU_TESS_COMBINE_DATA','GLU_TESS_COMBINE','GLU_TESS_BOUNDARY_ONLY','GLU_TESS_BEGIN_DATA',
- 'GLU_TESS_BEGIN','GLU_SMOOTH','GLU_SILHOUETTE','GLU_SAMPLING_TOLERANCE','GLU_SAMPLING_METHOD','GLU_POINT','GLU_PATH_LENGTH',
- 'GLU_PARAMETRIC_TOLERANCE','GLU_PARAMETRIC_ERROR','GLU_OUT_OF_MEMORY','GLU_OUTSIDE','GLU_OUTLINE_POLYGON','GLU_OUTLINE_PATCH',
- 'GLU_NURBS_ERROR9','GLU_NURBS_ERROR8','GLU_NURBS_ERROR7','GLU_NURBS_ERROR6','GLU_NURBS_ERROR5','GLU_NURBS_ERROR4',
- 'GLU_NURBS_ERROR37','GLU_NURBS_ERROR36','GLU_NURBS_ERROR35','GLU_NURBS_ERROR34','GLU_NURBS_ERROR33','GLU_NURBS_ERROR32',
- 'GLU_NURBS_ERROR31','GLU_NURBS_ERROR30','GLU_NURBS_ERROR3','GLU_NURBS_ERROR29','GLU_NURBS_ERROR28','GLU_NURBS_ERROR27','GLU_NURBS_ERROR26',
- 'GLU_NURBS_ERROR25','GLU_NURBS_ERROR24','GLU_NURBS_ERROR23','GLU_NURBS_ERROR22','GLU_NURBS_ERROR21','GLU_NURBS_ERROR20',
- 'GLU_NURBS_ERROR2','GLU_NURBS_ERROR19','GLU_NURBS_ERROR18','GLU_NURBS_ERROR17','GLU_NURBS_ERROR16','GLU_NURBS_ERROR15','GLU_NURBS_ERROR14',
- 'GLU_NURBS_ERROR13','GLU_NURBS_ERROR12','GLU_NURBS_ERROR11','GLU_NURBS_ERROR10','GLU_NURBS_ERROR1','GLU_NONE',
- 'GLU_MAP1_TRIM_3','GLU_MAP1_TRIM_2','GLU_LINE','GLU_INVALID_VALUE','GLU_INVALID_ENUM','GLU_INTERIOR','GLU_INSIDE','GLU_INCOMPATIBLE_GL_VERSION',
- 'GLU_FLAT','GLU_FILL','GLU_FALSE','GLU_EXTERIOR','GLU_EXTENSIONS','GLU_ERROR','GLU_END','GLU_EDGE_FLAG','GLU_DOMAIN_DISTANCE',
- 'GLU_DISPLAY_MODE','GLU_CW','GLU_CULLING','GLU_CCW','GLU_BEGIN','GLU_AUTO_LOAD_MATRIX','CHANNEL_UNORDERED','CHANNEL_ORDERED',
- 'CHANNEL_MAX'
- ),
- 2 => array(
-
- // Red Lowercase Keywords
-
- 'WriteWord','WriteString','WriteReal','WriteLine','WriteInt','WriteFloat','WriteDouble','WriteChar','WriteByte',
- 'windowwidth','windowheight','waittimer','Vec4','Vec3','Vec2','val','UpdateJoystick','ucase$','Transpose','tickcount',
- 'textscroll','textrows','textmode','textcols','tanh','tand','tan','synctimercatchup','synctimer','swapbuffers',
- 'str$','stopsoundvoice','stopsounds','stopmusic','sqrt','sqr','sprzorder','spryvel','sprytiles','sprysize','spryrepeat',
- 'spryflip','sprycentre','spry','sprxvel','sprxtiles','sprxsize','sprxrepeat','sprxflip','sprxcentre','sprx',
- 'sprvisible','sprvel','sprtype','sprtop','sprspin','sprsolid','sprsetzorder','sprsetyvel','sprsetysize','sprsetyrepeat',
- 'sprsetyflip','sprsetycentre','sprsety','sprsetxvel','sprsetxsize','sprsetxrepeat','sprsetxflip','sprsetxcentre',
- 'sprsetx','sprsetvisible','sprsetvel','sprsettiles','sprsettextures','sprsettexture','sprsetspin','sprsetsolid',
- 'sprsetsize','sprsetscale','sprsetpos','sprsetparallax','sprsetframe','sprsetcolor','sprsetanimspeed','sprsetanimloop',
- 'sprsetangle','sprsetalpha','sprscale','sprright','sprpos','sprparallax','sprleft','spriteareawidth','spriteareaheight',
- 'sprframe','sprcolor','sprcameraz','sprcameray','sprcamerax','sprcamerasetz','sprcamerasety','sprcamerasetx',
- 'sprcamerasetpos','sprcamerasetfov','sprcamerasetangle','sprcamerapos','sprcamerafov','sprcameraangle',
- 'sprbottom','spranimspeed','spranimloop','spranimdone','sprangle','spralpha','spraddtextures','spraddtexture',
- 'sounderror','sleep','sind','sin','showcursor','sgn','settextscroll','setmusicvolume','SendMessage','Seek',
- 'scankeydown','RTInvert','rnd','right$','resizetext','resizespritearea','RejectConnection','ReceiveMessage','ReadWord',
- 'ReadText','ReadReal','ReadLine','ReadInt','ReadFloat','ReadDouble','ReadChar','ReadByte','randomize','printr',
- 'print','pow','playsound','playmusic','performancecounter','Orthonormalize','OpenFileWrite','OpenFileRead','Normalize',
- 'newtilemap','newsprite','NewServer','NewConnection','musicplaying','mouse_yd','mouse_y','mouse_xd','mouse_x',
- 'mouse_wheel','mouse_button','mid$','MessageSmoothed','MessageReliable','MessagePending','MessageChannel','maxtextureunits',
- 'MatrixZero','MatrixTranslate','MatrixScale','MatrixRotateZ','MatrixRotateY','MatrixRotateX','MatrixRotate','MatrixIdentity',
- 'MatrixCrossProduct','MatrixBasis','log','locate','loadtexture','loadsound','loadmipmaptexture','loadmipmapimagestrip',
- 'loadimagestrip','loadimage','Length','len','left$','lcase$','keydown','Joy_Y','Joy_X','Joy_Up','Joy_Right','Joy_Left',
- 'Joy_Keys','Joy_Down','Joy_Button','Joy_3','Joy_2','Joy_1','Joy_0','int','inscankey','input$','inkey$','inittimer',
- 'imagewidth','imagestripframes','imageheight','imageformat','imagedatatype','hidecursor','glViewport','glVertex4sv',
- 'glVertex4s','glVertex4iv','glVertex4i','glVertex4fv','glVertex4f','glVertex4dv','glVertex4d','glVertex3sv','glVertex3s',
- 'glVertex3iv','glVertex3i','glVertex3fv','glVertex3f','glVertex3dv','glVertex3d','glVertex2sv','glVertex2s','glVertex2iv',
- 'glVertex2i','glVertex2fv','glVertex2f','glVertex2dv','glVertex2d','gluPerspective','gluOrtho2D','gluLookAt',
- 'glubuild2dmipmaps','glTranslatef','glTranslated','gltexsubimage2d','glTexParameteriv','glTexParameteri',
- 'glTexParameterfv','glTexParameterf','glteximage2d','glTexGeniv','glTexGeni','glTexGenfv','glTexGenf','glTexGendv',
- 'glTexGend','glTexEnviv','glTexEnvi','glTexEnvfv','glTexEnvf','glTexCoord4sv','glTexCoord4s','glTexCoord4iv','glTexCoord4i',
- 'glTexCoord4fv','glTexCoord4f','glTexCoord4dv','glTexCoord4d','glTexCoord3sv','glTexCoord3s','glTexCoord3iv','glTexCoord3i',
- 'glTexCoord3fv','glTexCoord3f','glTexCoord3dv','glTexCoord3d','glTexCoord2sv','glTexCoord2s','glTexCoord2iv','glTexCoord2i',
- 'glTexCoord2fv','glTexCoord2f','glTexCoord2dv','glTexCoord2d','glTexCoord1sv','glTexCoord1s','glTexCoord1iv','glTexCoord1i','glTexCoord1fv',
- 'glTexCoord1f','glTexCoord1dv','glTexCoord1d','glStencilOp','glStencilMask','glStencilFunc','glShadeModel','glSelectBuffer',
- 'glScissor','glScalef','glScaled','glRotatef','glRotated','glRenderMode','glRectsv','glRects','glRectiv','glRecti',
- 'glRectfv','glRectf','glRectdv','glRectd','glReadBuffer','glRasterPos4sv','glRasterPos4s','glRasterPos4iv',
- 'glRasterPos4i','glRasterPos4fv','glRasterPos4f','glRasterPos4dv','glRasterPos4d','glRasterPos3sv','glRasterPos3s',
- 'glRasterPos3iv','glRasterPos3i','glRasterPos3fv','glRasterPos3f','glRasterPos3dv','glRasterPos3d','glRasterPos2sv',
- 'glRasterPos2s','glRasterPos2iv','glRasterPos2i','glRasterPos2fv','glRasterPos2f','glRasterPos2dv','glRasterPos2d',
- 'glPushName','glPushMatrix','glPushClientAttrib','glPushAttrib','glPrioritizeTextures','glPopName','glPopMatrix',
- 'glPopClientAttrib','glPopAttrib','glpolygonstipple','glPolygonOffset','glPolygonMode','glPointSize','glPixelZoom',
- 'glPixelTransferi','glPixelTransferf','glPixelStorei','glPixelStoref','glPassThrough','glOrtho','glNormal3sv','glNormal3s',
- 'glNormal3iv','glNormal3i','glNormal3fv','glNormal3f','glNormal3dv','glNormal3d','glNormal3bv','glNormal3b','glNewList',
- 'glMultMatrixf','glMultMatrixd','glmultitexcoord2f','glmultitexcoord2d','glMatrixMode','glMaterialiv','glMateriali',
- 'glMaterialfv','glMaterialf','glMapGrid2f','glMapGrid2d','glMapGrid1f','glMapGrid1d','glLogicOp','glLoadName','glLoadMatrixf',
- 'glLoadMatrixd','glLoadIdentity','glListBase','glLineWidth','glLineStipple','glLightModeliv','glLightModeli','glLightModelfv',
- 'glLightModelf','glLightiv','glLighti','glLightfv','glLightf','glIsTexture','glIsList','glIsEnabled','glInitNames',
- 'glIndexubv','glIndexub','glIndexsv','glIndexs','glIndexMask','glIndexiv','glIndexi','glIndexfv','glIndexf','glIndexdv',
- 'glIndexd','glHint','glGetTexParameteriv','glGetTexParameterfv','glGetTexLevelParameteriv','glGetTexLevelParameterfv',
- 'glGetTexGeniv','glGetTexGenfv','glGetTexGendv','glGetTexEnviv','glGetTexEnvfv','glgetstring','glgetpolygonstipple','glGetPixelMapuiv',
- 'glGetMaterialiv','glGetMaterialfv','glGetLightiv','glGetLightfv','glGetIntegerv','glGetIntegerv','glGetFloatv','glGetFloatv',
- 'glGetError','glGetDoublev','glGetDoublev','glGetClipPlane','glGetBooleanv','glGetBooleanv','glgentextures','glgentexture',
- 'glgenlists','glFrustum','glFrontFace','glFogiv','glFogi','glFogfv','glFogf','glFlush','glFinish','glFeedbackBuffer',
- 'glEvalPoint2','glEvalPoint1','glEvalMesh2','glEvalMesh1','glEvalCoord2fv','glEvalCoord2f','glEvalCoord2dv','glEvalCoord2d',
- 'glEvalCoord1fv','glEvalCoord1f','glEvalCoord1dv','glEvalCoord1d','glEndList','glEnd','glEnableClientState','glEnable',
- 'glEdgeFlagv','glEdgeFlag','glDrawBuffer','glDrawArrays','glDisableClientState','glDisable','glDepthRange','glDepthMask',
- 'glDepthFunc','gldeletetextures','gldeletetexture','gldeletelists','glCullFace','glCopyTexSubImage2D','glCopyTexSubImage1D',
- 'glCopyTexImage2D','glCopyTexImage1D','glColorMaterial','glColorMask','glColor4usv','glColor4us','glColor4uiv','glColor4ui',
- 'glColor4ubv','glColor4ub','glColor4sv','glColor4s','glColor4iv','glColor4i','glColor4fv','glColor4f','glColor4dv',
- 'glColor4d','glColor4bv','glColor4b','glColor3usv','glColor3us','glColor3uiv','glColor3ui','glColor3ubv','glColor3ub',
- 'glColor3sv','glColor3s','glColor3iv','glColor3i','glColor3fv','glColor3f','glColor3dv','glColor3d','glColor3bv',
- 'glColor3b','glClipPlane','glClearStencil','glClearIndex','glClearDepth','glClearColor','glClearAccum','glClear',
- 'glcalllists','glCallList','glBlendFunc','glBindTexture','glBegin','glArrayElement','glAreTexturesResident',
- 'glAlphaFunc','glactivetexture','glAccum','font','FindNextFile','FindFirstFile','FindClose','FileError',
- 'extensionsupported','exp','execute','EndOfFile','drawtext','divbyzero','Determinant','deletesprite','deletesound',
- 'DeleteServer','deleteimage','DeleteConnection','defaultfont','CrossProduct','cosd','cos','copysprite','ConnectionPending',
- 'ConnectionHandShaking','ConnectionConnected','ConnectionAddress','compilererrorline','compilererrorcol','compilererror',
- 'compilefile','compile','color','cls','CloseFile','clearregion','clearline','clearkeys','chr$','charat$','bindsprite',
- 'beep','atnd','atn2d','atn2','atn','atand','asc','argcount','arg','animatesprites','AcceptConnection','abs'
- ),
- 3 => array(
-
- // Blue Lowercase Keywords
-
- 'xor','while','wend','until','type','traditional_print','traditional','to','then','struc','string','step','single',
- 'run','return','reset','read','or','null','not','next','lor','loop','language','land','integer','input','if',
- 'goto','gosub','for','endstruc','endif','end','elseif','else','double','do','dim','data','const','basic4gl','as',
- 'and','alloc'
- )
-
- ),
- 'SYMBOLS' => array(
- '=', '<', '>', '>=', '<=', '+', '-', '*', '/', '%', '(', ')', '{', '}', '[', ']', '&', ';', ':', '$'
- ),
-
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000080; font-weight: bold;',
- 2 => 'color: #FF0000;',
- 3 => 'color: #0000FF;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #657CC4; font-style: italic;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000080;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #008000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #000080; font-weight: bold;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #0000FF;'
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4
-);
-?>
+<?php
+/*************************************************************************************
+ * basic4gl.php
+ * ---------------------------------
+ * Author: Matthew Webb (bmatthew1 at blueyonder.co.uk)
+ * Copyright: (c) 2004 Matthew Webb (http://matthew-4gl.wikispaces.com)
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/09/15
+ *
+ * Basic4GL language file for GeSHi.
+ *
+ * You can find the Basic4GL Website at (http://www.basic4gl.net/)
+ *
+ * CHANGES
+ * -------
+ * 2007/09/17 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2007/09/17)
+ * -------------------------
+ * Make sure all the OpenGL and Basic4GL commands have been added and are complete.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Basic4GL',
+ 'COMMENT_SINGLE' => array(1 => "'"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+
+ // Navy Blue Bold Keywords
+
+ 'true','rnd_max','m_pi','m_e','false','VK_ZOOM','VK_UP','VK_TAB','VK_SUBTRACT','VK_SPACE','VK_SNAPSHOT',
+ 'VK_SHIFT','VK_SEPARATOR','VK_SELECT','VK_SCROLL','VK_RWIN','VK_RSHIFT','VK_RMENU','VK_RIGHT','VK_RETURN',
+ 'VK_RCONTROL','VK_RBUTTON','VK_PROCESSKEY','VK_PRIOR','VK_PRINT','VK_PLAY','VK_PAUSE','VK_NUMPAD9','VK_NUMPAD8',
+ 'VK_NUMPAD7','VK_NUMPAD6','VK_NUMPAD5','VK_NUMPAD4','VK_NUMPAD3','VK_NUMPAD2','VK_NUMPAD1','VK_NUMPAD0',
+ 'VK_NUMLOCK','VK_NONCONVERT','VK_NEXT','VK_MULTIPLY','VK_MODECHANGE','VK_MENU','VK_MBUTTON','VK_LWIN',
+ 'VK_LSHIFT','VK_LMENU','VK_LEFT','VK_LCONTROL','VK_LBUTTON','VK_KANJI','VK_KANA','VK_JUNJA','VK_INSERT',
+ 'VK_HOME','VK_HELP','VK_HANJA','VK_HANGUL','VK_HANGEUL','VK_FINAL','VK_F9','VK_F8','VK_F7','VK_F6','VK_F5',
+ 'VK_F4','VK_F3','VK_F24','VK_F23','VK_F22','VK_F21','VK_F20','VK_F2','VK_F19','VK_F18','VK_F17','VK_F16',
+ 'VK_F15','VK_F14','VK_F13','VK_F12','VK_F11','VK_F10','VK_F1','VK_EXSEL','VK_EXECUTE','VK_ESCAPE','VK_EREOF',
+ 'VK_END','VK_DOWN','VK_DIVIDE','VK_DELETE','VK_DECIMAL','VK_CRSEL','VK_CONVERT','VK_CONTROL','VK_CLEAR',
+ 'VK_CAPITAL','VK_CANCEL','VK_BACK','VK_ATTN','VK_APPS','VK_ADD','VK_ACCEPT','TEXT_SIMPLE','TEXT_OVERLAID',
+ 'TEXT_BUFFERED','SPR_TILEMAP','SPR_SPRITE','SPR_INVALID','MOUSE_RBUTTON','MOUSE_MBUTTON','MOUSE_LBUTTON',
+ 'GL_ZOOM_Y','GL_ZOOM_X','GL_ZERO','GL_XOR','GL_WIN_swap_hint','GL_WIN_draw_range_elements','GL_VIEWPORT_BIT',
+ 'GL_VIEWPORT','GL_VERTEX_ARRAY_TYPE_EXT','GL_VERTEX_ARRAY_TYPE','GL_VERTEX_ARRAY_STRIDE_EXT','GL_VERTEX_ARRAY_STRIDE',
+ 'GL_VERTEX_ARRAY_SIZE_EXT','GL_VERTEX_ARRAY_SIZE','GL_VERTEX_ARRAY_POINTER_EXT','GL_VERTEX_ARRAY_POINTER',
+ 'GL_VERTEX_ARRAY_EXT','GL_VERTEX_ARRAY_COUNT_EXT','GL_VERTEX_ARRAY','GL_VERSION_1_1','GL_VERSION','GL_VENDOR',
+ 'GL_V3F','GL_V2F','GL_UNSIGNED_SHORT','GL_UNSIGNED_INT','GL_UNSIGNED_BYTE','GL_UNPACK_SWAP_BYTES','GL_UNPACK_SKIP_ROWS',
+ 'GL_UNPACK_SKIP_PIXELS','GL_UNPACK_ROW_LENGTH','GL_UNPACK_LSB_FIRST','GL_UNPACK_ALIGNMENT','GL_TRUE','GL_TRIANGLE_STRIP',
+ 'GL_TRIANGLE_FAN','GL_TRIANGLES','GL_TRANSFORM_BIT','GL_TEXTURE_WRAP_T','GL_TEXTURE_WRAP_S','GL_TEXTURE_WIDTH',
+ 'GL_TEXTURE_STACK_DEPTH','GL_TEXTURE_RESIDENT','GL_TEXTURE_RED_SIZE','GL_TEXTURE_PRIORITY','GL_TEXTURE_MIN_FILTER',
+ 'GL_TEXTURE_MATRIX','GL_TEXTURE_MAG_FILTER','GL_TEXTURE_LUMINANCE_SIZE','GL_TEXTURE_INTERNAL_FORMAT','GL_TEXTURE_INTENSITY_SIZE',
+ 'GL_TEXTURE_HEIGHT','GL_TEXTURE_GREEN_SIZE','GL_TEXTURE_GEN_T','GL_TEXTURE_GEN_S','GL_TEXTURE_GEN_R','GL_TEXTURE_GEN_Q',
+ 'GL_TEXTURE_GEN_MODE','GL_TEXTURE_ENV_MODE','GL_TEXTURE_ENV_COLOR','GL_TEXTURE_ENV','GL_TEXTURE_COORD_ARRAY_TYPE_EXT',
+ 'GL_TEXTURE_COORD_ARRAY_TYPE','GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','GL_TEXTURE_COORD_ARRAY_STRIDE','GL_TEXTURE_COORD_ARRAY_SIZE_EXT',
+ 'GL_TEXTURE_COORD_ARRAY_SIZE','GL_TEXTURE_COORD_ARRAY_POINTER_EXT','GL_TEXTURE_COORD_ARRAY_POINTER','GL_TEXTURE_COORD_ARRAY_EXT',
+ 'GL_TEXTURE_COORD_ARRAY_COUNT_EXT','GL_TEXTURE_COORD_ARRAY','GL_TEXTURE_COMPONENTS','GL_TEXTURE_BORDER_COLOR','GL_TEXTURE_BORDER',
+ 'GL_TEXTURE_BLUE_SIZE','GL_TEXTURE_BIT','GL_TEXTURE_BINDING_2D','GL_TEXTURE_BINDING_1D','GL_TEXTURE_ALPHA_SIZE',
+ 'GL_TEXTURE_2D','GL_TEXTURE_1D','GL_TEXTURE9_ARB','GL_TEXTURE9','GL_TEXTURE8_ARB','GL_TEXTURE8','GL_TEXTURE7_ARB',
+ 'GL_TEXTURE7','GL_TEXTURE6_ARB','GL_TEXTURE6','GL_TEXTURE5_ARB','GL_TEXTURE5','GL_TEXTURE4_ARB','GL_TEXTURE4',
+ 'GL_TEXTURE3_ARB','GL_TEXTURE31_ARB','GL_TEXTURE31','GL_TEXTURE30_ARB','GL_TEXTURE30','GL_TEXTURE3','GL_TEXTURE2_ARB',
+ 'GL_TEXTURE29_ARB','GL_TEXTURE29','GL_TEXTURE28_ARB','GL_TEXTURE28','GL_TEXTURE27_ARB','GL_TEXTURE27','GL_TEXTURE26_ARB',
+ 'GL_TEXTURE26','GL_TEXTURE25_ARB','GL_TEXTURE25','GL_TEXTURE24_ARB','GL_TEXTURE24','GL_TEXTURE23_ARB','GL_TEXTURE23',
+ 'GL_TEXTURE22_ARB','GL_TEXTURE22','GL_TEXTURE21_ARB','GL_TEXTURE21','GL_TEXTURE20_ARB','GL_TEXTURE20','GL_TEXTURE2',
+ 'GL_TEXTURE1_ARB','GL_TEXTURE19_ARB','GL_TEXTURE19','GL_TEXTURE18_ARB','GL_TEXTURE18','GL_TEXTURE17_ARB',
+ 'GL_TEXTURE17','GL_TEXTURE16_ARB','GL_TEXTURE16','GL_TEXTURE15_ARB','GL_TEXTURE15','GL_TEXTURE14_ARB','GL_TEXTURE14',
+ 'GL_TEXTURE13_ARB','GL_TEXTURE13','GL_TEXTURE12_ARB','GL_TEXTURE12','GL_TEXTURE11_ARB','GL_TEXTURE11','GL_TEXTURE10_ARB',
+ 'GL_TEXTURE10','GL_TEXTURE1','GL_TEXTURE0_ARB','GL_TEXTURE0','GL_TEXTURE','GL_T4F_V4F','GL_T4F_C4F_N3F_V4F','GL_T2F_V3F',
+ 'GL_T2F_N3F_V3F','GL_T2F_C4UB_V3F','GL_T2F_C4F_N3F_V3F','GL_T2F_C3F_V3F','GL_T','GL_SUBPIXEL_BITS','GL_STEREO',
+ 'GL_STENCIL_WRITEMASK','GL_STENCIL_VALUE_MASK','GL_STENCIL_TEST','GL_STENCIL_REF','GL_STENCIL_PASS_DEPTH_PASS',
+ 'GL_STENCIL_PASS_DEPTH_FAIL','GL_STENCIL_INDEX','GL_STENCIL_FUNC','GL_STENCIL_FAIL','GL_STENCIL_CLEAR_VALUE',
+ 'GL_STENCIL_BUFFER_BIT','GL_STENCIL_BITS','GL_STENCIL','GL_STACK_UNDERFLOW','GL_STACK_OVERFLOW','GL_SRC_COLOR',
+ 'GL_SRC_ALPHA_SATURATE','GL_SRC_ALPHA','GL_SPOT_EXPONENT','GL_SPOT_DIRECTION','GL_SPOT_CUTOFF','GL_SPHERE_MAP',
+ 'GL_SPECULAR','GL_SOURCE2_RGB_EXT','GL_SOURCE2_RGB','GL_SOURCE2_ALPHA_EXT','GL_SOURCE2_ALPHA','GL_SOURCE1_RGB_EXT',
+ 'GL_SOURCE1_RGB','GL_SOURCE1_ALPHA_EXT','GL_SOURCE1_ALPHA','GL_SOURCE0_RGB_EXT','GL_SOURCE0_RGB','GL_SOURCE0_ALPHA_EXT',
+ 'GL_SOURCE0_ALPHA','GL_SMOOTH','GL_SHORT','GL_SHININESS','GL_SHADE_MODEL','GL_SET','GL_SELECTION_BUFFER_SIZE',
+ 'GL_SELECTION_BUFFER_POINTER','GL_SELECT','GL_SCISSOR_TEST','GL_SCISSOR_BOX','GL_SCISSOR_BIT','GL_S','GL_RIGHT',
+ 'GL_RGB_SCALE_EXT','GL_RGB_SCALE','GL_RGBA_MODE','GL_RGBA8','GL_RGBA4','GL_RGBA2','GL_RGBA16','GL_RGBA12','GL_RGBA',
+ 'GL_RGB8','GL_RGB5_A1','GL_RGB5','GL_RGB4','GL_RGB16','GL_RGB12','GL_RGB10_A2','GL_RGB10','GL_RGB','GL_RETURN',
+ 'GL_REPLACE','GL_REPEAT','GL_RENDER_MODE','GL_RENDERER','GL_RENDER','GL_RED_SCALE','GL_RED_BITS','GL_RED_BIAS',
+ 'GL_RED','GL_READ_BUFFER','GL_R3_G3_B2','GL_R','GL_QUAD_STRIP','GL_QUADS','GL_QUADRATIC_ATTENUATION','GL_Q',
+ 'GL_PROXY_TEXTURE_2D','GL_PROXY_TEXTURE_1D','GL_PROJECTION_STACK_DEPTH','GL_PROJECTION_MATRIX','GL_PROJECTION',
+ 'GL_PRIMARY_COLOR_EXT','GL_PRIMARY_COLOR','GL_PREVIOUS_EXT','GL_PREVIOUS','GL_POSITION','GL_POLYGON_TOKEN',
+ 'GL_POLYGON_STIPPLE_BIT','GL_POLYGON_STIPPLE','GL_POLYGON_SMOOTH_HINT','GL_POLYGON_SMOOTH','GL_POLYGON_OFFSET_UNITS',
+ 'GL_POLYGON_OFFSET_POINT','GL_POLYGON_OFFSET_LINE','GL_POLYGON_OFFSET_FILL','GL_POLYGON_OFFSET_FACTOR','GL_POLYGON_MODE',
+ 'GL_POLYGON_BIT','GL_POLYGON','GL_POINT_TOKEN','GL_POINT_SMOOTH_HINT','GL_POINT_SMOOTH','GL_POINT_SIZE_RANGE',
+ 'GL_POINT_SIZE_GRANULARITY','GL_POINT_SIZE','GL_POINT_BIT','GL_POINTS','GL_POINT','GL_PIXEL_MODE_BIT',
+ 'GL_PIXEL_MAP_S_TO_S_SIZE','GL_PIXEL_MAP_S_TO_S','GL_PIXEL_MAP_R_TO_R_SIZE','GL_PIXEL_MAP_R_TO_R','GL_PIXEL_MAP_I_TO_R_SIZE',
+ 'GL_PIXEL_MAP_I_TO_R','GL_PIXEL_MAP_I_TO_I_SIZE','GL_PIXEL_MAP_I_TO_I','GL_PIXEL_MAP_I_TO_G_SIZE','GL_PIXEL_MAP_I_TO_G',
+ 'GL_PIXEL_MAP_I_TO_B_SIZE','GL_PIXEL_MAP_I_TO_B','GL_PIXEL_MAP_I_TO_A_SIZE','GL_PIXEL_MAP_I_TO_A','GL_PIXEL_MAP_G_TO_G_SIZE',
+ 'GL_PIXEL_MAP_G_TO_G','GL_PIXEL_MAP_B_TO_B_SIZE','GL_PIXEL_MAP_B_TO_B','GL_PIXEL_MAP_A_TO_A_SIZE','GL_PIXEL_MAP_A_TO_A',
+ 'GL_PHONG_WIN','GL_PHONG_HINT_WIN','GL_PERSPECTIVE_CORRECTION_HINT','GL_PASS_THROUGH_TOKEN','GL_PACK_SWAP_BYTES',
+ 'GL_PACK_SKIP_ROWS','GL_PACK_SKIP_PIXELS','GL_PACK_ROW_LENGTH','GL_PACK_LSB_FIRST','GL_PACK_ALIGNMENT','GL_OUT_OF_MEMORY',
+ 'GL_OR_REVERSE','GL_OR_INVERTED','GL_ORDER','GL_OR','GL_OPERAND2_RGB_EXT','GL_OPERAND2_RGB','GL_OPERAND2_ALPHA_EXT',
+ 'GL_OPERAND2_ALPHA','GL_OPERAND1_RGB_EXT','GL_OPERAND1_RGB','GL_OPERAND1_ALPHA_EXT','GL_OPERAND1_ALPHA','GL_OPERAND0_RGB_EXT',
+ 'GL_OPERAND0_RGB','GL_OPERAND0_ALPHA_EXT','GL_OPERAND0_ALPHA','GL_ONE_MINUS_SRC_COLOR','GL_ONE_MINUS_SRC_ALPHA',
+ 'GL_ONE_MINUS_DST_COLOR','GL_ONE_MINUS_DST_ALPHA','GL_ONE','GL_OBJECT_PLANE','GL_OBJECT_LINEAR','GL_NO_ERROR',
+ 'GL_NOTEQUAL','GL_NORMAL_ARRAY_TYPE_EXT','GL_NORMAL_ARRAY_TYPE','GL_NORMAL_ARRAY_STRIDE_EXT','GL_NORMAL_ARRAY_STRIDE',
+ 'GL_NORMAL_ARRAY_POINTER_EXT','GL_NORMAL_ARRAY_POINTER','GL_NORMAL_ARRAY_EXT','GL_NORMAL_ARRAY_COUNT_EXT',
+ 'GL_NORMAL_ARRAY','GL_NORMALIZE','GL_NOR','GL_NOOP','GL_NONE','GL_NICEST','GL_NEVER','GL_NEAREST_MIPMAP_NEAREST','GL_NEAREST_MIPMAP_LINEAR',
+ 'GL_NEAREST','GL_NAND','GL_NAME_STACK_DEPTH','GL_N3F_V3F','GL_MULT','GL_MODULATE','GL_MODELVIEW_STACK_DEPTH','GL_MODELVIEW_MATRIX',
+ 'GL_MODELVIEW','GL_MAX_VIEWPORT_DIMS','GL_MAX_TEXTURE_UNITS_ARB','GL_MAX_TEXTURE_UNITS','GL_MAX_TEXTURE_STACK_DEPTH',
+ 'GL_MAX_TEXTURE_SIZE','GL_MAX_PROJECTION_STACK_DEPTH','GL_MAX_PIXEL_MAP_TABLE','GL_MAX_NAME_STACK_DEPTH','GL_MAX_MODELVIEW_STACK_DEPTH',
+ 'GL_MAX_LIST_NESTING','GL_MAX_LIGHTS','GL_MAX_EVAL_ORDER','GL_MAX_ELEMENTS_VERTICES_WIN','GL_MAX_ELEMENTS_INDICES_WIN',
+ 'GL_MAX_CLIP_PLANES','GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','GL_MAX_ATTRIB_STACK_DEPTH','GL_MATRIX_MODE','GL_MAP_STENCIL',
+ 'GL_MAP_COLOR','GL_MAP2_VERTEX_4','GL_MAP2_VERTEX_3','GL_MAP2_TEXTURE_COORD_4','GL_MAP2_TEXTURE_COORD_3','GL_MAP2_TEXTURE_COORD_2',
+ 'GL_MAP2_TEXTURE_COORD_1','GL_MAP2_NORMAL','GL_MAP2_INDEX','GL_MAP2_GRID_SEGMENTS','GL_MAP2_GRID_DOMAIN','GL_MAP2_COLOR_4',
+ 'GL_MAP1_VERTEX_4','GL_MAP1_VERTEX_3','GL_MAP1_TEXTURE_COORD_4','GL_MAP1_TEXTURE_COORD_3','GL_MAP1_TEXTURE_COORD_2',
+ 'GL_MAP1_TEXTURE_COORD_1','GL_MAP1_NORMAL','GL_MAP1_INDEX','GL_MAP1_GRID_SEGMENTS','GL_MAP1_GRID_DOMAIN',
+ 'GL_MAP1_COLOR_4','GL_LUMINANCE_ALPHA','GL_LUMINANCE8_ALPHA8','GL_LUMINANCE8','GL_LUMINANCE6_ALPHA2','GL_LUMINANCE4_ALPHA4',
+ 'GL_LUMINANCE4','GL_LUMINANCE16_ALPHA16','GL_LUMINANCE16','GL_LUMINANCE12_ALPHA4','GL_LUMINANCE12_ALPHA12','GL_LUMINANCE12',
+ 'GL_LUMINANCE','GL_LOGIC_OP_MODE','GL_LOGIC_OP','GL_LOAD','GL_LIST_MODE','GL_LIST_INDEX','GL_LIST_BIT',
+ 'GL_LIST_BASE','GL_LINE_WIDTH_RANGE','GL_LINE_WIDTH_GRANULARITY','GL_LINE_WIDTH','GL_LINE_TOKEN','GL_LINE_STRIP','GL_LINE_STIPPLE_REPEAT',
+ 'GL_LINE_STIPPLE_PATTERN','GL_LINE_STIPPLE','GL_LINE_SMOOTH_HINT','GL_LINE_SMOOTH','GL_LINE_RESET_TOKEN','GL_LINE_LOOP',
+ 'GL_LINE_BIT','GL_LINES','GL_LINEAR_MIPMAP_NEAREST','GL_LINEAR_MIPMAP_LINEAR','GL_LINEAR_ATTENUATION','GL_LINEAR',
+ 'GL_LINE','GL_LIGHT_MODEL_TWO_SIDE','GL_LIGHT_MODEL_LOCAL_VIEWER','GL_LIGHT_MODEL_AMBIENT','GL_LIGHTING_BIT',
+ 'GL_LIGHTING','GL_LIGHT7','GL_LIGHT6','GL_LIGHT5','GL_LIGHT4','GL_LIGHT3','GL_LIGHT2','GL_LIGHT1','GL_LIGHT0',
+ 'GL_LESS','GL_LEQUAL','GL_LEFT','GL_KEEP','GL_INVERT','GL_INVALID_VALUE','GL_INVALID_OPERATION','GL_INVALID_ENUM','GL_INTERPOLATE_EXT',
+ 'GL_INTERPOLATE','GL_INTENSITY8','GL_INTENSITY4','GL_INTENSITY16','GL_INTENSITY12','GL_INTENSITY','GL_INT',
+ 'GL_INDEX_WRITEMASK','GL_INDEX_SHIFT','GL_INDEX_OFFSET','GL_INDEX_MODE','GL_INDEX_LOGIC_OP','GL_INDEX_CLEAR_VALUE','GL_INDEX_BITS',
+ 'GL_INDEX_ARRAY_TYPE_EXT','GL_INDEX_ARRAY_TYPE','GL_INDEX_ARRAY_STRIDE_EXT','GL_INDEX_ARRAY_STRIDE','GL_INDEX_ARRAY_POINTER_EXT',
+ 'GL_INDEX_ARRAY_POINTER','GL_INDEX_ARRAY_EXT','GL_INDEX_ARRAY_COUNT_EXT','GL_INDEX_ARRAY','GL_INCR','GL_HINT_BIT',
+ 'GL_GREEN_SCALE','GL_GREEN_BITS','GL_GREEN_BIAS','GL_GREEN','GL_GREATER','GL_GEQUAL','GL_FRONT_RIGHT','GL_FRONT_LEFT',
+ 'GL_FRONT_FACE','GL_FRONT_AND_BACK','GL_FRONT','GL_FOG_START','GL_FOG_SPECULAR_TEXTURE_WIN','GL_FOG_MODE','GL_FOG_INDEX',
+ 'GL_FOG_HINT','GL_FOG_END','GL_FOG_DENSITY','GL_FOG_COLOR','GL_FOG_BIT','GL_FOG','GL_FLOAT','GL_FLAT','GL_FILL',
+ 'GL_FEEDBACK_BUFFER_TYPE','GL_FEEDBACK_BUFFER_SIZE','GL_FEEDBACK_BUFFER_POINTER','GL_FEEDBACK','GL_FASTEST','GL_FALSE',
+ 'GL_EYE_PLANE','GL_EYE_LINEAR','GL_EXT_vertex_array','GL_EXT_paletted_texture','GL_EXT_bgra','GL_EXTENSIONS','GL_EXP2',
+ 'GL_EXP','GL_EVAL_BIT','GL_EQUIV','GL_EQUAL','GL_ENABLE_BIT','GL_EMISSION','GL_EDGE_FLAG_ARRAY_STRIDE_EXT','GL_EDGE_FLAG_ARRAY_STRIDE',
+ 'GL_EDGE_FLAG_ARRAY_POINTER_EXT','GL_EDGE_FLAG_ARRAY_POINTER','GL_EDGE_FLAG_ARRAY_EXT','GL_EDGE_FLAG_ARRAY_COUNT_EXT','GL_EDGE_FLAG_ARRAY',
+ 'GL_EDGE_FLAG','GL_DST_COLOR','GL_DST_ALPHA','GL_DRAW_PIXEL_TOKEN','GL_DRAW_BUFFER','GL_DOUBLE_EXT','GL_DOUBLEBUFFER',
+ 'GL_DOUBLE','GL_DONT_CARE','GL_DOMAIN','GL_DITHER','GL_DIFFUSE','GL_DEPTH_WRITEMASK','GL_DEPTH_TEST','GL_DEPTH_SCALE',
+ 'GL_DEPTH_RANGE','GL_DEPTH_FUNC','GL_DEPTH_COMPONENT','GL_DEPTH_CLEAR_VALUE','GL_DEPTH_BUFFER_BIT','GL_DEPTH_BITS',
+ 'GL_DEPTH_BIAS','GL_DEPTH','GL_DECR','GL_DECAL','GL_CW','GL_CURRENT_TEXTURE_COORDS','GL_CURRENT_RASTER_TEXTURE_COORDS','GL_CURRENT_RASTER_POSITION_VALID',
+ 'GL_CURRENT_RASTER_POSITION','GL_CURRENT_RASTER_INDEX','GL_CURRENT_RASTER_DISTANCE','GL_CURRENT_RASTER_COLOR','GL_CURRENT_NORMAL',
+ 'GL_CURRENT_INDEX','GL_CURRENT_COLOR','GL_CURRENT_BIT','GL_CULL_FACE_MODE','GL_CULL_FACE','GL_COPY_PIXEL_TOKEN',
+ 'GL_COPY_INVERTED','GL_COPY','GL_CONSTANT_EXT','GL_CONSTANT_ATTENUATION','GL_CONSTANT','GL_COMPILE_AND_EXECUTE','GL_COMPILE','GL_COMBINE_RGB_EXT',
+ 'GL_COMBINE_RGB','GL_COMBINE_EXT','GL_COMBINE_ALPHA_EXT','GL_COMBINE_ALPHA','GL_COMBINE','GL_COLOR_WRITEMASK',
+ 'GL_COLOR_TABLE_WIDTH_EXT','GL_COLOR_TABLE_RED_SIZE_EXT','GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','GL_COLOR_TABLE_INTENSITY_SIZE_EXT',
+ 'GL_COLOR_TABLE_GREEN_SIZE_EXT','GL_COLOR_TABLE_FORMAT_EXT','GL_COLOR_TABLE_BLUE_SIZE_EXT','GL_COLOR_TABLE_ALPHA_SIZE_EXT',
+ 'GL_COLOR_MATERIAL_PARAMETER','GL_COLOR_MATERIAL_FACE','GL_COLOR_MATERIAL','GL_COLOR_LOGIC_OP','GL_COLOR_INDEXES',
+ 'GL_COLOR_INDEX8_EXT','GL_COLOR_INDEX4_EXT','GL_COLOR_INDEX2_EXT','GL_COLOR_INDEX1_EXT','GL_COLOR_INDEX16_EXT',
+ 'GL_COLOR_INDEX12_EXT','GL_COLOR_INDEX','GL_COLOR_CLEAR_VALUE','GL_COLOR_BUFFER_BIT','GL_COLOR_ARRAY_TYPE_EXT',
+ 'GL_COLOR_ARRAY_TYPE','GL_COLOR_ARRAY_STRIDE_EXT','GL_COLOR_ARRAY_STRIDE','GL_COLOR_ARRAY_SIZE_EXT','GL_COLOR_ARRAY_SIZE',
+ 'GL_COLOR_ARRAY_POINTER_EXT','GL_COLOR_ARRAY_POINTER','GL_COLOR_ARRAY_EXT','GL_COLOR_ARRAY_COUNT_EXT','GL_COLOR_ARRAY',
+ 'GL_COLOR','GL_COEFF','GL_CLIP_PLANE5','GL_CLIP_PLANE4','GL_CLIP_PLANE3','GL_CLIP_PLANE2','GL_CLIP_PLANE1','GL_CLIP_PLANE0',
+ 'GL_CLIENT_VERTEX_ARRAY_BIT','GL_CLIENT_PIXEL_STORE_BIT','GL_CLIENT_ATTRIB_STACK_DEPTH','GL_CLIENT_ALL_ATTRIB_BITS',
+ 'GL_CLIENT_ACTIVE_TEXTURE_ARB','GL_CLIENT_ACTIVE_TEXTURE','GL_CLEAR','GL_CLAMP','GL_CCW','GL_C4UB_V3F','GL_C4UB_V2F',
+ 'GL_C4F_N3F_V3F','GL_C3F_V3F','GL_BYTE','GL_BLUE_SCALE','GL_BLUE_BITS','GL_BLUE_BIAS','GL_BLUE','GL_BLEND_SRC','GL_BLEND_DST',
+ 'GL_BLEND','GL_BITMAP_TOKEN','GL_BITMAP','GL_BGR_EXT','GL_BGRA_EXT','GL_BACK_RIGHT','GL_BACK_LEFT','GL_BACK',
+ 'GL_AUX_BUFFERS','GL_AUX3','GL_AUX2','GL_AUX1','GL_AUX0','GL_AUTO_NORMAL','GL_ATTRIB_STACK_DEPTH','GL_AND_REVERSE',
+ 'GL_AND_INVERTED','GL_AND','GL_AMBIENT_AND_DIFFUSE','GL_AMBIENT','GL_ALWAYS','GL_ALPHA_TEST_REF','GL_ALPHA_TEST_FUNC',
+ 'GL_ALPHA_TEST','GL_ALPHA_SCALE','GL_ALPHA_BITS','GL_ALPHA_BIAS','GL_ALPHA8','GL_ALPHA4','GL_ALPHA16','GL_ALPHA12',
+ 'GL_ALPHA','GL_ALL_ATTRIB_BITS','GL_ADD_SIGNED_EXT','GL_ADD_SIGNED','GL_ADD','GL_ACTIVE_TEXTURE_ARB','GL_ACTIVE_TEXTURE',
+ 'GL_ACCUM_RED_BITS','GL_ACCUM_GREEN_BITS','GL_ACCUM_CLEAR_VALUE','GL_ACCUM_BUFFER_BIT','GL_ACCUM_BLUE_BITS','GL_ACCUM_ALPHA_BITS',
+ 'GL_ACCUM','GL_4_BYTES','GL_4D_COLOR_TEXTURE','GL_3_BYTES','GL_3D_COLOR_TEXTURE','GL_3D_COLOR','GL_3D','GL_2_BYTES',
+ 'GL_2D','GLU_V_STEP','GLU_VERTEX','GLU_VERSION_1_2','GLU_VERSION_1_1','GLU_VERSION','GLU_U_STEP','GLU_UNKNOWN','GLU_TRUE',
+ 'GLU_TESS_WINDING_RULE','GLU_TESS_WINDING_POSITIVE','GLU_TESS_WINDING_ODD','GLU_TESS_WINDING_NONZERO','GLU_TESS_WINDING_NEGATIVE',
+ 'GLU_TESS_WINDING_ABS_GEQ_TWO','GLU_TESS_VERTEX_DATA','GLU_TESS_VERTEX','GLU_TESS_TOLERANCE','GLU_TESS_NEED_COMBINE_CALLBACK','GLU_TESS_MISSING_END_POLYGON',
+ 'GLU_TESS_MISSING_END_CONTOUR','GLU_TESS_MISSING_BEGIN_POLYGON','GLU_TESS_MISSING_BEGIN_CONTOUR','GLU_TESS_ERROR_DATA',
+ 'GLU_TESS_ERROR8','GLU_TESS_ERROR7','GLU_TESS_ERROR6','GLU_TESS_ERROR5','GLU_TESS_ERROR4','GLU_TESS_ERROR3','GLU_TESS_ERROR2',
+ 'GLU_TESS_ERROR1','GLU_TESS_ERROR','GLU_TESS_END_DATA','GLU_TESS_END','GLU_TESS_EDGE_FLAG_DATA','GLU_TESS_EDGE_FLAG',
+ 'GLU_TESS_COORD_TOO_LARGE','GLU_TESS_COMBINE_DATA','GLU_TESS_COMBINE','GLU_TESS_BOUNDARY_ONLY','GLU_TESS_BEGIN_DATA',
+ 'GLU_TESS_BEGIN','GLU_SMOOTH','GLU_SILHOUETTE','GLU_SAMPLING_TOLERANCE','GLU_SAMPLING_METHOD','GLU_POINT','GLU_PATH_LENGTH',
+ 'GLU_PARAMETRIC_TOLERANCE','GLU_PARAMETRIC_ERROR','GLU_OUT_OF_MEMORY','GLU_OUTSIDE','GLU_OUTLINE_POLYGON','GLU_OUTLINE_PATCH',
+ 'GLU_NURBS_ERROR9','GLU_NURBS_ERROR8','GLU_NURBS_ERROR7','GLU_NURBS_ERROR6','GLU_NURBS_ERROR5','GLU_NURBS_ERROR4',
+ 'GLU_NURBS_ERROR37','GLU_NURBS_ERROR36','GLU_NURBS_ERROR35','GLU_NURBS_ERROR34','GLU_NURBS_ERROR33','GLU_NURBS_ERROR32',
+ 'GLU_NURBS_ERROR31','GLU_NURBS_ERROR30','GLU_NURBS_ERROR3','GLU_NURBS_ERROR29','GLU_NURBS_ERROR28','GLU_NURBS_ERROR27','GLU_NURBS_ERROR26',
+ 'GLU_NURBS_ERROR25','GLU_NURBS_ERROR24','GLU_NURBS_ERROR23','GLU_NURBS_ERROR22','GLU_NURBS_ERROR21','GLU_NURBS_ERROR20',
+ 'GLU_NURBS_ERROR2','GLU_NURBS_ERROR19','GLU_NURBS_ERROR18','GLU_NURBS_ERROR17','GLU_NURBS_ERROR16','GLU_NURBS_ERROR15','GLU_NURBS_ERROR14',
+ 'GLU_NURBS_ERROR13','GLU_NURBS_ERROR12','GLU_NURBS_ERROR11','GLU_NURBS_ERROR10','GLU_NURBS_ERROR1','GLU_NONE',
+ 'GLU_MAP1_TRIM_3','GLU_MAP1_TRIM_2','GLU_LINE','GLU_INVALID_VALUE','GLU_INVALID_ENUM','GLU_INTERIOR','GLU_INSIDE','GLU_INCOMPATIBLE_GL_VERSION',
+ 'GLU_FLAT','GLU_FILL','GLU_FALSE','GLU_EXTERIOR','GLU_EXTENSIONS','GLU_ERROR','GLU_END','GLU_EDGE_FLAG','GLU_DOMAIN_DISTANCE',
+ 'GLU_DISPLAY_MODE','GLU_CW','GLU_CULLING','GLU_CCW','GLU_BEGIN','GLU_AUTO_LOAD_MATRIX','CHANNEL_UNORDERED','CHANNEL_ORDERED',
+ 'CHANNEL_MAX'
+ ),
+ 2 => array(
+
+ // Red Lowercase Keywords
+
+ 'WriteWord','WriteString','WriteReal','WriteLine','WriteInt','WriteFloat','WriteDouble','WriteChar','WriteByte',
+ 'windowwidth','windowheight','waittimer','Vec4','Vec3','Vec2','val','UpdateJoystick','ucase$','Transpose','tickcount',
+ 'textscroll','textrows','textmode','textcols','tanh','tand','tan','synctimercatchup','synctimer','swapbuffers',
+ 'str$','stopsoundvoice','stopsounds','stopmusic','sqrt','sqr','sprzorder','spryvel','sprytiles','sprysize','spryrepeat',
+ 'spryflip','sprycentre','spry','sprxvel','sprxtiles','sprxsize','sprxrepeat','sprxflip','sprxcentre','sprx',
+ 'sprvisible','sprvel','sprtype','sprtop','sprspin','sprsolid','sprsetzorder','sprsetyvel','sprsetysize','sprsetyrepeat',
+ 'sprsetyflip','sprsetycentre','sprsety','sprsetxvel','sprsetxsize','sprsetxrepeat','sprsetxflip','sprsetxcentre',
+ 'sprsetx','sprsetvisible','sprsetvel','sprsettiles','sprsettextures','sprsettexture','sprsetspin','sprsetsolid',
+ 'sprsetsize','sprsetscale','sprsetpos','sprsetparallax','sprsetframe','sprsetcolor','sprsetanimspeed','sprsetanimloop',
+ 'sprsetangle','sprsetalpha','sprscale','sprright','sprpos','sprparallax','sprleft','spriteareawidth','spriteareaheight',
+ 'sprframe','sprcolor','sprcameraz','sprcameray','sprcamerax','sprcamerasetz','sprcamerasety','sprcamerasetx',
+ 'sprcamerasetpos','sprcamerasetfov','sprcamerasetangle','sprcamerapos','sprcamerafov','sprcameraangle',
+ 'sprbottom','spranimspeed','spranimloop','spranimdone','sprangle','spralpha','spraddtextures','spraddtexture',
+ 'sounderror','sleep','sind','sin','showcursor','sgn','settextscroll','setmusicvolume','SendMessage','Seek',
+ 'scankeydown','RTInvert','rnd','right$','resizetext','resizespritearea','RejectConnection','ReceiveMessage','ReadWord',
+ 'ReadText','ReadReal','ReadLine','ReadInt','ReadFloat','ReadDouble','ReadChar','ReadByte','randomize','printr',
+ 'print','pow','playsound','playmusic','performancecounter','Orthonormalize','OpenFileWrite','OpenFileRead','Normalize',
+ 'newtilemap','newsprite','NewServer','NewConnection','musicplaying','mouse_yd','mouse_y','mouse_xd','mouse_x',
+ 'mouse_wheel','mouse_button','mid$','MessageSmoothed','MessageReliable','MessagePending','MessageChannel','maxtextureunits',
+ 'MatrixZero','MatrixTranslate','MatrixScale','MatrixRotateZ','MatrixRotateY','MatrixRotateX','MatrixRotate','MatrixIdentity',
+ 'MatrixCrossProduct','MatrixBasis','log','locate','loadtexture','loadsound','loadmipmaptexture','loadmipmapimagestrip',
+ 'loadimagestrip','loadimage','Length','len','left$','lcase$','keydown','Joy_Y','Joy_X','Joy_Up','Joy_Right','Joy_Left',
+ 'Joy_Keys','Joy_Down','Joy_Button','Joy_3','Joy_2','Joy_1','Joy_0','int','inscankey','input$','inkey$','inittimer',
+ 'imagewidth','imagestripframes','imageheight','imageformat','imagedatatype','hidecursor','glViewport','glVertex4sv',
+ 'glVertex4s','glVertex4iv','glVertex4i','glVertex4fv','glVertex4f','glVertex4dv','glVertex4d','glVertex3sv','glVertex3s',
+ 'glVertex3iv','glVertex3i','glVertex3fv','glVertex3f','glVertex3dv','glVertex3d','glVertex2sv','glVertex2s','glVertex2iv',
+ 'glVertex2i','glVertex2fv','glVertex2f','glVertex2dv','glVertex2d','gluPerspective','gluOrtho2D','gluLookAt',
+ 'glubuild2dmipmaps','glTranslatef','glTranslated','gltexsubimage2d','glTexParameteriv','glTexParameteri',
+ 'glTexParameterfv','glTexParameterf','glteximage2d','glTexGeniv','glTexGeni','glTexGenfv','glTexGenf','glTexGendv',
+ 'glTexGend','glTexEnviv','glTexEnvi','glTexEnvfv','glTexEnvf','glTexCoord4sv','glTexCoord4s','glTexCoord4iv','glTexCoord4i',
+ 'glTexCoord4fv','glTexCoord4f','glTexCoord4dv','glTexCoord4d','glTexCoord3sv','glTexCoord3s','glTexCoord3iv','glTexCoord3i',
+ 'glTexCoord3fv','glTexCoord3f','glTexCoord3dv','glTexCoord3d','glTexCoord2sv','glTexCoord2s','glTexCoord2iv','glTexCoord2i',
+ 'glTexCoord2fv','glTexCoord2f','glTexCoord2dv','glTexCoord2d','glTexCoord1sv','glTexCoord1s','glTexCoord1iv','glTexCoord1i','glTexCoord1fv',
+ 'glTexCoord1f','glTexCoord1dv','glTexCoord1d','glStencilOp','glStencilMask','glStencilFunc','glShadeModel','glSelectBuffer',
+ 'glScissor','glScalef','glScaled','glRotatef','glRotated','glRenderMode','glRectsv','glRects','glRectiv','glRecti',
+ 'glRectfv','glRectf','glRectdv','glRectd','glReadBuffer','glRasterPos4sv','glRasterPos4s','glRasterPos4iv',
+ 'glRasterPos4i','glRasterPos4fv','glRasterPos4f','glRasterPos4dv','glRasterPos4d','glRasterPos3sv','glRasterPos3s',
+ 'glRasterPos3iv','glRasterPos3i','glRasterPos3fv','glRasterPos3f','glRasterPos3dv','glRasterPos3d','glRasterPos2sv',
+ 'glRasterPos2s','glRasterPos2iv','glRasterPos2i','glRasterPos2fv','glRasterPos2f','glRasterPos2dv','glRasterPos2d',
+ 'glPushName','glPushMatrix','glPushClientAttrib','glPushAttrib','glPrioritizeTextures','glPopName','glPopMatrix',
+ 'glPopClientAttrib','glPopAttrib','glpolygonstipple','glPolygonOffset','glPolygonMode','glPointSize','glPixelZoom',
+ 'glPixelTransferi','glPixelTransferf','glPixelStorei','glPixelStoref','glPassThrough','glOrtho','glNormal3sv','glNormal3s',
+ 'glNormal3iv','glNormal3i','glNormal3fv','glNormal3f','glNormal3dv','glNormal3d','glNormal3bv','glNormal3b','glNewList',
+ 'glMultMatrixf','glMultMatrixd','glmultitexcoord2f','glmultitexcoord2d','glMatrixMode','glMaterialiv','glMateriali',
+ 'glMaterialfv','glMaterialf','glMapGrid2f','glMapGrid2d','glMapGrid1f','glMapGrid1d','glLogicOp','glLoadName','glLoadMatrixf',
+ 'glLoadMatrixd','glLoadIdentity','glListBase','glLineWidth','glLineStipple','glLightModeliv','glLightModeli','glLightModelfv',
+ 'glLightModelf','glLightiv','glLighti','glLightfv','glLightf','glIsTexture','glIsList','glIsEnabled','glInitNames',
+ 'glIndexubv','glIndexub','glIndexsv','glIndexs','glIndexMask','glIndexiv','glIndexi','glIndexfv','glIndexf','glIndexdv',
+ 'glIndexd','glHint','glGetTexParameteriv','glGetTexParameterfv','glGetTexLevelParameteriv','glGetTexLevelParameterfv',
+ 'glGetTexGeniv','glGetTexGenfv','glGetTexGendv','glGetTexEnviv','glGetTexEnvfv','glgetstring','glgetpolygonstipple','glGetPixelMapuiv',
+ 'glGetMaterialiv','glGetMaterialfv','glGetLightiv','glGetLightfv','glGetIntegerv','glGetIntegerv','glGetFloatv','glGetFloatv',
+ 'glGetError','glGetDoublev','glGetDoublev','glGetClipPlane','glGetBooleanv','glGetBooleanv','glgentextures','glgentexture',
+ 'glgenlists','glFrustum','glFrontFace','glFogiv','glFogi','glFogfv','glFogf','glFlush','glFinish','glFeedbackBuffer',
+ 'glEvalPoint2','glEvalPoint1','glEvalMesh2','glEvalMesh1','glEvalCoord2fv','glEvalCoord2f','glEvalCoord2dv','glEvalCoord2d',
+ 'glEvalCoord1fv','glEvalCoord1f','glEvalCoord1dv','glEvalCoord1d','glEndList','glEnd','glEnableClientState','glEnable',
+ 'glEdgeFlagv','glEdgeFlag','glDrawBuffer','glDrawArrays','glDisableClientState','glDisable','glDepthRange','glDepthMask',
+ 'glDepthFunc','gldeletetextures','gldeletetexture','gldeletelists','glCullFace','glCopyTexSubImage2D','glCopyTexSubImage1D',
+ 'glCopyTexImage2D','glCopyTexImage1D','glColorMaterial','glColorMask','glColor4usv','glColor4us','glColor4uiv','glColor4ui',
+ 'glColor4ubv','glColor4ub','glColor4sv','glColor4s','glColor4iv','glColor4i','glColor4fv','glColor4f','glColor4dv',
+ 'glColor4d','glColor4bv','glColor4b','glColor3usv','glColor3us','glColor3uiv','glColor3ui','glColor3ubv','glColor3ub',
+ 'glColor3sv','glColor3s','glColor3iv','glColor3i','glColor3fv','glColor3f','glColor3dv','glColor3d','glColor3bv',
+ 'glColor3b','glClipPlane','glClearStencil','glClearIndex','glClearDepth','glClearColor','glClearAccum','glClear',
+ 'glcalllists','glCallList','glBlendFunc','glBindTexture','glBegin','glArrayElement','glAreTexturesResident',
+ 'glAlphaFunc','glactivetexture','glAccum','font','FindNextFile','FindFirstFile','FindClose','FileError',
+ 'extensionsupported','exp','execute','EndOfFile','drawtext','divbyzero','Determinant','deletesprite','deletesound',
+ 'DeleteServer','deleteimage','DeleteConnection','defaultfont','CrossProduct','cosd','cos','copysprite','ConnectionPending',
+ 'ConnectionHandShaking','ConnectionConnected','ConnectionAddress','compilererrorline','compilererrorcol','compilererror',
+ 'compilefile','compile','color','cls','CloseFile','clearregion','clearline','clearkeys','chr$','charat$','bindsprite',
+ 'beep','atnd','atn2d','atn2','atn','atand','asc','argcount','arg','animatesprites','AcceptConnection','abs'
+ ),
+ 3 => array(
+
+ // Blue Lowercase Keywords
+
+ 'xor','while','wend','until','type','traditional_print','traditional','to','then','struc','string','step','single',
+ 'run','return','reset','read','or','null','not','next','lor','loop','language','land','integer','input','if',
+ 'goto','gosub','for','endstruc','endif','end','elseif','else','double','do','dim','data','const','basic4gl','as',
+ 'and','alloc'
+ )
+
+ ),
+ 'SYMBOLS' => array(
+ '=', '<', '>', '>=', '<=', '+', '-', '*', '/', '%', '(', ')', '{', '}', '[', ']', '&', ';', ':', '$'
+ ),
+
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000080; font-weight: bold;',
+ 2 => 'color: #FF0000;',
+ 3 => 'color: #0000FF;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #657CC4; font-style: italic;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000080;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #000080; font-weight: bold;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #0000FF;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4
+);
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/blitzbasic.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/blitzbasic.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/blitzbasic.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,185 +1,185 @@
-<?php
-/*************************************************************************************
- * blitzbasic.php
- * --------------
- * Author: P�draig O`Connel (info at moonsword.info)
- * Copyright: (c) 2005 P�draig O`Connel (http://moonsword.info)
- * Release Version: 1.0.7.21
- * Date Started: 16.10.2005
- *
- * BlitzBasic language file for GeSHi.
- *
- * It is a simple Basic dialect. Released for Games and Network Connections.
- * In this Language File are all functions included (2D BB and 3D BB)
- *
- *
- * CHANGES
- * -------
- * 2005/12/28 (1.0.1)
- * - Remove unnecessary style index for regexps
- * 2005/10/22 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/10/22)
- * -------------------------
- * * Sort out the Basic commands for splitting up.
- * * To set up the right colors.
- * (the colors are ok, but not the correct ones)
- * * Split to BlitzBasic 2D and BlitzBasic 3D.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
- $language_data = array (
- 'LANG_NAME' => 'BlitzBasic',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'If','EndIf','ElseIf','Else If','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select',
- 'Type','Forever','For','Or','And','AppTitle','Case','Goto','Gosub','Step','Stop','Int','Last','False','Then','To','True','Until','Float',
- 'String','Before','Not'
- ),
- 2 => array(
-
- // All Functions - 2D BB and 3D BB
- 'Xor','WriteString','WriteShort','WritePixelFast','WritePixel','WriteLine','WriteInt','WriteFloat','WriteFile','WriteBytes',
- 'WriteByte','Write','WaitTimer','WaitMouse','WaitKey','WaitJoy','VWait','Viewport',
- 'Upper','UpdateGamma','UnlockBuffer','UDPTimeouts','UDPStreamPort','UDPStreamIP','UDPMsgPort','UDPMsgIP',
- 'Trim','TotalVidMem','TileImage','TileBlock','TFormImage','TFormFilter','Text',
- 'TCPTimeouts','TCPStreamPort','TCPStreamIP','Tan','SystemProperty','StringWidth','StringHeight','Str','StopNetGame',
- 'StopChannel','StartNetGame','Sqr','SoundVolume','SoundPitch','SoundPan','Sin','Shr',
- 'ShowPointer','Shl','Sgn','SetGfxDriver','SetGamma','SetFont','SetEnv','SetBuffer','SendUDPMsg','SendNetMsg',
- 'SeekFile','SeedRnd','ScanLine','ScaleImage','SaveImage','SaveBuffer','Sar','RuntimeError','RSet',
- 'RotateImage','RndSeed','Rnd','Right','ResumeChannel','Restore','ResizeImage','ResizeBank','Replace',
- 'Repeat','RecvUDPMsg','RecvNetMsg','RectsOverlap','Rect','ReadString','ReadShort','ReadPixelFast','ReadPixel','ReadLine',
- 'ReadInt','ReadFloat','ReadFile','ReadDir','ReadBytes','ReadByte','ReadAvail','Read','Rand','Print',
- 'PokeShort','PokeInt','PokeFloat','PokeByte','Plot','PlaySound','PlayMusic','PlayCDTrack','Pi','PeekShort',
- 'PeekInt','PeekFloat','PeekByte','PauseChannel','Oval','Origin','OpenTCPStream','OpenMovie','OpenFile',
- 'Null','NextFile','New','NetPlayerName','NetPlayerLocal','NetMsgType','NetMsgTo','NetMsgFrom',
- 'NetMsgData','MovieWidth','MoviePlaying','MovieHeight','MoveMouse','MouseZSpeed','MouseZ','MouseYSpeed','MouseY','MouseXSpeed',
- 'MouseX','MouseHit','MouseDown','Mod','Millisecs','MidHandle','Mid','MaskImage','LSet','Lower',
- 'LoopSound','Log10','Log','LockBuffer','Locate','Local','LoadSound','LoadImage','LoadFont','LoadBuffer',
- 'LoadAnimImage','Line','Len','Left','KeyHit','KeyDown','JoyZDir','JoyZ','JoyYDir',
- 'JoyYaw','JoyY','JoyXDir','JoyX','JoyVDir','JoyV','JoyUDir','JoyU','JoyType','JoyRoll',
- 'JoyPitch','JoyHit','JoyHat','JoyDown','JoinNetGame','Instr','Insert','Input',
- 'ImageYHandle','ImageXHandle','ImageWidth','ImagesOverlap','ImagesCollide','ImageRectOverlap','ImageRectCollide','ImageHeight','ImageBuffer','If',
- 'HostNetGame','HostIP','HidePointer','Hex','HandleImage','GraphicsWidth','GraphicsHeight','GraphicsDepth','GraphicsBuffer','Graphics',
- 'GrabImage','Global','GFXModeWidth','GFXModeHeight','GfxModeExists','GFXModeDepth','GfxDriverName','GetMouse',
- 'GetKey','GetJoy','GetEnv','GetColor','GammaRed','GammaGreen','GammaBlue','Function','FrontBuffer','FreeTimer',
- 'FreeSound','FreeImage','FreeFont','FreeBank','FontWidth','FontHeight','FlushMouse','FlushKeys',
- 'FlushJoy','Floor','Flip','First','FileType','FileSize','FilePos','Field',
- 'Exp','Exit','ExecFile','Eof','EndGraphics','Each','DrawMovie','DrawImageRect','DrawImage','DrawBlockRect','DrawBlock',
- 'DottedIP','Dim','DeleteNetPlayer','DeleteFile','DeleteDir','Delete','Delay','Default','DebugLog','Data',
- 'CurrentTime','CurrentDir','CurrentDate','CreateUDPStream','CreateTimer','CreateTCPServer','CreateNetPlayer','CreateImage','CreateDir','CreateBank',
- 'CountHostIPs','CountGFXModes','CountGfxDrivers','Cos','CopyStream','CopyRect','CopyPixelFast','CopyPixel','CopyImage','CopyFile',
- 'CopyBank','Const','CommandLine','ColorRed','ColorGreen','ColorBlue','Color','ClsColor','Cls','CloseUDPStream',
- 'CloseTCPStream','CloseTCPServer','CloseMovie','CloseFile','CloseDir','Chr','ChannelVolume','ChannelPlaying','ChannelPitch','ChannelPan',
- 'ChangeDir','Ceil','CallDLL','Bin','BankSize','BackBuffer','AvailVidMem','AutoMidHandle',
- 'ATan2','ATan','ASin','Asc','After','ACos','AcceptTCPStream','Abs',
- // 3D Commands
- 'Wireframe','Windowed3D','WBuffer','VertexZ','VertexY',
- 'VertexX','VertexW','VertexV','VertexU','VertexTexCoords','VertexRed','VertexNZ','VertexNY','VertexNX','VertexNormal',
- 'VertexGreen','VertexCoords','VertexColor','VertexBlue','VertexAlpha','VectorYaw','VectorPitch','UpdateWorld','UpdateNormals','TurnEntity',
- 'TrisRendered','TriangleVertex','TranslateEntity','TFormVector','TFormPoint','TFormNormal','TFormedZ','TFormedY','TFormedX','TextureWidth',
- 'TextureName','TextureHeight','TextureFilter','TextureCoords','TextureBuffer','TextureBlend','TerrainZ','TerrainY','TerrainX','TerrainSize',
- 'TerrainShading','TerrainHeight','TerrainDetail','SpriteViewMode','ShowEntity','SetCubeFace','SetAnimTime','SetAnimKey','ScaleTexture','ScaleSprite',
- 'ScaleMesh','ScaleEntity','RotateTexture','RotateSprite','RotateMesh','RotateEntity','ResetEntity','RenderWorld','ProjectedZ','ProjectedY',
- 'ProjectedX','PositionTexture','PositionMesh','PositionEntity','PointEntity','PickedZ','PickedY','PickedX','PickedTriangle','PickedTime',
- 'PickedSurface','PickedNZ','PickedNY','PickedNX','PickedEntity','PaintSurface','PaintMesh','PaintEntity','NameEntity','MoveEntity',
- 'ModifyTerrain','MeshWidth','MeshHeight','MeshesIntersect','MeshDepth','MD2AnimTime','MD2AnimLength','MD2Animating','LoadTexture','LoadTerrain',
- 'LoadSprite','LoadMesh','LoadMD2','LoaderMatrix','LoadBSP','LoadBrush','LoadAnimTexture','LoadAnimSeq','LoadAnimMesh','Load3DSound',
- 'LinePick','LightRange','LightMesh','LightConeAngles','LightColor','HWMultiTex','HideEntity','HandleSprite','Graphics3D','GfxMode3DExists',
- 'GfxMode3D','GfxDriverCaps3D','GfxDriver3D','GetSurfaceBrush','GetSurface','GetParent','GetMatElement','GetEntityType','GetEntityBrush','GetChild',
- 'GetBrushTexture','FreeTexture','FreeEntity','FreeBrush','FlipMesh','FitMesh','FindSurface','FindChild','ExtractAnimSeq','EntityZ',
- 'EntityYaw','EntityY','EntityX','EntityVisible','EntityType','EntityTexture','EntityShininess','EntityRoll','EntityRadius','EntityPitch',
- 'EntityPickMode','EntityPick','EntityParent','EntityOrder','EntityName','EntityInView','EntityFX','EntityDistance','EntityColor','EntityCollided',
- 'EntityBox','EntityBlend','EntityAutoFade','EntityAlpha','EmitSound','Dither','DeltaYaw','DeltaPitch','CreateTexture','CreateTerrain',
- 'CreateSurface','CreateSprite','CreateSphere','CreatePlane','CreatePivot','CreateMirror','CreateMesh','CreateListener','CreateLight','CreateCylinder',
- 'CreateCube','CreateCone','CreateCamera','CreateBrush','CountVertices','CountTriangles','CountSurfaces','CountGfxModes3D','CountCollisions','CountChildren',
- 'CopyMesh','CopyEntity','CollisionZ','CollisionY','CollisionX','CollisionTriangle','CollisionTime','CollisionSurface','Collisions','CollisionNZ',
- 'CollisionNY','CollisionNX','CollisionEntity','ClearWorld','ClearTextureFilters','ClearSurface','ClearCollisions','CaptureWorld','CameraZoom','CameraViewport',
- 'CameraRange','CameraProjMode','CameraProject','CameraPick','CameraFogRange','CameraFogMode','CameraFogColor','CameraClsMode','CameraClsColor','BSPLighting',
- 'BSPAmbientLight','BrushTexture','BrushShininess','BrushFX','BrushColor','BrushBlend','BrushAlpha','AntiAlias','AnimTime','AnimSeq',
- 'AnimLength','Animating','AnimateMD2','Animate','AmbientLight','AlignToVector','AddVertex','AddTriangle','AddMesh','AddAnimSeq',
- )
- ),
- 'SYMBOLS' => array(
- '(',')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000066; font-weight: bold;',
- 2 => 'color: #0000ff;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #D9D100; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000066;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #009900;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #CC0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000066;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- )
- ),
- 'URLS' => array(
- 1 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- 1 => '\\'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => false,
- 1 => false
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * blitzbasic.php
+ * --------------
+ * Author: P�draig O`Connel (info at moonsword.info)
+ * Copyright: (c) 2005 P�draig O`Connel (http://moonsword.info)
+ * Release Version: 1.0.7.21
+ * Date Started: 16.10.2005
+ *
+ * BlitzBasic language file for GeSHi.
+ *
+ * It is a simple Basic dialect. Released for Games and Network Connections.
+ * In this Language File are all functions included (2D BB and 3D BB)
+ *
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.1)
+ * - Remove unnecessary style index for regexps
+ * 2005/10/22 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/10/22)
+ * -------------------------
+ * * Sort out the Basic commands for splitting up.
+ * * To set up the right colors.
+ * (the colors are ok, but not the correct ones)
+ * * Split to BlitzBasic 2D and BlitzBasic 3D.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+ 'LANG_NAME' => 'BlitzBasic',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'If','EndIf','ElseIf','Else If','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select',
+ 'Type','Forever','For','Or','And','AppTitle','Case','Goto','Gosub','Step','Stop','Int','Last','False','Then','To','True','Until','Float',
+ 'String','Before','Not'
+ ),
+ 2 => array(
+
+ // All Functions - 2D BB and 3D BB
+ 'Xor','WriteString','WriteShort','WritePixelFast','WritePixel','WriteLine','WriteInt','WriteFloat','WriteFile','WriteBytes',
+ 'WriteByte','Write','WaitTimer','WaitMouse','WaitKey','WaitJoy','VWait','Viewport',
+ 'Upper','UpdateGamma','UnlockBuffer','UDPTimeouts','UDPStreamPort','UDPStreamIP','UDPMsgPort','UDPMsgIP',
+ 'Trim','TotalVidMem','TileImage','TileBlock','TFormImage','TFormFilter','Text',
+ 'TCPTimeouts','TCPStreamPort','TCPStreamIP','Tan','SystemProperty','StringWidth','StringHeight','Str','StopNetGame',
+ 'StopChannel','StartNetGame','Sqr','SoundVolume','SoundPitch','SoundPan','Sin','Shr',
+ 'ShowPointer','Shl','Sgn','SetGfxDriver','SetGamma','SetFont','SetEnv','SetBuffer','SendUDPMsg','SendNetMsg',
+ 'SeekFile','SeedRnd','ScanLine','ScaleImage','SaveImage','SaveBuffer','Sar','RuntimeError','RSet',
+ 'RotateImage','RndSeed','Rnd','Right','ResumeChannel','Restore','ResizeImage','ResizeBank','Replace',
+ 'Repeat','RecvUDPMsg','RecvNetMsg','RectsOverlap','Rect','ReadString','ReadShort','ReadPixelFast','ReadPixel','ReadLine',
+ 'ReadInt','ReadFloat','ReadFile','ReadDir','ReadBytes','ReadByte','ReadAvail','Read','Rand','Print',
+ 'PokeShort','PokeInt','PokeFloat','PokeByte','Plot','PlaySound','PlayMusic','PlayCDTrack','Pi','PeekShort',
+ 'PeekInt','PeekFloat','PeekByte','PauseChannel','Oval','Origin','OpenTCPStream','OpenMovie','OpenFile',
+ 'Null','NextFile','New','NetPlayerName','NetPlayerLocal','NetMsgType','NetMsgTo','NetMsgFrom',
+ 'NetMsgData','MovieWidth','MoviePlaying','MovieHeight','MoveMouse','MouseZSpeed','MouseZ','MouseYSpeed','MouseY','MouseXSpeed',
+ 'MouseX','MouseHit','MouseDown','Mod','Millisecs','MidHandle','Mid','MaskImage','LSet','Lower',
+ 'LoopSound','Log10','Log','LockBuffer','Locate','Local','LoadSound','LoadImage','LoadFont','LoadBuffer',
+ 'LoadAnimImage','Line','Len','Left','KeyHit','KeyDown','JoyZDir','JoyZ','JoyYDir',
+ 'JoyYaw','JoyY','JoyXDir','JoyX','JoyVDir','JoyV','JoyUDir','JoyU','JoyType','JoyRoll',
+ 'JoyPitch','JoyHit','JoyHat','JoyDown','JoinNetGame','Instr','Insert','Input',
+ 'ImageYHandle','ImageXHandle','ImageWidth','ImagesOverlap','ImagesCollide','ImageRectOverlap','ImageRectCollide','ImageHeight','ImageBuffer','If',
+ 'HostNetGame','HostIP','HidePointer','Hex','HandleImage','GraphicsWidth','GraphicsHeight','GraphicsDepth','GraphicsBuffer','Graphics',
+ 'GrabImage','Global','GFXModeWidth','GFXModeHeight','GfxModeExists','GFXModeDepth','GfxDriverName','GetMouse',
+ 'GetKey','GetJoy','GetEnv','GetColor','GammaRed','GammaGreen','GammaBlue','Function','FrontBuffer','FreeTimer',
+ 'FreeSound','FreeImage','FreeFont','FreeBank','FontWidth','FontHeight','FlushMouse','FlushKeys',
+ 'FlushJoy','Floor','Flip','First','FileType','FileSize','FilePos','Field',
+ 'Exp','Exit','ExecFile','Eof','EndGraphics','Each','DrawMovie','DrawImageRect','DrawImage','DrawBlockRect','DrawBlock',
+ 'DottedIP','Dim','DeleteNetPlayer','DeleteFile','DeleteDir','Delete','Delay','Default','DebugLog','Data',
+ 'CurrentTime','CurrentDir','CurrentDate','CreateUDPStream','CreateTimer','CreateTCPServer','CreateNetPlayer','CreateImage','CreateDir','CreateBank',
+ 'CountHostIPs','CountGFXModes','CountGfxDrivers','Cos','CopyStream','CopyRect','CopyPixelFast','CopyPixel','CopyImage','CopyFile',
+ 'CopyBank','Const','CommandLine','ColorRed','ColorGreen','ColorBlue','Color','ClsColor','Cls','CloseUDPStream',
+ 'CloseTCPStream','CloseTCPServer','CloseMovie','CloseFile','CloseDir','Chr','ChannelVolume','ChannelPlaying','ChannelPitch','ChannelPan',
+ 'ChangeDir','Ceil','CallDLL','Bin','BankSize','BackBuffer','AvailVidMem','AutoMidHandle',
+ 'ATan2','ATan','ASin','Asc','After','ACos','AcceptTCPStream','Abs',
+ // 3D Commands
+ 'Wireframe','Windowed3D','WBuffer','VertexZ','VertexY',
+ 'VertexX','VertexW','VertexV','VertexU','VertexTexCoords','VertexRed','VertexNZ','VertexNY','VertexNX','VertexNormal',
+ 'VertexGreen','VertexCoords','VertexColor','VertexBlue','VertexAlpha','VectorYaw','VectorPitch','UpdateWorld','UpdateNormals','TurnEntity',
+ 'TrisRendered','TriangleVertex','TranslateEntity','TFormVector','TFormPoint','TFormNormal','TFormedZ','TFormedY','TFormedX','TextureWidth',
+ 'TextureName','TextureHeight','TextureFilter','TextureCoords','TextureBuffer','TextureBlend','TerrainZ','TerrainY','TerrainX','TerrainSize',
+ 'TerrainShading','TerrainHeight','TerrainDetail','SpriteViewMode','ShowEntity','SetCubeFace','SetAnimTime','SetAnimKey','ScaleTexture','ScaleSprite',
+ 'ScaleMesh','ScaleEntity','RotateTexture','RotateSprite','RotateMesh','RotateEntity','ResetEntity','RenderWorld','ProjectedZ','ProjectedY',
+ 'ProjectedX','PositionTexture','PositionMesh','PositionEntity','PointEntity','PickedZ','PickedY','PickedX','PickedTriangle','PickedTime',
+ 'PickedSurface','PickedNZ','PickedNY','PickedNX','PickedEntity','PaintSurface','PaintMesh','PaintEntity','NameEntity','MoveEntity',
+ 'ModifyTerrain','MeshWidth','MeshHeight','MeshesIntersect','MeshDepth','MD2AnimTime','MD2AnimLength','MD2Animating','LoadTexture','LoadTerrain',
+ 'LoadSprite','LoadMesh','LoadMD2','LoaderMatrix','LoadBSP','LoadBrush','LoadAnimTexture','LoadAnimSeq','LoadAnimMesh','Load3DSound',
+ 'LinePick','LightRange','LightMesh','LightConeAngles','LightColor','HWMultiTex','HideEntity','HandleSprite','Graphics3D','GfxMode3DExists',
+ 'GfxMode3D','GfxDriverCaps3D','GfxDriver3D','GetSurfaceBrush','GetSurface','GetParent','GetMatElement','GetEntityType','GetEntityBrush','GetChild',
+ 'GetBrushTexture','FreeTexture','FreeEntity','FreeBrush','FlipMesh','FitMesh','FindSurface','FindChild','ExtractAnimSeq','EntityZ',
+ 'EntityYaw','EntityY','EntityX','EntityVisible','EntityType','EntityTexture','EntityShininess','EntityRoll','EntityRadius','EntityPitch',
+ 'EntityPickMode','EntityPick','EntityParent','EntityOrder','EntityName','EntityInView','EntityFX','EntityDistance','EntityColor','EntityCollided',
+ 'EntityBox','EntityBlend','EntityAutoFade','EntityAlpha','EmitSound','Dither','DeltaYaw','DeltaPitch','CreateTexture','CreateTerrain',
+ 'CreateSurface','CreateSprite','CreateSphere','CreatePlane','CreatePivot','CreateMirror','CreateMesh','CreateListener','CreateLight','CreateCylinder',
+ 'CreateCube','CreateCone','CreateCamera','CreateBrush','CountVertices','CountTriangles','CountSurfaces','CountGfxModes3D','CountCollisions','CountChildren',
+ 'CopyMesh','CopyEntity','CollisionZ','CollisionY','CollisionX','CollisionTriangle','CollisionTime','CollisionSurface','Collisions','CollisionNZ',
+ 'CollisionNY','CollisionNX','CollisionEntity','ClearWorld','ClearTextureFilters','ClearSurface','ClearCollisions','CaptureWorld','CameraZoom','CameraViewport',
+ 'CameraRange','CameraProjMode','CameraProject','CameraPick','CameraFogRange','CameraFogMode','CameraFogColor','CameraClsMode','CameraClsColor','BSPLighting',
+ 'BSPAmbientLight','BrushTexture','BrushShininess','BrushFX','BrushColor','BrushBlend','BrushAlpha','AntiAlias','AnimTime','AnimSeq',
+ 'AnimLength','Animating','AnimateMD2','Animate','AmbientLight','AlignToVector','AddVertex','AddTriangle','AddMesh','AddAnimSeq',
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(',')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000066; font-weight: bold;',
+ 2 => 'color: #0000ff;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #D9D100; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000066;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #009900;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #CC0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000066;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ )
+ ),
+ 'URLS' => array(
+ 1 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '\\'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => false,
+ 1 => false
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/bnf.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/bnf.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/bnf.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,130 +1,130 @@
-<?php
-/*************************************************************************************
- * bnf.php
- * --------
- * Author: Rowan Rodrik van der Molen (rowan at bigsmoke.us)
- * Copyright: (c) 2006 Rowan Rodrik van der Molen (http://www.bigsmoke.us/)
- * Release Version: 1.0.7.21
- * Date Started: 2006/09/28
- *
- * BNF (Backus-Naur form) language file for GeSHi.
- *
- * See http://en.wikipedia.org/wiki/Backus-Naur_form for more info on BNF.
- *
- * CHANGES
- * -------
- * 2006/09/18 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/09/18)
- * -------------------------
- * * Nothing I can think of
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'bnf',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"', "'"),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(),
- 'SYMBOLS' => array(
- '<', '>', '::=', '|'
- ),
- 'CASE_SENSITIVE' => array(
- //GESHI_COMMENTS => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(),
- 'COMMENTS' => array(
- ),
- 'ESCAPE_CHAR' => array(
- 0 => ''
- ),
- 'BRACKETS' => array(
- 0 => ''
- ),
- 'STRINGS' => array(
- 0 => 'color: #a00;',
- 1 => 'color: #a00;'
- ),
- 'NUMBERS' => array(
- 0 => ''
- ),
- 'METHODS' => array(
- 0 => ''
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000066; font-weight: bold;', // Unused
- ),
- 'REGEXPS' => array(
- 0 => 'color: #007;',
- 1 => 'color: #099;',
- 2 => 'color: #060;',
- 3 => 'color: #909;'
- ),
- 'SCRIPT' => array(
- 0 => ''
- )
- ),
- 'URLS' => array(),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(),
- 'REGEXPS' => array(
- 0 => array(
- GESHI_SEARCH => '(<)([^&]+?)(>)',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3'
- ),
- 1 => array(
- GESHI_SEARCH => '(<|>)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 2 => array(
- GESHI_SEARCH => '(::=)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 3 => array(
- GESHI_SEARCH => '([()])',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * bnf.php
+ * --------
+ * Author: Rowan Rodrik van der Molen (rowan at bigsmoke.us)
+ * Copyright: (c) 2006 Rowan Rodrik van der Molen (http://www.bigsmoke.us/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/09/28
+ *
+ * BNF (Backus-Naur form) language file for GeSHi.
+ *
+ * See http://en.wikipedia.org/wiki/Backus-Naur_form for more info on BNF.
+ *
+ * CHANGES
+ * -------
+ * 2006/09/18 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/09/18)
+ * -------------------------
+ * * Nothing I can think of
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'bnf',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"', "'"),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(),
+ 'SYMBOLS' => array(
+ '<', '>', '::=', '|'
+ ),
+ 'CASE_SENSITIVE' => array(
+ //GESHI_COMMENTS => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(),
+ 'COMMENTS' => array(
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => ''
+ ),
+ 'BRACKETS' => array(
+ 0 => ''
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #a00;',
+ 1 => 'color: #a00;'
+ ),
+ 'NUMBERS' => array(
+ 0 => ''
+ ),
+ 'METHODS' => array(
+ 0 => ''
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000066; font-weight: bold;', // Unused
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #007;',
+ 1 => 'color: #099;',
+ 2 => 'color: #060;',
+ 3 => 'color: #909;'
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ )
+ ),
+ 'URLS' => array(),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(),
+ 'REGEXPS' => array(
+ 0 => array(
+ GESHI_SEARCH => '(<)([^&]+?)(>)',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3'
+ ),
+ 1 => array(
+ GESHI_SEARCH => '(<|>)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 2 => array(
+ GESHI_SEARCH => '(::=)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 3 => array(
+ GESHI_SEARCH => '([()])',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/c.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/c.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/c.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,143 +1,143 @@
-<?php
-/*************************************************************************************
- * c.php
- * -----
- * Author: Nigel McNie (nigel at geshi.org)
- * Contributors:
- * - Jack Lloyd (lloyd at randombit.net)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * C language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/XX/XX (1.0.4)
- * - Added a couple of new keywords (Jack Lloyd)
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.2)
- * - Added support for URLs
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * - Get a list of inbuilt functions to add (and explore C more
- * to complete this rather bare language file
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'C',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'if', 'return', 'while', 'case', 'continue', 'default',
- 'do', 'else', 'for', 'switch', 'goto'
- ),
- 2 => array(
- 'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
- ),
- 3 => array(
- 'printf', 'cout'
- ),
- 4 => array(
- 'auto', 'char', 'const', 'double', 'float', 'int', 'long',
- 'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
- 'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t'
- ),
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #339933;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #202020;',
- 2 => 'color: #202020;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * c.php
+ * -----
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Contributors:
+ * - Jack Lloyd (lloyd at randombit.net)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * C language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.4)
+ * - Added a couple of new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ * - Added support for URLs
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * - Get a list of inbuilt functions to add (and explore C more
+ * to complete this rather bare language file
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'C',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'if', 'return', 'while', 'case', 'continue', 'default',
+ 'do', 'else', 'for', 'switch', 'goto'
+ ),
+ 2 => array(
+ 'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
+ ),
+ 3 => array(
+ 'printf', 'cout'
+ ),
+ 4 => array(
+ 'auto', 'char', 'const', 'double', 'float', 'int', 'long',
+ 'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
+ 'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #339933;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #202020;',
+ 2 => 'color: #202020;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/c_mac.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/c_mac.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/c_mac.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,175 +1,175 @@
-<?php
-/*************************************************************************************
- * c_mac.php
- * ---------
- * Author: M. Uli Kusterer (witness.of.teachtext at gmx.net)
- * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * C for Macs language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'C (Mac)',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'if', 'return', 'while', 'case', 'continue', 'default',
- 'do', 'else', 'for', 'switch', 'goto'
- ),
- 2 => array(
- 'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
- 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
- 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
- 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
- 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
- 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
- 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
- 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
- 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
- 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
- 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
- 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
- // Mac-specific constants:
- 'kCFAllocatorDefault'
- ),
- 3 => array(
- 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
- 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
- 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
- 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
- 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
- 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
- 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
- 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
- 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
- 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
- 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
- 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
- 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
- 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
- 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
- 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
- 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
- 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
- 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
- ),
- 4 => array(
- 'auto', 'char', 'const', 'double', 'float', 'int', 'long',
- 'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
- 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
- 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
- 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
- // Mac-specific types:
- 'CFArrayRef', 'CFDictionaryRef', 'CFMutableDictionaryRef', 'CFBundleRef', 'CFSetRef', 'CFStringRef',
- 'CFURLRef', 'CFLocaleRef', 'CFDateFormatterRef', 'CFNumberFormatterRef', 'CFPropertyListRef',
- 'CFTreeRef', 'CFWriteStreamRef', 'CFCharacterSetRef', 'CFMutableStringRef', 'CFNotificationRef',
- 'CFNotificationRef', 'CFReadStreamRef', 'CFNull', 'CFAllocatorRef', 'CFBagRef', 'CFBinaryHeapRef',
- 'CFBitVectorRef', 'CFBooleanRef', 'CFDataRef', 'CFDateRef', 'CFMachPortRef', 'CFMessagePortRef',
- 'CFMutableArrayRef', 'CFMutableBagRef', 'CFMutableBitVectorRef', 'CFMutableCharacterSetRef',
- 'CFMutableDataRef', 'CFMutableSetRef', 'CFNumberRef', 'CFPlugInRef', 'CFPlugInInstanceRef',
- 'CFRunLoopRef', 'CFRunLoopObserverRef', 'CFRunLoopSourceRef', 'CFRunLoopTimerRef', 'CFSocketRef',
- 'CFTimeZoneRef', 'CFTypeRef', 'CFUserNotificationRef', 'CFUUIDRef', 'CFXMLNodeRef', 'CFXMLParserRef',
- 'CFXMLTreeRef'
- ),
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #0000dd;',
- 4 => 'color: #0000ff;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #ff0000;',
- 2 => 'color: #339900;',
- 'MULTI' => 'color: #ff0000; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #666666; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #666666;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #0000dd;'
- ),
- 'METHODS' => array(
- 1 => 'color: #00eeff;',
- 2 => 'color: #00eeff;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000000;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * c_mac.php
+ * ---------
+ * Author: M. Uli Kusterer (witness.of.teachtext at gmx.net)
+ * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * C for Macs language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'C (Mac)',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'if', 'return', 'while', 'case', 'continue', 'default',
+ 'do', 'else', 'for', 'switch', 'goto'
+ ),
+ 2 => array(
+ 'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
+ 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+ 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+ 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+ 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+ 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+ 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+ 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+ 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+ 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
+ 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+ 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
+ // Mac-specific constants:
+ 'kCFAllocatorDefault'
+ ),
+ 3 => array(
+ 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+ 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+ 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
+ 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+ 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+ 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
+ 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+ 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+ 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+ 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+ 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+ 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+ 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+ 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+ 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+ 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+ 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+ 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+ 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+ ),
+ 4 => array(
+ 'auto', 'char', 'const', 'double', 'float', 'int', 'long',
+ 'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
+ 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+ 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+ 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+ // Mac-specific types:
+ 'CFArrayRef', 'CFDictionaryRef', 'CFMutableDictionaryRef', 'CFBundleRef', 'CFSetRef', 'CFStringRef',
+ 'CFURLRef', 'CFLocaleRef', 'CFDateFormatterRef', 'CFNumberFormatterRef', 'CFPropertyListRef',
+ 'CFTreeRef', 'CFWriteStreamRef', 'CFCharacterSetRef', 'CFMutableStringRef', 'CFNotificationRef',
+ 'CFNotificationRef', 'CFReadStreamRef', 'CFNull', 'CFAllocatorRef', 'CFBagRef', 'CFBinaryHeapRef',
+ 'CFBitVectorRef', 'CFBooleanRef', 'CFDataRef', 'CFDateRef', 'CFMachPortRef', 'CFMessagePortRef',
+ 'CFMutableArrayRef', 'CFMutableBagRef', 'CFMutableBitVectorRef', 'CFMutableCharacterSetRef',
+ 'CFMutableDataRef', 'CFMutableSetRef', 'CFNumberRef', 'CFPlugInRef', 'CFPlugInInstanceRef',
+ 'CFRunLoopRef', 'CFRunLoopObserverRef', 'CFRunLoopSourceRef', 'CFRunLoopTimerRef', 'CFSocketRef',
+ 'CFTimeZoneRef', 'CFTypeRef', 'CFUserNotificationRef', 'CFUUIDRef', 'CFXMLNodeRef', 'CFXMLParserRef',
+ 'CFXMLTreeRef'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #0000dd;',
+ 4 => 'color: #0000ff;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #ff0000;',
+ 2 => 'color: #339900;',
+ 'MULTI' => 'color: #ff0000; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #666666; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #666666;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #0000dd;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #00eeff;',
+ 2 => 'color: #00eeff;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/caddcl.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/caddcl.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/caddcl.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,125 +1,125 @@
-<?php
-/*************************************************************************************
- * caddcl.php
- * ----------
- * Author: Roberto Rossi (rsoftware at altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/30
- *
- * CAD DCL (Dialog Control Language) file for GeSHi.
- *
- * DCL for AutoCAD 12 or later and IntelliCAD all versions.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/1!/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'CAD DCL',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'boxed_column','boxed_radio_column','boxed_radio_row','boxed_row',
- 'column','concatenation','button','dialog','edit_box','image','image_button',
- 'errtile','list_box','ok_cancel','ok_cancel_help','ok_cancel_help_errtile',
- 'ok_cancel_help_info','ok_only','paragraph','popup_list','radio_button',
- 'radio_column','radio_row','row','slider','spacer','spacer_0','spacer_1','text',
- 'text_part','toggle',
- 'action','alignment','allow_accept','aspect_ratio','big_increment',
- 'children_alignment','children_fixed_height',
- 'children_fixed_width','color',
- 'edit_limit','edit_width','fixed_height','fixed_width',
- 'height','initial_focus','is_cancel','is_default',
- 'is_enabled','is_tab_stop','is-bold','key','label','layout','list',
- 'max_value','min_value','mnemonic','multiple_select','password_char',
- 'small_increment','tabs','tab_truncate','value','width',
- 'false','true','left','right','centered','top','bottom',
- 'dialog_line','dialog_foreground','dialog_background',
- 'graphics_background','black','red','yellow','green','cyan',
- 'blue','magenta','whitegraphics_foreground',
- 'horizontal','vertical'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * caddcl.php
+ * ----------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/30
+ *
+ * CAD DCL (Dialog Control Language) file for GeSHi.
+ *
+ * DCL for AutoCAD 12 or later and IntelliCAD all versions.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/1!/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'CAD DCL',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'boxed_column','boxed_radio_column','boxed_radio_row','boxed_row',
+ 'column','concatenation','button','dialog','edit_box','image','image_button',
+ 'errtile','list_box','ok_cancel','ok_cancel_help','ok_cancel_help_errtile',
+ 'ok_cancel_help_info','ok_only','paragraph','popup_list','radio_button',
+ 'radio_column','radio_row','row','slider','spacer','spacer_0','spacer_1','text',
+ 'text_part','toggle',
+ 'action','alignment','allow_accept','aspect_ratio','big_increment',
+ 'children_alignment','children_fixed_height',
+ 'children_fixed_width','color',
+ 'edit_limit','edit_width','fixed_height','fixed_width',
+ 'height','initial_focus','is_cancel','is_default',
+ 'is_enabled','is_tab_stop','is-bold','key','label','layout','list',
+ 'max_value','min_value','mnemonic','multiple_select','password_char',
+ 'small_increment','tabs','tab_truncate','value','width',
+ 'false','true','left','right','centered','top','bottom',
+ 'dialog_line','dialog_foreground','dialog_background',
+ 'graphics_background','black','red','yellow','green','cyan',
+ 'blue','magenta','whitegraphics_foreground',
+ 'horizontal','vertical'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/cadlisp.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/cadlisp.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/cadlisp.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,185 +1,185 @@
-<?php
-/*************************************************************************************
- * cadlisp.php
- * -----------
- * Author: Roberto Rossi (rsoftware at altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/30
- *
- * AutoCAD/IntelliCAD Lisp language file for GeSHi.
- *
- * For AutoCAD V.12..2005 and IntelliCAD all versions.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'CAD Lisp',
- 'COMMENT_SINGLE' => array(1 => ";"),
- 'COMMENT_MULTI' => array(";|" => "|;"),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'abs','acad_colordlg','acad_helpdlg','acad_strlsort','action_tile',
- 'add_list','alert','alloc','and','angle','angtof','angtos','append','apply',
- 'arx','arxload','arxunload','ascii','assoc','atan','atof','atoi','atom',
- 'atoms-family','autoarxload','autoload','Boole','boundp','caddr',
- 'cadr','car','cdr','chr','client_data_tile','close','command','cond',
- 'cons','cos','cvunit','defun','defun-q','defun-q-list-ref',
- 'defun-q-list-set','dictadd','dictnext','dictremove','dictrename',
- 'dictsearch','dimx_tile','dimy_tile','distance','distof','done_dialog',
- 'end_image','end_list','entdel','entget','entlast','entmake',
- 'entmakex','entmod','entnext','entsel','entupd','eq','equal','eval','exit',
- 'exp','expand','expt','fill_image','findfile','fix','float','foreach','function',
- 'gc','gcd','get_attr','get_tile','getangle','getcfg','getcname','getcorner',
- 'getdist','getenv','getfiled','getint','getkword','getorient','getpoint',
- 'getreal','getstring','getvar','graphscr','grclear','grdraw','grread','grtext',
- 'grvecs','handent','help','if','initdia','initget','inters','itoa','lambda','last',
- 'layoutlist','length','list','listp','load','load_dialog','log','logand','logior',
- 'lsh','mapcar','max','mem','member','menucmd','menugroup','min','minusp','mode_tile',
- 'namedobjdict','nentsel','nentselp','new_dialog','nil','not','nth','null',
- 'numberp','open','or','osnap','polar','prin1','princ','print','progn','prompt',
- 'quit','quote','read','read-char','read-line','redraw','regapp','rem','repeat',
- 'reverse','rtos','set','set_tile','setcfg','setenv','setfunhelp','setq','setvar',
- 'setview','sin','slide_image','snvalid','sqrt','ssadd','ssdel','ssget','ssgetfirst',
- 'sslength','ssmemb','ssname','ssnamex','sssetfirst','start_dialog','start_image',
- 'start_list','startapp','strcase','strcat','strlen','subst','substr','t','tablet',
- 'tblnext','tblobjname','tblsearch','term_dialog','terpri','textbox','textpage',
- 'textscr','trace','trans','type','unload_dialog','untrace','vector_image','ver',
- 'vports','wcmatch','while','write-char','write-line','xdroom','xdsize','zerop',
- 'vl-acad-defun','vl-acad-undefun','vl-arx-import','vlax-3D-point',
- 'vlax-add-cmd','vlax-create-object','vlax-curve-getArea',
- 'vlax-curve-getClosestPointTo','vlax-curve-getClosestPointToProjection',
- 'vlax-curve-getDistAtParam','vlax-curve-getDistAtPoint',
- 'vlax-curve-getEndParam','vlax-curve-getEndPoint',
- 'vlax-curve-getFirstDeriv','vlax-curve-getParamAtDist',
- 'vlax-curve-getParamAtPoint','vlax-curve-getPointAtDist',
- 'vlax-curve-getPointAtParam','vlax-curve-getSecondDeriv',
- 'vlax-curve-getStartParam','vlax-curve-getStartPoint',
- 'vlax-curve-isClosed','vlax-curve-isPeriodic','vlax-curve-isPlanar',
- 'vlax-dump-object','vlax-erased-p','vlax-for','vlax-get-acad-object',
- 'vlax-get-object','vlax-get-or-create-object','vlax-get-property',
- 'vlax-import-type-library','vlax-invoke-method','vlax-ldata-delete',
- 'vlax-ldata-get','vlax-ldata-list','vlax-ldata-put','vlax-ldata-test',
- 'vlax-make-safearray','vlax-make-variant','vlax-map-collection',
- 'vlax-method-applicable-p','vlax-object-released-p','vlax-product-key',
- 'vlax-property-available-p','vlax-put-property','vlax-read-enabled-p',
- 'vlax-release-object','vlax-remove-cmd','vlax-safearray-fill',
- 'vlax-safearray-get-dim','vlax-safearray-get-element',
- 'vlax-safearray-get-l-bound','vlax-safearray-get-u-bound',
- 'vlax-safearray-put-element','vlax-safearray-type','vlax-tmatrix',
- 'vlax-typeinfo-available-p','vlax-variant-change-type',
- 'vlax-variant-type','vlax-variant-value','vlax-write-enabled-p',
- 'vl-bb-ref','vl-bb-set','vl-catch-all-apply','vl-catch-all-error-message',
- 'vl-catch-all-error-p','vl-cmdf','vl-consp','vl-directory-files','vl-doc-export',
- 'vl-doc-import','vl-doc-ref','vl-doc-set','vl-every','vl-exit-with-error',
- 'vl-exit-with-value','vl-file-copy','vl-file-delete','vl-file-directory-p',
- 'vl-filename-base','vl-filename-directory','vl-filename-extension',
- 'vl-filename-mktemp','vl-file-rename','vl-file-size','vl-file-systime',
- 'vl-get-resource','vlisp-compile','vl-list-exported-functions',
- 'vl-list-length','vl-list-loaded-vlx','vl-load-all','vl-load-com',
- 'vl-load-reactors','vl-member-if','vl-member-if-not','vl-position',
- 'vl-prin1-to-string','vl-princ-to-string','vl-propagate','vlr-acdb-reactor',
- 'vlr-add','vlr-added-p','vlr-beep-reaction','vlr-command-reactor',
- 'vlr-current-reaction-name','vlr-data','vlr-data-set',
- 'vlr-deepclone-reactor','vlr-docmanager-reactor','vlr-dwg-reactor',
- 'vlr-dxf-reactor','vlr-editor-reactor','vl-registry-delete',
- 'vl-registry-descendents','vl-registry-read','vl-registry-write',
- 'vl-remove','vl-remove-if','vl-remove-if-not','vlr-insert-reactor',
- 'vlr-linker-reactor','vlr-lisp-reactor','vlr-miscellaneous-reactor',
- 'vlr-mouse-reactor','vlr-notification','vlr-object-reactor',
- 'vlr-owner-add','vlr-owner-remove','vlr-owners','vlr-pers','vlr-pers-list',
- 'vlr-pers-p','vlr-pers-release','vlr-reaction-names','vlr-reactions',
- 'vlr-reaction-set','vlr-reactors','vlr-remove','vlr-remove-all',
- 'vlr-set-notification','vlr-sysvar-reactor','vlr-toolbar-reactor',
- 'vlr-trace-reaction','vlr-type','vlr-types','vlr-undo-reactor',
- 'vlr-wblock-reactor','vlr-window-reactor','vlr-xref-reactor',
- 'vl-some','vl-sort','vl-sort-i','vl-string-elt','vl-string-left-trim',
- 'vl-string-mismatch','vl-string-position','vl-string-right-trim',
- 'vl-string-search','vl-string-subst','vl-string-translate','vl-string-trim',
- 'vl-symbol-name','vl-symbolp','vl-symbol-value','vl-unload-vlx','vl-vbaload',
- 'vl-vbarun','vl-vlx-loaded-p'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * cadlisp.php
+ * -----------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/30
+ *
+ * AutoCAD/IntelliCAD Lisp language file for GeSHi.
+ *
+ * For AutoCAD V.12..2005 and IntelliCAD all versions.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'CAD Lisp',
+ 'COMMENT_SINGLE' => array(1 => ";"),
+ 'COMMENT_MULTI' => array(";|" => "|;"),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'abs','acad_colordlg','acad_helpdlg','acad_strlsort','action_tile',
+ 'add_list','alert','alloc','and','angle','angtof','angtos','append','apply',
+ 'arx','arxload','arxunload','ascii','assoc','atan','atof','atoi','atom',
+ 'atoms-family','autoarxload','autoload','Boole','boundp','caddr',
+ 'cadr','car','cdr','chr','client_data_tile','close','command','cond',
+ 'cons','cos','cvunit','defun','defun-q','defun-q-list-ref',
+ 'defun-q-list-set','dictadd','dictnext','dictremove','dictrename',
+ 'dictsearch','dimx_tile','dimy_tile','distance','distof','done_dialog',
+ 'end_image','end_list','entdel','entget','entlast','entmake',
+ 'entmakex','entmod','entnext','entsel','entupd','eq','equal','eval','exit',
+ 'exp','expand','expt','fill_image','findfile','fix','float','foreach','function',
+ 'gc','gcd','get_attr','get_tile','getangle','getcfg','getcname','getcorner',
+ 'getdist','getenv','getfiled','getint','getkword','getorient','getpoint',
+ 'getreal','getstring','getvar','graphscr','grclear','grdraw','grread','grtext',
+ 'grvecs','handent','help','if','initdia','initget','inters','itoa','lambda','last',
+ 'layoutlist','length','list','listp','load','load_dialog','log','logand','logior',
+ 'lsh','mapcar','max','mem','member','menucmd','menugroup','min','minusp','mode_tile',
+ 'namedobjdict','nentsel','nentselp','new_dialog','nil','not','nth','null',
+ 'numberp','open','or','osnap','polar','prin1','princ','print','progn','prompt',
+ 'quit','quote','read','read-char','read-line','redraw','regapp','rem','repeat',
+ 'reverse','rtos','set','set_tile','setcfg','setenv','setfunhelp','setq','setvar',
+ 'setview','sin','slide_image','snvalid','sqrt','ssadd','ssdel','ssget','ssgetfirst',
+ 'sslength','ssmemb','ssname','ssnamex','sssetfirst','start_dialog','start_image',
+ 'start_list','startapp','strcase','strcat','strlen','subst','substr','t','tablet',
+ 'tblnext','tblobjname','tblsearch','term_dialog','terpri','textbox','textpage',
+ 'textscr','trace','trans','type','unload_dialog','untrace','vector_image','ver',
+ 'vports','wcmatch','while','write-char','write-line','xdroom','xdsize','zerop',
+ 'vl-acad-defun','vl-acad-undefun','vl-arx-import','vlax-3D-point',
+ 'vlax-add-cmd','vlax-create-object','vlax-curve-getArea',
+ 'vlax-curve-getClosestPointTo','vlax-curve-getClosestPointToProjection',
+ 'vlax-curve-getDistAtParam','vlax-curve-getDistAtPoint',
+ 'vlax-curve-getEndParam','vlax-curve-getEndPoint',
+ 'vlax-curve-getFirstDeriv','vlax-curve-getParamAtDist',
+ 'vlax-curve-getParamAtPoint','vlax-curve-getPointAtDist',
+ 'vlax-curve-getPointAtParam','vlax-curve-getSecondDeriv',
+ 'vlax-curve-getStartParam','vlax-curve-getStartPoint',
+ 'vlax-curve-isClosed','vlax-curve-isPeriodic','vlax-curve-isPlanar',
+ 'vlax-dump-object','vlax-erased-p','vlax-for','vlax-get-acad-object',
+ 'vlax-get-object','vlax-get-or-create-object','vlax-get-property',
+ 'vlax-import-type-library','vlax-invoke-method','vlax-ldata-delete',
+ 'vlax-ldata-get','vlax-ldata-list','vlax-ldata-put','vlax-ldata-test',
+ 'vlax-make-safearray','vlax-make-variant','vlax-map-collection',
+ 'vlax-method-applicable-p','vlax-object-released-p','vlax-product-key',
+ 'vlax-property-available-p','vlax-put-property','vlax-read-enabled-p',
+ 'vlax-release-object','vlax-remove-cmd','vlax-safearray-fill',
+ 'vlax-safearray-get-dim','vlax-safearray-get-element',
+ 'vlax-safearray-get-l-bound','vlax-safearray-get-u-bound',
+ 'vlax-safearray-put-element','vlax-safearray-type','vlax-tmatrix',
+ 'vlax-typeinfo-available-p','vlax-variant-change-type',
+ 'vlax-variant-type','vlax-variant-value','vlax-write-enabled-p',
+ 'vl-bb-ref','vl-bb-set','vl-catch-all-apply','vl-catch-all-error-message',
+ 'vl-catch-all-error-p','vl-cmdf','vl-consp','vl-directory-files','vl-doc-export',
+ 'vl-doc-import','vl-doc-ref','vl-doc-set','vl-every','vl-exit-with-error',
+ 'vl-exit-with-value','vl-file-copy','vl-file-delete','vl-file-directory-p',
+ 'vl-filename-base','vl-filename-directory','vl-filename-extension',
+ 'vl-filename-mktemp','vl-file-rename','vl-file-size','vl-file-systime',
+ 'vl-get-resource','vlisp-compile','vl-list-exported-functions',
+ 'vl-list-length','vl-list-loaded-vlx','vl-load-all','vl-load-com',
+ 'vl-load-reactors','vl-member-if','vl-member-if-not','vl-position',
+ 'vl-prin1-to-string','vl-princ-to-string','vl-propagate','vlr-acdb-reactor',
+ 'vlr-add','vlr-added-p','vlr-beep-reaction','vlr-command-reactor',
+ 'vlr-current-reaction-name','vlr-data','vlr-data-set',
+ 'vlr-deepclone-reactor','vlr-docmanager-reactor','vlr-dwg-reactor',
+ 'vlr-dxf-reactor','vlr-editor-reactor','vl-registry-delete',
+ 'vl-registry-descendents','vl-registry-read','vl-registry-write',
+ 'vl-remove','vl-remove-if','vl-remove-if-not','vlr-insert-reactor',
+ 'vlr-linker-reactor','vlr-lisp-reactor','vlr-miscellaneous-reactor',
+ 'vlr-mouse-reactor','vlr-notification','vlr-object-reactor',
+ 'vlr-owner-add','vlr-owner-remove','vlr-owners','vlr-pers','vlr-pers-list',
+ 'vlr-pers-p','vlr-pers-release','vlr-reaction-names','vlr-reactions',
+ 'vlr-reaction-set','vlr-reactors','vlr-remove','vlr-remove-all',
+ 'vlr-set-notification','vlr-sysvar-reactor','vlr-toolbar-reactor',
+ 'vlr-trace-reaction','vlr-type','vlr-types','vlr-undo-reactor',
+ 'vlr-wblock-reactor','vlr-window-reactor','vlr-xref-reactor',
+ 'vl-some','vl-sort','vl-sort-i','vl-string-elt','vl-string-left-trim',
+ 'vl-string-mismatch','vl-string-position','vl-string-right-trim',
+ 'vl-string-search','vl-string-subst','vl-string-translate','vl-string-trim',
+ 'vl-symbol-name','vl-symbolp','vl-symbol-value','vl-unload-vlx','vl-vbaload',
+ 'vl-vbarun','vl-vlx-loaded-p'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/cfdg.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/cfdg.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/cfdg.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,125 +1,125 @@
-<?php
-/*************************************************************************************
- * cfdg.php
- * --------
- * Author: John Horigan <john at glyphic.com>
- * Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/
- * Release Version: 1.0.7.21
- * Date Started: 2006/03/11
- *
- * CFDG language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/03/11 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/03/11)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'CFDG',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'include', 'startshape', 'rule', 'background'
- ),
- 2 => array(
- 'SQUARE', 'CIRCLE', 'TRIANGLE',
- ),
- 3 => array(
- 'b','brightness','h','hue','sat','saturation',
- 'a','alpha','x','y','z','s','size',
- 'r','rotate','f','flip','skew','xml_set_object'
- )
- ),
- 'SYMBOLS' => array(
- '[', ']', '{', '}', '*', '|'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #717100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #006666;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- 3 => ''
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => '',
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * cfdg.php
+ * --------
+ * Author: John Horigan <john at glyphic.com>
+ * Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/03/11
+ *
+ * CFDG language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/03/11 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/03/11)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'CFDG',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'include', 'startshape', 'rule', 'background'
+ ),
+ 2 => array(
+ 'SQUARE', 'CIRCLE', 'TRIANGLE',
+ ),
+ 3 => array(
+ 'b','brightness','h','hue','sat','saturation',
+ 'a','alpha','x','y','z','s','size',
+ 'r','rotate','f','flip','skew','xml_set_object'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '{', '}', '*', '|'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #717100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #006666;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => '',
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/cfm.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/cfm.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/cfm.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,325 +1,325 @@
-<?php
-/*************************************************************************************
- * cfm.php
- * -------
- * Author: Diego
- * Copyright: (c) 2006 Diego
- * Release Version: 1.0.7.21
- * Date Started: 2006/02/25
- *
- * ColdFusion language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/02/25 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/02/25)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'ColdFusion',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('<!--' => '-->','<!---' => '--->', '/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- /* CFM Tags */
- 1 => array(
- '<cfabort', '<cfapplet', '<cfapplication', '<cfargument', '<cfassociate', '<<cfbreak>',
- '<cfcache', '<cfcase', '<cfcatch', '</cfcatch>', '<cfchart', '</cfchart>', '<cfchartdata',
- '<cfchartseries', '</cfchartseries>', '<cfcol', '<cfcollection', '<cfcomponent', '</cfcomponent>',
- '<cfcontent', '<cfcookie', '</cfdefaultcase>', '<cfdirectory', '<cfdocument', '</cfdocument>',
- '<cfdocumentitem', '</cfdocumentitem>', '<cfdocumentsection', '</cfdocumentsection>', '<cfdump',
- '<cfelse', '<cfelseif', '<cferror', '<cfexecute', '</cfexecute>', '<cfexit', '<cffile',
- '<cfflush', '<cfform', '</cfform>', '<cfformgroup', '</cfformgroup', '<cfformitem',
- '</cfformitem>', '<cfftp', '<cffunction', '</cffunction>', '<cfgrid', '</cfgrid>',
- '<cfgridcolumn', '<cfgridrow', '<cfgridupdate', '<cfheader', '<cfhtmlhead', '<cfhttp',
- '</cfhttp>', '<cfhttpparam', '<cfif', '</cfif>', '<cfimport', '<cfinclude', '<cfindex',
- '<cfinput', '<cfinsert', '<cfinvoke', '<cfinvokeargument', '<cfldap', '<cflocation', '<cflock',
- '</cflock>', '<cflog', '<cflogin', '</cflogin>', '<cfloginuser', '<cflogout', '<cfloop',
- '</cfloop>', '<cfmail', '</cfmail>', '<cfmailparam', '<cfmailpart', '</cfmailpart>',
- '<cfmodule', '<cfNTauthenticate', '<cfobject', '<cfobjectcache', '<cfoutput>', '<cfoutput', '</cfoutput>',
- '<cfparam', '<cfpop', '<cfprocessingdirective', '</cfprocessingdirective>', '<cfprocparam',
- '<cfprocresult', '<cfproperty', '<cfquery', '</cfquery>', '<cfqueryparam', '<cfregistry',
- '</cfregistry>', '<cfreport', '</cfreport>', '<cfreportparam', '</cfreportparam>',
- '<cfrethrow', '<cfreturn', '<cfsavecontent', '</cfsavecontent>', '<cfschedule', '<cfscript', '<cfscript>',
- '</cfscript>', '<cfsearch', '<cfselect', '</cfselect>', '<cfset', '<cfsetting', '<cfsilent',
- '</cfsilent>', '<cfstoredproc', '</cfstoredproc>', '<cfswitch', '</cfswitch>', '<cftable',
- '</cftable>', '<cftextarea', '</cftextarea>', '<cfthrow', '<cftimer', '</cftimer>',
- '<cftrace', '</cftrace>', '<cftransaction', '</cftransaction>', '<cftree', '</cftree>',
- '<cftreeitem', '<cftry', '</cftry>', '<cfupdate', '<cfwddx','<','>'
- ),
- /* HTML Tags */
- 2 => array(
- '<a>', '<abbr>', '<acronym>', '<address>', '<applet>',
- '<a', '<abbr', '<acronym', '<address', '<applet',
- '</a>', '</abbr>', '</acronym>', '</address>', '</applet>',
- '</a', '</abbr', '</acronym', '</address', '</applet',
-
- '<base>', '<basefont>', '<bdo>', '<big>', '<blockquote>', '<body>', '<br>', '<button>', '<b>',
- '<base', '<basefont', '<bdo', '<big', '<blockquote', '<body', '<br', '<button', '<b',
- '</base>', '</basefont>', '</bdo>', '</big>', '</blockquote>', '</body>', '</br>', '</button>', '</b>',
- '</base', '</basefont', '</bdo', '</big', '</blockquote', '</body', '</br','<br />', '</button', '</b',
-
- '<caption>', '<center>', '<cite>', '<code>', '<colgroup>', '<col>',
- '<caption', '<center', '<cite', '<code', '<colgroup', '<col',
- '</caption>', '</center>', '</cite>', '</code>', '</colgroup>', '</col>',
- '</caption', '</center', '</cite', '</code', '</colgroup', '</col',
-
- '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>',
- '<dd', '<del', '<dfn', '<dir', '<div', '<dl', '<dt',
- '</dd>', '</del>', '</dfn>', '</dir>', '</div>', '</dl>', '</dt>',
- '</dd', '</del', '</dfn', '</dir', '</div', '</dl', '</dt',
-
- '<em>',
- '<em',
- '</em>',
- '</em',
-
- '<fieldset>', '<font>', '<form>', '<frame>', '<frameset>',
- '<fieldset', '<font', '<form', '<frame', '<frameset',
- '</fieldset>', '</font>', '</form>', '</frame>', '</frameset>',
- '</fieldset', '</font', '</form', '</frame', '</frameset',
-
- '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<head>', '<hr>', '<html>',
- '<h1', '<h2', '<h3', '<h4', '<h5', '<h6', '<head', '<hr', '<html',
- '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '</head>', '</hr>', '</html>',
- '</h1', '</h2', '</h3', '</h4', '</h5', '</h6', '</head', '</hr', '</html',
-
- '<iframe>', '<ilayer>', '<img>', '<input>', '<ins>', '<isindex>', '<i>',
- '<iframe', '<ilayer', '<img', '<input', '<ins', '<isindex', '<i',
- '</iframe>', '</ilayer>', '</img>', '</input>', '</ins>', '</isindex>', '</i>',
- '</iframe', '</ilayer', '</img', '</input', '</ins', '</isindex', '</i',
-
- '<kbd>',
- '<kbd',
- '&t;/kbd>',
- '</kbd',
-
- '<label>', '<legend>', '<link>', '<li>',
- '<label', '<legend', '<link', '<li',
- '</label>', '</legend>', '</link>', '</li>',
- '</label', '</legend', '</link', '</li',
-
- '<map>', '<meta>',
- '<map', '<meta',
- '</map>', '</meta>',
- '</map', '</meta',
-
- '<noframes>', '<noscript>',
- '<noframes', '<noscript',
- '</noframes>', '</noscript>',
- '</noframes', '</noscript',
-
- '<object>', '<ol>', '<optgroup>', '<option>',
- '<object', '<ol', '<optgroup', '<option',
- '</object>', '</ol>', '</optgroup>', '</option>',
- '</object', '</ol', '</optgroup', '</option',
-
- '<param>', '<pre>', '<p>',
- '<param', '<pre', '<p',
- '</param>', '</pre>', '</p>',
- '</param', '</pre', '</p',
-
- '<q>',
- '<q',
- '</q>',
- '</q',
-
- '<samp>', '<script>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<style>', '<sub>', '<sup>', '<s>',
- '<samp', '<script', '<select', '<small', '<span', '<strike', '<strong', '<style', '<sub', '<sup', '<s',
- '</samp>', '</script>', '</select>', '</small>', '</span>', '</strike>', '</strong>', '</style>', '</sub>', '</sup>', '</s>',
- '</samp', '</script', '</select', '</small', '</span', '</strike', '</strong', '</style', '</sub', '</sup', '</s',
-
- '<table>', '<tbody>', '<td>', '<textarea>', '<text>', '<tfoot>', '<thead>', '<th>', '<title>', '<tr>', '<tt>',
- '<table', '<tbody', '<td', '<textarea', '<text', '<tfoot', '<tfoot', '<thead', '<th', '<title', '<tr', '<tt',
- '</table>', '</tbody>', '</td>', '</textarea>', '</text>', '</tfoot>', '</thead', '</tfoot', '</th>', '</title>', '</tr>', '</tt>',
- '</table', '</tbody', '</td', '</textarea', '</text', '</tfoot', '</tfoot', '</thead', '</th', '</title', '</tr', '</tt',
-
- '<ul>', '<u>',
- '<ul', '<u',
- '</ul>', '</ul>',
- '</ul', '</u',
-
- '<var>',
- '<var',
- '</var>',
- '</var',
-
- '>', '<'
- ),
- /* HTML attributes */
- 3 => array(
- 'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
- 'background', 'bgcolor', 'border',
- 'cellpadding', 'cellspacing', 'char', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
- 'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
- 'enctype',
- 'face', 'for', 'frame', 'frameborder',
- 'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
- 'id', 'ismap',
- 'label', 'lang', 'language', 'link', 'longdesc',
- 'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
- 'name', 'nohref', 'noresize', 'noshade', 'nowrap',
- 'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
- 'profile', 'prompt',
- 'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
- 'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
- 'tabindex', 'target', 'text', 'title', 'type',
- 'usemap',
- 'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
- 'width'
- ),
- /* CFM Script delimeters */
- 4 => array(
- 'var', 'function', 'while', 'if','else'
- ),
- /* CFM Functions */
- 5 => array(
- 'Abs', 'GetFunctionList', 'LSTimeFormat','ACos','GetGatewayHelper','LTrim','AddSOAPRequestHeader','GetHttpRequestData',
- 'Max','AddSOAPResponseHeader','GetHttpTimeString','Mid','ArrayAppend','GetLocale','Min','ArrayAvg','GetLocaleDisplayName',
- 'Minute','ArrayClear','GetMetaData','Month','ArrayDeleteAt','GetMetricData','MonthAsString','ArrayInsertAt','GetPageContext',
- 'Now','ArrayIsEmpty','GetProfileSections','NumberFormat','ArrayLen','GetProfileString','ParagraphFormat','ArrayMax',
- 'GetLocalHostIP','ParseDateTime','ArrayMin','GetSOAPRequest','Pi','ArrayNew','GetSOAPRequestHeader','PreserveSingleQuotes',
- 'ArrayPrepend','GetSOAPResponse','Quarter','ArrayResize','GetSOAPResponseHeader','QueryAddColumn','ArraySet',
- 'GetTempDirectory','QueryAddRow','ArraySort','GetTempDirectory','QueryNew','ArraySum','GetTempFile','QuerySetCell',
- 'ArraySwap','GetTickCount','QuotedValueList','ArrayToList','GetTimeZoneInfo','Rand','Asc','GetToken','Randomize',
- 'ASin','Hash','RandRange','Atn','Hour','REFind','BinaryDecode','HTMLCodeFormat','REFindNoCase','BinaryEncode',
- 'HTMLEditFormat','ReleaseComObject','BitAnd','IIf','RemoveChars','BitMaskClear','IncrementValue','RepeatString',
- 'BitMaskRead','InputBaseN','Replace','BitMaskSet','Insert','ReplaceList','BitNot','Int','ReplaceNoCase','BitOr',
- 'IsArray','REReplace','BitSHLN','IsBinary','REReplaceNoCase','BitSHRN','IsBoolean','Reverse','BitXor','IsCustomFunction',
- 'Right','Ceiling','IsDate','RJustify','CharsetDecode','IsDebugMode','Round','CharsetEncode','IsDefined','RTrim',
- 'Chr','IsLeapYear','Second','CJustify','IsLocalHost','SendGatewayMessage','Compare','IsNumeric','SetEncoding',
- 'CompareNoCase','IsNumericDate','SetLocale','Cos','IsObject','SetProfileString','CreateDate','IsQuery','SetVariable',
- 'CreateDateTime','IsSimpleValue','Sgn','CreateObject','IsSOAPRequest','Sin','CreateODBCDate','IsStruct','SpanExcluding',
- 'CreateODBCDateTime','IsUserInRole','SpanIncluding','CreateODBCTime','IsValid','Sqr','CreateTime','IsWDDX','StripCR',
- 'CreateTimeSpan','IsXML','StructAppend','CreateUUID','IsXmlAttribute','StructClear','DateAdd','IsXmlDoc','StructCopy',
- 'DateCompare','IsXmlElem','StructCount','DateConvert','IsXmlNode','StructDelete','DateDiff','IsXmlRoot','StructFind',
- 'DateFormat','JavaCast','StructFindKey','DatePart','JSStringFormat','StructFindValue','Day','LCase','StructGet',
- 'DayOfWeek','Left','StructInsert','DayOfWeekAsString','Len','StructIsEmpty','DayOfYear','ListAppend','StructKeyArray',
- 'DaysInMonth','ListChangeDelims','StructKeyExists','DaysInYear','ListContains','StructKeyList','DE','ListContainsNoCase',
- 'StructNew','DecimalFormat','ListDeleteAt','StructSort','DecrementValue','ListFind','StructUpdate','Decrypt','ListFindNoCase',
- 'Tan','DecryptBinary','ListFirst','TimeFormat','DeleteClientVariable','ListGetAt','ToBase64','DirectoryExists',
- 'ListInsertAt','ToBinary','DollarFormat','ListLast','ToScript','Duplicate','ListLen','ToString','Encrypt','ListPrepend',
- 'Trim','EncryptBinary','ListQualify','UCase','Evaluate','ListRest','URLDecode','Exp','ListSetAt','URLEncodedFormat',
- 'ExpandPath','ListSort','URLSessionFormat','FileExists','ListToArray','Val','Find','ListValueCount','ValueList',
- 'FindNoCase','ListValueCountNoCase','Week','FindOneOf','LJustify','Wrap','FirstDayOfMonth','Log','WriteOutput',
- 'Fix','Log10','XmlChildPos','FormatBaseN','LSCurrencyFormat','XmlElemNew','GetAuthUser','LSDateFormat','XmlFormat',
- 'GetBaseTagData','LSEuroCurrencyFormat','XmlGetNodeType','GetBaseTagList','LSIsCurrency','XmlNew','GetBaseTemplatePath',
- 'LSIsDate','XmlParse','GetClientVariablesList','LSIsNumeric','XmlSearch','GetCurrentTemplatePath','LSNumberFormat',
- 'XmlTransform','GetDirectoryFromPath','LSParseCurrency','XmlValidate','GetEncoding','LSParseDateTime','Year',
- 'GetException','LSParseEuroCurrency','YesNoFormat','GetFileFromPath','LSParseNumber'
- ),
- /* CFM Attributes */
- 6 => array(
- '=','&','name','dbtype','connectstring','datasource','username','password','query','delimeter','description','required','hint','default','access','from','to','list','index'
- )
- ),
- 'SYMBOLS' => array(
- '/', '=', 'EQ', 'GT', 'LT', 'GTE', 'LTE', 'IS', 'LIKE', '&', '{', '}', '(', ')', '[', ']','gt','lt'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
- 6 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #990000;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #0000FF;',
- 4 => 'color: #000000; font-weight: bold;',
- 5 => 'color: #0000FF;',
- 6 => 'color: #0000FF'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic; background-color:#FFFF99;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #0000FF;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #009900;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #0000FF;'
- ),
- 'SCRIPT' => array(
- 0 => 'color: #00bbdd;',
- 1 => 'color: #0000FF;',
- 2 => 'color: #000099;',
- 3 => 'color: #333333;'
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<!DOCTYPE' => '>'
- ),
- 1 => array(
- '#' => '#'
- ),
- 2 => array(
- '<cfscript>' => '</cfscript>;'
- ),
- 3 => array(
- '<' => '>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => false,
- 1 => true,
- 2 => true,
- 3 => true
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * cfm.php
+ * -------
+ * Author: Diego
+ * Copyright: (c) 2006 Diego
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/02/25
+ *
+ * ColdFusion language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/02/25 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/02/25)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'ColdFusion',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('<!--' => '-->','<!---' => '--->', '/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ /* CFM Tags */
+ 1 => array(
+ '<cfabort', '<cfapplet', '<cfapplication', '<cfargument', '<cfassociate', '<<cfbreak>',
+ '<cfcache', '<cfcase', '<cfcatch', '</cfcatch>', '<cfchart', '</cfchart>', '<cfchartdata',
+ '<cfchartseries', '</cfchartseries>', '<cfcol', '<cfcollection', '<cfcomponent', '</cfcomponent>',
+ '<cfcontent', '<cfcookie', '</cfdefaultcase>', '<cfdirectory', '<cfdocument', '</cfdocument>',
+ '<cfdocumentitem', '</cfdocumentitem>', '<cfdocumentsection', '</cfdocumentsection>', '<cfdump',
+ '<cfelse', '<cfelseif', '<cferror', '<cfexecute', '</cfexecute>', '<cfexit', '<cffile',
+ '<cfflush', '<cfform', '</cfform>', '<cfformgroup', '</cfformgroup', '<cfformitem',
+ '</cfformitem>', '<cfftp', '<cffunction', '</cffunction>', '<cfgrid', '</cfgrid>',
+ '<cfgridcolumn', '<cfgridrow', '<cfgridupdate', '<cfheader', '<cfhtmlhead', '<cfhttp',
+ '</cfhttp>', '<cfhttpparam', '<cfif', '</cfif>', '<cfimport', '<cfinclude', '<cfindex',
+ '<cfinput', '<cfinsert', '<cfinvoke', '<cfinvokeargument', '<cfldap', '<cflocation', '<cflock',
+ '</cflock>', '<cflog', '<cflogin', '</cflogin>', '<cfloginuser', '<cflogout', '<cfloop',
+ '</cfloop>', '<cfmail', '</cfmail>', '<cfmailparam', '<cfmailpart', '</cfmailpart>',
+ '<cfmodule', '<cfNTauthenticate', '<cfobject', '<cfobjectcache', '<cfoutput>', '<cfoutput', '</cfoutput>',
+ '<cfparam', '<cfpop', '<cfprocessingdirective', '</cfprocessingdirective>', '<cfprocparam',
+ '<cfprocresult', '<cfproperty', '<cfquery', '</cfquery>', '<cfqueryparam', '<cfregistry',
+ '</cfregistry>', '<cfreport', '</cfreport>', '<cfreportparam', '</cfreportparam>',
+ '<cfrethrow', '<cfreturn', '<cfsavecontent', '</cfsavecontent>', '<cfschedule', '<cfscript', '<cfscript>',
+ '</cfscript>', '<cfsearch', '<cfselect', '</cfselect>', '<cfset', '<cfsetting', '<cfsilent',
+ '</cfsilent>', '<cfstoredproc', '</cfstoredproc>', '<cfswitch', '</cfswitch>', '<cftable',
+ '</cftable>', '<cftextarea', '</cftextarea>', '<cfthrow', '<cftimer', '</cftimer>',
+ '<cftrace', '</cftrace>', '<cftransaction', '</cftransaction>', '<cftree', '</cftree>',
+ '<cftreeitem', '<cftry', '</cftry>', '<cfupdate', '<cfwddx','<','>'
+ ),
+ /* HTML Tags */
+ 2 => array(
+ '<a>', '<abbr>', '<acronym>', '<address>', '<applet>',
+ '<a', '<abbr', '<acronym', '<address', '<applet',
+ '</a>', '</abbr>', '</acronym>', '</address>', '</applet>',
+ '</a', '</abbr', '</acronym', '</address', '</applet',
+
+ '<base>', '<basefont>', '<bdo>', '<big>', '<blockquote>', '<body>', '<br>', '<button>', '<b>',
+ '<base', '<basefont', '<bdo', '<big', '<blockquote', '<body', '<br', '<button', '<b',
+ '</base>', '</basefont>', '</bdo>', '</big>', '</blockquote>', '</body>', '</br>', '</button>', '</b>',
+ '</base', '</basefont', '</bdo', '</big', '</blockquote', '</body', '</br','<br />', '</button', '</b',
+
+ '<caption>', '<center>', '<cite>', '<code>', '<colgroup>', '<col>',
+ '<caption', '<center', '<cite', '<code', '<colgroup', '<col',
+ '</caption>', '</center>', '</cite>', '</code>', '</colgroup>', '</col>',
+ '</caption', '</center', '</cite', '</code', '</colgroup', '</col',
+
+ '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>',
+ '<dd', '<del', '<dfn', '<dir', '<div', '<dl', '<dt',
+ '</dd>', '</del>', '</dfn>', '</dir>', '</div>', '</dl>', '</dt>',
+ '</dd', '</del', '</dfn', '</dir', '</div', '</dl', '</dt',
+
+ '<em>',
+ '<em',
+ '</em>',
+ '</em',
+
+ '<fieldset>', '<font>', '<form>', '<frame>', '<frameset>',
+ '<fieldset', '<font', '<form', '<frame', '<frameset',
+ '</fieldset>', '</font>', '</form>', '</frame>', '</frameset>',
+ '</fieldset', '</font', '</form', '</frame', '</frameset',
+
+ '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<head>', '<hr>', '<html>',
+ '<h1', '<h2', '<h3', '<h4', '<h5', '<h6', '<head', '<hr', '<html',
+ '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '</head>', '</hr>', '</html>',
+ '</h1', '</h2', '</h3', '</h4', '</h5', '</h6', '</head', '</hr', '</html',
+
+ '<iframe>', '<ilayer>', '<img>', '<input>', '<ins>', '<isindex>', '<i>',
+ '<iframe', '<ilayer', '<img', '<input', '<ins', '<isindex', '<i',
+ '</iframe>', '</ilayer>', '</img>', '</input>', '</ins>', '</isindex>', '</i>',
+ '</iframe', '</ilayer', '</img', '</input', '</ins', '</isindex', '</i',
+
+ '<kbd>',
+ '<kbd',
+ '&t;/kbd>',
+ '</kbd',
+
+ '<label>', '<legend>', '<link>', '<li>',
+ '<label', '<legend', '<link', '<li',
+ '</label>', '</legend>', '</link>', '</li>',
+ '</label', '</legend', '</link', '</li',
+
+ '<map>', '<meta>',
+ '<map', '<meta',
+ '</map>', '</meta>',
+ '</map', '</meta',
+
+ '<noframes>', '<noscript>',
+ '<noframes', '<noscript',
+ '</noframes>', '</noscript>',
+ '</noframes', '</noscript',
+
+ '<object>', '<ol>', '<optgroup>', '<option>',
+ '<object', '<ol', '<optgroup', '<option',
+ '</object>', '</ol>', '</optgroup>', '</option>',
+ '</object', '</ol', '</optgroup', '</option',
+
+ '<param>', '<pre>', '<p>',
+ '<param', '<pre', '<p',
+ '</param>', '</pre>', '</p>',
+ '</param', '</pre', '</p',
+
+ '<q>',
+ '<q',
+ '</q>',
+ '</q',
+
+ '<samp>', '<script>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<style>', '<sub>', '<sup>', '<s>',
+ '<samp', '<script', '<select', '<small', '<span', '<strike', '<strong', '<style', '<sub', '<sup', '<s',
+ '</samp>', '</script>', '</select>', '</small>', '</span>', '</strike>', '</strong>', '</style>', '</sub>', '</sup>', '</s>',
+ '</samp', '</script', '</select', '</small', '</span', '</strike', '</strong', '</style', '</sub', '</sup', '</s',
+
+ '<table>', '<tbody>', '<td>', '<textarea>', '<text>', '<tfoot>', '<thead>', '<th>', '<title>', '<tr>', '<tt>',
+ '<table', '<tbody', '<td', '<textarea', '<text', '<tfoot', '<tfoot', '<thead', '<th', '<title', '<tr', '<tt',
+ '</table>', '</tbody>', '</td>', '</textarea>', '</text>', '</tfoot>', '</thead', '</tfoot', '</th>', '</title>', '</tr>', '</tt>',
+ '</table', '</tbody', '</td', '</textarea', '</text', '</tfoot', '</tfoot', '</thead', '</th', '</title', '</tr', '</tt',
+
+ '<ul>', '<u>',
+ '<ul', '<u',
+ '</ul>', '</ul>',
+ '</ul', '</u',
+
+ '<var>',
+ '<var',
+ '</var>',
+ '</var',
+
+ '>', '<'
+ ),
+ /* HTML attributes */
+ 3 => array(
+ 'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
+ 'background', 'bgcolor', 'border',
+ 'cellpadding', 'cellspacing', 'char', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
+ 'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
+ 'enctype',
+ 'face', 'for', 'frame', 'frameborder',
+ 'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
+ 'id', 'ismap',
+ 'label', 'lang', 'language', 'link', 'longdesc',
+ 'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
+ 'name', 'nohref', 'noresize', 'noshade', 'nowrap',
+ 'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
+ 'profile', 'prompt',
+ 'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
+ 'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
+ 'tabindex', 'target', 'text', 'title', 'type',
+ 'usemap',
+ 'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
+ 'width'
+ ),
+ /* CFM Script delimeters */
+ 4 => array(
+ 'var', 'function', 'while', 'if','else'
+ ),
+ /* CFM Functions */
+ 5 => array(
+ 'Abs', 'GetFunctionList', 'LSTimeFormat','ACos','GetGatewayHelper','LTrim','AddSOAPRequestHeader','GetHttpRequestData',
+ 'Max','AddSOAPResponseHeader','GetHttpTimeString','Mid','ArrayAppend','GetLocale','Min','ArrayAvg','GetLocaleDisplayName',
+ 'Minute','ArrayClear','GetMetaData','Month','ArrayDeleteAt','GetMetricData','MonthAsString','ArrayInsertAt','GetPageContext',
+ 'Now','ArrayIsEmpty','GetProfileSections','NumberFormat','ArrayLen','GetProfileString','ParagraphFormat','ArrayMax',
+ 'GetLocalHostIP','ParseDateTime','ArrayMin','GetSOAPRequest','Pi','ArrayNew','GetSOAPRequestHeader','PreserveSingleQuotes',
+ 'ArrayPrepend','GetSOAPResponse','Quarter','ArrayResize','GetSOAPResponseHeader','QueryAddColumn','ArraySet',
+ 'GetTempDirectory','QueryAddRow','ArraySort','GetTempDirectory','QueryNew','ArraySum','GetTempFile','QuerySetCell',
+ 'ArraySwap','GetTickCount','QuotedValueList','ArrayToList','GetTimeZoneInfo','Rand','Asc','GetToken','Randomize',
+ 'ASin','Hash','RandRange','Atn','Hour','REFind','BinaryDecode','HTMLCodeFormat','REFindNoCase','BinaryEncode',
+ 'HTMLEditFormat','ReleaseComObject','BitAnd','IIf','RemoveChars','BitMaskClear','IncrementValue','RepeatString',
+ 'BitMaskRead','InputBaseN','Replace','BitMaskSet','Insert','ReplaceList','BitNot','Int','ReplaceNoCase','BitOr',
+ 'IsArray','REReplace','BitSHLN','IsBinary','REReplaceNoCase','BitSHRN','IsBoolean','Reverse','BitXor','IsCustomFunction',
+ 'Right','Ceiling','IsDate','RJustify','CharsetDecode','IsDebugMode','Round','CharsetEncode','IsDefined','RTrim',
+ 'Chr','IsLeapYear','Second','CJustify','IsLocalHost','SendGatewayMessage','Compare','IsNumeric','SetEncoding',
+ 'CompareNoCase','IsNumericDate','SetLocale','Cos','IsObject','SetProfileString','CreateDate','IsQuery','SetVariable',
+ 'CreateDateTime','IsSimpleValue','Sgn','CreateObject','IsSOAPRequest','Sin','CreateODBCDate','IsStruct','SpanExcluding',
+ 'CreateODBCDateTime','IsUserInRole','SpanIncluding','CreateODBCTime','IsValid','Sqr','CreateTime','IsWDDX','StripCR',
+ 'CreateTimeSpan','IsXML','StructAppend','CreateUUID','IsXmlAttribute','StructClear','DateAdd','IsXmlDoc','StructCopy',
+ 'DateCompare','IsXmlElem','StructCount','DateConvert','IsXmlNode','StructDelete','DateDiff','IsXmlRoot','StructFind',
+ 'DateFormat','JavaCast','StructFindKey','DatePart','JSStringFormat','StructFindValue','Day','LCase','StructGet',
+ 'DayOfWeek','Left','StructInsert','DayOfWeekAsString','Len','StructIsEmpty','DayOfYear','ListAppend','StructKeyArray',
+ 'DaysInMonth','ListChangeDelims','StructKeyExists','DaysInYear','ListContains','StructKeyList','DE','ListContainsNoCase',
+ 'StructNew','DecimalFormat','ListDeleteAt','StructSort','DecrementValue','ListFind','StructUpdate','Decrypt','ListFindNoCase',
+ 'Tan','DecryptBinary','ListFirst','TimeFormat','DeleteClientVariable','ListGetAt','ToBase64','DirectoryExists',
+ 'ListInsertAt','ToBinary','DollarFormat','ListLast','ToScript','Duplicate','ListLen','ToString','Encrypt','ListPrepend',
+ 'Trim','EncryptBinary','ListQualify','UCase','Evaluate','ListRest','URLDecode','Exp','ListSetAt','URLEncodedFormat',
+ 'ExpandPath','ListSort','URLSessionFormat','FileExists','ListToArray','Val','Find','ListValueCount','ValueList',
+ 'FindNoCase','ListValueCountNoCase','Week','FindOneOf','LJustify','Wrap','FirstDayOfMonth','Log','WriteOutput',
+ 'Fix','Log10','XmlChildPos','FormatBaseN','LSCurrencyFormat','XmlElemNew','GetAuthUser','LSDateFormat','XmlFormat',
+ 'GetBaseTagData','LSEuroCurrencyFormat','XmlGetNodeType','GetBaseTagList','LSIsCurrency','XmlNew','GetBaseTemplatePath',
+ 'LSIsDate','XmlParse','GetClientVariablesList','LSIsNumeric','XmlSearch','GetCurrentTemplatePath','LSNumberFormat',
+ 'XmlTransform','GetDirectoryFromPath','LSParseCurrency','XmlValidate','GetEncoding','LSParseDateTime','Year',
+ 'GetException','LSParseEuroCurrency','YesNoFormat','GetFileFromPath','LSParseNumber'
+ ),
+ /* CFM Attributes */
+ 6 => array(
+ '=','&','name','dbtype','connectstring','datasource','username','password','query','delimeter','description','required','hint','default','access','from','to','list','index'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '/', '=', 'EQ', 'GT', 'LT', 'GTE', 'LTE', 'IS', 'LIKE', '&', '{', '}', '(', ')', '[', ']','gt','lt'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #990000;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #0000FF;',
+ 4 => 'color: #000000; font-weight: bold;',
+ 5 => 'color: #0000FF;',
+ 6 => 'color: #0000FF'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic; background-color:#FFFF99;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #0000FF;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #009900;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #0000FF;'
+ ),
+ 'SCRIPT' => array(
+ 0 => 'color: #00bbdd;',
+ 1 => 'color: #0000FF;',
+ 2 => 'color: #000099;',
+ 3 => 'color: #333333;'
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<!DOCTYPE' => '>'
+ ),
+ 1 => array(
+ '#' => '#'
+ ),
+ 2 => array(
+ '<cfscript>' => '</cfscript>;'
+ ),
+ 3 => array(
+ '<' => '>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => false,
+ 1 => true,
+ 2 => true,
+ 3 => true
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/cpp-qt.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/cpp-qt.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/cpp-qt.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,267 +1,267 @@
-<?php
-/*************************************************************************************
- * cpp.php
- * -------
- * Author: Iulian M
- * Copyright: (c) 2006 Iulian M
- * Release Version: 1.0.7.21
- * Date Started: 2004/09/27
- *
- * C++ language file for GeSHi, with QT extensions.
- *
- * CHANGES
- * -------
- *
- * TODO
- * ----
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'C++ (QT)',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
- 'switch', 'while'
- ),
- 2 => array(
- 'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
- 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
- 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
- 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
- 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
- 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
- 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
- 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
- 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
- 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
- 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
- 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
- 'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
- 'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
- 'static_cast', 'explicit', 'friend', 'wchar_t', 'typename', 'typeid', 'class' ,
- 'foreach','connect', 'Q_OBJECT' , 'slots' , 'signals'
- ),
- 3 => array(
- 'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
- 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
- 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
- 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
- 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
- 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
- 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
- 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
- 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
- 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
- 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
- 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
- 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
- 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
- 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
- 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
- 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
- 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
- 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
- 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
- ),
- 4 => array(
- 'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
- 'register', 'short', 'shortint', 'signed', 'static', 'struct',
- 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
- 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
- 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
- ),
- 5 => array(
- 'QAbstractButton','QDir','QIntValidator','QRegExpValidator','QTabWidget','QAbstractEventDispatcher',
- 'QDirectPainter','QIODevice','QRegion','QTcpServer','QAbstractExtensionFactory','QDirModel',
- 'QItemDelegate','QResizeEvent','QTcpSocket','QAbstractExtensionManager','QDockWidget',
- 'QItemEditorCreatorBase','QResource','QTemporaryFile','QAbstractFileEngine','QDomAttr',
- 'QItemEditorFactory','QRubberBand','QTestEventList','QAbstractFileEngineHandler','QDomCDATASection',
- 'QItemSelection','QScreen','QTextBlock','QAbstractFormBuilder','QDomCharacterData','QItemSelectionModel',
- 'QScreenCursor','QTextBlockFormat','QAbstractGraphicsShapeItem','QDomComment','QItemSelectionRange',
- 'QScreenDriverFactory','QTextBlockGroup','QAbstractItemDelegate','QDomDocument','QKbdDriverFactory',
- 'QScreenDriverPlugin','QTextBlockUserData','QAbstractItemModel','QDomDocumentFragment','QKbdDriverPlugin',
- 'QScrollArea','QTextBrowser','QAbstractItemView','QDomDocumentType','QKeyEvent','QScrollBar',
- 'QTextCharFormat','QAbstractListModel','QDomElement','QKeySequence','QSemaphore','QTextCodec',
- 'QAbstractPrintDialog','QDomEntity','QLabel','QSessionManager','QTextCodecPlugin','QAbstractProxyModel',
- 'QDomEntityReference','QLatin1Char','QSet','QTextCursor','QAbstractScrollArea','QDomImplementation',
- 'QLatin1String','QSetIterator','QTextDecoder','QAbstractSlider','QDomNamedNodeMap','QLayout','QSettings',
- 'QTextDocument','QAbstractSocket','QDomNode','QLayoutItem','QSharedData','QTextDocumentFragment',
- 'QAbstractSpinBox','QDomNodeList','QLCDNumber','QSharedDataPointer','QTextEdit','QAbstractTableModel',
- 'QDomNotation','QLibrary','QShortcut','QTextEncoder','QAbstractTextDocumentLayout',
- 'QDomProcessingInstruction','QLibraryInfo','QShortcutEvent','QTextFormat','QAccessible','QDomText',
- 'QLine','QShowEvent','QTextFragment','QAccessibleBridge','QDoubleSpinBox','QLinearGradient',
- 'QSignalMapper','QTextFrame','QAccessibleBridgePlugin','QDoubleValidator','QLineEdit','QSignalSpy',
- 'QTextFrameFormat','QAccessibleEvent','QDrag','QLineF','QSize','QTextImageFormat','QAccessibleInterface',
- 'QDragEnterEvent','QLinkedList','QSizeF','QTextInlineObject','QAccessibleObject','QDragLeaveEvent',
- 'QLinkedListIterator','QSizeGrip','QTextLayout','QAccessiblePlugin','QDragMoveEvent','QLinuxFbScreen',
- 'QSizePolicy','QTextLength','QAccessibleWidget','QDropEvent','QList','QSlider','QTextLine','QAction',
- 'QDynamicPropertyChangeEvent','QListIterator','QSocketNotifier','QTextList','QActionEvent','QErrorMessage',
- 'QListView','QSortFilterProxyModel','QTextListFormat','QActionGroup','QEvent','QListWidget','QSound',
- 'QTextObject','QApplication','QEventLoop','QListWidgetItem','QSpacerItem','QTextOption','QAssistantClient',
- 'QExtensionFactory','QLocale','QSpinBox','QTextStream','QAxAggregated','QExtensionManager',
- 'QMacPasteboardMime','QSplashScreen','QTextTable','QAxBase','QFile','QMacStyle','QSplitter',
- 'QTextTableCell','QAxBindable','QFileDialog','QMainWindow','QSplitterHandle','QTextTableFormat',
- 'QAxFactory','QFileIconProvider','QMap','QSqlDatabase','QThread','QAxObject','QFileInfo','QMapIterator',
- 'QSqlDriver','QThreadStorage','QAxScript','QFileOpenEvent','QMatrix','QSqlDriverCreator','QTime',
- 'QAxScriptEngine','QFileSystemWatcher','QMenu','QSqlDriverCreatorBase','QTimeEdit','QAxScriptManager',
- 'QFlag','QMenuBar','QSqlDriverPlugin','QTimeLine','QAxWidget','QFlags','QMessageBox','QSqlError','QTimer',
- 'QBasicTimer','QFocusEvent','QMetaClassInfo','QSqlField','QTimerEvent','QBitArray','QFocusFrame',
- 'QMetaEnum','QSqlIndex','QToolBar','QBitmap','QFont','QMetaMethod','QSqlQuery','QToolBox','QBoxLayout',
- 'QFontComboBox','QMetaObject','QSqlQueryModel','QToolButton','QBrush','QFontDatabase','QMetaProperty',
- 'QSqlRecord','QToolTip','QBuffer','QFontDialog','QMetaType','QSqlRelation','QTransformedScreen',
- 'QButtonGroup','QFontInfo','QMimeData','QSqlRelationalDelegate','QTranslator','QByteArray','QFontMetrics',
- 'QMimeSource','QSqlRelationalTableModel','QTreeView','QByteArrayMatcher','QFontMetricsF','QModelIndex',
- 'QSqlResult','QTreeWidget','QCache','QFormBuilder','QMotifStyle','QSqlTableModel','QTreeWidgetItem',
- 'QCalendarWidget','QFrame','QMouseDriverFactory','QStack','QTreeWidgetItemIterator','QCDEStyle',
- 'QFSFileEngine','QMouseDriverPlugin','QStackedLayout','QUdpSocket','QChar','QFtp','QMouseEvent',
- 'QStackedWidget','QUiLoader','QCheckBox','QGenericArgument','QMoveEvent','QStandardItem','QUndoCommand',
- 'QChildEvent','QGenericReturnArgument','QMovie','QStandardItemEditorCreator','QUndoGroup',
- 'QCleanlooksStyle','QGLColormap','QMultiHash','QStandardItemModel','QUndoStack','QClipboard',
- 'QGLContext','QMultiMap','QStatusBar','QUndoView','QCloseEvent','QGLFormat','QMutableHashIterator',
- 'QStatusTipEvent','QUrl','QColor','QGLFramebufferObject','QMutableLinkedListIterator','QString',
- 'QUrlInfo','QColorDialog','QGLPixelBuffer','QMutableListIterator','QStringList','QUuid','QColormap',
- 'QGLWidget','QMutableMapIterator','QStringListModel','QValidator','QComboBox','QGradient',
- 'QMutableSetIterator','QStringMatcher','QVariant','QCommonStyle','QGraphicsEllipseItem',
- 'QMutableVectorIterator','QStyle','QVarLengthArray','QCompleter','QGraphicsItem','QMutex',
- 'QStyleFactory','QVBoxLayout','QConicalGradient','QGraphicsItemAnimation','QMutexLocker',
- 'QStyleHintReturn','QVector','QContextMenuEvent','QGraphicsItemGroup','QNetworkAddressEntry',
- 'QStyleHintReturnMask','QVectorIterator','QCopChannel','QGraphicsLineItem','QNetworkInterface',
- 'QStyleOption','QVFbScreen','QCoreApplication','QGraphicsPathItem','QNetworkProxy','QStyleOptionButton',
- 'QVNCScreen','QCursor','QGraphicsPixmapItem','QObject','QStyleOptionComboBox','QWaitCondition',
- 'QCustomRasterPaintDevice','QGraphicsPolygonItem','QObjectCleanupHandler','QStyleOptionComplex',
- 'QWhatsThis','QDataStream','QGraphicsRectItem','QPageSetupDialog','QStyleOptionDockWidget',
- 'QWhatsThisClickedEvent','QDataWidgetMapper','QGraphicsScene','QPaintDevice','QStyleOptionFocusRect',
- 'QWheelEvent','QDate','QGraphicsSceneContextMenuEvent','QPaintEngine','QStyleOptionFrame','QWidget',
- 'QDateEdit','QGraphicsSceneEvent','QPaintEngineState','QStyleOptionFrameV2','QWidgetAction','QDateTime',
- 'QGraphicsSceneHoverEvent','QPainter','QStyleOptionGraphicsItem','QWidgetItem','QDateTimeEdit',
- 'QGraphicsSceneMouseEvent','QPainterPath','QStyleOptionGroupBox','QWindowsMime','QDBusAbstractAdaptor',
- 'QGraphicsSceneWheelEvent','QPainterPathStroker','QStyleOptionHeader','QWindowsStyle',
- 'QDBusAbstractInterface','QGraphicsSimpleTextItem','QPaintEvent','QStyleOptionMenuItem',
- 'QWindowStateChangeEvent','QDBusArgument','QGraphicsSvgItem','QPair','QStyleOptionProgressBar',
- 'QWindowsXPStyle','QDBusConnection','QGraphicsTextItem','QPalette','QStyleOptionProgressBarV2',
- 'QWorkspace','QDBusConnectionInterface','QGraphicsView','QPen','QStyleOptionQ3DockWindow','QWriteLocker',
- 'QDBusError','QGridLayout','QPersistentModelIndex','QStyleOptionQ3ListView','QWSCalibratedMouseHandler',
- 'QDBusInterface','QGroupBox','QPicture','QStyleOptionQ3ListViewItem','QWSClient','QDBusMessage','QHash',
- 'QPictureFormatPlugin','QStyleOptionRubberBand','QWSEmbedWidget','QDBusObjectPath','QHashIterator',
- 'QPictureIO','QStyleOptionSizeGrip','QWSEvent','QDBusReply','QHBoxLayout','QPixmap','QStyleOptionSlider',
- 'QWSInputMethod','QDBusServer','QHeaderView','QPixmapCache','QStyleOptionSpinBox','QWSKeyboardHandler',
- 'QDBusSignature','QHelpEvent','QPlastiqueStyle','QStyleOptionTab','QWSMouseHandler','QDBusVariant',
- 'QHideEvent','QPluginLoader','QStyleOptionTabBarBase','QWSPointerCalibrationData','QDecoration',
- 'QHostAddress','QPoint','QStyleOptionTabV2','QWSScreenSaver','QDecorationFactory','QHostInfo','QPointer',
- 'QStyleOptionTabWidgetFrame','QWSServer','QDecorationPlugin','QHoverEvent','QPointF','QStyleOptionTitleBar',
- 'QWSTslibMouseHandler','QDesignerActionEditorInterface','QHttp','QPolygon','QStyleOptionToolBar','QWSWindow',
- 'QDesignerContainerExtension','QHttpHeader','QPolygonF','QStyleOptionToolBox','QWSWindowSurface',
- 'QDesignerCustomWidgetCollectionInterface','QHttpRequestHeader','QPrintDialog','QStyleOptionToolButton',
- 'QX11EmbedContainer','QDesignerCustomWidgetInterface','QHttpResponseHeader','QPrintEngine',
- 'QStyleOptionViewItem','QX11EmbedWidget','QDesignerFormEditorInterface','QIcon','QPrinter',
- 'QStyleOptionViewItemV2','QX11Info','QDesignerFormWindowCursorInterface','QIconDragEvent','QProcess',
- 'QStylePainter','QXmlAttributes','QDesignerFormWindowInterface','QIconEngine','QProgressBar',
- 'QStylePlugin','QXmlContentHandler','QDesignerFormWindowManagerInterface','QIconEnginePlugin',
- 'QProgressDialog','QSvgRenderer','QXmlDeclHandler','QDesignerMemberSheetExtension','QImage',
- 'QProxyModel','QSvgWidget','QXmlDefaultHandler','QDesignerObjectInspectorInterface','QImageIOHandler',
- 'QPushButton','QSyntaxHighlighter','QXmlDTDHandler','QDesignerPropertyEditorInterface','QImageIOPlugin',
- 'QQueue','QSysInfo','QXmlEntityResolver','QDesignerPropertySheetExtension','QImageReader','QRadialGradient',
- 'QSystemLocale','QXmlErrorHandler','QDesignerTaskMenuExtension','QImageWriter','QRadioButton',
- 'QSystemTrayIcon','QXmlInputSource','QDesignerWidgetBoxInterface','QInputContext','QRasterPaintEngine',
- 'QTabBar','QXmlLexicalHandler','QDesktopServices','QInputContextFactory','QReadLocker','QTabletEvent',
- 'QXmlLocator','QDesktopWidget','QInputContextPlugin','QReadWriteLock','QTableView','QXmlNamespaceSupport',
- 'QDial','QInputDialog','QRect','QTableWidget','QXmlParseException','QDialog','QInputEvent','QRectF',
- 'QTableWidgetItem','QXmlReader','QDialogButtonBox','QInputMethodEvent','QRegExp',
- 'QTableWidgetSelectionRange','QXmlSimpleReader'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => true,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #0000dd;',
- 4 => 'color: #0000ff;',
- 5 => 'color: #0000ee;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #ff0000;',
- 2 => 'color: #339900;',
- 'MULTI' => 'color: #ff0000; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #666666; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #666666;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #0000dd;'
- ),
- 'METHODS' => array(
- 1 => 'color: #00eeff;',
- 2 => 'color: #00eeff;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000000;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => '',
- 5 => 'http://doc.trolltech.com/4.2/{FNAME}.html'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * cpp.php
+ * -------
+ * Author: Iulian M
+ * Copyright: (c) 2006 Iulian M
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/09/27
+ *
+ * C++ language file for GeSHi, with QT extensions.
+ *
+ * CHANGES
+ * -------
+ *
+ * TODO
+ * ----
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'C++ (QT)',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
+ 'switch', 'while'
+ ),
+ 2 => array(
+ 'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
+ 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+ 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+ 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+ 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+ 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+ 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+ 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+ 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+ 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
+ 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+ 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
+ 'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
+ 'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
+ 'static_cast', 'explicit', 'friend', 'wchar_t', 'typename', 'typeid', 'class' ,
+ 'foreach','connect', 'Q_OBJECT' , 'slots' , 'signals'
+ ),
+ 3 => array(
+ 'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
+ 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+ 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+ 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
+ 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+ 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+ 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
+ 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+ 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+ 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+ 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+ 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+ 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+ 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+ 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+ 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+ 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+ 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+ 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+ 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+ ),
+ 4 => array(
+ 'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
+ 'register', 'short', 'shortint', 'signed', 'static', 'struct',
+ 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+ 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+ 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+ ),
+ 5 => array(
+ 'QAbstractButton','QDir','QIntValidator','QRegExpValidator','QTabWidget','QAbstractEventDispatcher',
+ 'QDirectPainter','QIODevice','QRegion','QTcpServer','QAbstractExtensionFactory','QDirModel',
+ 'QItemDelegate','QResizeEvent','QTcpSocket','QAbstractExtensionManager','QDockWidget',
+ 'QItemEditorCreatorBase','QResource','QTemporaryFile','QAbstractFileEngine','QDomAttr',
+ 'QItemEditorFactory','QRubberBand','QTestEventList','QAbstractFileEngineHandler','QDomCDATASection',
+ 'QItemSelection','QScreen','QTextBlock','QAbstractFormBuilder','QDomCharacterData','QItemSelectionModel',
+ 'QScreenCursor','QTextBlockFormat','QAbstractGraphicsShapeItem','QDomComment','QItemSelectionRange',
+ 'QScreenDriverFactory','QTextBlockGroup','QAbstractItemDelegate','QDomDocument','QKbdDriverFactory',
+ 'QScreenDriverPlugin','QTextBlockUserData','QAbstractItemModel','QDomDocumentFragment','QKbdDriverPlugin',
+ 'QScrollArea','QTextBrowser','QAbstractItemView','QDomDocumentType','QKeyEvent','QScrollBar',
+ 'QTextCharFormat','QAbstractListModel','QDomElement','QKeySequence','QSemaphore','QTextCodec',
+ 'QAbstractPrintDialog','QDomEntity','QLabel','QSessionManager','QTextCodecPlugin','QAbstractProxyModel',
+ 'QDomEntityReference','QLatin1Char','QSet','QTextCursor','QAbstractScrollArea','QDomImplementation',
+ 'QLatin1String','QSetIterator','QTextDecoder','QAbstractSlider','QDomNamedNodeMap','QLayout','QSettings',
+ 'QTextDocument','QAbstractSocket','QDomNode','QLayoutItem','QSharedData','QTextDocumentFragment',
+ 'QAbstractSpinBox','QDomNodeList','QLCDNumber','QSharedDataPointer','QTextEdit','QAbstractTableModel',
+ 'QDomNotation','QLibrary','QShortcut','QTextEncoder','QAbstractTextDocumentLayout',
+ 'QDomProcessingInstruction','QLibraryInfo','QShortcutEvent','QTextFormat','QAccessible','QDomText',
+ 'QLine','QShowEvent','QTextFragment','QAccessibleBridge','QDoubleSpinBox','QLinearGradient',
+ 'QSignalMapper','QTextFrame','QAccessibleBridgePlugin','QDoubleValidator','QLineEdit','QSignalSpy',
+ 'QTextFrameFormat','QAccessibleEvent','QDrag','QLineF','QSize','QTextImageFormat','QAccessibleInterface',
+ 'QDragEnterEvent','QLinkedList','QSizeF','QTextInlineObject','QAccessibleObject','QDragLeaveEvent',
+ 'QLinkedListIterator','QSizeGrip','QTextLayout','QAccessiblePlugin','QDragMoveEvent','QLinuxFbScreen',
+ 'QSizePolicy','QTextLength','QAccessibleWidget','QDropEvent','QList','QSlider','QTextLine','QAction',
+ 'QDynamicPropertyChangeEvent','QListIterator','QSocketNotifier','QTextList','QActionEvent','QErrorMessage',
+ 'QListView','QSortFilterProxyModel','QTextListFormat','QActionGroup','QEvent','QListWidget','QSound',
+ 'QTextObject','QApplication','QEventLoop','QListWidgetItem','QSpacerItem','QTextOption','QAssistantClient',
+ 'QExtensionFactory','QLocale','QSpinBox','QTextStream','QAxAggregated','QExtensionManager',
+ 'QMacPasteboardMime','QSplashScreen','QTextTable','QAxBase','QFile','QMacStyle','QSplitter',
+ 'QTextTableCell','QAxBindable','QFileDialog','QMainWindow','QSplitterHandle','QTextTableFormat',
+ 'QAxFactory','QFileIconProvider','QMap','QSqlDatabase','QThread','QAxObject','QFileInfo','QMapIterator',
+ 'QSqlDriver','QThreadStorage','QAxScript','QFileOpenEvent','QMatrix','QSqlDriverCreator','QTime',
+ 'QAxScriptEngine','QFileSystemWatcher','QMenu','QSqlDriverCreatorBase','QTimeEdit','QAxScriptManager',
+ 'QFlag','QMenuBar','QSqlDriverPlugin','QTimeLine','QAxWidget','QFlags','QMessageBox','QSqlError','QTimer',
+ 'QBasicTimer','QFocusEvent','QMetaClassInfo','QSqlField','QTimerEvent','QBitArray','QFocusFrame',
+ 'QMetaEnum','QSqlIndex','QToolBar','QBitmap','QFont','QMetaMethod','QSqlQuery','QToolBox','QBoxLayout',
+ 'QFontComboBox','QMetaObject','QSqlQueryModel','QToolButton','QBrush','QFontDatabase','QMetaProperty',
+ 'QSqlRecord','QToolTip','QBuffer','QFontDialog','QMetaType','QSqlRelation','QTransformedScreen',
+ 'QButtonGroup','QFontInfo','QMimeData','QSqlRelationalDelegate','QTranslator','QByteArray','QFontMetrics',
+ 'QMimeSource','QSqlRelationalTableModel','QTreeView','QByteArrayMatcher','QFontMetricsF','QModelIndex',
+ 'QSqlResult','QTreeWidget','QCache','QFormBuilder','QMotifStyle','QSqlTableModel','QTreeWidgetItem',
+ 'QCalendarWidget','QFrame','QMouseDriverFactory','QStack','QTreeWidgetItemIterator','QCDEStyle',
+ 'QFSFileEngine','QMouseDriverPlugin','QStackedLayout','QUdpSocket','QChar','QFtp','QMouseEvent',
+ 'QStackedWidget','QUiLoader','QCheckBox','QGenericArgument','QMoveEvent','QStandardItem','QUndoCommand',
+ 'QChildEvent','QGenericReturnArgument','QMovie','QStandardItemEditorCreator','QUndoGroup',
+ 'QCleanlooksStyle','QGLColormap','QMultiHash','QStandardItemModel','QUndoStack','QClipboard',
+ 'QGLContext','QMultiMap','QStatusBar','QUndoView','QCloseEvent','QGLFormat','QMutableHashIterator',
+ 'QStatusTipEvent','QUrl','QColor','QGLFramebufferObject','QMutableLinkedListIterator','QString',
+ 'QUrlInfo','QColorDialog','QGLPixelBuffer','QMutableListIterator','QStringList','QUuid','QColormap',
+ 'QGLWidget','QMutableMapIterator','QStringListModel','QValidator','QComboBox','QGradient',
+ 'QMutableSetIterator','QStringMatcher','QVariant','QCommonStyle','QGraphicsEllipseItem',
+ 'QMutableVectorIterator','QStyle','QVarLengthArray','QCompleter','QGraphicsItem','QMutex',
+ 'QStyleFactory','QVBoxLayout','QConicalGradient','QGraphicsItemAnimation','QMutexLocker',
+ 'QStyleHintReturn','QVector','QContextMenuEvent','QGraphicsItemGroup','QNetworkAddressEntry',
+ 'QStyleHintReturnMask','QVectorIterator','QCopChannel','QGraphicsLineItem','QNetworkInterface',
+ 'QStyleOption','QVFbScreen','QCoreApplication','QGraphicsPathItem','QNetworkProxy','QStyleOptionButton',
+ 'QVNCScreen','QCursor','QGraphicsPixmapItem','QObject','QStyleOptionComboBox','QWaitCondition',
+ 'QCustomRasterPaintDevice','QGraphicsPolygonItem','QObjectCleanupHandler','QStyleOptionComplex',
+ 'QWhatsThis','QDataStream','QGraphicsRectItem','QPageSetupDialog','QStyleOptionDockWidget',
+ 'QWhatsThisClickedEvent','QDataWidgetMapper','QGraphicsScene','QPaintDevice','QStyleOptionFocusRect',
+ 'QWheelEvent','QDate','QGraphicsSceneContextMenuEvent','QPaintEngine','QStyleOptionFrame','QWidget',
+ 'QDateEdit','QGraphicsSceneEvent','QPaintEngineState','QStyleOptionFrameV2','QWidgetAction','QDateTime',
+ 'QGraphicsSceneHoverEvent','QPainter','QStyleOptionGraphicsItem','QWidgetItem','QDateTimeEdit',
+ 'QGraphicsSceneMouseEvent','QPainterPath','QStyleOptionGroupBox','QWindowsMime','QDBusAbstractAdaptor',
+ 'QGraphicsSceneWheelEvent','QPainterPathStroker','QStyleOptionHeader','QWindowsStyle',
+ 'QDBusAbstractInterface','QGraphicsSimpleTextItem','QPaintEvent','QStyleOptionMenuItem',
+ 'QWindowStateChangeEvent','QDBusArgument','QGraphicsSvgItem','QPair','QStyleOptionProgressBar',
+ 'QWindowsXPStyle','QDBusConnection','QGraphicsTextItem','QPalette','QStyleOptionProgressBarV2',
+ 'QWorkspace','QDBusConnectionInterface','QGraphicsView','QPen','QStyleOptionQ3DockWindow','QWriteLocker',
+ 'QDBusError','QGridLayout','QPersistentModelIndex','QStyleOptionQ3ListView','QWSCalibratedMouseHandler',
+ 'QDBusInterface','QGroupBox','QPicture','QStyleOptionQ3ListViewItem','QWSClient','QDBusMessage','QHash',
+ 'QPictureFormatPlugin','QStyleOptionRubberBand','QWSEmbedWidget','QDBusObjectPath','QHashIterator',
+ 'QPictureIO','QStyleOptionSizeGrip','QWSEvent','QDBusReply','QHBoxLayout','QPixmap','QStyleOptionSlider',
+ 'QWSInputMethod','QDBusServer','QHeaderView','QPixmapCache','QStyleOptionSpinBox','QWSKeyboardHandler',
+ 'QDBusSignature','QHelpEvent','QPlastiqueStyle','QStyleOptionTab','QWSMouseHandler','QDBusVariant',
+ 'QHideEvent','QPluginLoader','QStyleOptionTabBarBase','QWSPointerCalibrationData','QDecoration',
+ 'QHostAddress','QPoint','QStyleOptionTabV2','QWSScreenSaver','QDecorationFactory','QHostInfo','QPointer',
+ 'QStyleOptionTabWidgetFrame','QWSServer','QDecorationPlugin','QHoverEvent','QPointF','QStyleOptionTitleBar',
+ 'QWSTslibMouseHandler','QDesignerActionEditorInterface','QHttp','QPolygon','QStyleOptionToolBar','QWSWindow',
+ 'QDesignerContainerExtension','QHttpHeader','QPolygonF','QStyleOptionToolBox','QWSWindowSurface',
+ 'QDesignerCustomWidgetCollectionInterface','QHttpRequestHeader','QPrintDialog','QStyleOptionToolButton',
+ 'QX11EmbedContainer','QDesignerCustomWidgetInterface','QHttpResponseHeader','QPrintEngine',
+ 'QStyleOptionViewItem','QX11EmbedWidget','QDesignerFormEditorInterface','QIcon','QPrinter',
+ 'QStyleOptionViewItemV2','QX11Info','QDesignerFormWindowCursorInterface','QIconDragEvent','QProcess',
+ 'QStylePainter','QXmlAttributes','QDesignerFormWindowInterface','QIconEngine','QProgressBar',
+ 'QStylePlugin','QXmlContentHandler','QDesignerFormWindowManagerInterface','QIconEnginePlugin',
+ 'QProgressDialog','QSvgRenderer','QXmlDeclHandler','QDesignerMemberSheetExtension','QImage',
+ 'QProxyModel','QSvgWidget','QXmlDefaultHandler','QDesignerObjectInspectorInterface','QImageIOHandler',
+ 'QPushButton','QSyntaxHighlighter','QXmlDTDHandler','QDesignerPropertyEditorInterface','QImageIOPlugin',
+ 'QQueue','QSysInfo','QXmlEntityResolver','QDesignerPropertySheetExtension','QImageReader','QRadialGradient',
+ 'QSystemLocale','QXmlErrorHandler','QDesignerTaskMenuExtension','QImageWriter','QRadioButton',
+ 'QSystemTrayIcon','QXmlInputSource','QDesignerWidgetBoxInterface','QInputContext','QRasterPaintEngine',
+ 'QTabBar','QXmlLexicalHandler','QDesktopServices','QInputContextFactory','QReadLocker','QTabletEvent',
+ 'QXmlLocator','QDesktopWidget','QInputContextPlugin','QReadWriteLock','QTableView','QXmlNamespaceSupport',
+ 'QDial','QInputDialog','QRect','QTableWidget','QXmlParseException','QDialog','QInputEvent','QRectF',
+ 'QTableWidgetItem','QXmlReader','QDialogButtonBox','QInputMethodEvent','QRegExp',
+ 'QTableWidgetSelectionRange','QXmlSimpleReader'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => true,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #0000dd;',
+ 4 => 'color: #0000ff;',
+ 5 => 'color: #0000ee;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #ff0000;',
+ 2 => 'color: #339900;',
+ 'MULTI' => 'color: #ff0000; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #666666; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #666666;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #0000dd;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #00eeff;',
+ 2 => 'color: #00eeff;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => 'http://doc.trolltech.com/4.2/{FNAME}.html'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/cpp.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/cpp.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/cpp.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,185 +1,185 @@
-<?php
-/*************************************************************************************
- * cpp.php
- * -------
- * Author: Dennis Bayer (Dennis.Bayer at mnifh-giessen.de)
- * Contributors:
- * - M. Uli Kusterer (witness.of.teachtext at gmx.net)
- * - Jack Lloyd (lloyd at randombit.net)
- * Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/09/27
- *
- * C++ language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/XX/XX (1.0.2)
- * - Added several new keywords (Jack Lloyd)
- * 2004/11/27 (1.0.1)
- * - Added StdCLib function and constant names, changed color scheme to
- * a cleaner one. (M. Uli Kusterer)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'C++',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
- 'switch', 'throw', 'while'
- ),
- 2 => array(
- 'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',
- 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
- 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
- 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
- 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
- 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
- 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
- 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
- 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
- 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
- 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
- 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
- 'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
- 'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
- 'static_cast', 'explicit', 'friend', 'wchar_t', 'typename', 'typeid', 'class'
- ),
- 3 => array(
- 'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
- 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
- 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
- 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
- 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
- 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
- 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
- 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
- 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
- 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
- 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
- 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
- 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
- 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
- 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
- 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
- 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
- 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
- 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
- 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
- ),
- 4 => array(
- 'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
- 'register', 'short', 'shortint', 'signed', 'static', 'struct',
- 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
- 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
- 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
- ),
- ),
- 'SYMBOLS' => array(
- 0 => array('(', ')', '{', '}', '[', ']'),
- 1 => array('<', '>','='),
- 2 => array('+', '-', '*', '/', '%'),
- 3 => array('!', '^', '&', '|'),
- 4 => array(':')
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #0000dd;',
- 4 => 'color: #0000ff;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #666666;',
- 2 => 'color: #339900;',
- 'MULTI' => 'color: #ff0000; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #666666; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #008000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #0000dd;'
- ),
- 'METHODS' => array(
- 1 => 'color: #00eeff;',
- 2 => 'color: #00eeff;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #008000;',
- 1 => 'color: #000080;',
- 2 => 'color: #000040;',
- 3 => 'color: #000040;',
- 4 => 'color: #008080;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4,
- 'PARSER_CONTROL' => array(
- 'KEYWORDS' => array(
- 'DISALLOWED_BEFORE' => "a-zA-Z0-9\$_\|\#>|^",
- 'DISALLOWED_AFTER' => "a-zA-Z0-9_<\|%\\-"
- )
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * cpp.php
+ * -------
+ * Author: Dennis Bayer (Dennis.Bayer at mnifh-giessen.de)
+ * Contributors:
+ * - M. Uli Kusterer (witness.of.teachtext at gmx.net)
+ * - Jack Lloyd (lloyd at randombit.net)
+ * Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/09/27
+ *
+ * C++ language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.2)
+ * - Added several new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.1)
+ * - Added StdCLib function and constant names, changed color scheme to
+ * a cleaner one. (M. Uli Kusterer)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'C++',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
+ 'switch', 'throw', 'while'
+ ),
+ 2 => array(
+ 'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',
+ 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+ 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+ 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+ 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+ 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+ 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+ 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+ 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+ 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
+ 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+ 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
+ 'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
+ 'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
+ 'static_cast', 'explicit', 'friend', 'wchar_t', 'typename', 'typeid', 'class'
+ ),
+ 3 => array(
+ 'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
+ 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+ 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+ 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
+ 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+ 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+ 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
+ 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+ 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+ 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+ 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+ 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+ 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+ 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+ 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+ 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+ 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+ 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+ 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+ 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+ ),
+ 4 => array(
+ 'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
+ 'register', 'short', 'shortint', 'signed', 'static', 'struct',
+ 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+ 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+ 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+ ),
+ ),
+ 'SYMBOLS' => array(
+ 0 => array('(', ')', '{', '}', '[', ']'),
+ 1 => array('<', '>','='),
+ 2 => array('+', '-', '*', '/', '%'),
+ 3 => array('!', '^', '&', '|'),
+ 4 => array(':')
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #0000dd;',
+ 4 => 'color: #0000ff;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #666666;',
+ 2 => 'color: #339900;',
+ 'MULTI' => 'color: #ff0000; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #666666; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #0000dd;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #00eeff;',
+ 2 => 'color: #00eeff;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #008000;',
+ 1 => 'color: #000080;',
+ 2 => 'color: #000040;',
+ 3 => 'color: #000040;',
+ 4 => 'color: #008080;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4,
+ 'PARSER_CONTROL' => array(
+ 'KEYWORDS' => array(
+ 'DISALLOWED_BEFORE' => "a-zA-Z0-9\$_\|\#>|^",
+ 'DISALLOWED_AFTER' => "a-zA-Z0-9_<\|%\\-"
+ )
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/csharp.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/csharp.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/csharp.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,238 +1,238 @@
-<?php
-/*************************************************************************************
- * csharp.php
- * ----------
- * Author: Alan Juden (alan at judenware.org)
- * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * C# language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/01/05 (1.0.1)
- * - Used hardquote support for @"..." strings (Cliff Stanford)
- * 2004/11/27 (1.0.0)
- * - Initial release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
- $language_data = array (
- 'LANG_NAME' => 'C#',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'HARDQUOTE' => array('@"', '"'),
- 'HARDESCAPE' => array('""'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'as', 'auto', 'base', 'break', 'case', 'catch', 'const', 'continue',
- 'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',
- 'finally', 'fixed', 'for', 'foreach', 'goto', 'if', 'implicit',
- 'in', 'internal', 'lock', 'namespace', 'null', 'operator', 'out',
- 'override', 'params', 'private', 'protected', 'public', 'readonly',
- 'ref', 'return', 'sealed', 'stackalloc', 'static', 'switch', 'this',
- 'throw', 'true', 'try', 'unsafe', 'using', 'virtual', 'void', 'while'
- ),
- 2 => array(
- '#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',
- '#line', '#region', '#undef', '#warning'
- ),
- 3 => array(
- 'checked', 'is', 'new', 'sizeof', 'typeof', 'unchecked'
- ),
- 4 => array(
- 'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',
- 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte',
- 'short', 'string', 'struct', 'uint', 'ulong', 'ushort'
- ),
- 5 => array(
- 'Microsoft.Win32',
- 'System',
- 'System.CodeDOM',
- 'System.CodeDOM.Compiler',
- 'System.Collections',
- 'System.Collections.Bases',
- 'System.ComponentModel',
- 'System.ComponentModel.Design',
- 'System.ComponentModel.Design.CodeModel',
- 'System.Configuration',
- 'System.Configuration.Assemblies',
- 'System.Configuration.Core',
- 'System.Configuration.Install',
- 'System.Configuration.Interceptors',
- 'System.Configuration.Schema',
- 'System.Configuration.Web',
- 'System.Core',
- 'System.Data',
- 'System.Data.ADO',
- 'System.Data.Design',
- 'System.Data.Internal',
- 'System.Data.SQL',
- 'System.Data.SQLTypes',
- 'System.Data.XML',
- 'System.Data.XML.DOM',
- 'System.Data.XML.XPath',
- 'System.Data.XML.XSLT',
- 'System.Diagnostics',
- 'System.Diagnostics.SymbolStore',
- 'System.DirectoryServices',
- 'System.Drawing',
- 'System.Drawing.Design',
- 'System.Drawing.Drawing2D',
- 'System.Drawing.Imaging',
- 'System.Drawing.Printing',
- 'System.Drawing.Text',
- 'System.Globalization',
- 'System.IO',
- 'System.IO.IsolatedStorage',
- 'System.Messaging',
- 'System.Net',
- 'System.Net.Sockets',
- 'System.NewXml',
- 'System.NewXml.XPath',
- 'System.NewXml.Xsl',
- 'System.Reflection',
- 'System.Reflection.Emit',
- 'System.Resources',
- 'System.Runtime.InteropServices',
- 'System.Runtime.InteropServices.Expando',
- 'System.Runtime.Remoting',
- 'System.Runtime.Serialization',
- 'System.Runtime.Serialization.Formatters',
- 'System.Runtime.Serialization.Formatters.Binary',
- 'System.Security',
- 'System.Security.Cryptography',
- 'System.Security.Cryptography.X509Certificates',
- 'System.Security.Permissions',
- 'System.Security.Policy',
- 'System.Security.Principal',
- 'System.ServiceProcess',
- 'System.Text',
- 'System.Text.RegularExpressions',
- 'System.Threading',
- 'System.Timers',
- 'System.Web',
- 'System.Web.Caching',
- 'System.Web.Configuration',
- 'System.Web.Security',
- 'System.Web.Services',
- 'System.Web.Services.Description',
- 'System.Web.Services.Discovery',
- 'System.Web.Services.Protocols',
- 'System.Web.UI',
- 'System.Web.UI.Design',
- 'System.Web.UI.Design.WebControls',
- 'System.Web.UI.Design.WebControls.ListControls',
- 'System.Web.UI.HtmlControls',
- 'System.Web.UI.WebControls',
- 'System.WinForms',
- 'System.WinForms.ComponentModel',
- 'System.WinForms.Design',
- 'System.Xml',
- 'System.Xml.Serialization',
- 'System.Xml.Serialization.Code',
- 'System.Xml.Serialization.Schema'
- ),
- ),
- 'SYMBOLS' => array(
- '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
- '(', ')', '{', '}', '[', ']'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0600FF;',
- 2 => 'color: #FF8000; font-weight: bold;',
- 3 => 'color: #008000;',
- 4 => 'color: #FF0000;',
- 5 => 'color: #000000;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008080; font-style: italic;',
- 2 => 'color: #008080;',
- 'MULTI' => 'color: #008080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #008080; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #808080;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #0000FF;',
- 2 => 'color: #0000FF;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #008000;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4,
- 'PARSER_CONTROL' => array(
- 'KEYWORDS' => array(
- 'DISALLOWED_BEFORE' => "a-zA-Z0-9\$_\|\#>|^",
- 'DISALLOWED_AFTER' => "a-zA-Z0-9_<\|%\\-"
- )
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * csharp.php
+ * ----------
+ * Author: Alan Juden (alan at judenware.org)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * C# language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/01/05 (1.0.1)
+ * - Used hardquote support for @"..." strings (Cliff Stanford)
+ * 2004/11/27 (1.0.0)
+ * - Initial release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+ 'LANG_NAME' => 'C#',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'HARDQUOTE' => array('@"', '"'),
+ 'HARDESCAPE' => array('""'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'as', 'auto', 'base', 'break', 'case', 'catch', 'const', 'continue',
+ 'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',
+ 'finally', 'fixed', 'for', 'foreach', 'goto', 'if', 'implicit',
+ 'in', 'internal', 'lock', 'namespace', 'null', 'operator', 'out',
+ 'override', 'params', 'private', 'protected', 'public', 'readonly',
+ 'ref', 'return', 'sealed', 'stackalloc', 'static', 'switch', 'this',
+ 'throw', 'true', 'try', 'unsafe', 'using', 'virtual', 'void', 'while'
+ ),
+ 2 => array(
+ '#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',
+ '#line', '#region', '#undef', '#warning'
+ ),
+ 3 => array(
+ 'checked', 'is', 'new', 'sizeof', 'typeof', 'unchecked'
+ ),
+ 4 => array(
+ 'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',
+ 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte',
+ 'short', 'string', 'struct', 'uint', 'ulong', 'ushort'
+ ),
+ 5 => array(
+ 'Microsoft.Win32',
+ 'System',
+ 'System.CodeDOM',
+ 'System.CodeDOM.Compiler',
+ 'System.Collections',
+ 'System.Collections.Bases',
+ 'System.ComponentModel',
+ 'System.ComponentModel.Design',
+ 'System.ComponentModel.Design.CodeModel',
+ 'System.Configuration',
+ 'System.Configuration.Assemblies',
+ 'System.Configuration.Core',
+ 'System.Configuration.Install',
+ 'System.Configuration.Interceptors',
+ 'System.Configuration.Schema',
+ 'System.Configuration.Web',
+ 'System.Core',
+ 'System.Data',
+ 'System.Data.ADO',
+ 'System.Data.Design',
+ 'System.Data.Internal',
+ 'System.Data.SQL',
+ 'System.Data.SQLTypes',
+ 'System.Data.XML',
+ 'System.Data.XML.DOM',
+ 'System.Data.XML.XPath',
+ 'System.Data.XML.XSLT',
+ 'System.Diagnostics',
+ 'System.Diagnostics.SymbolStore',
+ 'System.DirectoryServices',
+ 'System.Drawing',
+ 'System.Drawing.Design',
+ 'System.Drawing.Drawing2D',
+ 'System.Drawing.Imaging',
+ 'System.Drawing.Printing',
+ 'System.Drawing.Text',
+ 'System.Globalization',
+ 'System.IO',
+ 'System.IO.IsolatedStorage',
+ 'System.Messaging',
+ 'System.Net',
+ 'System.Net.Sockets',
+ 'System.NewXml',
+ 'System.NewXml.XPath',
+ 'System.NewXml.Xsl',
+ 'System.Reflection',
+ 'System.Reflection.Emit',
+ 'System.Resources',
+ 'System.Runtime.InteropServices',
+ 'System.Runtime.InteropServices.Expando',
+ 'System.Runtime.Remoting',
+ 'System.Runtime.Serialization',
+ 'System.Runtime.Serialization.Formatters',
+ 'System.Runtime.Serialization.Formatters.Binary',
+ 'System.Security',
+ 'System.Security.Cryptography',
+ 'System.Security.Cryptography.X509Certificates',
+ 'System.Security.Permissions',
+ 'System.Security.Policy',
+ 'System.Security.Principal',
+ 'System.ServiceProcess',
+ 'System.Text',
+ 'System.Text.RegularExpressions',
+ 'System.Threading',
+ 'System.Timers',
+ 'System.Web',
+ 'System.Web.Caching',
+ 'System.Web.Configuration',
+ 'System.Web.Security',
+ 'System.Web.Services',
+ 'System.Web.Services.Description',
+ 'System.Web.Services.Discovery',
+ 'System.Web.Services.Protocols',
+ 'System.Web.UI',
+ 'System.Web.UI.Design',
+ 'System.Web.UI.Design.WebControls',
+ 'System.Web.UI.Design.WebControls.ListControls',
+ 'System.Web.UI.HtmlControls',
+ 'System.Web.UI.WebControls',
+ 'System.WinForms',
+ 'System.WinForms.ComponentModel',
+ 'System.WinForms.Design',
+ 'System.Xml',
+ 'System.Xml.Serialization',
+ 'System.Xml.Serialization.Code',
+ 'System.Xml.Serialization.Schema'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
+ '(', ')', '{', '}', '[', ']'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0600FF;',
+ 2 => 'color: #FF8000; font-weight: bold;',
+ 3 => 'color: #008000;',
+ 4 => 'color: #FF0000;',
+ 5 => 'color: #000000;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008080; font-style: italic;',
+ 2 => 'color: #008080;',
+ 'MULTI' => 'color: #008080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #008080; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #808080;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #0000FF;',
+ 2 => 'color: #0000FF;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4,
+ 'PARSER_CONTROL' => array(
+ 'KEYWORDS' => array(
+ 'DISALLOWED_BEFORE' => "a-zA-Z0-9\$_\|\#>|^",
+ 'DISALLOWED_AFTER' => "a-zA-Z0-9_<\|%\\-"
+ )
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/css.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/css.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/css.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,208 +1,208 @@
-<?php
-/*************************************************************************************
- * css.php
- * -------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/18
- *
- * CSS language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.2)
- * - Changed regexps to catch "-" symbols
- * - Added support for URLs
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Improve or drop regexps for class/id/psuedoclass highlighting
- * * Re-look at keywords - possibly to make several CSS language
- * files, all with different versions of CSS in them
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-
-$language_data = array (
- 'LANG_NAME' => 'CSS',
- 'COMMENT_SINGLE' => array(1 => '@'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"', "'"),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'aqua', 'azimuth', 'background-attachment', 'background-color',
- 'background-image', 'background-position', 'background-repeat',
- 'background', 'black', 'blue', 'border-bottom-color',
- 'border-bottom-style', 'border-bottom-width', 'border-left-color',
- 'border-left-style', 'border-left-width', 'border-right',
- 'border-right-color', 'border-right-style', 'border-right-width',
- 'border-top-color', 'border-top-style',
- 'border-top-width','border-bottom', 'border-collapse',
- 'border-left', 'border-width', 'border-color', 'border-spacing',
- 'border-style', 'border-top', 'border', 'caption-side', 'clear',
- 'clip', 'color', 'content', 'counter-increment', 'counter-reset',
- 'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display',
- 'elevation', 'empty-cells', 'float', 'font-family', 'font-size',
- 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant',
- 'font-weight', 'font', 'line-height', 'letter-spacing',
- 'list-style', 'list-style-image', 'list-style-position',
- 'list-style-type', 'margin-bottom', 'margin-left', 'margin-right',
- 'margin-top', 'margin', 'marker-offset', 'marks', 'max-height',
- 'max-width', 'min-height', 'min-width', 'orphans', 'outline',
- 'outline-color', 'outline-style', 'outline-width', 'overflow',
- 'padding-bottom', 'padding-left', 'padding-right', 'padding-top',
- 'padding', 'page', 'page-break-after', 'page-break-before',
- 'page-break-inside', 'pause-after', 'pause-before', 'pause',
- 'pitch', 'pitch-range', 'play-during', 'position', 'quotes',
- 'richness', 'right', 'size', 'speak-header', 'speak-numeral',
- 'speak-punctuation', 'speak', 'speech-rate', 'stress',
- 'table-layout', 'text-align', 'text-decoration', 'text-indent',
- 'text-shadow', 'text-transform', 'top', 'unicode-bidi',
- 'vertical-align', 'visibility', 'voice-family', 'volume',
- 'white-space', 'widows', 'width', 'word-spacing', 'z-index',
- 'bottom', 'left', 'height'
- ),
- 2 => array(
- 'above', 'absolute', 'always', 'armenian', 'aural', 'auto',
- 'avoid', 'baseline', 'behind', 'below', 'bidi-override', 'blink',
- 'block', 'bold', 'bolder', 'both', 'capitalize', 'center-left',
- 'center-right', 'center', 'circle', 'cjk-ideographic',
- 'close-quote', 'collapse', 'condensed', 'continuous', 'crop',
- 'crosshair', 'cross', 'cursive', 'dashed', 'decimal-leading-zero',
- 'decimal', 'default', 'digits', 'disc', 'dotted', 'double',
- 'e-resize', 'embed', 'extra-condensed', 'extra-expanded',
- 'expanded', 'fantasy', 'far-left', 'far-right', 'faster', 'fast',
- 'fixed', 'fuchsia', 'georgian', 'gray', 'green', 'groove',
- 'hebrew', 'help', 'hidden', 'hide', 'higher', 'high',
- 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table',
- 'inline', 'inset', 'inside', 'invert', 'italic', 'justify',
- 'katakana-iroha', 'katakana', 'landscape', 'larger', 'large',
- 'left-side', 'leftwards', 'level', 'lighter', 'lime',
- 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek',
- 'lower-roman', 'lowercase', 'ltr', 'lower', 'low', 'maroon',
- 'medium', 'message-box', 'middle', 'mix', 'monospace', 'n-resize',
- 'narrower', 'navy', 'ne-resize', 'no-close-quote',
- 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap',
- 'nw-resize', 'oblique', 'olive', 'once', 'open-quote', 'outset',
- 'outside', 'overline', 'pointer', 'portrait', 'purple', 'px',
- 'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb',
- 'ridge', 'right-side', 'rightwards', 's-resize', 'sans-serif',
- 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded',
- 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower',
- 'small-caps', 'small-caption', 'smaller', 'soft', 'solid',
- 'spell-out', 'square', 'static', 'status-bar', 'super',
- 'sw-resize', 'table-caption', 'table-cell', 'table-column',
- 'table-column-group', 'table-footer-group', 'table-header-group',
- 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom',
- 'text-top', 'thick', 'thin', 'transparent', 'ultra-condensed',
- 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin',
- 'upper-roman', 'uppercase', 'url', 'visible', 'w-resize', 'wait',
- 'white', 'wider', 'x-fast', 'x-high', 'x-large', 'x-loud',
- 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small', 'yellow',
- 'yes'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', ':', ';'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => true,
- 2 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000000; font-weight: bold;',
- 2 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #a1a100;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- 0 => 'color: #cc00cc;',
- 1 => 'color: #6666ff;',
- 2 => 'color: #3333ff;',
- 3 => 'color: #933;',
- 4 => 'color: #933;',
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '\#[a-zA-Z0-9\-_]+',
- 1 => '\.[a-zA-Z0-9\-_]+',
- 2 => ':[a-zA-Z0-9\-]+',
- 3 => '(\d+|(\d*\.\d+))(em|ex|pt|px|cm|in|%)',
- 4 => array(
- GESHI_SEARCH => '(url\()([^)]+)(\))',
- GESHI_REPLACE => '\\2',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3',
- GESHI_MODIFIERS => 'si'
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4
-);
-
-if (isset($this) && is_a($this, 'GeSHi')) {
- $language_data['STYLES']['NUMBERS'][0] = $language_data['STYLES']['REGEXPS'][3];
-}
-
-?>
+<?php
+/*************************************************************************************
+ * css.php
+ * -------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/18
+ *
+ * CSS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ * - Changed regexps to catch "-" symbols
+ * - Added support for URLs
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Improve or drop regexps for class/id/psuedoclass highlighting
+ * * Re-look at keywords - possibly to make several CSS language
+ * files, all with different versions of CSS in them
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+
+$language_data = array (
+ 'LANG_NAME' => 'CSS',
+ 'COMMENT_SINGLE' => array(1 => '@'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"', "'"),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'aqua', 'azimuth', 'background-attachment', 'background-color',
+ 'background-image', 'background-position', 'background-repeat',
+ 'background', 'black', 'blue', 'border-bottom-color',
+ 'border-bottom-style', 'border-bottom-width', 'border-left-color',
+ 'border-left-style', 'border-left-width', 'border-right',
+ 'border-right-color', 'border-right-style', 'border-right-width',
+ 'border-top-color', 'border-top-style',
+ 'border-top-width','border-bottom', 'border-collapse',
+ 'border-left', 'border-width', 'border-color', 'border-spacing',
+ 'border-style', 'border-top', 'border', 'caption-side', 'clear',
+ 'clip', 'color', 'content', 'counter-increment', 'counter-reset',
+ 'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display',
+ 'elevation', 'empty-cells', 'float', 'font-family', 'font-size',
+ 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant',
+ 'font-weight', 'font', 'line-height', 'letter-spacing',
+ 'list-style', 'list-style-image', 'list-style-position',
+ 'list-style-type', 'margin-bottom', 'margin-left', 'margin-right',
+ 'margin-top', 'margin', 'marker-offset', 'marks', 'max-height',
+ 'max-width', 'min-height', 'min-width', 'orphans', 'outline',
+ 'outline-color', 'outline-style', 'outline-width', 'overflow',
+ 'padding-bottom', 'padding-left', 'padding-right', 'padding-top',
+ 'padding', 'page', 'page-break-after', 'page-break-before',
+ 'page-break-inside', 'pause-after', 'pause-before', 'pause',
+ 'pitch', 'pitch-range', 'play-during', 'position', 'quotes',
+ 'richness', 'right', 'size', 'speak-header', 'speak-numeral',
+ 'speak-punctuation', 'speak', 'speech-rate', 'stress',
+ 'table-layout', 'text-align', 'text-decoration', 'text-indent',
+ 'text-shadow', 'text-transform', 'top', 'unicode-bidi',
+ 'vertical-align', 'visibility', 'voice-family', 'volume',
+ 'white-space', 'widows', 'width', 'word-spacing', 'z-index',
+ 'bottom', 'left', 'height'
+ ),
+ 2 => array(
+ 'above', 'absolute', 'always', 'armenian', 'aural', 'auto',
+ 'avoid', 'baseline', 'behind', 'below', 'bidi-override', 'blink',
+ 'block', 'bold', 'bolder', 'both', 'capitalize', 'center-left',
+ 'center-right', 'center', 'circle', 'cjk-ideographic',
+ 'close-quote', 'collapse', 'condensed', 'continuous', 'crop',
+ 'crosshair', 'cross', 'cursive', 'dashed', 'decimal-leading-zero',
+ 'decimal', 'default', 'digits', 'disc', 'dotted', 'double',
+ 'e-resize', 'embed', 'extra-condensed', 'extra-expanded',
+ 'expanded', 'fantasy', 'far-left', 'far-right', 'faster', 'fast',
+ 'fixed', 'fuchsia', 'georgian', 'gray', 'green', 'groove',
+ 'hebrew', 'help', 'hidden', 'hide', 'higher', 'high',
+ 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table',
+ 'inline', 'inset', 'inside', 'invert', 'italic', 'justify',
+ 'katakana-iroha', 'katakana', 'landscape', 'larger', 'large',
+ 'left-side', 'leftwards', 'level', 'lighter', 'lime',
+ 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek',
+ 'lower-roman', 'lowercase', 'ltr', 'lower', 'low', 'maroon',
+ 'medium', 'message-box', 'middle', 'mix', 'monospace', 'n-resize',
+ 'narrower', 'navy', 'ne-resize', 'no-close-quote',
+ 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap',
+ 'nw-resize', 'oblique', 'olive', 'once', 'open-quote', 'outset',
+ 'outside', 'overline', 'pointer', 'portrait', 'purple', 'px',
+ 'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb',
+ 'ridge', 'right-side', 'rightwards', 's-resize', 'sans-serif',
+ 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded',
+ 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower',
+ 'small-caps', 'small-caption', 'smaller', 'soft', 'solid',
+ 'spell-out', 'square', 'static', 'status-bar', 'super',
+ 'sw-resize', 'table-caption', 'table-cell', 'table-column',
+ 'table-column-group', 'table-footer-group', 'table-header-group',
+ 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom',
+ 'text-top', 'thick', 'thin', 'transparent', 'ultra-condensed',
+ 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin',
+ 'upper-roman', 'uppercase', 'url', 'visible', 'w-resize', 'wait',
+ 'white', 'wider', 'x-fast', 'x-high', 'x-large', 'x-loud',
+ 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small', 'yellow',
+ 'yes'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', ':', ';'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => true,
+ 2 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000000; font-weight: bold;',
+ 2 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #a1a100;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #cc00cc;',
+ 1 => 'color: #6666ff;',
+ 2 => 'color: #3333ff;',
+ 3 => 'color: #933;',
+ 4 => 'color: #933;',
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '\#[a-zA-Z0-9\-_]+',
+ 1 => '\.[a-zA-Z0-9\-_]+',
+ 2 => ':[a-zA-Z0-9\-]+',
+ 3 => '(\d+|(\d*\.\d+))(em|ex|pt|px|cm|in|%)',
+ 4 => array(
+ GESHI_SEARCH => '(url\()([^)]+)(\))',
+ GESHI_REPLACE => '\\2',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3',
+ GESHI_MODIFIERS => 'si'
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+if (isset($this) && is_a($this, 'GeSHi')) {
+ $language_data['STYLES']['NUMBERS'][0] = $language_data['STYLES']['REGEXPS'][3];
+}
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/d.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/d.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/d.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,285 +1,285 @@
-<?php
-/*************************************************************************************
- * d.php
- * -----
- * Author: Thomas Kuehne (thomas at kuehne.cn)
- * Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/)
- * Release Version: 1.0.7.21
- * Date Started: 2005/04/22
- *
- * D language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/04/22 (0.0.2)
- * - added _d_* and sizeof/ptrdiff_t
- * 2005/04/20 (0.0.1)
- * - First release
- *
- * TODO (updated 2005/04/22)
- * -------------------------
- * * nested comments
- * * correct handling of r"" and ``
- * * correct handling of ... and ..
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'D',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"', "'", '`'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'while',
- 'switch',
- 'if',
- 'foreach',
- 'for',
- 'goto',
- 'return',
- 'else',
- 'do',
- 'case',
- 'continue',
- 'break'
- ),
- 2 => array(
- 'with',
- 'union',
- 'typeof',
- 'typeid',
- 'typedef',
- 'try',
- 'true',
- 'throw',
- 'this',
- 'super',
- 'pragma',
- 'out',
- 'null',
- 'new',
- 'module',
- 'mixin',
- 'is',
- 'invariant',
- 'interface',
- 'inout',
- 'in',
- 'import',
- 'function',
- 'finally',
- 'false',
- 'extern',
- 'delete',
- 'delegate',
- 'default',
- 'catch',
- 'cast',
- 'body',
- 'assert',
- 'asm',
- 'alias'
- ),
- 3 => array(
- 'TypeInfo',
- 'SwitchError',
- 'OutOfMemoryException',
- 'Object',
- 'ModuleInfo',
- 'Interface',
- 'Exception',
- 'Error',
- 'ClassInfo',
- 'ArrayBoundsError',
- 'AssertError',
- '_d_throw',
- '_d_switch_ustring',
- '_d_switch_string',
- '_d_switch_dstring',
- '_d_OutOfMemory',
- '_d_obj_eq',
- '_d_obj_cmp',
- '_d_newclass',
- '_d_newbitarray',
- '_d_newarrayi',
- '_d_new',
- '_d_monitorrelease',
- '_d_monitor_prolog',
- '_d_monitor_handler',
- '_d_monitorexit',
- '_d_monitor_epilog',
- '_d_monitorenter',
- '_d_local_unwind',
- '_d_isbaseof2',
- '_d_isbaseof',
- '_d_invariant',
- '_d_interface_vtbl',
- '_d_interface_cast',
- '_d_framehandler',
- '_d_exception_filter',
- '_d_exception',
- '_d_dynamic_cast',
- '_d_delmemory',
- '_d_delinterface',
- '_d_delclass',
- '_d_delarray',
- '_d_criticalexit',
- '_d_criticalenter',
- '_d_create_exception_object',
- '_d_callfinalizer',
- '_d_arraysetlengthb',
- '_d_arraysetlength',
- '_d_arraysetbit2',
- '_d_arraysetbit',
- '_d_arraycopybit',
- '_d_arraycopy',
- '_d_arraycatn',
- '_d_arraycatb',
- '_d_arraycat',
- '_d_arraycast_frombit',
- '_d_arraycast',
- '_d_arrayappendcb',
- '_d_arrayappendc',
- '_d_arrayappendb',
- '_d_arrayappend',
- ),
- 4 => array(
- 'wchar',
- 'volatile',
- 'void',
- 'version',
- 'ushort',
- 'unittest',
- 'ulong',
- 'uint',
- 'ucent',
- 'ubyte',
- 'template',
- 'struct',
- 'static',
- 'synchronized',
- 'size_t',
- 'short',
- 'real',
- 'public',
- 'protected',
- 'private',
- 'ptrdiff_t',
- 'package',
- 'override',
- 'long',
- 'int',
- 'ireal',
- 'ifloat',
- 'idouble',
- 'float',
- 'final',
- 'export',
- 'enum',
- 'double',
- 'deprecated',
- 'debug',
- 'dchar',
- 'creal',
- 'const',
- 'class',
- 'char',
- 'cfloat',
- 'cent',
- 'cdouble',
- 'byte',
- 'bool',
- 'bit',
- 'auto',
- 'align',
- 'abstract'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '?', '!', ';', ':', ',', '...', '..',
- '+', '-', '*', '/', '%', '&', '|', '^', '<', '>', '=', '~',
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #aaaadd; font-weight: bold;',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1=> 'color: #808080; font-style: italic;',
- 2=> 'color: #a1a100;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * d.php
+ * -----
+ * Author: Thomas Kuehne (thomas at kuehne.cn)
+ * Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/04/22
+ *
+ * D language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/04/22 (0.0.2)
+ * - added _d_* and sizeof/ptrdiff_t
+ * 2005/04/20 (0.0.1)
+ * - First release
+ *
+ * TODO (updated 2005/04/22)
+ * -------------------------
+ * * nested comments
+ * * correct handling of r"" and ``
+ * * correct handling of ... and ..
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'D',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"', "'", '`'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'while',
+ 'switch',
+ 'if',
+ 'foreach',
+ 'for',
+ 'goto',
+ 'return',
+ 'else',
+ 'do',
+ 'case',
+ 'continue',
+ 'break'
+ ),
+ 2 => array(
+ 'with',
+ 'union',
+ 'typeof',
+ 'typeid',
+ 'typedef',
+ 'try',
+ 'true',
+ 'throw',
+ 'this',
+ 'super',
+ 'pragma',
+ 'out',
+ 'null',
+ 'new',
+ 'module',
+ 'mixin',
+ 'is',
+ 'invariant',
+ 'interface',
+ 'inout',
+ 'in',
+ 'import',
+ 'function',
+ 'finally',
+ 'false',
+ 'extern',
+ 'delete',
+ 'delegate',
+ 'default',
+ 'catch',
+ 'cast',
+ 'body',
+ 'assert',
+ 'asm',
+ 'alias'
+ ),
+ 3 => array(
+ 'TypeInfo',
+ 'SwitchError',
+ 'OutOfMemoryException',
+ 'Object',
+ 'ModuleInfo',
+ 'Interface',
+ 'Exception',
+ 'Error',
+ 'ClassInfo',
+ 'ArrayBoundsError',
+ 'AssertError',
+ '_d_throw',
+ '_d_switch_ustring',
+ '_d_switch_string',
+ '_d_switch_dstring',
+ '_d_OutOfMemory',
+ '_d_obj_eq',
+ '_d_obj_cmp',
+ '_d_newclass',
+ '_d_newbitarray',
+ '_d_newarrayi',
+ '_d_new',
+ '_d_monitorrelease',
+ '_d_monitor_prolog',
+ '_d_monitor_handler',
+ '_d_monitorexit',
+ '_d_monitor_epilog',
+ '_d_monitorenter',
+ '_d_local_unwind',
+ '_d_isbaseof2',
+ '_d_isbaseof',
+ '_d_invariant',
+ '_d_interface_vtbl',
+ '_d_interface_cast',
+ '_d_framehandler',
+ '_d_exception_filter',
+ '_d_exception',
+ '_d_dynamic_cast',
+ '_d_delmemory',
+ '_d_delinterface',
+ '_d_delclass',
+ '_d_delarray',
+ '_d_criticalexit',
+ '_d_criticalenter',
+ '_d_create_exception_object',
+ '_d_callfinalizer',
+ '_d_arraysetlengthb',
+ '_d_arraysetlength',
+ '_d_arraysetbit2',
+ '_d_arraysetbit',
+ '_d_arraycopybit',
+ '_d_arraycopy',
+ '_d_arraycatn',
+ '_d_arraycatb',
+ '_d_arraycat',
+ '_d_arraycast_frombit',
+ '_d_arraycast',
+ '_d_arrayappendcb',
+ '_d_arrayappendc',
+ '_d_arrayappendb',
+ '_d_arrayappend',
+ ),
+ 4 => array(
+ 'wchar',
+ 'volatile',
+ 'void',
+ 'version',
+ 'ushort',
+ 'unittest',
+ 'ulong',
+ 'uint',
+ 'ucent',
+ 'ubyte',
+ 'template',
+ 'struct',
+ 'static',
+ 'synchronized',
+ 'size_t',
+ 'short',
+ 'real',
+ 'public',
+ 'protected',
+ 'private',
+ 'ptrdiff_t',
+ 'package',
+ 'override',
+ 'long',
+ 'int',
+ 'ireal',
+ 'ifloat',
+ 'idouble',
+ 'float',
+ 'final',
+ 'export',
+ 'enum',
+ 'double',
+ 'deprecated',
+ 'debug',
+ 'dchar',
+ 'creal',
+ 'const',
+ 'class',
+ 'char',
+ 'cfloat',
+ 'cent',
+ 'cdouble',
+ 'byte',
+ 'bool',
+ 'bit',
+ 'auto',
+ 'align',
+ 'abstract'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '?', '!', ';', ':', ',', '...', '..',
+ '+', '-', '*', '/', '%', '&', '|', '^', '<', '>', '=', '~',
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ 4 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #aaaadd; font-weight: bold;',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1=> 'color: #808080; font-style: italic;',
+ 2=> 'color: #a1a100;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/delphi.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/delphi.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/delphi.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,280 +1,280 @@
-<?php
-/*************************************************************************************
- * delphi.php
- * ----------
- * Author: Járja Norbert (jnorbi at vipmail.hu), Benny Baumann (BenBE at omorphia.de)
- * Copyright: (c) 2004 Járja Norbert, Benny Baumann (BenBE at omorphia.de), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/26
- *
- * Delphi (Object Pascal) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/11/19 (1.0.3)
- * - Updated the very incomplete keyword and type lists
- * 2005/09/03 (1.0.2)
- * - Added support for hex numbers and string entities
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Delphi',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
- 'CASE_KEYWORDS' => 0,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'Abstract', 'And', 'Array', 'As', 'Asm', 'At', 'Begin', 'Case', 'Class',
- 'Const', 'Constructor', 'Contains', 'Destructor', 'DispInterface', 'Div',
- 'Do', 'DownTo', 'Else', 'End', 'Except', 'File', 'Finalization',
- 'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In',
- 'Inherited', 'Initialization', 'Inline', 'Interface', 'Is', 'Label',
- 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override',
- 'Package', 'Packed', 'Private', 'Procedure', 'Program', 'Property',
- 'Protected', 'Public', 'Published', 'Raise', 'Record', 'Repeat',
- 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar',
- 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var', 'Virtual', 'While',
- 'With', 'Xor', 'assembler', 'cdecl', 'far', 'near', 'pascal', 'register',
- 'safecall', 'stdcall', 'varargs'
- ),
- 2 => array(
- 'nil', 'false', 'self', 'true', 'var', 'type', 'const'
- ),
- 3 => array(
- 'Abs', 'AcquireExceptionObject', 'Addr', 'AnsiToUtf8', 'Append', 'ArcTan',
- 'Assert', 'AssignFile', 'Assigned', 'BeginThread', 'BlockRead',
- 'BlockWrite', 'Break', 'ChDir', 'Chr', 'Close', 'CloseFile',
- 'CompToCurrency', 'CompToDouble', 'Concat', 'Continue', 'Copy', 'Cos',
- 'Dec', 'Delete', 'Dispose', 'DoubleToComp', 'EndThread', 'EnumModules',
- 'EnumResourceModules', 'Eof', 'Eoln', 'Erase', 'ExceptAddr',
- 'ExceptObject', 'Exclude', 'Exit', 'Exp', 'FilePos', 'FileSize',
- 'FillChar', 'Finalize', 'FindClassHInstance', 'FindHInstance',
- 'FindResourceHInstance', 'Flush', 'Frac', 'FreeMem', 'Get8087CW',
- 'GetDir', 'GetLastError', 'GetMem', 'GetMemoryManager',
- 'GetModuleFileName', 'GetVariantManager', 'Halt', 'Hi', 'High',
- 'IOResult', 'Inc', 'Include', 'Initialize', 'Insert', 'Int',
- 'IsMemoryManagerSet', 'IsVariantManagerSet', 'Length', 'Ln', 'Lo', 'Low',
- 'MkDir', 'Move', 'New', 'Odd', 'OleStrToStrVar', 'OleStrToString', 'Ord',
- 'PUCS4Chars', 'ParamCount', 'ParamStr', 'Pi', 'Pos', 'Pred', 'Ptr',
- 'Random', 'Randomize', 'Read', 'ReadLn', 'ReallocMem',
- 'ReleaseExceptionObject', 'Rename', 'Reset', 'Rewrite', 'RmDir', 'Round',
- 'RunError', 'Seek', 'SeekEof', 'SeekEoln', 'Set8087CW', 'SetLength',
- 'SetLineBreakStyle', 'SetMemoryManager', 'SetString', 'SetTextBuf',
- 'SetVariantManager', 'Sin', 'SizeOf', 'Slice', 'Sqr', 'Sqrt', 'Str',
- 'StringOfChar', 'StringToOleStr', 'StringToWideChar', 'Succ', 'Swap',
- 'Trunc', 'Truncate', 'TypeInfo', 'UCS4StringToWideString', 'UTF8Decode',
- 'UTF8Encode', 'UnicodeToUtf8', 'UniqueString', 'UpCase', 'Utf8ToAnsi',
- 'Utf8ToUnicode', 'Val', 'VarArrayRedim', 'VarClear',
- 'WideCharLenToStrVar', 'WideCharLenToString', 'WideCharToStrVar',
- 'WideCharToString', 'WideStringToUCS4String', 'Write', 'WriteLn',
-
- 'Abort', 'AddExitProc', 'AddTerminateProc', 'AdjustLineBreaks', 'AllocMem',
- 'AnsiCompareFileName', 'AnsiCompareStr', 'AnsiCompareText',
- 'AnsiDequotedStr', 'AnsiExtractQuotedStr', 'AnsiLastChar',
- 'AnsiLowerCase', 'AnsiLowerCaseFileName', 'AnsiPos', 'AnsiQuotedStr',
- 'AnsiSameStr', 'AnsiSameText', 'AnsiStrComp', 'AnsiStrIComp',
- 'AnsiStrLComp', 'AnsiStrLIComp', 'AnsiStrLastChar', 'AnsiStrLower',
- 'AnsiStrPos', 'AnsiStrRScan', 'AnsiStrScan', 'AnsiStrUpper',
- 'AnsiUpperCase', 'AnsiUpperCaseFileName', 'AppendStr', 'AssignStr',
- 'Beep', 'BoolToStr', 'ByteToCharIndex', 'ByteToCharLen', 'ByteType',
- 'CallTerminateProcs', 'ChangeFileExt', 'CharLength', 'CharToByteIndex',
- 'CharToByteLen', 'CompareMem', 'CompareStr', 'CompareText', 'CreateDir',
- 'CreateGUID', 'CurrToStr', 'CurrToStrF', 'CurrentYear', 'Date',
- 'DateTimeToFileDate', 'DateTimeToStr', 'DateTimeToString',
- 'DateTimeToSystemTime', 'DateTimeToTimeStamp', 'DateToStr', 'DayOfWeek',
- 'DecodeDate', 'DecodeDateFully', 'DecodeTime', 'DeleteFile',
- 'DirectoryExists', 'DiskFree', 'DiskSize', 'DisposeStr', 'EncodeDate',
- 'EncodeTime', 'ExceptionErrorMessage', 'ExcludeTrailingBackslash',
- 'ExcludeTrailingPathDelimiter', 'ExpandFileName', 'ExpandFileNameCase',
- 'ExpandUNCFileName', 'ExtractFileDir', 'ExtractFileDrive',
- 'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath',
- 'ExtractRelativePath', 'ExtractShortPathName', 'FileAge', 'FileClose',
- 'FileCreate', 'FileDateToDateTime', 'FileExists', 'FileGetAttr',
- 'FileGetDate', 'FileIsReadOnly', 'FileOpen', 'FileRead', 'FileSearch',
- 'FileSeek', 'FileSetAttr', 'FileSetDate', 'FileSetReadOnly', 'FileWrite',
- 'FinalizePackage', 'FindClose', 'FindCmdLineSwitch', 'FindFirst',
- 'FindNext', 'FloatToCurr', 'FloatToDateTime', 'FloatToDecimal',
- 'FloatToStr', 'FloatToStrF', 'FloatToText', 'FloatToTextFmt',
- 'FmtLoadStr', 'FmtStr', 'ForceDirectories', 'Format', 'FormatBuf',
- 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'FreeAndNil',
- 'GUIDToString', 'GetCurrentDir', 'GetEnvironmentVariable',
- 'GetFileVersion', 'GetFormatSettings', 'GetLocaleFormatSettings',
- 'GetModuleName', 'GetPackageDescription', 'GetPackageInfo', 'GetTime',
- 'IncAMonth', 'IncMonth', 'IncludeTrailingBackslash',
- 'IncludeTrailingPathDelimiter', 'InitializePackage', 'IntToHex',
- 'IntToStr', 'InterlockedDecrement', 'InterlockedExchange',
- 'InterlockedExchangeAdd', 'InterlockedIncrement', 'IsDelimiter',
- 'IsEqualGUID', 'IsLeapYear', 'IsPathDelimiter', 'IsValidIdent',
- 'Languages', 'LastDelimiter', 'LoadPackage', 'LoadStr', 'LowerCase',
- 'MSecsToTimeStamp', 'NewStr', 'NextCharIndex', 'Now', 'OutOfMemoryError',
- 'QuotedStr', 'RaiseLastOSError', 'RaiseLastWin32Error', 'RemoveDir',
- 'RenameFile', 'ReplaceDate', 'ReplaceTime', 'SafeLoadLibrary',
- 'SameFileName', 'SameText', 'SetCurrentDir', 'ShowException', 'Sleep',
- 'StrAlloc', 'StrBufSize', 'StrByteType', 'StrCat', 'StrCharLength',
- 'StrComp', 'StrCopy', 'StrDispose', 'StrECopy', 'StrEnd', 'StrFmt',
- 'StrIComp', 'StrLCat', 'StrLComp', 'StrLCopy', 'StrLFmt', 'StrLIComp',
- 'StrLen', 'StrLower', 'StrMove', 'StrNew', 'StrNextChar', 'StrPCopy',
- 'StrPLCopy', 'StrPas', 'StrPos', 'StrRScan', 'StrScan', 'StrToBool',
- 'StrToBoolDef', 'StrToCurr', 'StrToCurrDef', 'StrToDate', 'StrToDateDef',
- 'StrToDateTime', 'StrToDateTimeDef', 'StrToFloat', 'StrToFloatDef',
- 'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime',
- 'StrToTimeDef', 'StrUpper', 'StringReplace', 'StringToGUID', 'Supports',
- 'SysErrorMessage', 'SystemTimeToDateTime', 'TextToFloat', 'Time',
- 'TimeStampToDateTime', 'TimeStampToMSecs', 'TimeToStr', 'Trim',
- 'TrimLeft', 'TrimRight', 'TryEncodeDate', 'TryEncodeTime',
- 'TryFloatToCurr', 'TryFloatToDateTime', 'TryStrToBool', 'TryStrToCurr',
- 'TryStrToDate', 'TryStrToDateTime', 'TryStrToFloat', 'TryStrToInt',
- 'TryStrToInt64', 'TryStrToTime', 'UnloadPackage', 'UpperCase',
- 'WideCompareStr', 'WideCompareText', 'WideFmtStr', 'WideFormat',
- 'WideFormatBuf', 'WideLowerCase', 'WideSameStr', 'WideSameText',
- 'WideUpperCase', 'Win32Check', 'WrapText',
-
- 'ActivateClassGroup', 'AllocateHwnd', 'BinToHex', 'CheckSynchronize',
- 'CollectionsEqual', 'CountGenerations', 'DeallocateHwnd', 'EqualRect',
- 'ExtractStrings', 'FindClass', 'FindGlobalComponent', 'GetClass',
- 'GroupDescendantsWith', 'HexToBin', 'IdentToInt',
- 'InitInheritedComponent', 'IntToIdent', 'InvalidPoint',
- 'IsUniqueGlobalComponentName', 'LineStart', 'ObjectBinaryToText',
- 'ObjectResourceToText', 'ObjectTextToBinary', 'ObjectTextToResource',
- 'PointsEqual', 'ReadComponentRes', 'ReadComponentResEx',
- 'ReadComponentResFile', 'Rect', 'RegisterClass', 'RegisterClassAlias',
- 'RegisterClasses', 'RegisterComponents', 'RegisterIntegerConsts',
- 'RegisterNoIcon', 'RegisterNonActiveX', 'SmallPoint', 'StartClassGroup',
- 'TestStreamFormat', 'UnregisterClass', 'UnregisterClasses',
- 'UnregisterIntegerConsts', 'UnregisterModuleClasses',
- 'WriteComponentResFile',
-
- 'ArcCos', 'ArcCosh', 'ArcCot', 'ArcCotH', 'ArcCsc', 'ArcCscH', 'ArcSec',
- 'ArcSecH', 'ArcSin', 'ArcSinh', 'ArcTan2', 'ArcTanh', 'Ceil',
- 'CompareValue', 'Cosecant', 'Cosh', 'Cot', 'CotH', 'Cotan', 'Csc', 'CscH',
- 'CycleToDeg', 'CycleToGrad', 'CycleToRad', 'DegToCycle', 'DegToGrad',
- 'DegToRad', 'DivMod', 'DoubleDecliningBalance', 'EnsureRange', 'Floor',
- 'Frexp', 'FutureValue', 'GetExceptionMask', 'GetPrecisionMode',
- 'GetRoundMode', 'GradToCycle', 'GradToDeg', 'GradToRad', 'Hypot',
- 'InRange', 'IntPower', 'InterestPayment', 'InterestRate',
- 'InternalRateOfReturn', 'IsInfinite', 'IsNan', 'IsZero', 'Ldexp', 'LnXP1',
- 'Log10', 'Log2', 'LogN', 'Max', 'MaxIntValue', 'MaxValue', 'Mean',
- 'MeanAndStdDev', 'Min', 'MinIntValue', 'MinValue', 'MomentSkewKurtosis',
- 'NetPresentValue', 'Norm', 'NumberOfPeriods', 'Payment', 'PeriodPayment',
- 'Poly', 'PopnStdDev', 'PopnVariance', 'Power', 'PresentValue',
- 'RadToCycle', 'RadToDeg', 'RadToGrad', 'RandG', 'RandomRange', 'RoundTo',
- 'SLNDepreciation', 'SYDDepreciation', 'SameValue', 'Sec', 'SecH',
- 'Secant', 'SetExceptionMask', 'SetPrecisionMode', 'SetRoundMode', 'Sign',
- 'SimpleRoundTo', 'SinCos', 'Sinh', 'StdDev', 'Sum', 'SumInt',
- 'SumOfSquares', 'SumsAndSquares', 'Tan', 'Tanh', 'TotalVariance',
- 'Variance'
- ),
- 4 => array(
- 'AnsiChar', 'AnsiString', 'Bool', 'Boolean', 'Byte', 'ByteBool', 'Cardinal', 'Char',
- 'Comp', 'Currency', 'DWORD', 'Double', 'Extended', 'Int64', 'Integer', 'IUnknown',
- 'LongBool', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PBool', 'PBoolean', 'PByte',
- 'PByteArray', 'PCardinal', 'PChar', 'PComp', 'PCurrency', 'PDWORD', 'PDate', 'PDateTime',
- 'PDouble', 'PExtended', 'PInt64', 'PInteger', 'PLongInt', 'PLongWord', 'Pointer', 'PPointer',
- 'PShortInt', 'PShortString', 'PSingle', 'PSmallInt', 'PString', 'PHandle', 'PVariant', 'PWord',
- 'PWordArray', 'PWordBool', 'PWideChar', 'PWideString', 'Real', 'Real48', 'ShortInt', 'ShortString',
- 'Single', 'SmallInt', 'String', 'TClass', 'TDate', 'TDateTime', 'TextFile', 'THandle',
- 'TObject', 'TTime', 'Variant', 'WideChar', 'WideString', 'Word', 'WordBool'
- ),
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'SYMBOLS' => array(
- 0 => array('(', ')', '[', ']'),
- 1 => array('.', ',', ':', ';'),
- 2 => array('@', '^'),
- 3 => array('=', '+', '-', '*', '/')
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000000; font-weight: bold;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #9ac;',
- 1 => 'color: #ff0000;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;',
- 1 => 'color: #66cc66;',
- 2 => 'color: #66cc66;',
- 3 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- 0 => '\$[0-9a-fA-F]+',
- 1 => '\#\$?[0-9]{1,3}'
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 2
-);
-
-?>
+<?php
+/*************************************************************************************
+ * delphi.php
+ * ----------
+ * Author: Járja Norbert (jnorbi at vipmail.hu), Benny Baumann (BenBE at omorphia.de)
+ * Copyright: (c) 2004 Járja Norbert, Benny Baumann (BenBE at omorphia.de), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/26
+ *
+ * Delphi (Object Pascal) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/11/19 (1.0.3)
+ * - Updated the very incomplete keyword and type lists
+ * 2005/09/03 (1.0.2)
+ * - Added support for hex numbers and string entities
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Delphi',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
+ 'CASE_KEYWORDS' => 0,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'Abstract', 'And', 'Array', 'As', 'Asm', 'At', 'Begin', 'Case', 'Class',
+ 'Const', 'Constructor', 'Contains', 'Destructor', 'DispInterface', 'Div',
+ 'Do', 'DownTo', 'Else', 'End', 'Except', 'File', 'Finalization',
+ 'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In',
+ 'Inherited', 'Initialization', 'Inline', 'Interface', 'Is', 'Label',
+ 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override',
+ 'Package', 'Packed', 'Private', 'Procedure', 'Program', 'Property',
+ 'Protected', 'Public', 'Published', 'Raise', 'Record', 'Repeat',
+ 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar',
+ 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var', 'Virtual', 'While',
+ 'With', 'Xor', 'assembler', 'cdecl', 'far', 'near', 'pascal', 'register',
+ 'safecall', 'stdcall', 'varargs'
+ ),
+ 2 => array(
+ 'nil', 'false', 'self', 'true', 'var', 'type', 'const'
+ ),
+ 3 => array(
+ 'Abs', 'AcquireExceptionObject', 'Addr', 'AnsiToUtf8', 'Append', 'ArcTan',
+ 'Assert', 'AssignFile', 'Assigned', 'BeginThread', 'BlockRead',
+ 'BlockWrite', 'Break', 'ChDir', 'Chr', 'Close', 'CloseFile',
+ 'CompToCurrency', 'CompToDouble', 'Concat', 'Continue', 'Copy', 'Cos',
+ 'Dec', 'Delete', 'Dispose', 'DoubleToComp', 'EndThread', 'EnumModules',
+ 'EnumResourceModules', 'Eof', 'Eoln', 'Erase', 'ExceptAddr',
+ 'ExceptObject', 'Exclude', 'Exit', 'Exp', 'FilePos', 'FileSize',
+ 'FillChar', 'Finalize', 'FindClassHInstance', 'FindHInstance',
+ 'FindResourceHInstance', 'Flush', 'Frac', 'FreeMem', 'Get8087CW',
+ 'GetDir', 'GetLastError', 'GetMem', 'GetMemoryManager',
+ 'GetModuleFileName', 'GetVariantManager', 'Halt', 'Hi', 'High',
+ 'IOResult', 'Inc', 'Include', 'Initialize', 'Insert', 'Int',
+ 'IsMemoryManagerSet', 'IsVariantManagerSet', 'Length', 'Ln', 'Lo', 'Low',
+ 'MkDir', 'Move', 'New', 'Odd', 'OleStrToStrVar', 'OleStrToString', 'Ord',
+ 'PUCS4Chars', 'ParamCount', 'ParamStr', 'Pi', 'Pos', 'Pred', 'Ptr',
+ 'Random', 'Randomize', 'Read', 'ReadLn', 'ReallocMem',
+ 'ReleaseExceptionObject', 'Rename', 'Reset', 'Rewrite', 'RmDir', 'Round',
+ 'RunError', 'Seek', 'SeekEof', 'SeekEoln', 'Set8087CW', 'SetLength',
+ 'SetLineBreakStyle', 'SetMemoryManager', 'SetString', 'SetTextBuf',
+ 'SetVariantManager', 'Sin', 'SizeOf', 'Slice', 'Sqr', 'Sqrt', 'Str',
+ 'StringOfChar', 'StringToOleStr', 'StringToWideChar', 'Succ', 'Swap',
+ 'Trunc', 'Truncate', 'TypeInfo', 'UCS4StringToWideString', 'UTF8Decode',
+ 'UTF8Encode', 'UnicodeToUtf8', 'UniqueString', 'UpCase', 'Utf8ToAnsi',
+ 'Utf8ToUnicode', 'Val', 'VarArrayRedim', 'VarClear',
+ 'WideCharLenToStrVar', 'WideCharLenToString', 'WideCharToStrVar',
+ 'WideCharToString', 'WideStringToUCS4String', 'Write', 'WriteLn',
+
+ 'Abort', 'AddExitProc', 'AddTerminateProc', 'AdjustLineBreaks', 'AllocMem',
+ 'AnsiCompareFileName', 'AnsiCompareStr', 'AnsiCompareText',
+ 'AnsiDequotedStr', 'AnsiExtractQuotedStr', 'AnsiLastChar',
+ 'AnsiLowerCase', 'AnsiLowerCaseFileName', 'AnsiPos', 'AnsiQuotedStr',
+ 'AnsiSameStr', 'AnsiSameText', 'AnsiStrComp', 'AnsiStrIComp',
+ 'AnsiStrLComp', 'AnsiStrLIComp', 'AnsiStrLastChar', 'AnsiStrLower',
+ 'AnsiStrPos', 'AnsiStrRScan', 'AnsiStrScan', 'AnsiStrUpper',
+ 'AnsiUpperCase', 'AnsiUpperCaseFileName', 'AppendStr', 'AssignStr',
+ 'Beep', 'BoolToStr', 'ByteToCharIndex', 'ByteToCharLen', 'ByteType',
+ 'CallTerminateProcs', 'ChangeFileExt', 'CharLength', 'CharToByteIndex',
+ 'CharToByteLen', 'CompareMem', 'CompareStr', 'CompareText', 'CreateDir',
+ 'CreateGUID', 'CurrToStr', 'CurrToStrF', 'CurrentYear', 'Date',
+ 'DateTimeToFileDate', 'DateTimeToStr', 'DateTimeToString',
+ 'DateTimeToSystemTime', 'DateTimeToTimeStamp', 'DateToStr', 'DayOfWeek',
+ 'DecodeDate', 'DecodeDateFully', 'DecodeTime', 'DeleteFile',
+ 'DirectoryExists', 'DiskFree', 'DiskSize', 'DisposeStr', 'EncodeDate',
+ 'EncodeTime', 'ExceptionErrorMessage', 'ExcludeTrailingBackslash',
+ 'ExcludeTrailingPathDelimiter', 'ExpandFileName', 'ExpandFileNameCase',
+ 'ExpandUNCFileName', 'ExtractFileDir', 'ExtractFileDrive',
+ 'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath',
+ 'ExtractRelativePath', 'ExtractShortPathName', 'FileAge', 'FileClose',
+ 'FileCreate', 'FileDateToDateTime', 'FileExists', 'FileGetAttr',
+ 'FileGetDate', 'FileIsReadOnly', 'FileOpen', 'FileRead', 'FileSearch',
+ 'FileSeek', 'FileSetAttr', 'FileSetDate', 'FileSetReadOnly', 'FileWrite',
+ 'FinalizePackage', 'FindClose', 'FindCmdLineSwitch', 'FindFirst',
+ 'FindNext', 'FloatToCurr', 'FloatToDateTime', 'FloatToDecimal',
+ 'FloatToStr', 'FloatToStrF', 'FloatToText', 'FloatToTextFmt',
+ 'FmtLoadStr', 'FmtStr', 'ForceDirectories', 'Format', 'FormatBuf',
+ 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'FreeAndNil',
+ 'GUIDToString', 'GetCurrentDir', 'GetEnvironmentVariable',
+ 'GetFileVersion', 'GetFormatSettings', 'GetLocaleFormatSettings',
+ 'GetModuleName', 'GetPackageDescription', 'GetPackageInfo', 'GetTime',
+ 'IncAMonth', 'IncMonth', 'IncludeTrailingBackslash',
+ 'IncludeTrailingPathDelimiter', 'InitializePackage', 'IntToHex',
+ 'IntToStr', 'InterlockedDecrement', 'InterlockedExchange',
+ 'InterlockedExchangeAdd', 'InterlockedIncrement', 'IsDelimiter',
+ 'IsEqualGUID', 'IsLeapYear', 'IsPathDelimiter', 'IsValidIdent',
+ 'Languages', 'LastDelimiter', 'LoadPackage', 'LoadStr', 'LowerCase',
+ 'MSecsToTimeStamp', 'NewStr', 'NextCharIndex', 'Now', 'OutOfMemoryError',
+ 'QuotedStr', 'RaiseLastOSError', 'RaiseLastWin32Error', 'RemoveDir',
+ 'RenameFile', 'ReplaceDate', 'ReplaceTime', 'SafeLoadLibrary',
+ 'SameFileName', 'SameText', 'SetCurrentDir', 'ShowException', 'Sleep',
+ 'StrAlloc', 'StrBufSize', 'StrByteType', 'StrCat', 'StrCharLength',
+ 'StrComp', 'StrCopy', 'StrDispose', 'StrECopy', 'StrEnd', 'StrFmt',
+ 'StrIComp', 'StrLCat', 'StrLComp', 'StrLCopy', 'StrLFmt', 'StrLIComp',
+ 'StrLen', 'StrLower', 'StrMove', 'StrNew', 'StrNextChar', 'StrPCopy',
+ 'StrPLCopy', 'StrPas', 'StrPos', 'StrRScan', 'StrScan', 'StrToBool',
+ 'StrToBoolDef', 'StrToCurr', 'StrToCurrDef', 'StrToDate', 'StrToDateDef',
+ 'StrToDateTime', 'StrToDateTimeDef', 'StrToFloat', 'StrToFloatDef',
+ 'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime',
+ 'StrToTimeDef', 'StrUpper', 'StringReplace', 'StringToGUID', 'Supports',
+ 'SysErrorMessage', 'SystemTimeToDateTime', 'TextToFloat', 'Time',
+ 'TimeStampToDateTime', 'TimeStampToMSecs', 'TimeToStr', 'Trim',
+ 'TrimLeft', 'TrimRight', 'TryEncodeDate', 'TryEncodeTime',
+ 'TryFloatToCurr', 'TryFloatToDateTime', 'TryStrToBool', 'TryStrToCurr',
+ 'TryStrToDate', 'TryStrToDateTime', 'TryStrToFloat', 'TryStrToInt',
+ 'TryStrToInt64', 'TryStrToTime', 'UnloadPackage', 'UpperCase',
+ 'WideCompareStr', 'WideCompareText', 'WideFmtStr', 'WideFormat',
+ 'WideFormatBuf', 'WideLowerCase', 'WideSameStr', 'WideSameText',
+ 'WideUpperCase', 'Win32Check', 'WrapText',
+
+ 'ActivateClassGroup', 'AllocateHwnd', 'BinToHex', 'CheckSynchronize',
+ 'CollectionsEqual', 'CountGenerations', 'DeallocateHwnd', 'EqualRect',
+ 'ExtractStrings', 'FindClass', 'FindGlobalComponent', 'GetClass',
+ 'GroupDescendantsWith', 'HexToBin', 'IdentToInt',
+ 'InitInheritedComponent', 'IntToIdent', 'InvalidPoint',
+ 'IsUniqueGlobalComponentName', 'LineStart', 'ObjectBinaryToText',
+ 'ObjectResourceToText', 'ObjectTextToBinary', 'ObjectTextToResource',
+ 'PointsEqual', 'ReadComponentRes', 'ReadComponentResEx',
+ 'ReadComponentResFile', 'Rect', 'RegisterClass', 'RegisterClassAlias',
+ 'RegisterClasses', 'RegisterComponents', 'RegisterIntegerConsts',
+ 'RegisterNoIcon', 'RegisterNonActiveX', 'SmallPoint', 'StartClassGroup',
+ 'TestStreamFormat', 'UnregisterClass', 'UnregisterClasses',
+ 'UnregisterIntegerConsts', 'UnregisterModuleClasses',
+ 'WriteComponentResFile',
+
+ 'ArcCos', 'ArcCosh', 'ArcCot', 'ArcCotH', 'ArcCsc', 'ArcCscH', 'ArcSec',
+ 'ArcSecH', 'ArcSin', 'ArcSinh', 'ArcTan2', 'ArcTanh', 'Ceil',
+ 'CompareValue', 'Cosecant', 'Cosh', 'Cot', 'CotH', 'Cotan', 'Csc', 'CscH',
+ 'CycleToDeg', 'CycleToGrad', 'CycleToRad', 'DegToCycle', 'DegToGrad',
+ 'DegToRad', 'DivMod', 'DoubleDecliningBalance', 'EnsureRange', 'Floor',
+ 'Frexp', 'FutureValue', 'GetExceptionMask', 'GetPrecisionMode',
+ 'GetRoundMode', 'GradToCycle', 'GradToDeg', 'GradToRad', 'Hypot',
+ 'InRange', 'IntPower', 'InterestPayment', 'InterestRate',
+ 'InternalRateOfReturn', 'IsInfinite', 'IsNan', 'IsZero', 'Ldexp', 'LnXP1',
+ 'Log10', 'Log2', 'LogN', 'Max', 'MaxIntValue', 'MaxValue', 'Mean',
+ 'MeanAndStdDev', 'Min', 'MinIntValue', 'MinValue', 'MomentSkewKurtosis',
+ 'NetPresentValue', 'Norm', 'NumberOfPeriods', 'Payment', 'PeriodPayment',
+ 'Poly', 'PopnStdDev', 'PopnVariance', 'Power', 'PresentValue',
+ 'RadToCycle', 'RadToDeg', 'RadToGrad', 'RandG', 'RandomRange', 'RoundTo',
+ 'SLNDepreciation', 'SYDDepreciation', 'SameValue', 'Sec', 'SecH',
+ 'Secant', 'SetExceptionMask', 'SetPrecisionMode', 'SetRoundMode', 'Sign',
+ 'SimpleRoundTo', 'SinCos', 'Sinh', 'StdDev', 'Sum', 'SumInt',
+ 'SumOfSquares', 'SumsAndSquares', 'Tan', 'Tanh', 'TotalVariance',
+ 'Variance'
+ ),
+ 4 => array(
+ 'AnsiChar', 'AnsiString', 'Bool', 'Boolean', 'Byte', 'ByteBool', 'Cardinal', 'Char',
+ 'Comp', 'Currency', 'DWORD', 'Double', 'Extended', 'Int64', 'Integer', 'IUnknown',
+ 'LongBool', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PBool', 'PBoolean', 'PByte',
+ 'PByteArray', 'PCardinal', 'PChar', 'PComp', 'PCurrency', 'PDWORD', 'PDate', 'PDateTime',
+ 'PDouble', 'PExtended', 'PInt64', 'PInteger', 'PLongInt', 'PLongWord', 'Pointer', 'PPointer',
+ 'PShortInt', 'PShortString', 'PSingle', 'PSmallInt', 'PString', 'PHandle', 'PVariant', 'PWord',
+ 'PWordArray', 'PWordBool', 'PWideChar', 'PWideString', 'Real', 'Real48', 'ShortInt', 'ShortString',
+ 'Single', 'SmallInt', 'String', 'TClass', 'TDate', 'TDateTime', 'TextFile', 'THandle',
+ 'TObject', 'TTime', 'Variant', 'WideChar', 'WideString', 'Word', 'WordBool'
+ ),
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'SYMBOLS' => array(
+ 0 => array('(', ')', '[', ']'),
+ 1 => array('.', ',', ':', ';'),
+ 2 => array('@', '^'),
+ 3 => array('=', '+', '-', '*', '/')
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000000; font-weight: bold;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #9ac;',
+ 1 => 'color: #ff0000;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;',
+ 1 => 'color: #66cc66;',
+ 2 => 'color: #66cc66;',
+ 3 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ 0 => '\$[0-9a-fA-F]+',
+ 1 => '\#\$?[0-9]{1,3}'
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 2
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/diff.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/diff.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/diff.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,184 +1,184 @@
-<?php
-/*************************************************************************************
- * diff.php
- * --------
- * Author: Conny Brunnkvist (conny at fuchsia.se), W. Tasin (tasin at fhm.edu)
- * Copyright: (c) 2004 Fuchsia Open Source Solutions (http://www.fuchsia.se/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/12/29
- *
- * Diff-output language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/02/27
- * - changing language file to use matching of start (^) and end ($) (wt)
- *
- * 2004/12/29 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/02/27)
- * -------------------------
- *
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-
-$language_data = array (
- 'LANG_NAME' => 'Diff',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => ' ',
- 'KEYWORDS' => array(
- 1 => array(
- '\ No newline at end of file'
- ),
- 2 => array(
- '***************' /* This only seems to works in some cases? */
- ),
- ),
- 'SYMBOLS' => array(
- ),
- 'CASE_SENSITIVE' => array(
- 1 => false,
- 2 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #aaaaaa; font-style: italic;',
- 2 => 'color: #dd6611;',
- ),
- 'COMMENTS' => array(
- ),
- 'ESCAPE_CHAR' => array(
- 0 => ''
- ),
- 'BRACKETS' => array(
- 0 => ''
- ),
- 'STRINGS' => array(
- 0 => ''
- ),
- 'NUMBERS' => array(
- 0 => ''
- ),
- 'METHODS' => array(
- 0 => ''
- ),
- 'SYMBOLS' => array(
- 0 => ''
- ),
- 'SCRIPT' => array(
- 0 => ''
- ),
- 'REGEXPS' => array(
- 0 => 'color: #440088;',
- 1 => 'color: #991111;',
- 2 => 'color: #00b000;',
- 3 => 'color: #888822;',
- 4 => 'color: #888822;',
- 5 => 'color: #0011dd;',
- 6 => 'color: #440088;',
- 7 => 'color: #991111;',
- 8 => 'color: #00b000;',
- 9 => 'color: #888822;',
- ),
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTER' => '',
- 'REGEXPS' => array(
- 0 => "[0-9,]+[acd][0-9,]+",
- 1 => array(
- GESHI_SEARCH => '^\\<.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 2 => array(
- GESHI_SEARCH => '^\\>.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 3 => array(
- GESHI_SEARCH => '^[\\-]{3}\\s.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 4 => array(
- GESHI_SEARCH => '^(\\+){3}\\s.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 5 => array(
- GESHI_SEARCH => '^\\!.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 6 => array(
- GESHI_SEARCH => '^[\\@]{2}.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 7 => array(
- GESHI_SEARCH => '^\\-.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 8 => array(
- GESHI_SEARCH => '^\\+.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 9 => array(
- GESHI_SEARCH => '^(\\*){3}\\s.*$',
- GESHI_REPLACE => '\\0',
- GESHI_MODIFIERS => 'm',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * diff.php
+ * --------
+ * Author: Conny Brunnkvist (conny at fuchsia.se), W. Tasin (tasin at fhm.edu)
+ * Copyright: (c) 2004 Fuchsia Open Source Solutions (http://www.fuchsia.se/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/12/29
+ *
+ * Diff-output language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/02/27
+ * - changing language file to use matching of start (^) and end ($) (wt)
+ *
+ * 2004/12/29 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/02/27)
+ * -------------------------
+ *
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+
+$language_data = array (
+ 'LANG_NAME' => 'Diff',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => ' ',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '\ No newline at end of file'
+ ),
+ 2 => array(
+ '***************' /* This only seems to works in some cases? */
+ ),
+ ),
+ 'SYMBOLS' => array(
+ ),
+ 'CASE_SENSITIVE' => array(
+ 1 => false,
+ 2 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #aaaaaa; font-style: italic;',
+ 2 => 'color: #dd6611;',
+ ),
+ 'COMMENTS' => array(
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => ''
+ ),
+ 'BRACKETS' => array(
+ 0 => ''
+ ),
+ 'STRINGS' => array(
+ 0 => ''
+ ),
+ 'NUMBERS' => array(
+ 0 => ''
+ ),
+ 'METHODS' => array(
+ 0 => ''
+ ),
+ 'SYMBOLS' => array(
+ 0 => ''
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #440088;',
+ 1 => 'color: #991111;',
+ 2 => 'color: #00b000;',
+ 3 => 'color: #888822;',
+ 4 => 'color: #888822;',
+ 5 => 'color: #0011dd;',
+ 6 => 'color: #440088;',
+ 7 => 'color: #991111;',
+ 8 => 'color: #00b000;',
+ 9 => 'color: #888822;',
+ ),
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTER' => '',
+ 'REGEXPS' => array(
+ 0 => "[0-9,]+[acd][0-9,]+",
+ 1 => array(
+ GESHI_SEARCH => '^\\<.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 2 => array(
+ GESHI_SEARCH => '^\\>.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 3 => array(
+ GESHI_SEARCH => '^[\\-]{3}\\s.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 4 => array(
+ GESHI_SEARCH => '^(\\+){3}\\s.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 5 => array(
+ GESHI_SEARCH => '^\\!.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 6 => array(
+ GESHI_SEARCH => '^[\\@]{2}.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 7 => array(
+ GESHI_SEARCH => '^\\-.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 8 => array(
+ GESHI_SEARCH => '^\\+.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 9 => array(
+ GESHI_SEARCH => '^(\\*){3}\\s.*$',
+ GESHI_REPLACE => '\\0',
+ GESHI_MODIFIERS => 'm',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/div.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/div.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/div.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,126 +1,126 @@
-<?php
-/*************************************************************************************
- * div.php
- * ---------------------------------
- * Author: Gabriel Lorenzo (ermakina at gmail.com)
- * Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net)
- * Release Version: 1.0.7.21
- * Date Started: 2005/06/19
- *
- * DIV language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/06/22 (1.0.0)
- * - First Release, includes "2nd gen" ELSEIF statement
- *
- * TODO (updated 2005/06/22)
- * -------------------------
- * - I'm pretty satisfied with this, so nothing for now... :P
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'DIV',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'while','until','to','switch','step','return','repeat','loop','if','from','frame','for','end','elseif',
- 'else','default','debug','continue','clone','case','break','begin'
- ),
- 2 => array(
- 'xor','whoami','type','sizeof','pointer','or','offset','not','neg','mod','id','dup','and','_ne','_lt',
- '_le','_gt','_ge','_eq'
- ),
- 3 => array(
- 'setup_program','program','process','private','local','import','global','function','const',
- 'compiler_options'
- ),
- 4 => array(
- 'word','struct','string','int','byte'
- ),
- ),
- 'SYMBOLS' => array(
- '(',')','[',']','=','+','-','*','/','!','%','^','&',':',';',',','<','>'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0040b1;',
- 2 => 'color: #000000;',
- 3 => 'color: #000066; font-weight: bold;',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => ''
- ),
- 'BRACKETS' => array(
- 0 => 'color: #44aa44;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 0 => 'color: #202020;',
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #44aa44;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTER' => '',
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * div.php
+ * ---------------------------------
+ * Author: Gabriel Lorenzo (ermakina at gmail.com)
+ * Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/06/19
+ *
+ * DIV language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/06/22 (1.0.0)
+ * - First Release, includes "2nd gen" ELSEIF statement
+ *
+ * TODO (updated 2005/06/22)
+ * -------------------------
+ * - I'm pretty satisfied with this, so nothing for now... :P
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'DIV',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'while','until','to','switch','step','return','repeat','loop','if','from','frame','for','end','elseif',
+ 'else','default','debug','continue','clone','case','break','begin'
+ ),
+ 2 => array(
+ 'xor','whoami','type','sizeof','pointer','or','offset','not','neg','mod','id','dup','and','_ne','_lt',
+ '_le','_gt','_ge','_eq'
+ ),
+ 3 => array(
+ 'setup_program','program','process','private','local','import','global','function','const',
+ 'compiler_options'
+ ),
+ 4 => array(
+ 'word','struct','string','int','byte'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(',')','[',']','=','+','-','*','/','!','%','^','&',':',';',',','<','>'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0040b1;',
+ 2 => 'color: #000000;',
+ 3 => 'color: #000066; font-weight: bold;',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => ''
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #44aa44;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #202020;',
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #44aa44;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTER' => '',
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/dos.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/dos.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/dos.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,185 +1,185 @@
-<?php
-/*************************************************************************************
- * dos.php
- * -------
- * Author: Alessandro Staltari (staltari at geocities.com)
- * Copyright: (c) 2005 Alessandro Staltari (http://www.geocities.com/SiliconValley/Vista/8155/)
- * Release Version: 1.0.7.21
- * Date Started: 2005/07/05
- *
- * DOS language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/07/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/07/05)
- * -------------------------
- *
- * - Find a way to higlight %*
- * - Highlight pipes and redirection (do we really need this?)
- * - Add missing keywords.
- * - Find a good hyperlink for keywords.
- * - Improve styles.
- *
- * KNOWN ISSUES (updated 2005/07/07)
- * ---------------------------------
- *
- * - Doesn't even try to handle spaces in variables name or labels (I can't
- * find a reliable way to establish if a sting is a name or not, in some
- * cases it depends on the contex or enviroment status).
- * - Doesn't handle %%[letter] pseudo variable used inside FOR constructs
- * (it should be done only into its scope: how to handle variable it?).
- * - Doesn't handle %~[something] pseudo arguments.
- * - If the same keyword is placed at the end of the line and the
- * beginning of the next, the second occourrence is not highlighted
- * (this should be a GeSHi bug, not related to the language definition).
- * - I can't avoid to have keyword highlighted even when they are not used
- * as keywords but, for example, as arguments to the echo command.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'DOS',
- 'COMMENT_SINGLE' => array(1 =>'REM', 2 => '@REM'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- /* Flow control keywords */
- 1 => array(
- 'if', 'else', 'goto',
- 'for', 'in', 'do',
- 'call', 'exit'
- ),
- /* IF statement keywords */
- 2 => array(
- 'not', 'exist', 'errorlevel',
- 'defined',
- 'equ', 'neq', 'lss', 'leq', 'gtr', 'geq'
- ),
- /* Internal commands */
- 3 => array(
- 'shift',
- 'cd', 'dir', 'echo',
- 'setlocal', 'endlocal', 'set',
- 'pause'
- ),
- /* Special files */
-
- 4 => array(
- 'prn', 'nul', 'lpt3', 'lpt2', 'lpt1', 'con',
- 'com4', 'com3', 'com2', 'com1', 'aux'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #00b100; font-weight: bold;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #b1b100; font-weight: bold;',
- 4 => 'color: #0000ff; font-weight: bold;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #33cc33;',
- 1 => 'color: #33cc33;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- 0 => 'color: #b100b1; font-weight: bold;',
- 1 => 'color: #448844;',
- 2 => 'color: #448888;'
- )
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'URLS' => array(
- 1 => 'http://www.ss64.com/nt/{FNAME}.html',
- 2 => 'http://www.ss64.com/nt/{FNAME}.html',
- 3 => 'http://www.ss64.com/nt/{FNAME}.html',
- 4 => 'http://www.ss64.com/nt/{FNAME}.html'
- ),
- 'REGEXPS' => array(
- /* Label */
- 0 => array(
-/* GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\s\n]*)',*/
- GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\n]*)',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 'si',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- /* Variable assignement */
- 1 => array(
-/* GESHI_SEARCH => '(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\s\n]+)([\s]*=)',*/
- GESHI_SEARCH => '(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\n]+)([\s]*=)',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 'si',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3'
- ),
- /* Arguments or variable evaluation */
- 2 => array(
-/* GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/
- GESHI_SEARCH => '(%)([\d*]|[^%]*(?=%))((?<!%\d)%|)',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 'si',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3'
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * dos.php
+ * -------
+ * Author: Alessandro Staltari (staltari at geocities.com)
+ * Copyright: (c) 2005 Alessandro Staltari (http://www.geocities.com/SiliconValley/Vista/8155/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/07/05
+ *
+ * DOS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/07/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/07/05)
+ * -------------------------
+ *
+ * - Find a way to higlight %*
+ * - Highlight pipes and redirection (do we really need this?)
+ * - Add missing keywords.
+ * - Find a good hyperlink for keywords.
+ * - Improve styles.
+ *
+ * KNOWN ISSUES (updated 2005/07/07)
+ * ---------------------------------
+ *
+ * - Doesn't even try to handle spaces in variables name or labels (I can't
+ * find a reliable way to establish if a sting is a name or not, in some
+ * cases it depends on the contex or enviroment status).
+ * - Doesn't handle %%[letter] pseudo variable used inside FOR constructs
+ * (it should be done only into its scope: how to handle variable it?).
+ * - Doesn't handle %~[something] pseudo arguments.
+ * - If the same keyword is placed at the end of the line and the
+ * beginning of the next, the second occourrence is not highlighted
+ * (this should be a GeSHi bug, not related to the language definition).
+ * - I can't avoid to have keyword highlighted even when they are not used
+ * as keywords but, for example, as arguments to the echo command.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'DOS',
+ 'COMMENT_SINGLE' => array(1 =>'REM', 2 => '@REM'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ /* Flow control keywords */
+ 1 => array(
+ 'if', 'else', 'goto',
+ 'for', 'in', 'do',
+ 'call', 'exit'
+ ),
+ /* IF statement keywords */
+ 2 => array(
+ 'not', 'exist', 'errorlevel',
+ 'defined',
+ 'equ', 'neq', 'lss', 'leq', 'gtr', 'geq'
+ ),
+ /* Internal commands */
+ 3 => array(
+ 'shift',
+ 'cd', 'dir', 'echo',
+ 'setlocal', 'endlocal', 'set',
+ 'pause'
+ ),
+ /* Special files */
+
+ 4 => array(
+ 'prn', 'nul', 'lpt3', 'lpt2', 'lpt1', 'con',
+ 'com4', 'com3', 'com2', 'com1', 'aux'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #00b100; font-weight: bold;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #b1b100; font-weight: bold;',
+ 4 => 'color: #0000ff; font-weight: bold;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #33cc33;',
+ 1 => 'color: #33cc33;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #b100b1; font-weight: bold;',
+ 1 => 'color: #448844;',
+ 2 => 'color: #448888;'
+ )
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'URLS' => array(
+ 1 => 'http://www.ss64.com/nt/{FNAME}.html',
+ 2 => 'http://www.ss64.com/nt/{FNAME}.html',
+ 3 => 'http://www.ss64.com/nt/{FNAME}.html',
+ 4 => 'http://www.ss64.com/nt/{FNAME}.html'
+ ),
+ 'REGEXPS' => array(
+ /* Label */
+ 0 => array(
+/* GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\s\n]*)',*/
+ GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((?<!\n)[^\n]*)',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 'si',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ /* Variable assignement */
+ 1 => array(
+/* GESHI_SEARCH => '(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\s\n]+)([\s]*=)',*/
+ GESHI_SEARCH => '(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\n]+)([\s]*=)',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 'si',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3'
+ ),
+ /* Arguments or variable evaluation */
+ 2 => array(
+/* GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/
+ GESHI_SEARCH => '(%)([\d*]|[^%]*(?=%))((?<!%\d)%|)',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 'si',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3'
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/dot.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/dot.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/dot.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,158 +1,158 @@
-<?php
-/*************************************************************************************
- * dot.php
- * ---------------------------------
- * Author: Adrien Friggeri (adrien at friggeri.net)
- * Copyright: (c) 2007 Adrien Friggeri (http://www.friggeri.net)
- * Release Version: 1.0.7.21
- * Date Started: 2007/05/30
- *
- * dot language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2007/05/30 (1.0.0)
- * - First Release
- *
- * TODO (updated 2007/05/30)
- * -------------------------
- * Everything
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'dot',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array('URL', 'arrowhead', 'arrowsize', 'arrowtail', 'bb', 'bgcolor', 'bottomlabel',
- 'center', 'clusterrank', 'color', 'comment', 'constraint', 'decorate',
- 'dir', 'distortion', 'fillcolor', 'fixedsize', 'fontcolor',
- 'fontname', 'fontsize', 'group', 'headclip', 'headlabel', 'headport',
- 'height', 'id', 'label', 'labelangle', 'labeldistance', 'labelfontcolor',
- 'labelfontname', 'labelfontsize', 'layer', 'layers', 'margin', 'mclimit',
- 'minlen', 'nodesep', 'nslimit', 'ordering', 'orientation', 'page',
- 'pagedir', 'peripheries', 'port_label_distance', 'quantum', 'rank', 'rankdir',
- 'ranksep', 'ratio', 'regular', 'rotate', 'samehead', 'sametail', 'searchsize',
- 'shape', 'shapefile', 'showboxes', 'sides', 'size', 'skew', 'style',
- 'tailclip', 'taillabel', 'tailport', 'toplabel', 'weight', 'width'
- ),
- 2 => array('node', 'graph', 'digraph', 'strict', 'edge', 'subgraph'),
- 3 => array('FALSE', 'Mcircle', 'Mdiamond', 'Mrecord', 'Msquare', 'TRUE', 'auto', 'back',
- 'bold', 'both', 'box', 'circle', 'compress', 'dashed', 'diamond', 'dot',
- 'dotted', 'doublecircle', 'doubleoctagon', 'egg', 'ellipse', 'epsf', 'false',
- 'fill', 'filled', 'forward', 'global', 'hexagon', 'house', 'inv', 'invdot',
- 'invhouse', 'invis', 'invodot', 'invtrapezium', 'invtriangle', 'local', 'max',
- 'min', 'none', 'normal', 'octagon', 'odot', 'out', 'parallelogram', 'plaintext',
- 'polygon', 'record', 'same', 'solid', 'trapezium', 'triangle', 'tripleoctagon',
- 'true'
- ),
- 4 => array('aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'black',
- 'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue',
- 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson',
- 'cyan', 'darkgoldenrod', 'darkgreen', 'darkkhaki', 'darkolivegreen',
- 'darkorange', 'darkorchid', 'darksalmon', 'darkseagreen', 'darkslateblue',
- 'darkslategray', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue',
- 'dimgray', 'dodgerblue', 'firebrick', 'forestgreen', 'gainsboro', 'ghostwhite',
- 'gold', 'goldenrod', 'gray', 'green', 'greenyellow', 'honeydew', 'hotpink',
- 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush',
- 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcyan', 'lightgoldenrod',
- 'lightgoldenrodyellow', 'lightgray', 'lightpink', 'lightsalmon',
- 'lightseagreen', 'lightskyblue', 'lightslateblue', 'lightslategray',
- 'lightyellow', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine',
- 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen',
- 'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred',
- 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'navy',
- 'navyblue', 'oldlace', 'olivedrab', 'oralwhite', 'orange', 'orangered',
- 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred',
- 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple',
- 'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'salmon2', 'sandybrown',
- 'seagreen', 'seashell', 'sienna', 'skyblue', 'slateblue', 'slategray', 'snow',
- 'springgreen', 'steelblue', 'tan', 'thistle', 'tomato', 'turquoise', 'violet',
- 'violetred', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen'
- )
- ),
- 'SYMBOLS' => array(
- '[', ']', '{', '}', '-', '+', '*', '/', '<', '>', '!', '~', '%', '&', '|', '='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000066;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #993333;',
- 4 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #339933;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #af624d; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'METHODS' => array(
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- ),
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTER' => '',
- 'REGEXPS' => array(),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- 1 => true,
- 2 => true,
- 3 => true
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * dot.php
+ * ---------------------------------
+ * Author: Adrien Friggeri (adrien at friggeri.net)
+ * Copyright: (c) 2007 Adrien Friggeri (http://www.friggeri.net)
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/05/30
+ *
+ * dot language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2007/05/30 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2007/05/30)
+ * -------------------------
+ * Everything
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'dot',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array('URL', 'arrowhead', 'arrowsize', 'arrowtail', 'bb', 'bgcolor', 'bottomlabel',
+ 'center', 'clusterrank', 'color', 'comment', 'constraint', 'decorate',
+ 'dir', 'distortion', 'fillcolor', 'fixedsize', 'fontcolor',
+ 'fontname', 'fontsize', 'group', 'headclip', 'headlabel', 'headport',
+ 'height', 'id', 'label', 'labelangle', 'labeldistance', 'labelfontcolor',
+ 'labelfontname', 'labelfontsize', 'layer', 'layers', 'margin', 'mclimit',
+ 'minlen', 'nodesep', 'nslimit', 'ordering', 'orientation', 'page',
+ 'pagedir', 'peripheries', 'port_label_distance', 'quantum', 'rank', 'rankdir',
+ 'ranksep', 'ratio', 'regular', 'rotate', 'samehead', 'sametail', 'searchsize',
+ 'shape', 'shapefile', 'showboxes', 'sides', 'size', 'skew', 'style',
+ 'tailclip', 'taillabel', 'tailport', 'toplabel', 'weight', 'width'
+ ),
+ 2 => array('node', 'graph', 'digraph', 'strict', 'edge', 'subgraph'),
+ 3 => array('FALSE', 'Mcircle', 'Mdiamond', 'Mrecord', 'Msquare', 'TRUE', 'auto', 'back',
+ 'bold', 'both', 'box', 'circle', 'compress', 'dashed', 'diamond', 'dot',
+ 'dotted', 'doublecircle', 'doubleoctagon', 'egg', 'ellipse', 'epsf', 'false',
+ 'fill', 'filled', 'forward', 'global', 'hexagon', 'house', 'inv', 'invdot',
+ 'invhouse', 'invis', 'invodot', 'invtrapezium', 'invtriangle', 'local', 'max',
+ 'min', 'none', 'normal', 'octagon', 'odot', 'out', 'parallelogram', 'plaintext',
+ 'polygon', 'record', 'same', 'solid', 'trapezium', 'triangle', 'tripleoctagon',
+ 'true'
+ ),
+ 4 => array('aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'black',
+ 'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue',
+ 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson',
+ 'cyan', 'darkgoldenrod', 'darkgreen', 'darkkhaki', 'darkolivegreen',
+ 'darkorange', 'darkorchid', 'darksalmon', 'darkseagreen', 'darkslateblue',
+ 'darkslategray', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue',
+ 'dimgray', 'dodgerblue', 'firebrick', 'forestgreen', 'gainsboro', 'ghostwhite',
+ 'gold', 'goldenrod', 'gray', 'green', 'greenyellow', 'honeydew', 'hotpink',
+ 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush',
+ 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcyan', 'lightgoldenrod',
+ 'lightgoldenrodyellow', 'lightgray', 'lightpink', 'lightsalmon',
+ 'lightseagreen', 'lightskyblue', 'lightslateblue', 'lightslategray',
+ 'lightyellow', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine',
+ 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen',
+ 'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred',
+ 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'navy',
+ 'navyblue', 'oldlace', 'olivedrab', 'oralwhite', 'orange', 'orangered',
+ 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred',
+ 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple',
+ 'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'salmon2', 'sandybrown',
+ 'seagreen', 'seashell', 'sienna', 'skyblue', 'slateblue', 'slategray', 'snow',
+ 'springgreen', 'steelblue', 'tan', 'thistle', 'tomato', 'turquoise', 'violet',
+ 'violetred', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '{', '}', '-', '+', '*', '/', '<', '>', '!', '~', '%', '&', '|', '='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000066;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #993333;',
+ 4 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #339933;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #af624d; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTER' => '',
+ 'REGEXPS' => array(),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ 1 => true,
+ 2 => true,
+ 3 => true
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/eiffel.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/eiffel.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/eiffel.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,394 +1,394 @@
-<?php
-/*************************************************************************************
- * eiffel.php
- * ----------
- * Author: Zoran Simic (zsimic at axarosenberg.com)
- * Copyright: (c) 2005 Zoran Simic
- * Release Version: 1.0.7.21
- * Date Started: 2005/06/30
- *
- * Eiffel language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/06/30 (1.0.7)
- * - Initial release
- *
- * TODO (updated 2005/06/30)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
- $language_data = array (
- 'LANG_NAME' => 'Eiffel',
- 'COMMENT_SINGLE' => array(1 => '--'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '%',
- 'KEYWORDS' => array(
- 1 => array(
- 'separate',
- 'invariant',
- 'inherit',
- 'indexing',
- 'feature',
- 'expanded',
- 'deferred',
- 'class'
- ),
- 2 => array(
- 'xor',
- 'when',
- 'variant',
- 'until',
- 'unique',
- 'undefine',
- 'then',
- 'strip',
- 'select',
- 'retry',
- 'rescue',
- 'require',
- 'rename',
- 'reference',
- 'redefine',
- 'prefix',
- 'or',
- 'once',
- 'old',
- 'obsolete',
- 'not',
- 'loop',
- 'local',
- 'like',
- 'is',
- 'inspect',
- 'infix',
- 'include',
- 'implies',
- 'if',
- 'frozen',
- 'from',
- 'external',
- 'export',
- 'ensure',
- 'end',
- 'elseif',
- 'else',
- 'do',
- 'creation',
- 'create',
- 'check',
- 'as',
- 'and',
- 'alias',
- 'agent'
- ),
- 3 => array(
- 'Void',
- 'True',
- 'Result',
- 'Precursor',
- 'False',
- 'Current'
- ),
- 4 => array(
- 'UNIX_SIGNALS',
- 'UNIX_FILE_INFO',
- 'UNBOUNDED',
- 'TWO_WAY_TREE_CURSOR',
- 'TWO_WAY_TREE',
- 'TWO_WAY_SORTED_SET',
- 'TWO_WAY_LIST',
- 'TWO_WAY_CURSOR_TREE',
- 'TWO_WAY_CIRCULAR',
- 'TWO_WAY_CHAIN_ITERATOR',
- 'TUPLE',
- 'TREE',
- 'TRAVERSABLE',
- 'TO_SPECIAL',
- 'THREAD_CONTROL',
- 'THREAD_ATTRIBUTES',
- 'THREAD',
- 'TABLE',
- 'SUBSET',
- 'STRING_HANDLER',
- 'STRING',
- 'STREAM',
- 'STORABLE',
- 'STD_FILES',
- 'STACK',
- 'SPECIAL',
- 'SORTED_TWO_WAY_LIST',
- 'SORTED_STRUCT',
- 'SORTED_LIST',
- 'SINGLE_MATH',
- 'SET',
- 'SEQUENCE',
- 'SEQ_STRING',
- 'SEMAPHORE',
- 'ROUTINE',
- 'RESIZABLE',
- 'RECURSIVE_TREE_CURSOR',
- 'RECURSIVE_CURSOR_TREE',
- 'REAL_REF',
- 'REAL',
- 'RAW_FILE',
- 'RANDOM',
- 'QUEUE',
- 'PROXY',
- 'PROFILING_SETTING',
- 'PROCEDURE',
- 'PRIORITY_QUEUE',
- 'PRIMES',
- 'PRECOMP',
- 'POINTER_REF',
- 'POINTER',
- 'PLATFORM',
- 'PLAIN_TEXT_FILE',
- 'PATH_NAME',
- 'PART_SORTED_TWO_WAY_LIST',
- 'PART_SORTED_SET',
- 'PART_SORTED_LIST',
- 'PART_COMPARABLE',
- 'OPERATING_ENVIRONMENT',
- 'ONCE_CONTROL',
- 'OBJECT_OWNER',
- 'OBJECT_CONTROL',
- 'NUMERIC',
- 'NONE',
- 'MUTEX',
- 'MULTI_ARRAY_LIST',
- 'MULTAR_LIST_CURSOR',
- 'MEMORY',
- 'MEM_INFO',
- 'MEM_CONST',
- 'MATH_CONST',
- 'LIST',
- 'LINKED_TREE_CURSOR',
- 'LINKED_TREE',
- 'LINKED_STACK',
- 'LINKED_SET',
- 'LINKED_QUEUE',
- 'LINKED_PRIORITY_QUEUE',
- 'LINKED_LIST_CURSOR',
- 'LINKED_LIST',
- 'LINKED_CURSOR_TREE',
- 'LINKED_CIRCULAR',
- 'LINKABLE',
- 'LINEAR_ITERATOR',
- 'LINEAR',
- 'ITERATOR',
- 'IO_MEDIUM',
- 'INTERNAL',
- 'INTEGER_REF',
- 'INTEGER_INTERVAL',
- 'INTEGER',
- 'INFINITE',
- 'INDEXABLE',
- 'IDENTIFIED_CONTROLLER',
- 'IDENTIFIED',
- 'HIERARCHICAL',
- 'HEAP_PRIORITY_QUEUE',
- 'HASHABLE',
- 'HASH_TABLE_CURSOR',
- 'HASH_TABLE',
- 'GENERAL',
- 'GC_INFO',
- 'FUNCTION',
- 'FORMAT_INTEGER',
- 'FORMAT_DOUBLE',
- 'FIXED_TREE',
- 'FIXED_LIST',
- 'FIXED',
- 'FINITE',
- 'FILE_NAME',
- 'FILE',
- 'FIBONACCI',
- 'EXECUTION_ENVIRONMENT',
- 'EXCEPTIONS',
- 'EXCEP_CONST',
- 'DYNAMIC_TREE',
- 'DYNAMIC_LIST',
- 'DYNAMIC_CIRCULAR',
- 'DYNAMIC_CHAIN',
- 'DOUBLE_REF',
- 'DOUBLE_MATH',
- 'DOUBLE',
- 'DISPENSER',
- 'DIRECTORY_NAME',
- 'DIRECTORY',
- 'DECLARATOR',
- 'DEBUG_OUTPUT',
- 'CURSOR_TREE_ITERATOR',
- 'CURSOR_TREE',
- 'CURSOR_STRUCTURE',
- 'CURSOR',
- 'COUNTABLE_SEQUENCE',
- 'COUNTABLE',
- 'CONTAINER',
- 'CONSOLE',
- 'CONDITION_VARIABLE',
- 'COMPARABLE_STRUCT',
- 'COMPARABLE_SET',
- 'COMPARABLE',
- 'COMPACT_TREE_CURSOR',
- 'COMPACT_CURSOR_TREE',
- 'COLLECTION',
- 'CIRCULAR_CURSOR',
- 'CIRCULAR',
- 'CHARACTER_REF',
- 'CHARACTER',
- 'CHAIN',
- 'CELL',
- 'BOX',
- 'BOUNDED_STACK',
- 'BOUNDED_QUEUE',
- 'BOUNDED',
- 'BOOLEAN_REF',
- 'BOOLEAN',
- 'BOOL_STRING',
- 'BIT_REF',
- 'BINARY_TREE',
- 'BINARY_SEARCH_TREE_SET',
- 'BINARY_SEARCH_TREE',
- 'BILINEAR',
- 'BI_LINKABLE',
- 'BASIC_ROUTINES',
- 'BAG',
- 'ASCII',
- 'ARRAYED_TREE',
- 'ARRAYED_STACK',
- 'ARRAYED_QUEUE',
- 'ARRAYED_LIST_CURSOR',
- 'ARRAYED_LIST',
- 'ARRAYED_CIRCULAR',
- 'ARRAY2',
- 'ARRAY',
- 'ARGUMENTS',
- 'ANY',
- 'ACTIVE'
- ),
- 5 => array(
- 'yes',
- 'visible',
- 'trace',
- 'system',
- 'root',
- 'profile',
- 'override_cluster',
- 'object',
- 'no',
- 'multithreaded',
- 'msil_generation_type',
- 'line_generation',
- 'library',
- 'inlining_size',
- 'inlining',
- 'include_path',
- 'il_verifiable',
- 'exclude',
- 'exception_trace',
- 'dynamic_runtime',
- 'dotnet_naming_convention',
- 'disabled_debug',
- 'default',
- 'debug',
- 'dead_code_removal',
- 'console_application',
- 'cluster',
- 'cls_compliant',
- 'check_vape',
- 'assertion',
- 'array_optimization',
- 'all',
- 'address_expression'
- ),
- ),
- 'SYMBOLS' => array(
- '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
- '(', ')', '{', '}', '[', ']', '#'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => true,
- 5 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0600FF; font-weight: bold;',
- 2 => 'color: #0600FF; font-weight: bold;',
- 3 => 'color: #800080;',
- 4 => 'color: #800000',
- 5 => 'color: #603000;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008000; font-style: italic;',
- 'MULTI' => ''
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #005070; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #0080A0;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #000060;',
- 2 => 'color: #000050;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #600000;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => 'http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+{FNAME}&btnI=I%27m+Feeling+Lucky'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * eiffel.php
+ * ----------
+ * Author: Zoran Simic (zsimic at axarosenberg.com)
+ * Copyright: (c) 2005 Zoran Simic
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/06/30
+ *
+ * Eiffel language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/06/30 (1.0.7)
+ * - Initial release
+ *
+ * TODO (updated 2005/06/30)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+ 'LANG_NAME' => 'Eiffel',
+ 'COMMENT_SINGLE' => array(1 => '--'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '%',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'separate',
+ 'invariant',
+ 'inherit',
+ 'indexing',
+ 'feature',
+ 'expanded',
+ 'deferred',
+ 'class'
+ ),
+ 2 => array(
+ 'xor',
+ 'when',
+ 'variant',
+ 'until',
+ 'unique',
+ 'undefine',
+ 'then',
+ 'strip',
+ 'select',
+ 'retry',
+ 'rescue',
+ 'require',
+ 'rename',
+ 'reference',
+ 'redefine',
+ 'prefix',
+ 'or',
+ 'once',
+ 'old',
+ 'obsolete',
+ 'not',
+ 'loop',
+ 'local',
+ 'like',
+ 'is',
+ 'inspect',
+ 'infix',
+ 'include',
+ 'implies',
+ 'if',
+ 'frozen',
+ 'from',
+ 'external',
+ 'export',
+ 'ensure',
+ 'end',
+ 'elseif',
+ 'else',
+ 'do',
+ 'creation',
+ 'create',
+ 'check',
+ 'as',
+ 'and',
+ 'alias',
+ 'agent'
+ ),
+ 3 => array(
+ 'Void',
+ 'True',
+ 'Result',
+ 'Precursor',
+ 'False',
+ 'Current'
+ ),
+ 4 => array(
+ 'UNIX_SIGNALS',
+ 'UNIX_FILE_INFO',
+ 'UNBOUNDED',
+ 'TWO_WAY_TREE_CURSOR',
+ 'TWO_WAY_TREE',
+ 'TWO_WAY_SORTED_SET',
+ 'TWO_WAY_LIST',
+ 'TWO_WAY_CURSOR_TREE',
+ 'TWO_WAY_CIRCULAR',
+ 'TWO_WAY_CHAIN_ITERATOR',
+ 'TUPLE',
+ 'TREE',
+ 'TRAVERSABLE',
+ 'TO_SPECIAL',
+ 'THREAD_CONTROL',
+ 'THREAD_ATTRIBUTES',
+ 'THREAD',
+ 'TABLE',
+ 'SUBSET',
+ 'STRING_HANDLER',
+ 'STRING',
+ 'STREAM',
+ 'STORABLE',
+ 'STD_FILES',
+ 'STACK',
+ 'SPECIAL',
+ 'SORTED_TWO_WAY_LIST',
+ 'SORTED_STRUCT',
+ 'SORTED_LIST',
+ 'SINGLE_MATH',
+ 'SET',
+ 'SEQUENCE',
+ 'SEQ_STRING',
+ 'SEMAPHORE',
+ 'ROUTINE',
+ 'RESIZABLE',
+ 'RECURSIVE_TREE_CURSOR',
+ 'RECURSIVE_CURSOR_TREE',
+ 'REAL_REF',
+ 'REAL',
+ 'RAW_FILE',
+ 'RANDOM',
+ 'QUEUE',
+ 'PROXY',
+ 'PROFILING_SETTING',
+ 'PROCEDURE',
+ 'PRIORITY_QUEUE',
+ 'PRIMES',
+ 'PRECOMP',
+ 'POINTER_REF',
+ 'POINTER',
+ 'PLATFORM',
+ 'PLAIN_TEXT_FILE',
+ 'PATH_NAME',
+ 'PART_SORTED_TWO_WAY_LIST',
+ 'PART_SORTED_SET',
+ 'PART_SORTED_LIST',
+ 'PART_COMPARABLE',
+ 'OPERATING_ENVIRONMENT',
+ 'ONCE_CONTROL',
+ 'OBJECT_OWNER',
+ 'OBJECT_CONTROL',
+ 'NUMERIC',
+ 'NONE',
+ 'MUTEX',
+ 'MULTI_ARRAY_LIST',
+ 'MULTAR_LIST_CURSOR',
+ 'MEMORY',
+ 'MEM_INFO',
+ 'MEM_CONST',
+ 'MATH_CONST',
+ 'LIST',
+ 'LINKED_TREE_CURSOR',
+ 'LINKED_TREE',
+ 'LINKED_STACK',
+ 'LINKED_SET',
+ 'LINKED_QUEUE',
+ 'LINKED_PRIORITY_QUEUE',
+ 'LINKED_LIST_CURSOR',
+ 'LINKED_LIST',
+ 'LINKED_CURSOR_TREE',
+ 'LINKED_CIRCULAR',
+ 'LINKABLE',
+ 'LINEAR_ITERATOR',
+ 'LINEAR',
+ 'ITERATOR',
+ 'IO_MEDIUM',
+ 'INTERNAL',
+ 'INTEGER_REF',
+ 'INTEGER_INTERVAL',
+ 'INTEGER',
+ 'INFINITE',
+ 'INDEXABLE',
+ 'IDENTIFIED_CONTROLLER',
+ 'IDENTIFIED',
+ 'HIERARCHICAL',
+ 'HEAP_PRIORITY_QUEUE',
+ 'HASHABLE',
+ 'HASH_TABLE_CURSOR',
+ 'HASH_TABLE',
+ 'GENERAL',
+ 'GC_INFO',
+ 'FUNCTION',
+ 'FORMAT_INTEGER',
+ 'FORMAT_DOUBLE',
+ 'FIXED_TREE',
+ 'FIXED_LIST',
+ 'FIXED',
+ 'FINITE',
+ 'FILE_NAME',
+ 'FILE',
+ 'FIBONACCI',
+ 'EXECUTION_ENVIRONMENT',
+ 'EXCEPTIONS',
+ 'EXCEP_CONST',
+ 'DYNAMIC_TREE',
+ 'DYNAMIC_LIST',
+ 'DYNAMIC_CIRCULAR',
+ 'DYNAMIC_CHAIN',
+ 'DOUBLE_REF',
+ 'DOUBLE_MATH',
+ 'DOUBLE',
+ 'DISPENSER',
+ 'DIRECTORY_NAME',
+ 'DIRECTORY',
+ 'DECLARATOR',
+ 'DEBUG_OUTPUT',
+ 'CURSOR_TREE_ITERATOR',
+ 'CURSOR_TREE',
+ 'CURSOR_STRUCTURE',
+ 'CURSOR',
+ 'COUNTABLE_SEQUENCE',
+ 'COUNTABLE',
+ 'CONTAINER',
+ 'CONSOLE',
+ 'CONDITION_VARIABLE',
+ 'COMPARABLE_STRUCT',
+ 'COMPARABLE_SET',
+ 'COMPARABLE',
+ 'COMPACT_TREE_CURSOR',
+ 'COMPACT_CURSOR_TREE',
+ 'COLLECTION',
+ 'CIRCULAR_CURSOR',
+ 'CIRCULAR',
+ 'CHARACTER_REF',
+ 'CHARACTER',
+ 'CHAIN',
+ 'CELL',
+ 'BOX',
+ 'BOUNDED_STACK',
+ 'BOUNDED_QUEUE',
+ 'BOUNDED',
+ 'BOOLEAN_REF',
+ 'BOOLEAN',
+ 'BOOL_STRING',
+ 'BIT_REF',
+ 'BINARY_TREE',
+ 'BINARY_SEARCH_TREE_SET',
+ 'BINARY_SEARCH_TREE',
+ 'BILINEAR',
+ 'BI_LINKABLE',
+ 'BASIC_ROUTINES',
+ 'BAG',
+ 'ASCII',
+ 'ARRAYED_TREE',
+ 'ARRAYED_STACK',
+ 'ARRAYED_QUEUE',
+ 'ARRAYED_LIST_CURSOR',
+ 'ARRAYED_LIST',
+ 'ARRAYED_CIRCULAR',
+ 'ARRAY2',
+ 'ARRAY',
+ 'ARGUMENTS',
+ 'ANY',
+ 'ACTIVE'
+ ),
+ 5 => array(
+ 'yes',
+ 'visible',
+ 'trace',
+ 'system',
+ 'root',
+ 'profile',
+ 'override_cluster',
+ 'object',
+ 'no',
+ 'multithreaded',
+ 'msil_generation_type',
+ 'line_generation',
+ 'library',
+ 'inlining_size',
+ 'inlining',
+ 'include_path',
+ 'il_verifiable',
+ 'exclude',
+ 'exception_trace',
+ 'dynamic_runtime',
+ 'dotnet_naming_convention',
+ 'disabled_debug',
+ 'default',
+ 'debug',
+ 'dead_code_removal',
+ 'console_application',
+ 'cluster',
+ 'cls_compliant',
+ 'check_vape',
+ 'assertion',
+ 'array_optimization',
+ 'all',
+ 'address_expression'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
+ '(', ')', '{', '}', '[', ']', '#'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => true,
+ 5 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0600FF; font-weight: bold;',
+ 2 => 'color: #0600FF; font-weight: bold;',
+ 3 => 'color: #800080;',
+ 4 => 'color: #800000',
+ 5 => 'color: #603000;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008000; font-style: italic;',
+ 'MULTI' => ''
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #005070; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #0080A0;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #000060;',
+ 2 => 'color: #000050;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #600000;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => 'http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+{FNAME}&btnI=I%27m+Feeling+Lucky'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/fortran.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/fortran.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/fortran.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,156 +1,156 @@
-<?php
-/*************************************************************************************
- * fortran.php
- * -----------
- * Author: Cedric Arrabie (cedric.arrabie at univ-pau.fr)
- * Copyright: (C) 2006 Cetric Arrabie
- * Release Version: 1.0.7.21
- * Date Started: 2006/04/22
- *
- * Fortran language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/04/20 (1.0.0)
- * - First Release
- *
- * TODO
- * -------------------------
- * - Get a list of inbuilt functions to add (and explore fortran more
- * to complete this rather bare language file)
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME'=>'Fortran',
- 'COMMENT_SINGLE'=> array(1 =>'!',2=>'Cf2py'),
- 'COMMENT_MULTI'=> array(),
- 'CASE_KEYWORDS'=> GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS'=> array("'",'"'),
- 'ESCAPE_CHAR'=>'\\',
- 'KEYWORDS'=> array(
- 1 => array(
- 'allocate','block','call','case','contains','continue','cycle','deallocate',
- 'default','do','else','elseif','elsewhere','end','enddo','endif','endwhere',
- 'entry','exit','function','go','goto','if','interface','module','nullify','only',
- 'operator','procedure','program','recursive','return','select','stop',
- 'subroutine','then','to','where','while',
- 'access','action','advance','blank','blocksize','carriagecontrol',
- 'delim','direct','eor','err','exist','file','flen','fmt','form','formatted',
- 'iostat','name','named','nextrec','nml','number','opened','pad','position',
- 'readwrite','recl','sequential','status','unformatted','unit'
- ),
- 2 => array(
- '.AND.','.EQ.','.EQV.','.GE.','.GT.','.LE.','.LT.','.NE.','.NEQV.','.NOT.',
- '.OR.','.TRUE.','.FALSE.'
- ),
- 3 => array(
- 'allocatable','character','common','complex','data','dimension','double',
- 'equivalence','external','implicit','in','inout','integer','intent','intrinsic',
- 'kind','logical','namelist','none','optional','out','parameter','pointer',
- 'private','public','real','result','save','sequence','target','type','use'
- ),
- 4 => array(
- 'abs','achar','acos','adjustl','adjustr','aimag','aint','all','allocated',
- 'anint','any','asin','atan','atan2','bit_size','break','btest','carg',
- 'ceiling','char','cmplx','conjg','cos','cosh','cpu_time','count','cshift',
- 'date_and_time','dble','digits','dim','dot_product','dprod dvchk',
- 'eoshift','epsilon','error','exp','exponent','floor','flush','fraction',
- 'getcl','huge','iachar','iand','ibclr','ibits','ibset','ichar','ieor','index',
- 'int','intrup','invalop','ior','iostat_msg','ishft','ishftc','lbound',
- 'len','len_trim','lge','lgt','lle','llt','log','log10','matmul','max','maxexponent',
- 'maxloc','maxval','merge','min','minexponent','minloc','minval','mod','modulo',
- 'mvbits','nbreak','ndperr','ndpexc','nearest','nint','not','offset','ovefl',
- 'pack','precfill','precision','present','product','prompt','radix',
- 'random_number','random_seed','range','repeat','reshape','rrspacing',
- 'scale','scan','segment','selected_int_kind','selected_real_kind',
- 'set_exponent','shape','sign','sin','sinh','size','spacing','spread','sqrt',
- 'sum system','system_clock','tan','tanh','timer','tiny','transfer','transpose',
- 'trim','ubound','undfl','unpack','val','verify'
- ),
- ),
- 'SYMBOLS'=> array(
- '(',')','{','}','[',']','=','+','-','*','/','!','%','^','&',':'
- ),
- 'CASE_SENSITIVE'=> array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES'=> array(
- 'KEYWORDS'=> array(
- 1 =>'color: #b1b100;',
- 2 =>'color: #000000; font-weight: bold;',
- 3 =>'color: #000066;',
- 4 =>'color: #993333;'
- ),
- 'COMMENTS'=> array(
- 1 =>'color: #808080; font-style: italic;',
- 2 =>'color: #339933;',
- 'MULTI'=>'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR'=> array(
- 0 =>'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS'=> array(
- 0 =>'color: #66cc66;'
- ),
- 'STRINGS'=> array(
- 0 =>'color: #ff0000;'
- ),
- 'NUMBERS'=> array(
- 0 =>'color: #cc66cc;'
- ),
- 'METHODS'=> array(
- 1 =>'color: #202020;',
- 2 =>'color: #202020;'
- ),
- 'SYMBOLS'=> array(
- 0 =>'color: #66cc66;'
- ),
- 'REGEXPS'=> array(
- ),
- 'SCRIPT'=> array(
- )
- ),
- 'URLS'=> array(
- 1 =>'',
- 2 =>'',
- 3 =>'',
- 4 =>''
- ),
- 'OOLANG'=> true,
- 'OBJECT_SPLITTERS'=> array(
- 1 =>'.',
- 2 =>'::'
- ),
- 'REGEXPS'=> array(
- ),
- 'STRICT_MODE_APPLIES'=> GESHI_NEVER,
- 'SCRIPT_DELIMITERS'=> array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK'=> array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * fortran.php
+ * -----------
+ * Author: Cedric Arrabie (cedric.arrabie at univ-pau.fr)
+ * Copyright: (C) 2006 Cetric Arrabie
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/04/22
+ *
+ * Fortran language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/04/20 (1.0.0)
+ * - First Release
+ *
+ * TODO
+ * -------------------------
+ * - Get a list of inbuilt functions to add (and explore fortran more
+ * to complete this rather bare language file)
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME'=>'Fortran',
+ 'COMMENT_SINGLE'=> array(1 =>'!',2=>'Cf2py'),
+ 'COMMENT_MULTI'=> array(),
+ 'CASE_KEYWORDS'=> GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS'=> array("'",'"'),
+ 'ESCAPE_CHAR'=>'\\',
+ 'KEYWORDS'=> array(
+ 1 => array(
+ 'allocate','block','call','case','contains','continue','cycle','deallocate',
+ 'default','do','else','elseif','elsewhere','end','enddo','endif','endwhere',
+ 'entry','exit','function','go','goto','if','interface','module','nullify','only',
+ 'operator','procedure','program','recursive','return','select','stop',
+ 'subroutine','then','to','where','while',
+ 'access','action','advance','blank','blocksize','carriagecontrol',
+ 'delim','direct','eor','err','exist','file','flen','fmt','form','formatted',
+ 'iostat','name','named','nextrec','nml','number','opened','pad','position',
+ 'readwrite','recl','sequential','status','unformatted','unit'
+ ),
+ 2 => array(
+ '.AND.','.EQ.','.EQV.','.GE.','.GT.','.LE.','.LT.','.NE.','.NEQV.','.NOT.',
+ '.OR.','.TRUE.','.FALSE.'
+ ),
+ 3 => array(
+ 'allocatable','character','common','complex','data','dimension','double',
+ 'equivalence','external','implicit','in','inout','integer','intent','intrinsic',
+ 'kind','logical','namelist','none','optional','out','parameter','pointer',
+ 'private','public','real','result','save','sequence','target','type','use'
+ ),
+ 4 => array(
+ 'abs','achar','acos','adjustl','adjustr','aimag','aint','all','allocated',
+ 'anint','any','asin','atan','atan2','bit_size','break','btest','carg',
+ 'ceiling','char','cmplx','conjg','cos','cosh','cpu_time','count','cshift',
+ 'date_and_time','dble','digits','dim','dot_product','dprod dvchk',
+ 'eoshift','epsilon','error','exp','exponent','floor','flush','fraction',
+ 'getcl','huge','iachar','iand','ibclr','ibits','ibset','ichar','ieor','index',
+ 'int','intrup','invalop','ior','iostat_msg','ishft','ishftc','lbound',
+ 'len','len_trim','lge','lgt','lle','llt','log','log10','matmul','max','maxexponent',
+ 'maxloc','maxval','merge','min','minexponent','minloc','minval','mod','modulo',
+ 'mvbits','nbreak','ndperr','ndpexc','nearest','nint','not','offset','ovefl',
+ 'pack','precfill','precision','present','product','prompt','radix',
+ 'random_number','random_seed','range','repeat','reshape','rrspacing',
+ 'scale','scan','segment','selected_int_kind','selected_real_kind',
+ 'set_exponent','shape','sign','sin','sinh','size','spacing','spread','sqrt',
+ 'sum system','system_clock','tan','tanh','timer','tiny','transfer','transpose',
+ 'trim','ubound','undfl','unpack','val','verify'
+ ),
+ ),
+ 'SYMBOLS'=> array(
+ '(',')','{','}','[',']','=','+','-','*','/','!','%','^','&',':'
+ ),
+ 'CASE_SENSITIVE'=> array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES'=> array(
+ 'KEYWORDS'=> array(
+ 1 =>'color: #b1b100;',
+ 2 =>'color: #000000; font-weight: bold;',
+ 3 =>'color: #000066;',
+ 4 =>'color: #993333;'
+ ),
+ 'COMMENTS'=> array(
+ 1 =>'color: #808080; font-style: italic;',
+ 2 =>'color: #339933;',
+ 'MULTI'=>'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR'=> array(
+ 0 =>'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS'=> array(
+ 0 =>'color: #66cc66;'
+ ),
+ 'STRINGS'=> array(
+ 0 =>'color: #ff0000;'
+ ),
+ 'NUMBERS'=> array(
+ 0 =>'color: #cc66cc;'
+ ),
+ 'METHODS'=> array(
+ 1 =>'color: #202020;',
+ 2 =>'color: #202020;'
+ ),
+ 'SYMBOLS'=> array(
+ 0 =>'color: #66cc66;'
+ ),
+ 'REGEXPS'=> array(
+ ),
+ 'SCRIPT'=> array(
+ )
+ ),
+ 'URLS'=> array(
+ 1 =>'',
+ 2 =>'',
+ 3 =>'',
+ 4 =>''
+ ),
+ 'OOLANG'=> true,
+ 'OBJECT_SPLITTERS'=> array(
+ 1 =>'.',
+ 2 =>'::'
+ ),
+ 'REGEXPS'=> array(
+ ),
+ 'STRICT_MODE_APPLIES'=> GESHI_NEVER,
+ 'SCRIPT_DELIMITERS'=> array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK'=> array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/freebasic.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/freebasic.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/freebasic.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,137 +1,137 @@
-<?php
-/*************************************************************************************
- * freebasic.php
- * -------------
- * Author: Roberto Rossi
- * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)
- * Release Version: 1.0.7.21
- * Date Started: 2005/08/19
- *
- * FreeBasic (http://www.freebasic.net/) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/19 (1.0.0)
- * - First Release
- *
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
- $language_data = array (
- 'LANG_NAME' => 'FreeBasic',
- 'COMMENT_SINGLE' => array(1 => "'", 2 => '#'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- "append", "as", "asc", "asin", "asm", "atan2", "atn", "beep", "bin", "binary", "bit",
- "bitreset", "bitset", "bload", "bsave", "byref", "byte", "byval", "call",
- "callocate", "case", "cbyte", "cdbl", "cdecl", "chain", "chdir", "chr", "cint",
- "circle", "clear", "clng", "clngint", "close", "cls", "color", "command",
- "common", "cons", "const", "continue", "cos", "cshort", "csign", "csng",
- "csrlin", "cubyte", "cuint", "culngint", "cunsg", "curdir", "cushort", "custom",
- "cvd", "cvi", "cvl", "cvlongint", "cvs", "cvshort", "data", "date",
- "deallocate", "declare", "defbyte", "defdbl", "defined", "defint", "deflng",
- "deflngint", "defshort", "defsng", "defstr", "defubyte", "defuint",
- "defulngint", "defushort", "dim", "dir", "do", "double", "draw", "dylibload",
- "dylibsymbol", "else", "elseif", "end", "enum", "environ", 'environ$', "eof",
- "eqv", "erase", "err", "error", "exec", "exepath", "exit", "exp", "export",
- "extern", "field", "fix", "flip", "for", "fre", "freefile", "function", "get",
- "getjoystick", "getkey", "getmouse", "gosub", "goto", "hex", "hibyte", "hiword",
- "if", "iif", "imagecreate", "imagedestroy", "imp", "inkey", "inp", "input",
- "instr", "int", "integer", "is", "kill", "lbound", "lcase", "left", "len",
- "let", "lib", "line", "lobyte", "loc", "local", "locate", "lock", "lof", "log",
- "long", "longint", "loop", "loword", "lset", "ltrim", "mid", "mkd", "mkdir",
- "mki", "mkl", "mklongint", "mks", "mkshort", "mod", "multikey", "mutexcreate",
- "mutexdestroy", "mutexlock", "mutexunlock", "name", "next", "not", "oct", "on",
- "once", "open", "option", "or", "out", "output", "overload", "paint", "palette",
- "pascal", "pcopy", "peek", "peeki", "peeks", "pipe", "pmap", "point", "pointer",
- "poke", "pokei", "pokes", "pos", "preserve", "preset", "print", "private",
- "procptr", "pset", "ptr", "public", "put", "random", "randomize", "read",
- "reallocate", "redim", "rem", "reset", "restore", "resume", "resume", "next",
- "return", "rgb", "rgba", "right", "rmdir", "rnd", "rset", "rtrim", "run",
- "sadd", "screen", "screencopy", "screeninfo", "screenlock", "screenptr",
- "screenres", "screenset", "screensync", "screenunlock", "seek", "statement",
- "seek", "function", "selectcase", "setdate", "setenviron", "setmouse",
- "settime", "sgn", "shared", "shell", "shl", "short", "shr", "sin", "single",
- "sizeof", "sleep", "space", "spc", "sqr", "static", "stdcall", "step", "stop",
- "str", "string", "string", "strptr", "sub", "swap", "system", "tab", "tan",
- "then", "threadcreate", "threadwait", "time", "time", "timer", "to", "trans",
- "trim", "type", "ubound", "ubyte", "ucase", "uinteger", "ulongint", "union",
- "unlock", "unsigned", "until", "ushort", "using", "va_arg", "va_first",
- "va_next", "val", "val64", "valint", "varptr", "view", "viewprint", "wait",
- "wend", "while", "width", "window", "windowtitle", "with", "write", "xor",
- "zstring", "explicit", "escape", "true", "false"
- )
- ),
- 'SYMBOLS' => array(
- '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080;',
- 2 => 'color: #339933;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * freebasic.php
+ * -------------
+ * Author: Roberto Rossi
+ * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/08/19
+ *
+ * FreeBasic (http://www.freebasic.net/) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/19 (1.0.0)
+ * - First Release
+ *
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+ $language_data = array (
+ 'LANG_NAME' => 'FreeBasic',
+ 'COMMENT_SINGLE' => array(1 => "'", 2 => '#'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ "append", "as", "asc", "asin", "asm", "atan2", "atn", "beep", "bin", "binary", "bit",
+ "bitreset", "bitset", "bload", "bsave", "byref", "byte", "byval", "call",
+ "callocate", "case", "cbyte", "cdbl", "cdecl", "chain", "chdir", "chr", "cint",
+ "circle", "clear", "clng", "clngint", "close", "cls", "color", "command",
+ "common", "cons", "const", "continue", "cos", "cshort", "csign", "csng",
+ "csrlin", "cubyte", "cuint", "culngint", "cunsg", "curdir", "cushort", "custom",
+ "cvd", "cvi", "cvl", "cvlongint", "cvs", "cvshort", "data", "date",
+ "deallocate", "declare", "defbyte", "defdbl", "defined", "defint", "deflng",
+ "deflngint", "defshort", "defsng", "defstr", "defubyte", "defuint",
+ "defulngint", "defushort", "dim", "dir", "do", "double", "draw", "dylibload",
+ "dylibsymbol", "else", "elseif", "end", "enum", "environ", 'environ$', "eof",
+ "eqv", "erase", "err", "error", "exec", "exepath", "exit", "exp", "export",
+ "extern", "field", "fix", "flip", "for", "fre", "freefile", "function", "get",
+ "getjoystick", "getkey", "getmouse", "gosub", "goto", "hex", "hibyte", "hiword",
+ "if", "iif", "imagecreate", "imagedestroy", "imp", "inkey", "inp", "input",
+ "instr", "int", "integer", "is", "kill", "lbound", "lcase", "left", "len",
+ "let", "lib", "line", "lobyte", "loc", "local", "locate", "lock", "lof", "log",
+ "long", "longint", "loop", "loword", "lset", "ltrim", "mid", "mkd", "mkdir",
+ "mki", "mkl", "mklongint", "mks", "mkshort", "mod", "multikey", "mutexcreate",
+ "mutexdestroy", "mutexlock", "mutexunlock", "name", "next", "not", "oct", "on",
+ "once", "open", "option", "or", "out", "output", "overload", "paint", "palette",
+ "pascal", "pcopy", "peek", "peeki", "peeks", "pipe", "pmap", "point", "pointer",
+ "poke", "pokei", "pokes", "pos", "preserve", "preset", "print", "private",
+ "procptr", "pset", "ptr", "public", "put", "random", "randomize", "read",
+ "reallocate", "redim", "rem", "reset", "restore", "resume", "resume", "next",
+ "return", "rgb", "rgba", "right", "rmdir", "rnd", "rset", "rtrim", "run",
+ "sadd", "screen", "screencopy", "screeninfo", "screenlock", "screenptr",
+ "screenres", "screenset", "screensync", "screenunlock", "seek", "statement",
+ "seek", "function", "selectcase", "setdate", "setenviron", "setmouse",
+ "settime", "sgn", "shared", "shell", "shl", "short", "shr", "sin", "single",
+ "sizeof", "sleep", "space", "spc", "sqr", "static", "stdcall", "step", "stop",
+ "str", "string", "string", "strptr", "sub", "swap", "system", "tab", "tan",
+ "then", "threadcreate", "threadwait", "time", "time", "timer", "to", "trans",
+ "trim", "type", "ubound", "ubyte", "ucase", "uinteger", "ulongint", "union",
+ "unlock", "unsigned", "until", "ushort", "using", "va_arg", "va_first",
+ "va_next", "val", "val64", "valint", "varptr", "view", "viewprint", "wait",
+ "wend", "while", "width", "window", "windowtitle", "with", "write", "xor",
+ "zstring", "explicit", "escape", "true", "false"
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080;',
+ 2 => 'color: #339933;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/genero.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/genero.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/genero.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,464 +1,464 @@
-<?php
-/*************************************************************************************
- * genero.php
- * ----------
- * Author: Lars Gersmann (lars.gersmann at gmail.com)
- * Copyright: (c) 2007 Lars Gersmann, Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * CVS Revision Version: $Revision: 1.4 $
- *
- * Genero (FOURJ's Genero 4GL) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2007/07/01 (1.0.0)
- * - Initial release
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
- $language_data = array (
- 'LANG_NAME' => 'genero',
- 'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),
- 'COMMENT_MULTI' => array('{' => '}'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- "ABSOLUTE",
- "ACCEPT",
- "ACTION",
- "ADD",
- "AFTER",
- "ALL",
- "ALTER",
- "AND",
- "ANY",
- "APPEND",
- "APPLICATION",
- "AS",
- "AT",
- "ATTRIBUTE",
- "ATTRIBUTES",
- "AUDIT",
- "AVG",
- "BEFORE",
- "BEGIN",
- "BETWEEN",
- "BORDER",
- "BORDER",
- "BOTTOM",
- "BREAKPOINT",
- "BUFFER",
- "BUFFERED",
- "BY",
- "CALL",
- "CANCEL",
- "CASE",
- "CENTURY",
- "CHANGE",
- "CHECK",
- "CLEAR",
- "CLIPPED",
- "CLOSE",
- "CLUSTER",
- "COLUMN",
- "COLUMNS",
- "COMMAND",
- "COMMENT",
- "COMMIT",
- "COMMITTED",
- "CONCURRENT ",
- "CONNECT",
- "CONNECTION",
- "CONSTANT",
- "CONSTRAINED",
- "CONSTRAINT",
- "CONSTRUCT",
- "CONTINUE",
- "CONTROL",
- "COUNT",
- "CREATE",
- "CROSS",
- "CURRENT",
- "DATABASE",
- "DBA",
- "DEC",
- "DECLARE",
- "DEFAULT",
- "DEFAULTS",
- "DEFER",
- "DEFINE",
- "DELETE",
- "DELIMITER",
- "DESCRIBE",
- "DESTINATION",
- "DIM",
- "DIALOG",
- "DIMENSION",
- "DIRTY",
- "DISCONNECT",
- "DISPLAY",
- "DISTINCT",
- "DORMANT",
- "DOWN",
- "DROP",
- "DYNAMIC",
- "ELSE",
- "END",
- "ERROR",
- "ESCAPE",
- "EVERY",
- "EXCLUSIVE",
- "EXECUTE",
- "EXISTS",
- "EXIT",
- "EXPLAIN",
- "EXTEND",
- "EXTENT",
- "EXTERNAL",
- "FETCH",
- "FGL_DRAWBOX",
- "FIELD",
- "FIELD_TOUCHED",
- "FILE",
- "FILL",
- "FINISH",
- "FIRST",
- "FLOAT",
- "FLUSH",
- "FOR",
- "FOREACH",
- "FORM",
- "FORMAT",
- "FOUND",
- "FRACTION",
- "FREE",
- "FROM",
- "FULL",
- "FUNCTION",
- "GET_FLDBUF",
- "GLOBALS",
- "GO",
- "GOTO",
- "GRANT",
- "GROUP",
- "HAVING",
- "HEADER",
- "HELP",
- "HIDE",
- "HOLD",
- "HOUR",
- "IDLE",
- "IF",
- "IMAGE",
- "IMMEDIATE",
- "IN",
- "INDEX",
- "INFIELD",
- "INITIALIZE",
- "INNER",
- "INPUT",
- "INSERT",
- "INTERRUPT",
- "INTERVAL",
- "INTO",
- "INVISIBLE",
- "IS",
- "ISOLATION",
- "JOIN",
- "KEEP",
- "KEY",
- "LABEL",
- "LAST",
- "LEFT",
- "LENGTH",
- "LET",
- "LIKE",
- "LINE",
- "LINENO",
- "LINES",
- "LOAD",
- "LOCATE",
- "LOCK",
- "LOG",
- "LSTR",
- "MAIN",
- "MARGIN",
- "MATCHES",
- "MAX",
- "MAXCOUNT",
- "MDY",
- "MEMORY",
- "MENU",
- "MESSAGE",
- "MIN",
- "MINUTE",
- "MOD",
- "MODE",
- "MODIFY",
- "MONEY",
- "NAME",
- "NEED",
- "NEXT",
- "NO",
- "NORMAL",
- "NOT",
- "NOTFOUND",
- "NULL",
- "NUMERIC",
- "OF",
- "ON",
- "OPEN",
- "OPTION",
- "OPTIONS",
- "OR",
- "ORDER",
- "OTHERWISE",
- "OUTER",
- "OUTPUT",
- "PAGE",
- "PAGENO",
- "PAUSE",
- "PERCENT",
- "PICTURE",
- "PIPE",
- "PRECISION",
- "PREPARE",
- "PREVIOUS",
- "PRINT",
- "PRINTER",
- "PRINTX",
- "PRIOR",
- "PRIVILEGES",
- "PROCEDURE",
- "PROGRAM",
- "PROMPT",
- "PUBLIC",
- "PUT",
- "QUIT",
- "READ",
- "REAL",
- "RECORD",
- "RECOVER",
- "RED ",
- "RELATIVE",
- "RENAME",
- "REOPTIMIZATION",
- "REPEATABLE",
- "REPORT",
- "RESOURCE",
- "RETURN",
- "RETURNING",
- "REVERSE",
- "REVOKE",
- "RIGHT",
- "ROLLBACK",
- "ROLLFORWARD",
- "ROW",
- "ROWS",
- "RUN",
- "SCHEMA",
- "SCREEN",
- "SCROLL",
- "SECOND",
- "SELECT",
- "SERIAL",
- "SET",
- "SFMT",
- "SHARE",
- "SHIFT",
- "SHOW",
- "SIGNAL ",
- "SIZE",
- "SKIP",
- "SLEEP",
- "SOME",
- "SPACE",
- "SPACES",
- "SQL",
- "SQLERRMESSAGE",
- "SQLERROR",
- "SQLSTATE",
- "STABILITY",
- "START",
- "STATISTICS",
- "STEP",
- "STOP",
- "STYLE",
- "SUM",
- "SYNONYM",
- "TABLE",
- "TEMP",
- "TERMINATE",
- "TEXT",
- "THEN",
- "THROUGH",
- "THRU",
- "TO",
- "TODAY",
- "TOP",
- "TRAILER",
- "TRANSACTION ",
- "UNBUFFERED",
- "UNCONSTRAINED",
- "UNDERLINE",
- "UNION",
- "UNIQUE",
- "UNITS",
- "UNLOAD",
- "UNLOCK",
- "UP",
- "UPDATE",
- "USE",
- "USER",
- "USING",
- "VALIDATE",
- "VALUE",
- "VALUES",
- "VARCHAR",
- "VIEW",
- "WAIT",
- "WAITING",
- "WARNING",
- "WHEN",
- "WHENEVER",
- "WHERE",
- "WHILE",
- "WINDOW",
- "WITH",
- "WITHOUT",
- "WORDWRAP",
- "WORK",
- "WRAP"
- ),
- 2 => array(
- '&IFDEF', '&ENDIF'
- ),
- 3 => array(
- "ARRAY",
- "BYTE",
- "CHAR",
- "CHARACTER",
- "CURSOR",
- "DATE",
- "DATETIME",
- "DECIMAL",
- "DOUBLE",
- "FALSE",
- "INT",
- "INTEGER",
- "SMALLFLOAT",
- "SMALLINT",
- "STRING",
- "TIME",
- "TRUE"
- ),
- 4 => array(
- "BLACK",
- "BLINK",
- "BLUE",
- "BOLD",
- "ANSI",
- "ASC",
- "ASCENDING",
- "ASCII",
- "CYAN",
- "DESC",
- "DESCENDING",
- "GREEN",
- "MAGENTA",
- "OFF",
- "WHITE",
- "YELLOW",
- "YEAR",
- "DAY",
- "MONTH",
- "WEEKDAY"
- ),
- ),
- 'SYMBOLS' => array(
- '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',
- '(', ')', '[', ']'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0600FF;',
- 2 => 'color: #0000FF; font-weight: bold;',
- 3 => 'color: #008000;',
- 4 => 'color: #FF0000;',
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008080; font-style: italic;',
- 2 => 'color: #008080;',
- 'MULTI' => 'color: #008080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #008080; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #808080;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #0000FF;',
- 2 => 'color: #0000FF;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #008000;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * genero.php
+ * ----------
+ * Author: Lars Gersmann (lars.gersmann at gmail.com)
+ * Copyright: (c) 2007 Lars Gersmann, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * CVS Revision Version: $Revision: 1.4 $
+ *
+ * Genero (FOURJ's Genero 4GL) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2007/07/01 (1.0.0)
+ * - Initial release
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+ 'LANG_NAME' => 'genero',
+ 'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),
+ 'COMMENT_MULTI' => array('{' => '}'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ "ABSOLUTE",
+ "ACCEPT",
+ "ACTION",
+ "ADD",
+ "AFTER",
+ "ALL",
+ "ALTER",
+ "AND",
+ "ANY",
+ "APPEND",
+ "APPLICATION",
+ "AS",
+ "AT",
+ "ATTRIBUTE",
+ "ATTRIBUTES",
+ "AUDIT",
+ "AVG",
+ "BEFORE",
+ "BEGIN",
+ "BETWEEN",
+ "BORDER",
+ "BORDER",
+ "BOTTOM",
+ "BREAKPOINT",
+ "BUFFER",
+ "BUFFERED",
+ "BY",
+ "CALL",
+ "CANCEL",
+ "CASE",
+ "CENTURY",
+ "CHANGE",
+ "CHECK",
+ "CLEAR",
+ "CLIPPED",
+ "CLOSE",
+ "CLUSTER",
+ "COLUMN",
+ "COLUMNS",
+ "COMMAND",
+ "COMMENT",
+ "COMMIT",
+ "COMMITTED",
+ "CONCURRENT ",
+ "CONNECT",
+ "CONNECTION",
+ "CONSTANT",
+ "CONSTRAINED",
+ "CONSTRAINT",
+ "CONSTRUCT",
+ "CONTINUE",
+ "CONTROL",
+ "COUNT",
+ "CREATE",
+ "CROSS",
+ "CURRENT",
+ "DATABASE",
+ "DBA",
+ "DEC",
+ "DECLARE",
+ "DEFAULT",
+ "DEFAULTS",
+ "DEFER",
+ "DEFINE",
+ "DELETE",
+ "DELIMITER",
+ "DESCRIBE",
+ "DESTINATION",
+ "DIM",
+ "DIALOG",
+ "DIMENSION",
+ "DIRTY",
+ "DISCONNECT",
+ "DISPLAY",
+ "DISTINCT",
+ "DORMANT",
+ "DOWN",
+ "DROP",
+ "DYNAMIC",
+ "ELSE",
+ "END",
+ "ERROR",
+ "ESCAPE",
+ "EVERY",
+ "EXCLUSIVE",
+ "EXECUTE",
+ "EXISTS",
+ "EXIT",
+ "EXPLAIN",
+ "EXTEND",
+ "EXTENT",
+ "EXTERNAL",
+ "FETCH",
+ "FGL_DRAWBOX",
+ "FIELD",
+ "FIELD_TOUCHED",
+ "FILE",
+ "FILL",
+ "FINISH",
+ "FIRST",
+ "FLOAT",
+ "FLUSH",
+ "FOR",
+ "FOREACH",
+ "FORM",
+ "FORMAT",
+ "FOUND",
+ "FRACTION",
+ "FREE",
+ "FROM",
+ "FULL",
+ "FUNCTION",
+ "GET_FLDBUF",
+ "GLOBALS",
+ "GO",
+ "GOTO",
+ "GRANT",
+ "GROUP",
+ "HAVING",
+ "HEADER",
+ "HELP",
+ "HIDE",
+ "HOLD",
+ "HOUR",
+ "IDLE",
+ "IF",
+ "IMAGE",
+ "IMMEDIATE",
+ "IN",
+ "INDEX",
+ "INFIELD",
+ "INITIALIZE",
+ "INNER",
+ "INPUT",
+ "INSERT",
+ "INTERRUPT",
+ "INTERVAL",
+ "INTO",
+ "INVISIBLE",
+ "IS",
+ "ISOLATION",
+ "JOIN",
+ "KEEP",
+ "KEY",
+ "LABEL",
+ "LAST",
+ "LEFT",
+ "LENGTH",
+ "LET",
+ "LIKE",
+ "LINE",
+ "LINENO",
+ "LINES",
+ "LOAD",
+ "LOCATE",
+ "LOCK",
+ "LOG",
+ "LSTR",
+ "MAIN",
+ "MARGIN",
+ "MATCHES",
+ "MAX",
+ "MAXCOUNT",
+ "MDY",
+ "MEMORY",
+ "MENU",
+ "MESSAGE",
+ "MIN",
+ "MINUTE",
+ "MOD",
+ "MODE",
+ "MODIFY",
+ "MONEY",
+ "NAME",
+ "NEED",
+ "NEXT",
+ "NO",
+ "NORMAL",
+ "NOT",
+ "NOTFOUND",
+ "NULL",
+ "NUMERIC",
+ "OF",
+ "ON",
+ "OPEN",
+ "OPTION",
+ "OPTIONS",
+ "OR",
+ "ORDER",
+ "OTHERWISE",
+ "OUTER",
+ "OUTPUT",
+ "PAGE",
+ "PAGENO",
+ "PAUSE",
+ "PERCENT",
+ "PICTURE",
+ "PIPE",
+ "PRECISION",
+ "PREPARE",
+ "PREVIOUS",
+ "PRINT",
+ "PRINTER",
+ "PRINTX",
+ "PRIOR",
+ "PRIVILEGES",
+ "PROCEDURE",
+ "PROGRAM",
+ "PROMPT",
+ "PUBLIC",
+ "PUT",
+ "QUIT",
+ "READ",
+ "REAL",
+ "RECORD",
+ "RECOVER",
+ "RED ",
+ "RELATIVE",
+ "RENAME",
+ "REOPTIMIZATION",
+ "REPEATABLE",
+ "REPORT",
+ "RESOURCE",
+ "RETURN",
+ "RETURNING",
+ "REVERSE",
+ "REVOKE",
+ "RIGHT",
+ "ROLLBACK",
+ "ROLLFORWARD",
+ "ROW",
+ "ROWS",
+ "RUN",
+ "SCHEMA",
+ "SCREEN",
+ "SCROLL",
+ "SECOND",
+ "SELECT",
+ "SERIAL",
+ "SET",
+ "SFMT",
+ "SHARE",
+ "SHIFT",
+ "SHOW",
+ "SIGNAL ",
+ "SIZE",
+ "SKIP",
+ "SLEEP",
+ "SOME",
+ "SPACE",
+ "SPACES",
+ "SQL",
+ "SQLERRMESSAGE",
+ "SQLERROR",
+ "SQLSTATE",
+ "STABILITY",
+ "START",
+ "STATISTICS",
+ "STEP",
+ "STOP",
+ "STYLE",
+ "SUM",
+ "SYNONYM",
+ "TABLE",
+ "TEMP",
+ "TERMINATE",
+ "TEXT",
+ "THEN",
+ "THROUGH",
+ "THRU",
+ "TO",
+ "TODAY",
+ "TOP",
+ "TRAILER",
+ "TRANSACTION ",
+ "UNBUFFERED",
+ "UNCONSTRAINED",
+ "UNDERLINE",
+ "UNION",
+ "UNIQUE",
+ "UNITS",
+ "UNLOAD",
+ "UNLOCK",
+ "UP",
+ "UPDATE",
+ "USE",
+ "USER",
+ "USING",
+ "VALIDATE",
+ "VALUE",
+ "VALUES",
+ "VARCHAR",
+ "VIEW",
+ "WAIT",
+ "WAITING",
+ "WARNING",
+ "WHEN",
+ "WHENEVER",
+ "WHERE",
+ "WHILE",
+ "WINDOW",
+ "WITH",
+ "WITHOUT",
+ "WORDWRAP",
+ "WORK",
+ "WRAP"
+ ),
+ 2 => array(
+ '&IFDEF', '&ENDIF'
+ ),
+ 3 => array(
+ "ARRAY",
+ "BYTE",
+ "CHAR",
+ "CHARACTER",
+ "CURSOR",
+ "DATE",
+ "DATETIME",
+ "DECIMAL",
+ "DOUBLE",
+ "FALSE",
+ "INT",
+ "INTEGER",
+ "SMALLFLOAT",
+ "SMALLINT",
+ "STRING",
+ "TIME",
+ "TRUE"
+ ),
+ 4 => array(
+ "BLACK",
+ "BLINK",
+ "BLUE",
+ "BOLD",
+ "ANSI",
+ "ASC",
+ "ASCENDING",
+ "ASCII",
+ "CYAN",
+ "DESC",
+ "DESCENDING",
+ "GREEN",
+ "MAGENTA",
+ "OFF",
+ "WHITE",
+ "YELLOW",
+ "YEAR",
+ "DAY",
+ "MONTH",
+ "WEEKDAY"
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',
+ '(', ')', '[', ']'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0600FF;',
+ 2 => 'color: #0000FF; font-weight: bold;',
+ 3 => 'color: #008000;',
+ 4 => 'color: #FF0000;',
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008080; font-style: italic;',
+ 2 => 'color: #008080;',
+ 'MULTI' => 'color: #008080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #008080; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #808080;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #0000FF;',
+ 2 => 'color: #0000FF;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/gml.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/gml.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/gml.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,502 +1,502 @@
-<?php
-/*************************************************************************************
- * gml.php
- * --------
- * Author: José Jorge Enríquez (jenriquez at users.sourceforge.net)
- * Copyright: (c) 2005 José Jorge Enríquez Rodríguez (http://www.zonamakers.com)
- * Release Version: 1.0.7.21
- * Date Started: 2005/06/21
- *
- * GML language file for GeSHi.
- *
- * GML (Game Maker Language) is a script language that is built-in into Game Maker,
- * a game creation program, more info about Game Maker can be found at
- * http://www.gamemaker.nl/
- * All GML keywords were extracted from the Game Maker HTML Help file using a PHP
- * script (one section at a time). I love PHP for saving me that bunch of work :P!.
- * I think all GML functions have been indexed here, but I'm not sure about it, so
- * please let me know of any issue you may find.
- *
- * CHANGES
- * -------
- * 2005/11/11
- * - Changed 'CASE_KEYWORDS' fom 'GESHI_CAPS_LOWER' to 'GESHI_CAPS_NO_CHANGE',
- * so that MCI_command appears correctly (the only GML function using capitals).
- * - Changed 'CASE_SENSITIVE' options, 'GESHI_COMMENTS' from true to false and all
- * of the others from false to true.
- * - Deleted repeated entries.
- * - div and mod are language keywords, moved (from symbols) to the appropiate section (1).
- * - Moved self, other, all, noone and global identifiers to language keywords section 1.
- * - Edited this file lines to a maximum width of 100 characters (as stated in
- * the GeSHi docs). Well, not strictly to 100 but around it.
- * - Corrected some minor issues (the vk_f1...vk_f12 keys and similar).
- * - Deleted the KEYWORDS=>5 and KEYWORDS=>6 sections (actually, they were empty).
- * I was planning of using those for the GML functions available only in the
- * registered version of the program, but not anymore.
- *
- * 2005/06/26 (1.0.3)
- * - First Release.
- *
- * TODO (updated 2005/11/11)
- * -------------------------
- * - Test it for a while and make the appropiate corrections.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'GML',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'"),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- // language keywords
- 1 => array(
- 'break', 'continue', 'do', 'until', 'if', 'else',
- 'exit', 'for', 'for', 'repeat', 'return', 'switch',
- 'case', 'default', 'var', 'while', 'with', 'div', 'mod',
- // GML Language overview
- 'self', 'other', 'all', 'noone', 'global',
- ),
- // modifiers and built-in variables
- 2 => array(
- // Game play
- 'x','y','xprevious','yprevious','xstart','ystart','hspeed','vspeed','direction','speed',
- 'friction','gravity','gravity_direction',
- 'path_index','path_position','path_positionprevious','path_speed','path_orientation',
- 'path_scale','path_endaction',
- 'object_index','id','mask_index','solid','persistent','instance_count','instance_id',
- 'room_speed','fps','current_time','current_year','current_month','current_day','current_weekday',
- 'current_hour','current_minute','current_second','alarm','timeline_index','timeline_position',
- 'timeline_speed',
- 'room','room_first','room_last','room_width','room_height','room_caption','room_persistent',
- 'score','lives','health','show_score','show_lives','show_health','caption_score','caption_lives',
- 'caption_health',
- 'event_type','event_number','event_object','event_action',
- 'error_occurred','error_last',
- // User interaction
- 'keyboard_lastkey','keyboard_key','keyboard_lastchar','keyboard_string',
- 'mouse_x','mouse_y','mouse_button','mouse_lastbutton',
- // Game Graphics
- 'visible','sprite_index','sprite_width','sprite_height','sprite_xoffset','sprite_yoffset',
- 'image_number','image_index','image_speed','depth','image_xscale','image_yscale','image_angle',
- 'image_alpha','image_blend','bbox_left','bbox_right','bbox_top','bbox_bottom',
- 'background_color','background_showcolor','background_visible','background_foreground',
- 'background_index','background_x','background_y','background_width','background_height',
- 'background_htiled','background_vtiled','background_xscale','background_yscale',
- 'background_hspeed','background_vspeed','background_blend','background_alpha',
- 'background','left, top, width, height','x,y','depth','visible','xscale, yscale','blend','alpha',
- 'view_enabled','view_current','view_visible','view_yview','view_wview','view_hview','view_xport',
- 'view_yport','view_wport','view_hport','view_angle','view_hborder','view_vborder','view_hspeed',
- 'view_vspeed','view_object',
- 'transition_kind',
- // Files, registry and executing programs
- 'game_id','working_directory','temp_directory',
- 'secure_mode',
- // Creating particles
- 'xmin', 'xmax', 'ymin', 'ymax','shape','distribution','particle type','number',
- 'x', 'y', 'force','dist','kind','additive', 'friction', 'parttype1', 'parttype2'
- ),
- // functions
- 3 => array(
- // Computing things
- 'random','choose','abs','sign','round','floor','ceil','frac','sqrt','sqr','power','exp','ln',
- 'log2','log10','logn','sin','cos','tan','arcsin','arccos','arctan','arctan2','degtorad',
- 'radtodeg','min','max','mean','median','point_distance','point_direction','lengthdir_x',
- 'lengthdir_y','is_real','is_string',
- 'chr','ord','real','string','string_format','string_length','string_pos','string_copy',
- 'string_char_at','string_delete','string_insert','string_replace','string_replace_all',
- 'string_count','string_lower','string_upper','string_repeat','string_letters','string_digits',
- 'string_lettersdigits','clipboard_has_text','clipboard_get_text','clipboard_set_text',
- 'date_current_datetime','date_current_date','date_current_time','date_create_datetime',
- 'date_create_date','date_create_time','date_valid_datetime','date_valid_date','date_valid_time',
- 'date_inc_year','date_inc_month','date_inc_week','date_inc_day','date_inc_hour',
- 'date_inc_minute','date_inc_second','date_get_year','date_get_month','date_get_week',
- 'date_get_day','date_get_hour', 'date_get_minute','date_get_second','date_get_weekday',
- 'date_get_day_of_year','date_get_hour_of_year','date_get_minute_of_year',
- 'date_get_second_of_year','date_year_span','date_month_span','date_week_span','date_day_span',
- 'date_hour_span','date_minute_span','date_second_span','date_compare_datetime',
- 'date_compare_date','date_compare_time','date_date_of','date_time_of','date_datetime_string',
- 'date_date_string','date_time_string','date_days_in_month','date_days_in_year','date_leap_year',
- 'date_is_today',
- // Game play
- 'motion_set','motion_add','place_free','place_empty','place_meeting','place_snapped',
- 'move_random','move_snap','move_wrap','move_towards_point','move_bounce_solid','move_bounce_all',
- 'move_contact_solid','move_contact_all','move_outside_solid','move_outside_all',
- 'distance_to_point','distance_to_object','position_empty','position_meeting',
- 'path_start','path_end',
- 'mp_linear_step','mp_linear_step_object','mp_potential_step','mp_potential_step_object',
- 'mp_potential_settings','mp_linear_path','mp_linear_path_object', 'mp_potential_path',
- 'mp_potential_path_object','mp_grid_create','mp_grid_destroy','mp_grid_clear_all',
- 'mp_grid_clear_cell','mp_grid_clear_rectangle','mp_grid_add_cell','mp_grid_add_rectangle',
- 'mp_grid_add_instances','mp_grid_path','mp_grid_draw',
- 'collision_point','collision_rectangle','collision_circle','collision_ellipse','collision_line',
- 'instance_find','instance_exists','instance_number','instance_position','instance_nearest',
- 'instance_furthest','instance_place','instance_create','instance_copy','instance_destroy',
- 'instance_change','position_destroy','position_change',
- 'instance_deactivate_all','instance_deactivate_object','instance_deactivate_region',
- 'instance_activate_all','instance_activate_object','instance_activate_region',
- 'sleep',
- 'room_goto','room_goto_previous','room_goto_next','room_restart','room_previous','room_next',
- 'game_end','game_restart','game_save','game_load',
- 'event_perform', 'event_perform_object','event_user','event_inherited',
- 'show_debug_message','variable_global_exists','variable_local_exists','variable_global_get',
- 'variable_global_array_get','variable_global_array2_get','variable_local_get',
- 'variable_local_array_get','variable_local_array2_get','variable_global_set',
- 'variable_global_array_set','variable_global_array2_set','variable_local_set',
- 'variable_local_array_set','variable_local_array2_set','set_program_priority',
- // User interaction
- 'keyboard_set_map','keyboard_get_map','keyboard_unset_map','keyboard_check',
- 'keyboard_check_pressed','keyboard_check_released','keyboard_check_direct',
- 'keyboard_get_numlock','keyboard_set_numlock','keyboard_key_press','keyboard_key_release',
- 'keyboard_clear','io_clear','io_handle','keyboard_wait',
- 'mouse_check_button','mouse_check_button_pressed','mouse_check_button_released','mouse_clear',
- 'io_clear','io_handle','mouse_wait',
- 'joystick_exists','joystick_name','joystick_axes','joystick_buttons','joystick_has_pov',
- 'joystick_direction','joystick_check_button','joystick_xpos','joystick_ypos','joystick_zpos',
- 'joystick_rpos','joystick_upos','joystick_vpos','joystick_pov',
- // Game Graphics
- 'draw_sprite','draw_sprite_stretched','draw_sprite_tiled','draw_sprite_part','draw_background',
- 'draw_background_stretched','draw_background_tiled','draw_background_part','draw_sprite_ext',
- 'draw_sprite_stretched_ext','draw_sprite_tiled_ext','draw_sprite_part_ext','draw_sprite_general',
- 'draw_background_ext','draw_background_stretched_ext','draw_background_tiled_ext',
- 'draw_background_part_ext','draw_background_general',
- 'draw_clear','draw_clear_alpha','draw_point','draw_line','draw_rectangle','draw_roundrect',
- 'draw_triangle','draw_circle','draw_ellipse','draw_arrow','draw_button','draw_path',
- 'draw_healthbar','draw_set_color','draw_set_alpha','draw_get_color','draw_get_alpha',
- 'make_color_rgb','make_color_hsv','color_get_red','color_get_green','color_get_blue',
- 'color_get_hue','color_get_saturation','color_get_value','merge_color','draw_getpixel',
- 'screen_save','screen_save_part',
- 'draw_set_font','draw_set_halign','draw_set_valign','draw_text','draw_text_ext','string_width',
- 'string_height','string_width_ext','string_height_ext','draw_text_transformed',
- 'draw_text_ext_transformed','draw_text_color','draw_text_ext_color',
- 'draw_text_transformed_color','draw_text_ext_transformed_color',
- 'draw_point_color','draw_line_color','draw_rectangle_color','draw_roundrect_color',
- 'draw_triangle_color','draw_circle_color','draw_ellipse_color','draw_primitive_begin',
- 'draw_vertex','draw_vertex_color','draw_primitive_end','sprite_get_texture',
- 'background_get_texture','texture_preload','texture_set_priority',
- 'texture_get_width','texture_get_height','draw_primitive_begin_texture','draw_vertex_texture',
- 'draw_vertex_texture_color','draw_primitive_end','texture_set_interpolation',
- 'texture_set_blending','texture_set_repeat','draw_set_blend_mode','draw_set_blend_mode_ext',
- 'surface_create','surface_free','surface_exists','surface_get_width','surface_get_height',
- 'surface_get_texture','surface_set_target','surface_reset_target','surface_getpixel',
- 'surface_save','surface_save_part','draw_surface','draw_surface_stretched','draw_surface_tiled',
- 'draw_surface_part','draw_surface_ext','draw_surface_stretched_ext','draw_surface_tiled_ext',
- 'draw_surface_part_ext','draw_surface_general','surface_copy','surface_copy_part',
- 'tile_add','tile_delete','tile_exists','tile_get_x','tile_get_y','tile_get_left','tile_get_top',
- 'tile_get_width','tile_get_height','tile_get_depth','tile_get_visible','tile_get_xscale',
- 'tile_get_yscale','tile_get_background','tile_get_blend','tile_get_alpha','tile_set_position',
- 'tile_set_region','tile_set_background','tile_set_visible','tile_set_depth','tile_set_scale',
- 'tile_set_blend','tile_set_alpha','tile_layer_hide','tile_layer_show','tile_layer_delete',
- 'tile_layer_shift','tile_layer_find','tile_layer_delete_at','tile_layer_depth',
- 'display_get_width','display_get_height','display_get_colordepth','display_get_frequency',
- 'display_set_size','display_set_colordepth','display_set_frequency','display_set_all',
- 'display_test_all','display_reset','display_mouse_get_x','display_mouse_get_y','display_mouse_set',
- 'window_set_visible','window_get_visible','window_set_fullscreen','window_get_fullscreen',
- 'window_set_showborder','window_get_showborder','window_set_showicons','window_get_showicons',
- 'window_set_stayontop','window_get_stayontop','window_set_sizeable','window_get_sizeable',
- 'window_set_caption','window_get_caption','window_set_cursor', 'window_get_cursor',
- 'window_set_color','window_get_color','window_set_region_scale','window_get_region_scale',
- 'window_set_position','window_set_size','window_set_rectangle','window_center','window_default',
- 'window_get_x','window_get_y','window_get_width','window_get_height','window_mouse_get_x',
- 'window_mouse_get_y','window_mouse_set',
- 'window_set_region_size','window_get_region_width','window_get_region_height',
- 'window_view_mouse_get_x','window_view_mouse_get_y','window_view_mouse_set',
- 'window_views_mouse_get_x','window_views_mouse_get_y','window_views_mouse_set',
- 'screen_redraw','screen_refresh','set_automatic_draw','set_synchronization','screen_wait_vsync',
- // Sound and music)
- 'sound_play','sound_loop','sound_stop','sound_stop_all','sound_isplaying','sound_volume',
- 'sound_global_volume','sound_fade','sound_pan','sound_background_tempo','sound_set_search_directory',
- 'sound_effect_set','sound_effect_chorus','sound_effect_echo', 'sound_effect_flanger',
- 'sound_effect_gargle','sound_effect_reverb','sound_effect_compressor','sound_effect_equalizer',
- 'sound_3d_set_sound_position','sound_3d_set_sound_velocity','sound_3d_set_sound_distance',
- 'sound_3d_set_sound_cone',
- 'cd_init','cd_present','cd_number','cd_playing','cd_paused','cd_track','cd_length',
- 'cd_track_length','cd_position','cd_track_position','cd_play','cd_stop','cd_pause','cd_resume',
- 'cd_set_position','cd_set_track_position','cd_open_door','cd_close_door','MCI_command',
- // Splash screens, highscores, and other pop-ups
- 'show_text','show_image','show_video','show_info','load_info',
- 'show_message','show_message_ext','show_question','get_integer','get_string',
- 'message_background','message_alpha','message_button','message_text_font','message_button_font',
- 'message_input_font','message_mouse_color','message_input_color','message_caption',
- 'message_position','message_size','show_menu','show_menu_pos','get_color','get_open_filename',
- 'get_save_filename','get_directory','get_directory_alt','show_error',
- 'highscore_show','highscore_set_background','highscore_set_border','highscore_set_font',
- 'highscore_set_colors','highscore_set_strings','highscore_show_ext','highscore_clear',
- 'highscore_add','highscore_add_current','highscore_value','highscore_name','draw_highscore',
- // Resources
- 'sprite_exists','sprite_get_name','sprite_get_number','sprite_get_width','sprite_get_height',
- 'sprite_get_transparent','sprite_get_smooth','sprite_get_preload','sprite_get_xoffset',
- 'sprite_get_yoffset','sprite_get_bbox_left','sprite_get_bbox_right','sprite_get_bbox_top',
- 'sprite_get_bbox_bottom','sprite_get_bbox_mode','sprite_get_precise',
- 'sound_exists','sound_get_name','sound_get_kind','sound_get_preload','sound_discard',
- 'sound_restore',
- 'background_exists','background_get_name','background_get_width','background_get_height',
- 'background_get_transparent','background_get_smooth','background_get_preload',
- 'font_exists','font_get_name','font_get_fontname','font_get_bold','font_get_italic',
- 'font_get_first','font_get_last',
- 'path_exists','path_get_name','path_get_length','path_get_kind','path_get_closed',
- 'path_get_precision','path_get_number','path_get_point_x','path_get_point_y',
- 'path_get_point_speed','path_get_x','path_get_y','path_get_speed',
- 'script_exists','script_get_name','script_get_text',
- 'timeline_exists','timeline_get_name',
- 'object_exists','object_get_name','object_get_sprite','object_get_solid','object_get_visible',
- 'object_get_depth','object_get_persistent','object_get_mask','object_get_parent',
- 'object_is_ancestor',
- 'room_exists','room_get_name',
- // Changing resources
- 'sprite_set_offset','sprite_set_bbox_mode','sprite_set_bbox','sprite_set_precise',
- 'sprite_duplicate','sprite_assign','sprite_merge','sprite_add','sprite_replace',
- 'sprite_create_from_screen','sprite_add_from_screen','sprite_create_from_surface',
- 'sprite_add_from_surface','sprite_delete','sprite_set_alpha_from_sprite',
- 'sound_add','sound_replace','sound_delete',
- 'background_duplicate','background_assign','background_add','background_replace',
- 'background_create_color','background_create_gradient','background_create_from_screen',
- 'background_create_from_surface','background_delete','background_set_alpha_from_background',
- 'font_add','font_add_sprite','font_replace_sprite','font_delete',
- 'path_set_kind','path_set_closed','path_set_precision','path_add','path_delete','path_duplicate',
- 'path_assign','path_append','path_add_point','path_insert_point','path_change_point',
- 'path_delete_point','path_clear_points','path_reverse','path_mirror','path_flip','path_rotate',
- 'path_scale','path_shift',
- 'execute_string','execute_file','script_execute',
- 'timeline_add','timeline_delete','timeline_moment_add','timeline_moment_clear',
- 'object_set_sprite','object_set_solid','object_set_visible','object_set_depth',
- 'object_set_persistent','object_set_mask','object_set_parent','object_add','object_delete',
- 'object_event_add','object_event_clear',
- 'room_set_width','room_set_height','room_set_caption','room_set_persistent','room_set_code',
- 'room_set_background_color','room_set_background','room_set_view','room_set_view_enabled',
- 'room_add','room_duplicate','room_assign','room_instance_add','room_instance_clear',
- 'room_tile_add','room_tile_add_ext','room_tile_clear',
- // Files, registry and executing programs
- 'file_text_open_read','file_text_open_write','file_text_open_append','file_text_close',
- 'file_text_write_string','file_text_write_real','file_text_writeln','file_text_read_string',
- 'file_text_read_real','file_text_readln','file_text_eof','file_exists','file_delete',
- 'file_rename','file_copy','directory_exists','directory_create','file_find_first',
- 'file_find_next','file_find_close','file_attributes', 'filename_name','filename_path',
- 'filename_dir','filename_drive','filename_ext','filename_change_ext','file_bin_open',
- 'file_bin_rewrite','file_bin_close','file_bin_size','file_bin_position','file_bin_seek',
- 'file_bin_write_byte','file_bin_read_byte','parameter_count','parameter_string',
- 'environment_get_variable',
- 'registry_write_string','registry_write_real','registry_read_string','registry_read_real',
- 'registry_exists','registry_write_string_ext','registry_write_real_ext',
- 'registry_read_string_ext','registry_read_real_ext','registry_exists_ext','registry_set_root',
- 'ini_open','ini_close','ini_read_string','ini_read_real','ini_write_string','ini_write_real',
- 'ini_key_exists','ini_section_exists','ini_key_delete','ini_section_delete',
- 'execute_program','execute_shell',
- // Data structures
- 'ds_stack_create','ds_stack_destroy','ds_stack_clear','ds_stack_size','ds_stack_empty',
- 'ds_stack_push','ds_stack_pop','ds_stack_top',
- 'ds_queue_create','ds_queue_destroy','ds_queue_clear','ds_queue_size','ds_queue_empty',
- 'ds_queue_enqueue','ds_queue_dequeue','ds_queue_head','ds_queue_tail',
- 'ds_list_create','ds_list_destroy','ds_list_clear','ds_list_size','ds_list_empty','ds_list_add',
- 'ds_list_insert','ds_list_replace','ds_list_delete','ds_list_find_index','ds_list_find_value',
- 'ds_list_sort',
- 'ds_map_create','ds_map_destroy','ds_map_clear','ds_map_size','ds_map_empty','ds_map_add',
- 'ds_map_replace','ds_map_delete','ds_map_exists','ds_map_find_value','ds_map_find_previous',
- 'ds_map_find_next','ds_map_find_first','ds_map_find_last',
- 'ds_priority_create','ds_priority_destroy','ds_priority_clear','ds_priority_size',
- 'ds_priority_empty','ds_priority_add','ds_priority_change_priority','ds_priority_find_priority',
- 'ds_priority_delete_value','ds_priority_delete_min','ds_priority_find_min',
- 'ds_priority_delete_max','ds_priority_find_max',
- 'ds_grid_create','ds_grid_destroy','ds_grid_resize','ds_grid_width','ds_grid_height',
- 'ds_grid_clear','ds_grid_set','ds_grid_add','ds_grid_multiply','ds_grid_set_region',
- 'ds_grid_add_region','ds_grid_multiply_region','ds_grid_set_disk','ds_grid_add_disk',
- 'ds_grid_multiply_disk','ds_grid_get','ds_grid_get_sum','ds_grid_get_max','ds_grid_get_min',
- 'ds_grid_get_mean','ds_grid_get_disk_sum','ds_grid_get_disk_min','ds_grid_get_disk_max',
- 'ds_grid_get_disk_mean','ds_grid_value_exists','ds_grid_value_x','ds_grid_value_y',
- 'ds_grid_value_disk_exists','ds_grid_value_disk_x','ds_grid_value_disk_y',
- // Creating particles
- 'effect_create_below','effect_create_above','effect_clear',
- 'part_type_create','part_type_destroy','part_type_exists','part_type_clear','part_type_shape',
- 'part_type_sprite','part_type_size','part_type_scale',
- 'part_type_orientation','part_type_color1','part_type_color2','part_type_color3',
- 'part_type_color_mix','part_type_color_rgb','part_type_color_hsv',
- 'part_type_alpha1','part_type_alpha2','part_type_alpha3','part_type_blend','part_type_life',
- 'part_type_step','part_type_death','part_type_speed','part_type_direction','part_type_gravity',
- 'part_system_create','part_system_destroy','part_system_exists','part_system_clear',
- 'part_system_draw_order','part_system_depth','part_system_position',
- 'part_system_automatic_update','part_system_automatic_draw','part_system_update',
- 'part_system_drawit','part_particles_create','part_particles_create_color',
- 'part_particles_clear','part_particles_count',
- 'part_emitter_create','part_emitter_destroy','part_emitter_destroy_all','part_emitter_exists',
- 'part_emitter_clear','part_emitter_region','part_emitter_burst','part_emitter_stream',
- 'part_attractor_create','part_attractor_destroy','part_attractor_destroy_all',
- 'part_attractor_exists','part_attractor_clear','part_attractor_position','part_attractor_force',
- 'part_destroyer_create','part_destroyer_destroy','part_destroyer_destroy_all',
- 'part_destroyer_exists','part_destroyer_clear','part_destroyer_region',
- 'part_deflector_create','part_deflector_destroy','part_deflector_destroy_all',
- 'part_deflector_exists','part_deflector_clear','part_deflector_region','part_deflector_kind',
- 'part_deflector_friction',
- 'part_changer_create','part_changer_destroy','part_changer_destroy_all','part_changer_exists',
- 'part_changer_clear','part_changer_region','part_changer_types','part_changer_kind',
- // Multiplayer games
- 'mplay_init_ipx','mplay_init_tcpip','mplay_init_modem','mplay_init_serial',
- 'mplay_connect_status','mplay_end','mplay_ipaddress',
- 'mplay_session_create','mplay_session_find','mplay_session_name','mplay_session_join',
- 'mplay_session_mode','mplay_session_status','mplay_session_end',
- 'mplay_player_find','mplay_player_name','mplay_player_id',
- 'mplay_data_write','mplay_data_read','mplay_data_mode',
- 'mplay_message_send','mplay_message_send_guaranteed','mplay_message_receive','mplay_message_id',
- 'mplay_message_value','mplay_message_player','mplay_message_name','mplay_message_count',
- 'mplay_message_clear',
- // Using DLL's
- 'external_define','external_call','external_free','execute_string','execute_file','window_handle',
- // 3D Graphics
- 'd3d_start','d3d_end','d3d_set_hidden','d3d_set_perspective',
- 'd3d_set_depth',
- 'd3d_primitive_begin','d3d_vertex','d3d_vertex_color','d3d_primitive_end',
- 'd3d_primitive_begin_texture','d3d_vertex_texture','d3d_vertex_texture_color','d3d_set_culling',
- 'd3d_draw_block','d3d_draw_cylinder','d3d_draw_cone','d3d_draw_ellipsoid','d3d_draw_wall',
- 'd3d_draw_floor',
- 'd3d_set_projection','d3d_set_projection_ext','d3d_set_projection_ortho',
- 'd3d_set_projection_perspective',
- 'd3d_transform_set_identity','d3d_transform_set_translation','d3d_transform_set_scaling',
- 'd3d_transform_set_rotation_x','d3d_transform_set_rotation_y','d3d_transform_set_rotation_z',
- 'd3d_transform_set_rotation_axis','d3d_transform_add_translation','d3d_transform_add_scaling',
- 'd3d_transform_add_rotation_x','d3d_transform_add_rotation_y','d3d_transform_add_rotation_z',
- 'd3d_transform_add_rotation_axis','d3d_transform_stack_clear','d3d_transform_stack_empty',
- 'd3d_transform_stack_push','d3d_transform_stack_pop','d3d_transform_stack_top',
- 'd3d_transform_stack_discard',
- 'd3d_set_fog',
- 'd3d_set_lighting','d3d_set_shading','d3d_light_define_direction','d3d_light_define_point',
- 'd3d_light_enable','d3d_vertex_normal','d3d_vertex_normal_color','d3d_vertex_normal_texture',
- 'd3d_vertex_normal_texture_color',
- 'd3d_model_create','d3d_model_destroy','d3d_model_clear','d3d_model_save','d3d_model_load',
- 'd3d_model_draw','d3d_model_primitive_begin','d3d_model_vertex','d3d_model_vertex_color',
- 'd3d_model_vertex_texture','d3d_model_vertex_texture_color','d3d_model_vertex_normal',
- 'd3d_model_vertex_normal_color','d3d_model_vertex_normal_texture',
- 'd3d_model_vertex_normal_texture_color','d3d_model_primitive_end','d3d_model_block',
- 'd3d_model_cylinder','d3d_model_cone','d3d_model_ellipsoid','d3d_model_wall','d3d_model_floor'
- ),
- // constants
- 4 => array(
- 'true', 'false', 'pi',
- 'ev_destroy','ev_step','ev_alarm','ev_keyboard','ev_mouse','ev_collision','ev_other','ev_draw',
- 'ev_keypress','ev_keyrelease','ev_left_button','ev_right_button','ev_middle_button',
- 'ev_no_button','ev_left_press','ev_right_press','ev_middle_press','ev_left_release',
- 'ev_right_release','ev_middle_release','ev_mouse_enter','ev_mouse_leave','ev_mouse_wheel_up',
- 'ev_mouse_wheel_down','ev_global_left_button','ev_global_right_button','ev_global_middle_button',
- 'ev_global_left_press','ev_global_right_press','ev_global_middle_press','ev_global_left_release',
- 'ev_global_right_release','ev_global_middle_release','ev_joystick1_left','ev_joystick1_right',
- 'ev_joystick1_up','ev_joystick1_down','ev_joystick1_button1','ev_joystick1_button2',
- 'ev_joystick1_button3','ev_joystick1_button4','ev_joystick1_button5','ev_joystick1_button6',
- 'ev_joystick1_button7','ev_joystick1_button8','ev_joystick2_left','ev_joystick2_right',
- 'ev_joystick2_up','ev_joystick2_down','ev_joystick2_button1','ev_joystick2_button2',
- 'ev_joystick2_button3','ev_joystick2_button4','ev_joystick2_button5','ev_joystick2_button6',
- 'ev_joystick2_button7','ev_joystick2_button8',
- 'ev_outside','ev_boundary','ev_game_start','ev_game_end','ev_room_start','ev_room_end',
- 'ev_no_more_lives','ev_no_more_health','ev_animation_end','ev_end_of_path','ev_user0','ev_user1',
- 'ev_user2','ev_user3','ev_user4','ev_user5','ev_user6','ev_user7','ev_user8','ev_user9',
- 'ev_user10','ev_user11','ev_user12','ev_user13','ev_user14','ev_user15','ev_step_normal',
- 'ev_step_begin','ev_step_end',
- 'vk_nokey','vk_anykey','vk_left','vk_right','vk_up','vk_down','vk_enter','vk_escape','vk_space',
- 'vk_shift','vk_control','vk_alt','vk_backspace','vk_tab','vk_home','vk_end','vk_delete',
- 'vk_insert','vk_pageup','vk_pagedown','vk_pause','vk_printscreen',
- 'vk_f1','vk_f2','vk_f3','vk_f4','vk_f5','vk_f6','vk_f7','vk_f8','vk_f9','vk_f10','vk_f11','vk_f12',
- 'vk_numpad0','vk_numpad1','vk_numpad2','vk_numpad3','vk_numpad4','vk_numpad5','vk_numpad6',
- 'vk_numpad7','vk_numpad8','vk_numpad9', 'vk_multiply','vk_divide','vk_add','vk_subtract',
- 'vk_decimal','vk_lshift','vk_lcontrol','vk_lalt','vk_rshift','vk_rcontrol','vk_ralt',
- 'c_aqua','c_black','c_blue','c_dkgray','c_fuchsia','c_gray','c_green','c_lime','c_ltgray',
- 'c_maroon','c_navy','c_olive','c_purple','c_red','c_silver','c_teal','c_white','c_yellow',
- 'fa_left', 'fa_center','fa_right','fa_top','fa_middle','fa_bottom',
- 'pr_pointlist','pr_linelist','pr_linestrip','pr_trianglelist','pr_trianglestrip',
- 'pr_trianglefan',
- 'cr_none','cr_arrow','cr_cross','cr_beam','cr_size_nesw','cr_size_ns','cr_size_nwse',
- 'cr_size_we','cr_uparrow','cr_hourglass','cr_drag','cr_nodrop','cr_hsplit','cr_vsplit',
- 'cr_multidrag','cr_sqlwait','cr_no','cr_appstart','cr_help','cr_handpoint','cr_size_all',
- 'se_chorus','se_echo','se_flanger','se_gargle','se_reverb','se_compressor','se_equalizer',
- 'fa_readonly','fa_hidden','fa_sysfile','fa_volumeid','fa_directory','fa_archive',
- 'pt_shape_pixel','pt_shape_disk','pt_shape_square','pt_shape_line','pt_shape_star',
- 'pt_shape_circle','pt_shape_ring','pt_shape_sphere','pt_shape_flare','pt_shape_spark',
- 'pt_shape_explosion','pt_shape_cloud','pt_shape_smoke','pt_shape_snow',
- 'ps_shape_rectangle','ps_shape_ellipse ','ps_shape_diamond','ps_shape_line',
- 'ps_distr_linear','ps_distr_gaussian','ps_force_constant','ps_force_linear','ps_force_quadratic',
- 'ps_deflect_horizontal', 'ps_deflect_vertical',
- 'ps_change_motion','ps_change_shape','ps_change_all'
- ),
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '&&', '||', '^^', '<', '<=', '==', '!=', '>', '>=',
- '|', '&', '^', '<<', '>>', '+', '-', '*', '/', '!', '-', '~'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'font-weight: bold; color: #000000;',
- 2 => 'font-weight: bold; color: #000000;',
- 3 => 'color: navy;',
- 4 => 'color: #663300;',
- ),
- 'COMMENTS' => array(
- 1 => 'font-style: italic; color: green;',
- 'MULTI' => 'font-style: italic; color: green;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;' //'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #202020;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66; font-weight: bold;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- // All GML functions have been indexed, but need some corrections.
- 3 => 'http://www.zonamakers.com/gmlreference/{FNAME}.html', // (provisional, could change soon!)
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * gml.php
+ * --------
+ * Author: José Jorge Enríquez (jenriquez at users.sourceforge.net)
+ * Copyright: (c) 2005 José Jorge Enríquez Rodríguez (http://www.zonamakers.com)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/06/21
+ *
+ * GML language file for GeSHi.
+ *
+ * GML (Game Maker Language) is a script language that is built-in into Game Maker,
+ * a game creation program, more info about Game Maker can be found at
+ * http://www.gamemaker.nl/
+ * All GML keywords were extracted from the Game Maker HTML Help file using a PHP
+ * script (one section at a time). I love PHP for saving me that bunch of work :P!.
+ * I think all GML functions have been indexed here, but I'm not sure about it, so
+ * please let me know of any issue you may find.
+ *
+ * CHANGES
+ * -------
+ * 2005/11/11
+ * - Changed 'CASE_KEYWORDS' fom 'GESHI_CAPS_LOWER' to 'GESHI_CAPS_NO_CHANGE',
+ * so that MCI_command appears correctly (the only GML function using capitals).
+ * - Changed 'CASE_SENSITIVE' options, 'GESHI_COMMENTS' from true to false and all
+ * of the others from false to true.
+ * - Deleted repeated entries.
+ * - div and mod are language keywords, moved (from symbols) to the appropiate section (1).
+ * - Moved self, other, all, noone and global identifiers to language keywords section 1.
+ * - Edited this file lines to a maximum width of 100 characters (as stated in
+ * the GeSHi docs). Well, not strictly to 100 but around it.
+ * - Corrected some minor issues (the vk_f1...vk_f12 keys and similar).
+ * - Deleted the KEYWORDS=>5 and KEYWORDS=>6 sections (actually, they were empty).
+ * I was planning of using those for the GML functions available only in the
+ * registered version of the program, but not anymore.
+ *
+ * 2005/06/26 (1.0.3)
+ * - First Release.
+ *
+ * TODO (updated 2005/11/11)
+ * -------------------------
+ * - Test it for a while and make the appropiate corrections.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'GML',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'"),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ // language keywords
+ 1 => array(
+ 'break', 'continue', 'do', 'until', 'if', 'else',
+ 'exit', 'for', 'for', 'repeat', 'return', 'switch',
+ 'case', 'default', 'var', 'while', 'with', 'div', 'mod',
+ // GML Language overview
+ 'self', 'other', 'all', 'noone', 'global',
+ ),
+ // modifiers and built-in variables
+ 2 => array(
+ // Game play
+ 'x','y','xprevious','yprevious','xstart','ystart','hspeed','vspeed','direction','speed',
+ 'friction','gravity','gravity_direction',
+ 'path_index','path_position','path_positionprevious','path_speed','path_orientation',
+ 'path_scale','path_endaction',
+ 'object_index','id','mask_index','solid','persistent','instance_count','instance_id',
+ 'room_speed','fps','current_time','current_year','current_month','current_day','current_weekday',
+ 'current_hour','current_minute','current_second','alarm','timeline_index','timeline_position',
+ 'timeline_speed',
+ 'room','room_first','room_last','room_width','room_height','room_caption','room_persistent',
+ 'score','lives','health','show_score','show_lives','show_health','caption_score','caption_lives',
+ 'caption_health',
+ 'event_type','event_number','event_object','event_action',
+ 'error_occurred','error_last',
+ // User interaction
+ 'keyboard_lastkey','keyboard_key','keyboard_lastchar','keyboard_string',
+ 'mouse_x','mouse_y','mouse_button','mouse_lastbutton',
+ // Game Graphics
+ 'visible','sprite_index','sprite_width','sprite_height','sprite_xoffset','sprite_yoffset',
+ 'image_number','image_index','image_speed','depth','image_xscale','image_yscale','image_angle',
+ 'image_alpha','image_blend','bbox_left','bbox_right','bbox_top','bbox_bottom',
+ 'background_color','background_showcolor','background_visible','background_foreground',
+ 'background_index','background_x','background_y','background_width','background_height',
+ 'background_htiled','background_vtiled','background_xscale','background_yscale',
+ 'background_hspeed','background_vspeed','background_blend','background_alpha',
+ 'background','left, top, width, height','x,y','depth','visible','xscale, yscale','blend','alpha',
+ 'view_enabled','view_current','view_visible','view_yview','view_wview','view_hview','view_xport',
+ 'view_yport','view_wport','view_hport','view_angle','view_hborder','view_vborder','view_hspeed',
+ 'view_vspeed','view_object',
+ 'transition_kind',
+ // Files, registry and executing programs
+ 'game_id','working_directory','temp_directory',
+ 'secure_mode',
+ // Creating particles
+ 'xmin', 'xmax', 'ymin', 'ymax','shape','distribution','particle type','number',
+ 'x', 'y', 'force','dist','kind','additive', 'friction', 'parttype1', 'parttype2'
+ ),
+ // functions
+ 3 => array(
+ // Computing things
+ 'random','choose','abs','sign','round','floor','ceil','frac','sqrt','sqr','power','exp','ln',
+ 'log2','log10','logn','sin','cos','tan','arcsin','arccos','arctan','arctan2','degtorad',
+ 'radtodeg','min','max','mean','median','point_distance','point_direction','lengthdir_x',
+ 'lengthdir_y','is_real','is_string',
+ 'chr','ord','real','string','string_format','string_length','string_pos','string_copy',
+ 'string_char_at','string_delete','string_insert','string_replace','string_replace_all',
+ 'string_count','string_lower','string_upper','string_repeat','string_letters','string_digits',
+ 'string_lettersdigits','clipboard_has_text','clipboard_get_text','clipboard_set_text',
+ 'date_current_datetime','date_current_date','date_current_time','date_create_datetime',
+ 'date_create_date','date_create_time','date_valid_datetime','date_valid_date','date_valid_time',
+ 'date_inc_year','date_inc_month','date_inc_week','date_inc_day','date_inc_hour',
+ 'date_inc_minute','date_inc_second','date_get_year','date_get_month','date_get_week',
+ 'date_get_day','date_get_hour', 'date_get_minute','date_get_second','date_get_weekday',
+ 'date_get_day_of_year','date_get_hour_of_year','date_get_minute_of_year',
+ 'date_get_second_of_year','date_year_span','date_month_span','date_week_span','date_day_span',
+ 'date_hour_span','date_minute_span','date_second_span','date_compare_datetime',
+ 'date_compare_date','date_compare_time','date_date_of','date_time_of','date_datetime_string',
+ 'date_date_string','date_time_string','date_days_in_month','date_days_in_year','date_leap_year',
+ 'date_is_today',
+ // Game play
+ 'motion_set','motion_add','place_free','place_empty','place_meeting','place_snapped',
+ 'move_random','move_snap','move_wrap','move_towards_point','move_bounce_solid','move_bounce_all',
+ 'move_contact_solid','move_contact_all','move_outside_solid','move_outside_all',
+ 'distance_to_point','distance_to_object','position_empty','position_meeting',
+ 'path_start','path_end',
+ 'mp_linear_step','mp_linear_step_object','mp_potential_step','mp_potential_step_object',
+ 'mp_potential_settings','mp_linear_path','mp_linear_path_object', 'mp_potential_path',
+ 'mp_potential_path_object','mp_grid_create','mp_grid_destroy','mp_grid_clear_all',
+ 'mp_grid_clear_cell','mp_grid_clear_rectangle','mp_grid_add_cell','mp_grid_add_rectangle',
+ 'mp_grid_add_instances','mp_grid_path','mp_grid_draw',
+ 'collision_point','collision_rectangle','collision_circle','collision_ellipse','collision_line',
+ 'instance_find','instance_exists','instance_number','instance_position','instance_nearest',
+ 'instance_furthest','instance_place','instance_create','instance_copy','instance_destroy',
+ 'instance_change','position_destroy','position_change',
+ 'instance_deactivate_all','instance_deactivate_object','instance_deactivate_region',
+ 'instance_activate_all','instance_activate_object','instance_activate_region',
+ 'sleep',
+ 'room_goto','room_goto_previous','room_goto_next','room_restart','room_previous','room_next',
+ 'game_end','game_restart','game_save','game_load',
+ 'event_perform', 'event_perform_object','event_user','event_inherited',
+ 'show_debug_message','variable_global_exists','variable_local_exists','variable_global_get',
+ 'variable_global_array_get','variable_global_array2_get','variable_local_get',
+ 'variable_local_array_get','variable_local_array2_get','variable_global_set',
+ 'variable_global_array_set','variable_global_array2_set','variable_local_set',
+ 'variable_local_array_set','variable_local_array2_set','set_program_priority',
+ // User interaction
+ 'keyboard_set_map','keyboard_get_map','keyboard_unset_map','keyboard_check',
+ 'keyboard_check_pressed','keyboard_check_released','keyboard_check_direct',
+ 'keyboard_get_numlock','keyboard_set_numlock','keyboard_key_press','keyboard_key_release',
+ 'keyboard_clear','io_clear','io_handle','keyboard_wait',
+ 'mouse_check_button','mouse_check_button_pressed','mouse_check_button_released','mouse_clear',
+ 'io_clear','io_handle','mouse_wait',
+ 'joystick_exists','joystick_name','joystick_axes','joystick_buttons','joystick_has_pov',
+ 'joystick_direction','joystick_check_button','joystick_xpos','joystick_ypos','joystick_zpos',
+ 'joystick_rpos','joystick_upos','joystick_vpos','joystick_pov',
+ // Game Graphics
+ 'draw_sprite','draw_sprite_stretched','draw_sprite_tiled','draw_sprite_part','draw_background',
+ 'draw_background_stretched','draw_background_tiled','draw_background_part','draw_sprite_ext',
+ 'draw_sprite_stretched_ext','draw_sprite_tiled_ext','draw_sprite_part_ext','draw_sprite_general',
+ 'draw_background_ext','draw_background_stretched_ext','draw_background_tiled_ext',
+ 'draw_background_part_ext','draw_background_general',
+ 'draw_clear','draw_clear_alpha','draw_point','draw_line','draw_rectangle','draw_roundrect',
+ 'draw_triangle','draw_circle','draw_ellipse','draw_arrow','draw_button','draw_path',
+ 'draw_healthbar','draw_set_color','draw_set_alpha','draw_get_color','draw_get_alpha',
+ 'make_color_rgb','make_color_hsv','color_get_red','color_get_green','color_get_blue',
+ 'color_get_hue','color_get_saturation','color_get_value','merge_color','draw_getpixel',
+ 'screen_save','screen_save_part',
+ 'draw_set_font','draw_set_halign','draw_set_valign','draw_text','draw_text_ext','string_width',
+ 'string_height','string_width_ext','string_height_ext','draw_text_transformed',
+ 'draw_text_ext_transformed','draw_text_color','draw_text_ext_color',
+ 'draw_text_transformed_color','draw_text_ext_transformed_color',
+ 'draw_point_color','draw_line_color','draw_rectangle_color','draw_roundrect_color',
+ 'draw_triangle_color','draw_circle_color','draw_ellipse_color','draw_primitive_begin',
+ 'draw_vertex','draw_vertex_color','draw_primitive_end','sprite_get_texture',
+ 'background_get_texture','texture_preload','texture_set_priority',
+ 'texture_get_width','texture_get_height','draw_primitive_begin_texture','draw_vertex_texture',
+ 'draw_vertex_texture_color','draw_primitive_end','texture_set_interpolation',
+ 'texture_set_blending','texture_set_repeat','draw_set_blend_mode','draw_set_blend_mode_ext',
+ 'surface_create','surface_free','surface_exists','surface_get_width','surface_get_height',
+ 'surface_get_texture','surface_set_target','surface_reset_target','surface_getpixel',
+ 'surface_save','surface_save_part','draw_surface','draw_surface_stretched','draw_surface_tiled',
+ 'draw_surface_part','draw_surface_ext','draw_surface_stretched_ext','draw_surface_tiled_ext',
+ 'draw_surface_part_ext','draw_surface_general','surface_copy','surface_copy_part',
+ 'tile_add','tile_delete','tile_exists','tile_get_x','tile_get_y','tile_get_left','tile_get_top',
+ 'tile_get_width','tile_get_height','tile_get_depth','tile_get_visible','tile_get_xscale',
+ 'tile_get_yscale','tile_get_background','tile_get_blend','tile_get_alpha','tile_set_position',
+ 'tile_set_region','tile_set_background','tile_set_visible','tile_set_depth','tile_set_scale',
+ 'tile_set_blend','tile_set_alpha','tile_layer_hide','tile_layer_show','tile_layer_delete',
+ 'tile_layer_shift','tile_layer_find','tile_layer_delete_at','tile_layer_depth',
+ 'display_get_width','display_get_height','display_get_colordepth','display_get_frequency',
+ 'display_set_size','display_set_colordepth','display_set_frequency','display_set_all',
+ 'display_test_all','display_reset','display_mouse_get_x','display_mouse_get_y','display_mouse_set',
+ 'window_set_visible','window_get_visible','window_set_fullscreen','window_get_fullscreen',
+ 'window_set_showborder','window_get_showborder','window_set_showicons','window_get_showicons',
+ 'window_set_stayontop','window_get_stayontop','window_set_sizeable','window_get_sizeable',
+ 'window_set_caption','window_get_caption','window_set_cursor', 'window_get_cursor',
+ 'window_set_color','window_get_color','window_set_region_scale','window_get_region_scale',
+ 'window_set_position','window_set_size','window_set_rectangle','window_center','window_default',
+ 'window_get_x','window_get_y','window_get_width','window_get_height','window_mouse_get_x',
+ 'window_mouse_get_y','window_mouse_set',
+ 'window_set_region_size','window_get_region_width','window_get_region_height',
+ 'window_view_mouse_get_x','window_view_mouse_get_y','window_view_mouse_set',
+ 'window_views_mouse_get_x','window_views_mouse_get_y','window_views_mouse_set',
+ 'screen_redraw','screen_refresh','set_automatic_draw','set_synchronization','screen_wait_vsync',
+ // Sound and music)
+ 'sound_play','sound_loop','sound_stop','sound_stop_all','sound_isplaying','sound_volume',
+ 'sound_global_volume','sound_fade','sound_pan','sound_background_tempo','sound_set_search_directory',
+ 'sound_effect_set','sound_effect_chorus','sound_effect_echo', 'sound_effect_flanger',
+ 'sound_effect_gargle','sound_effect_reverb','sound_effect_compressor','sound_effect_equalizer',
+ 'sound_3d_set_sound_position','sound_3d_set_sound_velocity','sound_3d_set_sound_distance',
+ 'sound_3d_set_sound_cone',
+ 'cd_init','cd_present','cd_number','cd_playing','cd_paused','cd_track','cd_length',
+ 'cd_track_length','cd_position','cd_track_position','cd_play','cd_stop','cd_pause','cd_resume',
+ 'cd_set_position','cd_set_track_position','cd_open_door','cd_close_door','MCI_command',
+ // Splash screens, highscores, and other pop-ups
+ 'show_text','show_image','show_video','show_info','load_info',
+ 'show_message','show_message_ext','show_question','get_integer','get_string',
+ 'message_background','message_alpha','message_button','message_text_font','message_button_font',
+ 'message_input_font','message_mouse_color','message_input_color','message_caption',
+ 'message_position','message_size','show_menu','show_menu_pos','get_color','get_open_filename',
+ 'get_save_filename','get_directory','get_directory_alt','show_error',
+ 'highscore_show','highscore_set_background','highscore_set_border','highscore_set_font',
+ 'highscore_set_colors','highscore_set_strings','highscore_show_ext','highscore_clear',
+ 'highscore_add','highscore_add_current','highscore_value','highscore_name','draw_highscore',
+ // Resources
+ 'sprite_exists','sprite_get_name','sprite_get_number','sprite_get_width','sprite_get_height',
+ 'sprite_get_transparent','sprite_get_smooth','sprite_get_preload','sprite_get_xoffset',
+ 'sprite_get_yoffset','sprite_get_bbox_left','sprite_get_bbox_right','sprite_get_bbox_top',
+ 'sprite_get_bbox_bottom','sprite_get_bbox_mode','sprite_get_precise',
+ 'sound_exists','sound_get_name','sound_get_kind','sound_get_preload','sound_discard',
+ 'sound_restore',
+ 'background_exists','background_get_name','background_get_width','background_get_height',
+ 'background_get_transparent','background_get_smooth','background_get_preload',
+ 'font_exists','font_get_name','font_get_fontname','font_get_bold','font_get_italic',
+ 'font_get_first','font_get_last',
+ 'path_exists','path_get_name','path_get_length','path_get_kind','path_get_closed',
+ 'path_get_precision','path_get_number','path_get_point_x','path_get_point_y',
+ 'path_get_point_speed','path_get_x','path_get_y','path_get_speed',
+ 'script_exists','script_get_name','script_get_text',
+ 'timeline_exists','timeline_get_name',
+ 'object_exists','object_get_name','object_get_sprite','object_get_solid','object_get_visible',
+ 'object_get_depth','object_get_persistent','object_get_mask','object_get_parent',
+ 'object_is_ancestor',
+ 'room_exists','room_get_name',
+ // Changing resources
+ 'sprite_set_offset','sprite_set_bbox_mode','sprite_set_bbox','sprite_set_precise',
+ 'sprite_duplicate','sprite_assign','sprite_merge','sprite_add','sprite_replace',
+ 'sprite_create_from_screen','sprite_add_from_screen','sprite_create_from_surface',
+ 'sprite_add_from_surface','sprite_delete','sprite_set_alpha_from_sprite',
+ 'sound_add','sound_replace','sound_delete',
+ 'background_duplicate','background_assign','background_add','background_replace',
+ 'background_create_color','background_create_gradient','background_create_from_screen',
+ 'background_create_from_surface','background_delete','background_set_alpha_from_background',
+ 'font_add','font_add_sprite','font_replace_sprite','font_delete',
+ 'path_set_kind','path_set_closed','path_set_precision','path_add','path_delete','path_duplicate',
+ 'path_assign','path_append','path_add_point','path_insert_point','path_change_point',
+ 'path_delete_point','path_clear_points','path_reverse','path_mirror','path_flip','path_rotate',
+ 'path_scale','path_shift',
+ 'execute_string','execute_file','script_execute',
+ 'timeline_add','timeline_delete','timeline_moment_add','timeline_moment_clear',
+ 'object_set_sprite','object_set_solid','object_set_visible','object_set_depth',
+ 'object_set_persistent','object_set_mask','object_set_parent','object_add','object_delete',
+ 'object_event_add','object_event_clear',
+ 'room_set_width','room_set_height','room_set_caption','room_set_persistent','room_set_code',
+ 'room_set_background_color','room_set_background','room_set_view','room_set_view_enabled',
+ 'room_add','room_duplicate','room_assign','room_instance_add','room_instance_clear',
+ 'room_tile_add','room_tile_add_ext','room_tile_clear',
+ // Files, registry and executing programs
+ 'file_text_open_read','file_text_open_write','file_text_open_append','file_text_close',
+ 'file_text_write_string','file_text_write_real','file_text_writeln','file_text_read_string',
+ 'file_text_read_real','file_text_readln','file_text_eof','file_exists','file_delete',
+ 'file_rename','file_copy','directory_exists','directory_create','file_find_first',
+ 'file_find_next','file_find_close','file_attributes', 'filename_name','filename_path',
+ 'filename_dir','filename_drive','filename_ext','filename_change_ext','file_bin_open',
+ 'file_bin_rewrite','file_bin_close','file_bin_size','file_bin_position','file_bin_seek',
+ 'file_bin_write_byte','file_bin_read_byte','parameter_count','parameter_string',
+ 'environment_get_variable',
+ 'registry_write_string','registry_write_real','registry_read_string','registry_read_real',
+ 'registry_exists','registry_write_string_ext','registry_write_real_ext',
+ 'registry_read_string_ext','registry_read_real_ext','registry_exists_ext','registry_set_root',
+ 'ini_open','ini_close','ini_read_string','ini_read_real','ini_write_string','ini_write_real',
+ 'ini_key_exists','ini_section_exists','ini_key_delete','ini_section_delete',
+ 'execute_program','execute_shell',
+ // Data structures
+ 'ds_stack_create','ds_stack_destroy','ds_stack_clear','ds_stack_size','ds_stack_empty',
+ 'ds_stack_push','ds_stack_pop','ds_stack_top',
+ 'ds_queue_create','ds_queue_destroy','ds_queue_clear','ds_queue_size','ds_queue_empty',
+ 'ds_queue_enqueue','ds_queue_dequeue','ds_queue_head','ds_queue_tail',
+ 'ds_list_create','ds_list_destroy','ds_list_clear','ds_list_size','ds_list_empty','ds_list_add',
+ 'ds_list_insert','ds_list_replace','ds_list_delete','ds_list_find_index','ds_list_find_value',
+ 'ds_list_sort',
+ 'ds_map_create','ds_map_destroy','ds_map_clear','ds_map_size','ds_map_empty','ds_map_add',
+ 'ds_map_replace','ds_map_delete','ds_map_exists','ds_map_find_value','ds_map_find_previous',
+ 'ds_map_find_next','ds_map_find_first','ds_map_find_last',
+ 'ds_priority_create','ds_priority_destroy','ds_priority_clear','ds_priority_size',
+ 'ds_priority_empty','ds_priority_add','ds_priority_change_priority','ds_priority_find_priority',
+ 'ds_priority_delete_value','ds_priority_delete_min','ds_priority_find_min',
+ 'ds_priority_delete_max','ds_priority_find_max',
+ 'ds_grid_create','ds_grid_destroy','ds_grid_resize','ds_grid_width','ds_grid_height',
+ 'ds_grid_clear','ds_grid_set','ds_grid_add','ds_grid_multiply','ds_grid_set_region',
+ 'ds_grid_add_region','ds_grid_multiply_region','ds_grid_set_disk','ds_grid_add_disk',
+ 'ds_grid_multiply_disk','ds_grid_get','ds_grid_get_sum','ds_grid_get_max','ds_grid_get_min',
+ 'ds_grid_get_mean','ds_grid_get_disk_sum','ds_grid_get_disk_min','ds_grid_get_disk_max',
+ 'ds_grid_get_disk_mean','ds_grid_value_exists','ds_grid_value_x','ds_grid_value_y',
+ 'ds_grid_value_disk_exists','ds_grid_value_disk_x','ds_grid_value_disk_y',
+ // Creating particles
+ 'effect_create_below','effect_create_above','effect_clear',
+ 'part_type_create','part_type_destroy','part_type_exists','part_type_clear','part_type_shape',
+ 'part_type_sprite','part_type_size','part_type_scale',
+ 'part_type_orientation','part_type_color1','part_type_color2','part_type_color3',
+ 'part_type_color_mix','part_type_color_rgb','part_type_color_hsv',
+ 'part_type_alpha1','part_type_alpha2','part_type_alpha3','part_type_blend','part_type_life',
+ 'part_type_step','part_type_death','part_type_speed','part_type_direction','part_type_gravity',
+ 'part_system_create','part_system_destroy','part_system_exists','part_system_clear',
+ 'part_system_draw_order','part_system_depth','part_system_position',
+ 'part_system_automatic_update','part_system_automatic_draw','part_system_update',
+ 'part_system_drawit','part_particles_create','part_particles_create_color',
+ 'part_particles_clear','part_particles_count',
+ 'part_emitter_create','part_emitter_destroy','part_emitter_destroy_all','part_emitter_exists',
+ 'part_emitter_clear','part_emitter_region','part_emitter_burst','part_emitter_stream',
+ 'part_attractor_create','part_attractor_destroy','part_attractor_destroy_all',
+ 'part_attractor_exists','part_attractor_clear','part_attractor_position','part_attractor_force',
+ 'part_destroyer_create','part_destroyer_destroy','part_destroyer_destroy_all',
+ 'part_destroyer_exists','part_destroyer_clear','part_destroyer_region',
+ 'part_deflector_create','part_deflector_destroy','part_deflector_destroy_all',
+ 'part_deflector_exists','part_deflector_clear','part_deflector_region','part_deflector_kind',
+ 'part_deflector_friction',
+ 'part_changer_create','part_changer_destroy','part_changer_destroy_all','part_changer_exists',
+ 'part_changer_clear','part_changer_region','part_changer_types','part_changer_kind',
+ // Multiplayer games
+ 'mplay_init_ipx','mplay_init_tcpip','mplay_init_modem','mplay_init_serial',
+ 'mplay_connect_status','mplay_end','mplay_ipaddress',
+ 'mplay_session_create','mplay_session_find','mplay_session_name','mplay_session_join',
+ 'mplay_session_mode','mplay_session_status','mplay_session_end',
+ 'mplay_player_find','mplay_player_name','mplay_player_id',
+ 'mplay_data_write','mplay_data_read','mplay_data_mode',
+ 'mplay_message_send','mplay_message_send_guaranteed','mplay_message_receive','mplay_message_id',
+ 'mplay_message_value','mplay_message_player','mplay_message_name','mplay_message_count',
+ 'mplay_message_clear',
+ // Using DLL's
+ 'external_define','external_call','external_free','execute_string','execute_file','window_handle',
+ // 3D Graphics
+ 'd3d_start','d3d_end','d3d_set_hidden','d3d_set_perspective',
+ 'd3d_set_depth',
+ 'd3d_primitive_begin','d3d_vertex','d3d_vertex_color','d3d_primitive_end',
+ 'd3d_primitive_begin_texture','d3d_vertex_texture','d3d_vertex_texture_color','d3d_set_culling',
+ 'd3d_draw_block','d3d_draw_cylinder','d3d_draw_cone','d3d_draw_ellipsoid','d3d_draw_wall',
+ 'd3d_draw_floor',
+ 'd3d_set_projection','d3d_set_projection_ext','d3d_set_projection_ortho',
+ 'd3d_set_projection_perspective',
+ 'd3d_transform_set_identity','d3d_transform_set_translation','d3d_transform_set_scaling',
+ 'd3d_transform_set_rotation_x','d3d_transform_set_rotation_y','d3d_transform_set_rotation_z',
+ 'd3d_transform_set_rotation_axis','d3d_transform_add_translation','d3d_transform_add_scaling',
+ 'd3d_transform_add_rotation_x','d3d_transform_add_rotation_y','d3d_transform_add_rotation_z',
+ 'd3d_transform_add_rotation_axis','d3d_transform_stack_clear','d3d_transform_stack_empty',
+ 'd3d_transform_stack_push','d3d_transform_stack_pop','d3d_transform_stack_top',
+ 'd3d_transform_stack_discard',
+ 'd3d_set_fog',
+ 'd3d_set_lighting','d3d_set_shading','d3d_light_define_direction','d3d_light_define_point',
+ 'd3d_light_enable','d3d_vertex_normal','d3d_vertex_normal_color','d3d_vertex_normal_texture',
+ 'd3d_vertex_normal_texture_color',
+ 'd3d_model_create','d3d_model_destroy','d3d_model_clear','d3d_model_save','d3d_model_load',
+ 'd3d_model_draw','d3d_model_primitive_begin','d3d_model_vertex','d3d_model_vertex_color',
+ 'd3d_model_vertex_texture','d3d_model_vertex_texture_color','d3d_model_vertex_normal',
+ 'd3d_model_vertex_normal_color','d3d_model_vertex_normal_texture',
+ 'd3d_model_vertex_normal_texture_color','d3d_model_primitive_end','d3d_model_block',
+ 'd3d_model_cylinder','d3d_model_cone','d3d_model_ellipsoid','d3d_model_wall','d3d_model_floor'
+ ),
+ // constants
+ 4 => array(
+ 'true', 'false', 'pi',
+ 'ev_destroy','ev_step','ev_alarm','ev_keyboard','ev_mouse','ev_collision','ev_other','ev_draw',
+ 'ev_keypress','ev_keyrelease','ev_left_button','ev_right_button','ev_middle_button',
+ 'ev_no_button','ev_left_press','ev_right_press','ev_middle_press','ev_left_release',
+ 'ev_right_release','ev_middle_release','ev_mouse_enter','ev_mouse_leave','ev_mouse_wheel_up',
+ 'ev_mouse_wheel_down','ev_global_left_button','ev_global_right_button','ev_global_middle_button',
+ 'ev_global_left_press','ev_global_right_press','ev_global_middle_press','ev_global_left_release',
+ 'ev_global_right_release','ev_global_middle_release','ev_joystick1_left','ev_joystick1_right',
+ 'ev_joystick1_up','ev_joystick1_down','ev_joystick1_button1','ev_joystick1_button2',
+ 'ev_joystick1_button3','ev_joystick1_button4','ev_joystick1_button5','ev_joystick1_button6',
+ 'ev_joystick1_button7','ev_joystick1_button8','ev_joystick2_left','ev_joystick2_right',
+ 'ev_joystick2_up','ev_joystick2_down','ev_joystick2_button1','ev_joystick2_button2',
+ 'ev_joystick2_button3','ev_joystick2_button4','ev_joystick2_button5','ev_joystick2_button6',
+ 'ev_joystick2_button7','ev_joystick2_button8',
+ 'ev_outside','ev_boundary','ev_game_start','ev_game_end','ev_room_start','ev_room_end',
+ 'ev_no_more_lives','ev_no_more_health','ev_animation_end','ev_end_of_path','ev_user0','ev_user1',
+ 'ev_user2','ev_user3','ev_user4','ev_user5','ev_user6','ev_user7','ev_user8','ev_user9',
+ 'ev_user10','ev_user11','ev_user12','ev_user13','ev_user14','ev_user15','ev_step_normal',
+ 'ev_step_begin','ev_step_end',
+ 'vk_nokey','vk_anykey','vk_left','vk_right','vk_up','vk_down','vk_enter','vk_escape','vk_space',
+ 'vk_shift','vk_control','vk_alt','vk_backspace','vk_tab','vk_home','vk_end','vk_delete',
+ 'vk_insert','vk_pageup','vk_pagedown','vk_pause','vk_printscreen',
+ 'vk_f1','vk_f2','vk_f3','vk_f4','vk_f5','vk_f6','vk_f7','vk_f8','vk_f9','vk_f10','vk_f11','vk_f12',
+ 'vk_numpad0','vk_numpad1','vk_numpad2','vk_numpad3','vk_numpad4','vk_numpad5','vk_numpad6',
+ 'vk_numpad7','vk_numpad8','vk_numpad9', 'vk_multiply','vk_divide','vk_add','vk_subtract',
+ 'vk_decimal','vk_lshift','vk_lcontrol','vk_lalt','vk_rshift','vk_rcontrol','vk_ralt',
+ 'c_aqua','c_black','c_blue','c_dkgray','c_fuchsia','c_gray','c_green','c_lime','c_ltgray',
+ 'c_maroon','c_navy','c_olive','c_purple','c_red','c_silver','c_teal','c_white','c_yellow',
+ 'fa_left', 'fa_center','fa_right','fa_top','fa_middle','fa_bottom',
+ 'pr_pointlist','pr_linelist','pr_linestrip','pr_trianglelist','pr_trianglestrip',
+ 'pr_trianglefan',
+ 'cr_none','cr_arrow','cr_cross','cr_beam','cr_size_nesw','cr_size_ns','cr_size_nwse',
+ 'cr_size_we','cr_uparrow','cr_hourglass','cr_drag','cr_nodrop','cr_hsplit','cr_vsplit',
+ 'cr_multidrag','cr_sqlwait','cr_no','cr_appstart','cr_help','cr_handpoint','cr_size_all',
+ 'se_chorus','se_echo','se_flanger','se_gargle','se_reverb','se_compressor','se_equalizer',
+ 'fa_readonly','fa_hidden','fa_sysfile','fa_volumeid','fa_directory','fa_archive',
+ 'pt_shape_pixel','pt_shape_disk','pt_shape_square','pt_shape_line','pt_shape_star',
+ 'pt_shape_circle','pt_shape_ring','pt_shape_sphere','pt_shape_flare','pt_shape_spark',
+ 'pt_shape_explosion','pt_shape_cloud','pt_shape_smoke','pt_shape_snow',
+ 'ps_shape_rectangle','ps_shape_ellipse ','ps_shape_diamond','ps_shape_line',
+ 'ps_distr_linear','ps_distr_gaussian','ps_force_constant','ps_force_linear','ps_force_quadratic',
+ 'ps_deflect_horizontal', 'ps_deflect_vertical',
+ 'ps_change_motion','ps_change_shape','ps_change_all'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '&&', '||', '^^', '<', '<=', '==', '!=', '>', '>=',
+ '|', '&', '^', '<<', '>>', '+', '-', '*', '/', '!', '-', '~'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ 4 => true,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'font-weight: bold; color: #000000;',
+ 2 => 'font-weight: bold; color: #000000;',
+ 3 => 'color: navy;',
+ 4 => 'color: #663300;',
+ ),
+ 'COMMENTS' => array(
+ 1 => 'font-style: italic; color: green;',
+ 'MULTI' => 'font-style: italic; color: green;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;' //'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #202020;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66; font-weight: bold;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ // All GML functions have been indexed, but need some corrections.
+ 3 => 'http://www.zonamakers.com/gmlreference/{FNAME}.html', // (provisional, could change soon!)
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/groovy.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/groovy.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/groovy.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2117 +1,2117 @@
-<?php
-/*************************************************************************************
- * groovy.php
- * ----------
- * Author: Ivan F. Villanueva B. (geshi_groovy at artificialidea.com)
- * Copyright: (c) 2006 Ivan F. Villanueva B.(http://www.artificialidea.com)
- * Release Version: 1.0.7.21
- * Date Started: 2006/04/29
- *
- * Groovy language file for GeSHi.
- *
- * Keywords from http: http://docs.codehaus.org/download/attachments/2715/groovy-reference-card.pdf?version=1
- *
- * CHANGES
- * -------
- * 2006/04/29 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/04/29)
- * -------------------------
- * Testing
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Groovy',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => 'import', 3 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'''", '"""', "'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- '||',
- 'while',
- 'switch',
- 'in',
- 'if',
- 'foreach',
- 'for',
- 'else',
- 'do',
- 'case',
- '=>',
- '--',
- '++',
- '<<',
- '<<<',
- '&&'
- ),
- 2 => array(
- 'volatile',
- 'try',
- 'true',
- 'transient',
- 'throws',
- 'throw',
- 'this',
- 'synchronized',
- 'super',
- 'strictfp',
- 'static',
- 'return',
- 'public',
- 'protected',
- 'property',
- 'private',
- 'package',
- 'null',
- 'new',
- 'native',
- 'interface',
- 'instanceof',
- 'implements',
- 'goto',
- 'finally',
- 'final',
- 'false',
- 'extends',
- 'enum',
- 'default',
- 'def',
- 'continue',
- 'const',
- 'class',
- 'catch',
- 'break',
- 'assert',
- 'abstract',
- 'as'
- ),
- 3 => array(
- '_Remote_Stub',
- '_PolicyStub',
- '_NamingContextStub',
- '_NamingContextImplBase',
- '_IDLTypeStub',
- '_BindingIteratorStub',
- '_BindingIteratorImplBase',
- 'ZoneView',
- 'ZipOutputStream',
- 'ZipInputStream',
- 'ZipFile',
- 'ZipException',
- 'ZipEntry',
- 'X509Extension',
- 'X509EncodedKeySpec',
- 'X509Certificate',
- 'X509CRLEntry',
- 'X509CRL',
- 'WrongTransaction',
- 'Writer',
- 'WriteAbortedException',
- 'WritableRenderedImage',
- 'WritableRaster',
- 'WrappedPlainView',
- 'WindowListener',
- 'WindowEvent',
- 'WindowConstants',
- 'WindowAdapter',
- 'Window',
- 'WeakReference',
- 'WeakHashMap',
- 'WStringValueHelper',
- 'WCharSeqHolder',
- 'WCharSeqHelper',
- 'Void',
- 'VoiceStatus',
- 'VisibilityHelper',
- 'Visibility',
- 'VirtualMachineError',
- 'ViewportUI',
- 'ViewportLayout',
- 'ViewFactory',
- 'View',
- 'VetoableChangeSupport',
- 'VetoableChangeListener',
- 'VersionSpecHelper',
- 'VerifyError',
- 'Vector',
- 'VariableHeightLayoutCache',
- 'ValueMemberHelper',
- 'ValueMember',
- 'ValueHandler',
- 'ValueFactory',
- 'ValueBaseHolder',
- 'ValueBaseHelper',
- 'ValueBase',
- 'VM_TRUNCATABLE',
- 'VM_NONE',
- 'VM_CUSTOM',
- 'VM_ABSTRACT',
- 'VMID',
- 'Utilities',
- 'UtilDelegate',
- 'Util',
- 'UserException',
- 'UnsupportedOperationException',
- 'UnsupportedLookAndFeelException',
- 'UnsupportedFlavorException',
- 'UnsupportedEncodingException',
- 'UnsupportedClassVersionError',
- 'UnsupportedAudioFileException',
- 'UnsolicitedNotificationListener',
- 'UnsolicitedNotificationEvent',
- 'UnsolicitedNotification',
- 'UnsatisfiedLinkError',
- 'UnresolvedPermission',
- 'Unreferenced',
- 'UnrecoverableKeyException',
- 'UnmarshalException',
- 'UnknownUserException',
- 'UnknownServiceException',
- 'UnknownObjectException',
- 'UnknownHostException',
- 'UnknownHostException',
- 'UnknownGroupException',
- 'UnknownException',
- 'UnknownError',
- 'UnionMemberHelper',
- 'UnionMember',
- 'UnicastRemoteObject',
- 'UnexpectedException',
- 'UndoableEditSupport',
- 'UndoableEditListener',
- 'UndoableEditEvent',
- 'UndoableEdit',
- 'UndoManager',
- 'UndeclaredThrowableException',
- 'UTFDataFormatException',
- 'UShortSeqHolder',
- 'UShortSeqHelper',
- 'URLStreamHandlerFactory',
- 'URLStreamHandler',
- 'URLEncoder',
- 'URLDecoder',
- 'URLConnection',
- 'URLClassLoader',
- 'URL',
- 'UNSUPPORTED_POLICY_VALUE',
- 'UNSUPPORTED_POLICY',
- 'UNKNOWN',
- 'ULongSeqHolder',
- 'ULongSeqHelper',
- 'ULongLongSeqHolder',
- 'ULongLongSeqHelper',
- 'UIResource',
- 'UIManager.LookAndFeelInfo',
- 'UIManager',
- 'UIDefaults.ProxyLazyValue',
- 'UIDefaults.LazyValue',
- 'UIDefaults.LazyInputMap',
- 'UIDefaults.ActiveValue',
- 'UIDefaults',
- 'UID',
- 'Types',
- 'TypeMismatch',
- 'TypeCodeHolder',
- 'TypeCode',
- 'TreeWillExpandListener',
- 'TreeUI',
- 'TreeSet',
- 'TreeSelectionModel',
- 'TreeSelectionListener',
- 'TreeSelectionEvent',
- 'TreePath',
- 'TreeNode',
- 'TreeModelListener',
- 'TreeModelEvent',
- 'TreeModel',
- 'TreeMap',
- 'TreeExpansionListener',
- 'TreeExpansionEvent',
- 'TreeCellRenderer',
- 'TreeCellEditor',
- 'Transparency',
- 'Transmitter',
- 'TransformAttribute',
- 'Transferable',
- 'TransactionRolledbackException',
- 'TransactionRequiredException',
- 'Track',
- 'Toolkit',
- 'ToolTipUI',
- 'ToolTipManager',
- 'ToolBarUI',
- 'TooManyListenersException',
- 'TitledBorder',
- 'Timestamp',
- 'TimerTask',
- 'Timer',
- 'Timer',
- 'TimeZone',
- 'TimeLimitExceededException',
- 'Time',
- 'TileObserver',
- 'Tie',
- 'Throwable',
- 'ThreadLocal',
- 'ThreadGroup',
- 'ThreadDeath',
- 'Thread',
- 'TexturePaint',
- 'TextUI',
- 'TextMeasurer',
- 'TextListener',
- 'TextLayout.CaretPolicy',
- 'TextLayout',
- 'TextHitInfo',
- 'TextField',
- 'TextEvent',
- 'TextComponent',
- 'TextAttribute',
- 'TextArea',
- 'TextAction',
- 'TargetDataLine',
- 'TagElement',
- 'TableView',
- 'TableUI',
- 'TableModelListener',
- 'TableModelEvent',
- 'TableModel',
- 'TableHeaderUI',
- 'TableColumnModelListener',
- 'TableColumnModelEvent',
- 'TableColumnModel',
- 'TableColumn',
- 'TableCellRenderer',
- 'TableCellEditor',
- 'TabbedPaneUI',
- 'TabableView',
- 'TabStop',
- 'TabSet',
- 'TabExpander',
- 'TRANSIENT',
- 'TRANSACTION_ROLLEDBACK',
- 'TRANSACTION_REQUIRED',
- 'TCKind',
- 'SystemFlavorMap',
- 'SystemException',
- 'SystemColor',
- 'System',
- 'SysexMessage',
- 'Synthesizer',
- 'SyncFailedException',
- 'SwingUtilities',
- 'SwingPropertyChangeSupport',
- 'SwingConstants',
- 'StyledEditorKit.UnderlineAction',
- 'StyledEditorKit.StyledTextAction',
- 'StyledEditorKit.ItalicAction',
- 'StyledEditorKit.ForegroundAction',
- 'StyledEditorKit.FontSizeAction',
- 'StyledEditorKit.FontFamilyAction',
- 'StyledEditorKit.BoldAction',
- 'StyledEditorKit.AlignmentAction',
- 'StyledEditorKit',
- 'StyledDocument',
- 'StyleSheet.ListPainter',
- 'StyleSheet.BoxPainter',
- 'StyleSheet',
- 'StyleContext',
- 'StyleConstants.ParagraphConstants',
- 'StyleConstants.FontConstants',
- 'StyleConstants.ColorConstants',
- 'StyleConstants.CharacterConstants',
- 'StyleConstants',
- 'Style',
- 'StubNotFoundException',
- 'StubDelegate',
- 'Stub',
- 'StructMemberHelper',
- 'StructMember',
- 'Struct',
- 'Stroke',
- 'StringWriter',
- 'StringValueHelper',
- 'StringTokenizer',
- 'StringSelection',
- 'StringRefAddr',
- 'StringReader',
- 'StringIndexOutOfBoundsException',
- 'StringHolder',
- 'StringContent',
- 'StringCharacterIterator',
- 'StringBufferInputStream',
- 'StringBuffer',
- 'String',
- 'StrictMath',
- 'StreamableValue',
- 'Streamable',
- 'StreamTokenizer',
- 'StreamCorruptedException',
- 'Statement',
- 'StateFactory',
- 'StateEditable',
- 'StateEdit',
- 'StackOverflowError',
- 'Stack',
- 'SplitPaneUI',
- 'SourceDataLine',
- 'SoundbankResource',
- 'SoundbankReader',
- 'Soundbank',
- 'SortedSet',
- 'SortedMap',
- 'SoftReference',
- 'SoftBevelBorder',
- 'SocketSecurityException',
- 'SocketPermission',
- 'SocketOptions',
- 'SocketImplFactory',
- 'SocketImpl',
- 'SocketException',
- 'Socket',
- 'SliderUI',
- 'SkeletonNotFoundException',
- 'SkeletonMismatchException',
- 'Skeleton',
- 'SizeSequence',
- 'SizeRequirements',
- 'SizeLimitExceededException',
- 'SingleSelectionModel',
- 'SinglePixelPackedSampleModel',
- 'SimpleTimeZone',
- 'SimpleDateFormat',
- 'SimpleBeanInfo',
- 'SimpleAttributeSet',
- 'Signer',
- 'SignedObject',
- 'SignatureSpi',
- 'SignatureException',
- 'Signature',
- 'ShortSeqHolder',
- 'ShortSeqHelper',
- 'ShortMessage',
- 'ShortLookupTable',
- 'ShortHolder',
- 'Short',
- 'ShapeGraphicAttribute',
- 'Shape',
- 'SetOverrideTypeHelper',
- 'SetOverrideType',
- 'Set',
- 'ServiceUnavailableException',
- 'ServiceInformationHolder',
- 'ServiceInformationHelper',
- 'ServiceInformation',
- 'ServiceDetailHelper',
- 'ServiceDetail',
- 'ServerSocket',
- 'ServerRuntimeException',
- 'ServerRequest',
- 'ServerRef',
- 'ServerNotActiveException',
- 'ServerException',
- 'ServerError',
- 'ServerCloneException',
- 'ServantObject',
- 'SerializablePermission',
- 'Serializable',
- 'Sequencer.SyncMode',
- 'Sequencer',
- 'SequenceInputStream',
- 'Sequence',
- 'SeparatorUI',
- 'Segment',
- 'SecurityPermission',
- 'SecurityManager',
- 'SecurityException',
- 'Security',
- 'SecureRandomSpi',
- 'SecureRandom',
- 'SecureClassLoader',
- 'SearchResult',
- 'SearchControls',
- 'Scrollbar',
- 'Scrollable',
- 'ScrollPaneUI',
- 'ScrollPaneLayout.UIResource',
- 'ScrollPaneLayout',
- 'ScrollPaneConstants',
- 'ScrollPane',
- 'ScrollBarUI',
- 'SchemaViolationException',
- 'SampleModel',
- 'SQLWarning',
- 'SQLPermission',
- 'SQLOutput',
- 'SQLInput',
- 'SQLException',
- 'SQLData',
- 'RuntimePermission',
- 'RuntimeException',
- 'Runtime',
- 'Runnable',
- 'RunTimeOperations',
- 'RunTime',
- 'RuleBasedCollator',
- 'RowMapper',
- 'RoundRectangle2D.Float',
- 'RoundRectangle2D.Double',
- 'RoundRectangle2D',
- 'RootPaneUI',
- 'RootPaneContainer',
- 'Robot',
- 'ReverbType',
- 'ResultSetMetaData',
- 'ResultSet',
- 'ResponseHandler',
- 'ResourceBundle',
- 'Resolver',
- 'ResolveResult',
- 'RescaleOp',
- 'Request',
- 'RepositoryIdHelper',
- 'Repository',
- 'ReplicateScaleFilter',
- 'RepaintManager',
- 'RenderingHints.Key',
- 'RenderingHints',
- 'Renderer',
- 'RenderedImageFactory',
- 'RenderedImage',
- 'RenderableImageProducer',
- 'RenderableImageOp',
- 'RenderableImage',
- 'RenderContext',
- 'RemoteStub',
- 'RemoteServer',
- 'RemoteRef',
- 'RemoteObject',
- 'RemoteException',
- 'RemoteCall',
- 'Remote',
- 'RemarshalException',
- 'RegistryHandler',
- 'Registry',
- 'ReflectPermission',
- 'ReferralException',
- 'Referenceable',
- 'ReferenceQueue',
- 'Reference',
- 'RefAddr',
- 'Ref',
- 'RectangularShape',
- 'Rectangle2D.Float',
- 'Rectangle2D.Double',
- 'Rectangle2D',
- 'Rectangle',
- 'Receiver',
- 'Reader',
- 'RasterOp',
- 'RasterFormatException',
- 'Raster',
- 'RandomAccessFile',
- 'Random',
- 'RTFEditorKit',
- 'RSAPublicKeySpec',
- 'RSAPublicKey',
- 'RSAPrivateKeySpec',
- 'RSAPrivateKey',
- 'RSAPrivateCrtKeySpec',
- 'RSAPrivateCrtKey',
- 'RSAKeyGenParameterSpec',
- 'RSAKey',
- 'RMISocketFactory',
- 'RMIServerSocketFactory',
- 'RMISecurityManager',
- 'RMISecurityException',
- 'RMIFailureHandler',
- 'RMIClientSocketFactory',
- 'RMIClassLoader',
- 'RGBImageFilter',
- 'QuadCurve2D.Float',
- 'QuadCurve2D.Double',
- 'QuadCurve2D',
- 'PushbackReader',
- 'PushbackInputStream',
- 'PublicKey',
- 'Proxy',
- 'ProviderException',
- 'Provider',
- 'ProtocolException',
- 'ProtectionDomain',
- 'PropertyVetoException',
- 'PropertyResourceBundle',
- 'PropertyPermission',
- 'PropertyEditorSupport',
- 'PropertyEditorManager',
- 'PropertyEditor',
- 'PropertyDescriptor',
- 'PropertyChangeSupport',
- 'PropertyChangeListener',
- 'PropertyChangeEvent',
- 'Properties',
- 'ProgressMonitorInputStream',
- 'ProgressMonitor',
- 'ProgressBarUI',
- 'ProfileDataException',
- 'Process',
- 'PrivilegedExceptionAction',
- 'PrivilegedActionException',
- 'PrivilegedAction',
- 'PrivateKey',
- 'PrinterJob',
- 'PrinterIOException',
- 'PrinterGraphics',
- 'PrinterException',
- 'PrinterAbortException',
- 'Printable',
- 'PrintWriter',
- 'PrintStream',
- 'PrintJob',
- 'PrintGraphics',
- 'PrincipalHolder',
- 'Principal',
- 'Principal',
- 'PreparedStatement',
- 'Position.Bias',
- 'Position',
- 'PortableRemoteObjectDelegate',
- 'PortableRemoteObject',
- 'Port.Info',
- 'Port',
- 'PopupMenuUI',
- 'PopupMenuListener',
- 'PopupMenuEvent',
- 'PopupMenu',
- 'Polygon',
- 'PolicyTypeHelper',
- 'PolicyOperations',
- 'PolicyListHolder',
- 'PolicyListHelper',
- 'PolicyHolder',
- 'PolicyHelper',
- 'PolicyError',
- 'Policy',
- 'Policy',
- 'Point2D.Float',
- 'Point2D.Double',
- 'Point2D',
- 'Point',
- 'PlainView',
- 'PlainDocument',
- 'PixelInterleavedSampleModel',
- 'PixelGrabber',
- 'PipedWriter',
- 'PipedReader',
- 'PipedOutputStream',
- 'PipedInputStream',
- 'PhantomReference',
- 'Permissions',
- 'PermissionCollection',
- 'Permission',
- 'Permission',
- 'PathIterator',
- 'Patch',
- 'PasswordView',
- 'PasswordAuthentication',
- 'PartialResultException',
- 'ParserDelegator',
- 'Parser',
- 'ParsePosition',
- 'ParseException',
- 'ParameterDescriptor',
- 'ParameterBlock',
- 'ParagraphView',
- 'ParagraphView',
- 'Paper',
- 'PanelUI',
- 'Panel',
- 'PaintEvent',
- 'PaintContext',
- 'Paint',
- 'Pageable',
- 'PageFormat',
- 'PageAttributes.PrintQualityType',
- 'PageAttributes.OriginType',
- 'PageAttributes.OrientationRequestedType',
- 'PageAttributes.MediaType',
- 'PageAttributes.ColorType',
- 'PageAttributes',
- 'PackedColorModel',
- 'Package',
- 'PUBLIC_MEMBER',
- 'PRIVATE_MEMBER',
- 'PKCS8EncodedKeySpec',
- 'PERSIST_STORE',
- 'Owner',
- 'OverlayLayout',
- 'OutputStreamWriter',
- 'OutputStream',
- 'OutOfMemoryError',
- 'OptionalDataException',
- 'OptionPaneUI',
- 'Option',
- 'OperationNotSupportedException',
- 'Operation',
- 'OpenType',
- 'OctetSeqHolder',
- 'OctetSeqHelper',
- 'Observer',
- 'Observable',
- 'ObjectView',
- 'ObjectStreamField',
- 'ObjectStreamException',
- 'ObjectStreamConstants',
- 'ObjectStreamClass',
- 'ObjectOutputStream.PutField',
- 'ObjectOutputStream',
- 'ObjectOutput',
- 'ObjectInputValidation',
- 'ObjectInputStream.GetField',
- 'ObjectInputStream',
- 'ObjectInput',
- 'ObjectImpl',
- 'ObjectImpl',
- 'ObjectHolder',
- 'ObjectHelper',
- 'ObjectFactoryBuilder',
- 'ObjectFactory',
- 'ObjectChangeListener',
- 'Object',
- 'ObjID',
- 'ORB',
- 'OMGVMCID',
- 'OBJ_ADAPTER',
- 'OBJECT_NOT_EXIST',
- 'NumberFormatException',
- 'NumberFormat',
- 'Number',
- 'NullPointerException',
- 'NotSerializableException',
- 'NotOwnerException',
- 'NotFoundReasonHolder',
- 'NotFoundReasonHelper',
- 'NotFoundReason',
- 'NotFoundHolder',
- 'NotFoundHelper',
- 'NotFound',
- 'NotEmptyHolder',
- 'NotEmptyHelper',
- 'NotEmpty',
- 'NotContextException',
- 'NotBoundException',
- 'NotActiveException',
- 'NoninvertibleTransformException',
- 'NoSuchProviderException',
- 'NoSuchObjectException',
- 'NoSuchMethodException',
- 'NoSuchMethodError',
- 'NoSuchFieldException',
- 'NoSuchFieldError',
- 'NoSuchElementException',
- 'NoSuchAttributeException',
- 'NoSuchAlgorithmException',
- 'NoRouteToHostException',
- 'NoPermissionException',
- 'NoInitialContextException',
- 'NoClassDefFoundError',
- 'NetPermission',
- 'NegativeArraySizeException',
- 'NamingSecurityException',
- 'NamingManager',
- 'NamingListener',
- 'NamingExceptionEvent',
- 'NamingException',
- 'NamingEvent',
- 'NamingEnumeration',
- 'NamingContextOperations',
- 'NamingContextHolder',
- 'NamingContextHelper',
- 'NamingContext',
- 'Naming',
- 'NamespaceChangeListener',
- 'NamedValue',
- 'NameValuePairHelper',
- 'NameValuePair',
- 'NameParser',
- 'NameNotFoundException',
- 'NameHolder',
- 'NameHelper',
- 'NameComponentHolder',
- 'NameComponentHelper',
- 'NameComponent',
- 'NameClassPair',
- 'NameAlreadyBoundException',
- 'Name',
- 'NVList',
- 'NO_RESPONSE',
- 'NO_RESOURCES',
- 'NO_PERMISSION',
- 'NO_MEMORY',
- 'NO_IMPLEMENT',
- 'MutableTreeNode',
- 'MutableComboBoxModel',
- 'MutableAttributeSet',
- 'MultipleMaster',
- 'MulticastSocket',
- 'MultiViewportUI',
- 'MultiTreeUI',
- 'MultiToolTipUI',
- 'MultiToolBarUI',
- 'MultiTextUI',
- 'MultiTableUI',
- 'MultiTableHeaderUI',
- 'MultiTabbedPaneUI',
- 'MultiSplitPaneUI',
- 'MultiSliderUI',
- 'MultiSeparatorUI',
- 'MultiScrollPaneUI',
- 'MultiScrollBarUI',
- 'MultiProgressBarUI',
- 'MultiPopupMenuUI',
- 'MultiPixelPackedSampleModel',
- 'MultiPanelUI',
- 'MultiOptionPaneUI',
- 'MultiMenuItemUI',
- 'MultiMenuBarUI',
- 'MultiLookAndFeel',
- 'MultiListUI',
- 'MultiLabelUI',
- 'MultiInternalFrameUI',
- 'MultiFileChooserUI',
- 'MultiDesktopPaneUI',
- 'MultiDesktopIconUI',
- 'MultiComboBoxUI',
- 'MultiColorChooserUI',
- 'MultiButtonUI',
- 'MouseMotionListener',
- 'MouseMotionAdapter',
- 'MouseListener',
- 'MouseInputListener',
- 'MouseInputAdapter',
- 'MouseEvent',
- 'MouseDragGestureRecognizer',
- 'MouseAdapter',
- 'Modifier',
- 'ModificationItem',
- 'MixerProvider',
- 'Mixer.Info',
- 'Mixer',
- 'MissingResourceException',
- 'MinimalHTMLWriter',
- 'MimeTypeParseException',
- 'MidiUnavailableException',
- 'MidiSystem',
- 'MidiMessage',
- 'MidiFileWriter',
- 'MidiFileReader',
- 'MidiFileFormat',
- 'MidiEvent',
- 'MidiDeviceProvider',
- 'MidiDevice.Info',
- 'MidiDevice',
- 'MidiChannel',
- 'MethodDescriptor',
- 'Method',
- 'MetalTreeUI',
- 'MetalToolTipUI',
- 'MetalToolBarUI',
- 'MetalToggleButtonUI',
- 'MetalTheme',
- 'MetalTextFieldUI',
- 'MetalTabbedPaneUI',
- 'MetalSplitPaneUI',
- 'MetalSliderUI',
- 'MetalSeparatorUI',
- 'MetalScrollPaneUI',
- 'MetalScrollButton',
- 'MetalScrollBarUI',
- 'MetalRadioButtonUI',
- 'MetalProgressBarUI',
- 'MetalPopupMenuSeparatorUI',
- 'MetalLookAndFeel',
- 'MetalLabelUI',
- 'MetalInternalFrameUI',
- 'MetalInternalFrameTitlePane',
- 'MetalIconFactory.TreeLeafIcon',
- 'MetalIconFactory.TreeFolderIcon',
- 'MetalIconFactory.TreeControlIcon',
- 'MetalIconFactory.PaletteCloseIcon',
- 'MetalIconFactory.FolderIcon16',
- 'MetalIconFactory.FileIcon16',
- 'MetalIconFactory',
- 'MetalFileChooserUI',
- 'MetalDesktopIconUI',
- 'MetalComboBoxUI',
- 'MetalComboBoxIcon',
- 'MetalComboBoxEditor.UIResource',
- 'MetalComboBoxEditor',
- 'MetalComboBoxButton',
- 'MetalCheckBoxUI',
- 'MetalCheckBoxIcon',
- 'MetalButtonUI',
- 'MetalBorders.ToolBarBorder',
- 'MetalBorders.ToggleButtonBorder',
- 'MetalBorders.TextFieldBorder',
- 'MetalBorders.TableHeaderBorder',
- 'MetalBorders.ScrollPaneBorder',
- 'MetalBorders.RolloverButtonBorder',
- 'MetalBorders.PopupMenuBorder',
- 'MetalBorders.PaletteBorder',
- 'MetalBorders.OptionDialogBorder',
- 'MetalBorders.MenuItemBorder',
- 'MetalBorders.MenuBarBorder',
- 'MetalBorders.InternalFrameBorder',
- 'MetalBorders.Flush3DBorder',
- 'MetalBorders.ButtonBorder',
- 'MetalBorders',
- 'MetaMessage',
- 'MetaEventListener',
- 'MessageFormat',
- 'MessageDigestSpi',
- 'MessageDigest',
- 'MenuShortcut',
- 'MenuSelectionManager',
- 'MenuListener',
- 'MenuKeyListener',
- 'MenuKeyEvent',
- 'MenuItemUI',
- 'MenuItem',
- 'MenuEvent',
- 'MenuElement',
- 'MenuDragMouseListener',
- 'MenuDragMouseEvent',
- 'MenuContainer',
- 'MenuComponent',
- 'MenuBarUI',
- 'MenuBar',
- 'Menu',
- 'MemoryImageSource',
- 'Member',
- 'MediaTracker',
- 'MatteBorder',
- 'Math',
- 'MarshalledObject',
- 'MarshalException',
- 'Map.Entry',
- 'Map',
- 'Manifest',
- 'MalformedURLException',
- 'MalformedLinkException',
- 'MARSHAL',
- 'LookupTable',
- 'LookupOp',
- 'LookAndFeel',
- 'LongSeqHolder',
- 'LongSeqHelper',
- 'LongLongSeqHolder',
- 'LongLongSeqHelper',
- 'LongHolder',
- 'Long',
- 'LogStream',
- 'LocateRegistry',
- 'Locale',
- 'LoaderHandler',
- 'ListView',
- 'ListUI',
- 'ListSelectionModel',
- 'ListSelectionListener',
- 'ListSelectionEvent',
- 'ListResourceBundle',
- 'ListModel',
- 'ListIterator',
- 'ListDataListener',
- 'ListDataEvent',
- 'ListCellRenderer',
- 'List',
- 'List',
- 'LinkedList',
- 'LinkageError',
- 'LinkRef',
- 'LinkLoopException',
- 'LinkException',
- 'LineUnavailableException',
- 'LineNumberReader',
- 'LineNumberInputStream',
- 'LineMetrics',
- 'LineListener',
- 'LineEvent.Type',
- 'LineEvent',
- 'LineBreakMeasurer',
- 'LineBorder',
- 'Line2D.Float',
- 'Line2D.Double',
- 'Line2D',
- 'Line.Info',
- 'Line',
- 'LimitExceededException',
- 'Lease',
- 'LdapReferralException',
- 'LdapContext',
- 'LayoutQueue',
- 'LayoutManager2',
- 'LayoutManager',
- 'LayeredHighlighter.LayerPainter',
- 'LayeredHighlighter',
- 'LastOwnerException',
- 'LabelView',
- 'LabelUI',
- 'Label',
- 'Keymap',
- 'KeyStroke',
- 'KeyStoreSpi',
- 'KeyStoreException',
- 'KeyStore',
- 'KeySpec',
- 'KeyPairGeneratorSpi',
- 'KeyPairGenerator',
- 'KeyPair',
- 'KeyManagementException',
- 'KeyListener',
- 'KeyFactorySpi',
- 'KeyFactory',
- 'KeyException',
- 'KeyEvent',
- 'KeyAdapter',
- 'Key',
- 'Kernel',
- 'JobAttributes.SidesType',
- 'JobAttributes.MultipleDocumentHandlingType',
- 'JobAttributes.DialogType',
- 'JobAttributes.DestinationType',
- 'JobAttributes.DefaultSelectionType',
- 'JobAttributes',
- 'JarURLConnection',
- 'JarOutputStream',
- 'JarInputStream',
- 'JarFile',
- 'JarException',
- 'JarEntry',
- 'JWindow',
- 'JViewport',
- 'JTree.EmptySelectionModel',
- 'JTree.DynamicUtilTreeNode',
- 'JTree',
- 'JToolTip',
- 'JToolBar.Separator',
- 'JToolBar',
- 'JToggleButton.ToggleButtonModel',
- 'JToggleButton',
- 'JTextPane',
- 'JTextField',
- 'JTextComponent.KeyBinding',
- 'JTextComponent',
- 'JTextArea',
- 'JTableHeader',
- 'JTable',
- 'JTabbedPane',
- 'JSplitPane',
- 'JSlider',
- 'JSeparator',
- 'JScrollPane',
- 'JScrollBar',
- 'JRootPane',
- 'JRadioButtonMenuItem',
- 'JRadioButton',
- 'JProgressBar',
- 'JPopupMenu.Separator',
- 'JPopupMenu',
- 'JPasswordField',
- 'JPanel',
- 'JOptionPane',
- 'JMenuItem',
- 'JMenuBar',
- 'JMenu',
- 'JList',
- 'JLayeredPane',
- 'JLabel',
- 'JInternalFrame.JDesktopIcon',
- 'JInternalFrame',
- 'JFrame',
- 'JFileChooser',
- 'JEditorPane',
- 'JDialog',
- 'JDesktopPane',
- 'JComponent',
- 'JComboBox.KeySelectionManager',
- 'JComboBox',
- 'JColorChooser',
- 'JCheckBoxMenuItem',
- 'JCheckBox',
- 'JButton',
- 'JApplet',
- 'Iterator',
- 'ItemSelectable',
- 'ItemListener',
- 'ItemEvent',
- 'IstringHelper',
- 'InvokeHandler',
- 'InvocationTargetException',
- 'InvocationHandler',
- 'InvocationEvent',
- 'InvalidValue',
- 'InvalidTransactionException',
- 'InvalidSeq',
- 'InvalidSearchFilterException',
- 'InvalidSearchControlsException',
- 'InvalidParameterSpecException',
- 'InvalidParameterException',
- 'InvalidObjectException',
- 'InvalidNameHolder',
- 'InvalidNameHelper',
- 'InvalidNameException',
- 'InvalidName',
- 'InvalidName',
- 'InvalidMidiDataException',
- 'InvalidKeySpecException',
- 'InvalidKeyException',
- 'InvalidDnDOperationException',
- 'InvalidClassException',
- 'InvalidAttributesException',
- 'InvalidAttributeValueException',
- 'InvalidAttributeIdentifierException',
- 'InvalidAlgorithmParameterException',
- 'Invalid',
- 'Introspector',
- 'IntrospectionException',
- 'InterruptedNamingException',
- 'InterruptedIOException',
- 'InterruptedException',
- 'InternalFrameUI',
- 'InternalFrameListener',
- 'InternalFrameEvent',
- 'InternalFrameAdapter',
- 'InternalError',
- 'Integer',
- 'IntHolder',
- 'InsufficientResourcesException',
- 'Instrument',
- 'InstantiationException',
- 'InstantiationError',
- 'InsetsUIResource',
- 'Insets',
- 'InputVerifier',
- 'InputSubset',
- 'InputStreamReader',
- 'InputStream',
- 'InputStream',
- 'InputStream',
- 'InputMethodRequests',
- 'InputMethodListener',
- 'InputMethodHighlight',
- 'InputMethodEvent',
- 'InputMethodDescriptor',
- 'InputMethodContext',
- 'InputMethod',
- 'InputMapUIResource',
- 'InputMap',
- 'InputEvent',
- 'InputContext',
- 'InlineView',
- 'Initializer',
- 'InitialLdapContext',
- 'InitialDirContext',
- 'InitialContextFactoryBuilder',
- 'InitialContextFactory',
- 'InitialContext',
- 'InheritableThreadLocal',
- 'InflaterInputStream',
- 'Inflater',
- 'InetAddress',
- 'IndirectionException',
- 'IndexedPropertyDescriptor',
- 'IndexOutOfBoundsException',
- 'IndexColorModel',
- 'InconsistentTypeCode',
- 'IncompatibleClassChangeError',
- 'ImagingOpException',
- 'ImageProducer',
- 'ImageObserver',
- 'ImageIcon',
- 'ImageGraphicAttribute',
- 'ImageFilter',
- 'ImageConsumer',
- 'Image',
- 'IllegalThreadStateException',
- 'IllegalStateException',
- 'IllegalPathStateException',
- 'IllegalMonitorStateException',
- 'IllegalComponentStateException',
- 'IllegalArgumentException',
- 'IllegalAccessException',
- 'IllegalAccessError',
- 'IdentityScope',
- 'Identity',
- 'IdentifierHelper',
- 'IconView',
- 'IconUIResource',
- 'Icon',
- 'IRObjectOperations',
- 'IRObject',
- 'IOException',
- 'INV_POLICY',
- 'INV_OBJREF',
- 'INV_IDENT',
- 'INV_FLAG',
- 'INVALID_TRANSACTION',
- 'INTF_REPOS',
- 'INTERNAL',
- 'INITIALIZE',
- 'IMP_LIMIT',
- 'IDLTypeOperations',
- 'IDLTypeHelper',
- 'IDLType',
- 'IDLEntity',
- 'ICC_ProfileRGB',
- 'ICC_ProfileGray',
- 'ICC_Profile',
- 'ICC_ColorSpace',
- 'HyperlinkListener',
- 'HyperlinkEvent.EventType',
- 'HyperlinkEvent',
- 'HttpURLConnection',
- 'Highlighter.HighlightPainter',
- 'Highlighter.Highlight',
- 'Highlighter',
- 'HierarchyListener',
- 'HierarchyEvent',
- 'HierarchyBoundsListener',
- 'HierarchyBoundsAdapter',
- 'Hashtable',
- 'HashSet',
- 'HashMap',
- 'HasControls',
- 'HTMLWriter',
- 'HTMLFrameHyperlinkEvent',
- 'HTMLEditorKit.ParserCallback',
- 'HTMLEditorKit.Parser',
- 'HTMLEditorKit.LinkController',
- 'HTMLEditorKit.InsertHTMLTextAction',
- 'HTMLEditorKit.HTMLTextAction',
- 'HTMLEditorKit.HTMLFactory',
- 'HTMLEditorKit',
- 'HTMLDocument.Iterator',
- 'HTMLDocument',
- 'HTML.UnknownTag',
- 'HTML.Tag',
- 'HTML.Attribute',
- 'HTML',
- 'GuardedObject',
- 'Guard',
- 'Group',
- 'GridLayout',
- 'GridBagLayout',
- 'GridBagConstraints',
- 'GregorianCalendar',
- 'GrayFilter',
- 'GraphicsEnvironment',
- 'GraphicsDevice',
- 'GraphicsConfiguration',
- 'GraphicsConfigTemplate',
- 'Graphics2D',
- 'Graphics',
- 'GraphicAttribute',
- 'GradientPaint',
- 'GlyphView.GlyphPainter',
- 'GlyphView',
- 'GlyphVector',
- 'GlyphMetrics',
- 'GlyphJustificationInfo',
- 'GeneralSecurityException',
- 'GeneralPath',
- 'GapContent',
- 'GZIPOutputStream',
- 'GZIPInputStream',
- 'Frame',
- 'FormatConversionProvider',
- 'Format',
- 'FormView',
- 'FontUIResource',
- 'FontRenderContext',
- 'FontMetrics',
- 'FontFormatException',
- 'Font',
- 'FocusManager',
- 'FocusListener',
- 'FocusEvent',
- 'FocusAdapter',
- 'FlowView.FlowStrategy',
- 'FlowView',
- 'FlowLayout',
- 'FloatSeqHolder',
- 'FloatSeqHelper',
- 'FloatHolder',
- 'FloatControl.Type',
- 'FloatControl',
- 'Float',
- 'FlavorMap',
- 'FlatteningPathIterator',
- 'FixedHolder',
- 'FixedHeightLayoutCache',
- 'FilteredImageSource',
- 'FilterWriter',
- 'FilterReader',
- 'FilterOutputStream',
- 'FilterInputStream',
- 'FilenameFilter',
- 'FileWriter',
- 'FileView',
- 'FileSystemView',
- 'FileReader',
- 'FilePermission',
- 'FileOutputStream',
- 'FileNotFoundException',
- 'FileNameMap',
- 'FileInputStream',
- 'FileFilter',
- 'FileFilter',
- 'FileDialog',
- 'FileDescriptor',
- 'FileChooserUI',
- 'File',
- 'FieldView',
- 'FieldPosition',
- 'FieldNameHelper',
- 'Field',
- 'FeatureDescriptor',
- 'FREE_MEM',
- 'Externalizable',
- 'ExtendedResponse',
- 'ExtendedRequest',
- 'ExportException',
- 'ExpandVetoException',
- 'ExceptionList',
- 'ExceptionInInitializerError',
- 'Exception',
- 'EventSetDescriptor',
- 'EventQueue',
- 'EventObject',
- 'EventListenerList',
- 'EventListener',
- 'EventDirContext',
- 'EventContext',
- 'Event',
- 'EtchedBorder',
- 'Error',
- 'Environment',
- 'Enumeration',
- 'EnumControl.Type',
- 'EnumControl',
- 'Entity',
- 'EncodedKeySpec',
- 'EmptyStackException',
- 'EmptyBorder',
- 'Ellipse2D.Float',
- 'Ellipse2D.Double',
- 'Ellipse2D',
- 'ElementIterator',
- 'Element',
- 'EditorKit',
- 'EOFException',
- 'DynamicImplementation',
- 'DynValue',
- 'DynUnion',
- 'DynStruct',
- 'DynSequence',
- 'DynFixed',
- 'DynEnum',
- 'DynArray',
- 'DynAny',
- 'DropTargetListener',
- 'DropTargetEvent',
- 'DropTargetDropEvent',
- 'DropTargetDragEvent',
- 'DropTargetContext',
- 'DropTarget.DropTargetAutoScroller',
- 'DropTarget',
- 'DriverPropertyInfo',
- 'DriverManager',
- 'Driver',
- 'DragSourceListener',
- 'DragSourceEvent',
- 'DragSourceDropEvent',
- 'DragSourceDragEvent',
- 'DragSourceContext',
- 'DragSource',
- 'DragGestureRecognizer',
- 'DragGestureListener',
- 'DragGestureEvent',
- 'DoubleSeqHolder',
- 'DoubleSeqHelper',
- 'DoubleHolder',
- 'Double',
- 'DomainManagerOperations',
- 'DomainManager',
- 'DomainCombiner',
- 'DocumentParser',
- 'DocumentListener',
- 'DocumentEvent.EventType',
- 'DocumentEvent.ElementChange',
- 'DocumentEvent',
- 'Document',
- 'DnDConstants',
- 'DirectoryManager',
- 'DirectColorModel',
- 'DirStateFactory.Result',
- 'DirStateFactory',
- 'DirObjectFactory',
- 'DirContext',
- 'DimensionUIResource',
- 'Dimension2D',
- 'Dimension',
- 'DigestOutputStream',
- 'DigestInputStream',
- 'DigestException',
- 'Dictionary',
- 'Dialog',
- 'DesktopPaneUI',
- 'DesktopManager',
- 'DesktopIconUI',
- 'DesignMode',
- 'Delegate',
- 'DeflaterOutputStream',
- 'Deflater',
- 'DefinitionKindHelper',
- 'DefinitionKind',
- 'DefaultTreeSelectionModel',
- 'DefaultTreeModel',
- 'DefaultTreeCellRenderer',
- 'DefaultTreeCellEditor',
- 'DefaultTextUI',
- 'DefaultTableModel',
- 'DefaultTableColumnModel',
- 'DefaultTableCellRenderer.UIResource',
- 'DefaultTableCellRenderer',
- 'DefaultStyledDocument.ElementSpec',
- 'DefaultStyledDocument.AttributeUndoableEdit',
- 'DefaultStyledDocument',
- 'DefaultSingleSelectionModel',
- 'DefaultMutableTreeNode',
- 'DefaultMetalTheme',
- 'DefaultMenuLayout',
- 'DefaultListSelectionModel',
- 'DefaultListModel',
- 'DefaultListCellRenderer.UIResource',
- 'DefaultListCellRenderer',
- 'DefaultHighlighter.DefaultHighlightPainter',
- 'DefaultHighlighter',
- 'DefaultFocusManager',
- 'DefaultEditorKit.PasteAction,',
- 'DefaultEditorKit.InsertTabAction',
- 'DefaultEditorKit.InsertContentAction',
- 'DefaultEditorKit.InsertBreakAction',
- 'DefaultEditorKit.DefaultKeyTypedAction',
- 'DefaultEditorKit.CutAction',
- 'DefaultEditorKit.CopyAction',
- 'DefaultEditorKit.BeepAction',
- 'DefaultEditorKit',
- 'DefaultDesktopManager',
- 'DefaultComboBoxModel',
- 'DefaultColorSelectionModel',
- 'DefaultCellEditor',
- 'DefaultCaret',
- 'DefaultButtonModel',
- 'DefaultBoundedRangeModel',
- 'DecimalFormatSymbols',
- 'DecimalFormat',
- 'DebugGraphics',
- 'DateFormatSymbols',
- 'DateFormat',
- 'Date',
- 'DatagramSocketImplFactory',
- 'DatagramSocketImpl',
- 'DatagramSocket',
- 'DatagramPacket',
- 'DatabaseMetaData',
- 'DataTruncation',
- 'DataOutputStream',
- 'DataOutputStream',
- 'DataOutput',
- 'DataLine.Info',
- 'DataLine',
- 'DataInputStream',
- 'DataInput',
- 'DataFormatException',
- 'DataFlavor',
- 'DataBufferUShort',
- 'DataBufferShort',
- 'DataBufferInt',
- 'DataBufferByte',
- 'DataBuffer',
- 'DTDConstants',
- 'DTD',
- 'DSAPublicKeySpec',
- 'DSAPublicKey',
- 'DSAPrivateKeySpec',
- 'DSAPrivateKey',
- 'DSAParams',
- 'DSAParameterSpec',
- 'DSAKeyPairGenerator',
- 'DSAKey',
- 'DGC',
- 'DATA_CONVERSION',
- 'Customizer',
- 'CustomValue',
- 'CustomMarshal',
- 'Cursor',
- 'CurrentOperations',
- 'CurrentHolder',
- 'CurrentHelper',
- 'Current',
- 'CubicCurve2D.Float',
- 'CubicCurve2D.Double',
- 'CubicCurve2D',
- 'CropImageFilter',
- 'ConvolveOp',
- 'ControllerEventListener',
- 'ControlFactory',
- 'Control.Type',
- 'Control',
- 'ContextualRenderedImageFactory',
- 'ContextNotEmptyException',
- 'ContextList',
- 'Context',
- 'ContentModel',
- 'ContentHandlerFactory',
- 'ContentHandler',
- 'ContainerListener',
- 'ContainerEvent',
- 'ContainerAdapter',
- 'Container',
- 'Constructor',
- 'Connection',
- 'ConnectIOException',
- 'ConnectException',
- 'ConnectException',
- 'ConfigurationException',
- 'ConcurrentModificationException',
- 'CompoundName',
- 'CompoundEdit',
- 'CompoundControl.Type',
- 'CompoundControl',
- 'CompoundBorder',
- 'CompositeView',
- 'CompositeName',
- 'CompositeContext',
- 'Composite',
- 'ComponentView',
- 'ComponentUI',
- 'ComponentSampleModel',
- 'ComponentOrientation',
- 'ComponentListener',
- 'ComponentInputMapUIResource',
- 'ComponentInputMap',
- 'ComponentEvent',
- 'ComponentColorModel',
- 'ComponentAdapter',
- 'Component',
- 'CompletionStatusHelper',
- 'CompletionStatus',
- 'Compiler',
- 'Comparator',
- 'Comparable',
- 'CommunicationException',
- 'ComboPopup',
- 'ComboBoxUI',
- 'ComboBoxModel',
- 'ComboBoxEditor',
- 'ColorUIResource',
- 'ColorSpace',
- 'ColorSelectionModel',
- 'ColorModel',
- 'ColorConvertOp',
- 'ColorChooserUI',
- 'ColorChooserComponentFactory',
- 'Color',
- 'Collections',
- 'Collection',
- 'Collator',
- 'CollationKey',
- 'CollationElementIterator',
- 'CodeSource',
- 'Cloneable',
- 'CloneNotSupportedException',
- 'Clob',
- 'ClipboardOwner',
- 'Clipboard',
- 'Clip',
- 'ClassNotFoundException',
- 'ClassLoader',
- 'ClassFormatError',
- 'ClassDesc',
- 'ClassCircularityError',
- 'ClassCastException',
- 'Class',
- 'ChoiceFormat',
- 'Choice',
- 'Checksum',
- 'CheckedOutputStream',
- 'CheckedInputStream',
- 'CheckboxMenuItem',
- 'CheckboxGroup',
- 'Checkbox',
- 'CharacterIterator',
- 'Character.UnicodeBlock',
- 'Character.Subset',
- 'Character',
- 'CharSeqHolder',
- 'CharSeqHelper',
- 'CharHolder',
- 'CharConversionException',
- 'CharArrayWriter',
- 'CharArrayReader',
- 'ChangedCharSetException',
- 'ChangeListener',
- 'ChangeEvent',
- 'CertificateParsingException',
- 'CertificateNotYetValidException',
- 'CertificateFactorySpi',
- 'CertificateFactory',
- 'CertificateExpiredException',
- 'CertificateException',
- 'CertificateEncodingException',
- 'Certificate.CertificateRep',
- 'Certificate',
- 'CellRendererPane',
- 'CellEditorListener',
- 'CellEditor',
- 'CaretListener',
- 'CaretEvent',
- 'Caret',
- 'CardLayout',
- 'Canvas',
- 'CannotUndoException',
- 'CannotRedoException',
- 'CannotProceedHolder',
- 'CannotProceedHelper',
- 'CannotProceedException',
- 'CannotProceed',
- 'CallableStatement',
- 'Calendar',
- 'CTX_RESTRICT_SCOPE',
- 'CSS.Attribute',
- 'CSS',
- 'CRLException',
- 'CRL',
- 'CRC32',
- 'COMM_FAILURE',
- 'CMMException',
- 'ByteLookupTable',
- 'ByteHolder',
- 'ByteArrayOutputStream',
- 'ByteArrayInputStream',
- 'Byte',
- 'ButtonUI',
- 'ButtonModel',
- 'ButtonGroup',
- 'Button',
- 'BufferedWriter',
- 'BufferedReader',
- 'BufferedOutputStream',
- 'BufferedInputStream',
- 'BufferedImageOp',
- 'BufferedImageFilter',
- 'BufferedImage',
- 'BreakIterator',
- 'BoxedValueHelper',
- 'BoxView',
- 'BoxLayout',
- 'Box.Filler',
- 'Box',
- 'Bounds',
- 'BoundedRangeModel',
- 'BorderUIResource.TitledBorderUIResource',
- 'BorderUIResource.MatteBorderUIResource',
- 'BorderUIResource.LineBorderUIResource',
- 'BorderUIResource.EtchedBorderUIResource',
- 'BorderUIResource.EmptyBorderUIResource',
- 'BorderUIResource.CompoundBorderUIResource',
- 'BorderUIResource.BevelBorderUIResource',
- 'BorderUIResource',
- 'BorderLayout',
- 'BorderFactory',
- 'Border',
- 'BooleanSeqHolder',
- 'BooleanSeqHelper',
- 'BooleanHolder',
- 'BooleanControl.Type',
- 'BooleanControl',
- 'Boolean',
- 'Book',
- 'BlockView',
- 'Blob',
- 'BitSet',
- 'BindingTypeHolder',
- 'BindingTypeHelper',
- 'BindingType',
- 'BindingListHolder',
- 'BindingListHelper',
- 'BindingIteratorOperations',
- 'BindingIteratorHolder',
- 'BindingIteratorHelper',
- 'BindingIterator',
- 'BindingHolder',
- 'BindingHelper',
- 'Binding',
- 'BindException',
- 'BinaryRefAddr',
- 'BigInteger',
- 'BigDecimal',
- 'BevelBorder',
- 'Beans',
- 'BeanInfo',
- 'BeanDescriptor',
- 'BeanContextSupport.BCSIterator',
- 'BeanContextSupport',
- 'BeanContextServicesSupport.BCSSServiceProvider',
- 'BeanContextServicesSupport',
- 'BeanContextServicesListener',
- 'BeanContextServices',
- 'BeanContextServiceRevokedListener',
- 'BeanContextServiceRevokedEvent',
- 'BeanContextServiceProviderBeanInfo',
- 'BeanContextServiceProvider',
- 'BeanContextServiceAvailableEvent',
- 'BeanContextProxy',
- 'BeanContextMembershipListener',
- 'BeanContextMembershipEvent',
- 'BeanContextEvent',
- 'BeanContextContainerProxy',
- 'BeanContextChildSupport',
- 'BeanContextChildComponentProxy',
- 'BeanContextChild',
- 'BeanContext',
- 'BatchUpdateException',
- 'BasicViewportUI',
- 'BasicTreeUI',
- 'BasicToolTipUI',
- 'BasicToolBarUI',
- 'BasicToolBarSeparatorUI',
- 'BasicToggleButtonUI',
- 'BasicTextUI.BasicHighlighter',
- 'BasicTextUI.BasicCaret',
- 'BasicTextUI',
- 'BasicTextPaneUI',
- 'BasicTextFieldUI',
- 'BasicTextAreaUI',
- 'BasicTableUI',
- 'BasicTableHeaderUI',
- 'BasicTabbedPaneUI',
- 'BasicStroke',
- 'BasicSplitPaneUI',
- 'BasicSplitPaneDivider',
- 'BasicSliderUI',
- 'BasicSeparatorUI',
- 'BasicScrollPaneUI',
- 'BasicScrollBarUI',
- 'BasicRootPaneUI',
- 'BasicRadioButtonUI',
- 'BasicRadioButtonMenuItemUI',
- 'BasicProgressBarUI',
- 'BasicPopupMenuUI',
- 'BasicPopupMenuSeparatorUI',
- 'BasicPermission',
- 'BasicPasswordFieldUI',
- 'BasicPanelUI',
- 'BasicOptionPaneUI.ButtonAreaLayout',
- 'BasicOptionPaneUI',
- 'BasicMenuUI',
- 'BasicMenuItemUI',
- 'BasicMenuBarUI',
- 'BasicLookAndFeel',
- 'BasicListUI',
- 'BasicLabelUI',
- 'BasicInternalFrameUI',
- 'BasicInternalFrameTitlePane',
- 'BasicIconFactory',
- 'BasicHTML',
- 'BasicGraphicsUtils',
- 'BasicFileChooserUI',
- 'BasicEditorPaneUI',
- 'BasicDirectoryModel',
- 'BasicDesktopPaneUI',
- 'BasicDesktopIconUI',
- 'BasicComboPopup',
- 'BasicComboBoxUI',
- 'BasicComboBoxRenderer.UIResource',
- 'BasicComboBoxRenderer',
- 'BasicComboBoxEditor.UIResource',
- 'BasicComboBoxEditor',
- 'BasicColorChooserUI',
- 'BasicCheckBoxUI',
- 'BasicCheckBoxMenuItemUI',
- 'BasicButtonUI',
- 'BasicButtonListener',
- 'BasicBorders.ToggleButtonBorder',
- 'BasicBorders.SplitPaneBorder',
- 'BasicBorders.RadioButtonBorder',
- 'BasicBorders.MenuBarBorder',
- 'BasicBorders.MarginBorder',
- 'BasicBorders.FieldBorder',
- 'BasicBorders.ButtonBorder',
- 'BasicBorders',
- 'BasicAttributes',
- 'BasicAttribute',
- 'BasicArrowButton',
- 'BandedSampleModel',
- 'BandCombineOp',
- 'BadLocationException',
- 'BadKind',
- 'BAD_TYPECODE',
- 'BAD_POLICY_VALUE',
- 'BAD_POLICY_TYPE',
- 'BAD_POLICY',
- 'BAD_PARAM',
- 'BAD_OPERATION',
- 'BAD_INV_ORDER',
- 'BAD_CONTEXT',
- 'Autoscroll',
- 'Authenticator',
- 'AuthenticationNotSupportedException',
- 'AuthenticationException',
- 'AudioSystem',
- 'AudioPermission',
- 'AudioInputStream',
- 'AudioFormat.Encoding',
- 'AudioFormat',
- 'AudioFileWriter',
- 'AudioFileReader',
- 'AudioFileFormat.Type',
- 'AudioFileFormat',
- 'AudioClip',
- 'Attributes.Name',
- 'Attributes',
- 'AttributedString',
- 'AttributedCharacterIterator.Attribute',
- 'AttributedCharacterIterator',
- 'AttributeSet.ParagraphAttribute',
- 'AttributeSet.FontAttribute',
- 'AttributeSet.ColorAttribute',
- 'AttributeSet.CharacterAttribute',
- 'AttributeSet',
- 'AttributeModificationException',
- 'AttributeList',
- 'AttributeInUseException',
- 'Attribute',
- 'AsyncBoxView',
- 'Arrays',
- 'ArrayStoreException',
- 'ArrayList',
- 'ArrayIndexOutOfBoundsException',
- 'Array',
- 'ArithmeticException',
- 'AreaAveragingScaleFilter',
- 'Area',
- 'Arc2D.Float',
- 'Arc2D.Double',
- 'Arc2D',
- 'ApplicationException',
- 'AppletStub',
- 'AppletInitializer',
- 'AppletContext',
- 'Applet',
- 'AnySeqHolder',
- 'AnySeqHelper',
- 'AnyHolder',
- 'Any',
- 'Annotation',
- 'AncestorListener',
- 'AncestorEvent',
- 'AlreadyBoundHolder',
- 'AlreadyBoundHelper',
- 'AlreadyBoundException',
- 'AlreadyBound',
- 'AlphaComposite',
- 'AllPermission',
- 'AlgorithmParametersSpi',
- 'AlgorithmParameters',
- 'AlgorithmParameterSpec',
- 'AlgorithmParameterGeneratorSpi',
- 'AlgorithmParameterGenerator',
- 'AffineTransformOp',
- 'AffineTransform',
- 'Adler32',
- 'AdjustmentListener',
- 'AdjustmentEvent',
- 'Adjustable',
- 'ActiveEvent',
- 'Activator',
- 'ActivationSystem',
- 'ActivationMonitor',
- 'ActivationInstantiator',
- 'ActivationID',
- 'ActivationGroupID',
- 'ActivationGroupDesc.CommandEnvironment',
- 'ActivationGroupDesc',
- 'ActivationGroup',
- 'ActivationException',
- 'ActivationDesc',
- 'ActivateFailedException',
- 'Activatable',
- 'ActionMapUIResource',
- 'ActionMap',
- 'ActionListener',
- 'ActionEvent',
- 'Action',
- 'AclNotFoundException',
- 'AclEntry',
- 'Acl',
- 'AccessibleValue',
- 'AccessibleText',
- 'AccessibleTableModelChange',
- 'AccessibleTable',
- 'AccessibleStateSet',
- 'AccessibleState',
- 'AccessibleSelection',
- 'AccessibleRole',
- 'AccessibleResourceBundle',
- 'AccessibleRelationSet',
- 'AccessibleRelation',
- 'AccessibleObject',
- 'AccessibleIcon',
- 'AccessibleHypertext',
- 'AccessibleHyperlink',
- 'AccessibleContext',
- 'AccessibleComponent',
- 'AccessibleBundle',
- 'AccessibleAction',
- 'Accessible',
- 'AccessException',
- 'AccessController',
- 'AccessControlException',
- 'AccessControlContext',
- 'AbstractWriter',
- 'AbstractUndoableEdit',
- 'AbstractTableModel',
- 'AbstractSet',
- 'AbstractSequentialList',
- 'AbstractMethodError',
- 'AbstractMap',
- 'AbstractListModel',
- 'AbstractList',
- 'AbstractLayoutCache.NodeDimensions',
- 'AbstractLayoutCache',
- 'AbstractDocument.ElementEdit',
- 'AbstractDocument.Content',
- 'AbstractDocument.AttributeContext',
- 'AbstractDocument',
- 'AbstractColorChooserPanel',
- 'AbstractCollection',
- 'AbstractCellEditor',
- 'AbstractButton',
- 'AbstractBorder',
- 'AbstractAction',
- 'AWTPermission',
- 'AWTException',
- 'AWTEventMulticaster',
- 'AWTEventListener',
- 'AWTEvent',
- 'AWTError',
- 'ARG_OUT',
- 'ARG_INOUT',
- 'ARG_IN'
- ),
- 4 => array(
- 'void',
- 'short',
- 'long',
- 'int',
- 'double',
- 'char',
- 'byte',
- 'boolean',
- 'float'
- ),
- 5 => array(
- 'toList',
- 'subMap',
- 'sort',
- 'size',
- 'reverseEach',
- 'reverse',
- 'pop',
- 'min',
- 'max',
- 'join',
- 'intersect',
- 'inject',
- 'grep',
- 'get',
- 'flatten',
- 'findIndexOf',
- 'findAll',
- 'find',
- 'eachWithIndex',
- 'eachPropertyName',
- 'eachProperty',
- 'each',
- 'count',
- 'collect',
- 'asSynchronized',
- 'asImmutable',
- 'allProperties'
- ),
- 6 => array(
- 'tokenize',
- 'toURL',
- 'toLong',
- 'toList',
- 'toCharacter',
- 'padRight',
- 'padLeft',
- 'eachMatch',
- 'contains',
- 'center'
- ),
- 7 => array(
- 'writeLine',
- 'write',
- 'withWriterAppend',
- 'withWriter',
- 'withStreams',
- 'withStream',
- 'withReader',
- 'withPrintWriter',
- 'withOutputStream',
- 'transformLine',
- 'transformChar',
- 'splitEachLine',
- 'getText',
- 'filterLine',
- 'encodeBase64',
- 'eachLines',
- 'eachLine',
- 'eachFileRecurse',
- 'eachFile',
- 'eachByte',
- 'append'
- ),
- 8 => array(
- 'dump',
- 'inspect',
- 'invokeMethod',
- 'print',
- 'println',
- 'step',
- 'times',
- 'upto',
- 'use',
- 'getText',
- 'start',
- 'startDaemon',
- 'getLastMatcher'
- ),
- 9 => array(
- 'Sql',
- 'call',
- 'eachRow',
- 'execute',
- 'executeUpdate',
- 'close'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '|', '='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => true,
- 4 => true,
- 5 => true,
- 6 => true,
- 7 => true,
- 8 => true,
- 9 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #aaaadd; font-weight: bold;',
- 4 => 'color: #993333;',
- 5 => 'color: #663399;',
- 6 => 'color: #CC0099;',
- 7 => 'color: #FFCC33;',
- 8 => 'color: #993399;',
- 9 => 'color: #993399; font-weight: bold;'
- ),
- 'COMMENTS' => array(
- 1=> 'color: #808080; font-style: italic;',
- 2=> 'color: #a1a100;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;'
- )
- ),
- 'URLS' => array(
- 1 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
- 2 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
- 3 => 'http://www.google.de/search?as_q={FNAME}&num=100&hl=en&as_occt=url&as_sitesearch=java.sun.com%2Fj2se%2F1.5.0%2Fdocs%2Fapi%2F',
- 4 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
- 5 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
- 6 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
- 7 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
- 8 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
- 9 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- 0 => '\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}'
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * groovy.php
+ * ----------
+ * Author: Ivan F. Villanueva B. (geshi_groovy at artificialidea.com)
+ * Copyright: (c) 2006 Ivan F. Villanueva B.(http://www.artificialidea.com)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/04/29
+ *
+ * Groovy language file for GeSHi.
+ *
+ * Keywords from http: http://docs.codehaus.org/download/attachments/2715/groovy-reference-card.pdf?version=1
+ *
+ * CHANGES
+ * -------
+ * 2006/04/29 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/04/29)
+ * -------------------------
+ * Testing
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Groovy',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => 'import', 3 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'''", '"""', "'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '||',
+ 'while',
+ 'switch',
+ 'in',
+ 'if',
+ 'foreach',
+ 'for',
+ 'else',
+ 'do',
+ 'case',
+ '=>',
+ '--',
+ '++',
+ '<<',
+ '<<<',
+ '&&'
+ ),
+ 2 => array(
+ 'volatile',
+ 'try',
+ 'true',
+ 'transient',
+ 'throws',
+ 'throw',
+ 'this',
+ 'synchronized',
+ 'super',
+ 'strictfp',
+ 'static',
+ 'return',
+ 'public',
+ 'protected',
+ 'property',
+ 'private',
+ 'package',
+ 'null',
+ 'new',
+ 'native',
+ 'interface',
+ 'instanceof',
+ 'implements',
+ 'goto',
+ 'finally',
+ 'final',
+ 'false',
+ 'extends',
+ 'enum',
+ 'default',
+ 'def',
+ 'continue',
+ 'const',
+ 'class',
+ 'catch',
+ 'break',
+ 'assert',
+ 'abstract',
+ 'as'
+ ),
+ 3 => array(
+ '_Remote_Stub',
+ '_PolicyStub',
+ '_NamingContextStub',
+ '_NamingContextImplBase',
+ '_IDLTypeStub',
+ '_BindingIteratorStub',
+ '_BindingIteratorImplBase',
+ 'ZoneView',
+ 'ZipOutputStream',
+ 'ZipInputStream',
+ 'ZipFile',
+ 'ZipException',
+ 'ZipEntry',
+ 'X509Extension',
+ 'X509EncodedKeySpec',
+ 'X509Certificate',
+ 'X509CRLEntry',
+ 'X509CRL',
+ 'WrongTransaction',
+ 'Writer',
+ 'WriteAbortedException',
+ 'WritableRenderedImage',
+ 'WritableRaster',
+ 'WrappedPlainView',
+ 'WindowListener',
+ 'WindowEvent',
+ 'WindowConstants',
+ 'WindowAdapter',
+ 'Window',
+ 'WeakReference',
+ 'WeakHashMap',
+ 'WStringValueHelper',
+ 'WCharSeqHolder',
+ 'WCharSeqHelper',
+ 'Void',
+ 'VoiceStatus',
+ 'VisibilityHelper',
+ 'Visibility',
+ 'VirtualMachineError',
+ 'ViewportUI',
+ 'ViewportLayout',
+ 'ViewFactory',
+ 'View',
+ 'VetoableChangeSupport',
+ 'VetoableChangeListener',
+ 'VersionSpecHelper',
+ 'VerifyError',
+ 'Vector',
+ 'VariableHeightLayoutCache',
+ 'ValueMemberHelper',
+ 'ValueMember',
+ 'ValueHandler',
+ 'ValueFactory',
+ 'ValueBaseHolder',
+ 'ValueBaseHelper',
+ 'ValueBase',
+ 'VM_TRUNCATABLE',
+ 'VM_NONE',
+ 'VM_CUSTOM',
+ 'VM_ABSTRACT',
+ 'VMID',
+ 'Utilities',
+ 'UtilDelegate',
+ 'Util',
+ 'UserException',
+ 'UnsupportedOperationException',
+ 'UnsupportedLookAndFeelException',
+ 'UnsupportedFlavorException',
+ 'UnsupportedEncodingException',
+ 'UnsupportedClassVersionError',
+ 'UnsupportedAudioFileException',
+ 'UnsolicitedNotificationListener',
+ 'UnsolicitedNotificationEvent',
+ 'UnsolicitedNotification',
+ 'UnsatisfiedLinkError',
+ 'UnresolvedPermission',
+ 'Unreferenced',
+ 'UnrecoverableKeyException',
+ 'UnmarshalException',
+ 'UnknownUserException',
+ 'UnknownServiceException',
+ 'UnknownObjectException',
+ 'UnknownHostException',
+ 'UnknownHostException',
+ 'UnknownGroupException',
+ 'UnknownException',
+ 'UnknownError',
+ 'UnionMemberHelper',
+ 'UnionMember',
+ 'UnicastRemoteObject',
+ 'UnexpectedException',
+ 'UndoableEditSupport',
+ 'UndoableEditListener',
+ 'UndoableEditEvent',
+ 'UndoableEdit',
+ 'UndoManager',
+ 'UndeclaredThrowableException',
+ 'UTFDataFormatException',
+ 'UShortSeqHolder',
+ 'UShortSeqHelper',
+ 'URLStreamHandlerFactory',
+ 'URLStreamHandler',
+ 'URLEncoder',
+ 'URLDecoder',
+ 'URLConnection',
+ 'URLClassLoader',
+ 'URL',
+ 'UNSUPPORTED_POLICY_VALUE',
+ 'UNSUPPORTED_POLICY',
+ 'UNKNOWN',
+ 'ULongSeqHolder',
+ 'ULongSeqHelper',
+ 'ULongLongSeqHolder',
+ 'ULongLongSeqHelper',
+ 'UIResource',
+ 'UIManager.LookAndFeelInfo',
+ 'UIManager',
+ 'UIDefaults.ProxyLazyValue',
+ 'UIDefaults.LazyValue',
+ 'UIDefaults.LazyInputMap',
+ 'UIDefaults.ActiveValue',
+ 'UIDefaults',
+ 'UID',
+ 'Types',
+ 'TypeMismatch',
+ 'TypeCodeHolder',
+ 'TypeCode',
+ 'TreeWillExpandListener',
+ 'TreeUI',
+ 'TreeSet',
+ 'TreeSelectionModel',
+ 'TreeSelectionListener',
+ 'TreeSelectionEvent',
+ 'TreePath',
+ 'TreeNode',
+ 'TreeModelListener',
+ 'TreeModelEvent',
+ 'TreeModel',
+ 'TreeMap',
+ 'TreeExpansionListener',
+ 'TreeExpansionEvent',
+ 'TreeCellRenderer',
+ 'TreeCellEditor',
+ 'Transparency',
+ 'Transmitter',
+ 'TransformAttribute',
+ 'Transferable',
+ 'TransactionRolledbackException',
+ 'TransactionRequiredException',
+ 'Track',
+ 'Toolkit',
+ 'ToolTipUI',
+ 'ToolTipManager',
+ 'ToolBarUI',
+ 'TooManyListenersException',
+ 'TitledBorder',
+ 'Timestamp',
+ 'TimerTask',
+ 'Timer',
+ 'Timer',
+ 'TimeZone',
+ 'TimeLimitExceededException',
+ 'Time',
+ 'TileObserver',
+ 'Tie',
+ 'Throwable',
+ 'ThreadLocal',
+ 'ThreadGroup',
+ 'ThreadDeath',
+ 'Thread',
+ 'TexturePaint',
+ 'TextUI',
+ 'TextMeasurer',
+ 'TextListener',
+ 'TextLayout.CaretPolicy',
+ 'TextLayout',
+ 'TextHitInfo',
+ 'TextField',
+ 'TextEvent',
+ 'TextComponent',
+ 'TextAttribute',
+ 'TextArea',
+ 'TextAction',
+ 'TargetDataLine',
+ 'TagElement',
+ 'TableView',
+ 'TableUI',
+ 'TableModelListener',
+ 'TableModelEvent',
+ 'TableModel',
+ 'TableHeaderUI',
+ 'TableColumnModelListener',
+ 'TableColumnModelEvent',
+ 'TableColumnModel',
+ 'TableColumn',
+ 'TableCellRenderer',
+ 'TableCellEditor',
+ 'TabbedPaneUI',
+ 'TabableView',
+ 'TabStop',
+ 'TabSet',
+ 'TabExpander',
+ 'TRANSIENT',
+ 'TRANSACTION_ROLLEDBACK',
+ 'TRANSACTION_REQUIRED',
+ 'TCKind',
+ 'SystemFlavorMap',
+ 'SystemException',
+ 'SystemColor',
+ 'System',
+ 'SysexMessage',
+ 'Synthesizer',
+ 'SyncFailedException',
+ 'SwingUtilities',
+ 'SwingPropertyChangeSupport',
+ 'SwingConstants',
+ 'StyledEditorKit.UnderlineAction',
+ 'StyledEditorKit.StyledTextAction',
+ 'StyledEditorKit.ItalicAction',
+ 'StyledEditorKit.ForegroundAction',
+ 'StyledEditorKit.FontSizeAction',
+ 'StyledEditorKit.FontFamilyAction',
+ 'StyledEditorKit.BoldAction',
+ 'StyledEditorKit.AlignmentAction',
+ 'StyledEditorKit',
+ 'StyledDocument',
+ 'StyleSheet.ListPainter',
+ 'StyleSheet.BoxPainter',
+ 'StyleSheet',
+ 'StyleContext',
+ 'StyleConstants.ParagraphConstants',
+ 'StyleConstants.FontConstants',
+ 'StyleConstants.ColorConstants',
+ 'StyleConstants.CharacterConstants',
+ 'StyleConstants',
+ 'Style',
+ 'StubNotFoundException',
+ 'StubDelegate',
+ 'Stub',
+ 'StructMemberHelper',
+ 'StructMember',
+ 'Struct',
+ 'Stroke',
+ 'StringWriter',
+ 'StringValueHelper',
+ 'StringTokenizer',
+ 'StringSelection',
+ 'StringRefAddr',
+ 'StringReader',
+ 'StringIndexOutOfBoundsException',
+ 'StringHolder',
+ 'StringContent',
+ 'StringCharacterIterator',
+ 'StringBufferInputStream',
+ 'StringBuffer',
+ 'String',
+ 'StrictMath',
+ 'StreamableValue',
+ 'Streamable',
+ 'StreamTokenizer',
+ 'StreamCorruptedException',
+ 'Statement',
+ 'StateFactory',
+ 'StateEditable',
+ 'StateEdit',
+ 'StackOverflowError',
+ 'Stack',
+ 'SplitPaneUI',
+ 'SourceDataLine',
+ 'SoundbankResource',
+ 'SoundbankReader',
+ 'Soundbank',
+ 'SortedSet',
+ 'SortedMap',
+ 'SoftReference',
+ 'SoftBevelBorder',
+ 'SocketSecurityException',
+ 'SocketPermission',
+ 'SocketOptions',
+ 'SocketImplFactory',
+ 'SocketImpl',
+ 'SocketException',
+ 'Socket',
+ 'SliderUI',
+ 'SkeletonNotFoundException',
+ 'SkeletonMismatchException',
+ 'Skeleton',
+ 'SizeSequence',
+ 'SizeRequirements',
+ 'SizeLimitExceededException',
+ 'SingleSelectionModel',
+ 'SinglePixelPackedSampleModel',
+ 'SimpleTimeZone',
+ 'SimpleDateFormat',
+ 'SimpleBeanInfo',
+ 'SimpleAttributeSet',
+ 'Signer',
+ 'SignedObject',
+ 'SignatureSpi',
+ 'SignatureException',
+ 'Signature',
+ 'ShortSeqHolder',
+ 'ShortSeqHelper',
+ 'ShortMessage',
+ 'ShortLookupTable',
+ 'ShortHolder',
+ 'Short',
+ 'ShapeGraphicAttribute',
+ 'Shape',
+ 'SetOverrideTypeHelper',
+ 'SetOverrideType',
+ 'Set',
+ 'ServiceUnavailableException',
+ 'ServiceInformationHolder',
+ 'ServiceInformationHelper',
+ 'ServiceInformation',
+ 'ServiceDetailHelper',
+ 'ServiceDetail',
+ 'ServerSocket',
+ 'ServerRuntimeException',
+ 'ServerRequest',
+ 'ServerRef',
+ 'ServerNotActiveException',
+ 'ServerException',
+ 'ServerError',
+ 'ServerCloneException',
+ 'ServantObject',
+ 'SerializablePermission',
+ 'Serializable',
+ 'Sequencer.SyncMode',
+ 'Sequencer',
+ 'SequenceInputStream',
+ 'Sequence',
+ 'SeparatorUI',
+ 'Segment',
+ 'SecurityPermission',
+ 'SecurityManager',
+ 'SecurityException',
+ 'Security',
+ 'SecureRandomSpi',
+ 'SecureRandom',
+ 'SecureClassLoader',
+ 'SearchResult',
+ 'SearchControls',
+ 'Scrollbar',
+ 'Scrollable',
+ 'ScrollPaneUI',
+ 'ScrollPaneLayout.UIResource',
+ 'ScrollPaneLayout',
+ 'ScrollPaneConstants',
+ 'ScrollPane',
+ 'ScrollBarUI',
+ 'SchemaViolationException',
+ 'SampleModel',
+ 'SQLWarning',
+ 'SQLPermission',
+ 'SQLOutput',
+ 'SQLInput',
+ 'SQLException',
+ 'SQLData',
+ 'RuntimePermission',
+ 'RuntimeException',
+ 'Runtime',
+ 'Runnable',
+ 'RunTimeOperations',
+ 'RunTime',
+ 'RuleBasedCollator',
+ 'RowMapper',
+ 'RoundRectangle2D.Float',
+ 'RoundRectangle2D.Double',
+ 'RoundRectangle2D',
+ 'RootPaneUI',
+ 'RootPaneContainer',
+ 'Robot',
+ 'ReverbType',
+ 'ResultSetMetaData',
+ 'ResultSet',
+ 'ResponseHandler',
+ 'ResourceBundle',
+ 'Resolver',
+ 'ResolveResult',
+ 'RescaleOp',
+ 'Request',
+ 'RepositoryIdHelper',
+ 'Repository',
+ 'ReplicateScaleFilter',
+ 'RepaintManager',
+ 'RenderingHints.Key',
+ 'RenderingHints',
+ 'Renderer',
+ 'RenderedImageFactory',
+ 'RenderedImage',
+ 'RenderableImageProducer',
+ 'RenderableImageOp',
+ 'RenderableImage',
+ 'RenderContext',
+ 'RemoteStub',
+ 'RemoteServer',
+ 'RemoteRef',
+ 'RemoteObject',
+ 'RemoteException',
+ 'RemoteCall',
+ 'Remote',
+ 'RemarshalException',
+ 'RegistryHandler',
+ 'Registry',
+ 'ReflectPermission',
+ 'ReferralException',
+ 'Referenceable',
+ 'ReferenceQueue',
+ 'Reference',
+ 'RefAddr',
+ 'Ref',
+ 'RectangularShape',
+ 'Rectangle2D.Float',
+ 'Rectangle2D.Double',
+ 'Rectangle2D',
+ 'Rectangle',
+ 'Receiver',
+ 'Reader',
+ 'RasterOp',
+ 'RasterFormatException',
+ 'Raster',
+ 'RandomAccessFile',
+ 'Random',
+ 'RTFEditorKit',
+ 'RSAPublicKeySpec',
+ 'RSAPublicKey',
+ 'RSAPrivateKeySpec',
+ 'RSAPrivateKey',
+ 'RSAPrivateCrtKeySpec',
+ 'RSAPrivateCrtKey',
+ 'RSAKeyGenParameterSpec',
+ 'RSAKey',
+ 'RMISocketFactory',
+ 'RMIServerSocketFactory',
+ 'RMISecurityManager',
+ 'RMISecurityException',
+ 'RMIFailureHandler',
+ 'RMIClientSocketFactory',
+ 'RMIClassLoader',
+ 'RGBImageFilter',
+ 'QuadCurve2D.Float',
+ 'QuadCurve2D.Double',
+ 'QuadCurve2D',
+ 'PushbackReader',
+ 'PushbackInputStream',
+ 'PublicKey',
+ 'Proxy',
+ 'ProviderException',
+ 'Provider',
+ 'ProtocolException',
+ 'ProtectionDomain',
+ 'PropertyVetoException',
+ 'PropertyResourceBundle',
+ 'PropertyPermission',
+ 'PropertyEditorSupport',
+ 'PropertyEditorManager',
+ 'PropertyEditor',
+ 'PropertyDescriptor',
+ 'PropertyChangeSupport',
+ 'PropertyChangeListener',
+ 'PropertyChangeEvent',
+ 'Properties',
+ 'ProgressMonitorInputStream',
+ 'ProgressMonitor',
+ 'ProgressBarUI',
+ 'ProfileDataException',
+ 'Process',
+ 'PrivilegedExceptionAction',
+ 'PrivilegedActionException',
+ 'PrivilegedAction',
+ 'PrivateKey',
+ 'PrinterJob',
+ 'PrinterIOException',
+ 'PrinterGraphics',
+ 'PrinterException',
+ 'PrinterAbortException',
+ 'Printable',
+ 'PrintWriter',
+ 'PrintStream',
+ 'PrintJob',
+ 'PrintGraphics',
+ 'PrincipalHolder',
+ 'Principal',
+ 'Principal',
+ 'PreparedStatement',
+ 'Position.Bias',
+ 'Position',
+ 'PortableRemoteObjectDelegate',
+ 'PortableRemoteObject',
+ 'Port.Info',
+ 'Port',
+ 'PopupMenuUI',
+ 'PopupMenuListener',
+ 'PopupMenuEvent',
+ 'PopupMenu',
+ 'Polygon',
+ 'PolicyTypeHelper',
+ 'PolicyOperations',
+ 'PolicyListHolder',
+ 'PolicyListHelper',
+ 'PolicyHolder',
+ 'PolicyHelper',
+ 'PolicyError',
+ 'Policy',
+ 'Policy',
+ 'Point2D.Float',
+ 'Point2D.Double',
+ 'Point2D',
+ 'Point',
+ 'PlainView',
+ 'PlainDocument',
+ 'PixelInterleavedSampleModel',
+ 'PixelGrabber',
+ 'PipedWriter',
+ 'PipedReader',
+ 'PipedOutputStream',
+ 'PipedInputStream',
+ 'PhantomReference',
+ 'Permissions',
+ 'PermissionCollection',
+ 'Permission',
+ 'Permission',
+ 'PathIterator',
+ 'Patch',
+ 'PasswordView',
+ 'PasswordAuthentication',
+ 'PartialResultException',
+ 'ParserDelegator',
+ 'Parser',
+ 'ParsePosition',
+ 'ParseException',
+ 'ParameterDescriptor',
+ 'ParameterBlock',
+ 'ParagraphView',
+ 'ParagraphView',
+ 'Paper',
+ 'PanelUI',
+ 'Panel',
+ 'PaintEvent',
+ 'PaintContext',
+ 'Paint',
+ 'Pageable',
+ 'PageFormat',
+ 'PageAttributes.PrintQualityType',
+ 'PageAttributes.OriginType',
+ 'PageAttributes.OrientationRequestedType',
+ 'PageAttributes.MediaType',
+ 'PageAttributes.ColorType',
+ 'PageAttributes',
+ 'PackedColorModel',
+ 'Package',
+ 'PUBLIC_MEMBER',
+ 'PRIVATE_MEMBER',
+ 'PKCS8EncodedKeySpec',
+ 'PERSIST_STORE',
+ 'Owner',
+ 'OverlayLayout',
+ 'OutputStreamWriter',
+ 'OutputStream',
+ 'OutOfMemoryError',
+ 'OptionalDataException',
+ 'OptionPaneUI',
+ 'Option',
+ 'OperationNotSupportedException',
+ 'Operation',
+ 'OpenType',
+ 'OctetSeqHolder',
+ 'OctetSeqHelper',
+ 'Observer',
+ 'Observable',
+ 'ObjectView',
+ 'ObjectStreamField',
+ 'ObjectStreamException',
+ 'ObjectStreamConstants',
+ 'ObjectStreamClass',
+ 'ObjectOutputStream.PutField',
+ 'ObjectOutputStream',
+ 'ObjectOutput',
+ 'ObjectInputValidation',
+ 'ObjectInputStream.GetField',
+ 'ObjectInputStream',
+ 'ObjectInput',
+ 'ObjectImpl',
+ 'ObjectImpl',
+ 'ObjectHolder',
+ 'ObjectHelper',
+ 'ObjectFactoryBuilder',
+ 'ObjectFactory',
+ 'ObjectChangeListener',
+ 'Object',
+ 'ObjID',
+ 'ORB',
+ 'OMGVMCID',
+ 'OBJ_ADAPTER',
+ 'OBJECT_NOT_EXIST',
+ 'NumberFormatException',
+ 'NumberFormat',
+ 'Number',
+ 'NullPointerException',
+ 'NotSerializableException',
+ 'NotOwnerException',
+ 'NotFoundReasonHolder',
+ 'NotFoundReasonHelper',
+ 'NotFoundReason',
+ 'NotFoundHolder',
+ 'NotFoundHelper',
+ 'NotFound',
+ 'NotEmptyHolder',
+ 'NotEmptyHelper',
+ 'NotEmpty',
+ 'NotContextException',
+ 'NotBoundException',
+ 'NotActiveException',
+ 'NoninvertibleTransformException',
+ 'NoSuchProviderException',
+ 'NoSuchObjectException',
+ 'NoSuchMethodException',
+ 'NoSuchMethodError',
+ 'NoSuchFieldException',
+ 'NoSuchFieldError',
+ 'NoSuchElementException',
+ 'NoSuchAttributeException',
+ 'NoSuchAlgorithmException',
+ 'NoRouteToHostException',
+ 'NoPermissionException',
+ 'NoInitialContextException',
+ 'NoClassDefFoundError',
+ 'NetPermission',
+ 'NegativeArraySizeException',
+ 'NamingSecurityException',
+ 'NamingManager',
+ 'NamingListener',
+ 'NamingExceptionEvent',
+ 'NamingException',
+ 'NamingEvent',
+ 'NamingEnumeration',
+ 'NamingContextOperations',
+ 'NamingContextHolder',
+ 'NamingContextHelper',
+ 'NamingContext',
+ 'Naming',
+ 'NamespaceChangeListener',
+ 'NamedValue',
+ 'NameValuePairHelper',
+ 'NameValuePair',
+ 'NameParser',
+ 'NameNotFoundException',
+ 'NameHolder',
+ 'NameHelper',
+ 'NameComponentHolder',
+ 'NameComponentHelper',
+ 'NameComponent',
+ 'NameClassPair',
+ 'NameAlreadyBoundException',
+ 'Name',
+ 'NVList',
+ 'NO_RESPONSE',
+ 'NO_RESOURCES',
+ 'NO_PERMISSION',
+ 'NO_MEMORY',
+ 'NO_IMPLEMENT',
+ 'MutableTreeNode',
+ 'MutableComboBoxModel',
+ 'MutableAttributeSet',
+ 'MultipleMaster',
+ 'MulticastSocket',
+ 'MultiViewportUI',
+ 'MultiTreeUI',
+ 'MultiToolTipUI',
+ 'MultiToolBarUI',
+ 'MultiTextUI',
+ 'MultiTableUI',
+ 'MultiTableHeaderUI',
+ 'MultiTabbedPaneUI',
+ 'MultiSplitPaneUI',
+ 'MultiSliderUI',
+ 'MultiSeparatorUI',
+ 'MultiScrollPaneUI',
+ 'MultiScrollBarUI',
+ 'MultiProgressBarUI',
+ 'MultiPopupMenuUI',
+ 'MultiPixelPackedSampleModel',
+ 'MultiPanelUI',
+ 'MultiOptionPaneUI',
+ 'MultiMenuItemUI',
+ 'MultiMenuBarUI',
+ 'MultiLookAndFeel',
+ 'MultiListUI',
+ 'MultiLabelUI',
+ 'MultiInternalFrameUI',
+ 'MultiFileChooserUI',
+ 'MultiDesktopPaneUI',
+ 'MultiDesktopIconUI',
+ 'MultiComboBoxUI',
+ 'MultiColorChooserUI',
+ 'MultiButtonUI',
+ 'MouseMotionListener',
+ 'MouseMotionAdapter',
+ 'MouseListener',
+ 'MouseInputListener',
+ 'MouseInputAdapter',
+ 'MouseEvent',
+ 'MouseDragGestureRecognizer',
+ 'MouseAdapter',
+ 'Modifier',
+ 'ModificationItem',
+ 'MixerProvider',
+ 'Mixer.Info',
+ 'Mixer',
+ 'MissingResourceException',
+ 'MinimalHTMLWriter',
+ 'MimeTypeParseException',
+ 'MidiUnavailableException',
+ 'MidiSystem',
+ 'MidiMessage',
+ 'MidiFileWriter',
+ 'MidiFileReader',
+ 'MidiFileFormat',
+ 'MidiEvent',
+ 'MidiDeviceProvider',
+ 'MidiDevice.Info',
+ 'MidiDevice',
+ 'MidiChannel',
+ 'MethodDescriptor',
+ 'Method',
+ 'MetalTreeUI',
+ 'MetalToolTipUI',
+ 'MetalToolBarUI',
+ 'MetalToggleButtonUI',
+ 'MetalTheme',
+ 'MetalTextFieldUI',
+ 'MetalTabbedPaneUI',
+ 'MetalSplitPaneUI',
+ 'MetalSliderUI',
+ 'MetalSeparatorUI',
+ 'MetalScrollPaneUI',
+ 'MetalScrollButton',
+ 'MetalScrollBarUI',
+ 'MetalRadioButtonUI',
+ 'MetalProgressBarUI',
+ 'MetalPopupMenuSeparatorUI',
+ 'MetalLookAndFeel',
+ 'MetalLabelUI',
+ 'MetalInternalFrameUI',
+ 'MetalInternalFrameTitlePane',
+ 'MetalIconFactory.TreeLeafIcon',
+ 'MetalIconFactory.TreeFolderIcon',
+ 'MetalIconFactory.TreeControlIcon',
+ 'MetalIconFactory.PaletteCloseIcon',
+ 'MetalIconFactory.FolderIcon16',
+ 'MetalIconFactory.FileIcon16',
+ 'MetalIconFactory',
+ 'MetalFileChooserUI',
+ 'MetalDesktopIconUI',
+ 'MetalComboBoxUI',
+ 'MetalComboBoxIcon',
+ 'MetalComboBoxEditor.UIResource',
+ 'MetalComboBoxEditor',
+ 'MetalComboBoxButton',
+ 'MetalCheckBoxUI',
+ 'MetalCheckBoxIcon',
+ 'MetalButtonUI',
+ 'MetalBorders.ToolBarBorder',
+ 'MetalBorders.ToggleButtonBorder',
+ 'MetalBorders.TextFieldBorder',
+ 'MetalBorders.TableHeaderBorder',
+ 'MetalBorders.ScrollPaneBorder',
+ 'MetalBorders.RolloverButtonBorder',
+ 'MetalBorders.PopupMenuBorder',
+ 'MetalBorders.PaletteBorder',
+ 'MetalBorders.OptionDialogBorder',
+ 'MetalBorders.MenuItemBorder',
+ 'MetalBorders.MenuBarBorder',
+ 'MetalBorders.InternalFrameBorder',
+ 'MetalBorders.Flush3DBorder',
+ 'MetalBorders.ButtonBorder',
+ 'MetalBorders',
+ 'MetaMessage',
+ 'MetaEventListener',
+ 'MessageFormat',
+ 'MessageDigestSpi',
+ 'MessageDigest',
+ 'MenuShortcut',
+ 'MenuSelectionManager',
+ 'MenuListener',
+ 'MenuKeyListener',
+ 'MenuKeyEvent',
+ 'MenuItemUI',
+ 'MenuItem',
+ 'MenuEvent',
+ 'MenuElement',
+ 'MenuDragMouseListener',
+ 'MenuDragMouseEvent',
+ 'MenuContainer',
+ 'MenuComponent',
+ 'MenuBarUI',
+ 'MenuBar',
+ 'Menu',
+ 'MemoryImageSource',
+ 'Member',
+ 'MediaTracker',
+ 'MatteBorder',
+ 'Math',
+ 'MarshalledObject',
+ 'MarshalException',
+ 'Map.Entry',
+ 'Map',
+ 'Manifest',
+ 'MalformedURLException',
+ 'MalformedLinkException',
+ 'MARSHAL',
+ 'LookupTable',
+ 'LookupOp',
+ 'LookAndFeel',
+ 'LongSeqHolder',
+ 'LongSeqHelper',
+ 'LongLongSeqHolder',
+ 'LongLongSeqHelper',
+ 'LongHolder',
+ 'Long',
+ 'LogStream',
+ 'LocateRegistry',
+ 'Locale',
+ 'LoaderHandler',
+ 'ListView',
+ 'ListUI',
+ 'ListSelectionModel',
+ 'ListSelectionListener',
+ 'ListSelectionEvent',
+ 'ListResourceBundle',
+ 'ListModel',
+ 'ListIterator',
+ 'ListDataListener',
+ 'ListDataEvent',
+ 'ListCellRenderer',
+ 'List',
+ 'List',
+ 'LinkedList',
+ 'LinkageError',
+ 'LinkRef',
+ 'LinkLoopException',
+ 'LinkException',
+ 'LineUnavailableException',
+ 'LineNumberReader',
+ 'LineNumberInputStream',
+ 'LineMetrics',
+ 'LineListener',
+ 'LineEvent.Type',
+ 'LineEvent',
+ 'LineBreakMeasurer',
+ 'LineBorder',
+ 'Line2D.Float',
+ 'Line2D.Double',
+ 'Line2D',
+ 'Line.Info',
+ 'Line',
+ 'LimitExceededException',
+ 'Lease',
+ 'LdapReferralException',
+ 'LdapContext',
+ 'LayoutQueue',
+ 'LayoutManager2',
+ 'LayoutManager',
+ 'LayeredHighlighter.LayerPainter',
+ 'LayeredHighlighter',
+ 'LastOwnerException',
+ 'LabelView',
+ 'LabelUI',
+ 'Label',
+ 'Keymap',
+ 'KeyStroke',
+ 'KeyStoreSpi',
+ 'KeyStoreException',
+ 'KeyStore',
+ 'KeySpec',
+ 'KeyPairGeneratorSpi',
+ 'KeyPairGenerator',
+ 'KeyPair',
+ 'KeyManagementException',
+ 'KeyListener',
+ 'KeyFactorySpi',
+ 'KeyFactory',
+ 'KeyException',
+ 'KeyEvent',
+ 'KeyAdapter',
+ 'Key',
+ 'Kernel',
+ 'JobAttributes.SidesType',
+ 'JobAttributes.MultipleDocumentHandlingType',
+ 'JobAttributes.DialogType',
+ 'JobAttributes.DestinationType',
+ 'JobAttributes.DefaultSelectionType',
+ 'JobAttributes',
+ 'JarURLConnection',
+ 'JarOutputStream',
+ 'JarInputStream',
+ 'JarFile',
+ 'JarException',
+ 'JarEntry',
+ 'JWindow',
+ 'JViewport',
+ 'JTree.EmptySelectionModel',
+ 'JTree.DynamicUtilTreeNode',
+ 'JTree',
+ 'JToolTip',
+ 'JToolBar.Separator',
+ 'JToolBar',
+ 'JToggleButton.ToggleButtonModel',
+ 'JToggleButton',
+ 'JTextPane',
+ 'JTextField',
+ 'JTextComponent.KeyBinding',
+ 'JTextComponent',
+ 'JTextArea',
+ 'JTableHeader',
+ 'JTable',
+ 'JTabbedPane',
+ 'JSplitPane',
+ 'JSlider',
+ 'JSeparator',
+ 'JScrollPane',
+ 'JScrollBar',
+ 'JRootPane',
+ 'JRadioButtonMenuItem',
+ 'JRadioButton',
+ 'JProgressBar',
+ 'JPopupMenu.Separator',
+ 'JPopupMenu',
+ 'JPasswordField',
+ 'JPanel',
+ 'JOptionPane',
+ 'JMenuItem',
+ 'JMenuBar',
+ 'JMenu',
+ 'JList',
+ 'JLayeredPane',
+ 'JLabel',
+ 'JInternalFrame.JDesktopIcon',
+ 'JInternalFrame',
+ 'JFrame',
+ 'JFileChooser',
+ 'JEditorPane',
+ 'JDialog',
+ 'JDesktopPane',
+ 'JComponent',
+ 'JComboBox.KeySelectionManager',
+ 'JComboBox',
+ 'JColorChooser',
+ 'JCheckBoxMenuItem',
+ 'JCheckBox',
+ 'JButton',
+ 'JApplet',
+ 'Iterator',
+ 'ItemSelectable',
+ 'ItemListener',
+ 'ItemEvent',
+ 'IstringHelper',
+ 'InvokeHandler',
+ 'InvocationTargetException',
+ 'InvocationHandler',
+ 'InvocationEvent',
+ 'InvalidValue',
+ 'InvalidTransactionException',
+ 'InvalidSeq',
+ 'InvalidSearchFilterException',
+ 'InvalidSearchControlsException',
+ 'InvalidParameterSpecException',
+ 'InvalidParameterException',
+ 'InvalidObjectException',
+ 'InvalidNameHolder',
+ 'InvalidNameHelper',
+ 'InvalidNameException',
+ 'InvalidName',
+ 'InvalidName',
+ 'InvalidMidiDataException',
+ 'InvalidKeySpecException',
+ 'InvalidKeyException',
+ 'InvalidDnDOperationException',
+ 'InvalidClassException',
+ 'InvalidAttributesException',
+ 'InvalidAttributeValueException',
+ 'InvalidAttributeIdentifierException',
+ 'InvalidAlgorithmParameterException',
+ 'Invalid',
+ 'Introspector',
+ 'IntrospectionException',
+ 'InterruptedNamingException',
+ 'InterruptedIOException',
+ 'InterruptedException',
+ 'InternalFrameUI',
+ 'InternalFrameListener',
+ 'InternalFrameEvent',
+ 'InternalFrameAdapter',
+ 'InternalError',
+ 'Integer',
+ 'IntHolder',
+ 'InsufficientResourcesException',
+ 'Instrument',
+ 'InstantiationException',
+ 'InstantiationError',
+ 'InsetsUIResource',
+ 'Insets',
+ 'InputVerifier',
+ 'InputSubset',
+ 'InputStreamReader',
+ 'InputStream',
+ 'InputStream',
+ 'InputStream',
+ 'InputMethodRequests',
+ 'InputMethodListener',
+ 'InputMethodHighlight',
+ 'InputMethodEvent',
+ 'InputMethodDescriptor',
+ 'InputMethodContext',
+ 'InputMethod',
+ 'InputMapUIResource',
+ 'InputMap',
+ 'InputEvent',
+ 'InputContext',
+ 'InlineView',
+ 'Initializer',
+ 'InitialLdapContext',
+ 'InitialDirContext',
+ 'InitialContextFactoryBuilder',
+ 'InitialContextFactory',
+ 'InitialContext',
+ 'InheritableThreadLocal',
+ 'InflaterInputStream',
+ 'Inflater',
+ 'InetAddress',
+ 'IndirectionException',
+ 'IndexedPropertyDescriptor',
+ 'IndexOutOfBoundsException',
+ 'IndexColorModel',
+ 'InconsistentTypeCode',
+ 'IncompatibleClassChangeError',
+ 'ImagingOpException',
+ 'ImageProducer',
+ 'ImageObserver',
+ 'ImageIcon',
+ 'ImageGraphicAttribute',
+ 'ImageFilter',
+ 'ImageConsumer',
+ 'Image',
+ 'IllegalThreadStateException',
+ 'IllegalStateException',
+ 'IllegalPathStateException',
+ 'IllegalMonitorStateException',
+ 'IllegalComponentStateException',
+ 'IllegalArgumentException',
+ 'IllegalAccessException',
+ 'IllegalAccessError',
+ 'IdentityScope',
+ 'Identity',
+ 'IdentifierHelper',
+ 'IconView',
+ 'IconUIResource',
+ 'Icon',
+ 'IRObjectOperations',
+ 'IRObject',
+ 'IOException',
+ 'INV_POLICY',
+ 'INV_OBJREF',
+ 'INV_IDENT',
+ 'INV_FLAG',
+ 'INVALID_TRANSACTION',
+ 'INTF_REPOS',
+ 'INTERNAL',
+ 'INITIALIZE',
+ 'IMP_LIMIT',
+ 'IDLTypeOperations',
+ 'IDLTypeHelper',
+ 'IDLType',
+ 'IDLEntity',
+ 'ICC_ProfileRGB',
+ 'ICC_ProfileGray',
+ 'ICC_Profile',
+ 'ICC_ColorSpace',
+ 'HyperlinkListener',
+ 'HyperlinkEvent.EventType',
+ 'HyperlinkEvent',
+ 'HttpURLConnection',
+ 'Highlighter.HighlightPainter',
+ 'Highlighter.Highlight',
+ 'Highlighter',
+ 'HierarchyListener',
+ 'HierarchyEvent',
+ 'HierarchyBoundsListener',
+ 'HierarchyBoundsAdapter',
+ 'Hashtable',
+ 'HashSet',
+ 'HashMap',
+ 'HasControls',
+ 'HTMLWriter',
+ 'HTMLFrameHyperlinkEvent',
+ 'HTMLEditorKit.ParserCallback',
+ 'HTMLEditorKit.Parser',
+ 'HTMLEditorKit.LinkController',
+ 'HTMLEditorKit.InsertHTMLTextAction',
+ 'HTMLEditorKit.HTMLTextAction',
+ 'HTMLEditorKit.HTMLFactory',
+ 'HTMLEditorKit',
+ 'HTMLDocument.Iterator',
+ 'HTMLDocument',
+ 'HTML.UnknownTag',
+ 'HTML.Tag',
+ 'HTML.Attribute',
+ 'HTML',
+ 'GuardedObject',
+ 'Guard',
+ 'Group',
+ 'GridLayout',
+ 'GridBagLayout',
+ 'GridBagConstraints',
+ 'GregorianCalendar',
+ 'GrayFilter',
+ 'GraphicsEnvironment',
+ 'GraphicsDevice',
+ 'GraphicsConfiguration',
+ 'GraphicsConfigTemplate',
+ 'Graphics2D',
+ 'Graphics',
+ 'GraphicAttribute',
+ 'GradientPaint',
+ 'GlyphView.GlyphPainter',
+ 'GlyphView',
+ 'GlyphVector',
+ 'GlyphMetrics',
+ 'GlyphJustificationInfo',
+ 'GeneralSecurityException',
+ 'GeneralPath',
+ 'GapContent',
+ 'GZIPOutputStream',
+ 'GZIPInputStream',
+ 'Frame',
+ 'FormatConversionProvider',
+ 'Format',
+ 'FormView',
+ 'FontUIResource',
+ 'FontRenderContext',
+ 'FontMetrics',
+ 'FontFormatException',
+ 'Font',
+ 'FocusManager',
+ 'FocusListener',
+ 'FocusEvent',
+ 'FocusAdapter',
+ 'FlowView.FlowStrategy',
+ 'FlowView',
+ 'FlowLayout',
+ 'FloatSeqHolder',
+ 'FloatSeqHelper',
+ 'FloatHolder',
+ 'FloatControl.Type',
+ 'FloatControl',
+ 'Float',
+ 'FlavorMap',
+ 'FlatteningPathIterator',
+ 'FixedHolder',
+ 'FixedHeightLayoutCache',
+ 'FilteredImageSource',
+ 'FilterWriter',
+ 'FilterReader',
+ 'FilterOutputStream',
+ 'FilterInputStream',
+ 'FilenameFilter',
+ 'FileWriter',
+ 'FileView',
+ 'FileSystemView',
+ 'FileReader',
+ 'FilePermission',
+ 'FileOutputStream',
+ 'FileNotFoundException',
+ 'FileNameMap',
+ 'FileInputStream',
+ 'FileFilter',
+ 'FileFilter',
+ 'FileDialog',
+ 'FileDescriptor',
+ 'FileChooserUI',
+ 'File',
+ 'FieldView',
+ 'FieldPosition',
+ 'FieldNameHelper',
+ 'Field',
+ 'FeatureDescriptor',
+ 'FREE_MEM',
+ 'Externalizable',
+ 'ExtendedResponse',
+ 'ExtendedRequest',
+ 'ExportException',
+ 'ExpandVetoException',
+ 'ExceptionList',
+ 'ExceptionInInitializerError',
+ 'Exception',
+ 'EventSetDescriptor',
+ 'EventQueue',
+ 'EventObject',
+ 'EventListenerList',
+ 'EventListener',
+ 'EventDirContext',
+ 'EventContext',
+ 'Event',
+ 'EtchedBorder',
+ 'Error',
+ 'Environment',
+ 'Enumeration',
+ 'EnumControl.Type',
+ 'EnumControl',
+ 'Entity',
+ 'EncodedKeySpec',
+ 'EmptyStackException',
+ 'EmptyBorder',
+ 'Ellipse2D.Float',
+ 'Ellipse2D.Double',
+ 'Ellipse2D',
+ 'ElementIterator',
+ 'Element',
+ 'EditorKit',
+ 'EOFException',
+ 'DynamicImplementation',
+ 'DynValue',
+ 'DynUnion',
+ 'DynStruct',
+ 'DynSequence',
+ 'DynFixed',
+ 'DynEnum',
+ 'DynArray',
+ 'DynAny',
+ 'DropTargetListener',
+ 'DropTargetEvent',
+ 'DropTargetDropEvent',
+ 'DropTargetDragEvent',
+ 'DropTargetContext',
+ 'DropTarget.DropTargetAutoScroller',
+ 'DropTarget',
+ 'DriverPropertyInfo',
+ 'DriverManager',
+ 'Driver',
+ 'DragSourceListener',
+ 'DragSourceEvent',
+ 'DragSourceDropEvent',
+ 'DragSourceDragEvent',
+ 'DragSourceContext',
+ 'DragSource',
+ 'DragGestureRecognizer',
+ 'DragGestureListener',
+ 'DragGestureEvent',
+ 'DoubleSeqHolder',
+ 'DoubleSeqHelper',
+ 'DoubleHolder',
+ 'Double',
+ 'DomainManagerOperations',
+ 'DomainManager',
+ 'DomainCombiner',
+ 'DocumentParser',
+ 'DocumentListener',
+ 'DocumentEvent.EventType',
+ 'DocumentEvent.ElementChange',
+ 'DocumentEvent',
+ 'Document',
+ 'DnDConstants',
+ 'DirectoryManager',
+ 'DirectColorModel',
+ 'DirStateFactory.Result',
+ 'DirStateFactory',
+ 'DirObjectFactory',
+ 'DirContext',
+ 'DimensionUIResource',
+ 'Dimension2D',
+ 'Dimension',
+ 'DigestOutputStream',
+ 'DigestInputStream',
+ 'DigestException',
+ 'Dictionary',
+ 'Dialog',
+ 'DesktopPaneUI',
+ 'DesktopManager',
+ 'DesktopIconUI',
+ 'DesignMode',
+ 'Delegate',
+ 'DeflaterOutputStream',
+ 'Deflater',
+ 'DefinitionKindHelper',
+ 'DefinitionKind',
+ 'DefaultTreeSelectionModel',
+ 'DefaultTreeModel',
+ 'DefaultTreeCellRenderer',
+ 'DefaultTreeCellEditor',
+ 'DefaultTextUI',
+ 'DefaultTableModel',
+ 'DefaultTableColumnModel',
+ 'DefaultTableCellRenderer.UIResource',
+ 'DefaultTableCellRenderer',
+ 'DefaultStyledDocument.ElementSpec',
+ 'DefaultStyledDocument.AttributeUndoableEdit',
+ 'DefaultStyledDocument',
+ 'DefaultSingleSelectionModel',
+ 'DefaultMutableTreeNode',
+ 'DefaultMetalTheme',
+ 'DefaultMenuLayout',
+ 'DefaultListSelectionModel',
+ 'DefaultListModel',
+ 'DefaultListCellRenderer.UIResource',
+ 'DefaultListCellRenderer',
+ 'DefaultHighlighter.DefaultHighlightPainter',
+ 'DefaultHighlighter',
+ 'DefaultFocusManager',
+ 'DefaultEditorKit.PasteAction,',
+ 'DefaultEditorKit.InsertTabAction',
+ 'DefaultEditorKit.InsertContentAction',
+ 'DefaultEditorKit.InsertBreakAction',
+ 'DefaultEditorKit.DefaultKeyTypedAction',
+ 'DefaultEditorKit.CutAction',
+ 'DefaultEditorKit.CopyAction',
+ 'DefaultEditorKit.BeepAction',
+ 'DefaultEditorKit',
+ 'DefaultDesktopManager',
+ 'DefaultComboBoxModel',
+ 'DefaultColorSelectionModel',
+ 'DefaultCellEditor',
+ 'DefaultCaret',
+ 'DefaultButtonModel',
+ 'DefaultBoundedRangeModel',
+ 'DecimalFormatSymbols',
+ 'DecimalFormat',
+ 'DebugGraphics',
+ 'DateFormatSymbols',
+ 'DateFormat',
+ 'Date',
+ 'DatagramSocketImplFactory',
+ 'DatagramSocketImpl',
+ 'DatagramSocket',
+ 'DatagramPacket',
+ 'DatabaseMetaData',
+ 'DataTruncation',
+ 'DataOutputStream',
+ 'DataOutputStream',
+ 'DataOutput',
+ 'DataLine.Info',
+ 'DataLine',
+ 'DataInputStream',
+ 'DataInput',
+ 'DataFormatException',
+ 'DataFlavor',
+ 'DataBufferUShort',
+ 'DataBufferShort',
+ 'DataBufferInt',
+ 'DataBufferByte',
+ 'DataBuffer',
+ 'DTDConstants',
+ 'DTD',
+ 'DSAPublicKeySpec',
+ 'DSAPublicKey',
+ 'DSAPrivateKeySpec',
+ 'DSAPrivateKey',
+ 'DSAParams',
+ 'DSAParameterSpec',
+ 'DSAKeyPairGenerator',
+ 'DSAKey',
+ 'DGC',
+ 'DATA_CONVERSION',
+ 'Customizer',
+ 'CustomValue',
+ 'CustomMarshal',
+ 'Cursor',
+ 'CurrentOperations',
+ 'CurrentHolder',
+ 'CurrentHelper',
+ 'Current',
+ 'CubicCurve2D.Float',
+ 'CubicCurve2D.Double',
+ 'CubicCurve2D',
+ 'CropImageFilter',
+ 'ConvolveOp',
+ 'ControllerEventListener',
+ 'ControlFactory',
+ 'Control.Type',
+ 'Control',
+ 'ContextualRenderedImageFactory',
+ 'ContextNotEmptyException',
+ 'ContextList',
+ 'Context',
+ 'ContentModel',
+ 'ContentHandlerFactory',
+ 'ContentHandler',
+ 'ContainerListener',
+ 'ContainerEvent',
+ 'ContainerAdapter',
+ 'Container',
+ 'Constructor',
+ 'Connection',
+ 'ConnectIOException',
+ 'ConnectException',
+ 'ConnectException',
+ 'ConfigurationException',
+ 'ConcurrentModificationException',
+ 'CompoundName',
+ 'CompoundEdit',
+ 'CompoundControl.Type',
+ 'CompoundControl',
+ 'CompoundBorder',
+ 'CompositeView',
+ 'CompositeName',
+ 'CompositeContext',
+ 'Composite',
+ 'ComponentView',
+ 'ComponentUI',
+ 'ComponentSampleModel',
+ 'ComponentOrientation',
+ 'ComponentListener',
+ 'ComponentInputMapUIResource',
+ 'ComponentInputMap',
+ 'ComponentEvent',
+ 'ComponentColorModel',
+ 'ComponentAdapter',
+ 'Component',
+ 'CompletionStatusHelper',
+ 'CompletionStatus',
+ 'Compiler',
+ 'Comparator',
+ 'Comparable',
+ 'CommunicationException',
+ 'ComboPopup',
+ 'ComboBoxUI',
+ 'ComboBoxModel',
+ 'ComboBoxEditor',
+ 'ColorUIResource',
+ 'ColorSpace',
+ 'ColorSelectionModel',
+ 'ColorModel',
+ 'ColorConvertOp',
+ 'ColorChooserUI',
+ 'ColorChooserComponentFactory',
+ 'Color',
+ 'Collections',
+ 'Collection',
+ 'Collator',
+ 'CollationKey',
+ 'CollationElementIterator',
+ 'CodeSource',
+ 'Cloneable',
+ 'CloneNotSupportedException',
+ 'Clob',
+ 'ClipboardOwner',
+ 'Clipboard',
+ 'Clip',
+ 'ClassNotFoundException',
+ 'ClassLoader',
+ 'ClassFormatError',
+ 'ClassDesc',
+ 'ClassCircularityError',
+ 'ClassCastException',
+ 'Class',
+ 'ChoiceFormat',
+ 'Choice',
+ 'Checksum',
+ 'CheckedOutputStream',
+ 'CheckedInputStream',
+ 'CheckboxMenuItem',
+ 'CheckboxGroup',
+ 'Checkbox',
+ 'CharacterIterator',
+ 'Character.UnicodeBlock',
+ 'Character.Subset',
+ 'Character',
+ 'CharSeqHolder',
+ 'CharSeqHelper',
+ 'CharHolder',
+ 'CharConversionException',
+ 'CharArrayWriter',
+ 'CharArrayReader',
+ 'ChangedCharSetException',
+ 'ChangeListener',
+ 'ChangeEvent',
+ 'CertificateParsingException',
+ 'CertificateNotYetValidException',
+ 'CertificateFactorySpi',
+ 'CertificateFactory',
+ 'CertificateExpiredException',
+ 'CertificateException',
+ 'CertificateEncodingException',
+ 'Certificate.CertificateRep',
+ 'Certificate',
+ 'CellRendererPane',
+ 'CellEditorListener',
+ 'CellEditor',
+ 'CaretListener',
+ 'CaretEvent',
+ 'Caret',
+ 'CardLayout',
+ 'Canvas',
+ 'CannotUndoException',
+ 'CannotRedoException',
+ 'CannotProceedHolder',
+ 'CannotProceedHelper',
+ 'CannotProceedException',
+ 'CannotProceed',
+ 'CallableStatement',
+ 'Calendar',
+ 'CTX_RESTRICT_SCOPE',
+ 'CSS.Attribute',
+ 'CSS',
+ 'CRLException',
+ 'CRL',
+ 'CRC32',
+ 'COMM_FAILURE',
+ 'CMMException',
+ 'ByteLookupTable',
+ 'ByteHolder',
+ 'ByteArrayOutputStream',
+ 'ByteArrayInputStream',
+ 'Byte',
+ 'ButtonUI',
+ 'ButtonModel',
+ 'ButtonGroup',
+ 'Button',
+ 'BufferedWriter',
+ 'BufferedReader',
+ 'BufferedOutputStream',
+ 'BufferedInputStream',
+ 'BufferedImageOp',
+ 'BufferedImageFilter',
+ 'BufferedImage',
+ 'BreakIterator',
+ 'BoxedValueHelper',
+ 'BoxView',
+ 'BoxLayout',
+ 'Box.Filler',
+ 'Box',
+ 'Bounds',
+ 'BoundedRangeModel',
+ 'BorderUIResource.TitledBorderUIResource',
+ 'BorderUIResource.MatteBorderUIResource',
+ 'BorderUIResource.LineBorderUIResource',
+ 'BorderUIResource.EtchedBorderUIResource',
+ 'BorderUIResource.EmptyBorderUIResource',
+ 'BorderUIResource.CompoundBorderUIResource',
+ 'BorderUIResource.BevelBorderUIResource',
+ 'BorderUIResource',
+ 'BorderLayout',
+ 'BorderFactory',
+ 'Border',
+ 'BooleanSeqHolder',
+ 'BooleanSeqHelper',
+ 'BooleanHolder',
+ 'BooleanControl.Type',
+ 'BooleanControl',
+ 'Boolean',
+ 'Book',
+ 'BlockView',
+ 'Blob',
+ 'BitSet',
+ 'BindingTypeHolder',
+ 'BindingTypeHelper',
+ 'BindingType',
+ 'BindingListHolder',
+ 'BindingListHelper',
+ 'BindingIteratorOperations',
+ 'BindingIteratorHolder',
+ 'BindingIteratorHelper',
+ 'BindingIterator',
+ 'BindingHolder',
+ 'BindingHelper',
+ 'Binding',
+ 'BindException',
+ 'BinaryRefAddr',
+ 'BigInteger',
+ 'BigDecimal',
+ 'BevelBorder',
+ 'Beans',
+ 'BeanInfo',
+ 'BeanDescriptor',
+ 'BeanContextSupport.BCSIterator',
+ 'BeanContextSupport',
+ 'BeanContextServicesSupport.BCSSServiceProvider',
+ 'BeanContextServicesSupport',
+ 'BeanContextServicesListener',
+ 'BeanContextServices',
+ 'BeanContextServiceRevokedListener',
+ 'BeanContextServiceRevokedEvent',
+ 'BeanContextServiceProviderBeanInfo',
+ 'BeanContextServiceProvider',
+ 'BeanContextServiceAvailableEvent',
+ 'BeanContextProxy',
+ 'BeanContextMembershipListener',
+ 'BeanContextMembershipEvent',
+ 'BeanContextEvent',
+ 'BeanContextContainerProxy',
+ 'BeanContextChildSupport',
+ 'BeanContextChildComponentProxy',
+ 'BeanContextChild',
+ 'BeanContext',
+ 'BatchUpdateException',
+ 'BasicViewportUI',
+ 'BasicTreeUI',
+ 'BasicToolTipUI',
+ 'BasicToolBarUI',
+ 'BasicToolBarSeparatorUI',
+ 'BasicToggleButtonUI',
+ 'BasicTextUI.BasicHighlighter',
+ 'BasicTextUI.BasicCaret',
+ 'BasicTextUI',
+ 'BasicTextPaneUI',
+ 'BasicTextFieldUI',
+ 'BasicTextAreaUI',
+ 'BasicTableUI',
+ 'BasicTableHeaderUI',
+ 'BasicTabbedPaneUI',
+ 'BasicStroke',
+ 'BasicSplitPaneUI',
+ 'BasicSplitPaneDivider',
+ 'BasicSliderUI',
+ 'BasicSeparatorUI',
+ 'BasicScrollPaneUI',
+ 'BasicScrollBarUI',
+ 'BasicRootPaneUI',
+ 'BasicRadioButtonUI',
+ 'BasicRadioButtonMenuItemUI',
+ 'BasicProgressBarUI',
+ 'BasicPopupMenuUI',
+ 'BasicPopupMenuSeparatorUI',
+ 'BasicPermission',
+ 'BasicPasswordFieldUI',
+ 'BasicPanelUI',
+ 'BasicOptionPaneUI.ButtonAreaLayout',
+ 'BasicOptionPaneUI',
+ 'BasicMenuUI',
+ 'BasicMenuItemUI',
+ 'BasicMenuBarUI',
+ 'BasicLookAndFeel',
+ 'BasicListUI',
+ 'BasicLabelUI',
+ 'BasicInternalFrameUI',
+ 'BasicInternalFrameTitlePane',
+ 'BasicIconFactory',
+ 'BasicHTML',
+ 'BasicGraphicsUtils',
+ 'BasicFileChooserUI',
+ 'BasicEditorPaneUI',
+ 'BasicDirectoryModel',
+ 'BasicDesktopPaneUI',
+ 'BasicDesktopIconUI',
+ 'BasicComboPopup',
+ 'BasicComboBoxUI',
+ 'BasicComboBoxRenderer.UIResource',
+ 'BasicComboBoxRenderer',
+ 'BasicComboBoxEditor.UIResource',
+ 'BasicComboBoxEditor',
+ 'BasicColorChooserUI',
+ 'BasicCheckBoxUI',
+ 'BasicCheckBoxMenuItemUI',
+ 'BasicButtonUI',
+ 'BasicButtonListener',
+ 'BasicBorders.ToggleButtonBorder',
+ 'BasicBorders.SplitPaneBorder',
+ 'BasicBorders.RadioButtonBorder',
+ 'BasicBorders.MenuBarBorder',
+ 'BasicBorders.MarginBorder',
+ 'BasicBorders.FieldBorder',
+ 'BasicBorders.ButtonBorder',
+ 'BasicBorders',
+ 'BasicAttributes',
+ 'BasicAttribute',
+ 'BasicArrowButton',
+ 'BandedSampleModel',
+ 'BandCombineOp',
+ 'BadLocationException',
+ 'BadKind',
+ 'BAD_TYPECODE',
+ 'BAD_POLICY_VALUE',
+ 'BAD_POLICY_TYPE',
+ 'BAD_POLICY',
+ 'BAD_PARAM',
+ 'BAD_OPERATION',
+ 'BAD_INV_ORDER',
+ 'BAD_CONTEXT',
+ 'Autoscroll',
+ 'Authenticator',
+ 'AuthenticationNotSupportedException',
+ 'AuthenticationException',
+ 'AudioSystem',
+ 'AudioPermission',
+ 'AudioInputStream',
+ 'AudioFormat.Encoding',
+ 'AudioFormat',
+ 'AudioFileWriter',
+ 'AudioFileReader',
+ 'AudioFileFormat.Type',
+ 'AudioFileFormat',
+ 'AudioClip',
+ 'Attributes.Name',
+ 'Attributes',
+ 'AttributedString',
+ 'AttributedCharacterIterator.Attribute',
+ 'AttributedCharacterIterator',
+ 'AttributeSet.ParagraphAttribute',
+ 'AttributeSet.FontAttribute',
+ 'AttributeSet.ColorAttribute',
+ 'AttributeSet.CharacterAttribute',
+ 'AttributeSet',
+ 'AttributeModificationException',
+ 'AttributeList',
+ 'AttributeInUseException',
+ 'Attribute',
+ 'AsyncBoxView',
+ 'Arrays',
+ 'ArrayStoreException',
+ 'ArrayList',
+ 'ArrayIndexOutOfBoundsException',
+ 'Array',
+ 'ArithmeticException',
+ 'AreaAveragingScaleFilter',
+ 'Area',
+ 'Arc2D.Float',
+ 'Arc2D.Double',
+ 'Arc2D',
+ 'ApplicationException',
+ 'AppletStub',
+ 'AppletInitializer',
+ 'AppletContext',
+ 'Applet',
+ 'AnySeqHolder',
+ 'AnySeqHelper',
+ 'AnyHolder',
+ 'Any',
+ 'Annotation',
+ 'AncestorListener',
+ 'AncestorEvent',
+ 'AlreadyBoundHolder',
+ 'AlreadyBoundHelper',
+ 'AlreadyBoundException',
+ 'AlreadyBound',
+ 'AlphaComposite',
+ 'AllPermission',
+ 'AlgorithmParametersSpi',
+ 'AlgorithmParameters',
+ 'AlgorithmParameterSpec',
+ 'AlgorithmParameterGeneratorSpi',
+ 'AlgorithmParameterGenerator',
+ 'AffineTransformOp',
+ 'AffineTransform',
+ 'Adler32',
+ 'AdjustmentListener',
+ 'AdjustmentEvent',
+ 'Adjustable',
+ 'ActiveEvent',
+ 'Activator',
+ 'ActivationSystem',
+ 'ActivationMonitor',
+ 'ActivationInstantiator',
+ 'ActivationID',
+ 'ActivationGroupID',
+ 'ActivationGroupDesc.CommandEnvironment',
+ 'ActivationGroupDesc',
+ 'ActivationGroup',
+ 'ActivationException',
+ 'ActivationDesc',
+ 'ActivateFailedException',
+ 'Activatable',
+ 'ActionMapUIResource',
+ 'ActionMap',
+ 'ActionListener',
+ 'ActionEvent',
+ 'Action',
+ 'AclNotFoundException',
+ 'AclEntry',
+ 'Acl',
+ 'AccessibleValue',
+ 'AccessibleText',
+ 'AccessibleTableModelChange',
+ 'AccessibleTable',
+ 'AccessibleStateSet',
+ 'AccessibleState',
+ 'AccessibleSelection',
+ 'AccessibleRole',
+ 'AccessibleResourceBundle',
+ 'AccessibleRelationSet',
+ 'AccessibleRelation',
+ 'AccessibleObject',
+ 'AccessibleIcon',
+ 'AccessibleHypertext',
+ 'AccessibleHyperlink',
+ 'AccessibleContext',
+ 'AccessibleComponent',
+ 'AccessibleBundle',
+ 'AccessibleAction',
+ 'Accessible',
+ 'AccessException',
+ 'AccessController',
+ 'AccessControlException',
+ 'AccessControlContext',
+ 'AbstractWriter',
+ 'AbstractUndoableEdit',
+ 'AbstractTableModel',
+ 'AbstractSet',
+ 'AbstractSequentialList',
+ 'AbstractMethodError',
+ 'AbstractMap',
+ 'AbstractListModel',
+ 'AbstractList',
+ 'AbstractLayoutCache.NodeDimensions',
+ 'AbstractLayoutCache',
+ 'AbstractDocument.ElementEdit',
+ 'AbstractDocument.Content',
+ 'AbstractDocument.AttributeContext',
+ 'AbstractDocument',
+ 'AbstractColorChooserPanel',
+ 'AbstractCollection',
+ 'AbstractCellEditor',
+ 'AbstractButton',
+ 'AbstractBorder',
+ 'AbstractAction',
+ 'AWTPermission',
+ 'AWTException',
+ 'AWTEventMulticaster',
+ 'AWTEventListener',
+ 'AWTEvent',
+ 'AWTError',
+ 'ARG_OUT',
+ 'ARG_INOUT',
+ 'ARG_IN'
+ ),
+ 4 => array(
+ 'void',
+ 'short',
+ 'long',
+ 'int',
+ 'double',
+ 'char',
+ 'byte',
+ 'boolean',
+ 'float'
+ ),
+ 5 => array(
+ 'toList',
+ 'subMap',
+ 'sort',
+ 'size',
+ 'reverseEach',
+ 'reverse',
+ 'pop',
+ 'min',
+ 'max',
+ 'join',
+ 'intersect',
+ 'inject',
+ 'grep',
+ 'get',
+ 'flatten',
+ 'findIndexOf',
+ 'findAll',
+ 'find',
+ 'eachWithIndex',
+ 'eachPropertyName',
+ 'eachProperty',
+ 'each',
+ 'count',
+ 'collect',
+ 'asSynchronized',
+ 'asImmutable',
+ 'allProperties'
+ ),
+ 6 => array(
+ 'tokenize',
+ 'toURL',
+ 'toLong',
+ 'toList',
+ 'toCharacter',
+ 'padRight',
+ 'padLeft',
+ 'eachMatch',
+ 'contains',
+ 'center'
+ ),
+ 7 => array(
+ 'writeLine',
+ 'write',
+ 'withWriterAppend',
+ 'withWriter',
+ 'withStreams',
+ 'withStream',
+ 'withReader',
+ 'withPrintWriter',
+ 'withOutputStream',
+ 'transformLine',
+ 'transformChar',
+ 'splitEachLine',
+ 'getText',
+ 'filterLine',
+ 'encodeBase64',
+ 'eachLines',
+ 'eachLine',
+ 'eachFileRecurse',
+ 'eachFile',
+ 'eachByte',
+ 'append'
+ ),
+ 8 => array(
+ 'dump',
+ 'inspect',
+ 'invokeMethod',
+ 'print',
+ 'println',
+ 'step',
+ 'times',
+ 'upto',
+ 'use',
+ 'getText',
+ 'start',
+ 'startDaemon',
+ 'getLastMatcher'
+ ),
+ 9 => array(
+ 'Sql',
+ 'call',
+ 'eachRow',
+ 'execute',
+ 'executeUpdate',
+ 'close'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '|', '='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => true,
+ 4 => true,
+ 5 => true,
+ 6 => true,
+ 7 => true,
+ 8 => true,
+ 9 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #aaaadd; font-weight: bold;',
+ 4 => 'color: #993333;',
+ 5 => 'color: #663399;',
+ 6 => 'color: #CC0099;',
+ 7 => 'color: #FFCC33;',
+ 8 => 'color: #993399;',
+ 9 => 'color: #993399; font-weight: bold;'
+ ),
+ 'COMMENTS' => array(
+ 1=> 'color: #808080; font-style: italic;',
+ 2=> 'color: #a1a100;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;'
+ )
+ ),
+ 'URLS' => array(
+ 1 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+ 2 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+ 3 => 'http://www.google.de/search?as_q={FNAME}&num=100&hl=en&as_occt=url&as_sitesearch=java.sun.com%2Fj2se%2F1.5.0%2Fdocs%2Fapi%2F',
+ 4 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+ 5 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+ 6 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+ 7 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+ 8 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+ 9 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ 0 => '\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}'
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/haskell.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/haskell.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/haskell.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,195 +1,195 @@
-<?php
-/*************************************************************************************
- * haskell.php
- * ----------
- * Author: Jason Dagit (dagit at codersbase.com) based on ocaml.php by Flaie (fireflaie at gmail.com)
- * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2005/08/27
- *
- * Haskell language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/08/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Haskell',
- 'COMMENT_SINGLE' => array( 1 => '--'),
- 'COMMENT_MULTI' => array('{-' => '-}'),
- 'CASE_KEYWORDS' => 0,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => "\\",
- 'KEYWORDS' => array(
- /* main haskell keywords */
- 1 => array(
- 'as',
- 'case', 'of', 'class', 'data', 'default',
- 'deriving', 'do', 'forall', 'hiding', 'if', 'then',
- 'else', 'import', 'infix', 'infixl', 'infixr',
- 'instance', 'let', 'in', 'module', 'newtype',
- 'qualified', 'type', 'where'
- ),
- /* define names of main librarys, so we can link to it */
- 2 => array(
- 'Foreign', 'Numeric', 'Prelude'
- ),
- /* just link to Prelude functions, cause it's the default opened library when starting Haskell */
- 3 => array(
- 'not', 'otherwise', 'maybe',
- 'either', 'fst', 'snd', 'curry', 'uncurry',
- 'compare',
- 'max', 'min', 'succ', 'pred', 'toEnum', 'fromEnum',
- 'enumFrom', 'enumFromThen', 'enumFromTo',
- 'enumFromThenTo', 'minBound', 'maxBound',
- 'negate', 'abs', 'signum',
- 'fromInteger', 'toRational', 'quot', 'rem',
- 'div', 'mod', 'quotRem', 'divMod', 'toInteger',
- 'recip', 'fromRational', 'pi', 'exp',
- 'log', 'sqrt', 'logBase', 'sin', 'cos',
- 'tan', 'asin', 'acos', 'atan', 'sinh', 'cosh',
- 'tanh', 'asinh', 'acosh', 'atanh',
- 'properFraction', 'truncate', 'round', 'ceiling',
- 'floor', 'floatRadix', 'floatDigits', 'floatRange',
- 'decodeFloat', 'encodeFloat', 'exponent',
- 'significand', 'scaleFloat', 'isNaN', 'isInfinite',
- 'isDenomalized', 'isNegativeZero', 'isIEEE',
- 'atan2', 'subtract', 'even', 'odd', 'gcd',
- 'lcm', 'fromIntegral', 'realToFrac',
- 'return', 'fail', 'fmap',
- 'mapM', 'mapM_', 'sequence', 'sequence_',
- 'id', 'const','flip',
- 'until', 'asTypeOf', 'error', 'undefined',
- 'seq','map','filter', 'head',
- 'last', 'tail', 'init', 'null', 'length',
- 'reverse', 'foldl', 'foldl1', 'foldr',
- 'foldr1', 'and', 'or', 'any', 'all', 'sum',
- 'product', 'concat', 'concatMap', 'maximum',
- 'minimum', 'scanl', 'scanl1', 'scanr', 'scanr1',
- 'iterate', 'repeat', 'cycle', 'take', 'drop',
- 'splitAt', 'teakWhile', 'dropWhile', 'span',
- 'break', 'elem', 'notElem', 'lookup', 'zip',
- 'zip3', 'zipWith', 'zipWith3', 'unzip', 'unzip3',
- 'unzip', 'unzip3', 'lines', 'words', 'unlines',
- 'unwords', 'showPrec', 'show', 'showList',
- 'shows', 'showChar', 'showString', 'showParen',
- 'readsPrec', 'readList', 'reads', 'readParen',
- 'read', 'lex', 'putChar', 'putStr', 'putStrLn',
- 'print', 'getChar', 'getLine', 'getContents',
- 'interact', 'readFile', 'writeFile', 'appendFile',
- 'readIO', 'readLn', 'ioError', 'userError', 'catch'
- ),
- /* here Prelude Types */
- 4 => array (
- 'Bool', 'Maybe', 'Either', 'Ord', 'Ordering',
- 'Char', 'String', 'Eq', 'Enum', 'Bounded',
- 'Int', 'Integer', 'Float', 'Double', 'Rational',
- 'Num', 'Real', 'Integral', 'Fractional',
- 'Floating', 'RealFrac', 'RealFloat', 'Monad',
- 'Functor', 'Show', 'ShowS', 'Read', 'ReadS',
- 'IO'
- ),
- /* finally Prelude Exceptions */
- 5 => array (
- 'IOError', 'IOException'
- )
- ),
- /* highlighting symbols is really important in Haskell */
- 'SYMBOLS' => array(
- '|', '->', '<-', '@', '!', '::', '_', '~', '=',
- '&&', '||', '==', '/=', '<', '<=', '>',
- '>=','+', '-', '*','/', '**', '^', '^^',
- '>>=', '>>', '=<<', '$', '.', '$!',
- '++', '!!'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => true,
- 2 => true, /* functions name are case seinsitive */
- 3 => true, /* types name too */
- 4 => true, /* finally exceptions too */
- 5 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #06c; font-weight: bold;', /* nice blue */
- 2 => 'color: #06c; font-weight: bold;', /* blue as well */
- 3 => 'font-weight: bold;', /* make the preduled functions bold */
- 4 => 'color: #cccc00; font-weight: bold;', /* give types a different bg */
- 5 => 'color: maroon;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #5d478b; font-style: italic;',
- 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purpHle */
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- 0 => 'color: green;'
- ),
- 'STRINGS' => array(
- 0 => 'background-color: #3cb371;' /* nice green */
- ),
- 'NUMBERS' => array(
- 0 => 'color: red;' /* pink */
- ),
- 'METHODS' => array(
- 1 => 'color: #060;' /* dark green */
- ),
- 'REGEXPS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66; font-weight: bold;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- /* some of keywords are Prelude functions */
- 1 => '',
- /* link to the wanted library */
- 2 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/{FNAME}.html',
- /* link to Prelude functions */
- 3 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:{FNAME}',
- /* link to Prelude types */
- 4 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:{FNAME}',
- /* link to Prelude exceptions */
- 5 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:{FNAME}',
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * haskell.php
+ * ----------
+ * Author: Jason Dagit (dagit at codersbase.com) based on ocaml.php by Flaie (fireflaie at gmail.com)
+ * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/08/27
+ *
+ * Haskell language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/08/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Haskell',
+ 'COMMENT_SINGLE' => array( 1 => '--'),
+ 'COMMENT_MULTI' => array('{-' => '-}'),
+ 'CASE_KEYWORDS' => 0,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => "\\",
+ 'KEYWORDS' => array(
+ /* main haskell keywords */
+ 1 => array(
+ 'as',
+ 'case', 'of', 'class', 'data', 'default',
+ 'deriving', 'do', 'forall', 'hiding', 'if', 'then',
+ 'else', 'import', 'infix', 'infixl', 'infixr',
+ 'instance', 'let', 'in', 'module', 'newtype',
+ 'qualified', 'type', 'where'
+ ),
+ /* define names of main librarys, so we can link to it */
+ 2 => array(
+ 'Foreign', 'Numeric', 'Prelude'
+ ),
+ /* just link to Prelude functions, cause it's the default opened library when starting Haskell */
+ 3 => array(
+ 'not', 'otherwise', 'maybe',
+ 'either', 'fst', 'snd', 'curry', 'uncurry',
+ 'compare',
+ 'max', 'min', 'succ', 'pred', 'toEnum', 'fromEnum',
+ 'enumFrom', 'enumFromThen', 'enumFromTo',
+ 'enumFromThenTo', 'minBound', 'maxBound',
+ 'negate', 'abs', 'signum',
+ 'fromInteger', 'toRational', 'quot', 'rem',
+ 'div', 'mod', 'quotRem', 'divMod', 'toInteger',
+ 'recip', 'fromRational', 'pi', 'exp',
+ 'log', 'sqrt', 'logBase', 'sin', 'cos',
+ 'tan', 'asin', 'acos', 'atan', 'sinh', 'cosh',
+ 'tanh', 'asinh', 'acosh', 'atanh',
+ 'properFraction', 'truncate', 'round', 'ceiling',
+ 'floor', 'floatRadix', 'floatDigits', 'floatRange',
+ 'decodeFloat', 'encodeFloat', 'exponent',
+ 'significand', 'scaleFloat', 'isNaN', 'isInfinite',
+ 'isDenomalized', 'isNegativeZero', 'isIEEE',
+ 'atan2', 'subtract', 'even', 'odd', 'gcd',
+ 'lcm', 'fromIntegral', 'realToFrac',
+ 'return', 'fail', 'fmap',
+ 'mapM', 'mapM_', 'sequence', 'sequence_',
+ 'id', 'const','flip',
+ 'until', 'asTypeOf', 'error', 'undefined',
+ 'seq','map','filter', 'head',
+ 'last', 'tail', 'init', 'null', 'length',
+ 'reverse', 'foldl', 'foldl1', 'foldr',
+ 'foldr1', 'and', 'or', 'any', 'all', 'sum',
+ 'product', 'concat', 'concatMap', 'maximum',
+ 'minimum', 'scanl', 'scanl1', 'scanr', 'scanr1',
+ 'iterate', 'repeat', 'cycle', 'take', 'drop',
+ 'splitAt', 'teakWhile', 'dropWhile', 'span',
+ 'break', 'elem', 'notElem', 'lookup', 'zip',
+ 'zip3', 'zipWith', 'zipWith3', 'unzip', 'unzip3',
+ 'unzip', 'unzip3', 'lines', 'words', 'unlines',
+ 'unwords', 'showPrec', 'show', 'showList',
+ 'shows', 'showChar', 'showString', 'showParen',
+ 'readsPrec', 'readList', 'reads', 'readParen',
+ 'read', 'lex', 'putChar', 'putStr', 'putStrLn',
+ 'print', 'getChar', 'getLine', 'getContents',
+ 'interact', 'readFile', 'writeFile', 'appendFile',
+ 'readIO', 'readLn', 'ioError', 'userError', 'catch'
+ ),
+ /* here Prelude Types */
+ 4 => array (
+ 'Bool', 'Maybe', 'Either', 'Ord', 'Ordering',
+ 'Char', 'String', 'Eq', 'Enum', 'Bounded',
+ 'Int', 'Integer', 'Float', 'Double', 'Rational',
+ 'Num', 'Real', 'Integral', 'Fractional',
+ 'Floating', 'RealFrac', 'RealFloat', 'Monad',
+ 'Functor', 'Show', 'ShowS', 'Read', 'ReadS',
+ 'IO'
+ ),
+ /* finally Prelude Exceptions */
+ 5 => array (
+ 'IOError', 'IOException'
+ )
+ ),
+ /* highlighting symbols is really important in Haskell */
+ 'SYMBOLS' => array(
+ '|', '->', '<-', '@', '!', '::', '_', '~', '=',
+ '&&', '||', '==', '/=', '<', '<=', '>',
+ '>=','+', '-', '*','/', '**', '^', '^^',
+ '>>=', '>>', '=<<', '$', '.', '$!',
+ '++', '!!'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => true,
+ 2 => true, /* functions name are case seinsitive */
+ 3 => true, /* types name too */
+ 4 => true, /* finally exceptions too */
+ 5 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #06c; font-weight: bold;', /* nice blue */
+ 2 => 'color: #06c; font-weight: bold;', /* blue as well */
+ 3 => 'font-weight: bold;', /* make the preduled functions bold */
+ 4 => 'color: #cccc00; font-weight: bold;', /* give types a different bg */
+ 5 => 'color: maroon;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #5d478b; font-style: italic;',
+ 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purpHle */
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: green;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'background-color: #3cb371;' /* nice green */
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: red;' /* pink */
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #060;' /* dark green */
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66; font-weight: bold;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ /* some of keywords are Prelude functions */
+ 1 => '',
+ /* link to the wanted library */
+ 2 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/{FNAME}.html',
+ /* link to Prelude functions */
+ 3 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:{FNAME}',
+ /* link to Prelude types */
+ 4 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:{FNAME}',
+ /* link to Prelude exceptions */
+ 5 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:{FNAME}',
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/html4strict.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/html4strict.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/html4strict.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,255 +1,255 @@
-<?php
-/*************************************************************************************
- * html4strict.php
- * ---------------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/10
- *
- * HTML 4.01 strict language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/12/28 (1.0.4)
- * - Removed escape character for strings
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.2)
- * - Added support for URLs
- * 2004/08/05 (1.0.1)
- * - Added INS and DEL
- * - Removed the background colour from tags' styles
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Check that only HTML4 strict attributes are highlighted
- * * Eliminate empty tags that aren't allowed in HTML4 strict
- * * Split to several files - html4trans, xhtml1 etc
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'HTML',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array('<!--' => '-->'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- ),
- 2 => array(
- '<a>', '<abbr>', '<acronym>', '<address>', '<applet>',
- '<a', '<abbr', '<acronym', '<address', '<applet',
- '</a>', '</abbr>', '</acronym>', '</address>', '</applet>',
- '</a', '</abbr', '</acronym', '</address', '</applet',
-
- '<base>', '<basefont>', '<bdo>', '<big>', '<blockquote>', '<body>', '<br>', '<button>', '<b>',
- '<base', '<basefont', '<bdo', '<big', '<blockquote', '<body', '<br', '<button', '<b',
- '</base>', '</basefont>', '</bdo>', '</big>', '</blockquote>', '</body>', '</br>', '</button>', '</b>',
- '</base', '</basefont', '</bdo', '</big', '</blockquote', '</body', '</br', '</button', '</b',
-
- '<caption>', '<center>', '<cite>', '<code>', '<colgroup>', '<col>',
- '<caption', '<center', '<cite', '<code', '<colgroup', '<col',
- '</caption>', '</center>', '</cite>', '</code>', '</colgroup>', '</col>',
- '</caption', '</center', '</cite', '</code', '</colgroup', '</col',
-
- '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>',
- '<dd', '<del', '<dfn', '<dir', '<div', '<dl', '<dt',
- '</dd>', '</del>', '</dfn>', '</dir>', '</div>', '</dl>', '</dt>',
- '</dd', '</del', '</dfn', '</dir', '</div', '</dl', '</dt',
-
- '<em>',
- '<em',
- '</em>',
- '</em',
-
- '<fieldset>', '<font>', '<form>', '<frame>', '<frameset>',
- '<fieldset', '<font', '<form', '<frame', '<frameset',
- '</fieldset>', '</font>', '</form>', '</frame>', '</frameset>',
- '</fieldset', '</font', '</form', '</frame', '</frameset',
-
- '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<head>', '<hr>', '<html>',
- '<h1', '<h2', '<h3', '<h4', '<h5', '<h6', '<head', '<hr', '<html',
- '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '</head>', '</hr>', '</html>',
- '</h1', '</h2', '</h3', '</h4', '</h5', '</h6', '</head', '</hr', '</html',
-
- '<iframe>', '<ilayer>', '<img>', '<input>', '<ins>', '<isindex>', '<i>',
- '<iframe', '<ilayer', '<img', '<input', '<ins', '<isindex', '<i',
- '</iframe>', '</ilayer>', '</img>', '</input>', '</ins>', '</isindex>', '</i>',
- '</iframe', '</ilayer', '</img', '</input', '</ins', '</isindex', '</i',
-
- '<kbd>',
- '<kbd',
- '&t;/kbd>',
- '</kbd',
-
- '<label>', '<legend>', '<link>', '<li>',
- '<label', '<legend', '<link', '<li',
- '</label>', '</legend>', '</link>', '</li>',
- '</label', '</legend', '</link', '</li',
-
- '<map>', '<meta>',
- '<map', '<meta',
- '</map>', '</meta>',
- '</map', '</meta',
-
- '<noframes>', '<noscript>',
- '<noframes', '<noscript',
- '</noframes>', '</noscript>',
- '</noframes', '</noscript',
-
- '<object>', '<ol>', '<optgroup>', '<option>',
- '<object', '<ol', '<optgroup', '<option',
- '</object>', '</ol>', '</optgroup>', '</option>',
- '</object', '</ol', '</optgroup', '</option',
-
- '<param>', '<pre>', '<p>',
- '<param', '<pre', '<p',
- '</param>', '</pre>', '</p>',
- '</param', '</pre', '</p',
-
- '<q>',
- '<q',
- '</q>',
- '</q',
-
- '<samp>', '<script>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<style>', '<sub>', '<sup>', '<s>',
- '<samp', '<script', '<select', '<small', '<span', '<strike', '<strong', '<style', '<sub', '<sup', '<s',
- '</samp>', '</script>', '</select>', '</small>', '</span>', '</strike>', '</strong>', '</style>', '</sub>', '</sup>', '</s>',
- '</samp', '</script', '</select', '</small', '</span', '</strike', '</strong', '</style', '</sub', '</sup', '</s',
-
- '<table>', '<tbody>', '<td>', '<textarea>', '<text>', '<tfoot>', '<thead>', '<th>', '<title>', '<tr>', '<tt>',
- '<table', '<tbody', '<td', '<textarea', '<text', '<tfoot', '<tfoot', '<thead', '<th', '<title', '<tr', '<tt',
- '</table>', '</tbody>', '</td>', '</textarea>', '</text>', '</tfoot>', '</thead', '</tfoot', '</th>', '</title>', '</tr>', '</tt>',
- '</table', '</tbody', '</td', '</textarea', '</text', '</tfoot', '</tfoot', '</thead', '</th', '</title', '</tr', '</tt',
-
- '<ul>', '<u>',
- '<ul', '<u',
- '</ul>', '</ul>',
- '</ul', '</u',
-
- '<var>',
- '<var',
- '</var>',
- '</var',
-
- '>', '<'
- ),
- 3 => array(
- 'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
- 'background', 'bgcolor', 'border',
- 'cellpadding', 'cellspacing', 'char', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
- 'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
- 'enctype',
- 'face', 'for', 'frame', 'frameborder',
- 'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
- 'id', 'ismap',
- 'label', 'lang', 'language', 'link', 'longdesc',
- 'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
- 'name', 'nohref', 'noresize', 'noshade', 'nowrap',
- 'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
- 'profile', 'prompt',
- 'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
- 'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
- 'tabindex', 'target', 'text', 'title', 'type',
- 'usemap',
- 'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
- 'width'
- )
- ),
- 'SYMBOLS' => array(
- '/', '='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- 0 => 'color: #00bbdd;',
- 1 => 'color: #ddbb00;',
- 2 => 'color: #009900;'
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => 'http://december.com/html/4/element/{FNAME}.html',
- 3 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<!DOCTYPE' => '>'
- ),
- 1 => array(
- '&' => ';'
- ),
- 2 => array(
- '<' => '>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => false,
- 1 => false,
- 2 => true
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * html4strict.php
+ * ---------------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/10
+ *
+ * HTML 4.01 strict language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.4)
+ * - Removed escape character for strings
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ * - Added support for URLs
+ * 2004/08/05 (1.0.1)
+ * - Added INS and DEL
+ * - Removed the background colour from tags' styles
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Check that only HTML4 strict attributes are highlighted
+ * * Eliminate empty tags that aren't allowed in HTML4 strict
+ * * Split to several files - html4trans, xhtml1 etc
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'HTML',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array('<!--' => '-->'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ ),
+ 2 => array(
+ '<a>', '<abbr>', '<acronym>', '<address>', '<applet>',
+ '<a', '<abbr', '<acronym', '<address', '<applet',
+ '</a>', '</abbr>', '</acronym>', '</address>', '</applet>',
+ '</a', '</abbr', '</acronym', '</address', '</applet',
+
+ '<base>', '<basefont>', '<bdo>', '<big>', '<blockquote>', '<body>', '<br>', '<button>', '<b>',
+ '<base', '<basefont', '<bdo', '<big', '<blockquote', '<body', '<br', '<button', '<b',
+ '</base>', '</basefont>', '</bdo>', '</big>', '</blockquote>', '</body>', '</br>', '</button>', '</b>',
+ '</base', '</basefont', '</bdo', '</big', '</blockquote', '</body', '</br', '</button', '</b',
+
+ '<caption>', '<center>', '<cite>', '<code>', '<colgroup>', '<col>',
+ '<caption', '<center', '<cite', '<code', '<colgroup', '<col',
+ '</caption>', '</center>', '</cite>', '</code>', '</colgroup>', '</col>',
+ '</caption', '</center', '</cite', '</code', '</colgroup', '</col',
+
+ '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>',
+ '<dd', '<del', '<dfn', '<dir', '<div', '<dl', '<dt',
+ '</dd>', '</del>', '</dfn>', '</dir>', '</div>', '</dl>', '</dt>',
+ '</dd', '</del', '</dfn', '</dir', '</div', '</dl', '</dt',
+
+ '<em>',
+ '<em',
+ '</em>',
+ '</em',
+
+ '<fieldset>', '<font>', '<form>', '<frame>', '<frameset>',
+ '<fieldset', '<font', '<form', '<frame', '<frameset',
+ '</fieldset>', '</font>', '</form>', '</frame>', '</frameset>',
+ '</fieldset', '</font', '</form', '</frame', '</frameset',
+
+ '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<head>', '<hr>', '<html>',
+ '<h1', '<h2', '<h3', '<h4', '<h5', '<h6', '<head', '<hr', '<html',
+ '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '</head>', '</hr>', '</html>',
+ '</h1', '</h2', '</h3', '</h4', '</h5', '</h6', '</head', '</hr', '</html',
+
+ '<iframe>', '<ilayer>', '<img>', '<input>', '<ins>', '<isindex>', '<i>',
+ '<iframe', '<ilayer', '<img', '<input', '<ins', '<isindex', '<i',
+ '</iframe>', '</ilayer>', '</img>', '</input>', '</ins>', '</isindex>', '</i>',
+ '</iframe', '</ilayer', '</img', '</input', '</ins', '</isindex', '</i',
+
+ '<kbd>',
+ '<kbd',
+ '&t;/kbd>',
+ '</kbd',
+
+ '<label>', '<legend>', '<link>', '<li>',
+ '<label', '<legend', '<link', '<li',
+ '</label>', '</legend>', '</link>', '</li>',
+ '</label', '</legend', '</link', '</li',
+
+ '<map>', '<meta>',
+ '<map', '<meta',
+ '</map>', '</meta>',
+ '</map', '</meta',
+
+ '<noframes>', '<noscript>',
+ '<noframes', '<noscript',
+ '</noframes>', '</noscript>',
+ '</noframes', '</noscript',
+
+ '<object>', '<ol>', '<optgroup>', '<option>',
+ '<object', '<ol', '<optgroup', '<option',
+ '</object>', '</ol>', '</optgroup>', '</option>',
+ '</object', '</ol', '</optgroup', '</option',
+
+ '<param>', '<pre>', '<p>',
+ '<param', '<pre', '<p',
+ '</param>', '</pre>', '</p>',
+ '</param', '</pre', '</p',
+
+ '<q>',
+ '<q',
+ '</q>',
+ '</q',
+
+ '<samp>', '<script>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<style>', '<sub>', '<sup>', '<s>',
+ '<samp', '<script', '<select', '<small', '<span', '<strike', '<strong', '<style', '<sub', '<sup', '<s',
+ '</samp>', '</script>', '</select>', '</small>', '</span>', '</strike>', '</strong>', '</style>', '</sub>', '</sup>', '</s>',
+ '</samp', '</script', '</select', '</small', '</span', '</strike', '</strong', '</style', '</sub', '</sup', '</s',
+
+ '<table>', '<tbody>', '<td>', '<textarea>', '<text>', '<tfoot>', '<thead>', '<th>', '<title>', '<tr>', '<tt>',
+ '<table', '<tbody', '<td', '<textarea', '<text', '<tfoot', '<tfoot', '<thead', '<th', '<title', '<tr', '<tt',
+ '</table>', '</tbody>', '</td>', '</textarea>', '</text>', '</tfoot>', '</thead', '</tfoot', '</th>', '</title>', '</tr>', '</tt>',
+ '</table', '</tbody', '</td', '</textarea', '</text', '</tfoot', '</tfoot', '</thead', '</th', '</title', '</tr', '</tt',
+
+ '<ul>', '<u>',
+ '<ul', '<u',
+ '</ul>', '</ul>',
+ '</ul', '</u',
+
+ '<var>',
+ '<var',
+ '</var>',
+ '</var',
+
+ '>', '<'
+ ),
+ 3 => array(
+ 'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
+ 'background', 'bgcolor', 'border',
+ 'cellpadding', 'cellspacing', 'char', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
+ 'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
+ 'enctype',
+ 'face', 'for', 'frame', 'frameborder',
+ 'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
+ 'id', 'ismap',
+ 'label', 'lang', 'language', 'link', 'longdesc',
+ 'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
+ 'name', 'nohref', 'noresize', 'noshade', 'nowrap',
+ 'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
+ 'profile', 'prompt',
+ 'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
+ 'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
+ 'tabindex', 'target', 'text', 'title', 'type',
+ 'usemap',
+ 'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
+ 'width'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '/', '='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ 0 => 'color: #00bbdd;',
+ 1 => 'color: #ddbb00;',
+ 2 => 'color: #009900;'
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => 'http://december.com/html/4/element/{FNAME}.html',
+ 3 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<!DOCTYPE' => '>'
+ ),
+ 1 => array(
+ '&' => ';'
+ ),
+ 2 => array(
+ '<' => '>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => false,
+ 1 => false,
+ 2 => true
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/idl.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/idl.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/idl.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,119 +1,119 @@
-<?php
-/*************************************************************************************
- * idl.php
- * -------
- * Author: Cedric Bosdonnat (cedricbosdo at openoffice.org)
- * Copyright: (c) 2006 Cedric Bosdonnat
- * Release Version: 1.0.7.21
- * Date Started: 2006/08/20
- *
- * Unoidl language file for GeSHi.
- *
- * 2006/08/20 (1.0.0)
- * - First Release
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-
-$language_data = array (
- 'LANG_NAME' => 'Uno Idl',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'published', 'get', 'set', 'service', 'singleton', 'type', 'module', 'interface', 'struct',
- 'const', 'constants', 'exception', 'enum', 'raises', 'typedef'
- ),
- 2 => array(
- 'bound', 'maybeambiguous', 'maybedefault', 'maybevoid', 'oneway', 'optional',
- 'readonly', 'in', 'out', 'inout', 'attribute', 'transient', 'removable'
- ),
- 3 => array(
- 'True', 'False', 'TRUE', 'FALSE'
- ),
- 4 => array(
- 'string', 'long', 'byte', 'hyper', 'boolean', 'any', 'char', 'double', 'long',
- 'void', 'sequence', 'unsigned', '...'
- ),
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', ';'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #990078; font-weight: bold',
- 2 => 'color: #36dd1c;',
- 3 => 'color: #990078; font-weight: bold',
- 4 => 'color: #0000ec;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #3f7f5f;',
- 2 => 'color: #808080;',
- 'MULTI' => 'color: #4080ff; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #666666; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #808080;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #0000dd;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- 1 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * idl.php
+ * -------
+ * Author: Cedric Bosdonnat (cedricbosdo at openoffice.org)
+ * Copyright: (c) 2006 Cedric Bosdonnat
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/08/20
+ *
+ * Unoidl language file for GeSHi.
+ *
+ * 2006/08/20 (1.0.0)
+ * - First Release
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+
+$language_data = array (
+ 'LANG_NAME' => 'Uno Idl',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'published', 'get', 'set', 'service', 'singleton', 'type', 'module', 'interface', 'struct',
+ 'const', 'constants', 'exception', 'enum', 'raises', 'typedef'
+ ),
+ 2 => array(
+ 'bound', 'maybeambiguous', 'maybedefault', 'maybevoid', 'oneway', 'optional',
+ 'readonly', 'in', 'out', 'inout', 'attribute', 'transient', 'removable'
+ ),
+ 3 => array(
+ 'True', 'False', 'TRUE', 'FALSE'
+ ),
+ 4 => array(
+ 'string', 'long', 'byte', 'hyper', 'boolean', 'any', 'char', 'double', 'long',
+ 'void', 'sequence', 'unsigned', '...'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', ';'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ 4 => true,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #990078; font-weight: bold',
+ 2 => 'color: #36dd1c;',
+ 3 => 'color: #990078; font-weight: bold',
+ 4 => 'color: #0000ec;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #3f7f5f;',
+ 2 => 'color: #808080;',
+ 'MULTI' => 'color: #4080ff; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #666666; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #808080;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #0000dd;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/ini.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/ini.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/ini.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,123 +1,123 @@
-<?php
-/*************************************************************************************
- * ini.php
- * --------
- * Author: deguix (cevo_deguix at yahoo.com.br)
- * Copyright: (c) 2005 deguix
- * Release Version: 1.0.7.21
- * Date Started: 2005/03/27
- *
- * INI language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/12/28 (1.0.1)
- * - Removed unnecessary keyword style index
- * - Added support for " strings
- * 2005/04/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/03/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'INI',
- 'COMMENT_SINGLE' => array(0 => ';'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- ),
- 'SYMBOLS' => array(
- '[', ']', '='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- ),
- 'COMMENTS' => array(
- 0 => 'color: #666666; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => ''
- ),
- 'BRACKETS' => array(
- 0 => ''
- ),
- 'STRINGS' => array(
- 0 => 'color: #933;'
- ),
- 'NUMBERS' => array(
- 0 => ''
- ),
- 'METHODS' => array(
- 0 => ''
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000066; font-weight:bold;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #000066; font-weight:bold;',
- 1 => 'color: #000099;',
- 2 => 'color: #660066;'
- ),
- 'SCRIPT' => array(
- 0 => ''
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '\[.+\]',
- 1 => array(
- GESHI_SEARCH => '([a-zA-Z0-9_]+\s*)=(.+)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '=\\2'
- ),
- 2 => array(
- // Evil hackery to get around GeSHi bug: <>" and ; are added so <span>s can be matched
- // Explicit match on variable names because if a comment is before the first < of the span
- // gets chewed up...
- GESHI_SEARCH => '([<>";a-zA-Z0-9_]+\s*)=(.+)',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1=',
- GESHI_AFTER => ''
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * ini.php
+ * --------
+ * Author: deguix (cevo_deguix at yahoo.com.br)
+ * Copyright: (c) 2005 deguix
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/03/27
+ *
+ * INI language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.1)
+ * - Removed unnecessary keyword style index
+ * - Added support for " strings
+ * 2005/04/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/03/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'INI',
+ 'COMMENT_SINGLE' => array(0 => ';'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ ),
+ 'COMMENTS' => array(
+ 0 => 'color: #666666; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => ''
+ ),
+ 'BRACKETS' => array(
+ 0 => ''
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #933;'
+ ),
+ 'NUMBERS' => array(
+ 0 => ''
+ ),
+ 'METHODS' => array(
+ 0 => ''
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000066; font-weight:bold;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #000066; font-weight:bold;',
+ 1 => 'color: #000099;',
+ 2 => 'color: #660066;'
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '\[.+\]',
+ 1 => array(
+ GESHI_SEARCH => '([a-zA-Z0-9_]+\s*)=(.+)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '=\\2'
+ ),
+ 2 => array(
+ // Evil hackery to get around GeSHi bug: <>" and ; are added so <span>s can be matched
+ // Explicit match on variable names because if a comment is before the first < of the span
+ // gets chewed up...
+ GESHI_SEARCH => '([<>";a-zA-Z0-9_]+\s*)=(.+)',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1=',
+ GESHI_AFTER => ''
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/inno.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/inno.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/inno.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,213 +1,213 @@
-<?php
-/*************************************************************************************
- * Inno.php
- * ----------
- * Author: Thomas Klingler (hotline at theratech.de) based on delphi.php from Járja Norbert (jnorbi at vipmail.hu)
- * Copyright: (c) 2004 Járja Norbert, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2005/07/29
- *
- * Inno Script language inkl. Delphi (Object Pascal) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/09/03
- * - First Release
- *
- * TODO (updated 2005/07/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Inno',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('(*' => '*)'),
- 'CASE_KEYWORDS' => 0,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array('Setup','Types','Components','Tasks','Dirs','Files','Icons','INI','InstallDelete','Languages','Messages',
- 'CustomMessage','LangOptions','Registry','RUN','UninstallDelete','UninstallRun'
- ,'app','win','sys','syswow64','src','sd','pf','pf32','pf64','cf','cf32','cf64','tmp','fonts','dao',
- 'group','localappdata','sendto','userappdata','commonappdata','userdesktop','commondesktop','userdocs',
- 'commondocs','userfavorites','commonfavorites','userprograms','commonprograms','userstartmenu',
- 'commonstartmenu','userstartup','commonstartup','usertemplates','commontemplates'
- ),
- 2 => array(
- 'nil', 'false', 'true', 'var', 'type', 'const','And', 'Array', 'As', 'Begin', 'Case', 'Class', 'Constructor', 'Destructor', 'Div', 'Do', 'DownTo', 'Else',
- 'End', 'Except', 'File', 'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In', 'Inherited', 'Interface',
- 'Is', 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Packed', 'Procedure', 'Property', 'Raise', 'Record',
- 'Repeat', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar', 'To', 'Try', 'Unit', 'Until', 'Uses', 'While', 'With', 'Xor',
-
- 'HKCC','HKCR','HKCU','HKLM','HKU','alwaysoverwrite','alwaysskipifsameorolder','append',
- 'binary','classic','closeonexit','comparetimestamp','confirmoverwrite',
- 'createkeyifdoesntexist','createonlyiffileexists','createvalueifdoesntexist',
- 'deleteafterinstall','deletekey','deletevalue','dirifempty','dontcloseonexit',
- 'dontcopy','dontcreatekey','disablenouninstallwarning','dword','exclusive','expandsz',
- 'external','files','filesandordirs','fixed','fontisnttruetype','ignoreversion','iscustom','isreadme',
- 'modern','multisz','new','noerror','none','normal','nowait','onlyifdestfileexists',
- 'onlyifdoesntexist','onlyifnewer','overwrite','overwritereadonly','postinstall',
- 'preservestringtype','promptifolder','regserver','regtypelib','restart','restartreplace',
- 'runhidden','runmaximized','runminimized','sharedfile','shellexec','showcheckbox',
- 'skipifnotsilent','skipifsilent','silent','skipifdoesntexist',
- 'skipifsourcedoesntexist','sortfilesbyextension','unchecked','uninsalwaysuninstall',
- 'uninsclearvalue','uninsdeleteentry','uninsdeletekey','uninsdeletekeyifempty',
- 'uninsdeletesection','uninsdeletesectionifempty','uninsdeletevalue',
- 'uninsneveruninstall','useapppaths','verysilent','waituntilidle'
-
-
- ),
- 3 => array(
- 'Abs', 'Addr', 'AnsiCompareStr', 'AnsiCompareText', 'AnsiContainsStr', 'AnsiEndsStr', 'AnsiIndexStr', 'AnsiLeftStr',
- 'AnsiLowerCase', 'AnsiMatchStr', 'AnsiMidStr', 'AnsiPos', 'AnsiReplaceStr', 'AnsiReverseString', 'AnsiRightStr',
- 'AnsiStartsStr', 'AnsiUpperCase', 'ArcCos', 'ArcSin', 'ArcTan', 'Assigned', 'BeginThread', 'Bounds', 'CelsiusToFahrenheit',
- 'ChangeFileExt', 'Chr', 'CompareStr', 'CompareText', 'Concat', 'Convert', 'Copy', 'Cos', 'CreateDir', 'CurrToStr',
- 'CurrToStrF', 'Date', 'DateTimeToFileDate', 'DateTimeToStr', 'DateToStr', 'DayOfTheMonth', 'DayOfTheWeek', 'DayOfTheYear',
- 'DayOfWeek', 'DaysBetween', 'DaysInAMonth', 'DaysInAYear', 'DaySpan', 'DegToRad', 'DeleteFile', 'DiskFree', 'DiskSize',
- 'DupeString', 'EncodeDate', 'EncodeDateTime', 'EncodeTime', 'EndOfADay', 'EndOfAMonth', 'Eof', 'Eoln', 'Exp', 'ExtractFileDir',
- 'ExtractFileDrive', 'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath', 'FahrenheitToCelsius', 'FileAge',
- 'FileDateToDateTime', 'FileExists', 'FilePos', 'FileSearch', 'FileSetDate', 'FileSize', 'FindClose', 'FindCmdLineSwitch',
- 'FindFirst', 'FindNext', 'FloatToStr', 'FloatToStrF', 'Format', 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'Frac',
- 'GetCurrentDir', 'GetLastError', 'GetMem', 'High', 'IncDay', 'IncMinute', 'IncMonth', 'IncYear', 'InputBox',
- 'InputQuery', 'Int', 'IntToHex', 'IntToStr', 'IOResult', 'IsInfinite', 'IsLeapYear', 'IsMultiThread', 'IsNaN',
- 'LastDelimiter', 'Length', 'Ln', 'Lo', 'Log10', 'Low', 'LowerCase', 'Max', 'Mean', 'MessageDlg', 'MessageDlgPos',
- 'MonthOfTheYear', 'Now', 'Odd', 'Ord', 'ParamCount', 'ParamStr', 'Pi', 'Point', 'PointsEqual', 'Pos', 'Pred',
- 'Printer', 'PromptForFileName', 'PtInRect', 'RadToDeg', 'Random', 'RandomRange', 'RecodeDate', 'RecodeTime', 'Rect',
- 'RemoveDir', 'RenameFile', 'Round', 'SeekEof', 'SeekEoln', 'SelectDirectory', 'SetCurrentDir', 'Sin', 'SizeOf',
- 'Slice', 'Sqr', 'Sqrt', 'StringOfChar', 'StringReplace', 'StringToWideChar', 'StrToCurr', 'StrToDate', 'StrToDateTime',
- 'StrToFloat', 'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime', 'StuffString', 'Succ', 'Sum', 'Tan',
- 'Time', 'TimeToStr', 'Tomorrow', 'Trunc', 'UpCase', 'UpperCase', 'VarType', 'WideCharToString', 'WrapText', 'Yesterday',
- 'Append', 'AppendStr', 'Assign', 'AssignFile', 'AssignPrn', 'Beep', 'BlockRead', 'BlockWrite', 'Break',
- 'ChDir', 'Close', 'CloseFile', 'Continue', 'DateTimeToString', 'Dec', 'DecodeDate', 'DecodeDateTime',
- 'DecodeTime', 'Delete', 'Dispose', 'EndThread', 'Erase', 'Exclude', 'Exit', 'FillChar', 'Flush', 'FreeAndNil',
- 'FreeMem', 'GetDir', 'GetLocaleFormatSettings', 'Halt', 'Inc', 'Include', 'Insert', 'MkDir', 'Move', 'New',
- 'ProcessPath', 'Randomize', 'Read', 'ReadLn', 'ReallocMem', 'Rename', 'ReplaceDate', 'ReplaceTime',
- 'Reset', 'ReWrite', 'RmDir', 'RunError', 'Seek', 'SetLength', 'SetString', 'ShowMessage', 'ShowMessageFmt',
- 'ShowMessagePos', 'Str', 'Truncate', 'Val', 'Write', 'WriteLn',
-
- 'AdminPrivilegesRequired','AfterInstall','AllowCancelDuringInstall','AllowNoIcons','AllowRootDirectory','AllowUNCPath','AlwaysRestart','AlwaysShowComponentsList','AlwaysShowDirOnReadyPage','AlwaysShowGroupOnReadyPage ','AlwaysUsePersonalGroup','AppComments','AppContact','AppCopyright','AppendDefaultDirName',
- 'AppendDefaultGroupName','AppId','AppModifyPath','AppMutex','AppName','AppPublisher',
- 'AppPublisherURL','AppReadmeFile','AppSupportURL','AppUpdatesURL','AppVerName','AppVersion',
- 'Attribs','BackColor','BackColor2','BackColorDirection','BackSolid','BeforeInstall',
- 'ChangesAssociations','ChangesEnvironment','Check','CodeFile','Comment','Components','Compression','CopyMode',
- 'CreateAppDir','CreateUninstallRegKey','DefaultDirName','DefaultGroupName',
- 'DefaultUserInfoName','DefaultUserInfoOrg','DefaultUserInfoSerial',
- 'Description','DestDir','DestName','DirExistsWarning',
- 'DisableDirPage','DisableFinishedPage',
- 'DisableProgramGroupPage','DisableReadyMemo','DisableReadyPage',
- 'DisableStartupPrompt','DiskClusterSize','DiskSliceSize','DiskSpaceMBLabel',
- 'DiskSpanning','DontMergeDuplicateFiles','EnableDirDoesntExistWarning','Encryption',
- 'Excludes','ExtraDiskSpaceRequired','Filename','Flags','FlatComponentsList','FontInstall',
- 'GroupDescription','HotKey','IconFilename','IconIndex','InfoAfterFile','InfoBeforeFile',
- 'InternalCompressLevel','Key','LanguageDetectionMethod','Languages',
- 'LicenseFile','MergeDuplicateFiles','MessagesFile','MinVersion','Name',
- 'OnlyBelowVersion','OutputBaseFilename','OutputManifestFile','OutputDir',
- 'Parameters','Password','Permissions','PrivilegesRequired','ReserveBytes',
- 'RestartIfNeededByRun','Root','RunOnceId','Section','SetupIconFile',
- 'ShowComponentSizes','ShowLanguageDialog','ShowTasksTreeLines','SlicesPerDisk',
- 'SolidCompression','Source','SourceDir','StatusMsg','Subkey','Tasks',
- 'TimeStampRounding','TimeStampsInUTC','TouchDate','TouchTime','Type','Types',
- 'UninstallDisplayIcon','UninstallDisplayName','UninstallFilesDir','UninstallIconFile',
- 'UninstallLogMode','UninstallRestartComputer','UninstallStyle','Uninstallable',
- 'UpdateUninstallLogAppName','UsePreviousAppDir','UsePreviousGroup',
- 'UsePreviousTasks','UsePreviousSetupType','UsePreviousUserInfo',
- 'UserInfoPage','UseSetupLdr','ValueData','ValueName','ValueType',
- 'VersionInfoVersion','VersionInfoCompany','VersionInfoDescription','VersionInfoTextVersion',
- 'WindowResizable','WindowShowCaption','WindowStartMaximized',
- 'WindowVisible','WizardImageBackColor','WizardImageFile','WizardImageStretch','WizardSmallImageBackColor','WizardSmallImageFile','WizardStyle','WorkingDir'
-
-
- ),
- 4 => array(
- 'AnsiChar', 'AnsiString', 'Boolean', 'Byte', 'Cardinal', 'Char', 'Comp', 'Currency', 'Double', 'Extended',
- 'Int64', 'Integer', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PChar', 'PCurrency', 'PDateTime',
- 'PExtended', 'PInt64', 'Pointer', 'PShortString', 'PString', 'PVariant', 'PWideChar', 'PWideString',
- 'Real', 'Real48', 'ShortInt', 'ShortString', 'Single', 'SmallInt', 'String', 'TBits', 'TConvType', 'TDateTime',
- 'Text', 'TextFile', 'TFloatFormat', 'TFormatSettings', 'TList', 'TObject', 'TOpenDialog', 'TPoint',
- 'TPrintDialog', 'TRect', 'TReplaceFlags', 'TSaveDialog', 'TSearchRec', 'TStringList', 'TSysCharSet',
- 'TThreadFunc', 'Variant', 'WideChar', 'WideString', 'Word'
- ),
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '@', '%', '&', '*', '|', '/', '<', '>'
- ),
-
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000000; font-weight: bold;',/*bold Black*/
- 2 => 'color: #000000;font-style: italic;',/*Black*/
- 3 => 'color: #0000FF;',/*blue*/
- 4 => 'color: #CC0000;'/*red*/
- ),
- 'COMMENTS' => array(
- 1 => 'color: #33FF00; font-style: italic;',
- 'MULTI' => 'color: #33FF00; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'REGEXPS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000000; font-weight: bold;',
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * Inno.php
+ * ----------
+ * Author: Thomas Klingler (hotline at theratech.de) based on delphi.php from Járja Norbert (jnorbi at vipmail.hu)
+ * Copyright: (c) 2004 Járja Norbert, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/07/29
+ *
+ * Inno Script language inkl. Delphi (Object Pascal) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/09/03
+ * - First Release
+ *
+ * TODO (updated 2005/07/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Inno',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('(*' => '*)'),
+ 'CASE_KEYWORDS' => 0,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array('Setup','Types','Components','Tasks','Dirs','Files','Icons','INI','InstallDelete','Languages','Messages',
+ 'CustomMessage','LangOptions','Registry','RUN','UninstallDelete','UninstallRun'
+ ,'app','win','sys','syswow64','src','sd','pf','pf32','pf64','cf','cf32','cf64','tmp','fonts','dao',
+ 'group','localappdata','sendto','userappdata','commonappdata','userdesktop','commondesktop','userdocs',
+ 'commondocs','userfavorites','commonfavorites','userprograms','commonprograms','userstartmenu',
+ 'commonstartmenu','userstartup','commonstartup','usertemplates','commontemplates'
+ ),
+ 2 => array(
+ 'nil', 'false', 'true', 'var', 'type', 'const','And', 'Array', 'As', 'Begin', 'Case', 'Class', 'Constructor', 'Destructor', 'Div', 'Do', 'DownTo', 'Else',
+ 'End', 'Except', 'File', 'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In', 'Inherited', 'Interface',
+ 'Is', 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Packed', 'Procedure', 'Property', 'Raise', 'Record',
+ 'Repeat', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar', 'To', 'Try', 'Unit', 'Until', 'Uses', 'While', 'With', 'Xor',
+
+ 'HKCC','HKCR','HKCU','HKLM','HKU','alwaysoverwrite','alwaysskipifsameorolder','append',
+ 'binary','classic','closeonexit','comparetimestamp','confirmoverwrite',
+ 'createkeyifdoesntexist','createonlyiffileexists','createvalueifdoesntexist',
+ 'deleteafterinstall','deletekey','deletevalue','dirifempty','dontcloseonexit',
+ 'dontcopy','dontcreatekey','disablenouninstallwarning','dword','exclusive','expandsz',
+ 'external','files','filesandordirs','fixed','fontisnttruetype','ignoreversion','iscustom','isreadme',
+ 'modern','multisz','new','noerror','none','normal','nowait','onlyifdestfileexists',
+ 'onlyifdoesntexist','onlyifnewer','overwrite','overwritereadonly','postinstall',
+ 'preservestringtype','promptifolder','regserver','regtypelib','restart','restartreplace',
+ 'runhidden','runmaximized','runminimized','sharedfile','shellexec','showcheckbox',
+ 'skipifnotsilent','skipifsilent','silent','skipifdoesntexist',
+ 'skipifsourcedoesntexist','sortfilesbyextension','unchecked','uninsalwaysuninstall',
+ 'uninsclearvalue','uninsdeleteentry','uninsdeletekey','uninsdeletekeyifempty',
+ 'uninsdeletesection','uninsdeletesectionifempty','uninsdeletevalue',
+ 'uninsneveruninstall','useapppaths','verysilent','waituntilidle'
+
+
+ ),
+ 3 => array(
+ 'Abs', 'Addr', 'AnsiCompareStr', 'AnsiCompareText', 'AnsiContainsStr', 'AnsiEndsStr', 'AnsiIndexStr', 'AnsiLeftStr',
+ 'AnsiLowerCase', 'AnsiMatchStr', 'AnsiMidStr', 'AnsiPos', 'AnsiReplaceStr', 'AnsiReverseString', 'AnsiRightStr',
+ 'AnsiStartsStr', 'AnsiUpperCase', 'ArcCos', 'ArcSin', 'ArcTan', 'Assigned', 'BeginThread', 'Bounds', 'CelsiusToFahrenheit',
+ 'ChangeFileExt', 'Chr', 'CompareStr', 'CompareText', 'Concat', 'Convert', 'Copy', 'Cos', 'CreateDir', 'CurrToStr',
+ 'CurrToStrF', 'Date', 'DateTimeToFileDate', 'DateTimeToStr', 'DateToStr', 'DayOfTheMonth', 'DayOfTheWeek', 'DayOfTheYear',
+ 'DayOfWeek', 'DaysBetween', 'DaysInAMonth', 'DaysInAYear', 'DaySpan', 'DegToRad', 'DeleteFile', 'DiskFree', 'DiskSize',
+ 'DupeString', 'EncodeDate', 'EncodeDateTime', 'EncodeTime', 'EndOfADay', 'EndOfAMonth', 'Eof', 'Eoln', 'Exp', 'ExtractFileDir',
+ 'ExtractFileDrive', 'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath', 'FahrenheitToCelsius', 'FileAge',
+ 'FileDateToDateTime', 'FileExists', 'FilePos', 'FileSearch', 'FileSetDate', 'FileSize', 'FindClose', 'FindCmdLineSwitch',
+ 'FindFirst', 'FindNext', 'FloatToStr', 'FloatToStrF', 'Format', 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'Frac',
+ 'GetCurrentDir', 'GetLastError', 'GetMem', 'High', 'IncDay', 'IncMinute', 'IncMonth', 'IncYear', 'InputBox',
+ 'InputQuery', 'Int', 'IntToHex', 'IntToStr', 'IOResult', 'IsInfinite', 'IsLeapYear', 'IsMultiThread', 'IsNaN',
+ 'LastDelimiter', 'Length', 'Ln', 'Lo', 'Log10', 'Low', 'LowerCase', 'Max', 'Mean', 'MessageDlg', 'MessageDlgPos',
+ 'MonthOfTheYear', 'Now', 'Odd', 'Ord', 'ParamCount', 'ParamStr', 'Pi', 'Point', 'PointsEqual', 'Pos', 'Pred',
+ 'Printer', 'PromptForFileName', 'PtInRect', 'RadToDeg', 'Random', 'RandomRange', 'RecodeDate', 'RecodeTime', 'Rect',
+ 'RemoveDir', 'RenameFile', 'Round', 'SeekEof', 'SeekEoln', 'SelectDirectory', 'SetCurrentDir', 'Sin', 'SizeOf',
+ 'Slice', 'Sqr', 'Sqrt', 'StringOfChar', 'StringReplace', 'StringToWideChar', 'StrToCurr', 'StrToDate', 'StrToDateTime',
+ 'StrToFloat', 'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime', 'StuffString', 'Succ', 'Sum', 'Tan',
+ 'Time', 'TimeToStr', 'Tomorrow', 'Trunc', 'UpCase', 'UpperCase', 'VarType', 'WideCharToString', 'WrapText', 'Yesterday',
+ 'Append', 'AppendStr', 'Assign', 'AssignFile', 'AssignPrn', 'Beep', 'BlockRead', 'BlockWrite', 'Break',
+ 'ChDir', 'Close', 'CloseFile', 'Continue', 'DateTimeToString', 'Dec', 'DecodeDate', 'DecodeDateTime',
+ 'DecodeTime', 'Delete', 'Dispose', 'EndThread', 'Erase', 'Exclude', 'Exit', 'FillChar', 'Flush', 'FreeAndNil',
+ 'FreeMem', 'GetDir', 'GetLocaleFormatSettings', 'Halt', 'Inc', 'Include', 'Insert', 'MkDir', 'Move', 'New',
+ 'ProcessPath', 'Randomize', 'Read', 'ReadLn', 'ReallocMem', 'Rename', 'ReplaceDate', 'ReplaceTime',
+ 'Reset', 'ReWrite', 'RmDir', 'RunError', 'Seek', 'SetLength', 'SetString', 'ShowMessage', 'ShowMessageFmt',
+ 'ShowMessagePos', 'Str', 'Truncate', 'Val', 'Write', 'WriteLn',
+
+ 'AdminPrivilegesRequired','AfterInstall','AllowCancelDuringInstall','AllowNoIcons','AllowRootDirectory','AllowUNCPath','AlwaysRestart','AlwaysShowComponentsList','AlwaysShowDirOnReadyPage','AlwaysShowGroupOnReadyPage ','AlwaysUsePersonalGroup','AppComments','AppContact','AppCopyright','AppendDefaultDirName',
+ 'AppendDefaultGroupName','AppId','AppModifyPath','AppMutex','AppName','AppPublisher',
+ 'AppPublisherURL','AppReadmeFile','AppSupportURL','AppUpdatesURL','AppVerName','AppVersion',
+ 'Attribs','BackColor','BackColor2','BackColorDirection','BackSolid','BeforeInstall',
+ 'ChangesAssociations','ChangesEnvironment','Check','CodeFile','Comment','Components','Compression','CopyMode',
+ 'CreateAppDir','CreateUninstallRegKey','DefaultDirName','DefaultGroupName',
+ 'DefaultUserInfoName','DefaultUserInfoOrg','DefaultUserInfoSerial',
+ 'Description','DestDir','DestName','DirExistsWarning',
+ 'DisableDirPage','DisableFinishedPage',
+ 'DisableProgramGroupPage','DisableReadyMemo','DisableReadyPage',
+ 'DisableStartupPrompt','DiskClusterSize','DiskSliceSize','DiskSpaceMBLabel',
+ 'DiskSpanning','DontMergeDuplicateFiles','EnableDirDoesntExistWarning','Encryption',
+ 'Excludes','ExtraDiskSpaceRequired','Filename','Flags','FlatComponentsList','FontInstall',
+ 'GroupDescription','HotKey','IconFilename','IconIndex','InfoAfterFile','InfoBeforeFile',
+ 'InternalCompressLevel','Key','LanguageDetectionMethod','Languages',
+ 'LicenseFile','MergeDuplicateFiles','MessagesFile','MinVersion','Name',
+ 'OnlyBelowVersion','OutputBaseFilename','OutputManifestFile','OutputDir',
+ 'Parameters','Password','Permissions','PrivilegesRequired','ReserveBytes',
+ 'RestartIfNeededByRun','Root','RunOnceId','Section','SetupIconFile',
+ 'ShowComponentSizes','ShowLanguageDialog','ShowTasksTreeLines','SlicesPerDisk',
+ 'SolidCompression','Source','SourceDir','StatusMsg','Subkey','Tasks',
+ 'TimeStampRounding','TimeStampsInUTC','TouchDate','TouchTime','Type','Types',
+ 'UninstallDisplayIcon','UninstallDisplayName','UninstallFilesDir','UninstallIconFile',
+ 'UninstallLogMode','UninstallRestartComputer','UninstallStyle','Uninstallable',
+ 'UpdateUninstallLogAppName','UsePreviousAppDir','UsePreviousGroup',
+ 'UsePreviousTasks','UsePreviousSetupType','UsePreviousUserInfo',
+ 'UserInfoPage','UseSetupLdr','ValueData','ValueName','ValueType',
+ 'VersionInfoVersion','VersionInfoCompany','VersionInfoDescription','VersionInfoTextVersion',
+ 'WindowResizable','WindowShowCaption','WindowStartMaximized',
+ 'WindowVisible','WizardImageBackColor','WizardImageFile','WizardImageStretch','WizardSmallImageBackColor','WizardSmallImageFile','WizardStyle','WorkingDir'
+
+
+ ),
+ 4 => array(
+ 'AnsiChar', 'AnsiString', 'Boolean', 'Byte', 'Cardinal', 'Char', 'Comp', 'Currency', 'Double', 'Extended',
+ 'Int64', 'Integer', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PChar', 'PCurrency', 'PDateTime',
+ 'PExtended', 'PInt64', 'Pointer', 'PShortString', 'PString', 'PVariant', 'PWideChar', 'PWideString',
+ 'Real', 'Real48', 'ShortInt', 'ShortString', 'Single', 'SmallInt', 'String', 'TBits', 'TConvType', 'TDateTime',
+ 'Text', 'TextFile', 'TFloatFormat', 'TFormatSettings', 'TList', 'TObject', 'TOpenDialog', 'TPoint',
+ 'TPrintDialog', 'TRect', 'TReplaceFlags', 'TSaveDialog', 'TSearchRec', 'TStringList', 'TSysCharSet',
+ 'TThreadFunc', 'Variant', 'WideChar', 'WideString', 'Word'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '@', '%', '&', '*', '|', '/', '<', '>'
+ ),
+
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000000; font-weight: bold;',/*bold Black*/
+ 2 => 'color: #000000;font-style: italic;',/*Black*/
+ 3 => 'color: #0000FF;',/*blue*/
+ 4 => 'color: #CC0000;'/*red*/
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #33FF00; font-style: italic;',
+ 'MULTI' => 'color: #33FF00; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000000; font-weight: bold;',
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/io.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/io.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/io.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,139 +1,139 @@
-<?php
-/*************************************************************************************
- * io.php
- * -------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2006 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2006/09/23
- *
- * Io language file for GeSHi. Thanks to Johnathan Wright for the suggestion and help
- * with this language :)
- *
- * CHANGES
- * -------
- * 2006/09/23(1.0.0)
- * - First Release
- *
- * TODO
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Io',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'and', 'break', 'else', 'elseif', 'exit', 'for', 'foreach', 'if', 'ifFalse', 'ifNil',
- 'ifTrue', 'or', 'pass', 'raise', 'return', 'then', 'try', 'wait', 'while', 'yield'
- ),
- 2 => array(
- 'activate', 'activeCoroCount', 'asString', 'block', 'catch', 'clone', 'collectGarbage',
- 'compileString', 'continue', 'do', 'doFile', 'doMessage', 'doString', 'forward',
- 'getSlot', 'getenv', 'hasSlot', 'isActive', 'isNil', 'isResumable', 'list', 'message',
- 'method', 'parent', 'pause', 'perform', 'performWithArgList', 'print', 'proto',
- 'raiseResumable', 'removeSlot', 'resend', 'resume', 'schedulerSleepSeconds', 'self',
- 'sender', 'setSchedulerSleepSeconds', 'setSlot', 'shallowCopy', 'slotNames', 'super',
- 'system', 'thisBlock', 'thisContext', 'thisMessage', 'type', 'uniqueId', 'updateSlot',
- 'write'
- ),
- 3 => array(
- 'Array', 'AudioDevice', 'AudioMixer', 'Block', 'Box', 'Buffer', 'CFunction', 'CGI',
- 'Color', 'Curses', 'DBM', 'DNSResolver', 'DOConnection', 'DOProxy', 'DOServer',
- 'Date', 'Directory', 'Duration', 'DynLib', 'Error', 'Exception', 'FFT', 'File',
- 'Fnmatch', 'Font', 'Future', 'GL', 'GLE', 'GLScissor', 'GLU', 'GLUCylinder',
- 'GLUQuadric', 'GLUSphere', 'GLUT', 'Host', 'Image', 'Importer', 'LinkList', 'List',
- 'Lobby', 'Locals', 'MD5', 'MP3Decoder', 'MP3Encoder', 'Map', 'Message', 'Movie',
- 'NULL', 'Nil', 'Nop', 'Notifiction', 'Number', 'Object', 'OpenGL', 'Point', 'Protos',
- 'Regex', 'SGMLTag', 'SQLite', 'Server', 'ShowMessage', 'SleepyCat', 'SleepyCatCursor',
- 'Socket', 'SocketManager', 'Sound', 'Soup', 'Store', 'String', 'Tree', 'UDPSender',
- 'UDPReceiver', 'URL', 'User', 'Warning', 'WeakLink'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;'
- ),
- 'SCRIPT' => array(
- 0 => ''
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * io.php
+ * -------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2006 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/09/23
+ *
+ * Io language file for GeSHi. Thanks to Johnathan Wright for the suggestion and help
+ * with this language :)
+ *
+ * CHANGES
+ * -------
+ * 2006/09/23(1.0.0)
+ * - First Release
+ *
+ * TODO
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Io',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'and', 'break', 'else', 'elseif', 'exit', 'for', 'foreach', 'if', 'ifFalse', 'ifNil',
+ 'ifTrue', 'or', 'pass', 'raise', 'return', 'then', 'try', 'wait', 'while', 'yield'
+ ),
+ 2 => array(
+ 'activate', 'activeCoroCount', 'asString', 'block', 'catch', 'clone', 'collectGarbage',
+ 'compileString', 'continue', 'do', 'doFile', 'doMessage', 'doString', 'forward',
+ 'getSlot', 'getenv', 'hasSlot', 'isActive', 'isNil', 'isResumable', 'list', 'message',
+ 'method', 'parent', 'pause', 'perform', 'performWithArgList', 'print', 'proto',
+ 'raiseResumable', 'removeSlot', 'resend', 'resume', 'schedulerSleepSeconds', 'self',
+ 'sender', 'setSchedulerSleepSeconds', 'setSlot', 'shallowCopy', 'slotNames', 'super',
+ 'system', 'thisBlock', 'thisContext', 'thisMessage', 'type', 'uniqueId', 'updateSlot',
+ 'write'
+ ),
+ 3 => array(
+ 'Array', 'AudioDevice', 'AudioMixer', 'Block', 'Box', 'Buffer', 'CFunction', 'CGI',
+ 'Color', 'Curses', 'DBM', 'DNSResolver', 'DOConnection', 'DOProxy', 'DOServer',
+ 'Date', 'Directory', 'Duration', 'DynLib', 'Error', 'Exception', 'FFT', 'File',
+ 'Fnmatch', 'Font', 'Future', 'GL', 'GLE', 'GLScissor', 'GLU', 'GLUCylinder',
+ 'GLUQuadric', 'GLUSphere', 'GLUT', 'Host', 'Image', 'Importer', 'LinkList', 'List',
+ 'Lobby', 'Locals', 'MD5', 'MP3Decoder', 'MP3Encoder', 'Map', 'Message', 'Movie',
+ 'NULL', 'Nil', 'Nop', 'Notifiction', 'Number', 'Object', 'OpenGL', 'Point', 'Protos',
+ 'Regex', 'SGMLTag', 'SQLite', 'Server', 'ShowMessage', 'SleepyCat', 'SleepyCatCursor',
+ 'Socket', 'SocketManager', 'Sound', 'Soup', 'Store', 'String', 'Tree', 'UDPSender',
+ 'UDPReceiver', 'URL', 'User', 'Warning', 'WeakLink'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;'
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/java.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/java.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/java.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1388 +1,1388 @@
-<?php
-/*************************************************************************************
- * java.php
- * --------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/10
- *
- * Java language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/12/28 (1.0.4)
- * - Added instanceof keyword
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * 2004/08/05 (1.0.2)
- * - Added URL support
- * - Added keyword "this", as bugs in GeSHi class ironed out
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * - Added extra missed keywords
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Compact the class names like the first few have been
- * and eliminate repeats
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Java',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => 'import'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'for', 'foreach', 'if', 'else', 'while', 'do',
- 'switch', 'case'
- ),
- 2 => array(
- 'null', 'return', 'false', 'final', 'true', 'public',
- 'private', 'protected', 'extends', 'break', 'class',
- 'new', 'try', 'catch', 'throws', 'finally', 'implements',
- 'interface', 'throw', 'native', 'synchronized', 'this',
- 'abstract', 'transient', 'instanceof', 'assert', 'continue',
- 'default', 'enum', 'package', 'static', 'strictfp', 'super',
- 'volatile', 'const', 'goto'
- ),
- 3 => array(
- 'AbstractAction', 'AbstractBorder', 'AbstractButton', 'AbstractCellEditor',
- 'AbstractCollection', 'AbstractColorChooserPanel', 'AbstractDocument',
- 'AbstractDocument.AttributeContext', 'AbstractDocument.Content',
- 'AbstractDocument.ElementEdit', 'AbstractLayoutCache',
- 'AbstractLayoutCache.NodeDimensions', 'AbstractList', 'AbstractListModel',
- 'AbstractMap', 'AbstractMethodError', 'AbstractSequentialList',
- 'AbstractSet', 'AbstractTableModel', 'AbstractUndoableEdit', 'AbstractWriter',
- 'AccessControlContext', 'AccessControlException', 'AccessController',
- 'AccessException', 'Accessible', 'AccessibleAction', 'AccessibleBundle',
- 'AccessibleComponent', 'AccessibleContext', 'AccessibleHyperlink',
- 'AccessibleHypertext', 'AccessibleIcon', 'AccessibleObject',
- 'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle',
- 'AccessibleRole', 'AccessibleSelection', 'AccessibleState',
- 'AccessibleStateSet', 'AccessibleTable', 'AccessibleTableModelChange',
- 'AccessibleText', 'AccessibleValue', 'Acl', 'AclEntry', 'AclNotFoundException',
- 'Action', 'ActionEvent', 'ActionListener', 'ActionMap', 'ActionMapUIResource',
- 'Activatable', 'ActivateFailedException', 'ActivationDesc',
- 'ActivationException', 'ActivationGroup', 'ActivationGroupDesc',
- 'ActivationGroupDesc.CommandEnvironment', 'ActivationGroupID', 'ActivationID',
- 'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem',
- 'Activator', 'ActiveEvent', 'Adjustable', 'AdjustmentEvent', 'AdjustmentListener',
- 'Adler32', 'AffineTransform', 'AffineTransformOp', 'AlgorithmParameterGenerator',
- 'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 'AlgorithmParameterSpec',
- 'AlgorithmParametersSpi', 'AllPermission', 'AlphaComposite', 'AlreadyBound',
- 'AlreadyBoundException', 'AlreadyBoundHelper', 'AlreadyBoundHolder',
- 'AncestorEvent', 'AncestorListener', 'Annotation', 'Any', 'AnyHolder',
- 'AnySeqHelper', 'AnySeqHolder', 'Applet', 'AppletContext', 'AppletInitializer',
- 'AppletStub', 'ApplicationException', 'Arc2D', 'Arc2D.Double', 'Arc2D.Float',
- 'Area', 'AreaAveragingScaleFilter', 'ARG_IN', 'ARG_INOUT', 'ARG_OUT',
- 'ArithmeticException', 'Array', 'ArrayIndexOutOfBoundsException',
- 'ArrayList', 'Arrays', 'ArrayStoreException', 'AsyncBoxView',
- 'Attribute', 'AttributedCharacterIterator', 'AttributedCharacterIterator.Attribute',
- 'AttributedString', 'AttributeInUseException', 'AttributeList',
- 'AttributeModificationException', 'Attributes', 'Attributes.Name',
- 'AttributeSet', 'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute',
- 'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute',
- 'AudioClip', 'AudioFileFormat', 'AudioFileFormat.Type', 'AudioFileReader',
- 'AudioFileWriter', 'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream',
- 'AudioPermission', 'AudioSystem', 'AuthenticationException',
- 'AuthenticationNotSupportedException', 'Authenticator', 'Autoscroll',
- 'AWTError', 'AWTEvent', 'AWTEventListener', 'AWTEventMulticaster',
- 'AWTException', 'AWTPermission', 'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',
- 'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 'BAD_POLICY_VALUE', 'BAD_TYPECODE',
- 'BadKind', 'BadLocationException', 'BandCombineOp', 'BandedSampleModel','BasicArrowButton',
- 'BasicAttribute', 'BasicAttributes', 'BasicBorders', 'BasicBorders.ButtonBorder',
- 'BasicBorders.FieldBorder', 'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder',
- 'BasicBorders.RadioButtonBorder', 'BasicBorders.SplitPaneBorder',
- 'BasicBorders.ToggleButtonBorder', 'BasicButtonListener', 'BasicButtonUI',
- 'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor',
- 'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource',
- 'BasicComboBoxUI', 'BasicComboPopup', 'BasicDesktopIconUI', 'BasicDesktopPaneUI',
- 'BasicDirectoryModel', 'BasicEditorPaneUI', 'BasicFileChooserUI',
- 'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 'BasicInternalFrameTitlePane',
- 'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 'BasicLookAndFeel',
- 'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 'BasicOptionPaneUI',
- 'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 'BasicPasswordFieldUI',
- 'BasicPermission', 'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',
- 'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI',
- 'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI',
- 'BasicSliderUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 'BasicStroke',
- 'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI',
- 'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret',
- 'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',
- 'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 'BasicViewportUI',
- 'BatchUpdateException', 'BeanContext', 'BeanContextChild',
- 'BeanContextChildComponentProxy', 'BeanContextChildSupport', 'BeanContextContainerProxy',
- 'BeanContextEvent', 'BeanContextMembershipEvent', 'BeanContextMembershipListener',
- 'BeanContextProxy', 'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider',
- 'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent',
- 'BeanContextServiceRevokedListener', 'BeanContextServices',
- 'BeanContextServicesListener', 'BeanContextServicesSupport',
- 'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport',
- 'BeanContextSupport.BCSIterator', 'BeanDescriptor', 'BeanInfo', 'Beans',
- 'BevelBorder', 'BigDecimal', 'BigInteger', 'BinaryRefAddr', 'BindException',
- 'Binding', 'BindingHelper', 'BindingHolder', 'BindingIterator',
- 'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations',
- 'BindingListHelper', 'BindingListHolder', 'BindingType', 'BindingTypeHelper',
- 'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView', 'Book', 'Boolean',
- 'BooleanControl', 'BooleanControl.Type', 'BooleanHolder', 'BooleanSeqHelper',
- 'BooleanSeqHolder', 'Border', 'BorderFactory', 'BorderLayout', 'BorderUIResource',
- 'BorderUIResource.BevelBorderUIResource', 'BorderUIResource.CompoundBorderUIResource',
- 'BorderUIResource.EmptyBorderUIResource', 'BorderUIResource.EtchedBorderUIResource',
- 'BorderUIResource.LineBorderUIResource', 'BorderUIResource.MatteBorderUIResource',
- 'BorderUIResource.TitledBorderUIResource', 'BoundedRangeModel', 'Bounds',
- 'Box', 'Box.Filler', 'BoxedValueHelper', 'BoxLayout', 'BoxView',
- 'BreakIterator', 'BufferedImage', 'BufferedImageFilter', 'BufferedImageOp',
- 'BufferedInputStream', 'BufferedOutputStream', 'BufferedReader', 'BufferedWriter',
- 'Button', 'ButtonGroup', 'ButtonModel', 'ButtonUI', 'Byte', 'ByteArrayInputStream',
- 'ByteArrayOutputStream', 'ByteHolder', 'ByteLookupTable', 'Calendar',
- 'CallableStatement', 'CannotProceed', 'CannotProceedException', 'CannotProceedHelper',
- 'CannotProceedHolder', 'CannotRedoException', 'CannotUndoException',
- 'Canvas', 'CardLayout', 'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',
- 'CellEditorListener', 'CellRendererPane', 'Certificate', 'Certificate.CertificateRep',
- 'CertificateEncodingException', 'CertificateException', 'CertificateExpiredException',
- 'CertificateFactory', 'CertificateFactorySpi', 'CertificateNotYetValidException',
- 'CertificateParsingException', 'ChangedCharSetException', 'ChangeEvent',
- 'ChangeListener', 'Character', 'Character.Subset', 'Character.UnicodeBlock',
- 'CharacterIterator', 'CharArrayReader', 'CharArrayWriter', 'CharConversionException',
- 'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 'Checkbox', 'CheckboxGroup',
- 'CheckboxMenuItem', 'CheckedInputStream', 'CheckedOutputStream', 'Checksum',
- 'Choice', 'ChoiceFormat', 'Class', 'ClassCastException', 'ClassCircularityError',
- 'ClassDesc', 'ClassFormatError', 'ClassLoader', 'ClassNotFoundException',
- 'Clip', 'Clipboard', 'ClipboardOwner', 'Clob', 'Cloneable', 'CloneNotSupportedException',
- 'CMMException', 'CodeSource', 'CollationElementIterator', 'CollationKey',
- 'Collator', 'Collection', 'Collections', 'Color', 'ColorChooserComponentFactory',
- 'ColorChooserUI', 'ColorConvertOp', 'ColorModel', 'ColorSelectionModel',
- 'ColorSpace', 'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel', 'ComboBoxUI',
- 'ComboPopup', 'COMM_FAILURE', 'CommunicationException', 'Comparable',
- 'Comparator', 'Compiler', 'CompletionStatus', 'CompletionStatusHelper',
- 'Component', 'ComponentAdapter', 'ComponentColorModel', 'ComponentEvent',
- 'ComponentInputMap', 'ComponentInputMapUIResource', 'ComponentListener',
- 'ComponentOrientation', 'ComponentSampleModel', 'ComponentUI', 'ComponentView',
- 'Composite', 'CompositeContext', 'CompositeName','CompositeView', 'CompoundBorder',
- 'CompoundControl', 'CompoundControl.Type', 'CompoundEdit', 'CompoundName',
- 'ConcurrentModificationException', 'ConfigurationException', 'ConnectException',
- 'ConnectException', 'ConnectIOException', 'Connection', 'Constructor',
- 'Container', 'ContainerAdapter', 'ContainerEvent', 'ContainerListener',
- 'ContentHandler', 'ContentHandlerFactory', 'ContentModel', 'Context', 'ContextList',
- 'ContextNotEmptyException', 'ContextualRenderedImageFactory', 'Control',
- 'Control.Type', 'ControlFactory', 'ControllerEventListener', 'ConvolveOp',
- 'CRC32', 'CRL', 'CRLException', 'CropImageFilter', 'CSS', 'CSS.Attribute',
- 'CTX_RESTRICT_SCOPE', 'CubicCurve2D', 'CubicCurve2D.Double', 'CubicCurve2D.Float',
- 'Current', 'CurrentHelper', 'CurrentHolder', 'CurrentOperations', 'Cursor',
- 'Customizer', 'CustomMarshal', 'CustomValue', 'DATA_CONVERSION', 'DatabaseMetaData',
- 'DataBuffer', 'DataBufferByte', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort',
- 'DataFlavor', 'DataFormatException', 'DatagramPacket', 'DatagramSocket',
- 'DatagramSocketImpl', 'DatagramSocketImplFactory', 'DataInput', 'DataInputStream',
- 'DataLine', 'DataLine.Info', 'DataOutput', 'DataOutputStream', 'DataOutputStream',
- 'DataTruncation', 'Date', 'DateFormat', 'DateFormatSymbols', 'DebugGraphics',
- 'DecimalFormat', 'DecimalFormatSymbols', 'DefaultBoundedRangeModel',
- 'DefaultButtonModel', 'DefaultCaret', 'DefaultCellEditor', 'DefaultColorSelectionModel',
- 'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultEditorKit',
- 'DefaultEditorKit.BeepAction', 'DefaultEditorKit.CopyAction',
- 'DefaultEditorKit.CutAction', 'DefaultEditorKit.DefaultKeyTypedAction',
- 'DefaultEditorKit.InsertBreakAction', 'DefaultEditorKit.InsertContentAction',
- 'DefaultEditorKit.InsertTabAction', 'DefaultEditorKit.PasteAction,',
- 'DefaultFocusManager', 'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter',
- 'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 'DefaultListModel',
- 'DefaultListSelectionModel', 'DefaultMenuLayout', 'DefaultMetalTheme',
- 'DefaultMutableTreeNode', 'DefaultSingleSelectionModel', 'DefaultStyledDocument',
- 'DefaultStyledDocument.AttributeUndoableEdit', 'DefaultStyledDocument.ElementSpec',
- 'DefaultTableCellRenderer', 'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel',
- 'DefaultTableModel', 'DefaultTextUI', 'DefaultTreeCellEditor', 'DefaultTreeCellRenderer',
- 'DefaultTreeModel', 'DefaultTreeSelectionModel', 'DefinitionKind', 'DefinitionKindHelper',
- 'Deflater', 'DeflaterOutputStream', 'Delegate', 'DesignMode', 'DesktopIconUI',
- 'DesktopManager', 'DesktopPaneUI', 'DGC', 'Dialog', 'Dictionary', 'DigestException',
- 'DigestInputStream', 'DigestOutputStream', 'Dimension', 'Dimension2D',
- 'DimensionUIResource', 'DirContext', 'DirectColorModel', 'DirectoryManager',
- 'DirObjectFactory', 'DirStateFactory', 'DirStateFactory.Result', 'DnDConstants',
- 'Document', 'DocumentEvent', 'DocumentEvent.ElementChange', 'DocumentEvent.EventType',
- 'DocumentListener', 'DocumentParser', 'DomainCombiner', 'DomainManager',
- 'DomainManagerOperations', 'Double', 'DoubleHolder', 'DoubleSeqHelper',
- 'DoubleSeqHolder', 'DragGestureEvent', 'DragGestureListener', 'DragGestureRecognizer',
- 'DragSource', 'DragSourceContext', 'DragSourceDragEvent', 'DragSourceDropEvent',
- 'DragSourceEvent', 'DragSourceListener', 'Driver', 'DriverManager',
- 'DriverPropertyInfo', 'DropTarget', 'DropTarget.DropTargetAutoScroller',
- 'DropTargetContext', 'DropTargetDragEvent', 'DropTargetDropEvent',
- 'DropTargetEvent', 'DropTargetListener', 'DSAKey', 'DSAKeyPairGenerator',
- 'DSAParameterSpec', 'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',
- 'DSAPublicKey', 'DSAPublicKeySpec', 'DTD', 'DTDConstants', 'DynamicImplementation',
- 'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 'DynStruct',
- 'DynUnion', 'DynValue', 'EditorKit', 'Element', 'ElementIterator', 'Ellipse2D',
- 'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder', 'EmptyStackException',
- 'EncodedKeySpec', 'Entity', 'EnumControl', 'EnumControl.Type','Enumeration',
- 'Environment', 'EOFException', 'Error', 'EtchedBorder', 'Event', 'EventContext',
- 'EventDirContext', 'EventListener', 'EventListenerList', 'EventObject', 'EventQueue',
- 'EventSetDescriptor', 'Exception', 'ExceptionInInitializerError', 'ExceptionList',
- 'ExpandVetoException', 'ExportException', 'ExtendedRequest', 'ExtendedResponse',
- 'Externalizable', 'FeatureDescriptor', 'Field', 'FieldNameHelper',
- 'FieldPosition', 'FieldView', 'File', 'FileChooserUI', 'FileDescriptor',
- 'FileDialog', 'FileFilter', 'FileFilter', 'FileInputStream', 'FilenameFilter',
- 'FileNameMap', 'FileNotFoundException', 'FileOutputStream', 'FilePermission',
- 'FileReader', 'FileSystemView', 'FileView', 'FileWriter', 'FilteredImageSource',
- 'FilterInputStream', 'FilterOutputStream', 'FilterReader', 'FilterWriter',
- 'FixedHeightLayoutCache', 'FixedHolder', 'FlatteningPathIterator', 'FlavorMap',
- 'Float', 'FloatControl', 'FloatControl.Type', 'FloatHolder', 'FloatSeqHelper',
- 'FloatSeqHolder', 'FlowLayout', 'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',
- 'FocusEvent', 'FocusListener', 'FocusManager', 'Font', 'FontFormatException',
- 'FontMetrics', 'FontRenderContext', 'FontUIResource', 'Format', 'FormatConversionProvider',
- 'FormView', 'Frame', 'FREE_MEM', 'GapContent', 'GeneralPath', 'GeneralSecurityException',
- 'GlyphJustificationInfo', 'GlyphMetrics', 'GlyphVector', 'GlyphView', 'GlyphView.GlyphPainter',
- 'GradientPaint', 'GraphicAttribute', 'Graphics', 'Graphics2D', 'GraphicsConfigTemplate',
- 'GraphicsConfiguration', 'GraphicsDevice', 'GraphicsEnvironment', 'GrayFilter',
- 'GregorianCalendar', 'GridBagConstraints', 'GridBagLayout', 'GridLayout', 'Group', 'Guard',
- 'GuardedObject', 'GZIPInputStream', 'GZIPOutputStream',
- 'HasControls',
- 'HashMap',
- 'HashSet',
- 'Hashtable',
- 'HierarchyBoundsAdapter',
- 'HierarchyBoundsListener',
- 'HierarchyEvent',
- 'HierarchyListener',
- 'Highlighter',
- 'Highlighter.Highlight',
- 'Highlighter.HighlightPainter',
- 'HTML',
- 'HTML.Attribute',
- 'HTML.Tag',
- 'HTML.UnknownTag',
- 'HTMLDocument',
- 'HTMLDocument.Iterator',
- 'HTMLEditorKit',
- 'HTMLEditorKit.HTMLFactory',
- 'HTMLEditorKit.HTMLTextAction',
- 'HTMLEditorKit.InsertHTMLTextAction',
- 'HTMLEditorKit.LinkController',
- 'HTMLEditorKit.Parser',
- 'HTMLEditorKit.ParserCallback',
- 'HTMLFrameHyperlinkEvent',
- 'HTMLWriter',
- 'HttpURLConnection',
- 'HyperlinkEvent',
- 'HyperlinkEvent.EventType',
- 'HyperlinkListener',
- 'ICC_ColorSpace',
- 'ICC_Profile',
- 'ICC_ProfileGray',
- 'ICC_ProfileRGB',
- 'Icon',
- 'IconUIResource',
- 'IconView',
- 'IdentifierHelper',
- 'Identity',
- 'IdentityScope',
- 'IDLEntity',
- 'IDLType',
- 'IDLTypeHelper', 'IDLTypeOperations',
- 'IllegalAccessError',
- 'IllegalAccessException',
- 'IllegalArgumentException',
- 'IllegalComponentStateException',
- 'IllegalMonitorStateException',
- 'IllegalPathStateException',
- 'IllegalStateException',
- 'IllegalThreadStateException',
- 'Image',
- 'ImageConsumer',
- 'ImageFilter',
- 'ImageGraphicAttribute',
- 'ImageIcon',
- 'ImageObserver',
- 'ImageProducer',
- 'ImagingOpException',
- 'IMP_LIMIT',
- 'IncompatibleClassChangeError',
- 'InconsistentTypeCode',
- 'IndexColorModel',
- 'IndexedPropertyDescriptor',
- 'IndexOutOfBoundsException',
- 'IndirectionException',
- 'InetAddress',
- 'Inflater',
- 'InflaterInputStream',
- 'InheritableThreadLocal',
- 'InitialContext',
- 'InitialContextFactory',
- 'InitialContextFactoryBuilder',
- 'InitialDirContext',
- 'INITIALIZE',
- 'Initializer',
- 'InitialLdapContext',
- 'InlineView',
- 'InputContext',
- 'InputEvent',
- 'InputMap',
- 'InputMapUIResource',
- 'InputMethod',
- 'InputMethodContext',
- 'InputMethodDescriptor',
- 'InputMethodEvent',
- 'InputMethodHighlight',
- 'InputMethodListener',
- 'InputMethodRequests',
- 'InputStream',
- 'InputStream',
- 'InputStream',
- 'InputStreamReader',
- 'InputSubset',
- 'InputVerifier',
- 'Insets',
- 'InsetsUIResource',
- 'InstantiationError',
- 'InstantiationException',
- 'Instrument',
- 'InsufficientResourcesException',
- 'Integer',
- 'INTERNAL',
- 'InternalError', 'InternalFrameAdapter',
- 'InternalFrameEvent',
- 'InternalFrameListener',
- 'InternalFrameUI',
- 'InterruptedException',
- 'InterruptedIOException',
- 'InterruptedNamingException',
- 'INTF_REPOS',
- 'IntHolder',
- 'IntrospectionException',
- 'Introspector',
- 'INV_FLAG',
- 'INV_IDENT',
- 'INV_OBJREF',
- 'INV_POLICY',
- 'Invalid',
- 'INVALID_TRANSACTION',
- 'InvalidAlgorithmParameterException',
- 'InvalidAttributeIdentifierException',
- 'InvalidAttributesException',
- 'InvalidAttributeValueException',
- 'InvalidClassException',
- 'InvalidDnDOperationException',
- 'InvalidKeyException',
- 'InvalidKeySpecException',
- 'InvalidMidiDataException',
- 'InvalidName',
- 'InvalidName',
- 'InvalidNameException',
- 'InvalidNameHelper',
- 'InvalidNameHolder',
- 'InvalidObjectException',
- 'InvalidParameterException',
- 'InvalidParameterSpecException',
- 'InvalidSearchControlsException',
- 'InvalidSearchFilterException',
- 'InvalidSeq',
- 'InvalidTransactionException',
- 'InvalidValue',
- 'InvocationEvent',
- 'InvocationHandler',
- 'InvocationTargetException',
- 'InvokeHandler',
- 'IOException',
- 'IRObject',
- 'IRObjectOperations', 'IstringHelper', 'ItemEvent', 'ItemListener',
- 'ItemSelectable', 'Iterator', 'JApplet', 'JarEntry', 'JarException',
- 'JarFile', 'JarInputStream', 'JarOutputStream', 'JarURLConnection',
- 'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser',
- 'JComboBox',
- 'JComboBox.KeySelectionManager',
- 'JComponent',
- 'JDesktopPane',
- 'JDialog',
- 'JEditorPane',
- 'JFileChooser',
- 'JFrame',
- 'JInternalFrame',
- 'JInternalFrame.JDesktopIcon',
- 'JLabel',
- 'JLayeredPane',
- 'JList',
- 'JMenu',
- 'JMenuBar',
- 'JMenuItem',
- 'JobAttributes',
- 'JobAttributes.DefaultSelectionType',
- 'JobAttributes.DestinationType',
- 'JobAttributes.DialogType',
- 'JobAttributes.MultipleDocumentHandlingType',
- 'JobAttributes.SidesType',
- 'JOptionPane',
- 'JPanel',
- 'JPasswordField',
- 'JPopupMenu',
- 'JPopupMenu.Separator',
- 'JProgressBar',
- 'JRadioButton',
- 'JRadioButtonMenuItem',
- 'JRootPane',
- 'JScrollBar',
- 'JScrollPane',
- 'JSeparator',
- 'JSlider',
- 'JSplitPane',
- 'JTabbedPane',
- 'JTable',
- 'JTableHeader',
- 'JTextArea',
- 'JTextComponent',
- 'JTextComponent.KeyBinding', 'JTextField',
- 'JTextPane',
- 'JToggleButton',
- 'JToggleButton.ToggleButtonModel',
- 'JToolBar',
- 'JToolBar.Separator',
- 'JToolTip',
- 'JTree',
- 'JTree.DynamicUtilTreeNode',
- 'JTree.EmptySelectionModel',
- 'JViewport',
- 'JWindow',
- 'Kernel',
- 'Key',
- 'KeyAdapter',
- 'KeyEvent',
- 'KeyException',
- 'KeyFactory',
- 'KeyFactorySpi',
- 'KeyListener',
- 'KeyManagementException',
- 'Keymap',
- 'KeyPair',
- 'KeyPairGenerator',
- 'KeyPairGeneratorSpi',
- 'KeySpec',
- 'KeyStore',
- 'KeyStoreException',
- 'KeyStoreSpi',
- 'KeyStroke',
- 'Label',
- 'LabelUI',
- 'LabelView',
- 'LastOwnerException',
- 'LayeredHighlighter',
- 'LayeredHighlighter.LayerPainter',
- 'LayoutManager',
- 'LayoutManager2',
- 'LayoutQueue',
- 'LdapContext',
- 'LdapReferralException',
- 'Lease',
- 'LimitExceededException',
- 'Line',
- 'Line.Info',
- 'Line2D',
- 'Line2D.Double',
- 'Line2D.Float',
- 'LineBorder',
- 'LineBreakMeasurer',
- 'LineEvent',
- 'LineEvent.Type',
- 'LineListener',
- 'LineMetrics',
- 'LineNumberInputStream',
- 'LineNumberReader',
- 'LineUnavailableException',
- 'LinkageError',
- 'LinkedList',
- 'LinkException',
- 'LinkLoopException',
- 'LinkRef',
- 'List',
- 'List',
- 'ListCellRenderer',
- 'ListDataEvent',
- 'ListDataListener',
- 'ListIterator',
- 'ListModel',
- 'ListResourceBundle',
- 'ListSelectionEvent',
- 'ListSelectionListener',
- 'ListSelectionModel',
- 'ListUI',
- 'ListView',
- 'LoaderHandler',
- 'Locale',
- 'LocateRegistry',
- 'LogStream',
- 'Long',
- 'LongHolder',
- 'LongLongSeqHelper',
- 'LongLongSeqHolder',
- 'LongSeqHelper',
- 'LongSeqHolder',
- 'LookAndFeel',
- 'LookupOp',
- 'LookupTable',
- 'MalformedLinkException',
- 'MalformedURLException',
- 'Manifest', 'Map',
- 'Map.Entry',
- 'MARSHAL',
- 'MarshalException',
- 'MarshalledObject',
- 'Math',
- 'MatteBorder',
- 'MediaTracker',
- 'Member',
- 'MemoryImageSource',
- 'Menu',
- 'MenuBar',
- 'MenuBarUI',
- 'MenuComponent',
- 'MenuContainer',
- 'MenuDragMouseEvent',
- 'MenuDragMouseListener',
- 'MenuElement',
- 'MenuEvent',
- 'MenuItem',
- 'MenuItemUI',
- 'MenuKeyEvent',
- 'MenuKeyListener',
- 'MenuListener',
- 'MenuSelectionManager',
- 'MenuShortcut',
- 'MessageDigest',
- 'MessageDigestSpi',
- 'MessageFormat',
- 'MetaEventListener',
- 'MetalBorders',
- 'MetalBorders.ButtonBorder',
- 'MetalBorders.Flush3DBorder',
- 'MetalBorders.InternalFrameBorder',
- 'MetalBorders.MenuBarBorder',
- 'MetalBorders.MenuItemBorder',
- 'MetalBorders.OptionDialogBorder',
- 'MetalBorders.PaletteBorder',
- 'MetalBorders.PopupMenuBorder',
- 'MetalBorders.RolloverButtonBorder',
- 'MetalBorders.ScrollPaneBorder',
- 'MetalBorders.TableHeaderBorder',
- 'MetalBorders.TextFieldBorder',
- 'MetalBorders.ToggleButtonBorder',
- 'MetalBorders.ToolBarBorder',
- 'MetalButtonUI',
- 'MetalCheckBoxIcon',
- 'MetalCheckBoxUI',
- 'MetalComboBoxButton',
- 'MetalComboBoxEditor',
- 'MetalComboBoxEditor.UIResource',
- 'MetalComboBoxIcon',
- 'MetalComboBoxUI',
- 'MetalDesktopIconUI',
- 'MetalFileChooserUI',
- 'MetalIconFactory',
- 'MetalIconFactory.FileIcon16',
- 'MetalIconFactory.FolderIcon16',
- 'MetalIconFactory.PaletteCloseIcon',
- 'MetalIconFactory.TreeControlIcon',
- 'MetalIconFactory.TreeFolderIcon',
- 'MetalIconFactory.TreeLeafIcon',
- 'MetalInternalFrameTitlePane',
- 'MetalInternalFrameUI',
- 'MetalLabelUI',
- 'MetalLookAndFeel',
- 'MetalPopupMenuSeparatorUI',
- 'MetalProgressBarUI',
- 'MetalRadioButtonUI',
- 'MetalScrollBarUI',
- 'MetalScrollButton',
- 'MetalScrollPaneUI',
- 'MetalSeparatorUI',
- 'MetalSliderUI',
- 'MetalSplitPaneUI',
- 'MetalTabbedPaneUI',
- 'MetalTextFieldUI',
- 'MetalTheme',
- 'MetalToggleButtonUI',
- 'MetalToolBarUI',
- 'MetalToolTipUI',
- 'MetalTreeUI',
- 'MetaMessage',
- 'Method',
- 'MethodDescriptor',
- 'MidiChannel',
- 'MidiDevice',
- 'MidiDevice.Info',
- 'MidiDeviceProvider',
- 'MidiEvent',
- 'MidiFileFormat',
- 'MidiFileReader',
- 'MidiFileWriter',
- 'MidiMessage',
- 'MidiSystem',
- 'MidiUnavailableException',
- 'MimeTypeParseException',
- 'MinimalHTMLWriter',
- 'MissingResourceException',
- 'Mixer',
- 'Mixer.Info',
- 'MixerProvider',
- 'ModificationItem',
- 'Modifier',
- 'MouseAdapter',
- 'MouseDragGestureRecognizer',
- 'MouseEvent',
- 'MouseInputAdapter',
- 'MouseInputListener',
- 'MouseListener',
- 'MouseMotionAdapter',
- 'MouseMotionListener',
- 'MultiButtonUI',
- 'MulticastSocket',
- 'MultiColorChooserUI',
- 'MultiComboBoxUI',
- 'MultiDesktopIconUI',
- 'MultiDesktopPaneUI',
- 'MultiFileChooserUI',
- 'MultiInternalFrameUI',
- 'MultiLabelUI', 'MultiListUI',
- 'MultiLookAndFeel',
- 'MultiMenuBarUI',
- 'MultiMenuItemUI',
- 'MultiOptionPaneUI',
- 'MultiPanelUI',
- 'MultiPixelPackedSampleModel',
- 'MultipleMaster',
- 'MultiPopupMenuUI',
- 'MultiProgressBarUI',
- 'MultiScrollBarUI',
- 'MultiScrollPaneUI',
- 'MultiSeparatorUI',
- 'MultiSliderUI',
- 'MultiSplitPaneUI',
- 'MultiTabbedPaneUI',
- 'MultiTableHeaderUI',
- 'MultiTableUI',
- 'MultiTextUI',
- 'MultiToolBarUI',
- 'MultiToolTipUI',
- 'MultiTreeUI',
- 'MultiViewportUI',
- 'MutableAttributeSet',
- 'MutableComboBoxModel',
- 'MutableTreeNode',
- 'Name',
- 'NameAlreadyBoundException',
- 'NameClassPair',
- 'NameComponent',
- 'NameComponentHelper',
- 'NameComponentHolder',
- 'NamedValue',
- 'NameHelper',
- 'NameHolder',
- 'NameNotFoundException',
- 'NameParser',
- 'NamespaceChangeListener',
- 'NameValuePair',
- 'NameValuePairHelper',
- 'Naming',
- 'NamingContext',
- 'NamingContextHelper',
- 'NamingContextHolder',
- 'NamingContextOperations',
- 'NamingEnumeration',
- 'NamingEvent',
- 'NamingException',
- 'NamingExceptionEvent',
- 'NamingListener',
- 'NamingManager',
- 'NamingSecurityException',
- 'NegativeArraySizeException',
- 'NetPermission',
- 'NO_IMPLEMENT',
- 'NO_MEMORY',
- 'NO_PERMISSION',
- 'NO_RESOURCES',
- 'NO_RESPONSE',
- 'NoClassDefFoundError',
- 'NoInitialContextException', 'NoninvertibleTransformException',
- 'NoPermissionException',
- 'NoRouteToHostException',
- 'NoSuchAlgorithmException',
- 'NoSuchAttributeException',
- 'NoSuchElementException',
- 'NoSuchFieldError',
- 'NoSuchFieldException',
- 'NoSuchMethodError',
- 'NoSuchMethodException',
- 'NoSuchObjectException',
- 'NoSuchProviderException',
- 'NotActiveException',
- 'NotBoundException',
- 'NotContextException',
- 'NotEmpty',
- 'NotEmptyHelper',
- 'NotEmptyHolder',
- 'NotFound',
- 'NotFoundHelper',
- 'NotFoundHolder',
- 'NotFoundReason',
- 'NotFoundReasonHelper',
- 'NotFoundReasonHolder',
- 'NotOwnerException',
- 'NotSerializableException',
- 'NullPointerException',
- 'Number',
- 'NumberFormat', 'NumberFormatException', 'NVList',
- 'OBJ_ADAPTER', 'Object', 'OBJECT_NOT_EXIST', 'ObjectChangeListener',
- 'ObjectFactory',
- 'ObjectFactoryBuilder',
- 'ObjectHelper',
- 'ObjectHolder',
- 'ObjectImpl', 'ObjectImpl',
- 'ObjectInput',
- 'ObjectInputStream',
- 'ObjectInputStream.GetField',
- 'ObjectInputValidation',
- 'ObjectOutput',
- 'ObjectOutputStream',
- 'ObjectOutputStream.PutField',
- 'ObjectStreamClass',
- 'ObjectStreamConstants',
- 'ObjectStreamException',
- 'ObjectStreamField',
- 'ObjectView',
- 'ObjID',
- 'Observable',
- 'Observer',
- 'OctetSeqHelper',
- 'OctetSeqHolder',
- 'OMGVMCID',
- 'OpenType',
- 'Operation',
- 'OperationNotSupportedException',
- 'Option',
- 'OptionalDataException',
- 'OptionPaneUI',
- 'ORB',
- 'OutOfMemoryError',
- 'OutputStream',
- 'OutputStreamWriter',
- 'OverlayLayout',
- 'Owner',
- 'Package',
- 'PackedColorModel',
- 'Pageable',
- 'PageAttributes',
- 'PageAttributes.ColorType',
- 'PageAttributes.MediaType',
- 'PageAttributes.OrientationRequestedType',
- 'PageAttributes.OriginType',
- 'PageAttributes.PrintQualityType',
- 'PageFormat',
- 'Paint',
- 'PaintContext',
- 'PaintEvent',
- 'Panel',
- 'PanelUI',
- 'Paper',
- 'ParagraphView',
- 'ParagraphView',
- 'ParameterBlock',
- 'ParameterDescriptor',
- 'ParseException',
- 'ParsePosition',
- 'Parser',
- 'ParserDelegator',
- 'PartialResultException',
- 'PasswordAuthentication',
- 'PasswordView',
- 'Patch',
- 'PathIterator',
- 'Permission',
- 'Permission',
- 'PermissionCollection',
- 'Permissions',
- 'PERSIST_STORE',
- 'PhantomReference',
- 'PipedInputStream',
- 'PipedOutputStream',
- 'PipedReader',
- 'PipedWriter',
- 'PixelGrabber',
- 'PixelInterleavedSampleModel',
- 'PKCS8EncodedKeySpec',
- 'PlainDocument',
- 'PlainView',
- 'Point',
- 'Point2D',
- 'Point2D.Double',
- 'Point2D.Float',
- 'Policy',
- 'Policy',
- 'PolicyError',
- 'PolicyHelper',
- 'PolicyHolder',
- 'PolicyListHelper',
- 'PolicyListHolder',
- 'PolicyOperations', 'PolicyTypeHelper',
- 'Polygon',
- 'PopupMenu',
- 'PopupMenuEvent',
- 'PopupMenuListener',
- 'PopupMenuUI',
- 'Port',
- 'Port.Info',
- 'PortableRemoteObject',
- 'PortableRemoteObjectDelegate',
- 'Position',
- 'Position.Bias',
- 'PreparedStatement',
- 'Principal',
- 'Principal',
- 'PrincipalHolder',
- 'Printable',
- 'PrinterAbortException',
- 'PrinterException',
- 'PrinterGraphics',
- 'PrinterIOException',
- 'PrinterJob',
- 'PrintGraphics',
- 'PrintJob',
- 'PrintStream',
- 'PrintWriter',
- 'PRIVATE_MEMBER',
- 'PrivateKey',
- 'PrivilegedAction',
- 'PrivilegedActionException',
- 'PrivilegedExceptionAction',
- 'Process',
- 'ProfileDataException',
- 'ProgressBarUI',
- 'ProgressMonitor',
- 'ProgressMonitorInputStream',
- 'Properties',
- 'PropertyChangeEvent',
- 'PropertyChangeListener',
- 'PropertyChangeSupport',
- 'PropertyDescriptor',
- 'PropertyEditor',
- 'PropertyEditorManager',
- 'PropertyEditorSupport',
- 'PropertyPermission',
- 'PropertyResourceBundle',
- 'PropertyVetoException',
- 'ProtectionDomain',
- 'ProtocolException',
- 'Provider',
- 'ProviderException',
- 'Proxy',
- 'PUBLIC_MEMBER',
- 'PublicKey',
- 'PushbackInputStream',
- 'PushbackReader',
- 'QuadCurve2D',
- 'QuadCurve2D.Double',
- 'QuadCurve2D.Float',
- 'Random',
- 'RandomAccessFile', 'Raster', 'RasterFormatException', 'RasterOp',
- 'Reader', 'Receiver', 'Rectangle', 'Rectangle2D', 'Rectangle2D.Double',
- 'Rectangle2D.Float', 'RectangularShape', 'Ref', 'RefAddr', 'Reference',
- 'Referenceable', 'ReferenceQueue', 'ReferralException',
- 'ReflectPermission', 'Registry', 'RegistryHandler', 'RemarshalException',
- 'Remote', 'RemoteCall', 'RemoteException', 'RemoteObject', 'RemoteRef',
- 'RemoteServer',
- 'RemoteStub',
- 'RenderableImage',
- 'RenderableImageOp',
- 'RenderableImageProducer',
- 'RenderContext',
- 'RenderedImage',
- 'RenderedImageFactory',
- 'Renderer',
- 'RenderingHints',
- 'RenderingHints.Key',
- 'RepaintManager',
- 'ReplicateScaleFilter',
- 'Repository',
- 'RepositoryIdHelper',
- 'Request',
- 'RescaleOp',
- 'Resolver',
- 'ResolveResult',
- 'ResourceBundle',
- 'ResponseHandler',
- 'ResultSet',
- 'ResultSetMetaData',
- 'ReverbType',
- 'RGBImageFilter',
- 'RMIClassLoader',
- 'RMIClientSocketFactory',
- 'RMIFailureHandler',
- 'RMISecurityException',
- 'RMISecurityManager',
- 'RMIServerSocketFactory',
- 'RMISocketFactory',
- 'Robot',
- 'RootPaneContainer',
- 'RootPaneUI',
- 'RoundRectangle2D',
- 'RoundRectangle2D.Double',
- 'RoundRectangle2D.Float',
- 'RowMapper',
- 'RSAKey',
- 'RSAKeyGenParameterSpec',
- 'RSAPrivateCrtKey',
- 'RSAPrivateCrtKeySpec',
- 'RSAPrivateKey',
- 'RSAPrivateKeySpec',
- 'RSAPublicKey',
- 'RSAPublicKeySpec',
- 'RTFEditorKit',
- 'RuleBasedCollator',
- 'Runnable',
- 'Runtime',
- 'RunTime',
- 'RuntimeException',
- 'RunTimeOperations',
- 'RuntimePermission',
- 'SampleModel',
- 'SchemaViolationException',
- 'Scrollable',
- 'Scrollbar',
- 'ScrollBarUI',
- 'ScrollPane',
- 'ScrollPaneConstants',
- 'ScrollPaneLayout',
- 'ScrollPaneLayout.UIResource',
- 'ScrollPaneUI',
- 'SearchControls',
- 'SearchResult',
- 'SecureClassLoader',
- 'SecureRandom',
- 'SecureRandomSpi',
- 'Security',
- 'SecurityException',
- 'SecurityManager',
- 'SecurityPermission',
- 'Segment',
- 'SeparatorUI',
- 'Sequence',
- 'SequenceInputStream',
- 'Sequencer',
- 'Sequencer.SyncMode',
- 'Serializable',
- 'SerializablePermission',
- 'ServantObject',
- 'ServerCloneException',
- 'ServerError', 'ServerException',
- 'ServerNotActiveException',
- 'ServerRef',
- 'ServerRequest',
- 'ServerRuntimeException',
- 'ServerSocket',
- 'ServiceDetail',
- 'ServiceDetailHelper',
- 'ServiceInformation',
- 'ServiceInformationHelper',
- 'ServiceInformationHolder',
- 'ServiceUnavailableException',
- 'Set',
- 'SetOverrideType',
- 'SetOverrideTypeHelper',
- 'Shape',
- 'ShapeGraphicAttribute',
- 'Short',
- 'ShortHolder',
- 'ShortLookupTable',
- 'ShortMessage',
- 'ShortSeqHelper',
- 'ShortSeqHolder',
- 'Signature',
- 'SignatureException',
- 'SignatureSpi',
- 'SignedObject',
- 'Signer',
- 'SimpleAttributeSet',
- 'SimpleBeanInfo',
- 'SimpleDateFormat',
- 'SimpleTimeZone',
- 'SinglePixelPackedSampleModel',
- 'SingleSelectionModel',
- 'SizeLimitExceededException',
- 'SizeRequirements',
- 'SizeSequence',
- 'Skeleton',
- 'SkeletonMismatchException',
- 'SkeletonNotFoundException',
- 'SliderUI',
- 'Socket',
- 'SocketException',
- 'SocketImpl',
- 'SocketImplFactory',
- 'SocketOptions',
- 'SocketPermission',
- 'SocketSecurityException',
- 'SoftBevelBorder',
- 'SoftReference',
- 'SortedMap',
- 'SortedSet',
- 'Soundbank',
- 'SoundbankReader',
- 'SoundbankResource',
- 'SourceDataLine',
- 'SplitPaneUI',
- 'SQLData',
- 'SQLException',
- 'SQLInput',
- 'SQLOutput', 'SQLPermission',
- 'SQLWarning',
- 'Stack',
- 'StackOverflowError',
- 'StateEdit',
- 'StateEditable',
- 'StateFactory',
- 'Statement',
- 'Streamable',
- 'StreamableValue',
- 'StreamCorruptedException',
- 'StreamTokenizer',
- 'StrictMath',
- 'String',
- 'StringBuffer',
- 'StringBufferInputStream',
- 'StringCharacterIterator',
- 'StringContent',
- 'StringHolder',
- 'StringIndexOutOfBoundsException',
- 'StringReader',
- 'StringRefAddr',
- 'StringSelection',
- 'StringTokenizer',
- 'StringValueHelper',
- 'StringWriter',
- 'Stroke',
- 'Struct',
- 'StructMember',
- 'StructMemberHelper',
- 'Stub',
- 'StubDelegate',
- 'StubNotFoundException',
- 'Style',
- 'StyleConstants',
- 'StyleConstants.CharacterConstants',
- 'StyleConstants.ColorConstants',
- 'StyleConstants.FontConstants',
- 'StyleConstants.ParagraphConstants',
- 'StyleContext',
- 'StyledDocument',
- 'StyledEditorKit',
- 'StyledEditorKit.AlignmentAction',
- 'StyledEditorKit.BoldAction',
- 'StyledEditorKit.FontFamilyAction',
- 'StyledEditorKit.FontSizeAction',
- 'StyledEditorKit.ForegroundAction',
- 'StyledEditorKit.ItalicAction',
- 'StyledEditorKit.StyledTextAction',
- 'StyledEditorKit.UnderlineAction',
- 'StyleSheet',
- 'StyleSheet.BoxPainter',
- 'StyleSheet.ListPainter',
- 'SwingConstants',
- 'SwingPropertyChangeSupport',
- 'SwingUtilities',
- 'SyncFailedException',
- 'Synthesizer',
- 'SysexMessage',
- 'System',
- 'SystemColor', 'SystemException',
- 'SystemFlavorMap',
- 'TabableView',
- 'TabbedPaneUI',
- 'TabExpander',
- 'TableCellEditor',
- 'TableCellRenderer',
- 'TableColumn',
- 'TableColumnModel',
- 'TableColumnModelEvent',
- 'TableColumnModelListener',
- 'TableHeaderUI',
- 'TableModel',
- 'TableModelEvent',
- 'TableModelListener',
- 'TableUI',
- 'TableView',
- 'TabSet',
- 'TabStop',
- 'TagElement',
- 'TargetDataLine',
- 'TCKind',
- 'TextAction',
- 'TextArea',
- 'TextAttribute',
- 'TextComponent',
- 'TextEvent',
- 'TextField',
- 'TextHitInfo',
- 'TextLayout',
- 'TextLayout.CaretPolicy',
- 'TextListener',
- 'TextMeasurer',
- 'TextUI',
- 'TexturePaint',
- 'Thread',
- 'ThreadDeath',
- 'ThreadGroup',
- 'ThreadLocal',
- 'Throwable',
- 'Tie',
- 'TileObserver',
- 'Time',
- 'TimeLimitExceededException',
- 'Timer',
- 'Timer',
- 'TimerTask',
- 'Timestamp',
- 'TimeZone',
- 'TitledBorder',
- 'ToolBarUI',
- 'Toolkit',
- 'ToolTipManager',
- 'ToolTipUI',
- 'TooManyListenersException',
- 'Track',
- 'TRANSACTION_REQUIRED',
- 'TRANSACTION_ROLLEDBACK',
- 'TransactionRequiredException',
- 'TransactionRolledbackException',
- 'Transferable',
- 'TransformAttribute',
- 'TRANSIENT',
- 'Transmitter',
- 'Transparency',
- 'TreeCellEditor',
- 'TreeCellRenderer',
- 'TreeExpansionEvent',
- 'TreeExpansionListener',
- 'TreeMap',
- 'TreeModel',
- 'TreeModelEvent',
- 'TreeModelListener',
- 'TreeNode',
- 'TreePath',
- 'TreeSelectionEvent',
- 'TreeSelectionListener',
- 'TreeSelectionModel',
- 'TreeSet',
- 'TreeUI',
- 'TreeWillExpandListener',
- 'TypeCode',
- 'TypeCodeHolder',
- 'TypeMismatch',
- 'Types',
- 'UID',
- 'UIDefaults',
- 'UIDefaults.ActiveValue',
- 'UIDefaults.LazyInputMap',
- 'UIDefaults.LazyValue',
- 'UIDefaults.ProxyLazyValue', 'UIManager',
- 'UIManager.LookAndFeelInfo',
- 'UIResource',
- 'ULongLongSeqHelper',
- 'ULongLongSeqHolder',
- 'ULongSeqHelper',
- 'ULongSeqHolder',
- 'UndeclaredThrowableException',
- 'UndoableEdit',
- 'UndoableEditEvent',
- 'UndoableEditListener',
- 'UndoableEditSupport',
- 'UndoManager',
- 'UnexpectedException',
- 'UnicastRemoteObject',
- 'UnionMember',
- 'UnionMemberHelper',
- 'UNKNOWN',
- 'UnknownError',
- 'UnknownException',
- 'UnknownGroupException',
- 'UnknownHostException',
- 'UnknownHostException',
- 'UnknownObjectException',
- 'UnknownServiceException',
- 'UnknownUserException',
- 'UnmarshalException',
- 'UnrecoverableKeyException',
- 'Unreferenced',
- 'UnresolvedPermission',
- 'UnsatisfiedLinkError',
- 'UnsolicitedNotification',
- 'UnsolicitedNotificationEvent',
- 'UnsolicitedNotificationListener',
- 'UNSUPPORTED_POLICY',
- 'UNSUPPORTED_POLICY_VALUE',
- 'UnsupportedAudioFileException',
- 'UnsupportedClassVersionError',
- 'UnsupportedEncodingException',
- 'UnsupportedFlavorException',
- 'UnsupportedLookAndFeelException',
- 'UnsupportedOperationException',
- 'URL',
- 'URLClassLoader',
- 'URLConnection',
- 'URLDecoder',
- 'URLEncoder',
- 'URLStreamHandler',
- 'URLStreamHandlerFactory',
- 'UserException',
- 'UShortSeqHelper',
- 'UShortSeqHolder',
- 'UTFDataFormatException',
- 'Util',
- 'UtilDelegate',
- 'Utilities',
- 'ValueBase',
- 'ValueBaseHelper',
- 'ValueBaseHolder',
- 'ValueFactory',
- 'ValueHandler',
- 'ValueMember',
- 'ValueMemberHelper',
- 'VariableHeightLayoutCache',
- 'Vector',
- 'VerifyError',
- 'VersionSpecHelper',
- 'VetoableChangeListener',
- 'VetoableChangeSupport',
- 'View',
- 'ViewFactory',
- 'ViewportLayout',
- 'ViewportUI',
- 'VirtualMachineError',
- 'Visibility',
- 'VisibilityHelper',
- 'VM_ABSTRACT',
- 'VM_CUSTOM',
- 'VM_NONE',
- 'VM_TRUNCATABLE',
- 'VMID',
- 'VoiceStatus',
- 'Void',
- 'WCharSeqHelper',
- 'WCharSeqHolder',
- 'WeakHashMap',
- 'WeakReference',
- 'Window',
- 'WindowAdapter',
- 'WindowConstants',
- 'WindowEvent', 'WindowListener',
- 'WrappedPlainView',
- 'WritableRaster',
- 'WritableRenderedImage',
- 'WriteAbortedException',
- 'Writer',
- 'WrongTransaction',
- 'WStringValueHelper',
- 'X509Certificate',
- 'X509CRL',
- 'X509CRLEntry',
- 'X509EncodedKeySpec',
- 'X509Extension',
- 'ZipEntry',
- 'ZipException',
- 'ZipFile',
- 'ZipInputStream',
- 'ZipOutputStream',
- 'ZoneView',
- '_BindingIteratorImplBase',
- '_BindingIteratorStub',
- '_IDLTypeStub',
- '_NamingContextImplBase',
- '_NamingContextStub',
- '_PolicyStub',
- '_Remote_Stub '
- ),
- 4 => array(
- 'void', 'double', 'int', 'boolean', 'byte', 'short', 'long', 'char', 'float'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => true,
- 4 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #aaaadd; font-weight: bold;',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1=> 'color: #808080; font-style: italic;',
- 2=> 'color: #a1a100;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.google.com/search?hl=en&q=allinurl%3A{FNAME}+java.sun.com&btnI=I%27m%20Feeling%20Lucky',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * java.php
+ * --------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/10
+ *
+ * Java language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.4)
+ * - Added instanceof keyword
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * 2004/08/05 (1.0.2)
+ * - Added URL support
+ * - Added keyword "this", as bugs in GeSHi class ironed out
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * - Added extra missed keywords
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Compact the class names like the first few have been
+ * and eliminate repeats
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Java',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => 'import'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'for', 'foreach', 'if', 'else', 'while', 'do',
+ 'switch', 'case'
+ ),
+ 2 => array(
+ 'null', 'return', 'false', 'final', 'true', 'public',
+ 'private', 'protected', 'extends', 'break', 'class',
+ 'new', 'try', 'catch', 'throws', 'finally', 'implements',
+ 'interface', 'throw', 'native', 'synchronized', 'this',
+ 'abstract', 'transient', 'instanceof', 'assert', 'continue',
+ 'default', 'enum', 'package', 'static', 'strictfp', 'super',
+ 'volatile', 'const', 'goto'
+ ),
+ 3 => array(
+ 'AbstractAction', 'AbstractBorder', 'AbstractButton', 'AbstractCellEditor',
+ 'AbstractCollection', 'AbstractColorChooserPanel', 'AbstractDocument',
+ 'AbstractDocument.AttributeContext', 'AbstractDocument.Content',
+ 'AbstractDocument.ElementEdit', 'AbstractLayoutCache',
+ 'AbstractLayoutCache.NodeDimensions', 'AbstractList', 'AbstractListModel',
+ 'AbstractMap', 'AbstractMethodError', 'AbstractSequentialList',
+ 'AbstractSet', 'AbstractTableModel', 'AbstractUndoableEdit', 'AbstractWriter',
+ 'AccessControlContext', 'AccessControlException', 'AccessController',
+ 'AccessException', 'Accessible', 'AccessibleAction', 'AccessibleBundle',
+ 'AccessibleComponent', 'AccessibleContext', 'AccessibleHyperlink',
+ 'AccessibleHypertext', 'AccessibleIcon', 'AccessibleObject',
+ 'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle',
+ 'AccessibleRole', 'AccessibleSelection', 'AccessibleState',
+ 'AccessibleStateSet', 'AccessibleTable', 'AccessibleTableModelChange',
+ 'AccessibleText', 'AccessibleValue', 'Acl', 'AclEntry', 'AclNotFoundException',
+ 'Action', 'ActionEvent', 'ActionListener', 'ActionMap', 'ActionMapUIResource',
+ 'Activatable', 'ActivateFailedException', 'ActivationDesc',
+ 'ActivationException', 'ActivationGroup', 'ActivationGroupDesc',
+ 'ActivationGroupDesc.CommandEnvironment', 'ActivationGroupID', 'ActivationID',
+ 'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem',
+ 'Activator', 'ActiveEvent', 'Adjustable', 'AdjustmentEvent', 'AdjustmentListener',
+ 'Adler32', 'AffineTransform', 'AffineTransformOp', 'AlgorithmParameterGenerator',
+ 'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 'AlgorithmParameterSpec',
+ 'AlgorithmParametersSpi', 'AllPermission', 'AlphaComposite', 'AlreadyBound',
+ 'AlreadyBoundException', 'AlreadyBoundHelper', 'AlreadyBoundHolder',
+ 'AncestorEvent', 'AncestorListener', 'Annotation', 'Any', 'AnyHolder',
+ 'AnySeqHelper', 'AnySeqHolder', 'Applet', 'AppletContext', 'AppletInitializer',
+ 'AppletStub', 'ApplicationException', 'Arc2D', 'Arc2D.Double', 'Arc2D.Float',
+ 'Area', 'AreaAveragingScaleFilter', 'ARG_IN', 'ARG_INOUT', 'ARG_OUT',
+ 'ArithmeticException', 'Array', 'ArrayIndexOutOfBoundsException',
+ 'ArrayList', 'Arrays', 'ArrayStoreException', 'AsyncBoxView',
+ 'Attribute', 'AttributedCharacterIterator', 'AttributedCharacterIterator.Attribute',
+ 'AttributedString', 'AttributeInUseException', 'AttributeList',
+ 'AttributeModificationException', 'Attributes', 'Attributes.Name',
+ 'AttributeSet', 'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute',
+ 'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute',
+ 'AudioClip', 'AudioFileFormat', 'AudioFileFormat.Type', 'AudioFileReader',
+ 'AudioFileWriter', 'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream',
+ 'AudioPermission', 'AudioSystem', 'AuthenticationException',
+ 'AuthenticationNotSupportedException', 'Authenticator', 'Autoscroll',
+ 'AWTError', 'AWTEvent', 'AWTEventListener', 'AWTEventMulticaster',
+ 'AWTException', 'AWTPermission', 'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',
+ 'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 'BAD_POLICY_VALUE', 'BAD_TYPECODE',
+ 'BadKind', 'BadLocationException', 'BandCombineOp', 'BandedSampleModel','BasicArrowButton',
+ 'BasicAttribute', 'BasicAttributes', 'BasicBorders', 'BasicBorders.ButtonBorder',
+ 'BasicBorders.FieldBorder', 'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder',
+ 'BasicBorders.RadioButtonBorder', 'BasicBorders.SplitPaneBorder',
+ 'BasicBorders.ToggleButtonBorder', 'BasicButtonListener', 'BasicButtonUI',
+ 'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor',
+ 'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource',
+ 'BasicComboBoxUI', 'BasicComboPopup', 'BasicDesktopIconUI', 'BasicDesktopPaneUI',
+ 'BasicDirectoryModel', 'BasicEditorPaneUI', 'BasicFileChooserUI',
+ 'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 'BasicInternalFrameTitlePane',
+ 'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 'BasicLookAndFeel',
+ 'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 'BasicOptionPaneUI',
+ 'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 'BasicPasswordFieldUI',
+ 'BasicPermission', 'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',
+ 'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI',
+ 'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI',
+ 'BasicSliderUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 'BasicStroke',
+ 'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI',
+ 'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret',
+ 'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',
+ 'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 'BasicViewportUI',
+ 'BatchUpdateException', 'BeanContext', 'BeanContextChild',
+ 'BeanContextChildComponentProxy', 'BeanContextChildSupport', 'BeanContextContainerProxy',
+ 'BeanContextEvent', 'BeanContextMembershipEvent', 'BeanContextMembershipListener',
+ 'BeanContextProxy', 'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider',
+ 'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent',
+ 'BeanContextServiceRevokedListener', 'BeanContextServices',
+ 'BeanContextServicesListener', 'BeanContextServicesSupport',
+ 'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport',
+ 'BeanContextSupport.BCSIterator', 'BeanDescriptor', 'BeanInfo', 'Beans',
+ 'BevelBorder', 'BigDecimal', 'BigInteger', 'BinaryRefAddr', 'BindException',
+ 'Binding', 'BindingHelper', 'BindingHolder', 'BindingIterator',
+ 'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations',
+ 'BindingListHelper', 'BindingListHolder', 'BindingType', 'BindingTypeHelper',
+ 'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView', 'Book', 'Boolean',
+ 'BooleanControl', 'BooleanControl.Type', 'BooleanHolder', 'BooleanSeqHelper',
+ 'BooleanSeqHolder', 'Border', 'BorderFactory', 'BorderLayout', 'BorderUIResource',
+ 'BorderUIResource.BevelBorderUIResource', 'BorderUIResource.CompoundBorderUIResource',
+ 'BorderUIResource.EmptyBorderUIResource', 'BorderUIResource.EtchedBorderUIResource',
+ 'BorderUIResource.LineBorderUIResource', 'BorderUIResource.MatteBorderUIResource',
+ 'BorderUIResource.TitledBorderUIResource', 'BoundedRangeModel', 'Bounds',
+ 'Box', 'Box.Filler', 'BoxedValueHelper', 'BoxLayout', 'BoxView',
+ 'BreakIterator', 'BufferedImage', 'BufferedImageFilter', 'BufferedImageOp',
+ 'BufferedInputStream', 'BufferedOutputStream', 'BufferedReader', 'BufferedWriter',
+ 'Button', 'ButtonGroup', 'ButtonModel', 'ButtonUI', 'Byte', 'ByteArrayInputStream',
+ 'ByteArrayOutputStream', 'ByteHolder', 'ByteLookupTable', 'Calendar',
+ 'CallableStatement', 'CannotProceed', 'CannotProceedException', 'CannotProceedHelper',
+ 'CannotProceedHolder', 'CannotRedoException', 'CannotUndoException',
+ 'Canvas', 'CardLayout', 'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',
+ 'CellEditorListener', 'CellRendererPane', 'Certificate', 'Certificate.CertificateRep',
+ 'CertificateEncodingException', 'CertificateException', 'CertificateExpiredException',
+ 'CertificateFactory', 'CertificateFactorySpi', 'CertificateNotYetValidException',
+ 'CertificateParsingException', 'ChangedCharSetException', 'ChangeEvent',
+ 'ChangeListener', 'Character', 'Character.Subset', 'Character.UnicodeBlock',
+ 'CharacterIterator', 'CharArrayReader', 'CharArrayWriter', 'CharConversionException',
+ 'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 'Checkbox', 'CheckboxGroup',
+ 'CheckboxMenuItem', 'CheckedInputStream', 'CheckedOutputStream', 'Checksum',
+ 'Choice', 'ChoiceFormat', 'Class', 'ClassCastException', 'ClassCircularityError',
+ 'ClassDesc', 'ClassFormatError', 'ClassLoader', 'ClassNotFoundException',
+ 'Clip', 'Clipboard', 'ClipboardOwner', 'Clob', 'Cloneable', 'CloneNotSupportedException',
+ 'CMMException', 'CodeSource', 'CollationElementIterator', 'CollationKey',
+ 'Collator', 'Collection', 'Collections', 'Color', 'ColorChooserComponentFactory',
+ 'ColorChooserUI', 'ColorConvertOp', 'ColorModel', 'ColorSelectionModel',
+ 'ColorSpace', 'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel', 'ComboBoxUI',
+ 'ComboPopup', 'COMM_FAILURE', 'CommunicationException', 'Comparable',
+ 'Comparator', 'Compiler', 'CompletionStatus', 'CompletionStatusHelper',
+ 'Component', 'ComponentAdapter', 'ComponentColorModel', 'ComponentEvent',
+ 'ComponentInputMap', 'ComponentInputMapUIResource', 'ComponentListener',
+ 'ComponentOrientation', 'ComponentSampleModel', 'ComponentUI', 'ComponentView',
+ 'Composite', 'CompositeContext', 'CompositeName','CompositeView', 'CompoundBorder',
+ 'CompoundControl', 'CompoundControl.Type', 'CompoundEdit', 'CompoundName',
+ 'ConcurrentModificationException', 'ConfigurationException', 'ConnectException',
+ 'ConnectException', 'ConnectIOException', 'Connection', 'Constructor',
+ 'Container', 'ContainerAdapter', 'ContainerEvent', 'ContainerListener',
+ 'ContentHandler', 'ContentHandlerFactory', 'ContentModel', 'Context', 'ContextList',
+ 'ContextNotEmptyException', 'ContextualRenderedImageFactory', 'Control',
+ 'Control.Type', 'ControlFactory', 'ControllerEventListener', 'ConvolveOp',
+ 'CRC32', 'CRL', 'CRLException', 'CropImageFilter', 'CSS', 'CSS.Attribute',
+ 'CTX_RESTRICT_SCOPE', 'CubicCurve2D', 'CubicCurve2D.Double', 'CubicCurve2D.Float',
+ 'Current', 'CurrentHelper', 'CurrentHolder', 'CurrentOperations', 'Cursor',
+ 'Customizer', 'CustomMarshal', 'CustomValue', 'DATA_CONVERSION', 'DatabaseMetaData',
+ 'DataBuffer', 'DataBufferByte', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort',
+ 'DataFlavor', 'DataFormatException', 'DatagramPacket', 'DatagramSocket',
+ 'DatagramSocketImpl', 'DatagramSocketImplFactory', 'DataInput', 'DataInputStream',
+ 'DataLine', 'DataLine.Info', 'DataOutput', 'DataOutputStream', 'DataOutputStream',
+ 'DataTruncation', 'Date', 'DateFormat', 'DateFormatSymbols', 'DebugGraphics',
+ 'DecimalFormat', 'DecimalFormatSymbols', 'DefaultBoundedRangeModel',
+ 'DefaultButtonModel', 'DefaultCaret', 'DefaultCellEditor', 'DefaultColorSelectionModel',
+ 'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultEditorKit',
+ 'DefaultEditorKit.BeepAction', 'DefaultEditorKit.CopyAction',
+ 'DefaultEditorKit.CutAction', 'DefaultEditorKit.DefaultKeyTypedAction',
+ 'DefaultEditorKit.InsertBreakAction', 'DefaultEditorKit.InsertContentAction',
+ 'DefaultEditorKit.InsertTabAction', 'DefaultEditorKit.PasteAction,',
+ 'DefaultFocusManager', 'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter',
+ 'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 'DefaultListModel',
+ 'DefaultListSelectionModel', 'DefaultMenuLayout', 'DefaultMetalTheme',
+ 'DefaultMutableTreeNode', 'DefaultSingleSelectionModel', 'DefaultStyledDocument',
+ 'DefaultStyledDocument.AttributeUndoableEdit', 'DefaultStyledDocument.ElementSpec',
+ 'DefaultTableCellRenderer', 'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel',
+ 'DefaultTableModel', 'DefaultTextUI', 'DefaultTreeCellEditor', 'DefaultTreeCellRenderer',
+ 'DefaultTreeModel', 'DefaultTreeSelectionModel', 'DefinitionKind', 'DefinitionKindHelper',
+ 'Deflater', 'DeflaterOutputStream', 'Delegate', 'DesignMode', 'DesktopIconUI',
+ 'DesktopManager', 'DesktopPaneUI', 'DGC', 'Dialog', 'Dictionary', 'DigestException',
+ 'DigestInputStream', 'DigestOutputStream', 'Dimension', 'Dimension2D',
+ 'DimensionUIResource', 'DirContext', 'DirectColorModel', 'DirectoryManager',
+ 'DirObjectFactory', 'DirStateFactory', 'DirStateFactory.Result', 'DnDConstants',
+ 'Document', 'DocumentEvent', 'DocumentEvent.ElementChange', 'DocumentEvent.EventType',
+ 'DocumentListener', 'DocumentParser', 'DomainCombiner', 'DomainManager',
+ 'DomainManagerOperations', 'Double', 'DoubleHolder', 'DoubleSeqHelper',
+ 'DoubleSeqHolder', 'DragGestureEvent', 'DragGestureListener', 'DragGestureRecognizer',
+ 'DragSource', 'DragSourceContext', 'DragSourceDragEvent', 'DragSourceDropEvent',
+ 'DragSourceEvent', 'DragSourceListener', 'Driver', 'DriverManager',
+ 'DriverPropertyInfo', 'DropTarget', 'DropTarget.DropTargetAutoScroller',
+ 'DropTargetContext', 'DropTargetDragEvent', 'DropTargetDropEvent',
+ 'DropTargetEvent', 'DropTargetListener', 'DSAKey', 'DSAKeyPairGenerator',
+ 'DSAParameterSpec', 'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',
+ 'DSAPublicKey', 'DSAPublicKeySpec', 'DTD', 'DTDConstants', 'DynamicImplementation',
+ 'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 'DynStruct',
+ 'DynUnion', 'DynValue', 'EditorKit', 'Element', 'ElementIterator', 'Ellipse2D',
+ 'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder', 'EmptyStackException',
+ 'EncodedKeySpec', 'Entity', 'EnumControl', 'EnumControl.Type','Enumeration',
+ 'Environment', 'EOFException', 'Error', 'EtchedBorder', 'Event', 'EventContext',
+ 'EventDirContext', 'EventListener', 'EventListenerList', 'EventObject', 'EventQueue',
+ 'EventSetDescriptor', 'Exception', 'ExceptionInInitializerError', 'ExceptionList',
+ 'ExpandVetoException', 'ExportException', 'ExtendedRequest', 'ExtendedResponse',
+ 'Externalizable', 'FeatureDescriptor', 'Field', 'FieldNameHelper',
+ 'FieldPosition', 'FieldView', 'File', 'FileChooserUI', 'FileDescriptor',
+ 'FileDialog', 'FileFilter', 'FileFilter', 'FileInputStream', 'FilenameFilter',
+ 'FileNameMap', 'FileNotFoundException', 'FileOutputStream', 'FilePermission',
+ 'FileReader', 'FileSystemView', 'FileView', 'FileWriter', 'FilteredImageSource',
+ 'FilterInputStream', 'FilterOutputStream', 'FilterReader', 'FilterWriter',
+ 'FixedHeightLayoutCache', 'FixedHolder', 'FlatteningPathIterator', 'FlavorMap',
+ 'Float', 'FloatControl', 'FloatControl.Type', 'FloatHolder', 'FloatSeqHelper',
+ 'FloatSeqHolder', 'FlowLayout', 'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',
+ 'FocusEvent', 'FocusListener', 'FocusManager', 'Font', 'FontFormatException',
+ 'FontMetrics', 'FontRenderContext', 'FontUIResource', 'Format', 'FormatConversionProvider',
+ 'FormView', 'Frame', 'FREE_MEM', 'GapContent', 'GeneralPath', 'GeneralSecurityException',
+ 'GlyphJustificationInfo', 'GlyphMetrics', 'GlyphVector', 'GlyphView', 'GlyphView.GlyphPainter',
+ 'GradientPaint', 'GraphicAttribute', 'Graphics', 'Graphics2D', 'GraphicsConfigTemplate',
+ 'GraphicsConfiguration', 'GraphicsDevice', 'GraphicsEnvironment', 'GrayFilter',
+ 'GregorianCalendar', 'GridBagConstraints', 'GridBagLayout', 'GridLayout', 'Group', 'Guard',
+ 'GuardedObject', 'GZIPInputStream', 'GZIPOutputStream',
+ 'HasControls',
+ 'HashMap',
+ 'HashSet',
+ 'Hashtable',
+ 'HierarchyBoundsAdapter',
+ 'HierarchyBoundsListener',
+ 'HierarchyEvent',
+ 'HierarchyListener',
+ 'Highlighter',
+ 'Highlighter.Highlight',
+ 'Highlighter.HighlightPainter',
+ 'HTML',
+ 'HTML.Attribute',
+ 'HTML.Tag',
+ 'HTML.UnknownTag',
+ 'HTMLDocument',
+ 'HTMLDocument.Iterator',
+ 'HTMLEditorKit',
+ 'HTMLEditorKit.HTMLFactory',
+ 'HTMLEditorKit.HTMLTextAction',
+ 'HTMLEditorKit.InsertHTMLTextAction',
+ 'HTMLEditorKit.LinkController',
+ 'HTMLEditorKit.Parser',
+ 'HTMLEditorKit.ParserCallback',
+ 'HTMLFrameHyperlinkEvent',
+ 'HTMLWriter',
+ 'HttpURLConnection',
+ 'HyperlinkEvent',
+ 'HyperlinkEvent.EventType',
+ 'HyperlinkListener',
+ 'ICC_ColorSpace',
+ 'ICC_Profile',
+ 'ICC_ProfileGray',
+ 'ICC_ProfileRGB',
+ 'Icon',
+ 'IconUIResource',
+ 'IconView',
+ 'IdentifierHelper',
+ 'Identity',
+ 'IdentityScope',
+ 'IDLEntity',
+ 'IDLType',
+ 'IDLTypeHelper', 'IDLTypeOperations',
+ 'IllegalAccessError',
+ 'IllegalAccessException',
+ 'IllegalArgumentException',
+ 'IllegalComponentStateException',
+ 'IllegalMonitorStateException',
+ 'IllegalPathStateException',
+ 'IllegalStateException',
+ 'IllegalThreadStateException',
+ 'Image',
+ 'ImageConsumer',
+ 'ImageFilter',
+ 'ImageGraphicAttribute',
+ 'ImageIcon',
+ 'ImageObserver',
+ 'ImageProducer',
+ 'ImagingOpException',
+ 'IMP_LIMIT',
+ 'IncompatibleClassChangeError',
+ 'InconsistentTypeCode',
+ 'IndexColorModel',
+ 'IndexedPropertyDescriptor',
+ 'IndexOutOfBoundsException',
+ 'IndirectionException',
+ 'InetAddress',
+ 'Inflater',
+ 'InflaterInputStream',
+ 'InheritableThreadLocal',
+ 'InitialContext',
+ 'InitialContextFactory',
+ 'InitialContextFactoryBuilder',
+ 'InitialDirContext',
+ 'INITIALIZE',
+ 'Initializer',
+ 'InitialLdapContext',
+ 'InlineView',
+ 'InputContext',
+ 'InputEvent',
+ 'InputMap',
+ 'InputMapUIResource',
+ 'InputMethod',
+ 'InputMethodContext',
+ 'InputMethodDescriptor',
+ 'InputMethodEvent',
+ 'InputMethodHighlight',
+ 'InputMethodListener',
+ 'InputMethodRequests',
+ 'InputStream',
+ 'InputStream',
+ 'InputStream',
+ 'InputStreamReader',
+ 'InputSubset',
+ 'InputVerifier',
+ 'Insets',
+ 'InsetsUIResource',
+ 'InstantiationError',
+ 'InstantiationException',
+ 'Instrument',
+ 'InsufficientResourcesException',
+ 'Integer',
+ 'INTERNAL',
+ 'InternalError', 'InternalFrameAdapter',
+ 'InternalFrameEvent',
+ 'InternalFrameListener',
+ 'InternalFrameUI',
+ 'InterruptedException',
+ 'InterruptedIOException',
+ 'InterruptedNamingException',
+ 'INTF_REPOS',
+ 'IntHolder',
+ 'IntrospectionException',
+ 'Introspector',
+ 'INV_FLAG',
+ 'INV_IDENT',
+ 'INV_OBJREF',
+ 'INV_POLICY',
+ 'Invalid',
+ 'INVALID_TRANSACTION',
+ 'InvalidAlgorithmParameterException',
+ 'InvalidAttributeIdentifierException',
+ 'InvalidAttributesException',
+ 'InvalidAttributeValueException',
+ 'InvalidClassException',
+ 'InvalidDnDOperationException',
+ 'InvalidKeyException',
+ 'InvalidKeySpecException',
+ 'InvalidMidiDataException',
+ 'InvalidName',
+ 'InvalidName',
+ 'InvalidNameException',
+ 'InvalidNameHelper',
+ 'InvalidNameHolder',
+ 'InvalidObjectException',
+ 'InvalidParameterException',
+ 'InvalidParameterSpecException',
+ 'InvalidSearchControlsException',
+ 'InvalidSearchFilterException',
+ 'InvalidSeq',
+ 'InvalidTransactionException',
+ 'InvalidValue',
+ 'InvocationEvent',
+ 'InvocationHandler',
+ 'InvocationTargetException',
+ 'InvokeHandler',
+ 'IOException',
+ 'IRObject',
+ 'IRObjectOperations', 'IstringHelper', 'ItemEvent', 'ItemListener',
+ 'ItemSelectable', 'Iterator', 'JApplet', 'JarEntry', 'JarException',
+ 'JarFile', 'JarInputStream', 'JarOutputStream', 'JarURLConnection',
+ 'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser',
+ 'JComboBox',
+ 'JComboBox.KeySelectionManager',
+ 'JComponent',
+ 'JDesktopPane',
+ 'JDialog',
+ 'JEditorPane',
+ 'JFileChooser',
+ 'JFrame',
+ 'JInternalFrame',
+ 'JInternalFrame.JDesktopIcon',
+ 'JLabel',
+ 'JLayeredPane',
+ 'JList',
+ 'JMenu',
+ 'JMenuBar',
+ 'JMenuItem',
+ 'JobAttributes',
+ 'JobAttributes.DefaultSelectionType',
+ 'JobAttributes.DestinationType',
+ 'JobAttributes.DialogType',
+ 'JobAttributes.MultipleDocumentHandlingType',
+ 'JobAttributes.SidesType',
+ 'JOptionPane',
+ 'JPanel',
+ 'JPasswordField',
+ 'JPopupMenu',
+ 'JPopupMenu.Separator',
+ 'JProgressBar',
+ 'JRadioButton',
+ 'JRadioButtonMenuItem',
+ 'JRootPane',
+ 'JScrollBar',
+ 'JScrollPane',
+ 'JSeparator',
+ 'JSlider',
+ 'JSplitPane',
+ 'JTabbedPane',
+ 'JTable',
+ 'JTableHeader',
+ 'JTextArea',
+ 'JTextComponent',
+ 'JTextComponent.KeyBinding', 'JTextField',
+ 'JTextPane',
+ 'JToggleButton',
+ 'JToggleButton.ToggleButtonModel',
+ 'JToolBar',
+ 'JToolBar.Separator',
+ 'JToolTip',
+ 'JTree',
+ 'JTree.DynamicUtilTreeNode',
+ 'JTree.EmptySelectionModel',
+ 'JViewport',
+ 'JWindow',
+ 'Kernel',
+ 'Key',
+ 'KeyAdapter',
+ 'KeyEvent',
+ 'KeyException',
+ 'KeyFactory',
+ 'KeyFactorySpi',
+ 'KeyListener',
+ 'KeyManagementException',
+ 'Keymap',
+ 'KeyPair',
+ 'KeyPairGenerator',
+ 'KeyPairGeneratorSpi',
+ 'KeySpec',
+ 'KeyStore',
+ 'KeyStoreException',
+ 'KeyStoreSpi',
+ 'KeyStroke',
+ 'Label',
+ 'LabelUI',
+ 'LabelView',
+ 'LastOwnerException',
+ 'LayeredHighlighter',
+ 'LayeredHighlighter.LayerPainter',
+ 'LayoutManager',
+ 'LayoutManager2',
+ 'LayoutQueue',
+ 'LdapContext',
+ 'LdapReferralException',
+ 'Lease',
+ 'LimitExceededException',
+ 'Line',
+ 'Line.Info',
+ 'Line2D',
+ 'Line2D.Double',
+ 'Line2D.Float',
+ 'LineBorder',
+ 'LineBreakMeasurer',
+ 'LineEvent',
+ 'LineEvent.Type',
+ 'LineListener',
+ 'LineMetrics',
+ 'LineNumberInputStream',
+ 'LineNumberReader',
+ 'LineUnavailableException',
+ 'LinkageError',
+ 'LinkedList',
+ 'LinkException',
+ 'LinkLoopException',
+ 'LinkRef',
+ 'List',
+ 'List',
+ 'ListCellRenderer',
+ 'ListDataEvent',
+ 'ListDataListener',
+ 'ListIterator',
+ 'ListModel',
+ 'ListResourceBundle',
+ 'ListSelectionEvent',
+ 'ListSelectionListener',
+ 'ListSelectionModel',
+ 'ListUI',
+ 'ListView',
+ 'LoaderHandler',
+ 'Locale',
+ 'LocateRegistry',
+ 'LogStream',
+ 'Long',
+ 'LongHolder',
+ 'LongLongSeqHelper',
+ 'LongLongSeqHolder',
+ 'LongSeqHelper',
+ 'LongSeqHolder',
+ 'LookAndFeel',
+ 'LookupOp',
+ 'LookupTable',
+ 'MalformedLinkException',
+ 'MalformedURLException',
+ 'Manifest', 'Map',
+ 'Map.Entry',
+ 'MARSHAL',
+ 'MarshalException',
+ 'MarshalledObject',
+ 'Math',
+ 'MatteBorder',
+ 'MediaTracker',
+ 'Member',
+ 'MemoryImageSource',
+ 'Menu',
+ 'MenuBar',
+ 'MenuBarUI',
+ 'MenuComponent',
+ 'MenuContainer',
+ 'MenuDragMouseEvent',
+ 'MenuDragMouseListener',
+ 'MenuElement',
+ 'MenuEvent',
+ 'MenuItem',
+ 'MenuItemUI',
+ 'MenuKeyEvent',
+ 'MenuKeyListener',
+ 'MenuListener',
+ 'MenuSelectionManager',
+ 'MenuShortcut',
+ 'MessageDigest',
+ 'MessageDigestSpi',
+ 'MessageFormat',
+ 'MetaEventListener',
+ 'MetalBorders',
+ 'MetalBorders.ButtonBorder',
+ 'MetalBorders.Flush3DBorder',
+ 'MetalBorders.InternalFrameBorder',
+ 'MetalBorders.MenuBarBorder',
+ 'MetalBorders.MenuItemBorder',
+ 'MetalBorders.OptionDialogBorder',
+ 'MetalBorders.PaletteBorder',
+ 'MetalBorders.PopupMenuBorder',
+ 'MetalBorders.RolloverButtonBorder',
+ 'MetalBorders.ScrollPaneBorder',
+ 'MetalBorders.TableHeaderBorder',
+ 'MetalBorders.TextFieldBorder',
+ 'MetalBorders.ToggleButtonBorder',
+ 'MetalBorders.ToolBarBorder',
+ 'MetalButtonUI',
+ 'MetalCheckBoxIcon',
+ 'MetalCheckBoxUI',
+ 'MetalComboBoxButton',
+ 'MetalComboBoxEditor',
+ 'MetalComboBoxEditor.UIResource',
+ 'MetalComboBoxIcon',
+ 'MetalComboBoxUI',
+ 'MetalDesktopIconUI',
+ 'MetalFileChooserUI',
+ 'MetalIconFactory',
+ 'MetalIconFactory.FileIcon16',
+ 'MetalIconFactory.FolderIcon16',
+ 'MetalIconFactory.PaletteCloseIcon',
+ 'MetalIconFactory.TreeControlIcon',
+ 'MetalIconFactory.TreeFolderIcon',
+ 'MetalIconFactory.TreeLeafIcon',
+ 'MetalInternalFrameTitlePane',
+ 'MetalInternalFrameUI',
+ 'MetalLabelUI',
+ 'MetalLookAndFeel',
+ 'MetalPopupMenuSeparatorUI',
+ 'MetalProgressBarUI',
+ 'MetalRadioButtonUI',
+ 'MetalScrollBarUI',
+ 'MetalScrollButton',
+ 'MetalScrollPaneUI',
+ 'MetalSeparatorUI',
+ 'MetalSliderUI',
+ 'MetalSplitPaneUI',
+ 'MetalTabbedPaneUI',
+ 'MetalTextFieldUI',
+ 'MetalTheme',
+ 'MetalToggleButtonUI',
+ 'MetalToolBarUI',
+ 'MetalToolTipUI',
+ 'MetalTreeUI',
+ 'MetaMessage',
+ 'Method',
+ 'MethodDescriptor',
+ 'MidiChannel',
+ 'MidiDevice',
+ 'MidiDevice.Info',
+ 'MidiDeviceProvider',
+ 'MidiEvent',
+ 'MidiFileFormat',
+ 'MidiFileReader',
+ 'MidiFileWriter',
+ 'MidiMessage',
+ 'MidiSystem',
+ 'MidiUnavailableException',
+ 'MimeTypeParseException',
+ 'MinimalHTMLWriter',
+ 'MissingResourceException',
+ 'Mixer',
+ 'Mixer.Info',
+ 'MixerProvider',
+ 'ModificationItem',
+ 'Modifier',
+ 'MouseAdapter',
+ 'MouseDragGestureRecognizer',
+ 'MouseEvent',
+ 'MouseInputAdapter',
+ 'MouseInputListener',
+ 'MouseListener',
+ 'MouseMotionAdapter',
+ 'MouseMotionListener',
+ 'MultiButtonUI',
+ 'MulticastSocket',
+ 'MultiColorChooserUI',
+ 'MultiComboBoxUI',
+ 'MultiDesktopIconUI',
+ 'MultiDesktopPaneUI',
+ 'MultiFileChooserUI',
+ 'MultiInternalFrameUI',
+ 'MultiLabelUI', 'MultiListUI',
+ 'MultiLookAndFeel',
+ 'MultiMenuBarUI',
+ 'MultiMenuItemUI',
+ 'MultiOptionPaneUI',
+ 'MultiPanelUI',
+ 'MultiPixelPackedSampleModel',
+ 'MultipleMaster',
+ 'MultiPopupMenuUI',
+ 'MultiProgressBarUI',
+ 'MultiScrollBarUI',
+ 'MultiScrollPaneUI',
+ 'MultiSeparatorUI',
+ 'MultiSliderUI',
+ 'MultiSplitPaneUI',
+ 'MultiTabbedPaneUI',
+ 'MultiTableHeaderUI',
+ 'MultiTableUI',
+ 'MultiTextUI',
+ 'MultiToolBarUI',
+ 'MultiToolTipUI',
+ 'MultiTreeUI',
+ 'MultiViewportUI',
+ 'MutableAttributeSet',
+ 'MutableComboBoxModel',
+ 'MutableTreeNode',
+ 'Name',
+ 'NameAlreadyBoundException',
+ 'NameClassPair',
+ 'NameComponent',
+ 'NameComponentHelper',
+ 'NameComponentHolder',
+ 'NamedValue',
+ 'NameHelper',
+ 'NameHolder',
+ 'NameNotFoundException',
+ 'NameParser',
+ 'NamespaceChangeListener',
+ 'NameValuePair',
+ 'NameValuePairHelper',
+ 'Naming',
+ 'NamingContext',
+ 'NamingContextHelper',
+ 'NamingContextHolder',
+ 'NamingContextOperations',
+ 'NamingEnumeration',
+ 'NamingEvent',
+ 'NamingException',
+ 'NamingExceptionEvent',
+ 'NamingListener',
+ 'NamingManager',
+ 'NamingSecurityException',
+ 'NegativeArraySizeException',
+ 'NetPermission',
+ 'NO_IMPLEMENT',
+ 'NO_MEMORY',
+ 'NO_PERMISSION',
+ 'NO_RESOURCES',
+ 'NO_RESPONSE',
+ 'NoClassDefFoundError',
+ 'NoInitialContextException', 'NoninvertibleTransformException',
+ 'NoPermissionException',
+ 'NoRouteToHostException',
+ 'NoSuchAlgorithmException',
+ 'NoSuchAttributeException',
+ 'NoSuchElementException',
+ 'NoSuchFieldError',
+ 'NoSuchFieldException',
+ 'NoSuchMethodError',
+ 'NoSuchMethodException',
+ 'NoSuchObjectException',
+ 'NoSuchProviderException',
+ 'NotActiveException',
+ 'NotBoundException',
+ 'NotContextException',
+ 'NotEmpty',
+ 'NotEmptyHelper',
+ 'NotEmptyHolder',
+ 'NotFound',
+ 'NotFoundHelper',
+ 'NotFoundHolder',
+ 'NotFoundReason',
+ 'NotFoundReasonHelper',
+ 'NotFoundReasonHolder',
+ 'NotOwnerException',
+ 'NotSerializableException',
+ 'NullPointerException',
+ 'Number',
+ 'NumberFormat', 'NumberFormatException', 'NVList',
+ 'OBJ_ADAPTER', 'Object', 'OBJECT_NOT_EXIST', 'ObjectChangeListener',
+ 'ObjectFactory',
+ 'ObjectFactoryBuilder',
+ 'ObjectHelper',
+ 'ObjectHolder',
+ 'ObjectImpl', 'ObjectImpl',
+ 'ObjectInput',
+ 'ObjectInputStream',
+ 'ObjectInputStream.GetField',
+ 'ObjectInputValidation',
+ 'ObjectOutput',
+ 'ObjectOutputStream',
+ 'ObjectOutputStream.PutField',
+ 'ObjectStreamClass',
+ 'ObjectStreamConstants',
+ 'ObjectStreamException',
+ 'ObjectStreamField',
+ 'ObjectView',
+ 'ObjID',
+ 'Observable',
+ 'Observer',
+ 'OctetSeqHelper',
+ 'OctetSeqHolder',
+ 'OMGVMCID',
+ 'OpenType',
+ 'Operation',
+ 'OperationNotSupportedException',
+ 'Option',
+ 'OptionalDataException',
+ 'OptionPaneUI',
+ 'ORB',
+ 'OutOfMemoryError',
+ 'OutputStream',
+ 'OutputStreamWriter',
+ 'OverlayLayout',
+ 'Owner',
+ 'Package',
+ 'PackedColorModel',
+ 'Pageable',
+ 'PageAttributes',
+ 'PageAttributes.ColorType',
+ 'PageAttributes.MediaType',
+ 'PageAttributes.OrientationRequestedType',
+ 'PageAttributes.OriginType',
+ 'PageAttributes.PrintQualityType',
+ 'PageFormat',
+ 'Paint',
+ 'PaintContext',
+ 'PaintEvent',
+ 'Panel',
+ 'PanelUI',
+ 'Paper',
+ 'ParagraphView',
+ 'ParagraphView',
+ 'ParameterBlock',
+ 'ParameterDescriptor',
+ 'ParseException',
+ 'ParsePosition',
+ 'Parser',
+ 'ParserDelegator',
+ 'PartialResultException',
+ 'PasswordAuthentication',
+ 'PasswordView',
+ 'Patch',
+ 'PathIterator',
+ 'Permission',
+ 'Permission',
+ 'PermissionCollection',
+ 'Permissions',
+ 'PERSIST_STORE',
+ 'PhantomReference',
+ 'PipedInputStream',
+ 'PipedOutputStream',
+ 'PipedReader',
+ 'PipedWriter',
+ 'PixelGrabber',
+ 'PixelInterleavedSampleModel',
+ 'PKCS8EncodedKeySpec',
+ 'PlainDocument',
+ 'PlainView',
+ 'Point',
+ 'Point2D',
+ 'Point2D.Double',
+ 'Point2D.Float',
+ 'Policy',
+ 'Policy',
+ 'PolicyError',
+ 'PolicyHelper',
+ 'PolicyHolder',
+ 'PolicyListHelper',
+ 'PolicyListHolder',
+ 'PolicyOperations', 'PolicyTypeHelper',
+ 'Polygon',
+ 'PopupMenu',
+ 'PopupMenuEvent',
+ 'PopupMenuListener',
+ 'PopupMenuUI',
+ 'Port',
+ 'Port.Info',
+ 'PortableRemoteObject',
+ 'PortableRemoteObjectDelegate',
+ 'Position',
+ 'Position.Bias',
+ 'PreparedStatement',
+ 'Principal',
+ 'Principal',
+ 'PrincipalHolder',
+ 'Printable',
+ 'PrinterAbortException',
+ 'PrinterException',
+ 'PrinterGraphics',
+ 'PrinterIOException',
+ 'PrinterJob',
+ 'PrintGraphics',
+ 'PrintJob',
+ 'PrintStream',
+ 'PrintWriter',
+ 'PRIVATE_MEMBER',
+ 'PrivateKey',
+ 'PrivilegedAction',
+ 'PrivilegedActionException',
+ 'PrivilegedExceptionAction',
+ 'Process',
+ 'ProfileDataException',
+ 'ProgressBarUI',
+ 'ProgressMonitor',
+ 'ProgressMonitorInputStream',
+ 'Properties',
+ 'PropertyChangeEvent',
+ 'PropertyChangeListener',
+ 'PropertyChangeSupport',
+ 'PropertyDescriptor',
+ 'PropertyEditor',
+ 'PropertyEditorManager',
+ 'PropertyEditorSupport',
+ 'PropertyPermission',
+ 'PropertyResourceBundle',
+ 'PropertyVetoException',
+ 'ProtectionDomain',
+ 'ProtocolException',
+ 'Provider',
+ 'ProviderException',
+ 'Proxy',
+ 'PUBLIC_MEMBER',
+ 'PublicKey',
+ 'PushbackInputStream',
+ 'PushbackReader',
+ 'QuadCurve2D',
+ 'QuadCurve2D.Double',
+ 'QuadCurve2D.Float',
+ 'Random',
+ 'RandomAccessFile', 'Raster', 'RasterFormatException', 'RasterOp',
+ 'Reader', 'Receiver', 'Rectangle', 'Rectangle2D', 'Rectangle2D.Double',
+ 'Rectangle2D.Float', 'RectangularShape', 'Ref', 'RefAddr', 'Reference',
+ 'Referenceable', 'ReferenceQueue', 'ReferralException',
+ 'ReflectPermission', 'Registry', 'RegistryHandler', 'RemarshalException',
+ 'Remote', 'RemoteCall', 'RemoteException', 'RemoteObject', 'RemoteRef',
+ 'RemoteServer',
+ 'RemoteStub',
+ 'RenderableImage',
+ 'RenderableImageOp',
+ 'RenderableImageProducer',
+ 'RenderContext',
+ 'RenderedImage',
+ 'RenderedImageFactory',
+ 'Renderer',
+ 'RenderingHints',
+ 'RenderingHints.Key',
+ 'RepaintManager',
+ 'ReplicateScaleFilter',
+ 'Repository',
+ 'RepositoryIdHelper',
+ 'Request',
+ 'RescaleOp',
+ 'Resolver',
+ 'ResolveResult',
+ 'ResourceBundle',
+ 'ResponseHandler',
+ 'ResultSet',
+ 'ResultSetMetaData',
+ 'ReverbType',
+ 'RGBImageFilter',
+ 'RMIClassLoader',
+ 'RMIClientSocketFactory',
+ 'RMIFailureHandler',
+ 'RMISecurityException',
+ 'RMISecurityManager',
+ 'RMIServerSocketFactory',
+ 'RMISocketFactory',
+ 'Robot',
+ 'RootPaneContainer',
+ 'RootPaneUI',
+ 'RoundRectangle2D',
+ 'RoundRectangle2D.Double',
+ 'RoundRectangle2D.Float',
+ 'RowMapper',
+ 'RSAKey',
+ 'RSAKeyGenParameterSpec',
+ 'RSAPrivateCrtKey',
+ 'RSAPrivateCrtKeySpec',
+ 'RSAPrivateKey',
+ 'RSAPrivateKeySpec',
+ 'RSAPublicKey',
+ 'RSAPublicKeySpec',
+ 'RTFEditorKit',
+ 'RuleBasedCollator',
+ 'Runnable',
+ 'Runtime',
+ 'RunTime',
+ 'RuntimeException',
+ 'RunTimeOperations',
+ 'RuntimePermission',
+ 'SampleModel',
+ 'SchemaViolationException',
+ 'Scrollable',
+ 'Scrollbar',
+ 'ScrollBarUI',
+ 'ScrollPane',
+ 'ScrollPaneConstants',
+ 'ScrollPaneLayout',
+ 'ScrollPaneLayout.UIResource',
+ 'ScrollPaneUI',
+ 'SearchControls',
+ 'SearchResult',
+ 'SecureClassLoader',
+ 'SecureRandom',
+ 'SecureRandomSpi',
+ 'Security',
+ 'SecurityException',
+ 'SecurityManager',
+ 'SecurityPermission',
+ 'Segment',
+ 'SeparatorUI',
+ 'Sequence',
+ 'SequenceInputStream',
+ 'Sequencer',
+ 'Sequencer.SyncMode',
+ 'Serializable',
+ 'SerializablePermission',
+ 'ServantObject',
+ 'ServerCloneException',
+ 'ServerError', 'ServerException',
+ 'ServerNotActiveException',
+ 'ServerRef',
+ 'ServerRequest',
+ 'ServerRuntimeException',
+ 'ServerSocket',
+ 'ServiceDetail',
+ 'ServiceDetailHelper',
+ 'ServiceInformation',
+ 'ServiceInformationHelper',
+ 'ServiceInformationHolder',
+ 'ServiceUnavailableException',
+ 'Set',
+ 'SetOverrideType',
+ 'SetOverrideTypeHelper',
+ 'Shape',
+ 'ShapeGraphicAttribute',
+ 'Short',
+ 'ShortHolder',
+ 'ShortLookupTable',
+ 'ShortMessage',
+ 'ShortSeqHelper',
+ 'ShortSeqHolder',
+ 'Signature',
+ 'SignatureException',
+ 'SignatureSpi',
+ 'SignedObject',
+ 'Signer',
+ 'SimpleAttributeSet',
+ 'SimpleBeanInfo',
+ 'SimpleDateFormat',
+ 'SimpleTimeZone',
+ 'SinglePixelPackedSampleModel',
+ 'SingleSelectionModel',
+ 'SizeLimitExceededException',
+ 'SizeRequirements',
+ 'SizeSequence',
+ 'Skeleton',
+ 'SkeletonMismatchException',
+ 'SkeletonNotFoundException',
+ 'SliderUI',
+ 'Socket',
+ 'SocketException',
+ 'SocketImpl',
+ 'SocketImplFactory',
+ 'SocketOptions',
+ 'SocketPermission',
+ 'SocketSecurityException',
+ 'SoftBevelBorder',
+ 'SoftReference',
+ 'SortedMap',
+ 'SortedSet',
+ 'Soundbank',
+ 'SoundbankReader',
+ 'SoundbankResource',
+ 'SourceDataLine',
+ 'SplitPaneUI',
+ 'SQLData',
+ 'SQLException',
+ 'SQLInput',
+ 'SQLOutput', 'SQLPermission',
+ 'SQLWarning',
+ 'Stack',
+ 'StackOverflowError',
+ 'StateEdit',
+ 'StateEditable',
+ 'StateFactory',
+ 'Statement',
+ 'Streamable',
+ 'StreamableValue',
+ 'StreamCorruptedException',
+ 'StreamTokenizer',
+ 'StrictMath',
+ 'String',
+ 'StringBuffer',
+ 'StringBufferInputStream',
+ 'StringCharacterIterator',
+ 'StringContent',
+ 'StringHolder',
+ 'StringIndexOutOfBoundsException',
+ 'StringReader',
+ 'StringRefAddr',
+ 'StringSelection',
+ 'StringTokenizer',
+ 'StringValueHelper',
+ 'StringWriter',
+ 'Stroke',
+ 'Struct',
+ 'StructMember',
+ 'StructMemberHelper',
+ 'Stub',
+ 'StubDelegate',
+ 'StubNotFoundException',
+ 'Style',
+ 'StyleConstants',
+ 'StyleConstants.CharacterConstants',
+ 'StyleConstants.ColorConstants',
+ 'StyleConstants.FontConstants',
+ 'StyleConstants.ParagraphConstants',
+ 'StyleContext',
+ 'StyledDocument',
+ 'StyledEditorKit',
+ 'StyledEditorKit.AlignmentAction',
+ 'StyledEditorKit.BoldAction',
+ 'StyledEditorKit.FontFamilyAction',
+ 'StyledEditorKit.FontSizeAction',
+ 'StyledEditorKit.ForegroundAction',
+ 'StyledEditorKit.ItalicAction',
+ 'StyledEditorKit.StyledTextAction',
+ 'StyledEditorKit.UnderlineAction',
+ 'StyleSheet',
+ 'StyleSheet.BoxPainter',
+ 'StyleSheet.ListPainter',
+ 'SwingConstants',
+ 'SwingPropertyChangeSupport',
+ 'SwingUtilities',
+ 'SyncFailedException',
+ 'Synthesizer',
+ 'SysexMessage',
+ 'System',
+ 'SystemColor', 'SystemException',
+ 'SystemFlavorMap',
+ 'TabableView',
+ 'TabbedPaneUI',
+ 'TabExpander',
+ 'TableCellEditor',
+ 'TableCellRenderer',
+ 'TableColumn',
+ 'TableColumnModel',
+ 'TableColumnModelEvent',
+ 'TableColumnModelListener',
+ 'TableHeaderUI',
+ 'TableModel',
+ 'TableModelEvent',
+ 'TableModelListener',
+ 'TableUI',
+ 'TableView',
+ 'TabSet',
+ 'TabStop',
+ 'TagElement',
+ 'TargetDataLine',
+ 'TCKind',
+ 'TextAction',
+ 'TextArea',
+ 'TextAttribute',
+ 'TextComponent',
+ 'TextEvent',
+ 'TextField',
+ 'TextHitInfo',
+ 'TextLayout',
+ 'TextLayout.CaretPolicy',
+ 'TextListener',
+ 'TextMeasurer',
+ 'TextUI',
+ 'TexturePaint',
+ 'Thread',
+ 'ThreadDeath',
+ 'ThreadGroup',
+ 'ThreadLocal',
+ 'Throwable',
+ 'Tie',
+ 'TileObserver',
+ 'Time',
+ 'TimeLimitExceededException',
+ 'Timer',
+ 'Timer',
+ 'TimerTask',
+ 'Timestamp',
+ 'TimeZone',
+ 'TitledBorder',
+ 'ToolBarUI',
+ 'Toolkit',
+ 'ToolTipManager',
+ 'ToolTipUI',
+ 'TooManyListenersException',
+ 'Track',
+ 'TRANSACTION_REQUIRED',
+ 'TRANSACTION_ROLLEDBACK',
+ 'TransactionRequiredException',
+ 'TransactionRolledbackException',
+ 'Transferable',
+ 'TransformAttribute',
+ 'TRANSIENT',
+ 'Transmitter',
+ 'Transparency',
+ 'TreeCellEditor',
+ 'TreeCellRenderer',
+ 'TreeExpansionEvent',
+ 'TreeExpansionListener',
+ 'TreeMap',
+ 'TreeModel',
+ 'TreeModelEvent',
+ 'TreeModelListener',
+ 'TreeNode',
+ 'TreePath',
+ 'TreeSelectionEvent',
+ 'TreeSelectionListener',
+ 'TreeSelectionModel',
+ 'TreeSet',
+ 'TreeUI',
+ 'TreeWillExpandListener',
+ 'TypeCode',
+ 'TypeCodeHolder',
+ 'TypeMismatch',
+ 'Types',
+ 'UID',
+ 'UIDefaults',
+ 'UIDefaults.ActiveValue',
+ 'UIDefaults.LazyInputMap',
+ 'UIDefaults.LazyValue',
+ 'UIDefaults.ProxyLazyValue', 'UIManager',
+ 'UIManager.LookAndFeelInfo',
+ 'UIResource',
+ 'ULongLongSeqHelper',
+ 'ULongLongSeqHolder',
+ 'ULongSeqHelper',
+ 'ULongSeqHolder',
+ 'UndeclaredThrowableException',
+ 'UndoableEdit',
+ 'UndoableEditEvent',
+ 'UndoableEditListener',
+ 'UndoableEditSupport',
+ 'UndoManager',
+ 'UnexpectedException',
+ 'UnicastRemoteObject',
+ 'UnionMember',
+ 'UnionMemberHelper',
+ 'UNKNOWN',
+ 'UnknownError',
+ 'UnknownException',
+ 'UnknownGroupException',
+ 'UnknownHostException',
+ 'UnknownHostException',
+ 'UnknownObjectException',
+ 'UnknownServiceException',
+ 'UnknownUserException',
+ 'UnmarshalException',
+ 'UnrecoverableKeyException',
+ 'Unreferenced',
+ 'UnresolvedPermission',
+ 'UnsatisfiedLinkError',
+ 'UnsolicitedNotification',
+ 'UnsolicitedNotificationEvent',
+ 'UnsolicitedNotificationListener',
+ 'UNSUPPORTED_POLICY',
+ 'UNSUPPORTED_POLICY_VALUE',
+ 'UnsupportedAudioFileException',
+ 'UnsupportedClassVersionError',
+ 'UnsupportedEncodingException',
+ 'UnsupportedFlavorException',
+ 'UnsupportedLookAndFeelException',
+ 'UnsupportedOperationException',
+ 'URL',
+ 'URLClassLoader',
+ 'URLConnection',
+ 'URLDecoder',
+ 'URLEncoder',
+ 'URLStreamHandler',
+ 'URLStreamHandlerFactory',
+ 'UserException',
+ 'UShortSeqHelper',
+ 'UShortSeqHolder',
+ 'UTFDataFormatException',
+ 'Util',
+ 'UtilDelegate',
+ 'Utilities',
+ 'ValueBase',
+ 'ValueBaseHelper',
+ 'ValueBaseHolder',
+ 'ValueFactory',
+ 'ValueHandler',
+ 'ValueMember',
+ 'ValueMemberHelper',
+ 'VariableHeightLayoutCache',
+ 'Vector',
+ 'VerifyError',
+ 'VersionSpecHelper',
+ 'VetoableChangeListener',
+ 'VetoableChangeSupport',
+ 'View',
+ 'ViewFactory',
+ 'ViewportLayout',
+ 'ViewportUI',
+ 'VirtualMachineError',
+ 'Visibility',
+ 'VisibilityHelper',
+ 'VM_ABSTRACT',
+ 'VM_CUSTOM',
+ 'VM_NONE',
+ 'VM_TRUNCATABLE',
+ 'VMID',
+ 'VoiceStatus',
+ 'Void',
+ 'WCharSeqHelper',
+ 'WCharSeqHolder',
+ 'WeakHashMap',
+ 'WeakReference',
+ 'Window',
+ 'WindowAdapter',
+ 'WindowConstants',
+ 'WindowEvent', 'WindowListener',
+ 'WrappedPlainView',
+ 'WritableRaster',
+ 'WritableRenderedImage',
+ 'WriteAbortedException',
+ 'Writer',
+ 'WrongTransaction',
+ 'WStringValueHelper',
+ 'X509Certificate',
+ 'X509CRL',
+ 'X509CRLEntry',
+ 'X509EncodedKeySpec',
+ 'X509Extension',
+ 'ZipEntry',
+ 'ZipException',
+ 'ZipFile',
+ 'ZipInputStream',
+ 'ZipOutputStream',
+ 'ZoneView',
+ '_BindingIteratorImplBase',
+ '_BindingIteratorStub',
+ '_IDLTypeStub',
+ '_NamingContextImplBase',
+ '_NamingContextStub',
+ '_PolicyStub',
+ '_Remote_Stub '
+ ),
+ 4 => array(
+ 'void', 'double', 'int', 'boolean', 'byte', 'short', 'long', 'char', 'float'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => true,
+ 4 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #aaaadd; font-weight: bold;',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1=> 'color: #808080; font-style: italic;',
+ 2=> 'color: #a1a100;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.google.com/search?hl=en&q=allinurl%3A{FNAME}+java.sun.com&btnI=I%27m%20Feeling%20Lucky',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/java5.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/java5.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/java5.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1021 +1,1021 @@
-<?php
-/*************************************************************************************
- * java.php
- * --------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/10
- *
- * Java language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/12/28 (1.0.4)
- * - Added instanceof keyword
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * 2004/08/05 (1.0.2)
- * - Added URL support
- * - Added keyword "this", as bugs in GeSHi class ironed out
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * - Added extra missed keywords
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO
- * -------------------------
- * *
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Java(TM) 2 Platform Standard Edition 5.0',
- 'COMMENT_SINGLE' => array(1 => '//'), /* import statements are not comments! */
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- /* see the authoritative list of all 50 Java keywords at */
- /* http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#229308 */
-
- /* java keywords, part 1: control flow */
- 'case', 'default', 'do', 'else', 'for',
- 'goto', 'if', 'switch', 'while'
-
- /* IMO 'break', 'continue', 'return' and 'throw' */
- /* should also be added to this group, as they */
- /* also manage the control flow, */
- /* arguably 'try'/'catch'/'finally' as well */
- ),
- 2 => array(
- /* java keywords, part 2 */
-
- 'break', 'continue', 'return', 'throw',
- 'try', 'catch', 'finally',
-
- 'abstract', 'assert', 'class', 'const', 'enum', 'extends',
- 'final', 'implements', 'import', 'instanceof', 'interface',
- 'native', 'new', 'package', 'private', 'protected',
- 'public', 'static', 'strictfp', 'super', 'synchronized',
- 'this', 'throws', 'transient', 'volatile'
- ),
- 3 => array(
- /* Java keywords, part 3: primitive data types and 'void' */
- 'boolean', 'byte', 'char', 'double',
- 'float', 'int', 'long', 'short', 'void'
- ),
- 4 => array(
- /* other reserved words in Java: literals */
- /* should be styled to look similar to numbers and Strings */
- 'false', 'null', 'true'
- ),
- 5 => array (
- 'Applet', 'AppletContext', 'AppletStub', 'AudioClip'
- ),
- 6 => array (
- 'AWTError', 'AWTEvent', 'AWTEventMulticaster', 'AWTException', 'AWTKeyStroke', 'AWTPermission', 'ActiveEvent', 'Adjustable', 'AlphaComposite', 'BasicStroke', 'BorderLayout', 'BufferCapabilities', 'BufferCapabilities.FlipContents', 'Button', 'Canvas', 'CardLayout', 'Checkbox', 'CheckboxGroup', 'CheckboxMenuItem', 'Choice', 'Color', 'Component', 'ComponentOrientation', 'Composite', 'CompositeContext', 'Container', 'ContainerOrderFocusTraversalPolicy', 'Cursor', 'DefaultFocusTraversalPolicy', 'DefaultKeyboardFocusManager', 'Dialog', 'Dimension', 'DisplayMode', 'EventQueue', 'FileDialog', 'FlowLayout', 'FocusTraversalPolicy', 'Font', 'FontFormatException', 'FontMetrics', 'Frame', 'GradientPaint', 'Graphics', 'Graphics2D', 'GraphicsConfigTemplate', 'GraphicsConfiguration', 'GraphicsDevice', 'GraphicsEnvironment', 'GridBagConstraints', 'GridBagLayout', 'GridLayout', 'HeadlessException', 'IllegalComponentStateException', 'Image', 'ImageCapabilities', 'Insets', 'ItemSelectable',
'JobAttributes',
- 'JobAttributes.DefaultSelectionType', 'JobAttributes.DestinationType', 'JobAttributes.DialogType', 'JobAttributes.MultipleDocumentHandlingType', 'JobAttributes.SidesType', 'KeyEventDispatcher', 'KeyEventPostProcessor', 'KeyboardFocusManager', 'Label', 'LayoutManager', 'LayoutManager2', 'MediaTracker', 'Menu', 'MenuBar', 'MenuComponent', 'MenuContainer', 'MenuItem', 'MenuShortcut', 'MouseInfo', 'PageAttributes', 'PageAttributes.ColorType', 'PageAttributes.MediaType', 'PageAttributes.OrientationRequestedType', 'PageAttributes.OriginType', 'PageAttributes.PrintQualityType', 'Paint', 'PaintContext', 'Panel', 'Point', 'PointerInfo', 'Polygon', 'PopupMenu', 'PrintGraphics', 'PrintJob', 'Rectangle', 'RenderingHints', 'RenderingHints.Key', 'Robot', 'ScrollPane', 'ScrollPaneAdjustable', 'Scrollbar', 'Shape', 'Stroke', 'SystemColor', 'TextArea', 'TextComponent', 'TextField', 'TexturePaint', 'Toolkit', 'Transparency', 'Window'
- ),
- 7 => array (
- 'CMMException', 'ColorSpace', 'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray', 'ICC_ProfileRGB', 'ProfileDataException'
- ),
- 8 => array (
- 'Clipboard', 'ClipboardOwner', 'DataFlavor', 'FlavorEvent', 'FlavorListener', 'FlavorMap', 'FlavorTable', 'MimeTypeParseException', 'StringSelection', 'SystemFlavorMap', 'Transferable', 'UnsupportedFlavorException'
- ),
- 9 => array (
- 'Autoscroll', 'DnDConstants', 'DragGestureEvent', 'DragGestureListener', 'DragGestureRecognizer', 'DragSource', 'DragSourceAdapter', 'DragSourceContext', 'DragSourceDragEvent', 'DragSourceDropEvent', 'DragSourceEvent', 'DragSourceListener', 'DragSourceMotionListener', 'DropTarget', 'DropTarget.DropTargetAutoScroller', 'DropTargetAdapter', 'DropTargetContext', 'DropTargetDragEvent', 'DropTargetDropEvent', 'DropTargetEvent', 'DropTargetListener', 'InvalidDnDOperationException', 'MouseDragGestureRecognizer'
- ),
- 10 => array (
- 'AWTEventListener', 'AWTEventListenerProxy', 'ActionEvent', 'ActionListener', 'AdjustmentEvent', 'AdjustmentListener', 'ComponentAdapter', 'ComponentEvent', 'ComponentListener', 'ContainerAdapter', 'ContainerEvent', 'ContainerListener', 'FocusAdapter', 'FocusEvent', 'FocusListener', 'HierarchyBoundsAdapter', 'HierarchyBoundsListener', 'HierarchyEvent', 'HierarchyListener', 'InputEvent', 'InputMethodEvent', 'InputMethodListener', 'InvocationEvent', 'ItemEvent', 'ItemListener', 'KeyAdapter', 'KeyEvent', 'KeyListener', 'MouseAdapter', 'MouseListener', 'MouseMotionAdapter', 'MouseMotionListener', 'MouseWheelEvent', 'MouseWheelListener', 'PaintEvent', 'TextEvent', 'TextListener', 'WindowAdapter', 'WindowEvent', 'WindowFocusListener', 'WindowListener', 'WindowStateListener'
- ),
- 11 => array (
- 'FontRenderContext', 'GlyphJustificationInfo', 'GlyphMetrics', 'GlyphVector', 'GraphicAttribute', 'ImageGraphicAttribute', 'LineBreakMeasurer', 'LineMetrics', 'MultipleMaster', 'NumericShaper', 'ShapeGraphicAttribute', 'TextAttribute', 'TextHitInfo', 'TextLayout', 'TextLayout.CaretPolicy', 'TextMeasurer', 'TransformAttribute'
- ),
- 12 => array (
- 'AffineTransform', 'Arc2D', 'Arc2D.Double', 'Arc2D.Float', 'Area', 'CubicCurve2D', 'CubicCurve2D.Double', 'CubicCurve2D.Float', 'Dimension2D', 'Ellipse2D', 'Ellipse2D.Double', 'Ellipse2D.Float', 'FlatteningPathIterator', 'GeneralPath', 'IllegalPathStateException', 'Line2D', 'Line2D.Double', 'Line2D.Float', 'NoninvertibleTransformException', 'PathIterator', 'Point2D', 'Point2D.Double', 'Point2D.Float', 'QuadCurve2D', 'QuadCurve2D.Double', 'QuadCurve2D.Float', 'Rectangle2D', 'Rectangle2D.Double', 'Rectangle2D.Float', 'RectangularShape', 'RoundRectangle2D', 'RoundRectangle2D.Double', 'RoundRectangle2D.Float'
- ),
- 13 => array (
- 'InputContext', 'InputMethodHighlight', 'InputMethodRequests', 'InputSubset'
- ),
- 14 => array (
- 'InputMethod', 'InputMethodContext', 'InputMethodDescriptor'
- ),
- 15 => array (
- 'AffineTransformOp', 'AreaAveragingScaleFilter', 'BandCombineOp', 'BandedSampleModel', 'BufferStrategy', 'BufferedImage', 'BufferedImageFilter', 'BufferedImageOp', 'ByteLookupTable', 'ColorConvertOp', 'ColorModel', 'ComponentColorModel', 'ComponentSampleModel', 'ConvolveOp', 'CropImageFilter', 'DataBuffer', 'DataBufferByte', 'DataBufferDouble', 'DataBufferFloat', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort', 'DirectColorModel', 'FilteredImageSource', 'ImageConsumer', 'ImageFilter', 'ImageObserver', 'ImageProducer', 'ImagingOpException', 'IndexColorModel', 'Kernel', 'LookupOp', 'LookupTable', 'MemoryImageSource', 'MultiPixelPackedSampleModel', 'PackedColorModel', 'PixelGrabber', 'PixelInterleavedSampleModel', 'RGBImageFilter', 'Raster', 'RasterFormatException', 'RasterOp', 'RenderedImage', 'ReplicateScaleFilter', 'RescaleOp', 'SampleModel', 'ShortLookupTable', 'SinglePixelPackedSampleModel', 'TileObserver', 'VolatileImage', 'WritableRaster', 'WritableRenderedImag
e'
- ),
- 16 => array (
- 'ContextualRenderedImageFactory', 'ParameterBlock', 'RenderContext', 'RenderableImage', 'RenderableImageOp', 'RenderableImageProducer', 'RenderedImageFactory'
- ),
- 17 => array (
- 'Book', 'PageFormat', 'Pageable', 'Paper', 'Printable', 'PrinterAbortException', 'PrinterException', 'PrinterGraphics', 'PrinterIOException', 'PrinterJob'
- ),
- 18 => array (
- 'AppletInitializer', 'BeanDescriptor', 'BeanInfo', 'Beans', 'Customizer', 'DefaultPersistenceDelegate', 'DesignMode', 'Encoder', 'EventHandler', 'EventSetDescriptor', 'ExceptionListener', 'Expression', 'FeatureDescriptor', 'IndexedPropertyChangeEvent', 'IndexedPropertyDescriptor', 'Introspector', 'MethodDescriptor', 'ParameterDescriptor', 'PersistenceDelegate', 'PropertyChangeEvent', 'PropertyChangeListener', 'PropertyChangeListenerProxy', 'PropertyChangeSupport', 'PropertyDescriptor', 'PropertyEditor', 'PropertyEditorManager', 'PropertyEditorSupport', 'PropertyVetoException', 'SimpleBeanInfo', 'VetoableChangeListener', 'VetoableChangeListenerProxy', 'VetoableChangeSupport', 'Visibility', 'XMLDecoder', 'XMLEncoder'
- ),
- 19 => array (
- 'BeanContext', 'BeanContextChild', 'BeanContextChildComponentProxy', 'BeanContextChildSupport', 'BeanContextContainerProxy', 'BeanContextEvent', 'BeanContextMembershipEvent', 'BeanContextMembershipListener', 'BeanContextProxy', 'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider', 'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent', 'BeanContextServiceRevokedListener', 'BeanContextServices', 'BeanContextServicesListener', 'BeanContextServicesSupport', 'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport', 'BeanContextSupport.BCSIterator'
- ),
- 20 => array (
- 'BufferedInputStream', 'BufferedOutputStream', 'BufferedReader', 'BufferedWriter', 'ByteArrayInputStream', 'ByteArrayOutputStream', 'CharArrayReader', 'CharArrayWriter', 'CharConversionException', 'Closeable', 'DataInput', 'DataOutput', 'EOFException', 'Externalizable', 'File', 'FileDescriptor', 'FileInputStream', 'FileNotFoundException', 'FileOutputStream', 'FilePermission', 'FileReader', 'FileWriter', 'FilenameFilter', 'FilterInputStream', 'FilterOutputStream', 'FilterReader', 'FilterWriter', 'Flushable', 'IOException', 'InputStreamReader', 'InterruptedIOException', 'InvalidClassException', 'InvalidObjectException', 'LineNumberInputStream', 'LineNumberReader', 'NotActiveException', 'NotSerializableException', 'ObjectInput', 'ObjectInputStream', 'ObjectInputStream.GetField', 'ObjectInputValidation', 'ObjectOutput', 'ObjectOutputStream', 'ObjectOutputStream.PutField', 'ObjectStreamClass', 'ObjectStreamConstants', 'ObjectStreamException', 'ObjectStreamField', 'OptionalData
Exception', 'OutputStreamWriter',
- 'PipedInputStream', 'PipedOutputStream', 'PipedReader', 'PipedWriter', 'PrintStream', 'PrintWriter', 'PushbackInputStream', 'PushbackReader', 'RandomAccessFile', 'Reader', 'SequenceInputStream', 'Serializable', 'SerializablePermission', 'StreamCorruptedException', 'StreamTokenizer', 'StringBufferInputStream', 'StringReader', 'StringWriter', 'SyncFailedException', 'UTFDataFormatException', 'UnsupportedEncodingException', 'WriteAbortedException', 'Writer'
- ),
- 21 => array (
- 'AbstractMethodError', 'Appendable', 'ArithmeticException', 'ArrayIndexOutOfBoundsException', 'ArrayStoreException', 'AssertionError', 'Boolean', 'Byte', 'CharSequence', 'Character', 'Character.Subset', 'Character.UnicodeBlock', 'Class', 'ClassCastException', 'ClassCircularityError', 'ClassFormatError', 'ClassLoader', 'ClassNotFoundException', 'CloneNotSupportedException', 'Cloneable', 'Comparable', 'Compiler', 'Deprecated', 'Double', 'Enum', 'EnumConstantNotPresentException', 'Error', 'Exception', 'ExceptionInInitializerError', 'Float', 'IllegalAccessError', 'IllegalAccessException', 'IllegalArgumentException', 'IllegalMonitorStateException', 'IllegalStateException', 'IllegalThreadStateException', 'IncompatibleClassChangeError', 'IndexOutOfBoundsException', 'InheritableThreadLocal', 'InstantiationError', 'InstantiationException', 'Integer', 'InternalError', 'InterruptedException', 'Iterable', 'LinkageError', 'Long', 'Math', 'NegativeArraySizeException', 'NoClassDefFoundE
rror', 'NoSuchFieldError',
- 'NoSuchFieldException', 'NoSuchMethodError', 'NoSuchMethodException', 'NullPointerException', 'Number', 'NumberFormatException', 'OutOfMemoryError', 'Override', 'Package', 'Process', 'ProcessBuilder', 'Readable', 'Runnable', 'Runtime', 'RuntimeException', 'RuntimePermission', 'SecurityException', 'SecurityManager', 'Short', 'StackOverflowError', 'StackTraceElement', 'StrictMath', 'String', 'StringBuffer', 'StringBuilder', 'StringIndexOutOfBoundsException', 'SuppressWarnings', 'System', 'Thread', 'Thread.State', 'Thread.UncaughtExceptionHandler', 'ThreadDeath', 'ThreadGroup', 'ThreadLocal', 'Throwable', 'TypeNotPresentException', 'UnknownError', 'UnsatisfiedLinkError', 'UnsupportedClassVersionError', 'UnsupportedOperationException', 'VerifyError', 'VirtualMachineError', 'Void'
- ),
- 22 => array (
- 'AnnotationFormatError', 'AnnotationTypeMismatchException', 'Documented', 'ElementType', 'IncompleteAnnotationException', 'Inherited', 'Retention', 'RetentionPolicy', 'Target'
- ),
- 23 => array (
- 'ClassDefinition', 'ClassFileTransformer', 'IllegalClassFormatException', 'Instrumentation', 'UnmodifiableClassException'
- ),
- 24 => array (
- 'ClassLoadingMXBean', 'CompilationMXBean', 'GarbageCollectorMXBean', 'ManagementFactory', 'ManagementPermission', 'MemoryMXBean', 'MemoryManagerMXBean', 'MemoryNotificationInfo', 'MemoryPoolMXBean', 'MemoryType', 'MemoryUsage', 'OperatingSystemMXBean', 'RuntimeMXBean', 'ThreadInfo', 'ThreadMXBean'
- ),
- 25 => array (
- 'PhantomReference', 'ReferenceQueue', 'SoftReference', 'WeakReference'
- ),
- 26 => array (
- 'AccessibleObject', 'AnnotatedElement', 'Constructor', 'Field', 'GenericArrayType', 'GenericDeclaration', 'GenericSignatureFormatError', 'InvocationHandler', 'InvocationTargetException', 'MalformedParameterizedTypeException', 'Member', 'Method', 'Modifier', 'ParameterizedType', 'ReflectPermission', 'Type', 'TypeVariable', 'UndeclaredThrowableException', 'WildcardType'
- ),
- 27 => array (
- 'BigDecimal', 'BigInteger', 'MathContext', 'RoundingMode'
- ),
- 28 => array (
- 'Authenticator', 'Authenticator.RequestorType', 'BindException', 'CacheRequest', 'CacheResponse', 'ContentHandlerFactory', 'CookieHandler', 'DatagramPacket', 'DatagramSocket', 'DatagramSocketImpl', 'DatagramSocketImplFactory', 'FileNameMap', 'HttpRetryException', 'HttpURLConnection', 'Inet4Address', 'Inet6Address', 'InetAddress', 'InetSocketAddress', 'JarURLConnection', 'MalformedURLException', 'MulticastSocket', 'NetPermission', 'NetworkInterface', 'NoRouteToHostException', 'PasswordAuthentication', 'PortUnreachableException', 'ProtocolException', 'Proxy.Type', 'ProxySelector', 'ResponseCache', 'SecureCacheResponse', 'ServerSocket', 'Socket', 'SocketAddress', 'SocketException', 'SocketImpl', 'SocketImplFactory', 'SocketOptions', 'SocketPermission', 'SocketTimeoutException', 'URI', 'URISyntaxException', 'URL', 'URLClassLoader', 'URLConnection', 'URLDecoder', 'URLEncoder', 'URLStreamHandler', 'URLStreamHandlerFactory', 'UnknownServiceException'
- ),
- 29 => array (
- 'Buffer', 'BufferOverflowException', 'BufferUnderflowException', 'ByteBuffer', 'ByteOrder', 'CharBuffer', 'DoubleBuffer', 'FloatBuffer', 'IntBuffer', 'InvalidMarkException', 'LongBuffer', 'MappedByteBuffer', 'ReadOnlyBufferException', 'ShortBuffer'
- ),
- 30 => array (
- 'AlreadyConnectedException', 'AsynchronousCloseException', 'ByteChannel', 'CancelledKeyException', 'Channel', 'Channels', 'ClosedByInterruptException', 'ClosedChannelException', 'ClosedSelectorException', 'ConnectionPendingException', 'DatagramChannel', 'FileChannel', 'FileChannel.MapMode', 'FileLock', 'FileLockInterruptionException', 'GatheringByteChannel', 'IllegalBlockingModeException', 'IllegalSelectorException', 'InterruptibleChannel', 'NoConnectionPendingException', 'NonReadableChannelException', 'NonWritableChannelException', 'NotYetBoundException', 'NotYetConnectedException', 'OverlappingFileLockException', 'Pipe', 'Pipe.SinkChannel', 'Pipe.SourceChannel', 'ReadableByteChannel', 'ScatteringByteChannel', 'SelectableChannel', 'SelectionKey', 'Selector', 'ServerSocketChannel', 'SocketChannel', 'UnresolvedAddressException', 'UnsupportedAddressTypeException', 'WritableByteChannel'
- ),
- 31 => array (
- 'AbstractInterruptibleChannel', 'AbstractSelectableChannel', 'AbstractSelectionKey', 'AbstractSelector', 'SelectorProvider'
- ),
- 32 => array (
- 'CharacterCodingException', 'Charset', 'CharsetDecoder', 'CharsetEncoder', 'CoderMalfunctionError', 'CoderResult', 'CodingErrorAction', 'IllegalCharsetNameException', 'MalformedInputException', 'UnmappableCharacterException', 'UnsupportedCharsetException'
- ),
- 33 => array (
- 'CharsetProvider'
- ),
- 34 => array (
- 'AccessException', 'AlreadyBoundException', 'ConnectIOException', 'MarshalException', 'MarshalledObject', 'Naming', 'NoSuchObjectException', 'NotBoundException', 'RMISecurityException', 'RMISecurityManager', 'Remote', 'RemoteException', 'ServerError', 'ServerException', 'ServerRuntimeException', 'StubNotFoundException', 'UnexpectedException', 'UnmarshalException'
- ),
- 35 => array (
- 'Activatable', 'ActivateFailedException', 'ActivationDesc', 'ActivationException', 'ActivationGroup', 'ActivationGroupDesc', 'ActivationGroupDesc.CommandEnvironment', 'ActivationGroupID', 'ActivationGroup_Stub', 'ActivationID', 'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem', 'Activator', 'UnknownGroupException', 'UnknownObjectException'
- ),
- 36 => array (
- 'DGC', 'Lease', 'VMID'
- ),
- 37 => array (
- 'LocateRegistry', 'Registry', 'RegistryHandler'
- ),
- 38 => array (
- 'ExportException', 'LoaderHandler', 'LogStream', 'ObjID', 'Operation', 'RMIClassLoader', 'RMIClassLoaderSpi', 'RMIClientSocketFactory', 'RMIFailureHandler', 'RMIServerSocketFactory', 'RMISocketFactory', 'RemoteCall', 'RemoteObject', 'RemoteObjectInvocationHandler', 'RemoteRef', 'RemoteServer', 'RemoteStub', 'ServerCloneException', 'ServerNotActiveException', 'ServerRef', 'Skeleton', 'SkeletonMismatchException', 'SkeletonNotFoundException', 'SocketSecurityException', 'UID', 'UnicastRemoteObject', 'Unreferenced'
- ),
- 39 => array (
- 'AccessControlContext', 'AccessControlException', 'AccessController', 'AlgorithmParameterGenerator', 'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 'AlgorithmParametersSpi', 'AllPermission', 'AuthProvider', 'BasicPermission', 'CodeSigner', 'CodeSource', 'DigestException', 'DigestInputStream', 'DigestOutputStream', 'DomainCombiner', 'GeneralSecurityException', 'Guard', 'GuardedObject', 'Identity', 'IdentityScope', 'InvalidAlgorithmParameterException', 'InvalidParameterException', 'Key', 'KeyException', 'KeyFactory', 'KeyFactorySpi', 'KeyManagementException', 'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi', 'KeyRep', 'KeyRep.Type', 'KeyStore', 'KeyStore.Builder', 'KeyStore.CallbackHandlerProtection', 'KeyStore.Entry', 'KeyStore.LoadStoreParameter', 'KeyStore.PasswordProtection', 'KeyStore.PrivateKeyEntry', 'KeyStore.ProtectionParameter', 'KeyStore.SecretKeyEntry', 'KeyStore.TrustedCertificateEntry', 'KeyStoreException', 'KeyStoreSpi', 'MessageDigest', 'Messag
eDigestSpi',
- 'NoSuchAlgorithmException', 'NoSuchProviderException', 'PermissionCollection', 'Permissions', 'PrivateKey', 'PrivilegedAction', 'PrivilegedActionException', 'PrivilegedExceptionAction', 'ProtectionDomain', 'Provider', 'Provider.Service', 'ProviderException', 'PublicKey', 'SecureClassLoader', 'SecureRandom', 'SecureRandomSpi', 'Security', 'SecurityPermission', 'Signature', 'SignatureException', 'SignatureSpi', 'SignedObject', 'Signer', 'UnrecoverableEntryException', 'UnrecoverableKeyException', 'UnresolvedPermission'
- ),
- 40 => array (
- 'Acl', 'AclEntry', 'AclNotFoundException', 'Group', 'LastOwnerException', 'NotOwnerException', 'Owner'
- ),
- 41 => array (
- 'CRL', 'CRLException', 'CRLSelector', 'CertPath', 'CertPath.CertPathRep', 'CertPathBuilder', 'CertPathBuilderException', 'CertPathBuilderResult', 'CertPathBuilderSpi', 'CertPathParameters', 'CertPathValidator', 'CertPathValidatorException', 'CertPathValidatorResult', 'CertPathValidatorSpi', 'CertSelector', 'CertStore', 'CertStoreException', 'CertStoreParameters', 'CertStoreSpi', 'Certificate.CertificateRep', 'CertificateFactory', 'CertificateFactorySpi', 'CollectionCertStoreParameters', 'LDAPCertStoreParameters', 'PKIXBuilderParameters', 'PKIXCertPathBuilderResult', 'PKIXCertPathChecker', 'PKIXCertPathValidatorResult', 'PKIXParameters', 'PolicyNode', 'PolicyQualifierInfo', 'TrustAnchor', 'X509CRL', 'X509CRLEntry', 'X509CRLSelector', 'X509CertSelector', 'X509Extension'
- ),
- 42 => array (
- 'DSAKey', 'DSAKeyPairGenerator', 'DSAParams', 'DSAPrivateKey', 'DSAPublicKey', 'ECKey', 'ECPrivateKey', 'ECPublicKey', 'RSAKey', 'RSAMultiPrimePrivateCrtKey', 'RSAPrivateCrtKey', 'RSAPrivateKey', 'RSAPublicKey'
- ),
- 43 => array (
- 'AlgorithmParameterSpec', 'DSAParameterSpec', 'DSAPrivateKeySpec', 'DSAPublicKeySpec', 'ECField', 'ECFieldF2m', 'ECFieldFp', 'ECGenParameterSpec', 'ECParameterSpec', 'ECPoint', 'ECPrivateKeySpec', 'ECPublicKeySpec', 'EllipticCurve', 'EncodedKeySpec', 'InvalidKeySpecException', 'InvalidParameterSpecException', 'KeySpec', 'MGF1ParameterSpec', 'PKCS8EncodedKeySpec', 'PSSParameterSpec', 'RSAKeyGenParameterSpec', 'RSAMultiPrimePrivateCrtKeySpec', 'RSAOtherPrimeInfo', 'RSAPrivateCrtKeySpec', 'RSAPrivateKeySpec', 'RSAPublicKeySpec', 'X509EncodedKeySpec'
- ),
- 44 => array (
- 'BatchUpdateException', 'Blob', 'CallableStatement', 'Clob', 'Connection', 'DataTruncation', 'DatabaseMetaData', 'Driver', 'DriverManager', 'DriverPropertyInfo', 'ParameterMetaData', 'PreparedStatement', 'Ref', 'ResultSet', 'ResultSetMetaData', 'SQLData', 'SQLException', 'SQLInput', 'SQLOutput', 'SQLPermission', 'SQLWarning', 'Savepoint', 'Struct', 'Time', 'Types'
- ),
- 45 => array (
- 'AttributedCharacterIterator', 'AttributedCharacterIterator.Attribute', 'AttributedString', 'Bidi', 'BreakIterator', 'CharacterIterator', 'ChoiceFormat', 'CollationElementIterator', 'CollationKey', 'Collator', 'DateFormat', 'DateFormat.Field', 'DateFormatSymbols', 'DecimalFormat', 'DecimalFormatSymbols', 'FieldPosition', 'Format', 'Format.Field', 'MessageFormat', 'MessageFormat.Field', 'NumberFormat', 'NumberFormat.Field', 'ParseException', 'ParsePosition', 'RuleBasedCollator', 'SimpleDateFormat', 'StringCharacterIterator'
- ),
- 46 => array (
- 'AbstractCollection', 'AbstractList', 'AbstractMap', 'AbstractQueue', 'AbstractSequentialList', 'AbstractSet', 'ArrayList', 'Arrays', 'BitSet', 'Calendar', 'Collection', 'Collections', 'Comparator', 'ConcurrentModificationException', 'Currency', 'Dictionary', 'DuplicateFormatFlagsException', 'EmptyStackException', 'EnumMap', 'EnumSet', 'Enumeration', 'EventListenerProxy', 'EventObject', 'FormatFlagsConversionMismatchException', 'Formattable', 'FormattableFlags', 'Formatter.BigDecimalLayoutForm', 'FormatterClosedException', 'GregorianCalendar', 'HashMap', 'HashSet', 'Hashtable', 'IdentityHashMap', 'IllegalFormatCodePointException', 'IllegalFormatConversionException', 'IllegalFormatException', 'IllegalFormatFlagsException', 'IllegalFormatPrecisionException', 'IllegalFormatWidthException', 'InputMismatchException', 'InvalidPropertiesFormatException', 'Iterator', 'LinkedHashMap', 'LinkedHashSet', 'LinkedList', 'ListIterator', 'ListResourceBundle', 'Locale', 'Map', 'Map.Entry'
, 'MissingFormatArgumentException',
- 'MissingFormatWidthException', 'MissingResourceException', 'NoSuchElementException', 'Observable', 'Observer', 'PriorityQueue', 'Properties', 'PropertyPermission', 'PropertyResourceBundle', 'Queue', 'Random', 'RandomAccess', 'ResourceBundle', 'Scanner', 'Set', 'SimpleTimeZone', 'SortedMap', 'SortedSet', 'Stack', 'StringTokenizer', 'TimeZone', 'TimerTask', 'TooManyListenersException', 'TreeMap', 'TreeSet', 'UUID', 'UnknownFormatConversionException', 'UnknownFormatFlagsException', 'Vector', 'WeakHashMap'
- ),
- 47 => array (
- 'AbstractExecutorService', 'ArrayBlockingQueue', 'BlockingQueue', 'BrokenBarrierException', 'Callable', 'CancellationException', 'CompletionService', 'ConcurrentHashMap', 'ConcurrentLinkedQueue', 'ConcurrentMap', 'CopyOnWriteArrayList', 'CopyOnWriteArraySet', 'CountDownLatch', 'CyclicBarrier', 'DelayQueue', 'Delayed', 'Exchanger', 'ExecutionException', 'Executor', 'ExecutorCompletionService', 'ExecutorService', 'Executors', 'Future', 'FutureTask', 'LinkedBlockingQueue', 'PriorityBlockingQueue', 'RejectedExecutionException', 'RejectedExecutionHandler', 'ScheduledExecutorService', 'ScheduledFuture', 'ScheduledThreadPoolExecutor', 'Semaphore', 'SynchronousQueue', 'ThreadFactory', 'ThreadPoolExecutor', 'ThreadPoolExecutor.AbortPolicy', 'ThreadPoolExecutor.CallerRunsPolicy', 'ThreadPoolExecutor.DiscardOldestPolicy', 'ThreadPoolExecutor.DiscardPolicy', 'TimeUnit', 'TimeoutException'
- ),
- 48 => array (
- 'AtomicBoolean', 'AtomicInteger', 'AtomicIntegerArray', 'AtomicIntegerFieldUpdater', 'AtomicLong', 'AtomicLongArray', 'AtomicLongFieldUpdater', 'AtomicMarkableReference', 'AtomicReference', 'AtomicReferenceArray', 'AtomicReferenceFieldUpdater', 'AtomicStampedReference'
- ),
- 49 => array (
- 'AbstractQueuedSynchronizer', 'Condition', 'Lock', 'LockSupport', 'ReadWriteLock', 'ReentrantLock', 'ReentrantReadWriteLock', 'ReentrantReadWriteLock.ReadLock', 'ReentrantReadWriteLock.WriteLock'
- ),
- 50 => array (
- 'Attributes.Name', 'JarEntry', 'JarException', 'JarFile', 'JarInputStream', 'JarOutputStream', 'Manifest', 'Pack200', 'Pack200.Packer', 'Pack200.Unpacker'
- ),
- 51 => array (
- 'ConsoleHandler', 'ErrorManager', 'FileHandler', 'Filter', 'Handler', 'Level', 'LogManager', 'LogRecord', 'Logger', 'LoggingMXBean', 'LoggingPermission', 'MemoryHandler', 'SimpleFormatter', 'SocketHandler', 'StreamHandler', 'XMLFormatter'
- ),
- 52 => array (
- 'AbstractPreferences', 'BackingStoreException', 'InvalidPreferencesFormatException', 'NodeChangeEvent', 'NodeChangeListener', 'PreferenceChangeEvent', 'PreferenceChangeListener', 'Preferences', 'PreferencesFactory'
- ),
- 53 => array (
- 'MatchResult', 'Matcher', 'Pattern', 'PatternSyntaxException'
- ),
- 54 => array (
- 'Adler32', 'CRC32', 'CheckedInputStream', 'CheckedOutputStream', 'Checksum', 'DataFormatException', 'Deflater', 'DeflaterOutputStream', 'GZIPInputStream', 'GZIPOutputStream', 'Inflater', 'InflaterInputStream', 'ZipEntry', 'ZipException', 'ZipFile', 'ZipInputStream', 'ZipOutputStream'
- ),
- 55 => array (
- 'Accessible', 'AccessibleAction', 'AccessibleAttributeSequence', 'AccessibleBundle', 'AccessibleComponent', 'AccessibleContext', 'AccessibleEditableText', 'AccessibleExtendedComponent', 'AccessibleExtendedTable', 'AccessibleExtendedText', 'AccessibleHyperlink', 'AccessibleHypertext', 'AccessibleIcon', 'AccessibleKeyBinding', 'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle', 'AccessibleRole', 'AccessibleSelection', 'AccessibleState', 'AccessibleStateSet', 'AccessibleStreamable', 'AccessibleTable', 'AccessibleTableModelChange', 'AccessibleText', 'AccessibleTextSequence', 'AccessibleValue'
- ),
- 56 => array (
- 'ActivityCompletedException', 'ActivityRequiredException', 'InvalidActivityException'
- ),
- 57 => array (
- 'BadPaddingException', 'Cipher', 'CipherInputStream', 'CipherOutputStream', 'CipherSpi', 'EncryptedPrivateKeyInfo', 'ExemptionMechanism', 'ExemptionMechanismException', 'ExemptionMechanismSpi', 'IllegalBlockSizeException', 'KeyAgreement', 'KeyAgreementSpi', 'KeyGenerator', 'KeyGeneratorSpi', 'Mac', 'MacSpi', 'NoSuchPaddingException', 'NullCipher', 'SealedObject', 'SecretKey', 'SecretKeyFactory', 'SecretKeyFactorySpi', 'ShortBufferException'
- ),
- 58 => array (
- 'DHKey', 'DHPrivateKey', 'DHPublicKey', 'PBEKey'
- ),
- 59 => array (
- 'DESKeySpec', 'DESedeKeySpec', 'DHGenParameterSpec', 'DHParameterSpec', 'DHPrivateKeySpec', 'DHPublicKeySpec', 'IvParameterSpec', 'OAEPParameterSpec', 'PBEKeySpec', 'PBEParameterSpec', 'PSource', 'PSource.PSpecified', 'RC2ParameterSpec', 'RC5ParameterSpec', 'SecretKeySpec'
- ),
- 60 => array (
- 'IIOException', 'IIOImage', 'IIOParam', 'IIOParamController', 'ImageIO', 'ImageReadParam', 'ImageReader', 'ImageTranscoder', 'ImageTypeSpecifier', 'ImageWriteParam', 'ImageWriter'
- ),
- 61 => array (
- 'IIOReadProgressListener', 'IIOReadUpdateListener', 'IIOReadWarningListener', 'IIOWriteProgressListener', 'IIOWriteWarningListener'
- ),
- 62 => array (
- 'IIOInvalidTreeException', 'IIOMetadata', 'IIOMetadataController', 'IIOMetadataFormat', 'IIOMetadataFormatImpl', 'IIOMetadataNode'
- ),
- 63 => array (
- 'BMPImageWriteParam'
- ),
- 64 => array (
- 'JPEGHuffmanTable', 'JPEGImageReadParam', 'JPEGImageWriteParam', 'JPEGQTable'
- ),
- 65 => array (
- 'IIORegistry', 'IIOServiceProvider', 'ImageInputStreamSpi', 'ImageOutputStreamSpi', 'ImageReaderSpi', 'ImageReaderWriterSpi', 'ImageTranscoderSpi', 'ImageWriterSpi', 'RegisterableService', 'ServiceRegistry', 'ServiceRegistry.Filter'
- ),
- 66 => array (
- 'FileCacheImageInputStream', 'FileCacheImageOutputStream', 'FileImageInputStream', 'FileImageOutputStream', 'IIOByteBuffer', 'ImageInputStream', 'ImageInputStreamImpl', 'ImageOutputStream', 'ImageOutputStreamImpl', 'MemoryCacheImageInputStream', 'MemoryCacheImageOutputStream'
- ),
- 67 => array (
- 'AttributeChangeNotification', 'AttributeChangeNotificationFilter', 'AttributeNotFoundException', 'AttributeValueExp', 'BadAttributeValueExpException', 'BadBinaryOpValueExpException', 'BadStringOperationException', 'Descriptor', 'DescriptorAccess', 'DynamicMBean', 'InstanceAlreadyExistsException', 'InstanceNotFoundException', 'InvalidApplicationException', 'JMException', 'JMRuntimeException', 'ListenerNotFoundException', 'MBeanAttributeInfo', 'MBeanConstructorInfo', 'MBeanException', 'MBeanFeatureInfo', 'MBeanInfo', 'MBeanNotificationInfo', 'MBeanOperationInfo', 'MBeanParameterInfo', 'MBeanPermission', 'MBeanRegistration', 'MBeanRegistrationException', 'MBeanServer', 'MBeanServerBuilder', 'MBeanServerConnection', 'MBeanServerDelegate', 'MBeanServerDelegateMBean', 'MBeanServerFactory', 'MBeanServerInvocationHandler', 'MBeanServerNotification', 'MBeanServerPermission', 'MBeanTrustPermission', 'MalformedObjectNameException', 'NotCompliantMBeanException', 'Notification', 'Not
ificationBroadcaster',
- 'NotificationBroadcasterSupport', 'NotificationEmitter', 'NotificationFilter', 'NotificationFilterSupport', 'NotificationListener', 'ObjectInstance', 'ObjectName', 'OperationsException', 'PersistentMBean', 'Query', 'QueryEval', 'QueryExp', 'ReflectionException', 'RuntimeErrorException', 'RuntimeMBeanException', 'RuntimeOperationsException', 'ServiceNotFoundException', 'StandardMBean', 'StringValueExp', 'ValueExp'
- ),
- 68 => array (
- 'ClassLoaderRepository', 'MLet', 'MLetMBean', 'PrivateClassLoader', 'PrivateMLet'
- ),
- 69 => array (
- 'DescriptorSupport', 'InvalidTargetObjectTypeException', 'ModelMBean', 'ModelMBeanAttributeInfo', 'ModelMBeanConstructorInfo', 'ModelMBeanInfo', 'ModelMBeanInfoSupport', 'ModelMBeanNotificationBroadcaster', 'ModelMBeanNotificationInfo', 'ModelMBeanOperationInfo', 'RequiredModelMBean', 'XMLParseException'
- ),
- 70 => array (
- 'CounterMonitor', 'CounterMonitorMBean', 'GaugeMonitor', 'GaugeMonitorMBean', 'Monitor', 'MonitorMBean', 'MonitorNotification', 'MonitorSettingException', 'StringMonitor', 'StringMonitorMBean'
- ),
- 71 => array (
- 'ArrayType', 'CompositeData', 'CompositeDataSupport', 'CompositeType', 'InvalidOpenTypeException', 'KeyAlreadyExistsException', 'OpenDataException', 'OpenMBeanAttributeInfo', 'OpenMBeanAttributeInfoSupport', 'OpenMBeanConstructorInfo', 'OpenMBeanConstructorInfoSupport', 'OpenMBeanInfo', 'OpenMBeanInfoSupport', 'OpenMBeanOperationInfo', 'OpenMBeanOperationInfoSupport', 'OpenMBeanParameterInfo', 'OpenMBeanParameterInfoSupport', 'SimpleType', 'TabularData', 'TabularDataSupport', 'TabularType'
- ),
- 72 => array (
- 'InvalidRelationIdException', 'InvalidRelationServiceException', 'InvalidRelationTypeException', 'InvalidRoleInfoException', 'InvalidRoleValueException', 'MBeanServerNotificationFilter', 'Relation', 'RelationException', 'RelationNotFoundException', 'RelationNotification', 'RelationService', 'RelationServiceMBean', 'RelationServiceNotRegisteredException', 'RelationSupport', 'RelationSupportMBean', 'RelationType', 'RelationTypeNotFoundException', 'RelationTypeSupport', 'Role', 'RoleInfo', 'RoleInfoNotFoundException', 'RoleList', 'RoleNotFoundException', 'RoleResult', 'RoleStatus', 'RoleUnresolved', 'RoleUnresolvedList'
- ),
- 73 => array (
- 'JMXAuthenticator', 'JMXConnectionNotification', 'JMXConnector', 'JMXConnectorFactory', 'JMXConnectorProvider', 'JMXConnectorServer', 'JMXConnectorServerFactory', 'JMXConnectorServerMBean', 'JMXConnectorServerProvider', 'JMXPrincipal', 'JMXProviderException', 'JMXServerErrorException', 'JMXServiceURL', 'MBeanServerForwarder', 'NotificationResult', 'SubjectDelegationPermission', 'TargetedNotification'
- ),
- 74 => array (
- 'RMIConnection', 'RMIConnectionImpl', 'RMIConnectionImpl_Stub', 'RMIConnector', 'RMIConnectorServer', 'RMIIIOPServerImpl', 'RMIJRMPServerImpl', 'RMIServer', 'RMIServerImpl', 'RMIServerImpl_Stub'
- ),
- 75 => array (
- 'TimerAlarmClockNotification', 'TimerMBean', 'TimerNotification'
- ),
- 76 => array (
- 'AuthenticationNotSupportedException', 'BinaryRefAddr', 'CannotProceedException', 'CommunicationException', 'CompositeName', 'CompoundName', 'ConfigurationException', 'ContextNotEmptyException', 'InitialContext', 'InsufficientResourcesException', 'InterruptedNamingException', 'InvalidNameException', 'LimitExceededException', 'LinkException', 'LinkLoopException', 'LinkRef', 'MalformedLinkException', 'Name', 'NameAlreadyBoundException', 'NameClassPair', 'NameNotFoundException', 'NameParser', 'NamingEnumeration', 'NamingException', 'NamingSecurityException', 'NoInitialContextException', 'NoPermissionException', 'NotContextException', 'OperationNotSupportedException', 'PartialResultException', 'RefAddr', 'Referenceable', 'ReferralException', 'ServiceUnavailableException', 'SizeLimitExceededException', 'StringRefAddr', 'TimeLimitExceededException'
- ),
- 77 => array (
- 'AttributeInUseException', 'AttributeModificationException', 'BasicAttribute', 'BasicAttributes', 'DirContext', 'InitialDirContext', 'InvalidAttributeIdentifierException', 'InvalidAttributesException', 'InvalidSearchControlsException', 'InvalidSearchFilterException', 'ModificationItem', 'NoSuchAttributeException', 'SchemaViolationException', 'SearchControls', 'SearchResult'
- ),
- 78 => array (
- 'EventContext', 'EventDirContext', 'NamespaceChangeListener', 'NamingEvent', 'NamingExceptionEvent', 'NamingListener', 'ObjectChangeListener'
- ),
- 79 => array (
- 'BasicControl', 'ControlFactory', 'ExtendedRequest', 'ExtendedResponse', 'HasControls', 'InitialLdapContext', 'LdapContext', 'LdapName', 'LdapReferralException', 'ManageReferralControl', 'PagedResultsControl', 'PagedResultsResponseControl', 'Rdn', 'SortControl', 'SortKey', 'SortResponseControl', 'StartTlsRequest', 'StartTlsResponse', 'UnsolicitedNotification', 'UnsolicitedNotificationEvent', 'UnsolicitedNotificationListener'
- ),
- 80 => array (
- 'DirObjectFactory', 'DirStateFactory', 'DirStateFactory.Result', 'DirectoryManager', 'InitialContextFactory', 'InitialContextFactoryBuilder', 'NamingManager', 'ObjectFactory', 'ObjectFactoryBuilder', 'ResolveResult', 'Resolver', 'StateFactory'
- ),
- 81 => array (
- 'ServerSocketFactory', 'SocketFactory'
- ),
- 82 => array (
- 'CertPathTrustManagerParameters', 'HandshakeCompletedEvent', 'HandshakeCompletedListener', 'HostnameVerifier', 'HttpsURLConnection', 'KeyManager', 'KeyManagerFactory', 'KeyManagerFactorySpi', 'KeyStoreBuilderParameters', 'ManagerFactoryParameters', 'SSLContext', 'SSLContextSpi', 'SSLEngine', 'SSLEngineResult', 'SSLEngineResult.HandshakeStatus', 'SSLEngineResult.Status', 'SSLException', 'SSLHandshakeException', 'SSLKeyException', 'SSLPeerUnverifiedException', 'SSLPermission', 'SSLProtocolException', 'SSLServerSocket', 'SSLServerSocketFactory', 'SSLSession', 'SSLSessionBindingEvent', 'SSLSessionBindingListener', 'SSLSessionContext', 'SSLSocket', 'SSLSocketFactory', 'TrustManager', 'TrustManagerFactory', 'TrustManagerFactorySpi', 'X509ExtendedKeyManager', 'X509KeyManager', 'X509TrustManager'
- ),
- 83 => array (
- 'AttributeException', 'CancelablePrintJob', 'Doc', 'DocFlavor', 'DocFlavor.BYTE_ARRAY', 'DocFlavor.CHAR_ARRAY', 'DocFlavor.INPUT_STREAM', 'DocFlavor.READER', 'DocFlavor.SERVICE_FORMATTED', 'DocFlavor.STRING', 'DocFlavor.URL', 'DocPrintJob', 'FlavorException', 'MultiDoc', 'MultiDocPrintJob', 'MultiDocPrintService', 'PrintException', 'PrintService', 'PrintServiceLookup', 'ServiceUI', 'ServiceUIFactory', 'SimpleDoc', 'StreamPrintService', 'StreamPrintServiceFactory', 'URIException'
- ),
- 84 => array (
- 'AttributeSetUtilities', 'DateTimeSyntax', 'DocAttribute', 'DocAttributeSet', 'EnumSyntax', 'HashAttributeSet', 'HashDocAttributeSet', 'HashPrintJobAttributeSet', 'HashPrintRequestAttributeSet', 'HashPrintServiceAttributeSet', 'IntegerSyntax', 'PrintJobAttribute', 'PrintJobAttributeSet', 'PrintRequestAttribute', 'PrintRequestAttributeSet', 'PrintServiceAttribute', 'PrintServiceAttributeSet', 'ResolutionSyntax', 'SetOfIntegerSyntax', 'Size2DSyntax', 'SupportedValuesAttribute', 'TextSyntax', 'URISyntax', 'UnmodifiableSetException'
- ),
- 85 => array (
- 'Chromaticity', 'ColorSupported', 'Compression', 'Copies', 'CopiesSupported', 'DateTimeAtCompleted', 'DateTimeAtCreation', 'DateTimeAtProcessing', 'Destination', 'DocumentName', 'Fidelity', 'Finishings', 'JobHoldUntil', 'JobImpressions', 'JobImpressionsCompleted', 'JobImpressionsSupported', 'JobKOctets', 'JobKOctetsProcessed', 'JobKOctetsSupported', 'JobMediaSheets', 'JobMediaSheetsCompleted', 'JobMediaSheetsSupported', 'JobMessageFromOperator', 'JobName', 'JobOriginatingUserName', 'JobPriority', 'JobPrioritySupported', 'JobSheets', 'JobState', 'JobStateReason', 'JobStateReasons', 'Media', 'MediaName', 'MediaPrintableArea', 'MediaSize', 'MediaSize.Engineering', 'MediaSize.ISO', 'MediaSize.JIS', 'MediaSize.NA', 'MediaSize.Other', 'MediaSizeName', 'MediaTray', 'MultipleDocumentHandling', 'NumberOfDocuments', 'NumberOfInterveningJobs', 'NumberUp', 'NumberUpSupported', 'OrientationRequested', 'OutputDeviceAssigned', 'PDLOverrideSupported', 'PageRanges', 'PagesPerMinute', 'Pag
esPerMinuteColor',
- 'PresentationDirection', 'PrintQuality', 'PrinterInfo', 'PrinterIsAcceptingJobs', 'PrinterLocation', 'PrinterMakeAndModel', 'PrinterMessageFromOperator', 'PrinterMoreInfo', 'PrinterMoreInfoManufacturer', 'PrinterName', 'PrinterResolution', 'PrinterState', 'PrinterStateReason', 'PrinterStateReasons', 'PrinterURI', 'QueuedJobCount', 'ReferenceUriSchemesSupported', 'RequestingUserName', 'Severity', 'SheetCollate', 'Sides'
- ),
- 86 => array (
- 'PrintEvent', 'PrintJobAdapter', 'PrintJobAttributeEvent', 'PrintJobAttributeListener', 'PrintJobEvent', 'PrintJobListener', 'PrintServiceAttributeEvent', 'PrintServiceAttributeListener'
- ),
- 87 => array (
- 'PortableRemoteObject'
- ),
- 88 => array (
- 'ClassDesc', 'PortableRemoteObjectDelegate', 'Stub', 'StubDelegate', 'Tie', 'Util', 'UtilDelegate', 'ValueHandler', 'ValueHandlerMultiFormat'
- ),
- 89 => array (
- 'SslRMIClientSocketFactory', 'SslRMIServerSocketFactory'
- ),
- 90 => array (
- 'AuthPermission', 'DestroyFailedException', 'Destroyable', 'PrivateCredentialPermission', 'RefreshFailedException', 'Refreshable', 'Subject', 'SubjectDomainCombiner'
- ),
- 91 => array (
- 'Callback', 'CallbackHandler', 'ChoiceCallback', 'ConfirmationCallback', 'LanguageCallback', 'NameCallback', 'PasswordCallback', 'TextInputCallback', 'TextOutputCallback', 'UnsupportedCallbackException'
- ),
- 92 => array (
- 'DelegationPermission', 'KerberosKey', 'KerberosPrincipal', 'KerberosTicket', 'ServicePermission'
- ),
- 93 => array (
- 'AccountException', 'AccountExpiredException', 'AccountLockedException', 'AccountNotFoundException', 'AppConfigurationEntry', 'AppConfigurationEntry.LoginModuleControlFlag', 'Configuration', 'CredentialException', 'CredentialExpiredException', 'CredentialNotFoundException', 'FailedLoginException', 'LoginContext', 'LoginException'
- ),
- 94 => array (
- 'LoginModule'
- ),
- 95 => array (
- 'X500Principal', 'X500PrivateCredential'
- ),
- 96 => array (
- 'AuthorizeCallback', 'RealmCallback', 'RealmChoiceCallback', 'Sasl', 'SaslClient', 'SaslClientFactory', 'SaslException', 'SaslServer', 'SaslServerFactory'
- ),
- 97 => array (
- 'ControllerEventListener', 'Instrument', 'InvalidMidiDataException', 'MetaEventListener', 'MetaMessage', 'MidiChannel', 'MidiDevice', 'MidiDevice.Info', 'MidiEvent', 'MidiFileFormat', 'MidiMessage', 'MidiSystem', 'MidiUnavailableException', 'Patch', 'Receiver', 'Sequence', 'Sequencer', 'Sequencer.SyncMode', 'ShortMessage', 'Soundbank', 'SoundbankResource', 'Synthesizer', 'SysexMessage', 'Track', 'Transmitter', 'VoiceStatus'
- ),
- 98 => array (
- 'MidiDeviceProvider', 'MidiFileReader', 'MidiFileWriter', 'SoundbankReader'
- ),
- 99 => array (
- 'AudioFileFormat', 'AudioFileFormat.Type', 'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream', 'AudioPermission', 'AudioSystem', 'BooleanControl', 'BooleanControl.Type', 'Clip', 'CompoundControl', 'CompoundControl.Type', 'Control.Type', 'DataLine', 'DataLine.Info', 'EnumControl', 'EnumControl.Type', 'FloatControl', 'FloatControl.Type', 'Line', 'Line.Info', 'LineEvent', 'LineEvent.Type', 'LineListener', 'LineUnavailableException', 'Mixer', 'Mixer.Info', 'Port', 'Port.Info', 'ReverbType', 'SourceDataLine', 'TargetDataLine', 'UnsupportedAudioFileException'
- ),
- 100 => array (
- 'AudioFileReader', 'AudioFileWriter', 'FormatConversionProvider', 'MixerProvider'
- ),
- 101 => array (
- 'ConnectionEvent', 'ConnectionEventListener', 'ConnectionPoolDataSource', 'DataSource', 'PooledConnection', 'RowSet', 'RowSetEvent', 'RowSetInternal', 'RowSetListener', 'RowSetMetaData', 'RowSetReader', 'RowSetWriter', 'XAConnection', 'XADataSource'
- ),
- 102 => array (
- 'BaseRowSet', 'CachedRowSet', 'FilteredRowSet', 'JdbcRowSet', 'JoinRowSet', 'Joinable', 'Predicate', 'RowSetMetaDataImpl', 'RowSetWarning', 'WebRowSet'
- ),
- 103 => array (
- 'SQLInputImpl', 'SQLOutputImpl', 'SerialArray', 'SerialBlob', 'SerialClob', 'SerialDatalink', 'SerialException', 'SerialJavaObject', 'SerialRef', 'SerialStruct'
- ),
- 104 => array (
- 'SyncFactory', 'SyncFactoryException', 'SyncProvider', 'SyncProviderException', 'SyncResolver', 'TransactionalWriter', 'XmlReader', 'XmlWriter'
- ),
- 105 => array (
- 'AbstractAction', 'AbstractButton', 'AbstractCellEditor', 'AbstractListModel', 'AbstractSpinnerModel', 'Action', 'ActionMap', 'BorderFactory', 'BoundedRangeModel', 'Box', 'Box.Filler', 'BoxLayout', 'ButtonGroup', 'ButtonModel', 'CellEditor', 'CellRendererPane', 'ComboBoxEditor', 'ComboBoxModel', 'ComponentInputMap', 'DebugGraphics', 'DefaultBoundedRangeModel', 'DefaultButtonModel', 'DefaultCellEditor', 'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultFocusManager', 'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 'DefaultListModel', 'DefaultListSelectionModel', 'DefaultSingleSelectionModel', 'DesktopManager', 'FocusManager', 'GrayFilter', 'Icon', 'ImageIcon', 'InputMap', 'InputVerifier', 'InternalFrameFocusTraversalPolicy', 'JApplet', 'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox', 'JComboBox.KeySelectionManager', 'JComponent', 'JDesktopPane', 'JDialog', 'JEditorPane', 'JFileChooser', 'JFormattedTextField', 'JFormattedTex
tField.AbstractFormatter',
- 'JFormattedTextField.AbstractFormatterFactory', 'JFrame', 'JInternalFrame', 'JInternalFrame.JDesktopIcon', 'JLabel', 'JLayeredPane', 'JList', 'JMenu', 'JMenuBar', 'JMenuItem', 'JOptionPane', 'JPanel', 'JPasswordField', 'JPopupMenu', 'JPopupMenu.Separator', 'JProgressBar', 'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane', 'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider', 'JSpinner', 'JSpinner.DateEditor', 'JSpinner.DefaultEditor', 'JSpinner.ListEditor', 'JSpinner.NumberEditor', 'JSplitPane', 'JTabbedPane', 'JTable', 'JTable.PrintMode', 'JTextArea', 'JTextField', 'JTextPane', 'JToggleButton', 'JToggleButton.ToggleButtonModel', 'JToolBar', 'JToolBar.Separator', 'JToolTip', 'JTree', 'JTree.DynamicUtilTreeNode', 'JTree.EmptySelectionModel', 'JViewport', 'JWindow', 'KeyStroke', 'LayoutFocusTraversalPolicy', 'ListCellRenderer', 'ListModel', 'ListSelectionModel', 'LookAndFeel', 'MenuElement', 'MenuSelectionManager', 'MutableComboBoxModel', 'OverlayLayout', 'Popup', 'PopupF
actory', 'ProgressMonitor',
- 'ProgressMonitorInputStream', 'Renderer', 'RepaintManager', 'RootPaneContainer', 'ScrollPaneConstants', 'ScrollPaneLayout', 'ScrollPaneLayout.UIResource', 'Scrollable', 'SingleSelectionModel', 'SizeRequirements', 'SizeSequence', 'SortingFocusTraversalPolicy', 'SpinnerDateModel', 'SpinnerListModel', 'SpinnerModel', 'SpinnerNumberModel', 'Spring', 'SpringLayout', 'SpringLayout.Constraints', 'SwingConstants', 'SwingUtilities', 'ToolTipManager', 'TransferHandler', 'UIDefaults', 'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap', 'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue', 'UIManager', 'UIManager.LookAndFeelInfo', 'UnsupportedLookAndFeelException', 'ViewportLayout', 'WindowConstants'
- ),
- 106 => array (
- 'AbstractBorder', 'BevelBorder', 'Border', 'CompoundBorder', 'EmptyBorder', 'EtchedBorder', 'LineBorder', 'MatteBorder', 'SoftBevelBorder', 'TitledBorder'
- ),
- 107 => array (
- 'AbstractColorChooserPanel', 'ColorChooserComponentFactory', 'ColorSelectionModel', 'DefaultColorSelectionModel'
- ),
- 108 => array (
- 'AncestorEvent', 'AncestorListener', 'CaretEvent', 'CaretListener', 'CellEditorListener', 'ChangeEvent', 'ChangeListener', 'DocumentEvent.ElementChange', 'DocumentEvent.EventType', 'DocumentListener', 'EventListenerList', 'HyperlinkEvent', 'HyperlinkEvent.EventType', 'HyperlinkListener', 'InternalFrameAdapter', 'InternalFrameEvent', 'InternalFrameListener', 'ListDataEvent', 'ListDataListener', 'ListSelectionEvent', 'ListSelectionListener', 'MenuDragMouseEvent', 'MenuDragMouseListener', 'MenuEvent', 'MenuKeyEvent', 'MenuKeyListener', 'MenuListener', 'MouseInputAdapter', 'MouseInputListener', 'PopupMenuEvent', 'PopupMenuListener', 'SwingPropertyChangeSupport', 'TableColumnModelEvent', 'TableColumnModelListener', 'TableModelEvent', 'TableModelListener', 'TreeExpansionEvent', 'TreeExpansionListener', 'TreeModelEvent', 'TreeModelListener', 'TreeSelectionEvent', 'TreeSelectionListener', 'TreeWillExpandListener', 'UndoableEditEvent', 'UndoableEditListener'
- ),
- 109 => array (
- 'FileSystemView', 'FileView'
- ),
- 110 => array (
- 'ActionMapUIResource', 'BorderUIResource', 'BorderUIResource.BevelBorderUIResource', 'BorderUIResource.CompoundBorderUIResource', 'BorderUIResource.EmptyBorderUIResource', 'BorderUIResource.EtchedBorderUIResource', 'BorderUIResource.LineBorderUIResource', 'BorderUIResource.MatteBorderUIResource', 'BorderUIResource.TitledBorderUIResource', 'ButtonUI', 'ColorChooserUI', 'ColorUIResource', 'ComboBoxUI', 'ComponentInputMapUIResource', 'ComponentUI', 'DesktopIconUI', 'DesktopPaneUI', 'DimensionUIResource', 'FileChooserUI', 'FontUIResource', 'IconUIResource', 'InputMapUIResource', 'InsetsUIResource', 'InternalFrameUI', 'LabelUI', 'ListUI', 'MenuBarUI', 'MenuItemUI', 'OptionPaneUI', 'PanelUI', 'PopupMenuUI', 'ProgressBarUI', 'RootPaneUI', 'ScrollBarUI', 'ScrollPaneUI', 'SeparatorUI', 'SliderUI', 'SpinnerUI', 'SplitPaneUI', 'TabbedPaneUI', 'TableHeaderUI', 'TableUI', 'TextUI', 'ToolBarUI', 'ToolTipUI', 'TreeUI', 'UIResource', 'ViewportUI'
- ),
- 111 => array (
- 'BasicArrowButton', 'BasicBorders', 'BasicBorders.ButtonBorder', 'BasicBorders.FieldBorder', 'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder', 'BasicBorders.RadioButtonBorder', 'BasicBorders.RolloverButtonBorder', 'BasicBorders.SplitPaneBorder', 'BasicBorders.ToggleButtonBorder', 'BasicButtonListener', 'BasicButtonUI', 'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor', 'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource', 'BasicComboBoxUI', 'BasicComboPopup', 'BasicDesktopIconUI', 'BasicDesktopPaneUI', 'BasicDirectoryModel', 'BasicEditorPaneUI', 'BasicFileChooserUI', 'BasicFormattedTextFieldUI', 'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 'BasicInternalFrameTitlePane', 'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 'BasicOptionPaneUI', 'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 'Bas
icPasswordFieldUI',
- 'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI', 'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI', 'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI', 'BasicSliderUI', 'BasicSpinnerUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI', 'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret', 'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 'BasicToolBarSeparatorUI', 'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 'BasicViewportUI', 'ComboPopup', 'DefaultMenuLayout'
- ),
- 112 => array (
- 'DefaultMetalTheme', 'MetalBorders', 'MetalBorders.ButtonBorder', 'MetalBorders.Flush3DBorder', 'MetalBorders.InternalFrameBorder', 'MetalBorders.MenuBarBorder', 'MetalBorders.MenuItemBorder', 'MetalBorders.OptionDialogBorder', 'MetalBorders.PaletteBorder', 'MetalBorders.PopupMenuBorder', 'MetalBorders.RolloverButtonBorder', 'MetalBorders.ScrollPaneBorder', 'MetalBorders.TableHeaderBorder', 'MetalBorders.TextFieldBorder', 'MetalBorders.ToggleButtonBorder', 'MetalBorders.ToolBarBorder', 'MetalButtonUI', 'MetalCheckBoxIcon', 'MetalCheckBoxUI', 'MetalComboBoxButton', 'MetalComboBoxEditor', 'MetalComboBoxEditor.UIResource', 'MetalComboBoxIcon', 'MetalComboBoxUI', 'MetalDesktopIconUI', 'MetalFileChooserUI', 'MetalIconFactory', 'MetalIconFactory.FileIcon16', 'MetalIconFactory.FolderIcon16', 'MetalIconFactory.PaletteCloseIcon', 'MetalIconFactory.TreeControlIcon', 'MetalIconFactory.TreeFolderIcon', 'MetalIconFactory.TreeLeafIcon', 'MetalInternalFrameTitlePane', 'MetalInternalFram
eUI', 'MetalLabelUI',
- 'MetalLookAndFeel', 'MetalMenuBarUI', 'MetalPopupMenuSeparatorUI', 'MetalProgressBarUI', 'MetalRadioButtonUI', 'MetalRootPaneUI', 'MetalScrollBarUI', 'MetalScrollButton', 'MetalScrollPaneUI', 'MetalSeparatorUI', 'MetalSliderUI', 'MetalSplitPaneUI', 'MetalTabbedPaneUI', 'MetalTextFieldUI', 'MetalTheme', 'MetalToggleButtonUI', 'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI', 'OceanTheme'
- ),
- 113 => array (
- 'MultiButtonUI', 'MultiColorChooserUI', 'MultiComboBoxUI', 'MultiDesktopIconUI', 'MultiDesktopPaneUI', 'MultiFileChooserUI', 'MultiInternalFrameUI', 'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel', 'MultiMenuBarUI', 'MultiMenuItemUI', 'MultiOptionPaneUI', 'MultiPanelUI', 'MultiPopupMenuUI', 'MultiProgressBarUI', 'MultiRootPaneUI', 'MultiScrollBarUI', 'MultiScrollPaneUI', 'MultiSeparatorUI', 'MultiSliderUI', 'MultiSpinnerUI', 'MultiSplitPaneUI', 'MultiTabbedPaneUI', 'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI', 'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI', 'MultiViewportUI'
- ),
- 114 => array (
- 'ColorType', 'Region', 'SynthConstants', 'SynthContext', 'SynthGraphicsUtils', 'SynthLookAndFeel', 'SynthPainter', 'SynthStyle', 'SynthStyleFactory'
- ),
- 115 => array (
- 'AbstractTableModel', 'DefaultTableCellRenderer', 'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel', 'DefaultTableModel', 'JTableHeader', 'TableCellEditor', 'TableCellRenderer', 'TableColumn', 'TableColumnModel', 'TableModel'
- ),
- 116 => array (
- 'AbstractDocument', 'AbstractDocument.AttributeContext', 'AbstractDocument.Content', 'AbstractDocument.ElementEdit', 'AbstractWriter', 'AsyncBoxView', 'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute', 'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute', 'BadLocationException', 'BoxView', 'Caret', 'ChangedCharSetException', 'ComponentView', 'CompositeView', 'DateFormatter', 'DefaultCaret', 'DefaultEditorKit', 'DefaultEditorKit.BeepAction', 'DefaultEditorKit.CopyAction', 'DefaultEditorKit.CutAction', 'DefaultEditorKit.DefaultKeyTypedAction', 'DefaultEditorKit.InsertBreakAction', 'DefaultEditorKit.InsertContentAction', 'DefaultEditorKit.InsertTabAction', 'DefaultEditorKit.PasteAction', 'DefaultFormatter', 'DefaultFormatterFactory', 'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter', 'DefaultStyledDocument', 'DefaultStyledDocument.AttributeUndoableEdit', 'DefaultStyledDocument.ElementSpec', 'DefaultTextUI', 'DocumentFilter', 'Docume
ntFilter.FilterBypass',
- 'EditorKit', 'ElementIterator', 'FieldView', 'FlowView', 'FlowView.FlowStrategy', 'GapContent', 'GlyphView', 'GlyphView.GlyphPainter', 'Highlighter', 'Highlighter.Highlight', 'Highlighter.HighlightPainter', 'IconView', 'InternationalFormatter', 'JTextComponent', 'JTextComponent.KeyBinding', 'Keymap', 'LabelView', 'LayeredHighlighter', 'LayeredHighlighter.LayerPainter', 'LayoutQueue', 'MaskFormatter', 'MutableAttributeSet', 'NavigationFilter', 'NavigationFilter.FilterBypass', 'NumberFormatter', 'PasswordView', 'PlainDocument', 'PlainView', 'Position', 'Position.Bias', 'Segment', 'SimpleAttributeSet', 'StringContent', 'Style', 'StyleConstants', 'StyleConstants.CharacterConstants', 'StyleConstants.ColorConstants', 'StyleConstants.FontConstants', 'StyleConstants.ParagraphConstants', 'StyleContext', 'StyledDocument', 'StyledEditorKit', 'StyledEditorKit.AlignmentAction', 'StyledEditorKit.BoldAction', 'StyledEditorKit.FontFamilyAction', 'StyledEditorKit.FontSizeAction', 'StyledE
ditorKit.ForegroundAction',
- 'StyledEditorKit.ItalicAction', 'StyledEditorKit.StyledTextAction', 'StyledEditorKit.UnderlineAction', 'TabExpander', 'TabSet', 'TabStop', 'TabableView', 'TableView', 'TextAction', 'Utilities', 'View', 'ViewFactory', 'WrappedPlainView', 'ZoneView'
- ),
- 117 => array (
- 'BlockView', 'CSS', 'CSS.Attribute', 'FormSubmitEvent', 'FormSubmitEvent.MethodType', 'FormView', 'HTML', 'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag', 'HTMLDocument', 'HTMLDocument.Iterator', 'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory', 'HTMLEditorKit.HTMLTextAction', 'HTMLEditorKit.InsertHTMLTextAction', 'HTMLEditorKit.LinkController', 'HTMLEditorKit.Parser', 'HTMLEditorKit.ParserCallback', 'HTMLFrameHyperlinkEvent', 'HTMLWriter', 'ImageView', 'InlineView', 'ListView', 'MinimalHTMLWriter', 'ObjectView', 'Option', 'StyleSheet', 'StyleSheet.BoxPainter', 'StyleSheet.ListPainter'
- ),
- 118 => array (
- 'ContentModel', 'DTD', 'DTDConstants', 'DocumentParser', 'ParserDelegator', 'TagElement'
- ),
- 119 => array (
- 'RTFEditorKit'
- ),
- 120 => array (
- 'AbstractLayoutCache', 'AbstractLayoutCache.NodeDimensions', 'DefaultMutableTreeNode', 'DefaultTreeCellEditor', 'DefaultTreeCellRenderer', 'DefaultTreeModel', 'DefaultTreeSelectionModel', 'ExpandVetoException', 'FixedHeightLayoutCache', 'MutableTreeNode', 'RowMapper', 'TreeCellEditor', 'TreeCellRenderer', 'TreeModel', 'TreeNode', 'TreePath', 'TreeSelectionModel', 'VariableHeightLayoutCache'
- ),
- 121 => array (
- 'AbstractUndoableEdit', 'CannotRedoException', 'CannotUndoException', 'CompoundEdit', 'StateEdit', 'StateEditable', 'UndoManager', 'UndoableEdit', 'UndoableEditSupport'
- ),
- 122 => array (
- 'InvalidTransactionException', 'TransactionRequiredException', 'TransactionRolledbackException'
- ),
- 123 => array (
- 'XAException', 'XAResource', 'Xid'
- ),
- 124 => array (
- 'XMLConstants'
- ),
- 125 => array (
- 'DatatypeConfigurationException', 'DatatypeConstants', 'DatatypeConstants.Field', 'DatatypeFactory', 'Duration', 'XMLGregorianCalendar'
- ),
- 126 => array (
- 'NamespaceContext', 'QName'
- ),
- 127 => array (
- 'DocumentBuilder', 'DocumentBuilderFactory', 'FactoryConfigurationError', 'ParserConfigurationException', 'SAXParser', 'SAXParserFactory'
- ),
- 128 => array (
- 'ErrorListener', 'OutputKeys', 'Result', 'Source', 'SourceLocator', 'Templates', 'Transformer', 'TransformerConfigurationException', 'TransformerException', 'TransformerFactory', 'TransformerFactoryConfigurationError', 'URIResolver'
- ),
- 129 => array (
- 'DOMResult', 'DOMSource'
- ),
- 130 => array (
- 'SAXResult', 'SAXSource', 'SAXTransformerFactory', 'TemplatesHandler', 'TransformerHandler'
- ),
- 131 => array (
- 'StreamResult', 'StreamSource'
- ),
- 132 => array (
- 'Schema', 'SchemaFactory', 'SchemaFactoryLoader', 'TypeInfoProvider', 'Validator', 'ValidatorHandler'
- ),
- 133 => array (
- 'XPath', 'XPathConstants', 'XPathException', 'XPathExpression', 'XPathExpressionException', 'XPathFactory', 'XPathFactoryConfigurationException', 'XPathFunction', 'XPathFunctionException', 'XPathFunctionResolver', 'XPathVariableResolver'
- ),
- 134 => array (
- 'ChannelBinding', 'GSSContext', 'GSSCredential', 'GSSException', 'GSSManager', 'GSSName', 'MessageProp', 'Oid'
- ),
- 135 => array (
- 'ACTIVITY_COMPLETED', 'ACTIVITY_REQUIRED', 'ARG_IN', 'ARG_INOUT', 'ARG_OUT', 'Any', 'AnyHolder', 'AnySeqHolder', 'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION', 'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 'BAD_POLICY_VALUE', 'BAD_QOS', 'BAD_TYPECODE', 'BooleanHolder', 'BooleanSeqHelper', 'BooleanSeqHolder', 'ByteHolder', 'CODESET_INCOMPATIBLE', 'COMM_FAILURE', 'CTX_RESTRICT_SCOPE', 'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 'CompletionStatus', 'CompletionStatusHelper', 'ContextList', 'CurrentHolder', 'CustomMarshal', 'DATA_CONVERSION', 'DefinitionKind', 'DefinitionKindHelper', 'DomainManager', 'DomainManagerOperations', 'DoubleHolder', 'DoubleSeqHelper', 'DoubleSeqHolder', 'Environment', 'ExceptionList', 'FREE_MEM', 'FixedHolder', 'FloatHolder', 'FloatSeqHelper', 'FloatSeqHolder', 'IDLType', 'IDLTypeHelper', 'IDLTypeOperations', 'IMP_LIMIT', 'INITIALIZE', 'INTERNAL', 'INTF_REPOS', 'INVALID_ACTIVITY', 'INVALID_TRANSACTION', 'INV_FLAG', 'INV_IDENT', 'INV_OBJREF', 'I
NV_POLICY', 'IRObject',
- 'IRObjectOperations', 'IdentifierHelper', 'IntHolder', 'LocalObject', 'LongHolder', 'LongLongSeqHelper', 'LongLongSeqHolder', 'LongSeqHelper', 'LongSeqHolder', 'MARSHAL', 'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION', 'NO_RESOURCES', 'NO_RESPONSE', 'NVList', 'NamedValue', 'OBJECT_NOT_EXIST', 'OBJ_ADAPTER', 'OMGVMCID', 'ObjectHelper', 'ObjectHolder', 'OctetSeqHelper', 'OctetSeqHolder', 'PERSIST_STORE', 'PRIVATE_MEMBER', 'PUBLIC_MEMBER', 'ParameterMode', 'ParameterModeHelper', 'ParameterModeHolder', 'PolicyError', 'PolicyErrorCodeHelper', 'PolicyErrorHelper', 'PolicyErrorHolder', 'PolicyHelper', 'PolicyHolder', 'PolicyListHelper', 'PolicyListHolder', 'PolicyOperations', 'PolicyTypeHelper', 'PrincipalHolder', 'REBIND', 'RepositoryIdHelper', 'Request', 'ServerRequest', 'ServiceDetail', 'ServiceDetailHelper', 'ServiceInformation', 'ServiceInformationHelper', 'ServiceInformationHolder', 'SetOverrideType', 'SetOverrideTypeHelper', 'ShortHolder', 'ShortSeqHelper', 'ShortSeqHolder'
, 'StringHolder',
- 'StringSeqHelper', 'StringSeqHolder', 'StringValueHelper', 'StructMember', 'StructMemberHelper', 'SystemException', 'TCKind', 'TIMEOUT', 'TRANSACTION_MODE', 'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK', 'TRANSACTION_UNAVAILABLE', 'TRANSIENT', 'TypeCode', 'TypeCodeHolder', 'ULongLongSeqHelper', 'ULongLongSeqHolder', 'ULongSeqHelper', 'ULongSeqHolder', 'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE', 'UShortSeqHelper', 'UShortSeqHolder', 'UnionMember', 'UnionMemberHelper', 'UnknownUserException', 'UnknownUserExceptionHelper', 'UnknownUserExceptionHolder', 'UserException', 'VM_ABSTRACT', 'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE', 'ValueBaseHelper', 'ValueBaseHolder', 'ValueMember', 'ValueMemberHelper', 'VersionSpecHelper', 'VisibilityHelper', 'WCharSeqHelper', 'WCharSeqHolder', 'WStringSeqHelper', 'WStringSeqHolder', 'WStringValueHelper', 'WrongTransaction', 'WrongTransactionHelper', 'WrongTransactionHolder', '_IDLTypeStub', '_PolicyStub'
- ),
- 136 => array (
- 'Invalid', 'InvalidSeq'
- ),
- 137 => array (
- 'BadKind'
- ),
- 138 => array (
- 'ApplicationException', 'BoxedValueHelper', 'CustomValue', 'IDLEntity', 'IndirectionException', 'InvokeHandler', 'RemarshalException', 'ResponseHandler', 'ServantObject', 'Streamable', 'StreamableValue', 'UnknownException', 'ValueBase', 'ValueFactory', 'ValueInputStream', 'ValueOutputStream'
- ),
- 139 => array (
- 'BindingHelper', 'BindingHolder', 'BindingIterator', 'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations', 'BindingIteratorPOA', 'BindingListHelper', 'BindingListHolder', 'BindingType', 'BindingTypeHelper', 'BindingTypeHolder', 'IstringHelper', 'NameComponent', 'NameComponentHelper', 'NameComponentHolder', 'NameHelper', 'NameHolder', 'NamingContext', 'NamingContextExt', 'NamingContextExtHelper', 'NamingContextExtHolder', 'NamingContextExtOperations', 'NamingContextExtPOA', 'NamingContextHelper', 'NamingContextHolder', 'NamingContextOperations', 'NamingContextPOA', '_BindingIteratorImplBase', '_BindingIteratorStub', '_NamingContextExtStub', '_NamingContextImplBase', '_NamingContextStub'
- ),
- 140 => array (
- 'AddressHelper', 'InvalidAddress', 'InvalidAddressHelper', 'InvalidAddressHolder', 'StringNameHelper', 'URLStringHelper'
- ),
- 141 => array (
- 'AlreadyBound', 'AlreadyBoundHelper', 'AlreadyBoundHolder', 'CannotProceed', 'CannotProceedHelper', 'CannotProceedHolder', 'InvalidNameHolder', 'NotEmpty', 'NotEmptyHelper', 'NotEmptyHolder', 'NotFound', 'NotFoundHelper', 'NotFoundHolder', 'NotFoundReason', 'NotFoundReasonHelper', 'NotFoundReasonHolder'
- ),
- 142 => array (
- 'Parameter'
- ),
- 143 => array (
- 'DynAnyFactory', 'DynAnyFactoryHelper', 'DynAnyFactoryOperations', 'DynAnyHelper', 'DynAnyOperations', 'DynAnySeqHelper', 'DynArrayHelper', 'DynArrayOperations', 'DynEnumHelper', 'DynEnumOperations', 'DynFixedHelper', 'DynFixedOperations', 'DynSequenceHelper', 'DynSequenceOperations', 'DynStructHelper', 'DynStructOperations', 'DynUnionHelper', 'DynUnionOperations', 'DynValueBox', 'DynValueBoxOperations', 'DynValueCommon', 'DynValueCommonOperations', 'DynValueHelper', 'DynValueOperations', 'NameDynAnyPair', 'NameDynAnyPairHelper', 'NameDynAnyPairSeqHelper', 'NameValuePairSeqHelper', '_DynAnyFactoryStub', '_DynAnyStub', '_DynArrayStub', '_DynEnumStub', '_DynFixedStub', '_DynSequenceStub', '_DynStructStub', '_DynUnionStub', '_DynValueStub'
- ),
- 144 => array (
- 'InconsistentTypeCodeHelper'
- ),
- 145 => array (
- 'InvalidValueHelper'
- ),
- 146 => array (
- 'CodeSets', 'Codec', 'CodecFactory', 'CodecFactoryHelper', 'CodecFactoryOperations', 'CodecOperations', 'ComponentIdHelper', 'ENCODING_CDR_ENCAPS', 'Encoding', 'ExceptionDetailMessage', 'IOR', 'IORHelper', 'IORHolder', 'MultipleComponentProfileHelper', 'MultipleComponentProfileHolder', 'ProfileIdHelper', 'RMICustomMaxStreamFormat', 'ServiceContext', 'ServiceContextHelper', 'ServiceContextHolder', 'ServiceContextListHelper', 'ServiceContextListHolder', 'ServiceIdHelper', 'TAG_ALTERNATE_IIOP_ADDRESS', 'TAG_CODE_SETS', 'TAG_INTERNET_IOP', 'TAG_JAVA_CODEBASE', 'TAG_MULTIPLE_COMPONENTS', 'TAG_ORB_TYPE', 'TAG_POLICIES', 'TAG_RMI_CUSTOM_MAX_STREAM_FORMAT', 'TaggedComponent', 'TaggedComponentHelper', 'TaggedComponentHolder', 'TaggedProfile', 'TaggedProfileHelper', 'TaggedProfileHolder', 'TransactionService'
- ),
- 147 => array (
- 'UnknownEncoding', 'UnknownEncodingHelper'
- ),
- 148 => array (
- 'FormatMismatch', 'FormatMismatchHelper', 'InvalidTypeForEncoding', 'InvalidTypeForEncodingHelper'
- ),
- 149 => array (
- 'SYNC_WITH_TRANSPORT', 'SyncScopeHelper'
- ),
- 150 => array (
- 'ACTIVE', 'AdapterManagerIdHelper', 'AdapterNameHelper', 'AdapterStateHelper', 'ClientRequestInfo', 'ClientRequestInfoOperations', 'ClientRequestInterceptor', 'ClientRequestInterceptorOperations', 'DISCARDING', 'HOLDING', 'INACTIVE', 'IORInfo', 'IORInfoOperations', 'IORInterceptor', 'IORInterceptorOperations', 'IORInterceptor_3_0', 'IORInterceptor_3_0Helper', 'IORInterceptor_3_0Holder', 'IORInterceptor_3_0Operations', 'Interceptor', 'InterceptorOperations', 'InvalidSlot', 'InvalidSlotHelper', 'LOCATION_FORWARD', 'NON_EXISTENT', 'ORBIdHelper', 'ORBInitInfo', 'ORBInitInfoOperations', 'ORBInitializer', 'ORBInitializerOperations', 'ObjectReferenceFactory', 'ObjectReferenceFactoryHelper', 'ObjectReferenceFactoryHolder', 'ObjectReferenceTemplate', 'ObjectReferenceTemplateHelper', 'ObjectReferenceTemplateHolder', 'ObjectReferenceTemplateSeqHelper', 'ObjectReferenceTemplateSeqHolder', 'PolicyFactory', 'PolicyFactoryOperations', 'RequestInfo', 'RequestInfoOperations', 'SUCCESSFUL'
, 'SYSTEM_EXCEPTION',
- 'ServerIdHelper', 'ServerRequestInfo', 'ServerRequestInfoOperations', 'ServerRequestInterceptor', 'ServerRequestInterceptorOperations', 'TRANSPORT_RETRY', 'USER_EXCEPTION'
- ),
- 151 => array (
- 'DuplicateName', 'DuplicateNameHelper'
- ),
- 152 => array (
- 'AdapterActivator', 'AdapterActivatorOperations', 'ID_ASSIGNMENT_POLICY_ID', 'ID_UNIQUENESS_POLICY_ID', 'IMPLICIT_ACTIVATION_POLICY_ID', 'IdAssignmentPolicy', 'IdAssignmentPolicyOperations', 'IdAssignmentPolicyValue', 'IdUniquenessPolicy', 'IdUniquenessPolicyOperations', 'IdUniquenessPolicyValue', 'ImplicitActivationPolicy', 'ImplicitActivationPolicyOperations', 'ImplicitActivationPolicyValue', 'LIFESPAN_POLICY_ID', 'LifespanPolicy', 'LifespanPolicyOperations', 'LifespanPolicyValue', 'POA', 'POAHelper', 'POAManager', 'POAManagerOperations', 'POAOperations', 'REQUEST_PROCESSING_POLICY_ID', 'RequestProcessingPolicy', 'RequestProcessingPolicyOperations', 'RequestProcessingPolicyValue', 'SERVANT_RETENTION_POLICY_ID', 'Servant', 'ServantActivator', 'ServantActivatorHelper', 'ServantActivatorOperations', 'ServantActivatorPOA', 'ServantLocator', 'ServantLocatorHelper', 'ServantLocatorOperations', 'ServantLocatorPOA', 'ServantManager', 'ServantManagerOperations', 'ServantRetentio
nPolicy',
- 'ServantRetentionPolicyOperations', 'ServantRetentionPolicyValue', 'THREAD_POLICY_ID', 'ThreadPolicy', 'ThreadPolicyOperations', 'ThreadPolicyValue', '_ServantActivatorStub', '_ServantLocatorStub'
- ),
- 153 => array (
- 'NoContext', 'NoContextHelper'
- ),
- 154 => array (
- 'AdapterInactive', 'AdapterInactiveHelper', 'State'
- ),
- 155 => array (
- 'AdapterAlreadyExists', 'AdapterAlreadyExistsHelper', 'AdapterNonExistent', 'AdapterNonExistentHelper', 'InvalidPolicy', 'InvalidPolicyHelper', 'NoServant', 'NoServantHelper', 'ObjectAlreadyActive', 'ObjectAlreadyActiveHelper', 'ObjectNotActive', 'ObjectNotActiveHelper', 'ServantAlreadyActive', 'ServantAlreadyActiveHelper', 'ServantNotActive', 'ServantNotActiveHelper', 'WrongAdapter', 'WrongAdapterHelper', 'WrongPolicy', 'WrongPolicyHelper'
- ),
- 156 => array (
- 'CookieHolder'
- ),
- 157 => array (
- 'RunTime', 'RunTimeOperations'
- ),
- 158 => array (
- '_Remote_Stub'
- ),
- 159 => array (
- 'Attr', 'CDATASection', 'CharacterData', 'Comment', 'DOMConfiguration', 'DOMError', 'DOMErrorHandler', 'DOMException', 'DOMImplementation', 'DOMImplementationList', 'DOMImplementationSource', 'DOMStringList', 'DocumentFragment', 'DocumentType', 'EntityReference', 'NameList', 'NamedNodeMap', 'Node', 'NodeList', 'Notation', 'ProcessingInstruction', 'Text', 'TypeInfo', 'UserDataHandler'
- ),
- 160 => array (
- 'DOMImplementationRegistry'
- ),
- 161 => array (
- 'EventException', 'EventTarget', 'MutationEvent', 'UIEvent'
- ),
- 162 => array (
- 'DOMImplementationLS', 'LSException', 'LSInput', 'LSLoadEvent', 'LSOutput', 'LSParser', 'LSParserFilter', 'LSProgressEvent', 'LSResourceResolver', 'LSSerializer', 'LSSerializerFilter'
- ),
- 163 => array (
- 'DTDHandler', 'DocumentHandler', 'EntityResolver', 'ErrorHandler', 'HandlerBase', 'InputSource', 'Locator', 'SAXException', 'SAXNotRecognizedException', 'SAXNotSupportedException', 'SAXParseException', 'XMLFilter', 'XMLReader'
- ),
- 164 => array (
- 'Attributes2', 'Attributes2Impl', 'DeclHandler', 'DefaultHandler2', 'EntityResolver2', 'LexicalHandler', 'Locator2', 'Locator2Impl'
- ),
- 165 => array (
- 'AttributeListImpl', 'AttributesImpl', 'DefaultHandler', 'LocatorImpl', 'NamespaceSupport', 'ParserAdapter', 'ParserFactory', 'XMLFilterImpl', 'XMLReaderAdapter', 'XMLReaderFactory'
- ),
- /* ambiguous class names (appear in more than one package) */
- 166 => array (
- 'Annotation', 'AnySeqHelper', 'Array', 'Attribute', 'AttributeList', 'AttributeSet', 'Attributes', 'AuthenticationException', 'Binding', 'Bounds', 'Certificate', 'CertificateEncodingException', 'CertificateException', 'CertificateExpiredException', 'CertificateNotYetValidException', 'CertificateParsingException', 'ConnectException', 'ContentHandler', 'Context', 'Control', 'Current', 'CurrentHelper', 'CurrentOperations', 'DOMLocator', 'DataInputStream', 'DataOutputStream', 'Date', 'DefaultLoaderRepository', 'Delegate', 'Document', 'DocumentEvent', 'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 'DynStruct', 'DynUnion', 'DynValue', 'DynamicImplementation', 'Element', 'Entity', 'Event', 'EventListener', 'FieldNameHelper', 'FileFilter', 'Formatter', 'ForwardRequest', 'ForwardRequestHelper', 'InconsistentTypeCode', 'InputStream', 'IntrospectionException', 'InvalidAttributeValueException', 'InvalidKeyException', 'InvalidName', 'InvalidNameHelper', 'InvalidValue', 'L
ist', 'MouseEvent',
- 'NameValuePair', 'NameValuePairHelper', 'ORB', 'Object', 'ObjectIdHelper', 'ObjectImpl', 'OpenType', 'OutputStream', 'ParagraphView', 'Parser', 'Permission', 'Policy', 'Principal', 'Proxy', 'Reference', 'Statement', 'Timer', 'Timestamp', 'TypeMismatch', 'TypeMismatchHelper', 'UNKNOWN', 'UnknownHostException', 'X509Certificate'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- /* all Java keywords are case sensitive */
- 1 => true, 2 => true, 3 => true, 4 => true,
- 5 => true, 6 => true, 7 => true, 8 => true, 9 => true,
- 10 => true, 11 => true, 12 => true, 13 => true, 14 => true,
- 15 => true, 16 => true, 17 => true, 18 => true, 19 => true,
- 20 => true, 21 => true, 22 => true, 23 => true, 24 => true,
- 25 => true, 26 => true, 27 => true, 28 => true, 29 => true,
- 30 => true, 31 => true, 32 => true, 33 => true, 34 => true,
- 35 => true, 36 => true, 37 => true, 38 => true, 39 => true,
- 40 => true, 41 => true, 42 => true, 43 => true, 44 => true,
- 45 => true, 46 => true, 47 => true, 48 => true, 49 => true,
- 50 => true, 51 => true, 52 => true, 53 => true, 54 => true,
- 55 => true, 56 => true, 57 => true, 58 => true, 59 => true,
- 60 => true, 61 => true, 62 => true, 63 => true, 64 => true,
- 65 => true, 66 => true, 67 => true, 68 => true, 69 => true,
- 70 => true, 71 => true, 72 => true, 73 => true, 74 => true,
- 75 => true, 76 => true, 77 => true, 78 => true, 79 => true,
- 80 => true, 81 => true, 82 => true, 83 => true, 84 => true,
- 85 => true, 86 => true, 87 => true, 88 => true, 89 => true,
- 90 => true, 91 => true, 92 => true, 93 => true, 94 => true,
- 95 => true, 96 => true, 97 => true, 98 => true, 99 => true,
- 100 => true, 101 => true, 102 => true, 103 => true, 104 => true,
- 105 => true, 106 => true, 107 => true, 108 => true, 109 => true,
- 110 => true, 111 => true, 112 => true, 113 => true, 114 => true,
- 115 => true, 116 => true, 117 => true, 118 => true, 119 => true,
- 120 => true, 121 => true, 122 => true, 123 => true, 124 => true,
- 125 => true, 126 => true, 127 => true, 128 => true, 129 => true,
- 130 => true, 131 => true, 132 => true, 133 => true, 134 => true,
- 135 => true, 136 => true, 137 => true, 138 => true, 139 => true,
- 140 => true, 141 => true, 142 => true, 143 => true, 144 => true,
- 145 => true, 146 => true, 147 => true, 148 => true, 149 => true,
- 150 => true, 151 => true, 152 => true, 153 => true, 154 => true,
- 155 => true, 156 => true, 157 => true, 158 => true, 159 => true,
- 160 => true, 161 => true, 162 => true, 163 => true, 164 => true,
- 165 => true, 166 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #993333;',
- 4 => 'color: #b13366;',
- 5 => 'color: #aaaadd; font-weight: bold;',
- 6 => 'color: #aaaadd; font-weight: bold;',
- 7 => 'color: #aaaadd; font-weight: bold;',
- 8 => 'color: #aaaadd; font-weight: bold;',
- 9 => 'color: #aaaadd; font-weight: bold;',
- 10 => 'color: #aaaadd; font-weight: bold;',
- 11 => 'color: #aaaadd; font-weight: bold;',
- 12 => 'color: #aaaadd; font-weight: bold;',
- 13 => 'color: #aaaadd; font-weight: bold;',
- 14 => 'color: #aaaadd; font-weight: bold;',
- 15 => 'color: #aaaadd; font-weight: bold;',
- 16 => 'color: #aaaadd; font-weight: bold;',
- 17 => 'color: #aaaadd; font-weight: bold;',
- 18 => 'color: #aaaadd; font-weight: bold;',
- 19 => 'color: #aaaadd; font-weight: bold;',
- 20 => 'color: #aaaadd; font-weight: bold;',
- 21 => 'color: #aaaadd; font-weight: bold;',
- 22 => 'color: #aaaadd; font-weight: bold;',
- 23 => 'color: #aaaadd; font-weight: bold;',
- 24 => 'color: #aaaadd; font-weight: bold;',
- 25 => 'color: #aaaadd; font-weight: bold;',
- 26 => 'color: #aaaadd; font-weight: bold;',
- 27 => 'color: #aaaadd; font-weight: bold;',
- 28 => 'color: #aaaadd; font-weight: bold;',
- 29 => 'color: #aaaadd; font-weight: bold;',
- 30 => 'color: #aaaadd; font-weight: bold;',
- 31 => 'color: #aaaadd; font-weight: bold;',
- 32 => 'color: #aaaadd; font-weight: bold;',
- 33 => 'color: #aaaadd; font-weight: bold;',
- 34 => 'color: #aaaadd; font-weight: bold;',
- 35 => 'color: #aaaadd; font-weight: bold;',
- 36 => 'color: #aaaadd; font-weight: bold;',
- 37 => 'color: #aaaadd; font-weight: bold;',
- 38 => 'color: #aaaadd; font-weight: bold;',
- 39 => 'color: #aaaadd; font-weight: bold;',
- 40 => 'color: #aaaadd; font-weight: bold;',
- 41 => 'color: #aaaadd; font-weight: bold;',
- 42 => 'color: #aaaadd; font-weight: bold;',
- 43 => 'color: #aaaadd; font-weight: bold;',
- 44 => 'color: #aaaadd; font-weight: bold;',
- 45 => 'color: #aaaadd; font-weight: bold;',
- 46 => 'color: #aaaadd; font-weight: bold;',
- 47 => 'color: #aaaadd; font-weight: bold;',
- 48 => 'color: #aaaadd; font-weight: bold;',
- 49 => 'color: #aaaadd; font-weight: bold;',
- 50 => 'color: #aaaadd; font-weight: bold;',
- 51 => 'color: #aaaadd; font-weight: bold;',
- 52 => 'color: #aaaadd; font-weight: bold;',
- 53 => 'color: #aaaadd; font-weight: bold;',
- 54 => 'color: #aaaadd; font-weight: bold;',
- 55 => 'color: #aaaadd; font-weight: bold;',
- 56 => 'color: #aaaadd; font-weight: bold;',
- 57 => 'color: #aaaadd; font-weight: bold;',
- 58 => 'color: #aaaadd; font-weight: bold;',
- 59 => 'color: #aaaadd; font-weight: bold;',
- 60 => 'color: #aaaadd; font-weight: bold;',
- 61 => 'color: #aaaadd; font-weight: bold;',
- 62 => 'color: #aaaadd; font-weight: bold;',
- 63 => 'color: #aaaadd; font-weight: bold;',
- 64 => 'color: #aaaadd; font-weight: bold;',
- 65 => 'color: #aaaadd; font-weight: bold;',
- 66 => 'color: #aaaadd; font-weight: bold;',
- 67 => 'color: #aaaadd; font-weight: bold;',
- 68 => 'color: #aaaadd; font-weight: bold;',
- 69 => 'color: #aaaadd; font-weight: bold;',
- 70 => 'color: #aaaadd; font-weight: bold;',
- 71 => 'color: #aaaadd; font-weight: bold;',
- 72 => 'color: #aaaadd; font-weight: bold;',
- 73 => 'color: #aaaadd; font-weight: bold;',
- 74 => 'color: #aaaadd; font-weight: bold;',
- 75 => 'color: #aaaadd; font-weight: bold;',
- 76 => 'color: #aaaadd; font-weight: bold;',
- 77 => 'color: #aaaadd; font-weight: bold;',
- 78 => 'color: #aaaadd; font-weight: bold;',
- 79 => 'color: #aaaadd; font-weight: bold;',
- 80 => 'color: #aaaadd; font-weight: bold;',
- 81 => 'color: #aaaadd; font-weight: bold;',
- 82 => 'color: #aaaadd; font-weight: bold;',
- 83 => 'color: #aaaadd; font-weight: bold;',
- 84 => 'color: #aaaadd; font-weight: bold;',
- 85 => 'color: #aaaadd; font-weight: bold;',
- 86 => 'color: #aaaadd; font-weight: bold;',
- 87 => 'color: #aaaadd; font-weight: bold;',
- 88 => 'color: #aaaadd; font-weight: bold;',
- 89 => 'color: #aaaadd; font-weight: bold;',
- 90 => 'color: #aaaadd; font-weight: bold;',
- 91 => 'color: #aaaadd; font-weight: bold;',
- 92 => 'color: #aaaadd; font-weight: bold;',
- 93 => 'color: #aaaadd; font-weight: bold;',
- 94 => 'color: #aaaadd; font-weight: bold;',
- 95 => 'color: #aaaadd; font-weight: bold;',
- 96 => 'color: #aaaadd; font-weight: bold;',
- 97 => 'color: #aaaadd; font-weight: bold;',
- 98 => 'color: #aaaadd; font-weight: bold;',
- 99 => 'color: #aaaadd; font-weight: bold;',
- 100 => 'color: #aaaadd; font-weight: bold;',
- 101 => 'color: #aaaadd; font-weight: bold;',
- 102 => 'color: #aaaadd; font-weight: bold;',
- 103 => 'color: #aaaadd; font-weight: bold;',
- 104 => 'color: #aaaadd; font-weight: bold;',
- 105 => 'color: #aaaadd; font-weight: bold;',
- 106 => 'color: #aaaadd; font-weight: bold;',
- 107 => 'color: #aaaadd; font-weight: bold;',
- 108 => 'color: #aaaadd; font-weight: bold;',
- 109 => 'color: #aaaadd; font-weight: bold;',
- 110 => 'color: #aaaadd; font-weight: bold;',
- 111 => 'color: #aaaadd; font-weight: bold;',
- 112 => 'color: #aaaadd; font-weight: bold;',
- 113 => 'color: #aaaadd; font-weight: bold;',
- 114 => 'color: #aaaadd; font-weight: bold;',
- 115 => 'color: #aaaadd; font-weight: bold;',
- 116 => 'color: #aaaadd; font-weight: bold;',
- 117 => 'color: #aaaadd; font-weight: bold;',
- 118 => 'color: #aaaadd; font-weight: bold;',
- 119 => 'color: #aaaadd; font-weight: bold;',
- 120 => 'color: #aaaadd; font-weight: bold;',
- 121 => 'color: #aaaadd; font-weight: bold;',
- 122 => 'color: #aaaadd; font-weight: bold;',
- 123 => 'color: #aaaadd; font-weight: bold;',
- 124 => 'color: #aaaadd; font-weight: bold;',
- 125 => 'color: #aaaadd; font-weight: bold;',
- 126 => 'color: #aaaadd; font-weight: bold;',
- 127 => 'color: #aaaadd; font-weight: bold;',
- 128 => 'color: #aaaadd; font-weight: bold;',
- 129 => 'color: #aaaadd; font-weight: bold;',
- 130 => 'color: #aaaadd; font-weight: bold;',
- 131 => 'color: #aaaadd; font-weight: bold;',
- 132 => 'color: #aaaadd; font-weight: bold;',
- 133 => 'color: #aaaadd; font-weight: bold;',
- 134 => 'color: #aaaadd; font-weight: bold;',
- 135 => 'color: #aaaadd; font-weight: bold;',
- 136 => 'color: #aaaadd; font-weight: bold;',
- 137 => 'color: #aaaadd; font-weight: bold;',
- 138 => 'color: #aaaadd; font-weight: bold;',
- 139 => 'color: #aaaadd; font-weight: bold;',
- 140 => 'color: #aaaadd; font-weight: bold;',
- 141 => 'color: #aaaadd; font-weight: bold;',
- 142 => 'color: #aaaadd; font-weight: bold;',
- 143 => 'color: #aaaadd; font-weight: bold;',
- 144 => 'color: #aaaadd; font-weight: bold;',
- 145 => 'color: #aaaadd; font-weight: bold;',
- 146 => 'color: #aaaadd; font-weight: bold;',
- 147 => 'color: #aaaadd; font-weight: bold;',
- 148 => 'color: #aaaadd; font-weight: bold;',
- 149 => 'color: #aaaadd; font-weight: bold;',
- 150 => 'color: #aaaadd; font-weight: bold;',
- 151 => 'color: #aaaadd; font-weight: bold;',
- 152 => 'color: #aaaadd; font-weight: bold;',
- 153 => 'color: #aaaadd; font-weight: bold;',
- 154 => 'color: #aaaadd; font-weight: bold;',
- 155 => 'color: #aaaadd; font-weight: bold;',
- 156 => 'color: #aaaadd; font-weight: bold;',
- 157 => 'color: #aaaadd; font-weight: bold;',
- 158 => 'color: #aaaadd; font-weight: bold;',
- 159 => 'color: #aaaadd; font-weight: bold;',
- 160 => 'color: #aaaadd; font-weight: bold;',
- 161 => 'color: #aaaadd; font-weight: bold;',
- 162 => 'color: #aaaadd; font-weight: bold;',
- 163 => 'color: #aaaadd; font-weight: bold;',
- 164 => 'color: #aaaadd; font-weight: bold;',
- 165 => 'color: #aaaadd; font-weight: bold;',
- 166 => 'color: #aaaadd; font-weight: bold;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => '',
- 5 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/applet/{FNAME}.html',
- 6 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/{FNAME}.html',
- 7 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/color/{FNAME}.html',
- 8 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/datatransfer/{FNAME}.html',
- 9 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/dnd/{FNAME}.html',
- 10 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/{FNAME}.html',
- 11 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/font/{FNAME}.html',
- 12 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/{FNAME}.html',
- 13 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/{FNAME}.html',
- 14 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/spi/{FNAME}.html',
- 15 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/{FNAME}.html',
- 16 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/renderable/{FNAME}.html',
- 17 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/print/{FNAME}.html',
- 18 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/{FNAME}.html',
- 19 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/beancontext/{FNAME}.html',
- 20 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/io/{FNAME}.html',
- 21 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/{FNAME}.html',
- 22 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/{FNAME}.html',
- 23 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/{FNAME}.html',
- 24 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/{FNAME}.html',
- 25 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ref/{FNAME}.html',
- 26 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/{FNAME}.html',
- 27 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/math/{FNAME}.html',
- 28 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/net/{FNAME}.html',
- 29 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/{FNAME}.html',
- 30 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/{FNAME}.html',
- 31 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/spi/{FNAME}.html',
- 32 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/{FNAME}.html',
- 33 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/spi/{FNAME}.html',
- 34 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/{FNAME}.html',
- 35 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/activation/{FNAME}.html',
- 36 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/dgc/{FNAME}.html',
- 37 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/registry/{FNAME}.html',
- 38 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/{FNAME}.html',
- 39 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/{FNAME}.html',
- 40 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/acl/{FNAME}.html',
- 41 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/cert/{FNAME}.html',
- 42 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/interfaces/{FNAME}.html',
- 43 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/spec/{FNAME}.html',
- 44 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/sql/{FNAME}.html',
- 45 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/text/{FNAME}.html',
- 46 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/{FNAME}.html',
- 47 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/{FNAME}.html',
- 48 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/atomic/{FNAME}.html',
- 49 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/{FNAME}.html',
- 50 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/jar/{FNAME}.html',
- 51 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/{FNAME}.html',
- 52 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/{FNAME}.html',
- 53 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/{FNAME}.html',
- 54 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/zip/{FNAME}.html',
- 55 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/accessibility/{FNAME}.html',
- 56 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/activity/{FNAME}.html',
- 57 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/{FNAME}.html',
- 58 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/interfaces/{FNAME}.html',
- 59 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/spec/{FNAME}.html',
- 60 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/{FNAME}.html',
- 61 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/event/{FNAME}.html',
- 62 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/metadata/{FNAME}.html',
- 63 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/bmp/{FNAME}.html',
- 64 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html',
- 65 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/spi/{FNAME}.html',
- 66 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/stream/{FNAME}.html',
- 67 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/{FNAME}.html',
- 68 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/loading/{FNAME}.html',
- 69 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/modelmbean/{FNAME}.html',
- 70 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/monitor/{FNAME}.html',
- 71 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/{FNAME}.html',
- 72 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/relation/{FNAME}.html',
- 73 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/{FNAME}.html',
- 74 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/rmi/{FNAME}.html',
- 75 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/timer/{FNAME}.html',
- 76 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/{FNAME}.html',
- 77 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/directory/{FNAME}.html',
- 78 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/event/{FNAME}.html',
- 79 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/ldap/{FNAME}.html',
- 80 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/spi/{FNAME}.html',
- 81 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/{FNAME}.html',
- 82 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/ssl/{FNAME}.html',
- 83 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/{FNAME}.html',
- 84 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/{FNAME}.html',
- 85 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/standard/{FNAME}.html',
- 86 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/event/{FNAME}.html',
- 87 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/{FNAME}.html',
- 88 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/CORBA/{FNAME}.html',
- 89 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/ssl/{FNAME}.html',
- 90 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/{FNAME}.html',
- 91 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/callback/{FNAME}.html',
- 92 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/kerberos/{FNAME}.html',
- 93 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/login/{FNAME}.html',
- 94 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/spi/{FNAME}.html',
- 95 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/x500/{FNAME}.html',
- 96 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/sasl/{FNAME}.html',
- 97 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/{FNAME}.html',
- 98 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/spi/{FNAME}.html',
- 99 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/{FNAME}.html',
- 100 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/spi/{FNAME}.html',
- 101 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/{FNAME}.html',
- 102 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/{FNAME}.html',
- 103 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/serial/{FNAME}.html',
- 104 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/spi/{FNAME}.html',
- 105 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/{FNAME}.html',
- 106 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/border/{FNAME}.html',
- 107 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/colorchooser/{FNAME}.html',
- 108 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/event/{FNAME}.html',
- 109 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/filechooser/{FNAME}.html',
- 110 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/{FNAME}.html',
- 111 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/basic/{FNAME}.html',
- 112 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/metal/{FNAME}.html',
- 113 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/multi/{FNAME}.html',
- 114 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/synth/{FNAME}.html',
- 115 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/{FNAME}.html',
- 116 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/{FNAME}.html',
- 117 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/{FNAME}.html',
- 118 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/parser/{FNAME}.html',
- 119 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/rtf/{FNAME}.html',
- 120 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/tree/{FNAME}.html',
- 121 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/undo/{FNAME}.html',
- 122 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/{FNAME}.html',
- 123 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/xa/{FNAME}.html',
- 124 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/{FNAME}.html',
- 125 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/datatype/{FNAME}.html',
- 126 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/namespace/{FNAME}.html',
- 127 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/{FNAME}.html',
- 128 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/{FNAME}.html',
- 129 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/dom/{FNAME}.html',
- 130 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/sax/{FNAME}.html',
- 131 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/stream/{FNAME}.html',
- 132 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/validation/{FNAME}.html',
- 133 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/{FNAME}.html',
- 134 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/ietf/jgss/{FNAME}.html',
- 135 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/{FNAME}.html',
- 136 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html',
- 137 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html',
- 138 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/portable/{FNAME}.html',
- 139 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/{FNAME}.html',
- 140 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html',
- 141 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html',
- 142 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Dynamic/{FNAME}.html',
- 143 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/{FNAME}.html',
- 144 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html',
- 145 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html',
- 146 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/{FNAME}.html',
- 147 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html',
- 148 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html',
- 149 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Messaging/{FNAME}.html',
- 150 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/{FNAME}.html',
- 151 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html',
- 152 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/{FNAME}.html',
- 153 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html',
- 154 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html',
- 155 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html',
- 156 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html',
- 157 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/SendingContext/{FNAME}.html',
- 158 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/stub/java/rmi/{FNAME}.html',
- 159 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/{FNAME}.html',
- 160 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/bootstrap/{FNAME}.html',
- 161 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/events/{FNAME}.html',
- 162 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/ls/{FNAME}.html',
- 163 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/{FNAME}.html',
- 164 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/ext/{FNAME}.html',
- 165 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/helpers/{FNAME}.html',
- /* ambiguous class names (appear in more than one package) */
- 166 => 'http://www.google.com/search?sitesearch=java.sun.com&q=allinurl%3Aj2se%2F1+5+0%2Fdocs%2Fapi+{FNAME}'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- /* Java does not use '::' */
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * java.php
+ * --------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/10
+ *
+ * Java language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.4)
+ * - Added instanceof keyword
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * 2004/08/05 (1.0.2)
+ * - Added URL support
+ * - Added keyword "this", as bugs in GeSHi class ironed out
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * - Added extra missed keywords
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO
+ * -------------------------
+ * *
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Java(TM) 2 Platform Standard Edition 5.0',
+ 'COMMENT_SINGLE' => array(1 => '//'), /* import statements are not comments! */
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ /* see the authoritative list of all 50 Java keywords at */
+ /* http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#229308 */
+
+ /* java keywords, part 1: control flow */
+ 'case', 'default', 'do', 'else', 'for',
+ 'goto', 'if', 'switch', 'while'
+
+ /* IMO 'break', 'continue', 'return' and 'throw' */
+ /* should also be added to this group, as they */
+ /* also manage the control flow, */
+ /* arguably 'try'/'catch'/'finally' as well */
+ ),
+ 2 => array(
+ /* java keywords, part 2 */
+
+ 'break', 'continue', 'return', 'throw',
+ 'try', 'catch', 'finally',
+
+ 'abstract', 'assert', 'class', 'const', 'enum', 'extends',
+ 'final', 'implements', 'import', 'instanceof', 'interface',
+ 'native', 'new', 'package', 'private', 'protected',
+ 'public', 'static', 'strictfp', 'super', 'synchronized',
+ 'this', 'throws', 'transient', 'volatile'
+ ),
+ 3 => array(
+ /* Java keywords, part 3: primitive data types and 'void' */
+ 'boolean', 'byte', 'char', 'double',
+ 'float', 'int', 'long', 'short', 'void'
+ ),
+ 4 => array(
+ /* other reserved words in Java: literals */
+ /* should be styled to look similar to numbers and Strings */
+ 'false', 'null', 'true'
+ ),
+ 5 => array (
+ 'Applet', 'AppletContext', 'AppletStub', 'AudioClip'
+ ),
+ 6 => array (
+ 'AWTError', 'AWTEvent', 'AWTEventMulticaster', 'AWTException', 'AWTKeyStroke', 'AWTPermission', 'ActiveEvent', 'Adjustable', 'AlphaComposite', 'BasicStroke', 'BorderLayout', 'BufferCapabilities', 'BufferCapabilities.FlipContents', 'Button', 'Canvas', 'CardLayout', 'Checkbox', 'CheckboxGroup', 'CheckboxMenuItem', 'Choice', 'Color', 'Component', 'ComponentOrientation', 'Composite', 'CompositeContext', 'Container', 'ContainerOrderFocusTraversalPolicy', 'Cursor', 'DefaultFocusTraversalPolicy', 'DefaultKeyboardFocusManager', 'Dialog', 'Dimension', 'DisplayMode', 'EventQueue', 'FileDialog', 'FlowLayout', 'FocusTraversalPolicy', 'Font', 'FontFormatException', 'FontMetrics', 'Frame', 'GradientPaint', 'Graphics', 'Graphics2D', 'GraphicsConfigTemplate', 'GraphicsConfiguration', 'GraphicsDevice', 'GraphicsEnvironment', 'GridBagConstraints', 'GridBagLayout', 'GridLayout', 'HeadlessException', 'IllegalComponentStateException', 'Image', 'ImageCapabilities', 'Insets', 'ItemSelectable',
'JobAttributes',
+ 'JobAttributes.DefaultSelectionType', 'JobAttributes.DestinationType', 'JobAttributes.DialogType', 'JobAttributes.MultipleDocumentHandlingType', 'JobAttributes.SidesType', 'KeyEventDispatcher', 'KeyEventPostProcessor', 'KeyboardFocusManager', 'Label', 'LayoutManager', 'LayoutManager2', 'MediaTracker', 'Menu', 'MenuBar', 'MenuComponent', 'MenuContainer', 'MenuItem', 'MenuShortcut', 'MouseInfo', 'PageAttributes', 'PageAttributes.ColorType', 'PageAttributes.MediaType', 'PageAttributes.OrientationRequestedType', 'PageAttributes.OriginType', 'PageAttributes.PrintQualityType', 'Paint', 'PaintContext', 'Panel', 'Point', 'PointerInfo', 'Polygon', 'PopupMenu', 'PrintGraphics', 'PrintJob', 'Rectangle', 'RenderingHints', 'RenderingHints.Key', 'Robot', 'ScrollPane', 'ScrollPaneAdjustable', 'Scrollbar', 'Shape', 'Stroke', 'SystemColor', 'TextArea', 'TextComponent', 'TextField', 'TexturePaint', 'Toolkit', 'Transparency', 'Window'
+ ),
+ 7 => array (
+ 'CMMException', 'ColorSpace', 'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray', 'ICC_ProfileRGB', 'ProfileDataException'
+ ),
+ 8 => array (
+ 'Clipboard', 'ClipboardOwner', 'DataFlavor', 'FlavorEvent', 'FlavorListener', 'FlavorMap', 'FlavorTable', 'MimeTypeParseException', 'StringSelection', 'SystemFlavorMap', 'Transferable', 'UnsupportedFlavorException'
+ ),
+ 9 => array (
+ 'Autoscroll', 'DnDConstants', 'DragGestureEvent', 'DragGestureListener', 'DragGestureRecognizer', 'DragSource', 'DragSourceAdapter', 'DragSourceContext', 'DragSourceDragEvent', 'DragSourceDropEvent', 'DragSourceEvent', 'DragSourceListener', 'DragSourceMotionListener', 'DropTarget', 'DropTarget.DropTargetAutoScroller', 'DropTargetAdapter', 'DropTargetContext', 'DropTargetDragEvent', 'DropTargetDropEvent', 'DropTargetEvent', 'DropTargetListener', 'InvalidDnDOperationException', 'MouseDragGestureRecognizer'
+ ),
+ 10 => array (
+ 'AWTEventListener', 'AWTEventListenerProxy', 'ActionEvent', 'ActionListener', 'AdjustmentEvent', 'AdjustmentListener', 'ComponentAdapter', 'ComponentEvent', 'ComponentListener', 'ContainerAdapter', 'ContainerEvent', 'ContainerListener', 'FocusAdapter', 'FocusEvent', 'FocusListener', 'HierarchyBoundsAdapter', 'HierarchyBoundsListener', 'HierarchyEvent', 'HierarchyListener', 'InputEvent', 'InputMethodEvent', 'InputMethodListener', 'InvocationEvent', 'ItemEvent', 'ItemListener', 'KeyAdapter', 'KeyEvent', 'KeyListener', 'MouseAdapter', 'MouseListener', 'MouseMotionAdapter', 'MouseMotionListener', 'MouseWheelEvent', 'MouseWheelListener', 'PaintEvent', 'TextEvent', 'TextListener', 'WindowAdapter', 'WindowEvent', 'WindowFocusListener', 'WindowListener', 'WindowStateListener'
+ ),
+ 11 => array (
+ 'FontRenderContext', 'GlyphJustificationInfo', 'GlyphMetrics', 'GlyphVector', 'GraphicAttribute', 'ImageGraphicAttribute', 'LineBreakMeasurer', 'LineMetrics', 'MultipleMaster', 'NumericShaper', 'ShapeGraphicAttribute', 'TextAttribute', 'TextHitInfo', 'TextLayout', 'TextLayout.CaretPolicy', 'TextMeasurer', 'TransformAttribute'
+ ),
+ 12 => array (
+ 'AffineTransform', 'Arc2D', 'Arc2D.Double', 'Arc2D.Float', 'Area', 'CubicCurve2D', 'CubicCurve2D.Double', 'CubicCurve2D.Float', 'Dimension2D', 'Ellipse2D', 'Ellipse2D.Double', 'Ellipse2D.Float', 'FlatteningPathIterator', 'GeneralPath', 'IllegalPathStateException', 'Line2D', 'Line2D.Double', 'Line2D.Float', 'NoninvertibleTransformException', 'PathIterator', 'Point2D', 'Point2D.Double', 'Point2D.Float', 'QuadCurve2D', 'QuadCurve2D.Double', 'QuadCurve2D.Float', 'Rectangle2D', 'Rectangle2D.Double', 'Rectangle2D.Float', 'RectangularShape', 'RoundRectangle2D', 'RoundRectangle2D.Double', 'RoundRectangle2D.Float'
+ ),
+ 13 => array (
+ 'InputContext', 'InputMethodHighlight', 'InputMethodRequests', 'InputSubset'
+ ),
+ 14 => array (
+ 'InputMethod', 'InputMethodContext', 'InputMethodDescriptor'
+ ),
+ 15 => array (
+ 'AffineTransformOp', 'AreaAveragingScaleFilter', 'BandCombineOp', 'BandedSampleModel', 'BufferStrategy', 'BufferedImage', 'BufferedImageFilter', 'BufferedImageOp', 'ByteLookupTable', 'ColorConvertOp', 'ColorModel', 'ComponentColorModel', 'ComponentSampleModel', 'ConvolveOp', 'CropImageFilter', 'DataBuffer', 'DataBufferByte', 'DataBufferDouble', 'DataBufferFloat', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort', 'DirectColorModel', 'FilteredImageSource', 'ImageConsumer', 'ImageFilter', 'ImageObserver', 'ImageProducer', 'ImagingOpException', 'IndexColorModel', 'Kernel', 'LookupOp', 'LookupTable', 'MemoryImageSource', 'MultiPixelPackedSampleModel', 'PackedColorModel', 'PixelGrabber', 'PixelInterleavedSampleModel', 'RGBImageFilter', 'Raster', 'RasterFormatException', 'RasterOp', 'RenderedImage', 'ReplicateScaleFilter', 'RescaleOp', 'SampleModel', 'ShortLookupTable', 'SinglePixelPackedSampleModel', 'TileObserver', 'VolatileImage', 'WritableRaster', 'WritableRenderedImag
e'
+ ),
+ 16 => array (
+ 'ContextualRenderedImageFactory', 'ParameterBlock', 'RenderContext', 'RenderableImage', 'RenderableImageOp', 'RenderableImageProducer', 'RenderedImageFactory'
+ ),
+ 17 => array (
+ 'Book', 'PageFormat', 'Pageable', 'Paper', 'Printable', 'PrinterAbortException', 'PrinterException', 'PrinterGraphics', 'PrinterIOException', 'PrinterJob'
+ ),
+ 18 => array (
+ 'AppletInitializer', 'BeanDescriptor', 'BeanInfo', 'Beans', 'Customizer', 'DefaultPersistenceDelegate', 'DesignMode', 'Encoder', 'EventHandler', 'EventSetDescriptor', 'ExceptionListener', 'Expression', 'FeatureDescriptor', 'IndexedPropertyChangeEvent', 'IndexedPropertyDescriptor', 'Introspector', 'MethodDescriptor', 'ParameterDescriptor', 'PersistenceDelegate', 'PropertyChangeEvent', 'PropertyChangeListener', 'PropertyChangeListenerProxy', 'PropertyChangeSupport', 'PropertyDescriptor', 'PropertyEditor', 'PropertyEditorManager', 'PropertyEditorSupport', 'PropertyVetoException', 'SimpleBeanInfo', 'VetoableChangeListener', 'VetoableChangeListenerProxy', 'VetoableChangeSupport', 'Visibility', 'XMLDecoder', 'XMLEncoder'
+ ),
+ 19 => array (
+ 'BeanContext', 'BeanContextChild', 'BeanContextChildComponentProxy', 'BeanContextChildSupport', 'BeanContextContainerProxy', 'BeanContextEvent', 'BeanContextMembershipEvent', 'BeanContextMembershipListener', 'BeanContextProxy', 'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider', 'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent', 'BeanContextServiceRevokedListener', 'BeanContextServices', 'BeanContextServicesListener', 'BeanContextServicesSupport', 'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport', 'BeanContextSupport.BCSIterator'
+ ),
+ 20 => array (
+ 'BufferedInputStream', 'BufferedOutputStream', 'BufferedReader', 'BufferedWriter', 'ByteArrayInputStream', 'ByteArrayOutputStream', 'CharArrayReader', 'CharArrayWriter', 'CharConversionException', 'Closeable', 'DataInput', 'DataOutput', 'EOFException', 'Externalizable', 'File', 'FileDescriptor', 'FileInputStream', 'FileNotFoundException', 'FileOutputStream', 'FilePermission', 'FileReader', 'FileWriter', 'FilenameFilter', 'FilterInputStream', 'FilterOutputStream', 'FilterReader', 'FilterWriter', 'Flushable', 'IOException', 'InputStreamReader', 'InterruptedIOException', 'InvalidClassException', 'InvalidObjectException', 'LineNumberInputStream', 'LineNumberReader', 'NotActiveException', 'NotSerializableException', 'ObjectInput', 'ObjectInputStream', 'ObjectInputStream.GetField', 'ObjectInputValidation', 'ObjectOutput', 'ObjectOutputStream', 'ObjectOutputStream.PutField', 'ObjectStreamClass', 'ObjectStreamConstants', 'ObjectStreamException', 'ObjectStreamField', 'OptionalData
Exception', 'OutputStreamWriter',
+ 'PipedInputStream', 'PipedOutputStream', 'PipedReader', 'PipedWriter', 'PrintStream', 'PrintWriter', 'PushbackInputStream', 'PushbackReader', 'RandomAccessFile', 'Reader', 'SequenceInputStream', 'Serializable', 'SerializablePermission', 'StreamCorruptedException', 'StreamTokenizer', 'StringBufferInputStream', 'StringReader', 'StringWriter', 'SyncFailedException', 'UTFDataFormatException', 'UnsupportedEncodingException', 'WriteAbortedException', 'Writer'
+ ),
+ 21 => array (
+ 'AbstractMethodError', 'Appendable', 'ArithmeticException', 'ArrayIndexOutOfBoundsException', 'ArrayStoreException', 'AssertionError', 'Boolean', 'Byte', 'CharSequence', 'Character', 'Character.Subset', 'Character.UnicodeBlock', 'Class', 'ClassCastException', 'ClassCircularityError', 'ClassFormatError', 'ClassLoader', 'ClassNotFoundException', 'CloneNotSupportedException', 'Cloneable', 'Comparable', 'Compiler', 'Deprecated', 'Double', 'Enum', 'EnumConstantNotPresentException', 'Error', 'Exception', 'ExceptionInInitializerError', 'Float', 'IllegalAccessError', 'IllegalAccessException', 'IllegalArgumentException', 'IllegalMonitorStateException', 'IllegalStateException', 'IllegalThreadStateException', 'IncompatibleClassChangeError', 'IndexOutOfBoundsException', 'InheritableThreadLocal', 'InstantiationError', 'InstantiationException', 'Integer', 'InternalError', 'InterruptedException', 'Iterable', 'LinkageError', 'Long', 'Math', 'NegativeArraySizeException', 'NoClassDefFoundE
rror', 'NoSuchFieldError',
+ 'NoSuchFieldException', 'NoSuchMethodError', 'NoSuchMethodException', 'NullPointerException', 'Number', 'NumberFormatException', 'OutOfMemoryError', 'Override', 'Package', 'Process', 'ProcessBuilder', 'Readable', 'Runnable', 'Runtime', 'RuntimeException', 'RuntimePermission', 'SecurityException', 'SecurityManager', 'Short', 'StackOverflowError', 'StackTraceElement', 'StrictMath', 'String', 'StringBuffer', 'StringBuilder', 'StringIndexOutOfBoundsException', 'SuppressWarnings', 'System', 'Thread', 'Thread.State', 'Thread.UncaughtExceptionHandler', 'ThreadDeath', 'ThreadGroup', 'ThreadLocal', 'Throwable', 'TypeNotPresentException', 'UnknownError', 'UnsatisfiedLinkError', 'UnsupportedClassVersionError', 'UnsupportedOperationException', 'VerifyError', 'VirtualMachineError', 'Void'
+ ),
+ 22 => array (
+ 'AnnotationFormatError', 'AnnotationTypeMismatchException', 'Documented', 'ElementType', 'IncompleteAnnotationException', 'Inherited', 'Retention', 'RetentionPolicy', 'Target'
+ ),
+ 23 => array (
+ 'ClassDefinition', 'ClassFileTransformer', 'IllegalClassFormatException', 'Instrumentation', 'UnmodifiableClassException'
+ ),
+ 24 => array (
+ 'ClassLoadingMXBean', 'CompilationMXBean', 'GarbageCollectorMXBean', 'ManagementFactory', 'ManagementPermission', 'MemoryMXBean', 'MemoryManagerMXBean', 'MemoryNotificationInfo', 'MemoryPoolMXBean', 'MemoryType', 'MemoryUsage', 'OperatingSystemMXBean', 'RuntimeMXBean', 'ThreadInfo', 'ThreadMXBean'
+ ),
+ 25 => array (
+ 'PhantomReference', 'ReferenceQueue', 'SoftReference', 'WeakReference'
+ ),
+ 26 => array (
+ 'AccessibleObject', 'AnnotatedElement', 'Constructor', 'Field', 'GenericArrayType', 'GenericDeclaration', 'GenericSignatureFormatError', 'InvocationHandler', 'InvocationTargetException', 'MalformedParameterizedTypeException', 'Member', 'Method', 'Modifier', 'ParameterizedType', 'ReflectPermission', 'Type', 'TypeVariable', 'UndeclaredThrowableException', 'WildcardType'
+ ),
+ 27 => array (
+ 'BigDecimal', 'BigInteger', 'MathContext', 'RoundingMode'
+ ),
+ 28 => array (
+ 'Authenticator', 'Authenticator.RequestorType', 'BindException', 'CacheRequest', 'CacheResponse', 'ContentHandlerFactory', 'CookieHandler', 'DatagramPacket', 'DatagramSocket', 'DatagramSocketImpl', 'DatagramSocketImplFactory', 'FileNameMap', 'HttpRetryException', 'HttpURLConnection', 'Inet4Address', 'Inet6Address', 'InetAddress', 'InetSocketAddress', 'JarURLConnection', 'MalformedURLException', 'MulticastSocket', 'NetPermission', 'NetworkInterface', 'NoRouteToHostException', 'PasswordAuthentication', 'PortUnreachableException', 'ProtocolException', 'Proxy.Type', 'ProxySelector', 'ResponseCache', 'SecureCacheResponse', 'ServerSocket', 'Socket', 'SocketAddress', 'SocketException', 'SocketImpl', 'SocketImplFactory', 'SocketOptions', 'SocketPermission', 'SocketTimeoutException', 'URI', 'URISyntaxException', 'URL', 'URLClassLoader', 'URLConnection', 'URLDecoder', 'URLEncoder', 'URLStreamHandler', 'URLStreamHandlerFactory', 'UnknownServiceException'
+ ),
+ 29 => array (
+ 'Buffer', 'BufferOverflowException', 'BufferUnderflowException', 'ByteBuffer', 'ByteOrder', 'CharBuffer', 'DoubleBuffer', 'FloatBuffer', 'IntBuffer', 'InvalidMarkException', 'LongBuffer', 'MappedByteBuffer', 'ReadOnlyBufferException', 'ShortBuffer'
+ ),
+ 30 => array (
+ 'AlreadyConnectedException', 'AsynchronousCloseException', 'ByteChannel', 'CancelledKeyException', 'Channel', 'Channels', 'ClosedByInterruptException', 'ClosedChannelException', 'ClosedSelectorException', 'ConnectionPendingException', 'DatagramChannel', 'FileChannel', 'FileChannel.MapMode', 'FileLock', 'FileLockInterruptionException', 'GatheringByteChannel', 'IllegalBlockingModeException', 'IllegalSelectorException', 'InterruptibleChannel', 'NoConnectionPendingException', 'NonReadableChannelException', 'NonWritableChannelException', 'NotYetBoundException', 'NotYetConnectedException', 'OverlappingFileLockException', 'Pipe', 'Pipe.SinkChannel', 'Pipe.SourceChannel', 'ReadableByteChannel', 'ScatteringByteChannel', 'SelectableChannel', 'SelectionKey', 'Selector', 'ServerSocketChannel', 'SocketChannel', 'UnresolvedAddressException', 'UnsupportedAddressTypeException', 'WritableByteChannel'
+ ),
+ 31 => array (
+ 'AbstractInterruptibleChannel', 'AbstractSelectableChannel', 'AbstractSelectionKey', 'AbstractSelector', 'SelectorProvider'
+ ),
+ 32 => array (
+ 'CharacterCodingException', 'Charset', 'CharsetDecoder', 'CharsetEncoder', 'CoderMalfunctionError', 'CoderResult', 'CodingErrorAction', 'IllegalCharsetNameException', 'MalformedInputException', 'UnmappableCharacterException', 'UnsupportedCharsetException'
+ ),
+ 33 => array (
+ 'CharsetProvider'
+ ),
+ 34 => array (
+ 'AccessException', 'AlreadyBoundException', 'ConnectIOException', 'MarshalException', 'MarshalledObject', 'Naming', 'NoSuchObjectException', 'NotBoundException', 'RMISecurityException', 'RMISecurityManager', 'Remote', 'RemoteException', 'ServerError', 'ServerException', 'ServerRuntimeException', 'StubNotFoundException', 'UnexpectedException', 'UnmarshalException'
+ ),
+ 35 => array (
+ 'Activatable', 'ActivateFailedException', 'ActivationDesc', 'ActivationException', 'ActivationGroup', 'ActivationGroupDesc', 'ActivationGroupDesc.CommandEnvironment', 'ActivationGroupID', 'ActivationGroup_Stub', 'ActivationID', 'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem', 'Activator', 'UnknownGroupException', 'UnknownObjectException'
+ ),
+ 36 => array (
+ 'DGC', 'Lease', 'VMID'
+ ),
+ 37 => array (
+ 'LocateRegistry', 'Registry', 'RegistryHandler'
+ ),
+ 38 => array (
+ 'ExportException', 'LoaderHandler', 'LogStream', 'ObjID', 'Operation', 'RMIClassLoader', 'RMIClassLoaderSpi', 'RMIClientSocketFactory', 'RMIFailureHandler', 'RMIServerSocketFactory', 'RMISocketFactory', 'RemoteCall', 'RemoteObject', 'RemoteObjectInvocationHandler', 'RemoteRef', 'RemoteServer', 'RemoteStub', 'ServerCloneException', 'ServerNotActiveException', 'ServerRef', 'Skeleton', 'SkeletonMismatchException', 'SkeletonNotFoundException', 'SocketSecurityException', 'UID', 'UnicastRemoteObject', 'Unreferenced'
+ ),
+ 39 => array (
+ 'AccessControlContext', 'AccessControlException', 'AccessController', 'AlgorithmParameterGenerator', 'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 'AlgorithmParametersSpi', 'AllPermission', 'AuthProvider', 'BasicPermission', 'CodeSigner', 'CodeSource', 'DigestException', 'DigestInputStream', 'DigestOutputStream', 'DomainCombiner', 'GeneralSecurityException', 'Guard', 'GuardedObject', 'Identity', 'IdentityScope', 'InvalidAlgorithmParameterException', 'InvalidParameterException', 'Key', 'KeyException', 'KeyFactory', 'KeyFactorySpi', 'KeyManagementException', 'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi', 'KeyRep', 'KeyRep.Type', 'KeyStore', 'KeyStore.Builder', 'KeyStore.CallbackHandlerProtection', 'KeyStore.Entry', 'KeyStore.LoadStoreParameter', 'KeyStore.PasswordProtection', 'KeyStore.PrivateKeyEntry', 'KeyStore.ProtectionParameter', 'KeyStore.SecretKeyEntry', 'KeyStore.TrustedCertificateEntry', 'KeyStoreException', 'KeyStoreSpi', 'MessageDigest', 'Messag
eDigestSpi',
+ 'NoSuchAlgorithmException', 'NoSuchProviderException', 'PermissionCollection', 'Permissions', 'PrivateKey', 'PrivilegedAction', 'PrivilegedActionException', 'PrivilegedExceptionAction', 'ProtectionDomain', 'Provider', 'Provider.Service', 'ProviderException', 'PublicKey', 'SecureClassLoader', 'SecureRandom', 'SecureRandomSpi', 'Security', 'SecurityPermission', 'Signature', 'SignatureException', 'SignatureSpi', 'SignedObject', 'Signer', 'UnrecoverableEntryException', 'UnrecoverableKeyException', 'UnresolvedPermission'
+ ),
+ 40 => array (
+ 'Acl', 'AclEntry', 'AclNotFoundException', 'Group', 'LastOwnerException', 'NotOwnerException', 'Owner'
+ ),
+ 41 => array (
+ 'CRL', 'CRLException', 'CRLSelector', 'CertPath', 'CertPath.CertPathRep', 'CertPathBuilder', 'CertPathBuilderException', 'CertPathBuilderResult', 'CertPathBuilderSpi', 'CertPathParameters', 'CertPathValidator', 'CertPathValidatorException', 'CertPathValidatorResult', 'CertPathValidatorSpi', 'CertSelector', 'CertStore', 'CertStoreException', 'CertStoreParameters', 'CertStoreSpi', 'Certificate.CertificateRep', 'CertificateFactory', 'CertificateFactorySpi', 'CollectionCertStoreParameters', 'LDAPCertStoreParameters', 'PKIXBuilderParameters', 'PKIXCertPathBuilderResult', 'PKIXCertPathChecker', 'PKIXCertPathValidatorResult', 'PKIXParameters', 'PolicyNode', 'PolicyQualifierInfo', 'TrustAnchor', 'X509CRL', 'X509CRLEntry', 'X509CRLSelector', 'X509CertSelector', 'X509Extension'
+ ),
+ 42 => array (
+ 'DSAKey', 'DSAKeyPairGenerator', 'DSAParams', 'DSAPrivateKey', 'DSAPublicKey', 'ECKey', 'ECPrivateKey', 'ECPublicKey', 'RSAKey', 'RSAMultiPrimePrivateCrtKey', 'RSAPrivateCrtKey', 'RSAPrivateKey', 'RSAPublicKey'
+ ),
+ 43 => array (
+ 'AlgorithmParameterSpec', 'DSAParameterSpec', 'DSAPrivateKeySpec', 'DSAPublicKeySpec', 'ECField', 'ECFieldF2m', 'ECFieldFp', 'ECGenParameterSpec', 'ECParameterSpec', 'ECPoint', 'ECPrivateKeySpec', 'ECPublicKeySpec', 'EllipticCurve', 'EncodedKeySpec', 'InvalidKeySpecException', 'InvalidParameterSpecException', 'KeySpec', 'MGF1ParameterSpec', 'PKCS8EncodedKeySpec', 'PSSParameterSpec', 'RSAKeyGenParameterSpec', 'RSAMultiPrimePrivateCrtKeySpec', 'RSAOtherPrimeInfo', 'RSAPrivateCrtKeySpec', 'RSAPrivateKeySpec', 'RSAPublicKeySpec', 'X509EncodedKeySpec'
+ ),
+ 44 => array (
+ 'BatchUpdateException', 'Blob', 'CallableStatement', 'Clob', 'Connection', 'DataTruncation', 'DatabaseMetaData', 'Driver', 'DriverManager', 'DriverPropertyInfo', 'ParameterMetaData', 'PreparedStatement', 'Ref', 'ResultSet', 'ResultSetMetaData', 'SQLData', 'SQLException', 'SQLInput', 'SQLOutput', 'SQLPermission', 'SQLWarning', 'Savepoint', 'Struct', 'Time', 'Types'
+ ),
+ 45 => array (
+ 'AttributedCharacterIterator', 'AttributedCharacterIterator.Attribute', 'AttributedString', 'Bidi', 'BreakIterator', 'CharacterIterator', 'ChoiceFormat', 'CollationElementIterator', 'CollationKey', 'Collator', 'DateFormat', 'DateFormat.Field', 'DateFormatSymbols', 'DecimalFormat', 'DecimalFormatSymbols', 'FieldPosition', 'Format', 'Format.Field', 'MessageFormat', 'MessageFormat.Field', 'NumberFormat', 'NumberFormat.Field', 'ParseException', 'ParsePosition', 'RuleBasedCollator', 'SimpleDateFormat', 'StringCharacterIterator'
+ ),
+ 46 => array (
+ 'AbstractCollection', 'AbstractList', 'AbstractMap', 'AbstractQueue', 'AbstractSequentialList', 'AbstractSet', 'ArrayList', 'Arrays', 'BitSet', 'Calendar', 'Collection', 'Collections', 'Comparator', 'ConcurrentModificationException', 'Currency', 'Dictionary', 'DuplicateFormatFlagsException', 'EmptyStackException', 'EnumMap', 'EnumSet', 'Enumeration', 'EventListenerProxy', 'EventObject', 'FormatFlagsConversionMismatchException', 'Formattable', 'FormattableFlags', 'Formatter.BigDecimalLayoutForm', 'FormatterClosedException', 'GregorianCalendar', 'HashMap', 'HashSet', 'Hashtable', 'IdentityHashMap', 'IllegalFormatCodePointException', 'IllegalFormatConversionException', 'IllegalFormatException', 'IllegalFormatFlagsException', 'IllegalFormatPrecisionException', 'IllegalFormatWidthException', 'InputMismatchException', 'InvalidPropertiesFormatException', 'Iterator', 'LinkedHashMap', 'LinkedHashSet', 'LinkedList', 'ListIterator', 'ListResourceBundle', 'Locale', 'Map', 'Map.Entry'
, 'MissingFormatArgumentException',
+ 'MissingFormatWidthException', 'MissingResourceException', 'NoSuchElementException', 'Observable', 'Observer', 'PriorityQueue', 'Properties', 'PropertyPermission', 'PropertyResourceBundle', 'Queue', 'Random', 'RandomAccess', 'ResourceBundle', 'Scanner', 'Set', 'SimpleTimeZone', 'SortedMap', 'SortedSet', 'Stack', 'StringTokenizer', 'TimeZone', 'TimerTask', 'TooManyListenersException', 'TreeMap', 'TreeSet', 'UUID', 'UnknownFormatConversionException', 'UnknownFormatFlagsException', 'Vector', 'WeakHashMap'
+ ),
+ 47 => array (
+ 'AbstractExecutorService', 'ArrayBlockingQueue', 'BlockingQueue', 'BrokenBarrierException', 'Callable', 'CancellationException', 'CompletionService', 'ConcurrentHashMap', 'ConcurrentLinkedQueue', 'ConcurrentMap', 'CopyOnWriteArrayList', 'CopyOnWriteArraySet', 'CountDownLatch', 'CyclicBarrier', 'DelayQueue', 'Delayed', 'Exchanger', 'ExecutionException', 'Executor', 'ExecutorCompletionService', 'ExecutorService', 'Executors', 'Future', 'FutureTask', 'LinkedBlockingQueue', 'PriorityBlockingQueue', 'RejectedExecutionException', 'RejectedExecutionHandler', 'ScheduledExecutorService', 'ScheduledFuture', 'ScheduledThreadPoolExecutor', 'Semaphore', 'SynchronousQueue', 'ThreadFactory', 'ThreadPoolExecutor', 'ThreadPoolExecutor.AbortPolicy', 'ThreadPoolExecutor.CallerRunsPolicy', 'ThreadPoolExecutor.DiscardOldestPolicy', 'ThreadPoolExecutor.DiscardPolicy', 'TimeUnit', 'TimeoutException'
+ ),
+ 48 => array (
+ 'AtomicBoolean', 'AtomicInteger', 'AtomicIntegerArray', 'AtomicIntegerFieldUpdater', 'AtomicLong', 'AtomicLongArray', 'AtomicLongFieldUpdater', 'AtomicMarkableReference', 'AtomicReference', 'AtomicReferenceArray', 'AtomicReferenceFieldUpdater', 'AtomicStampedReference'
+ ),
+ 49 => array (
+ 'AbstractQueuedSynchronizer', 'Condition', 'Lock', 'LockSupport', 'ReadWriteLock', 'ReentrantLock', 'ReentrantReadWriteLock', 'ReentrantReadWriteLock.ReadLock', 'ReentrantReadWriteLock.WriteLock'
+ ),
+ 50 => array (
+ 'Attributes.Name', 'JarEntry', 'JarException', 'JarFile', 'JarInputStream', 'JarOutputStream', 'Manifest', 'Pack200', 'Pack200.Packer', 'Pack200.Unpacker'
+ ),
+ 51 => array (
+ 'ConsoleHandler', 'ErrorManager', 'FileHandler', 'Filter', 'Handler', 'Level', 'LogManager', 'LogRecord', 'Logger', 'LoggingMXBean', 'LoggingPermission', 'MemoryHandler', 'SimpleFormatter', 'SocketHandler', 'StreamHandler', 'XMLFormatter'
+ ),
+ 52 => array (
+ 'AbstractPreferences', 'BackingStoreException', 'InvalidPreferencesFormatException', 'NodeChangeEvent', 'NodeChangeListener', 'PreferenceChangeEvent', 'PreferenceChangeListener', 'Preferences', 'PreferencesFactory'
+ ),
+ 53 => array (
+ 'MatchResult', 'Matcher', 'Pattern', 'PatternSyntaxException'
+ ),
+ 54 => array (
+ 'Adler32', 'CRC32', 'CheckedInputStream', 'CheckedOutputStream', 'Checksum', 'DataFormatException', 'Deflater', 'DeflaterOutputStream', 'GZIPInputStream', 'GZIPOutputStream', 'Inflater', 'InflaterInputStream', 'ZipEntry', 'ZipException', 'ZipFile', 'ZipInputStream', 'ZipOutputStream'
+ ),
+ 55 => array (
+ 'Accessible', 'AccessibleAction', 'AccessibleAttributeSequence', 'AccessibleBundle', 'AccessibleComponent', 'AccessibleContext', 'AccessibleEditableText', 'AccessibleExtendedComponent', 'AccessibleExtendedTable', 'AccessibleExtendedText', 'AccessibleHyperlink', 'AccessibleHypertext', 'AccessibleIcon', 'AccessibleKeyBinding', 'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle', 'AccessibleRole', 'AccessibleSelection', 'AccessibleState', 'AccessibleStateSet', 'AccessibleStreamable', 'AccessibleTable', 'AccessibleTableModelChange', 'AccessibleText', 'AccessibleTextSequence', 'AccessibleValue'
+ ),
+ 56 => array (
+ 'ActivityCompletedException', 'ActivityRequiredException', 'InvalidActivityException'
+ ),
+ 57 => array (
+ 'BadPaddingException', 'Cipher', 'CipherInputStream', 'CipherOutputStream', 'CipherSpi', 'EncryptedPrivateKeyInfo', 'ExemptionMechanism', 'ExemptionMechanismException', 'ExemptionMechanismSpi', 'IllegalBlockSizeException', 'KeyAgreement', 'KeyAgreementSpi', 'KeyGenerator', 'KeyGeneratorSpi', 'Mac', 'MacSpi', 'NoSuchPaddingException', 'NullCipher', 'SealedObject', 'SecretKey', 'SecretKeyFactory', 'SecretKeyFactorySpi', 'ShortBufferException'
+ ),
+ 58 => array (
+ 'DHKey', 'DHPrivateKey', 'DHPublicKey', 'PBEKey'
+ ),
+ 59 => array (
+ 'DESKeySpec', 'DESedeKeySpec', 'DHGenParameterSpec', 'DHParameterSpec', 'DHPrivateKeySpec', 'DHPublicKeySpec', 'IvParameterSpec', 'OAEPParameterSpec', 'PBEKeySpec', 'PBEParameterSpec', 'PSource', 'PSource.PSpecified', 'RC2ParameterSpec', 'RC5ParameterSpec', 'SecretKeySpec'
+ ),
+ 60 => array (
+ 'IIOException', 'IIOImage', 'IIOParam', 'IIOParamController', 'ImageIO', 'ImageReadParam', 'ImageReader', 'ImageTranscoder', 'ImageTypeSpecifier', 'ImageWriteParam', 'ImageWriter'
+ ),
+ 61 => array (
+ 'IIOReadProgressListener', 'IIOReadUpdateListener', 'IIOReadWarningListener', 'IIOWriteProgressListener', 'IIOWriteWarningListener'
+ ),
+ 62 => array (
+ 'IIOInvalidTreeException', 'IIOMetadata', 'IIOMetadataController', 'IIOMetadataFormat', 'IIOMetadataFormatImpl', 'IIOMetadataNode'
+ ),
+ 63 => array (
+ 'BMPImageWriteParam'
+ ),
+ 64 => array (
+ 'JPEGHuffmanTable', 'JPEGImageReadParam', 'JPEGImageWriteParam', 'JPEGQTable'
+ ),
+ 65 => array (
+ 'IIORegistry', 'IIOServiceProvider', 'ImageInputStreamSpi', 'ImageOutputStreamSpi', 'ImageReaderSpi', 'ImageReaderWriterSpi', 'ImageTranscoderSpi', 'ImageWriterSpi', 'RegisterableService', 'ServiceRegistry', 'ServiceRegistry.Filter'
+ ),
+ 66 => array (
+ 'FileCacheImageInputStream', 'FileCacheImageOutputStream', 'FileImageInputStream', 'FileImageOutputStream', 'IIOByteBuffer', 'ImageInputStream', 'ImageInputStreamImpl', 'ImageOutputStream', 'ImageOutputStreamImpl', 'MemoryCacheImageInputStream', 'MemoryCacheImageOutputStream'
+ ),
+ 67 => array (
+ 'AttributeChangeNotification', 'AttributeChangeNotificationFilter', 'AttributeNotFoundException', 'AttributeValueExp', 'BadAttributeValueExpException', 'BadBinaryOpValueExpException', 'BadStringOperationException', 'Descriptor', 'DescriptorAccess', 'DynamicMBean', 'InstanceAlreadyExistsException', 'InstanceNotFoundException', 'InvalidApplicationException', 'JMException', 'JMRuntimeException', 'ListenerNotFoundException', 'MBeanAttributeInfo', 'MBeanConstructorInfo', 'MBeanException', 'MBeanFeatureInfo', 'MBeanInfo', 'MBeanNotificationInfo', 'MBeanOperationInfo', 'MBeanParameterInfo', 'MBeanPermission', 'MBeanRegistration', 'MBeanRegistrationException', 'MBeanServer', 'MBeanServerBuilder', 'MBeanServerConnection', 'MBeanServerDelegate', 'MBeanServerDelegateMBean', 'MBeanServerFactory', 'MBeanServerInvocationHandler', 'MBeanServerNotification', 'MBeanServerPermission', 'MBeanTrustPermission', 'MalformedObjectNameException', 'NotCompliantMBeanException', 'Notification', 'Not
ificationBroadcaster',
+ 'NotificationBroadcasterSupport', 'NotificationEmitter', 'NotificationFilter', 'NotificationFilterSupport', 'NotificationListener', 'ObjectInstance', 'ObjectName', 'OperationsException', 'PersistentMBean', 'Query', 'QueryEval', 'QueryExp', 'ReflectionException', 'RuntimeErrorException', 'RuntimeMBeanException', 'RuntimeOperationsException', 'ServiceNotFoundException', 'StandardMBean', 'StringValueExp', 'ValueExp'
+ ),
+ 68 => array (
+ 'ClassLoaderRepository', 'MLet', 'MLetMBean', 'PrivateClassLoader', 'PrivateMLet'
+ ),
+ 69 => array (
+ 'DescriptorSupport', 'InvalidTargetObjectTypeException', 'ModelMBean', 'ModelMBeanAttributeInfo', 'ModelMBeanConstructorInfo', 'ModelMBeanInfo', 'ModelMBeanInfoSupport', 'ModelMBeanNotificationBroadcaster', 'ModelMBeanNotificationInfo', 'ModelMBeanOperationInfo', 'RequiredModelMBean', 'XMLParseException'
+ ),
+ 70 => array (
+ 'CounterMonitor', 'CounterMonitorMBean', 'GaugeMonitor', 'GaugeMonitorMBean', 'Monitor', 'MonitorMBean', 'MonitorNotification', 'MonitorSettingException', 'StringMonitor', 'StringMonitorMBean'
+ ),
+ 71 => array (
+ 'ArrayType', 'CompositeData', 'CompositeDataSupport', 'CompositeType', 'InvalidOpenTypeException', 'KeyAlreadyExistsException', 'OpenDataException', 'OpenMBeanAttributeInfo', 'OpenMBeanAttributeInfoSupport', 'OpenMBeanConstructorInfo', 'OpenMBeanConstructorInfoSupport', 'OpenMBeanInfo', 'OpenMBeanInfoSupport', 'OpenMBeanOperationInfo', 'OpenMBeanOperationInfoSupport', 'OpenMBeanParameterInfo', 'OpenMBeanParameterInfoSupport', 'SimpleType', 'TabularData', 'TabularDataSupport', 'TabularType'
+ ),
+ 72 => array (
+ 'InvalidRelationIdException', 'InvalidRelationServiceException', 'InvalidRelationTypeException', 'InvalidRoleInfoException', 'InvalidRoleValueException', 'MBeanServerNotificationFilter', 'Relation', 'RelationException', 'RelationNotFoundException', 'RelationNotification', 'RelationService', 'RelationServiceMBean', 'RelationServiceNotRegisteredException', 'RelationSupport', 'RelationSupportMBean', 'RelationType', 'RelationTypeNotFoundException', 'RelationTypeSupport', 'Role', 'RoleInfo', 'RoleInfoNotFoundException', 'RoleList', 'RoleNotFoundException', 'RoleResult', 'RoleStatus', 'RoleUnresolved', 'RoleUnresolvedList'
+ ),
+ 73 => array (
+ 'JMXAuthenticator', 'JMXConnectionNotification', 'JMXConnector', 'JMXConnectorFactory', 'JMXConnectorProvider', 'JMXConnectorServer', 'JMXConnectorServerFactory', 'JMXConnectorServerMBean', 'JMXConnectorServerProvider', 'JMXPrincipal', 'JMXProviderException', 'JMXServerErrorException', 'JMXServiceURL', 'MBeanServerForwarder', 'NotificationResult', 'SubjectDelegationPermission', 'TargetedNotification'
+ ),
+ 74 => array (
+ 'RMIConnection', 'RMIConnectionImpl', 'RMIConnectionImpl_Stub', 'RMIConnector', 'RMIConnectorServer', 'RMIIIOPServerImpl', 'RMIJRMPServerImpl', 'RMIServer', 'RMIServerImpl', 'RMIServerImpl_Stub'
+ ),
+ 75 => array (
+ 'TimerAlarmClockNotification', 'TimerMBean', 'TimerNotification'
+ ),
+ 76 => array (
+ 'AuthenticationNotSupportedException', 'BinaryRefAddr', 'CannotProceedException', 'CommunicationException', 'CompositeName', 'CompoundName', 'ConfigurationException', 'ContextNotEmptyException', 'InitialContext', 'InsufficientResourcesException', 'InterruptedNamingException', 'InvalidNameException', 'LimitExceededException', 'LinkException', 'LinkLoopException', 'LinkRef', 'MalformedLinkException', 'Name', 'NameAlreadyBoundException', 'NameClassPair', 'NameNotFoundException', 'NameParser', 'NamingEnumeration', 'NamingException', 'NamingSecurityException', 'NoInitialContextException', 'NoPermissionException', 'NotContextException', 'OperationNotSupportedException', 'PartialResultException', 'RefAddr', 'Referenceable', 'ReferralException', 'ServiceUnavailableException', 'SizeLimitExceededException', 'StringRefAddr', 'TimeLimitExceededException'
+ ),
+ 77 => array (
+ 'AttributeInUseException', 'AttributeModificationException', 'BasicAttribute', 'BasicAttributes', 'DirContext', 'InitialDirContext', 'InvalidAttributeIdentifierException', 'InvalidAttributesException', 'InvalidSearchControlsException', 'InvalidSearchFilterException', 'ModificationItem', 'NoSuchAttributeException', 'SchemaViolationException', 'SearchControls', 'SearchResult'
+ ),
+ 78 => array (
+ 'EventContext', 'EventDirContext', 'NamespaceChangeListener', 'NamingEvent', 'NamingExceptionEvent', 'NamingListener', 'ObjectChangeListener'
+ ),
+ 79 => array (
+ 'BasicControl', 'ControlFactory', 'ExtendedRequest', 'ExtendedResponse', 'HasControls', 'InitialLdapContext', 'LdapContext', 'LdapName', 'LdapReferralException', 'ManageReferralControl', 'PagedResultsControl', 'PagedResultsResponseControl', 'Rdn', 'SortControl', 'SortKey', 'SortResponseControl', 'StartTlsRequest', 'StartTlsResponse', 'UnsolicitedNotification', 'UnsolicitedNotificationEvent', 'UnsolicitedNotificationListener'
+ ),
+ 80 => array (
+ 'DirObjectFactory', 'DirStateFactory', 'DirStateFactory.Result', 'DirectoryManager', 'InitialContextFactory', 'InitialContextFactoryBuilder', 'NamingManager', 'ObjectFactory', 'ObjectFactoryBuilder', 'ResolveResult', 'Resolver', 'StateFactory'
+ ),
+ 81 => array (
+ 'ServerSocketFactory', 'SocketFactory'
+ ),
+ 82 => array (
+ 'CertPathTrustManagerParameters', 'HandshakeCompletedEvent', 'HandshakeCompletedListener', 'HostnameVerifier', 'HttpsURLConnection', 'KeyManager', 'KeyManagerFactory', 'KeyManagerFactorySpi', 'KeyStoreBuilderParameters', 'ManagerFactoryParameters', 'SSLContext', 'SSLContextSpi', 'SSLEngine', 'SSLEngineResult', 'SSLEngineResult.HandshakeStatus', 'SSLEngineResult.Status', 'SSLException', 'SSLHandshakeException', 'SSLKeyException', 'SSLPeerUnverifiedException', 'SSLPermission', 'SSLProtocolException', 'SSLServerSocket', 'SSLServerSocketFactory', 'SSLSession', 'SSLSessionBindingEvent', 'SSLSessionBindingListener', 'SSLSessionContext', 'SSLSocket', 'SSLSocketFactory', 'TrustManager', 'TrustManagerFactory', 'TrustManagerFactorySpi', 'X509ExtendedKeyManager', 'X509KeyManager', 'X509TrustManager'
+ ),
+ 83 => array (
+ 'AttributeException', 'CancelablePrintJob', 'Doc', 'DocFlavor', 'DocFlavor.BYTE_ARRAY', 'DocFlavor.CHAR_ARRAY', 'DocFlavor.INPUT_STREAM', 'DocFlavor.READER', 'DocFlavor.SERVICE_FORMATTED', 'DocFlavor.STRING', 'DocFlavor.URL', 'DocPrintJob', 'FlavorException', 'MultiDoc', 'MultiDocPrintJob', 'MultiDocPrintService', 'PrintException', 'PrintService', 'PrintServiceLookup', 'ServiceUI', 'ServiceUIFactory', 'SimpleDoc', 'StreamPrintService', 'StreamPrintServiceFactory', 'URIException'
+ ),
+ 84 => array (
+ 'AttributeSetUtilities', 'DateTimeSyntax', 'DocAttribute', 'DocAttributeSet', 'EnumSyntax', 'HashAttributeSet', 'HashDocAttributeSet', 'HashPrintJobAttributeSet', 'HashPrintRequestAttributeSet', 'HashPrintServiceAttributeSet', 'IntegerSyntax', 'PrintJobAttribute', 'PrintJobAttributeSet', 'PrintRequestAttribute', 'PrintRequestAttributeSet', 'PrintServiceAttribute', 'PrintServiceAttributeSet', 'ResolutionSyntax', 'SetOfIntegerSyntax', 'Size2DSyntax', 'SupportedValuesAttribute', 'TextSyntax', 'URISyntax', 'UnmodifiableSetException'
+ ),
+ 85 => array (
+ 'Chromaticity', 'ColorSupported', 'Compression', 'Copies', 'CopiesSupported', 'DateTimeAtCompleted', 'DateTimeAtCreation', 'DateTimeAtProcessing', 'Destination', 'DocumentName', 'Fidelity', 'Finishings', 'JobHoldUntil', 'JobImpressions', 'JobImpressionsCompleted', 'JobImpressionsSupported', 'JobKOctets', 'JobKOctetsProcessed', 'JobKOctetsSupported', 'JobMediaSheets', 'JobMediaSheetsCompleted', 'JobMediaSheetsSupported', 'JobMessageFromOperator', 'JobName', 'JobOriginatingUserName', 'JobPriority', 'JobPrioritySupported', 'JobSheets', 'JobState', 'JobStateReason', 'JobStateReasons', 'Media', 'MediaName', 'MediaPrintableArea', 'MediaSize', 'MediaSize.Engineering', 'MediaSize.ISO', 'MediaSize.JIS', 'MediaSize.NA', 'MediaSize.Other', 'MediaSizeName', 'MediaTray', 'MultipleDocumentHandling', 'NumberOfDocuments', 'NumberOfInterveningJobs', 'NumberUp', 'NumberUpSupported', 'OrientationRequested', 'OutputDeviceAssigned', 'PDLOverrideSupported', 'PageRanges', 'PagesPerMinute', 'Pag
esPerMinuteColor',
+ 'PresentationDirection', 'PrintQuality', 'PrinterInfo', 'PrinterIsAcceptingJobs', 'PrinterLocation', 'PrinterMakeAndModel', 'PrinterMessageFromOperator', 'PrinterMoreInfo', 'PrinterMoreInfoManufacturer', 'PrinterName', 'PrinterResolution', 'PrinterState', 'PrinterStateReason', 'PrinterStateReasons', 'PrinterURI', 'QueuedJobCount', 'ReferenceUriSchemesSupported', 'RequestingUserName', 'Severity', 'SheetCollate', 'Sides'
+ ),
+ 86 => array (
+ 'PrintEvent', 'PrintJobAdapter', 'PrintJobAttributeEvent', 'PrintJobAttributeListener', 'PrintJobEvent', 'PrintJobListener', 'PrintServiceAttributeEvent', 'PrintServiceAttributeListener'
+ ),
+ 87 => array (
+ 'PortableRemoteObject'
+ ),
+ 88 => array (
+ 'ClassDesc', 'PortableRemoteObjectDelegate', 'Stub', 'StubDelegate', 'Tie', 'Util', 'UtilDelegate', 'ValueHandler', 'ValueHandlerMultiFormat'
+ ),
+ 89 => array (
+ 'SslRMIClientSocketFactory', 'SslRMIServerSocketFactory'
+ ),
+ 90 => array (
+ 'AuthPermission', 'DestroyFailedException', 'Destroyable', 'PrivateCredentialPermission', 'RefreshFailedException', 'Refreshable', 'Subject', 'SubjectDomainCombiner'
+ ),
+ 91 => array (
+ 'Callback', 'CallbackHandler', 'ChoiceCallback', 'ConfirmationCallback', 'LanguageCallback', 'NameCallback', 'PasswordCallback', 'TextInputCallback', 'TextOutputCallback', 'UnsupportedCallbackException'
+ ),
+ 92 => array (
+ 'DelegationPermission', 'KerberosKey', 'KerberosPrincipal', 'KerberosTicket', 'ServicePermission'
+ ),
+ 93 => array (
+ 'AccountException', 'AccountExpiredException', 'AccountLockedException', 'AccountNotFoundException', 'AppConfigurationEntry', 'AppConfigurationEntry.LoginModuleControlFlag', 'Configuration', 'CredentialException', 'CredentialExpiredException', 'CredentialNotFoundException', 'FailedLoginException', 'LoginContext', 'LoginException'
+ ),
+ 94 => array (
+ 'LoginModule'
+ ),
+ 95 => array (
+ 'X500Principal', 'X500PrivateCredential'
+ ),
+ 96 => array (
+ 'AuthorizeCallback', 'RealmCallback', 'RealmChoiceCallback', 'Sasl', 'SaslClient', 'SaslClientFactory', 'SaslException', 'SaslServer', 'SaslServerFactory'
+ ),
+ 97 => array (
+ 'ControllerEventListener', 'Instrument', 'InvalidMidiDataException', 'MetaEventListener', 'MetaMessage', 'MidiChannel', 'MidiDevice', 'MidiDevice.Info', 'MidiEvent', 'MidiFileFormat', 'MidiMessage', 'MidiSystem', 'MidiUnavailableException', 'Patch', 'Receiver', 'Sequence', 'Sequencer', 'Sequencer.SyncMode', 'ShortMessage', 'Soundbank', 'SoundbankResource', 'Synthesizer', 'SysexMessage', 'Track', 'Transmitter', 'VoiceStatus'
+ ),
+ 98 => array (
+ 'MidiDeviceProvider', 'MidiFileReader', 'MidiFileWriter', 'SoundbankReader'
+ ),
+ 99 => array (
+ 'AudioFileFormat', 'AudioFileFormat.Type', 'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream', 'AudioPermission', 'AudioSystem', 'BooleanControl', 'BooleanControl.Type', 'Clip', 'CompoundControl', 'CompoundControl.Type', 'Control.Type', 'DataLine', 'DataLine.Info', 'EnumControl', 'EnumControl.Type', 'FloatControl', 'FloatControl.Type', 'Line', 'Line.Info', 'LineEvent', 'LineEvent.Type', 'LineListener', 'LineUnavailableException', 'Mixer', 'Mixer.Info', 'Port', 'Port.Info', 'ReverbType', 'SourceDataLine', 'TargetDataLine', 'UnsupportedAudioFileException'
+ ),
+ 100 => array (
+ 'AudioFileReader', 'AudioFileWriter', 'FormatConversionProvider', 'MixerProvider'
+ ),
+ 101 => array (
+ 'ConnectionEvent', 'ConnectionEventListener', 'ConnectionPoolDataSource', 'DataSource', 'PooledConnection', 'RowSet', 'RowSetEvent', 'RowSetInternal', 'RowSetListener', 'RowSetMetaData', 'RowSetReader', 'RowSetWriter', 'XAConnection', 'XADataSource'
+ ),
+ 102 => array (
+ 'BaseRowSet', 'CachedRowSet', 'FilteredRowSet', 'JdbcRowSet', 'JoinRowSet', 'Joinable', 'Predicate', 'RowSetMetaDataImpl', 'RowSetWarning', 'WebRowSet'
+ ),
+ 103 => array (
+ 'SQLInputImpl', 'SQLOutputImpl', 'SerialArray', 'SerialBlob', 'SerialClob', 'SerialDatalink', 'SerialException', 'SerialJavaObject', 'SerialRef', 'SerialStruct'
+ ),
+ 104 => array (
+ 'SyncFactory', 'SyncFactoryException', 'SyncProvider', 'SyncProviderException', 'SyncResolver', 'TransactionalWriter', 'XmlReader', 'XmlWriter'
+ ),
+ 105 => array (
+ 'AbstractAction', 'AbstractButton', 'AbstractCellEditor', 'AbstractListModel', 'AbstractSpinnerModel', 'Action', 'ActionMap', 'BorderFactory', 'BoundedRangeModel', 'Box', 'Box.Filler', 'BoxLayout', 'ButtonGroup', 'ButtonModel', 'CellEditor', 'CellRendererPane', 'ComboBoxEditor', 'ComboBoxModel', 'ComponentInputMap', 'DebugGraphics', 'DefaultBoundedRangeModel', 'DefaultButtonModel', 'DefaultCellEditor', 'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultFocusManager', 'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 'DefaultListModel', 'DefaultListSelectionModel', 'DefaultSingleSelectionModel', 'DesktopManager', 'FocusManager', 'GrayFilter', 'Icon', 'ImageIcon', 'InputMap', 'InputVerifier', 'InternalFrameFocusTraversalPolicy', 'JApplet', 'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox', 'JComboBox.KeySelectionManager', 'JComponent', 'JDesktopPane', 'JDialog', 'JEditorPane', 'JFileChooser', 'JFormattedTextField', 'JFormattedTex
tField.AbstractFormatter',
+ 'JFormattedTextField.AbstractFormatterFactory', 'JFrame', 'JInternalFrame', 'JInternalFrame.JDesktopIcon', 'JLabel', 'JLayeredPane', 'JList', 'JMenu', 'JMenuBar', 'JMenuItem', 'JOptionPane', 'JPanel', 'JPasswordField', 'JPopupMenu', 'JPopupMenu.Separator', 'JProgressBar', 'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane', 'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider', 'JSpinner', 'JSpinner.DateEditor', 'JSpinner.DefaultEditor', 'JSpinner.ListEditor', 'JSpinner.NumberEditor', 'JSplitPane', 'JTabbedPane', 'JTable', 'JTable.PrintMode', 'JTextArea', 'JTextField', 'JTextPane', 'JToggleButton', 'JToggleButton.ToggleButtonModel', 'JToolBar', 'JToolBar.Separator', 'JToolTip', 'JTree', 'JTree.DynamicUtilTreeNode', 'JTree.EmptySelectionModel', 'JViewport', 'JWindow', 'KeyStroke', 'LayoutFocusTraversalPolicy', 'ListCellRenderer', 'ListModel', 'ListSelectionModel', 'LookAndFeel', 'MenuElement', 'MenuSelectionManager', 'MutableComboBoxModel', 'OverlayLayout', 'Popup', 'PopupF
actory', 'ProgressMonitor',
+ 'ProgressMonitorInputStream', 'Renderer', 'RepaintManager', 'RootPaneContainer', 'ScrollPaneConstants', 'ScrollPaneLayout', 'ScrollPaneLayout.UIResource', 'Scrollable', 'SingleSelectionModel', 'SizeRequirements', 'SizeSequence', 'SortingFocusTraversalPolicy', 'SpinnerDateModel', 'SpinnerListModel', 'SpinnerModel', 'SpinnerNumberModel', 'Spring', 'SpringLayout', 'SpringLayout.Constraints', 'SwingConstants', 'SwingUtilities', 'ToolTipManager', 'TransferHandler', 'UIDefaults', 'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap', 'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue', 'UIManager', 'UIManager.LookAndFeelInfo', 'UnsupportedLookAndFeelException', 'ViewportLayout', 'WindowConstants'
+ ),
+ 106 => array (
+ 'AbstractBorder', 'BevelBorder', 'Border', 'CompoundBorder', 'EmptyBorder', 'EtchedBorder', 'LineBorder', 'MatteBorder', 'SoftBevelBorder', 'TitledBorder'
+ ),
+ 107 => array (
+ 'AbstractColorChooserPanel', 'ColorChooserComponentFactory', 'ColorSelectionModel', 'DefaultColorSelectionModel'
+ ),
+ 108 => array (
+ 'AncestorEvent', 'AncestorListener', 'CaretEvent', 'CaretListener', 'CellEditorListener', 'ChangeEvent', 'ChangeListener', 'DocumentEvent.ElementChange', 'DocumentEvent.EventType', 'DocumentListener', 'EventListenerList', 'HyperlinkEvent', 'HyperlinkEvent.EventType', 'HyperlinkListener', 'InternalFrameAdapter', 'InternalFrameEvent', 'InternalFrameListener', 'ListDataEvent', 'ListDataListener', 'ListSelectionEvent', 'ListSelectionListener', 'MenuDragMouseEvent', 'MenuDragMouseListener', 'MenuEvent', 'MenuKeyEvent', 'MenuKeyListener', 'MenuListener', 'MouseInputAdapter', 'MouseInputListener', 'PopupMenuEvent', 'PopupMenuListener', 'SwingPropertyChangeSupport', 'TableColumnModelEvent', 'TableColumnModelListener', 'TableModelEvent', 'TableModelListener', 'TreeExpansionEvent', 'TreeExpansionListener', 'TreeModelEvent', 'TreeModelListener', 'TreeSelectionEvent', 'TreeSelectionListener', 'TreeWillExpandListener', 'UndoableEditEvent', 'UndoableEditListener'
+ ),
+ 109 => array (
+ 'FileSystemView', 'FileView'
+ ),
+ 110 => array (
+ 'ActionMapUIResource', 'BorderUIResource', 'BorderUIResource.BevelBorderUIResource', 'BorderUIResource.CompoundBorderUIResource', 'BorderUIResource.EmptyBorderUIResource', 'BorderUIResource.EtchedBorderUIResource', 'BorderUIResource.LineBorderUIResource', 'BorderUIResource.MatteBorderUIResource', 'BorderUIResource.TitledBorderUIResource', 'ButtonUI', 'ColorChooserUI', 'ColorUIResource', 'ComboBoxUI', 'ComponentInputMapUIResource', 'ComponentUI', 'DesktopIconUI', 'DesktopPaneUI', 'DimensionUIResource', 'FileChooserUI', 'FontUIResource', 'IconUIResource', 'InputMapUIResource', 'InsetsUIResource', 'InternalFrameUI', 'LabelUI', 'ListUI', 'MenuBarUI', 'MenuItemUI', 'OptionPaneUI', 'PanelUI', 'PopupMenuUI', 'ProgressBarUI', 'RootPaneUI', 'ScrollBarUI', 'ScrollPaneUI', 'SeparatorUI', 'SliderUI', 'SpinnerUI', 'SplitPaneUI', 'TabbedPaneUI', 'TableHeaderUI', 'TableUI', 'TextUI', 'ToolBarUI', 'ToolTipUI', 'TreeUI', 'UIResource', 'ViewportUI'
+ ),
+ 111 => array (
+ 'BasicArrowButton', 'BasicBorders', 'BasicBorders.ButtonBorder', 'BasicBorders.FieldBorder', 'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder', 'BasicBorders.RadioButtonBorder', 'BasicBorders.RolloverButtonBorder', 'BasicBorders.SplitPaneBorder', 'BasicBorders.ToggleButtonBorder', 'BasicButtonListener', 'BasicButtonUI', 'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor', 'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource', 'BasicComboBoxUI', 'BasicComboPopup', 'BasicDesktopIconUI', 'BasicDesktopPaneUI', 'BasicDirectoryModel', 'BasicEditorPaneUI', 'BasicFileChooserUI', 'BasicFormattedTextFieldUI', 'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 'BasicInternalFrameTitlePane', 'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 'BasicOptionPaneUI', 'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 'Bas
icPasswordFieldUI',
+ 'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI', 'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI', 'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI', 'BasicSliderUI', 'BasicSpinnerUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI', 'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret', 'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 'BasicToolBarSeparatorUI', 'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 'BasicViewportUI', 'ComboPopup', 'DefaultMenuLayout'
+ ),
+ 112 => array (
+ 'DefaultMetalTheme', 'MetalBorders', 'MetalBorders.ButtonBorder', 'MetalBorders.Flush3DBorder', 'MetalBorders.InternalFrameBorder', 'MetalBorders.MenuBarBorder', 'MetalBorders.MenuItemBorder', 'MetalBorders.OptionDialogBorder', 'MetalBorders.PaletteBorder', 'MetalBorders.PopupMenuBorder', 'MetalBorders.RolloverButtonBorder', 'MetalBorders.ScrollPaneBorder', 'MetalBorders.TableHeaderBorder', 'MetalBorders.TextFieldBorder', 'MetalBorders.ToggleButtonBorder', 'MetalBorders.ToolBarBorder', 'MetalButtonUI', 'MetalCheckBoxIcon', 'MetalCheckBoxUI', 'MetalComboBoxButton', 'MetalComboBoxEditor', 'MetalComboBoxEditor.UIResource', 'MetalComboBoxIcon', 'MetalComboBoxUI', 'MetalDesktopIconUI', 'MetalFileChooserUI', 'MetalIconFactory', 'MetalIconFactory.FileIcon16', 'MetalIconFactory.FolderIcon16', 'MetalIconFactory.PaletteCloseIcon', 'MetalIconFactory.TreeControlIcon', 'MetalIconFactory.TreeFolderIcon', 'MetalIconFactory.TreeLeafIcon', 'MetalInternalFrameTitlePane', 'MetalInternalFram
eUI', 'MetalLabelUI',
+ 'MetalLookAndFeel', 'MetalMenuBarUI', 'MetalPopupMenuSeparatorUI', 'MetalProgressBarUI', 'MetalRadioButtonUI', 'MetalRootPaneUI', 'MetalScrollBarUI', 'MetalScrollButton', 'MetalScrollPaneUI', 'MetalSeparatorUI', 'MetalSliderUI', 'MetalSplitPaneUI', 'MetalTabbedPaneUI', 'MetalTextFieldUI', 'MetalTheme', 'MetalToggleButtonUI', 'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI', 'OceanTheme'
+ ),
+ 113 => array (
+ 'MultiButtonUI', 'MultiColorChooserUI', 'MultiComboBoxUI', 'MultiDesktopIconUI', 'MultiDesktopPaneUI', 'MultiFileChooserUI', 'MultiInternalFrameUI', 'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel', 'MultiMenuBarUI', 'MultiMenuItemUI', 'MultiOptionPaneUI', 'MultiPanelUI', 'MultiPopupMenuUI', 'MultiProgressBarUI', 'MultiRootPaneUI', 'MultiScrollBarUI', 'MultiScrollPaneUI', 'MultiSeparatorUI', 'MultiSliderUI', 'MultiSpinnerUI', 'MultiSplitPaneUI', 'MultiTabbedPaneUI', 'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI', 'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI', 'MultiViewportUI'
+ ),
+ 114 => array (
+ 'ColorType', 'Region', 'SynthConstants', 'SynthContext', 'SynthGraphicsUtils', 'SynthLookAndFeel', 'SynthPainter', 'SynthStyle', 'SynthStyleFactory'
+ ),
+ 115 => array (
+ 'AbstractTableModel', 'DefaultTableCellRenderer', 'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel', 'DefaultTableModel', 'JTableHeader', 'TableCellEditor', 'TableCellRenderer', 'TableColumn', 'TableColumnModel', 'TableModel'
+ ),
+ 116 => array (
+ 'AbstractDocument', 'AbstractDocument.AttributeContext', 'AbstractDocument.Content', 'AbstractDocument.ElementEdit', 'AbstractWriter', 'AsyncBoxView', 'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute', 'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute', 'BadLocationException', 'BoxView', 'Caret', 'ChangedCharSetException', 'ComponentView', 'CompositeView', 'DateFormatter', 'DefaultCaret', 'DefaultEditorKit', 'DefaultEditorKit.BeepAction', 'DefaultEditorKit.CopyAction', 'DefaultEditorKit.CutAction', 'DefaultEditorKit.DefaultKeyTypedAction', 'DefaultEditorKit.InsertBreakAction', 'DefaultEditorKit.InsertContentAction', 'DefaultEditorKit.InsertTabAction', 'DefaultEditorKit.PasteAction', 'DefaultFormatter', 'DefaultFormatterFactory', 'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter', 'DefaultStyledDocument', 'DefaultStyledDocument.AttributeUndoableEdit', 'DefaultStyledDocument.ElementSpec', 'DefaultTextUI', 'DocumentFilter', 'Docume
ntFilter.FilterBypass',
+ 'EditorKit', 'ElementIterator', 'FieldView', 'FlowView', 'FlowView.FlowStrategy', 'GapContent', 'GlyphView', 'GlyphView.GlyphPainter', 'Highlighter', 'Highlighter.Highlight', 'Highlighter.HighlightPainter', 'IconView', 'InternationalFormatter', 'JTextComponent', 'JTextComponent.KeyBinding', 'Keymap', 'LabelView', 'LayeredHighlighter', 'LayeredHighlighter.LayerPainter', 'LayoutQueue', 'MaskFormatter', 'MutableAttributeSet', 'NavigationFilter', 'NavigationFilter.FilterBypass', 'NumberFormatter', 'PasswordView', 'PlainDocument', 'PlainView', 'Position', 'Position.Bias', 'Segment', 'SimpleAttributeSet', 'StringContent', 'Style', 'StyleConstants', 'StyleConstants.CharacterConstants', 'StyleConstants.ColorConstants', 'StyleConstants.FontConstants', 'StyleConstants.ParagraphConstants', 'StyleContext', 'StyledDocument', 'StyledEditorKit', 'StyledEditorKit.AlignmentAction', 'StyledEditorKit.BoldAction', 'StyledEditorKit.FontFamilyAction', 'StyledEditorKit.FontSizeAction', 'StyledE
ditorKit.ForegroundAction',
+ 'StyledEditorKit.ItalicAction', 'StyledEditorKit.StyledTextAction', 'StyledEditorKit.UnderlineAction', 'TabExpander', 'TabSet', 'TabStop', 'TabableView', 'TableView', 'TextAction', 'Utilities', 'View', 'ViewFactory', 'WrappedPlainView', 'ZoneView'
+ ),
+ 117 => array (
+ 'BlockView', 'CSS', 'CSS.Attribute', 'FormSubmitEvent', 'FormSubmitEvent.MethodType', 'FormView', 'HTML', 'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag', 'HTMLDocument', 'HTMLDocument.Iterator', 'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory', 'HTMLEditorKit.HTMLTextAction', 'HTMLEditorKit.InsertHTMLTextAction', 'HTMLEditorKit.LinkController', 'HTMLEditorKit.Parser', 'HTMLEditorKit.ParserCallback', 'HTMLFrameHyperlinkEvent', 'HTMLWriter', 'ImageView', 'InlineView', 'ListView', 'MinimalHTMLWriter', 'ObjectView', 'Option', 'StyleSheet', 'StyleSheet.BoxPainter', 'StyleSheet.ListPainter'
+ ),
+ 118 => array (
+ 'ContentModel', 'DTD', 'DTDConstants', 'DocumentParser', 'ParserDelegator', 'TagElement'
+ ),
+ 119 => array (
+ 'RTFEditorKit'
+ ),
+ 120 => array (
+ 'AbstractLayoutCache', 'AbstractLayoutCache.NodeDimensions', 'DefaultMutableTreeNode', 'DefaultTreeCellEditor', 'DefaultTreeCellRenderer', 'DefaultTreeModel', 'DefaultTreeSelectionModel', 'ExpandVetoException', 'FixedHeightLayoutCache', 'MutableTreeNode', 'RowMapper', 'TreeCellEditor', 'TreeCellRenderer', 'TreeModel', 'TreeNode', 'TreePath', 'TreeSelectionModel', 'VariableHeightLayoutCache'
+ ),
+ 121 => array (
+ 'AbstractUndoableEdit', 'CannotRedoException', 'CannotUndoException', 'CompoundEdit', 'StateEdit', 'StateEditable', 'UndoManager', 'UndoableEdit', 'UndoableEditSupport'
+ ),
+ 122 => array (
+ 'InvalidTransactionException', 'TransactionRequiredException', 'TransactionRolledbackException'
+ ),
+ 123 => array (
+ 'XAException', 'XAResource', 'Xid'
+ ),
+ 124 => array (
+ 'XMLConstants'
+ ),
+ 125 => array (
+ 'DatatypeConfigurationException', 'DatatypeConstants', 'DatatypeConstants.Field', 'DatatypeFactory', 'Duration', 'XMLGregorianCalendar'
+ ),
+ 126 => array (
+ 'NamespaceContext', 'QName'
+ ),
+ 127 => array (
+ 'DocumentBuilder', 'DocumentBuilderFactory', 'FactoryConfigurationError', 'ParserConfigurationException', 'SAXParser', 'SAXParserFactory'
+ ),
+ 128 => array (
+ 'ErrorListener', 'OutputKeys', 'Result', 'Source', 'SourceLocator', 'Templates', 'Transformer', 'TransformerConfigurationException', 'TransformerException', 'TransformerFactory', 'TransformerFactoryConfigurationError', 'URIResolver'
+ ),
+ 129 => array (
+ 'DOMResult', 'DOMSource'
+ ),
+ 130 => array (
+ 'SAXResult', 'SAXSource', 'SAXTransformerFactory', 'TemplatesHandler', 'TransformerHandler'
+ ),
+ 131 => array (
+ 'StreamResult', 'StreamSource'
+ ),
+ 132 => array (
+ 'Schema', 'SchemaFactory', 'SchemaFactoryLoader', 'TypeInfoProvider', 'Validator', 'ValidatorHandler'
+ ),
+ 133 => array (
+ 'XPath', 'XPathConstants', 'XPathException', 'XPathExpression', 'XPathExpressionException', 'XPathFactory', 'XPathFactoryConfigurationException', 'XPathFunction', 'XPathFunctionException', 'XPathFunctionResolver', 'XPathVariableResolver'
+ ),
+ 134 => array (
+ 'ChannelBinding', 'GSSContext', 'GSSCredential', 'GSSException', 'GSSManager', 'GSSName', 'MessageProp', 'Oid'
+ ),
+ 135 => array (
+ 'ACTIVITY_COMPLETED', 'ACTIVITY_REQUIRED', 'ARG_IN', 'ARG_INOUT', 'ARG_OUT', 'Any', 'AnyHolder', 'AnySeqHolder', 'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION', 'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 'BAD_POLICY_VALUE', 'BAD_QOS', 'BAD_TYPECODE', 'BooleanHolder', 'BooleanSeqHelper', 'BooleanSeqHolder', 'ByteHolder', 'CODESET_INCOMPATIBLE', 'COMM_FAILURE', 'CTX_RESTRICT_SCOPE', 'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 'CompletionStatus', 'CompletionStatusHelper', 'ContextList', 'CurrentHolder', 'CustomMarshal', 'DATA_CONVERSION', 'DefinitionKind', 'DefinitionKindHelper', 'DomainManager', 'DomainManagerOperations', 'DoubleHolder', 'DoubleSeqHelper', 'DoubleSeqHolder', 'Environment', 'ExceptionList', 'FREE_MEM', 'FixedHolder', 'FloatHolder', 'FloatSeqHelper', 'FloatSeqHolder', 'IDLType', 'IDLTypeHelper', 'IDLTypeOperations', 'IMP_LIMIT', 'INITIALIZE', 'INTERNAL', 'INTF_REPOS', 'INVALID_ACTIVITY', 'INVALID_TRANSACTION', 'INV_FLAG', 'INV_IDENT', 'INV_OBJREF', 'I
NV_POLICY', 'IRObject',
+ 'IRObjectOperations', 'IdentifierHelper', 'IntHolder', 'LocalObject', 'LongHolder', 'LongLongSeqHelper', 'LongLongSeqHolder', 'LongSeqHelper', 'LongSeqHolder', 'MARSHAL', 'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION', 'NO_RESOURCES', 'NO_RESPONSE', 'NVList', 'NamedValue', 'OBJECT_NOT_EXIST', 'OBJ_ADAPTER', 'OMGVMCID', 'ObjectHelper', 'ObjectHolder', 'OctetSeqHelper', 'OctetSeqHolder', 'PERSIST_STORE', 'PRIVATE_MEMBER', 'PUBLIC_MEMBER', 'ParameterMode', 'ParameterModeHelper', 'ParameterModeHolder', 'PolicyError', 'PolicyErrorCodeHelper', 'PolicyErrorHelper', 'PolicyErrorHolder', 'PolicyHelper', 'PolicyHolder', 'PolicyListHelper', 'PolicyListHolder', 'PolicyOperations', 'PolicyTypeHelper', 'PrincipalHolder', 'REBIND', 'RepositoryIdHelper', 'Request', 'ServerRequest', 'ServiceDetail', 'ServiceDetailHelper', 'ServiceInformation', 'ServiceInformationHelper', 'ServiceInformationHolder', 'SetOverrideType', 'SetOverrideTypeHelper', 'ShortHolder', 'ShortSeqHelper', 'ShortSeqHolder'
, 'StringHolder',
+ 'StringSeqHelper', 'StringSeqHolder', 'StringValueHelper', 'StructMember', 'StructMemberHelper', 'SystemException', 'TCKind', 'TIMEOUT', 'TRANSACTION_MODE', 'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK', 'TRANSACTION_UNAVAILABLE', 'TRANSIENT', 'TypeCode', 'TypeCodeHolder', 'ULongLongSeqHelper', 'ULongLongSeqHolder', 'ULongSeqHelper', 'ULongSeqHolder', 'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE', 'UShortSeqHelper', 'UShortSeqHolder', 'UnionMember', 'UnionMemberHelper', 'UnknownUserException', 'UnknownUserExceptionHelper', 'UnknownUserExceptionHolder', 'UserException', 'VM_ABSTRACT', 'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE', 'ValueBaseHelper', 'ValueBaseHolder', 'ValueMember', 'ValueMemberHelper', 'VersionSpecHelper', 'VisibilityHelper', 'WCharSeqHelper', 'WCharSeqHolder', 'WStringSeqHelper', 'WStringSeqHolder', 'WStringValueHelper', 'WrongTransaction', 'WrongTransactionHelper', 'WrongTransactionHolder', '_IDLTypeStub', '_PolicyStub'
+ ),
+ 136 => array (
+ 'Invalid', 'InvalidSeq'
+ ),
+ 137 => array (
+ 'BadKind'
+ ),
+ 138 => array (
+ 'ApplicationException', 'BoxedValueHelper', 'CustomValue', 'IDLEntity', 'IndirectionException', 'InvokeHandler', 'RemarshalException', 'ResponseHandler', 'ServantObject', 'Streamable', 'StreamableValue', 'UnknownException', 'ValueBase', 'ValueFactory', 'ValueInputStream', 'ValueOutputStream'
+ ),
+ 139 => array (
+ 'BindingHelper', 'BindingHolder', 'BindingIterator', 'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations', 'BindingIteratorPOA', 'BindingListHelper', 'BindingListHolder', 'BindingType', 'BindingTypeHelper', 'BindingTypeHolder', 'IstringHelper', 'NameComponent', 'NameComponentHelper', 'NameComponentHolder', 'NameHelper', 'NameHolder', 'NamingContext', 'NamingContextExt', 'NamingContextExtHelper', 'NamingContextExtHolder', 'NamingContextExtOperations', 'NamingContextExtPOA', 'NamingContextHelper', 'NamingContextHolder', 'NamingContextOperations', 'NamingContextPOA', '_BindingIteratorImplBase', '_BindingIteratorStub', '_NamingContextExtStub', '_NamingContextImplBase', '_NamingContextStub'
+ ),
+ 140 => array (
+ 'AddressHelper', 'InvalidAddress', 'InvalidAddressHelper', 'InvalidAddressHolder', 'StringNameHelper', 'URLStringHelper'
+ ),
+ 141 => array (
+ 'AlreadyBound', 'AlreadyBoundHelper', 'AlreadyBoundHolder', 'CannotProceed', 'CannotProceedHelper', 'CannotProceedHolder', 'InvalidNameHolder', 'NotEmpty', 'NotEmptyHelper', 'NotEmptyHolder', 'NotFound', 'NotFoundHelper', 'NotFoundHolder', 'NotFoundReason', 'NotFoundReasonHelper', 'NotFoundReasonHolder'
+ ),
+ 142 => array (
+ 'Parameter'
+ ),
+ 143 => array (
+ 'DynAnyFactory', 'DynAnyFactoryHelper', 'DynAnyFactoryOperations', 'DynAnyHelper', 'DynAnyOperations', 'DynAnySeqHelper', 'DynArrayHelper', 'DynArrayOperations', 'DynEnumHelper', 'DynEnumOperations', 'DynFixedHelper', 'DynFixedOperations', 'DynSequenceHelper', 'DynSequenceOperations', 'DynStructHelper', 'DynStructOperations', 'DynUnionHelper', 'DynUnionOperations', 'DynValueBox', 'DynValueBoxOperations', 'DynValueCommon', 'DynValueCommonOperations', 'DynValueHelper', 'DynValueOperations', 'NameDynAnyPair', 'NameDynAnyPairHelper', 'NameDynAnyPairSeqHelper', 'NameValuePairSeqHelper', '_DynAnyFactoryStub', '_DynAnyStub', '_DynArrayStub', '_DynEnumStub', '_DynFixedStub', '_DynSequenceStub', '_DynStructStub', '_DynUnionStub', '_DynValueStub'
+ ),
+ 144 => array (
+ 'InconsistentTypeCodeHelper'
+ ),
+ 145 => array (
+ 'InvalidValueHelper'
+ ),
+ 146 => array (
+ 'CodeSets', 'Codec', 'CodecFactory', 'CodecFactoryHelper', 'CodecFactoryOperations', 'CodecOperations', 'ComponentIdHelper', 'ENCODING_CDR_ENCAPS', 'Encoding', 'ExceptionDetailMessage', 'IOR', 'IORHelper', 'IORHolder', 'MultipleComponentProfileHelper', 'MultipleComponentProfileHolder', 'ProfileIdHelper', 'RMICustomMaxStreamFormat', 'ServiceContext', 'ServiceContextHelper', 'ServiceContextHolder', 'ServiceContextListHelper', 'ServiceContextListHolder', 'ServiceIdHelper', 'TAG_ALTERNATE_IIOP_ADDRESS', 'TAG_CODE_SETS', 'TAG_INTERNET_IOP', 'TAG_JAVA_CODEBASE', 'TAG_MULTIPLE_COMPONENTS', 'TAG_ORB_TYPE', 'TAG_POLICIES', 'TAG_RMI_CUSTOM_MAX_STREAM_FORMAT', 'TaggedComponent', 'TaggedComponentHelper', 'TaggedComponentHolder', 'TaggedProfile', 'TaggedProfileHelper', 'TaggedProfileHolder', 'TransactionService'
+ ),
+ 147 => array (
+ 'UnknownEncoding', 'UnknownEncodingHelper'
+ ),
+ 148 => array (
+ 'FormatMismatch', 'FormatMismatchHelper', 'InvalidTypeForEncoding', 'InvalidTypeForEncodingHelper'
+ ),
+ 149 => array (
+ 'SYNC_WITH_TRANSPORT', 'SyncScopeHelper'
+ ),
+ 150 => array (
+ 'ACTIVE', 'AdapterManagerIdHelper', 'AdapterNameHelper', 'AdapterStateHelper', 'ClientRequestInfo', 'ClientRequestInfoOperations', 'ClientRequestInterceptor', 'ClientRequestInterceptorOperations', 'DISCARDING', 'HOLDING', 'INACTIVE', 'IORInfo', 'IORInfoOperations', 'IORInterceptor', 'IORInterceptorOperations', 'IORInterceptor_3_0', 'IORInterceptor_3_0Helper', 'IORInterceptor_3_0Holder', 'IORInterceptor_3_0Operations', 'Interceptor', 'InterceptorOperations', 'InvalidSlot', 'InvalidSlotHelper', 'LOCATION_FORWARD', 'NON_EXISTENT', 'ORBIdHelper', 'ORBInitInfo', 'ORBInitInfoOperations', 'ORBInitializer', 'ORBInitializerOperations', 'ObjectReferenceFactory', 'ObjectReferenceFactoryHelper', 'ObjectReferenceFactoryHolder', 'ObjectReferenceTemplate', 'ObjectReferenceTemplateHelper', 'ObjectReferenceTemplateHolder', 'ObjectReferenceTemplateSeqHelper', 'ObjectReferenceTemplateSeqHolder', 'PolicyFactory', 'PolicyFactoryOperations', 'RequestInfo', 'RequestInfoOperations', 'SUCCESSFUL'
, 'SYSTEM_EXCEPTION',
+ 'ServerIdHelper', 'ServerRequestInfo', 'ServerRequestInfoOperations', 'ServerRequestInterceptor', 'ServerRequestInterceptorOperations', 'TRANSPORT_RETRY', 'USER_EXCEPTION'
+ ),
+ 151 => array (
+ 'DuplicateName', 'DuplicateNameHelper'
+ ),
+ 152 => array (
+ 'AdapterActivator', 'AdapterActivatorOperations', 'ID_ASSIGNMENT_POLICY_ID', 'ID_UNIQUENESS_POLICY_ID', 'IMPLICIT_ACTIVATION_POLICY_ID', 'IdAssignmentPolicy', 'IdAssignmentPolicyOperations', 'IdAssignmentPolicyValue', 'IdUniquenessPolicy', 'IdUniquenessPolicyOperations', 'IdUniquenessPolicyValue', 'ImplicitActivationPolicy', 'ImplicitActivationPolicyOperations', 'ImplicitActivationPolicyValue', 'LIFESPAN_POLICY_ID', 'LifespanPolicy', 'LifespanPolicyOperations', 'LifespanPolicyValue', 'POA', 'POAHelper', 'POAManager', 'POAManagerOperations', 'POAOperations', 'REQUEST_PROCESSING_POLICY_ID', 'RequestProcessingPolicy', 'RequestProcessingPolicyOperations', 'RequestProcessingPolicyValue', 'SERVANT_RETENTION_POLICY_ID', 'Servant', 'ServantActivator', 'ServantActivatorHelper', 'ServantActivatorOperations', 'ServantActivatorPOA', 'ServantLocator', 'ServantLocatorHelper', 'ServantLocatorOperations', 'ServantLocatorPOA', 'ServantManager', 'ServantManagerOperations', 'ServantRetentio
nPolicy',
+ 'ServantRetentionPolicyOperations', 'ServantRetentionPolicyValue', 'THREAD_POLICY_ID', 'ThreadPolicy', 'ThreadPolicyOperations', 'ThreadPolicyValue', '_ServantActivatorStub', '_ServantLocatorStub'
+ ),
+ 153 => array (
+ 'NoContext', 'NoContextHelper'
+ ),
+ 154 => array (
+ 'AdapterInactive', 'AdapterInactiveHelper', 'State'
+ ),
+ 155 => array (
+ 'AdapterAlreadyExists', 'AdapterAlreadyExistsHelper', 'AdapterNonExistent', 'AdapterNonExistentHelper', 'InvalidPolicy', 'InvalidPolicyHelper', 'NoServant', 'NoServantHelper', 'ObjectAlreadyActive', 'ObjectAlreadyActiveHelper', 'ObjectNotActive', 'ObjectNotActiveHelper', 'ServantAlreadyActive', 'ServantAlreadyActiveHelper', 'ServantNotActive', 'ServantNotActiveHelper', 'WrongAdapter', 'WrongAdapterHelper', 'WrongPolicy', 'WrongPolicyHelper'
+ ),
+ 156 => array (
+ 'CookieHolder'
+ ),
+ 157 => array (
+ 'RunTime', 'RunTimeOperations'
+ ),
+ 158 => array (
+ '_Remote_Stub'
+ ),
+ 159 => array (
+ 'Attr', 'CDATASection', 'CharacterData', 'Comment', 'DOMConfiguration', 'DOMError', 'DOMErrorHandler', 'DOMException', 'DOMImplementation', 'DOMImplementationList', 'DOMImplementationSource', 'DOMStringList', 'DocumentFragment', 'DocumentType', 'EntityReference', 'NameList', 'NamedNodeMap', 'Node', 'NodeList', 'Notation', 'ProcessingInstruction', 'Text', 'TypeInfo', 'UserDataHandler'
+ ),
+ 160 => array (
+ 'DOMImplementationRegistry'
+ ),
+ 161 => array (
+ 'EventException', 'EventTarget', 'MutationEvent', 'UIEvent'
+ ),
+ 162 => array (
+ 'DOMImplementationLS', 'LSException', 'LSInput', 'LSLoadEvent', 'LSOutput', 'LSParser', 'LSParserFilter', 'LSProgressEvent', 'LSResourceResolver', 'LSSerializer', 'LSSerializerFilter'
+ ),
+ 163 => array (
+ 'DTDHandler', 'DocumentHandler', 'EntityResolver', 'ErrorHandler', 'HandlerBase', 'InputSource', 'Locator', 'SAXException', 'SAXNotRecognizedException', 'SAXNotSupportedException', 'SAXParseException', 'XMLFilter', 'XMLReader'
+ ),
+ 164 => array (
+ 'Attributes2', 'Attributes2Impl', 'DeclHandler', 'DefaultHandler2', 'EntityResolver2', 'LexicalHandler', 'Locator2', 'Locator2Impl'
+ ),
+ 165 => array (
+ 'AttributeListImpl', 'AttributesImpl', 'DefaultHandler', 'LocatorImpl', 'NamespaceSupport', 'ParserAdapter', 'ParserFactory', 'XMLFilterImpl', 'XMLReaderAdapter', 'XMLReaderFactory'
+ ),
+ /* ambiguous class names (appear in more than one package) */
+ 166 => array (
+ 'Annotation', 'AnySeqHelper', 'Array', 'Attribute', 'AttributeList', 'AttributeSet', 'Attributes', 'AuthenticationException', 'Binding', 'Bounds', 'Certificate', 'CertificateEncodingException', 'CertificateException', 'CertificateExpiredException', 'CertificateNotYetValidException', 'CertificateParsingException', 'ConnectException', 'ContentHandler', 'Context', 'Control', 'Current', 'CurrentHelper', 'CurrentOperations', 'DOMLocator', 'DataInputStream', 'DataOutputStream', 'Date', 'DefaultLoaderRepository', 'Delegate', 'Document', 'DocumentEvent', 'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 'DynStruct', 'DynUnion', 'DynValue', 'DynamicImplementation', 'Element', 'Entity', 'Event', 'EventListener', 'FieldNameHelper', 'FileFilter', 'Formatter', 'ForwardRequest', 'ForwardRequestHelper', 'InconsistentTypeCode', 'InputStream', 'IntrospectionException', 'InvalidAttributeValueException', 'InvalidKeyException', 'InvalidName', 'InvalidNameHelper', 'InvalidValue', 'L
ist', 'MouseEvent',
+ 'NameValuePair', 'NameValuePairHelper', 'ORB', 'Object', 'ObjectIdHelper', 'ObjectImpl', 'OpenType', 'OutputStream', 'ParagraphView', 'Parser', 'Permission', 'Policy', 'Principal', 'Proxy', 'Reference', 'Statement', 'Timer', 'Timestamp', 'TypeMismatch', 'TypeMismatchHelper', 'UNKNOWN', 'UnknownHostException', 'X509Certificate'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ /* all Java keywords are case sensitive */
+ 1 => true, 2 => true, 3 => true, 4 => true,
+ 5 => true, 6 => true, 7 => true, 8 => true, 9 => true,
+ 10 => true, 11 => true, 12 => true, 13 => true, 14 => true,
+ 15 => true, 16 => true, 17 => true, 18 => true, 19 => true,
+ 20 => true, 21 => true, 22 => true, 23 => true, 24 => true,
+ 25 => true, 26 => true, 27 => true, 28 => true, 29 => true,
+ 30 => true, 31 => true, 32 => true, 33 => true, 34 => true,
+ 35 => true, 36 => true, 37 => true, 38 => true, 39 => true,
+ 40 => true, 41 => true, 42 => true, 43 => true, 44 => true,
+ 45 => true, 46 => true, 47 => true, 48 => true, 49 => true,
+ 50 => true, 51 => true, 52 => true, 53 => true, 54 => true,
+ 55 => true, 56 => true, 57 => true, 58 => true, 59 => true,
+ 60 => true, 61 => true, 62 => true, 63 => true, 64 => true,
+ 65 => true, 66 => true, 67 => true, 68 => true, 69 => true,
+ 70 => true, 71 => true, 72 => true, 73 => true, 74 => true,
+ 75 => true, 76 => true, 77 => true, 78 => true, 79 => true,
+ 80 => true, 81 => true, 82 => true, 83 => true, 84 => true,
+ 85 => true, 86 => true, 87 => true, 88 => true, 89 => true,
+ 90 => true, 91 => true, 92 => true, 93 => true, 94 => true,
+ 95 => true, 96 => true, 97 => true, 98 => true, 99 => true,
+ 100 => true, 101 => true, 102 => true, 103 => true, 104 => true,
+ 105 => true, 106 => true, 107 => true, 108 => true, 109 => true,
+ 110 => true, 111 => true, 112 => true, 113 => true, 114 => true,
+ 115 => true, 116 => true, 117 => true, 118 => true, 119 => true,
+ 120 => true, 121 => true, 122 => true, 123 => true, 124 => true,
+ 125 => true, 126 => true, 127 => true, 128 => true, 129 => true,
+ 130 => true, 131 => true, 132 => true, 133 => true, 134 => true,
+ 135 => true, 136 => true, 137 => true, 138 => true, 139 => true,
+ 140 => true, 141 => true, 142 => true, 143 => true, 144 => true,
+ 145 => true, 146 => true, 147 => true, 148 => true, 149 => true,
+ 150 => true, 151 => true, 152 => true, 153 => true, 154 => true,
+ 155 => true, 156 => true, 157 => true, 158 => true, 159 => true,
+ 160 => true, 161 => true, 162 => true, 163 => true, 164 => true,
+ 165 => true, 166 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #993333;',
+ 4 => 'color: #b13366;',
+ 5 => 'color: #aaaadd; font-weight: bold;',
+ 6 => 'color: #aaaadd; font-weight: bold;',
+ 7 => 'color: #aaaadd; font-weight: bold;',
+ 8 => 'color: #aaaadd; font-weight: bold;',
+ 9 => 'color: #aaaadd; font-weight: bold;',
+ 10 => 'color: #aaaadd; font-weight: bold;',
+ 11 => 'color: #aaaadd; font-weight: bold;',
+ 12 => 'color: #aaaadd; font-weight: bold;',
+ 13 => 'color: #aaaadd; font-weight: bold;',
+ 14 => 'color: #aaaadd; font-weight: bold;',
+ 15 => 'color: #aaaadd; font-weight: bold;',
+ 16 => 'color: #aaaadd; font-weight: bold;',
+ 17 => 'color: #aaaadd; font-weight: bold;',
+ 18 => 'color: #aaaadd; font-weight: bold;',
+ 19 => 'color: #aaaadd; font-weight: bold;',
+ 20 => 'color: #aaaadd; font-weight: bold;',
+ 21 => 'color: #aaaadd; font-weight: bold;',
+ 22 => 'color: #aaaadd; font-weight: bold;',
+ 23 => 'color: #aaaadd; font-weight: bold;',
+ 24 => 'color: #aaaadd; font-weight: bold;',
+ 25 => 'color: #aaaadd; font-weight: bold;',
+ 26 => 'color: #aaaadd; font-weight: bold;',
+ 27 => 'color: #aaaadd; font-weight: bold;',
+ 28 => 'color: #aaaadd; font-weight: bold;',
+ 29 => 'color: #aaaadd; font-weight: bold;',
+ 30 => 'color: #aaaadd; font-weight: bold;',
+ 31 => 'color: #aaaadd; font-weight: bold;',
+ 32 => 'color: #aaaadd; font-weight: bold;',
+ 33 => 'color: #aaaadd; font-weight: bold;',
+ 34 => 'color: #aaaadd; font-weight: bold;',
+ 35 => 'color: #aaaadd; font-weight: bold;',
+ 36 => 'color: #aaaadd; font-weight: bold;',
+ 37 => 'color: #aaaadd; font-weight: bold;',
+ 38 => 'color: #aaaadd; font-weight: bold;',
+ 39 => 'color: #aaaadd; font-weight: bold;',
+ 40 => 'color: #aaaadd; font-weight: bold;',
+ 41 => 'color: #aaaadd; font-weight: bold;',
+ 42 => 'color: #aaaadd; font-weight: bold;',
+ 43 => 'color: #aaaadd; font-weight: bold;',
+ 44 => 'color: #aaaadd; font-weight: bold;',
+ 45 => 'color: #aaaadd; font-weight: bold;',
+ 46 => 'color: #aaaadd; font-weight: bold;',
+ 47 => 'color: #aaaadd; font-weight: bold;',
+ 48 => 'color: #aaaadd; font-weight: bold;',
+ 49 => 'color: #aaaadd; font-weight: bold;',
+ 50 => 'color: #aaaadd; font-weight: bold;',
+ 51 => 'color: #aaaadd; font-weight: bold;',
+ 52 => 'color: #aaaadd; font-weight: bold;',
+ 53 => 'color: #aaaadd; font-weight: bold;',
+ 54 => 'color: #aaaadd; font-weight: bold;',
+ 55 => 'color: #aaaadd; font-weight: bold;',
+ 56 => 'color: #aaaadd; font-weight: bold;',
+ 57 => 'color: #aaaadd; font-weight: bold;',
+ 58 => 'color: #aaaadd; font-weight: bold;',
+ 59 => 'color: #aaaadd; font-weight: bold;',
+ 60 => 'color: #aaaadd; font-weight: bold;',
+ 61 => 'color: #aaaadd; font-weight: bold;',
+ 62 => 'color: #aaaadd; font-weight: bold;',
+ 63 => 'color: #aaaadd; font-weight: bold;',
+ 64 => 'color: #aaaadd; font-weight: bold;',
+ 65 => 'color: #aaaadd; font-weight: bold;',
+ 66 => 'color: #aaaadd; font-weight: bold;',
+ 67 => 'color: #aaaadd; font-weight: bold;',
+ 68 => 'color: #aaaadd; font-weight: bold;',
+ 69 => 'color: #aaaadd; font-weight: bold;',
+ 70 => 'color: #aaaadd; font-weight: bold;',
+ 71 => 'color: #aaaadd; font-weight: bold;',
+ 72 => 'color: #aaaadd; font-weight: bold;',
+ 73 => 'color: #aaaadd; font-weight: bold;',
+ 74 => 'color: #aaaadd; font-weight: bold;',
+ 75 => 'color: #aaaadd; font-weight: bold;',
+ 76 => 'color: #aaaadd; font-weight: bold;',
+ 77 => 'color: #aaaadd; font-weight: bold;',
+ 78 => 'color: #aaaadd; font-weight: bold;',
+ 79 => 'color: #aaaadd; font-weight: bold;',
+ 80 => 'color: #aaaadd; font-weight: bold;',
+ 81 => 'color: #aaaadd; font-weight: bold;',
+ 82 => 'color: #aaaadd; font-weight: bold;',
+ 83 => 'color: #aaaadd; font-weight: bold;',
+ 84 => 'color: #aaaadd; font-weight: bold;',
+ 85 => 'color: #aaaadd; font-weight: bold;',
+ 86 => 'color: #aaaadd; font-weight: bold;',
+ 87 => 'color: #aaaadd; font-weight: bold;',
+ 88 => 'color: #aaaadd; font-weight: bold;',
+ 89 => 'color: #aaaadd; font-weight: bold;',
+ 90 => 'color: #aaaadd; font-weight: bold;',
+ 91 => 'color: #aaaadd; font-weight: bold;',
+ 92 => 'color: #aaaadd; font-weight: bold;',
+ 93 => 'color: #aaaadd; font-weight: bold;',
+ 94 => 'color: #aaaadd; font-weight: bold;',
+ 95 => 'color: #aaaadd; font-weight: bold;',
+ 96 => 'color: #aaaadd; font-weight: bold;',
+ 97 => 'color: #aaaadd; font-weight: bold;',
+ 98 => 'color: #aaaadd; font-weight: bold;',
+ 99 => 'color: #aaaadd; font-weight: bold;',
+ 100 => 'color: #aaaadd; font-weight: bold;',
+ 101 => 'color: #aaaadd; font-weight: bold;',
+ 102 => 'color: #aaaadd; font-weight: bold;',
+ 103 => 'color: #aaaadd; font-weight: bold;',
+ 104 => 'color: #aaaadd; font-weight: bold;',
+ 105 => 'color: #aaaadd; font-weight: bold;',
+ 106 => 'color: #aaaadd; font-weight: bold;',
+ 107 => 'color: #aaaadd; font-weight: bold;',
+ 108 => 'color: #aaaadd; font-weight: bold;',
+ 109 => 'color: #aaaadd; font-weight: bold;',
+ 110 => 'color: #aaaadd; font-weight: bold;',
+ 111 => 'color: #aaaadd; font-weight: bold;',
+ 112 => 'color: #aaaadd; font-weight: bold;',
+ 113 => 'color: #aaaadd; font-weight: bold;',
+ 114 => 'color: #aaaadd; font-weight: bold;',
+ 115 => 'color: #aaaadd; font-weight: bold;',
+ 116 => 'color: #aaaadd; font-weight: bold;',
+ 117 => 'color: #aaaadd; font-weight: bold;',
+ 118 => 'color: #aaaadd; font-weight: bold;',
+ 119 => 'color: #aaaadd; font-weight: bold;',
+ 120 => 'color: #aaaadd; font-weight: bold;',
+ 121 => 'color: #aaaadd; font-weight: bold;',
+ 122 => 'color: #aaaadd; font-weight: bold;',
+ 123 => 'color: #aaaadd; font-weight: bold;',
+ 124 => 'color: #aaaadd; font-weight: bold;',
+ 125 => 'color: #aaaadd; font-weight: bold;',
+ 126 => 'color: #aaaadd; font-weight: bold;',
+ 127 => 'color: #aaaadd; font-weight: bold;',
+ 128 => 'color: #aaaadd; font-weight: bold;',
+ 129 => 'color: #aaaadd; font-weight: bold;',
+ 130 => 'color: #aaaadd; font-weight: bold;',
+ 131 => 'color: #aaaadd; font-weight: bold;',
+ 132 => 'color: #aaaadd; font-weight: bold;',
+ 133 => 'color: #aaaadd; font-weight: bold;',
+ 134 => 'color: #aaaadd; font-weight: bold;',
+ 135 => 'color: #aaaadd; font-weight: bold;',
+ 136 => 'color: #aaaadd; font-weight: bold;',
+ 137 => 'color: #aaaadd; font-weight: bold;',
+ 138 => 'color: #aaaadd; font-weight: bold;',
+ 139 => 'color: #aaaadd; font-weight: bold;',
+ 140 => 'color: #aaaadd; font-weight: bold;',
+ 141 => 'color: #aaaadd; font-weight: bold;',
+ 142 => 'color: #aaaadd; font-weight: bold;',
+ 143 => 'color: #aaaadd; font-weight: bold;',
+ 144 => 'color: #aaaadd; font-weight: bold;',
+ 145 => 'color: #aaaadd; font-weight: bold;',
+ 146 => 'color: #aaaadd; font-weight: bold;',
+ 147 => 'color: #aaaadd; font-weight: bold;',
+ 148 => 'color: #aaaadd; font-weight: bold;',
+ 149 => 'color: #aaaadd; font-weight: bold;',
+ 150 => 'color: #aaaadd; font-weight: bold;',
+ 151 => 'color: #aaaadd; font-weight: bold;',
+ 152 => 'color: #aaaadd; font-weight: bold;',
+ 153 => 'color: #aaaadd; font-weight: bold;',
+ 154 => 'color: #aaaadd; font-weight: bold;',
+ 155 => 'color: #aaaadd; font-weight: bold;',
+ 156 => 'color: #aaaadd; font-weight: bold;',
+ 157 => 'color: #aaaadd; font-weight: bold;',
+ 158 => 'color: #aaaadd; font-weight: bold;',
+ 159 => 'color: #aaaadd; font-weight: bold;',
+ 160 => 'color: #aaaadd; font-weight: bold;',
+ 161 => 'color: #aaaadd; font-weight: bold;',
+ 162 => 'color: #aaaadd; font-weight: bold;',
+ 163 => 'color: #aaaadd; font-weight: bold;',
+ 164 => 'color: #aaaadd; font-weight: bold;',
+ 165 => 'color: #aaaadd; font-weight: bold;',
+ 166 => 'color: #aaaadd; font-weight: bold;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/applet/{FNAME}.html',
+ 6 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/{FNAME}.html',
+ 7 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/color/{FNAME}.html',
+ 8 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/datatransfer/{FNAME}.html',
+ 9 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/dnd/{FNAME}.html',
+ 10 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/{FNAME}.html',
+ 11 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/font/{FNAME}.html',
+ 12 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/{FNAME}.html',
+ 13 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/{FNAME}.html',
+ 14 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/spi/{FNAME}.html',
+ 15 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/{FNAME}.html',
+ 16 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/renderable/{FNAME}.html',
+ 17 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/print/{FNAME}.html',
+ 18 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/{FNAME}.html',
+ 19 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/beancontext/{FNAME}.html',
+ 20 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/io/{FNAME}.html',
+ 21 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/{FNAME}.html',
+ 22 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/{FNAME}.html',
+ 23 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/{FNAME}.html',
+ 24 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/{FNAME}.html',
+ 25 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ref/{FNAME}.html',
+ 26 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/{FNAME}.html',
+ 27 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/math/{FNAME}.html',
+ 28 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/net/{FNAME}.html',
+ 29 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/{FNAME}.html',
+ 30 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/{FNAME}.html',
+ 31 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/spi/{FNAME}.html',
+ 32 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/{FNAME}.html',
+ 33 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/spi/{FNAME}.html',
+ 34 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/{FNAME}.html',
+ 35 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/activation/{FNAME}.html',
+ 36 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/dgc/{FNAME}.html',
+ 37 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/registry/{FNAME}.html',
+ 38 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/{FNAME}.html',
+ 39 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/{FNAME}.html',
+ 40 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/acl/{FNAME}.html',
+ 41 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/cert/{FNAME}.html',
+ 42 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/interfaces/{FNAME}.html',
+ 43 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/spec/{FNAME}.html',
+ 44 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/sql/{FNAME}.html',
+ 45 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/text/{FNAME}.html',
+ 46 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/{FNAME}.html',
+ 47 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/{FNAME}.html',
+ 48 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/atomic/{FNAME}.html',
+ 49 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/{FNAME}.html',
+ 50 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/jar/{FNAME}.html',
+ 51 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/{FNAME}.html',
+ 52 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/{FNAME}.html',
+ 53 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/{FNAME}.html',
+ 54 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/zip/{FNAME}.html',
+ 55 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/accessibility/{FNAME}.html',
+ 56 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/activity/{FNAME}.html',
+ 57 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/{FNAME}.html',
+ 58 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/interfaces/{FNAME}.html',
+ 59 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/spec/{FNAME}.html',
+ 60 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/{FNAME}.html',
+ 61 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/event/{FNAME}.html',
+ 62 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/metadata/{FNAME}.html',
+ 63 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/bmp/{FNAME}.html',
+ 64 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html',
+ 65 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/spi/{FNAME}.html',
+ 66 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/stream/{FNAME}.html',
+ 67 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/{FNAME}.html',
+ 68 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/loading/{FNAME}.html',
+ 69 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/modelmbean/{FNAME}.html',
+ 70 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/monitor/{FNAME}.html',
+ 71 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/{FNAME}.html',
+ 72 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/relation/{FNAME}.html',
+ 73 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/{FNAME}.html',
+ 74 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/rmi/{FNAME}.html',
+ 75 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/timer/{FNAME}.html',
+ 76 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/{FNAME}.html',
+ 77 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/directory/{FNAME}.html',
+ 78 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/event/{FNAME}.html',
+ 79 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/ldap/{FNAME}.html',
+ 80 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/spi/{FNAME}.html',
+ 81 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/{FNAME}.html',
+ 82 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/ssl/{FNAME}.html',
+ 83 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/{FNAME}.html',
+ 84 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/{FNAME}.html',
+ 85 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/standard/{FNAME}.html',
+ 86 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/event/{FNAME}.html',
+ 87 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/{FNAME}.html',
+ 88 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/CORBA/{FNAME}.html',
+ 89 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/ssl/{FNAME}.html',
+ 90 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/{FNAME}.html',
+ 91 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/callback/{FNAME}.html',
+ 92 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/kerberos/{FNAME}.html',
+ 93 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/login/{FNAME}.html',
+ 94 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/spi/{FNAME}.html',
+ 95 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/x500/{FNAME}.html',
+ 96 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/sasl/{FNAME}.html',
+ 97 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/{FNAME}.html',
+ 98 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/spi/{FNAME}.html',
+ 99 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/{FNAME}.html',
+ 100 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/spi/{FNAME}.html',
+ 101 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/{FNAME}.html',
+ 102 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/{FNAME}.html',
+ 103 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/serial/{FNAME}.html',
+ 104 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/spi/{FNAME}.html',
+ 105 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/{FNAME}.html',
+ 106 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/border/{FNAME}.html',
+ 107 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/colorchooser/{FNAME}.html',
+ 108 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/event/{FNAME}.html',
+ 109 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/filechooser/{FNAME}.html',
+ 110 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/{FNAME}.html',
+ 111 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/basic/{FNAME}.html',
+ 112 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/metal/{FNAME}.html',
+ 113 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/multi/{FNAME}.html',
+ 114 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/synth/{FNAME}.html',
+ 115 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/{FNAME}.html',
+ 116 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/{FNAME}.html',
+ 117 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/{FNAME}.html',
+ 118 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/parser/{FNAME}.html',
+ 119 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/rtf/{FNAME}.html',
+ 120 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/tree/{FNAME}.html',
+ 121 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/undo/{FNAME}.html',
+ 122 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/{FNAME}.html',
+ 123 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/xa/{FNAME}.html',
+ 124 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/{FNAME}.html',
+ 125 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/datatype/{FNAME}.html',
+ 126 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/namespace/{FNAME}.html',
+ 127 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/{FNAME}.html',
+ 128 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/{FNAME}.html',
+ 129 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/dom/{FNAME}.html',
+ 130 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/sax/{FNAME}.html',
+ 131 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/stream/{FNAME}.html',
+ 132 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/validation/{FNAME}.html',
+ 133 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/{FNAME}.html',
+ 134 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/ietf/jgss/{FNAME}.html',
+ 135 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/{FNAME}.html',
+ 136 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html',
+ 137 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html',
+ 138 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/portable/{FNAME}.html',
+ 139 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/{FNAME}.html',
+ 140 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html',
+ 141 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html',
+ 142 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Dynamic/{FNAME}.html',
+ 143 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/{FNAME}.html',
+ 144 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html',
+ 145 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html',
+ 146 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/{FNAME}.html',
+ 147 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html',
+ 148 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html',
+ 149 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Messaging/{FNAME}.html',
+ 150 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/{FNAME}.html',
+ 151 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html',
+ 152 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/{FNAME}.html',
+ 153 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html',
+ 154 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html',
+ 155 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html',
+ 156 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html',
+ 157 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/SendingContext/{FNAME}.html',
+ 158 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/stub/java/rmi/{FNAME}.html',
+ 159 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/{FNAME}.html',
+ 160 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/bootstrap/{FNAME}.html',
+ 161 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/events/{FNAME}.html',
+ 162 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/ls/{FNAME}.html',
+ 163 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/{FNAME}.html',
+ 164 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/ext/{FNAME}.html',
+ 165 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/helpers/{FNAME}.html',
+ /* ambiguous class names (appear in more than one package) */
+ 166 => 'http://www.google.com/search?sitesearch=java.sun.com&q=allinurl%3Aj2se%2F1+5+0%2Fdocs%2Fapi+{FNAME}'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ /* Java does not use '::' */
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/javascript.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/javascript.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/javascript.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,144 +1,144 @@
-<?php
-/*************************************************************************************
- * javascript.php
- * --------------
- * Author: Ben Keen (ben.keen at gmail.com)
- * Copyright: (c) 2004 Ben Keen (ben.keen at gmail.com), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/20
- *
- * JavaScript language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Javascript',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
- 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
- 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',
- 'while', 'write', 'with'
- ),
- 2 => array(
- 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
- 'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
- 'protected', 'public', 'super', 'true', 'use', 'var'
- ),
- 3 => array(
-
- // common functions for Window object
- 'alert', 'back', 'blur', 'close', 'confirm', 'focus', 'forward', 'home',
- 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
- 'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'status',
- 'stop',
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000066; font-weight: bold;',
- 2 => 'color: #003366; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #009900; font-style: italic;',
- 'MULTI' => 'color: #009900; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #3366CC;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #CC0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0066FF;'
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- 3 => ''
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- 0 => "/.*/([igm]*)?" // matches js reg exps
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<script type="text/javascript">' => '</script>'
- ),
- 1 => array(
- '<script language="javascript">' => '</script>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- 1 => true
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * javascript.php
+ * --------------
+ * Author: Ben Keen (ben.keen at gmail.com)
+ * Copyright: (c) 2004 Ben Keen (ben.keen at gmail.com), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/20
+ *
+ * JavaScript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Javascript',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
+ 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
+ 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',
+ 'while', 'write', 'with'
+ ),
+ 2 => array(
+ 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
+ 'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
+ 'protected', 'public', 'super', 'true', 'use', 'var'
+ ),
+ 3 => array(
+
+ // common functions for Window object
+ 'alert', 'back', 'blur', 'close', 'confirm', 'focus', 'forward', 'home',
+ 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
+ 'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'status',
+ 'stop',
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000066; font-weight: bold;',
+ 2 => 'color: #003366; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #009900; font-style: italic;',
+ 'MULTI' => 'color: #009900; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #3366CC;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #CC0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0066FF;'
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ 0 => "/.*/([igm]*)?" // matches js reg exps
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<script type="text/javascript">' => '</script>'
+ ),
+ 1 => array(
+ '<script language="javascript">' => '</script>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ 1 => true
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/latex.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/latex.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/latex.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,203 +1,203 @@
-<?php
-/*************************************************************************************
- * latex.php
- * -----
- * Author: efi, Matthias Pospiech (mail at matthiaspospiech.de)
- * Copyright: (c) 2006 efi, Matthias Pospiech (mail at matthiaspospiech.de), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2006/09/23
- *
- * LaTeX language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/09/23 (1.0.0)
- * - First Release
- *
- * TODO
- * -------------------------
- * *
- *
- *************************************************************************************
- *
- * This file is not yet part of GeSHi. (and is not compatible to the 1.1+ branch)
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-if (isset($this) && is_a($this, 'GeSHi')) {
- $this->set_symbols_highlighting(false);
- $this->set_numbers_highlighting(false);
-}
-
-$language_data = array (
- 'LANG_NAME' => 'LaTeX',
- 'COMMENT_SINGLE' => array(1 => '%'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- ),
- 'SYMBOLS' => array(
- '.', ',','\\',"~", "{", "}", "[", "]", "$"
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- ),
- 'STRINGS' => array(
- ),
- 'NUMBERS' => array(
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- ),
- 'REGEXPS' => array(
- 1 => 'color: #00A000; font-weight: bold;', // Math inner
- 2 => 'color: #800000; font-weight: normal;', // \keyword #202020
- 3 => 'color: #2222D0; font-weight: normal;', // {...}
- 4 => 'color: #2222D0; font-weight: normal;', // [Option]
- 5 => 'color: #00A000; font-weight: normal;', // Mathe #CCF020
- 6 => 'color: #F00000; font-weight: normal;', // Structure \begin
- 7 => 'color: #F00000; font-weight: normal;', // Structure \end
- 8 => 'color: #F00000; font-weight: normal;', // Structure: Labels
- //9 => 'color: #F00000; font-weight: normal;', // Structure
- 10 => 'color: #0000D0; font-weight: bold;', // Environment
- 11 => 'color: #0000D0; font-weight: bold;', // Environment
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- // Math inner
- 1 => array(
- GESHI_SEARCH => "(\\\\begin\\{)(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign )(\\})(.*)(\\\\end\\{)(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign)(\\})",
- GESHI_REPLACE => '\\4',
- GESHI_MODIFIERS => 's',
- GESHI_BEFORE => '\1\2\3',
- GESHI_AFTER => '\5\6\7'
- ),
- // \keywords
- 2 => array(
- GESHI_SEARCH => "(\\\\)([a-zA-Z]+)",
- GESHI_REPLACE => '\1\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- // {parameters}
- 3 => array(
- GESHI_SEARCH => "(\\{)(.*)(\\})",
- GESHI_REPLACE => '\2',
- GESHI_MODIFIERS => 'U',
- GESHI_BEFORE => '\1',
- GESHI_AFTER => '\3'
- ),
- // [Option]
- 4 => array(
- GESHI_SEARCH => "(\[)(.+)(\])",
- GESHI_REPLACE => '\2',
- GESHI_MODIFIERS => 'U',
- GESHI_BEFORE => '\1',
- GESHI_AFTER => '\3'
- ),
- // Mathe mit $ ... $
- 5 => array(
- GESHI_SEARCH => "(\\$)(.+)(\\$)",
- GESHI_REPLACE => '\1\2\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- // Structure begin
- 6 => array(
- GESHI_SEARCH => "(\\\\begin)(?=[^a-zA-Z])",
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '\\2'
- ),
- // Structure end
- 7 => array(
- GESHI_SEARCH => "(\\\\end)(?=[^a-zA-Z])",
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '\\2'
- ),
- //Structure: Label
- 8 => array(
- GESHI_SEARCH => "(\\\\)(label|pageref|ref|cite)(?=[^a-zA-Z])",
- GESHI_REPLACE => '\\1\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '\\3'
- ),
-// Structure: sections
-/*9 => array(
- GESHI_SEARCH => "(\\\\)(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)(?=[^a-zA-Z])",
- GESHI_REPLACE => '\1\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '\\3'
- ),*/
-// environment begin
-10 => array(
- GESHI_SEARCH => "(\\\\begin)(\\{)(.*)(\\})",
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
-// environment end
-11 => array(
- GESHI_SEARCH => "(\\\\end)(\\{)(.*)(\\})",
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
-
-// ---------------------------------------------
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * latex.php
+ * -----
+ * Author: efi, Matthias Pospiech (mail at matthiaspospiech.de)
+ * Copyright: (c) 2006 efi, Matthias Pospiech (mail at matthiaspospiech.de), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/09/23
+ *
+ * LaTeX language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/09/23 (1.0.0)
+ * - First Release
+ *
+ * TODO
+ * -------------------------
+ * *
+ *
+ *************************************************************************************
+ *
+ * This file is not yet part of GeSHi. (and is not compatible to the 1.1+ branch)
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+if (isset($this) && is_a($this, 'GeSHi')) {
+ $this->set_symbols_highlighting(false);
+ $this->set_numbers_highlighting(false);
+}
+
+$language_data = array (
+ 'LANG_NAME' => 'LaTeX',
+ 'COMMENT_SINGLE' => array(1 => '%'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ ),
+ 'SYMBOLS' => array(
+ '.', ',','\\',"~", "{", "}", "[", "]", "$"
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ ),
+ 'STRINGS' => array(
+ ),
+ 'NUMBERS' => array(
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ ),
+ 'REGEXPS' => array(
+ 1 => 'color: #00A000; font-weight: bold;', // Math inner
+ 2 => 'color: #800000; font-weight: normal;', // \keyword #202020
+ 3 => 'color: #2222D0; font-weight: normal;', // {...}
+ 4 => 'color: #2222D0; font-weight: normal;', // [Option]
+ 5 => 'color: #00A000; font-weight: normal;', // Mathe #CCF020
+ 6 => 'color: #F00000; font-weight: normal;', // Structure \begin
+ 7 => 'color: #F00000; font-weight: normal;', // Structure \end
+ 8 => 'color: #F00000; font-weight: normal;', // Structure: Labels
+ //9 => 'color: #F00000; font-weight: normal;', // Structure
+ 10 => 'color: #0000D0; font-weight: bold;', // Environment
+ 11 => 'color: #0000D0; font-weight: bold;', // Environment
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ // Math inner
+ 1 => array(
+ GESHI_SEARCH => "(\\\\begin\\{)(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign )(\\})(.*)(\\\\end\\{)(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign)(\\})",
+ GESHI_REPLACE => '\\4',
+ GESHI_MODIFIERS => 's',
+ GESHI_BEFORE => '\1\2\3',
+ GESHI_AFTER => '\5\6\7'
+ ),
+ // \keywords
+ 2 => array(
+ GESHI_SEARCH => "(\\\\)([a-zA-Z]+)",
+ GESHI_REPLACE => '\1\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ // {parameters}
+ 3 => array(
+ GESHI_SEARCH => "(\\{)(.*)(\\})",
+ GESHI_REPLACE => '\2',
+ GESHI_MODIFIERS => 'U',
+ GESHI_BEFORE => '\1',
+ GESHI_AFTER => '\3'
+ ),
+ // [Option]
+ 4 => array(
+ GESHI_SEARCH => "(\[)(.+)(\])",
+ GESHI_REPLACE => '\2',
+ GESHI_MODIFIERS => 'U',
+ GESHI_BEFORE => '\1',
+ GESHI_AFTER => '\3'
+ ),
+ // Mathe mit $ ... $
+ 5 => array(
+ GESHI_SEARCH => "(\\$)(.+)(\\$)",
+ GESHI_REPLACE => '\1\2\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ // Structure begin
+ 6 => array(
+ GESHI_SEARCH => "(\\\\begin)(?=[^a-zA-Z])",
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '\\2'
+ ),
+ // Structure end
+ 7 => array(
+ GESHI_SEARCH => "(\\\\end)(?=[^a-zA-Z])",
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '\\2'
+ ),
+ //Structure: Label
+ 8 => array(
+ GESHI_SEARCH => "(\\\\)(label|pageref|ref|cite)(?=[^a-zA-Z])",
+ GESHI_REPLACE => '\\1\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '\\3'
+ ),
+// Structure: sections
+/*9 => array(
+ GESHI_SEARCH => "(\\\\)(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)(?=[^a-zA-Z])",
+ GESHI_REPLACE => '\1\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '\\3'
+ ),*/
+// environment begin
+10 => array(
+ GESHI_SEARCH => "(\\\\begin)(\\{)(.*)(\\})",
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+// environment end
+11 => array(
+ GESHI_SEARCH => "(\\\\end)(\\{)(.*)(\\})",
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+
+// ---------------------------------------------
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/lisp.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/lisp.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/lisp.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,133 +1,133 @@
-<?php
-/*************************************************************************************
- * lisp.php
- * --------
- * Author: Roberto Rossi (rsoftware at altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/30
- *
- * Generic Lisp language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/12/9 (1.0.2)
- * - Added support for :keywords and ::access (Denis Mashkevich)
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/08/30 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Lisp',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(';|' => '|;'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'not','defun','princ',
- 'eval','apply','funcall','quote','identity','function',
- 'complement','backquote','lambda','set','setq','setf',
- 'defun','defmacro','gensym','make','symbol','intern',
- 'symbol','name','symbol','value','symbol','plist','get',
- 'getf','putprop','remprop','hash','make','array','aref',
- 'car','cdr','caar','cadr','cdar','cddr','caaar','caadr','cadar',
- 'caddr','cdaar','cdadr','cddar','cdddr','caaaar','caaadr',
- 'caadar','caaddr','cadaar','cadadr','caddar','cadddr',
- 'cdaaar','cdaadr','cdadar','cdaddr','cddaar','cddadr',
- 'cdddar','cddddr','cons','list','append','reverse','last','nth',
- 'nthcdr','member','assoc','subst','sublis','nsubst',
- 'nsublis','remove','length','list','length',
- 'mapc','mapcar','mapl','maplist','mapcan','mapcon','rplaca',
- 'rplacd','nconc','delete','atom','symbolp','numberp',
- 'boundp','null','listp','consp','minusp','zerop','plusp',
- 'evenp','oddp','eq','eql','equal','cond','case','and','or',
- 'let','l','if','prog','prog1','prog2','progn','go','return',
- 'do','dolist','dotimes','catch','throw','error','cerror','break',
- 'continue','errset','baktrace','evalhook','truncate','float',
- 'rem','min','max','abs','sin','cos','tan','expt','exp','sqrt',
- 'random','logand','logior','logxor','lognot','bignums','logeqv',
- 'lognand','lognor','logorc2','logtest','logbitp','logcount',
- 'integer','length','nil'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 0 => 'color: #555;',
- 1 => 'color: #555;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- '::', ':'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * lisp.php
+ * --------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/30
+ *
+ * Generic Lisp language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/9 (1.0.2)
+ * - Added support for :keywords and ::access (Denis Mashkevich)
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Lisp',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(';|' => '|;'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'not','defun','princ',
+ 'eval','apply','funcall','quote','identity','function',
+ 'complement','backquote','lambda','set','setq','setf',
+ 'defun','defmacro','gensym','make','symbol','intern',
+ 'symbol','name','symbol','value','symbol','plist','get',
+ 'getf','putprop','remprop','hash','make','array','aref',
+ 'car','cdr','caar','cadr','cdar','cddr','caaar','caadr','cadar',
+ 'caddr','cdaar','cdadr','cddar','cdddr','caaaar','caaadr',
+ 'caadar','caaddr','cadaar','cadadr','caddar','cadddr',
+ 'cdaaar','cdaadr','cdadar','cdaddr','cddaar','cddadr',
+ 'cdddar','cddddr','cons','list','append','reverse','last','nth',
+ 'nthcdr','member','assoc','subst','sublis','nsubst',
+ 'nsublis','remove','length','list','length',
+ 'mapc','mapcar','mapl','maplist','mapcan','mapcon','rplaca',
+ 'rplacd','nconc','delete','atom','symbolp','numberp',
+ 'boundp','null','listp','consp','minusp','zerop','plusp',
+ 'evenp','oddp','eq','eql','equal','cond','case','and','or',
+ 'let','l','if','prog','prog1','prog2','progn','go','return',
+ 'do','dolist','dotimes','catch','throw','error','cerror','break',
+ 'continue','errset','baktrace','evalhook','truncate','float',
+ 'rem','min','max','abs','sin','cos','tan','expt','exp','sqrt',
+ 'random','logand','logior','logxor','lognot','bignums','logeqv',
+ 'lognand','lognor','logorc2','logtest','logbitp','logcount',
+ 'integer','length','nil'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #555;',
+ 1 => 'color: #555;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ '::', ':'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/lua.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/lua.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/lua.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,134 +1,134 @@
-<?php
-/*************************************************************************************
- * lua.php
- * -------
- * Author: Roberto Rossi (rsoftware at altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/10
- *
- * LUA language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/26 (1.0.2)
- * - Added support for objects and methods
- * - Removed unusable keywords
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Lua',
- 'COMMENT_SINGLE' => array(1 => "--"),
- 'COMMENT_MULTI' => array('--[[' => ']]'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'and','break','do','else','elseif','end','false','for','function','if',
- 'in','local','nil','not','or','repeat','return','then','true','until','while',
- '_VERSION','assert','collectgarbage','dofile','error','gcinfo','loadfile','loadstring',
- 'print','tonumber','tostring','type','unpack',
- '_ALERT','_ERRORMESSAGE','_INPUT','_PROMPT','_OUTPUT',
- '_STDERR','_STDIN','_STDOUT','call','dostring','foreach','foreachi','getn','globals','newtype',
- 'rawget','rawset','require','sort','tinsert','tremove',
- 'abs','acos','asin','atan','atan2','ceil','cos','deg','exp',
- 'floor','format','frexp','gsub','ldexp','log','log10','max','min','mod','rad','random','randomseed',
- 'sin','sqrt','strbyte','strchar','strfind','strlen','strlower','strrep','strsub','strupper','tan',
- 'openfile','closefile','readfrom','writeto','appendto',
- 'remove','rename','flush','seek','tmpfile','tmpname','read','write',
- 'clock','date','difftime','execute','exit','getenv','setlocale','time',
- '_G','getfenv','getmetatable','ipairs','loadlib','next','pairs','pcall',
- 'rawegal','rawget','rawset','require','setfenv','setmetatable','xpcall',
- 'string.byte','string.char','string.dump','string.find','string.len',
- 'string.lower','string.rep','string.sub','string.upper','string.format','string.gfind','string.gsub',
- 'table.concat','table.foreach','table.foreachi','table.getn','table.sort','table.insert','table.remove','table.setn',
- 'math.abs','math.acos','math.asin','math.atan','math.atan2','math.ceil','math.cos','math.deg','math.exp',
- 'math.floor','math.frexp','math.ldexp','math.log','math.log10','math.max','math.min','math.mod',
- 'math.pi','math.rad','math.random','math.randomseed','math.sin','math.sqrt','math.tan',
- 'coroutine.create','coroutine.resume','coroutine.status',
- 'coroutine.wrap','coroutine.yield',
- 'io.close','io.flush','io.input','io.lines','io.open','io.output','io.read','io.tmpfile','io.type','io.write',
- 'io.stdin','io.stdout','io.stderr',
- 'os.clock','os.date','os.difftime','os.execute','os.exit','os.getenv','os.remove','os.rename',
- 'os.setlocale','os.time','os.tmpname',
- 'string','table','math','coroutine','io','os','debug'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>', '=', ';'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 0 => 'color: #b1b100;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * lua.php
+ * -------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/10
+ *
+ * LUA language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/26 (1.0.2)
+ * - Added support for objects and methods
+ * - Removed unusable keywords
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Lua',
+ 'COMMENT_SINGLE' => array(1 => "--"),
+ 'COMMENT_MULTI' => array('--[[' => ']]'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'and','break','do','else','elseif','end','false','for','function','if',
+ 'in','local','nil','not','or','repeat','return','then','true','until','while',
+ '_VERSION','assert','collectgarbage','dofile','error','gcinfo','loadfile','loadstring',
+ 'print','tonumber','tostring','type','unpack',
+ '_ALERT','_ERRORMESSAGE','_INPUT','_PROMPT','_OUTPUT',
+ '_STDERR','_STDIN','_STDOUT','call','dostring','foreach','foreachi','getn','globals','newtype',
+ 'rawget','rawset','require','sort','tinsert','tremove',
+ 'abs','acos','asin','atan','atan2','ceil','cos','deg','exp',
+ 'floor','format','frexp','gsub','ldexp','log','log10','max','min','mod','rad','random','randomseed',
+ 'sin','sqrt','strbyte','strchar','strfind','strlen','strlower','strrep','strsub','strupper','tan',
+ 'openfile','closefile','readfrom','writeto','appendto',
+ 'remove','rename','flush','seek','tmpfile','tmpname','read','write',
+ 'clock','date','difftime','execute','exit','getenv','setlocale','time',
+ '_G','getfenv','getmetatable','ipairs','loadlib','next','pairs','pcall',
+ 'rawegal','rawget','rawset','require','setfenv','setmetatable','xpcall',
+ 'string.byte','string.char','string.dump','string.find','string.len',
+ 'string.lower','string.rep','string.sub','string.upper','string.format','string.gfind','string.gsub',
+ 'table.concat','table.foreach','table.foreachi','table.getn','table.sort','table.insert','table.remove','table.setn',
+ 'math.abs','math.acos','math.asin','math.atan','math.atan2','math.ceil','math.cos','math.deg','math.exp',
+ 'math.floor','math.frexp','math.ldexp','math.log','math.log10','math.max','math.min','math.mod',
+ 'math.pi','math.rad','math.random','math.randomseed','math.sin','math.sqrt','math.tan',
+ 'coroutine.create','coroutine.resume','coroutine.status',
+ 'coroutine.wrap','coroutine.yield',
+ 'io.close','io.flush','io.input','io.lines','io.open','io.output','io.read','io.tmpfile','io.type','io.write',
+ 'io.stdin','io.stdout','io.stderr',
+ 'os.clock','os.date','os.difftime','os.execute','os.exit','os.getenv','os.remove','os.rename',
+ 'os.setlocale','os.time','os.tmpname',
+ 'string','table','math','coroutine','io','os','debug'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>', '=', ';'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #b1b100;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/m68k.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/m68k.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/m68k.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,135 +1,135 @@
-<?php
-/*************************************************************************************
- * m68k.php
- * --------
- * Author: Benny Baumann (BenBE at omorphia.de)
- * Copyright: (c) 2007 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2007/02/06
- *
- * Motorola 68000 Assembler language file for GeSHi.
- *
- * Syntax definition as commonly used by the motorola documentation for the
- * MC68HC908GP32 Microcontroller (and maybe others).
- *
- * CHANGES
- * -------
- * 2007/06/02 (1.0.0)
- * - First Release
- *
- * TODO (updated 2007/06/02)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Motorola 68000 Assembler',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- /*CPU*/
- 1 => array(
- 'adc','add','ais','aix','and','asl','asr','bcc','bclr','bcs','beq',
- 'bge','bgt','bhcc','bhcs','bhi','bhs','bih','bil','bit','ble','blo',
- 'bls','blt','bmc','bmi','bms','bne','bpl','bra','brclr','brn',
- 'brset','bset','bsr','cbeq','clc','cli','clr','cmp','com','cphx',
- 'cpx','daa','dbnz','dec','div','eor','inc','jmp','jsr','lda','ldhx',
- 'ldx','lsl','lsr','mov','mul','neg','nop','nsa','ora','psha','pshh',
- 'pshx','pula','pulh','pulx','rol','ror','rsp','rti','rts','sbc',
- 'sec','sei','sta','sthx','stop','stx','sub','swi','tap','tax','tpa',
- 'tst','tsx','txa','txs','wait'
- ),
- /*registers*/
- 2 => array(
- 'a','h','x',
- 'hx','sp'
- ),
- /*Directive*/
- 3 => array(
- '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',
- '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'
- ),
- ),
- 'SYMBOLS' => array(
- ','
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff; font-weight:bold;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #46aa03; font-weight:bold;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #adadad; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #0000ff;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f007f;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #dd22dd;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #008000;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #22bbff;',
- 1 => 'color: #22bbff;',
- 2 => 'color: #993333;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '#?0[0-9a-fA-F]{1,32}[hH]',
- 1 => '\%[01]{1,64}[bB]',
- 2 => '^[_a-zA-Z][_a-zA-Z0-9]{0,50}\:'
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 8
-);
-
-?>
+<?php
+/*************************************************************************************
+ * m68k.php
+ * --------
+ * Author: Benny Baumann (BenBE at omorphia.de)
+ * Copyright: (c) 2007 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/02/06
+ *
+ * Motorola 68000 Assembler language file for GeSHi.
+ *
+ * Syntax definition as commonly used by the motorola documentation for the
+ * MC68HC908GP32 Microcontroller (and maybe others).
+ *
+ * CHANGES
+ * -------
+ * 2007/06/02 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2007/06/02)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Motorola 68000 Assembler',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ /*CPU*/
+ 1 => array(
+ 'adc','add','ais','aix','and','asl','asr','bcc','bclr','bcs','beq',
+ 'bge','bgt','bhcc','bhcs','bhi','bhs','bih','bil','bit','ble','blo',
+ 'bls','blt','bmc','bmi','bms','bne','bpl','bra','brclr','brn',
+ 'brset','bset','bsr','cbeq','clc','cli','clr','cmp','com','cphx',
+ 'cpx','daa','dbnz','dec','div','eor','inc','jmp','jsr','lda','ldhx',
+ 'ldx','lsl','lsr','mov','mul','neg','nop','nsa','ora','psha','pshh',
+ 'pshx','pula','pulh','pulx','rol','ror','rsp','rti','rts','sbc',
+ 'sec','sei','sta','sthx','stop','stx','sub','swi','tap','tax','tpa',
+ 'tst','tsx','txa','txs','wait'
+ ),
+ /*registers*/
+ 2 => array(
+ 'a','h','x',
+ 'hx','sp'
+ ),
+ /*Directive*/
+ 3 => array(
+ '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',
+ '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ ','
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff; font-weight:bold;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #46aa03; font-weight:bold;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #adadad; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #0000ff;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f007f;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #dd22dd;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #22bbff;',
+ 1 => 'color: #22bbff;',
+ 2 => 'color: #993333;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '#?0[0-9a-fA-F]{1,32}[hH]',
+ 1 => '\%[01]{1,64}[bB]',
+ 2 => '^[_a-zA-Z][_a-zA-Z0-9]{0,50}\:'
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 8
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/matlab.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/matlab.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/matlab.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,867 +1,867 @@
-<?php
-/*************************************************************************************
- * matlab.php
- * -----------
- * Author: Florian Knorn (floz at gmx.de)
- * Copyright: (c) 2004 Florian Knorn (http://www.florian-knorn.com)
- * Release Version: 1.0.7.21
- * Date Started: 2005/02/09
- *
- * Matlab M-file language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006-03-25
- * - support for the transpose operator
- * - many keywords added
- * - links to the matlab documentation at mathworks
- * by: Olivier Verdier (olivier.verdier at free.fr)
- * 2005/05/07 (1.0.0)
- * - First Release
- *
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Matlab M',
- 'COMMENT_SINGLE' => array(1 => '%'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'break', 'case', 'catch', 'continue', 'elseif', 'else', 'end', 'for',
- 'function', 'global', 'if', 'otherwise', 'persistent', 'return',
- 'switch', 'try', 'while','...'
- ),
- 2 => array(
- 'all',
- 'any',
- 'exist',
- 'find',
- 'is',
- 'isa',
- 'logical',
- 'mislocked',
-
- 'builtin',
- 'eval',
- 'evalc',
- 'evalin',
- 'feval',
- 'function',
- 'global',
- 'nargchk',
- 'persistent',
- 'script',
- 'break',
- 'case',
- 'catch',
- 'else',
- 'elseif',
- 'end',
- 'error',
- 'for',
- 'if',
- 'otherwise',
- 'return',
- 'switch',
- 'try',
- 'warning',
- 'while',
- 'input',
- 'keyboard',
- 'menu',
- 'pause',
- 'class',
- 'double',
- 'inferiorto',
- 'inline',
- 'int8',
- 'int16',
- 'int32',
- 'isa',
- 'loadobj',
- 'saveobj',
- 'single',
- 'superiorto',
- 'uint8',
- 'int16',
- 'uint32',
- 'dbclear',
- 'dbcont',
- 'dbdown',
- 'dbmex',
- 'dbquit',
- 'dbstack',
- 'dbstatus',
- 'dbstep',
- 'dbstop',
- 'dbtype',
- 'dbup',
-
- 'blkdiag',
- 'eye',
- 'linspace',
- 'logspace',
- 'ones',
- 'rand',
- 'randn',
- 'zeros',
- 'ans',
- 'computer',
- 'eps',
- 'flops',
- 'i',
- 'Inf',
- 'inputname',
- 'j',
- 'NaN',
- 'nargin',
- 'nargout',
- 'pi',
- 'realmax',
- 'realmin',
- 'varargin',
- 'varargout',
- 'calendar',
- 'clock',
- 'cputime',
- 'date',
- 'datenum',
- 'datestr',
- 'datevec',
- 'eomday',
- 'etime',
- 'now',
- 'tic',
- 'toc',
- 'weekday',
- 'cat',
- 'diag',
- 'fliplr',
- 'flipud',
- 'repmat',
- 'reshape',
- 'rot90',
- 'tril',
- 'triu',
- 'compan',
- 'gallery',
- 'hadamard',
- 'hankel',
- 'hilb',
- 'invhilb',
- 'magic',
- 'pascal',
- 'toeplitz',
- 'wilkinson',
- 'abs',
- 'acos',
- 'acosh',
- 'acot',
- 'acoth',
- 'acsc',
- 'acsch',
- 'angle',
- 'asec',
- 'asech',
- 'asin',
- 'asinh',
- 'atan',
- 'atanh',
- 'atan2',
- 'ceil',
- 'complex',
- 'conj',
- 'cos',
- 'cosh',
- 'cot',
- 'coth',
- 'csc',
- 'csch',
- 'exp',
- 'fix',
- 'floor',
- 'gcd',
- 'imag',
- 'lcm',
- 'log',
- 'log2',
- 'log10',
- 'mod',
- 'nchoosek',
- 'real',
- 'rem',
- 'round',
- 'sec',
- 'sech',
- 'sign',
- 'sin',
- 'sinh',
- 'sqrt',
- 'tan',
- 'tanh',
- 'airy',
- 'besselh',
- 'besseli',
- 'besselk',
- 'besselj',
- 'Bessely',
- 'beta',
- 'betainc',
- 'betaln',
- 'ellipj',
- 'ellipke',
- 'erf',
- 'erfc',
- 'erfcx',
- 'erfiny',
- 'expint',
- 'factorial',
- 'gamma',
- 'gammainc',
- 'gammaln',
- 'legendre',
- 'pow2',
- 'rat',
- 'rats',
- 'cart2pol',
- 'cart2sph',
- 'pol2cart',
- 'sph2cart',
- 'abs',
- 'eval',
- 'real',
- 'strings',
- 'deblank',
- 'findstr',
- 'lower',
- 'strcat',
- 'strcmp',
- 'strcmpi',
- 'strjust',
- 'strmatch',
- 'strncmp',
- 'strrep',
- 'strtok',
- 'strvcat',
- 'symvar',
- 'texlabel',
- 'upper',
- 'char',
- 'int2str',
- 'mat2str',
- 'num2str',
- 'sprintf',
- 'sscanf',
- 'str2double',
- 'str2num',
- 'bin2dec',
- 'dec2bin',
- 'dec2hex',
- 'hex2dec',
- 'hex2num',
- 'fclose',
- 'fopen',
- 'fread',
- 'fwrite',
- 'fgetl',
- 'fgets',
- 'fprintf',
- 'fscanf',
- 'feof',
- 'ferror',
- 'frewind',
- 'fseek',
- 'ftell',
- 'sprintf',
- 'sscanf',
- 'dlmread',
- 'dlmwrite',
- 'hdf',
- 'imfinfo',
- 'imread',
- 'imwrite',
- 'textread',
- 'wk1read',
- 'wk1write',
- 'bitand',
- 'bitcmp',
- 'bitor',
- 'bitmax',
- 'bitset',
- 'bitshift',
- 'bitget',
- 'bitxor',
- 'fieldnames',
- 'getfield',
- 'rmfield',
- 'setfield',
- 'struct',
- 'struct2cell',
- 'class',
- 'isa',
- 'cell',
- 'cellfun',
- 'cellstr',
- 'cell2struct',
- 'celldisp',
- 'cellplot',
- 'num2cell',
- 'cat',
- 'flipdim',
- 'ind2sub',
- 'ipermute',
- 'ndgrid',
- 'ndims',
- 'permute',
- 'reshape',
- 'shiftdim',
- 'squeeze',
- 'sub2ind',
- 'cond',
- 'condeig',
- 'det',
- 'norm',
- 'null',
- 'orth',
- 'rank',
- 'rcond',
- 'rref',
- 'rrefmovie',
- 'subspace',
- 'trace',
- 'chol',
- 'inv',
- 'lscov',
- 'lu',
- 'nnls',
- 'pinv',
- 'qr',
- 'balance',
- 'cdf2rdf',
- 'eig',
- 'gsvd',
- 'hess',
- 'poly',
- 'qz',
- 'rsf2csf',
- 'schur',
- 'svd',
- 'expm',
- 'funm',
- 'logm',
- 'sqrtm',
- 'qrdelete',
- 'qrinsert',
- 'bar',
- 'barh',
- 'hist',
- 'hold',
- 'loglog',
- 'pie',
- 'plot',
- 'polar',
- 'semilogx',
- 'semilogy',
- 'subplot',
- 'bar3',
- 'bar3h',
- 'comet3',
- 'cylinder',
- 'fill3',
- 'plot3',
- 'quiver3',
- 'slice',
- 'sphere',
- 'stem3',
- 'waterfall',
- 'clabel',
- 'datetick',
- 'grid',
- 'gtext',
- 'legend',
- 'plotyy',
- 'title',
- 'xlabel',
- 'ylabel',
- 'zlabel',
- 'contour',
- 'contourc',
- 'contourf',
- 'hidden',
- 'meshc',
- 'mesh',
- 'peaks',
- 'surf',
- 'surface',
- 'surfc',
- 'surfl',
- 'trimesh',
- 'trisurf',
- 'coneplot',
- 'contourslice',
- 'isocaps',
- 'isonormals',
- 'isosurface',
- 'reducepatch',
- 'reducevolume',
- 'shrinkfaces',
- 'smooth3',
- 'stream2',
- 'stream3',
- 'streamline',
- 'surf2patch',
- 'subvolume',
- 'griddata',
- 'meshgrid',
- 'area',
- 'box',
- 'comet',
- 'compass',
- 'errorbar',
- 'ezcontour',
- 'ezcontourf',
- 'ezmesh',
- 'ezmeshc',
- 'ezplot',
- 'ezplot3',
- 'ezpolar',
- 'ezsurf',
- 'ezsurfc',
- 'feather',
- 'fill',
- 'fplot',
- 'pareto',
- 'pie3',
- 'plotmatrix',
- 'pcolor',
- 'rose',
- 'quiver',
- 'ribbon',
- 'stairs',
- 'scatter',
- 'scatter3',
- 'stem',
- 'convhull',
- 'delaunay',
- 'dsearch',
- 'inpolygon',
- 'polyarea',
- 'tsearch',
- 'voronoi',
- 'camdolly',
- 'camlookat',
- 'camorbit',
- 'campan',
- 'campos',
- 'camproj',
- 'camroll',
- 'camtarget',
- 'camup',
- 'camva',
- 'camzoom',
- 'daspect',
- 'pbaspect',
- 'view',
- 'viewmtx',
- 'xlim',
- 'ylim',
- 'zlim',
- 'camlight',
- 'diffuse',
- 'lighting',
- 'lightingangle',
- 'material',
- 'specular',
- 'brighten',
- 'bwcontr',
- 'caxis',
- 'colorbar',
- 'colorcube',
- 'colordef',
- 'colormap',
- 'graymon',
- 'hsv2rgb',
- 'rgb2hsv',
- 'rgbplot',
- 'shading',
- 'spinmap',
- 'surfnorm',
- 'whitebg',
- 'autumn',
- 'bone',
- 'contrast',
- 'cool',
- 'copper',
- 'flag',
- 'gray',
- 'hot',
- 'hsv',
- 'jet',
- 'lines',
- 'prism',
- 'spring',
- 'summer',
- 'winter',
- 'orient',
- 'print',
- 'printopt',
- 'saveas',
- 'copyobj',
- 'findobj',
- 'gcbo',
- 'gco',
- 'get',
- 'rotate',
- 'ishandle',
- 'set',
- 'axes',
- 'figure',
- 'image',
- 'light',
- 'line',
- 'patch',
- 'rectangle',
- 'surface',
- 'text Create',
- 'uicontext Create',
- 'capture',
- 'clc',
- 'clf',
- 'clg',
- 'close',
- 'gcf',
- 'newplot',
- 'refresh',
- 'saveas',
- 'axis',
- 'cla',
- 'gca',
- 'propedit',
- 'reset',
- 'rotate3d',
- 'selectmoveresize',
- 'shg',
- 'ginput',
- 'zoom',
- 'dragrect',
- 'drawnow',
- 'rbbox',
- 'dialog',
- 'errordlg',
- 'helpdlg',
- 'inputdlg',
- 'listdlg',
- 'msgbox',
- 'pagedlg',
- 'printdlg',
- 'questdlg',
- 'uigetfile',
- 'uiputfile',
- 'uisetcolor',
- 'uisetfont',
- 'warndlg',
- 'menu',
- 'menuedit',
- 'uicontextmenu',
- 'uicontrol',
- 'uimenu',
- 'dragrect',
- 'findfigs',
- 'gcbo',
- 'rbbox',
- 'selectmoveresize',
- 'textwrap',
- 'uiresume',
- 'uiwait Used',
- 'waitbar',
- 'waitforbuttonpress',
- 'convhull',
- 'cumprod',
- 'cumsum',
- 'cumtrapz',
- 'delaunay',
- 'dsearch',
- 'factor',
- 'inpolygon',
- 'max',
- 'mean',
- 'median',
- 'min',
- 'perms',
- 'polyarea',
- 'primes',
- 'prod',
- 'sort',
- 'sortrows',
- 'std',
- 'sum',
- 'trapz',
- 'tsearch',
- 'var',
- 'voronoi',
- 'del2',
- 'diff',
- 'gradient',
- 'corrcoef',
- 'cov',
- 'conv',
- 'conv2',
- 'deconv',
- 'filter',
- 'filter2',
- 'abs',
- 'angle',
- 'cplxpair',
- 'fft',
- 'fft2',
- 'fftshift',
- 'ifft',
- 'ifft2',
- 'ifftn',
- 'ifftshift',
- 'nextpow2',
- 'unwrap',
- 'cross',
- 'intersect',
- 'ismember',
- 'setdiff',
- 'setxor',
- 'union',
- 'unique',
- 'conv',
- 'deconv',
- 'poly',
- 'polyder',
- 'polyeig',
- 'polyfit',
- 'polyval',
- 'polyvalm',
- 'residue',
- 'roots',
- 'griddata',
- 'interp1',
- 'interp2',
- 'interp3',
- 'interpft',
- 'interpn',
- 'meshgrid',
- 'ndgrid',
- 'spline',
- 'dblquad',
- 'fmin',
- 'fmins',
- 'fzero',
- 'ode45,',
- 'ode113,',
- 'ode15s,',
- 'ode23s,',
- 'ode23t,',
- 'ode23tb',
- 'odefile',
- 'odeget',
- 'odeset',
- 'quad,',
- 'vectorize',
- 'spdiags',
- 'speye',
- 'sprand',
- 'sprandn',
- 'sprandsym',
- 'find',
- 'full',
- 'sparse',
- 'spconvert',
- 'nnz',
- 'nonzeros',
- 'nzmax',
- 'spalloc',
- 'spfun',
- 'spones',
- 'colmmd',
- 'colperm',
- 'dmperm',
- 'randperm',
- 'symmmd',
- 'symrcm',
- 'condest',
- 'normest',
- 'bicg',
- 'bicgstab',
- 'cgs',
- 'cholinc',
- 'cholupdate',
- 'gmres',
- 'luinc',
- 'pcg',
- 'qmr',
- 'qr',
- 'qrdelete',
- 'qrinsert',
- 'qrupdate',
- 'eigs',
- 'svds',
- 'spparms',
- 'lin2mu',
- 'mu2lin',
- 'sound',
- 'soundsc',
- 'auread',
- 'auwrite',
- 'wavread',
- 'wavwrite',
- '[Keywords 6]',
- 'addpath',
- 'doc',
- 'docopt',
- 'help',
- 'helpdesk',
- 'helpwin',
- 'lasterr',
- 'lastwarn',
- 'lookfor',
- 'partialpath',
- 'path',
- 'pathtool',
- 'profile',
- 'profreport',
- 'rmpath',
- 'type',
- 'ver',
- 'version',
- 'web',
- 'what',
- 'whatsnew',
- 'which',
- 'clear',
- 'disp',
- 'length',
- 'load',
- 'mlock',
- 'munlock',
- 'openvar',
- 'pack',
- 'save',
- 'saveas',
- 'size',
- 'who',
- 'whos',
- 'workspace',
- 'clc',
- 'echo',
- 'format',
- 'home',
- 'more',
- 'cd',
- 'copyfile',
- 'delete',
- 'diary',
- 'dir',
- 'edit',
- 'fileparts',
- 'fullfile',
- 'inmem',
- 'ls',
- 'matlabroot',
- 'mkdir',
- 'open',
- 'pwd',
- 'tempdir',
- 'tempname',
- 'matlabrc',
- 'quit',
-)
- ),
- 'SYMBOLS' => array(
- '...'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- //3 => false,
- //4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000FF;',
- 2 => 'color: #0000FF;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #228B22;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => ''
- ),
- 'BRACKETS' => array(
- 0 => 'color: #080;'
- ),
- 'STRINGS' => array(
- //0 => 'color: #A020F0;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #33f;'
- ),
- 'METHODS' => array(
- 1 => '',
- 2 => ''
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #080;'
- ),
- 'REGEXPS' => array(
- 0 => 'color:#A020F0;'
- ),
- 'SCRIPT' => array(
- 0 => ''
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => 'http://www.mathworks.com/access/helpdesk/help/techdoc/ref/{FNAME}.html',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- 0 => array(
- GESHI_SEARCH => "([^\w])'([^\\n\\r']*)'",
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => "\\1'",
- GESHI_AFTER => "'"
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * matlab.php
+ * -----------
+ * Author: Florian Knorn (floz at gmx.de)
+ * Copyright: (c) 2004 Florian Knorn (http://www.florian-knorn.com)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/02/09
+ *
+ * Matlab M-file language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006-03-25
+ * - support for the transpose operator
+ * - many keywords added
+ * - links to the matlab documentation at mathworks
+ * by: Olivier Verdier (olivier.verdier at free.fr)
+ * 2005/05/07 (1.0.0)
+ * - First Release
+ *
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Matlab M',
+ 'COMMENT_SINGLE' => array(1 => '%'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'break', 'case', 'catch', 'continue', 'elseif', 'else', 'end', 'for',
+ 'function', 'global', 'if', 'otherwise', 'persistent', 'return',
+ 'switch', 'try', 'while','...'
+ ),
+ 2 => array(
+ 'all',
+ 'any',
+ 'exist',
+ 'find',
+ 'is',
+ 'isa',
+ 'logical',
+ 'mislocked',
+
+ 'builtin',
+ 'eval',
+ 'evalc',
+ 'evalin',
+ 'feval',
+ 'function',
+ 'global',
+ 'nargchk',
+ 'persistent',
+ 'script',
+ 'break',
+ 'case',
+ 'catch',
+ 'else',
+ 'elseif',
+ 'end',
+ 'error',
+ 'for',
+ 'if',
+ 'otherwise',
+ 'return',
+ 'switch',
+ 'try',
+ 'warning',
+ 'while',
+ 'input',
+ 'keyboard',
+ 'menu',
+ 'pause',
+ 'class',
+ 'double',
+ 'inferiorto',
+ 'inline',
+ 'int8',
+ 'int16',
+ 'int32',
+ 'isa',
+ 'loadobj',
+ 'saveobj',
+ 'single',
+ 'superiorto',
+ 'uint8',
+ 'int16',
+ 'uint32',
+ 'dbclear',
+ 'dbcont',
+ 'dbdown',
+ 'dbmex',
+ 'dbquit',
+ 'dbstack',
+ 'dbstatus',
+ 'dbstep',
+ 'dbstop',
+ 'dbtype',
+ 'dbup',
+
+ 'blkdiag',
+ 'eye',
+ 'linspace',
+ 'logspace',
+ 'ones',
+ 'rand',
+ 'randn',
+ 'zeros',
+ 'ans',
+ 'computer',
+ 'eps',
+ 'flops',
+ 'i',
+ 'Inf',
+ 'inputname',
+ 'j',
+ 'NaN',
+ 'nargin',
+ 'nargout',
+ 'pi',
+ 'realmax',
+ 'realmin',
+ 'varargin',
+ 'varargout',
+ 'calendar',
+ 'clock',
+ 'cputime',
+ 'date',
+ 'datenum',
+ 'datestr',
+ 'datevec',
+ 'eomday',
+ 'etime',
+ 'now',
+ 'tic',
+ 'toc',
+ 'weekday',
+ 'cat',
+ 'diag',
+ 'fliplr',
+ 'flipud',
+ 'repmat',
+ 'reshape',
+ 'rot90',
+ 'tril',
+ 'triu',
+ 'compan',
+ 'gallery',
+ 'hadamard',
+ 'hankel',
+ 'hilb',
+ 'invhilb',
+ 'magic',
+ 'pascal',
+ 'toeplitz',
+ 'wilkinson',
+ 'abs',
+ 'acos',
+ 'acosh',
+ 'acot',
+ 'acoth',
+ 'acsc',
+ 'acsch',
+ 'angle',
+ 'asec',
+ 'asech',
+ 'asin',
+ 'asinh',
+ 'atan',
+ 'atanh',
+ 'atan2',
+ 'ceil',
+ 'complex',
+ 'conj',
+ 'cos',
+ 'cosh',
+ 'cot',
+ 'coth',
+ 'csc',
+ 'csch',
+ 'exp',
+ 'fix',
+ 'floor',
+ 'gcd',
+ 'imag',
+ 'lcm',
+ 'log',
+ 'log2',
+ 'log10',
+ 'mod',
+ 'nchoosek',
+ 'real',
+ 'rem',
+ 'round',
+ 'sec',
+ 'sech',
+ 'sign',
+ 'sin',
+ 'sinh',
+ 'sqrt',
+ 'tan',
+ 'tanh',
+ 'airy',
+ 'besselh',
+ 'besseli',
+ 'besselk',
+ 'besselj',
+ 'Bessely',
+ 'beta',
+ 'betainc',
+ 'betaln',
+ 'ellipj',
+ 'ellipke',
+ 'erf',
+ 'erfc',
+ 'erfcx',
+ 'erfiny',
+ 'expint',
+ 'factorial',
+ 'gamma',
+ 'gammainc',
+ 'gammaln',
+ 'legendre',
+ 'pow2',
+ 'rat',
+ 'rats',
+ 'cart2pol',
+ 'cart2sph',
+ 'pol2cart',
+ 'sph2cart',
+ 'abs',
+ 'eval',
+ 'real',
+ 'strings',
+ 'deblank',
+ 'findstr',
+ 'lower',
+ 'strcat',
+ 'strcmp',
+ 'strcmpi',
+ 'strjust',
+ 'strmatch',
+ 'strncmp',
+ 'strrep',
+ 'strtok',
+ 'strvcat',
+ 'symvar',
+ 'texlabel',
+ 'upper',
+ 'char',
+ 'int2str',
+ 'mat2str',
+ 'num2str',
+ 'sprintf',
+ 'sscanf',
+ 'str2double',
+ 'str2num',
+ 'bin2dec',
+ 'dec2bin',
+ 'dec2hex',
+ 'hex2dec',
+ 'hex2num',
+ 'fclose',
+ 'fopen',
+ 'fread',
+ 'fwrite',
+ 'fgetl',
+ 'fgets',
+ 'fprintf',
+ 'fscanf',
+ 'feof',
+ 'ferror',
+ 'frewind',
+ 'fseek',
+ 'ftell',
+ 'sprintf',
+ 'sscanf',
+ 'dlmread',
+ 'dlmwrite',
+ 'hdf',
+ 'imfinfo',
+ 'imread',
+ 'imwrite',
+ 'textread',
+ 'wk1read',
+ 'wk1write',
+ 'bitand',
+ 'bitcmp',
+ 'bitor',
+ 'bitmax',
+ 'bitset',
+ 'bitshift',
+ 'bitget',
+ 'bitxor',
+ 'fieldnames',
+ 'getfield',
+ 'rmfield',
+ 'setfield',
+ 'struct',
+ 'struct2cell',
+ 'class',
+ 'isa',
+ 'cell',
+ 'cellfun',
+ 'cellstr',
+ 'cell2struct',
+ 'celldisp',
+ 'cellplot',
+ 'num2cell',
+ 'cat',
+ 'flipdim',
+ 'ind2sub',
+ 'ipermute',
+ 'ndgrid',
+ 'ndims',
+ 'permute',
+ 'reshape',
+ 'shiftdim',
+ 'squeeze',
+ 'sub2ind',
+ 'cond',
+ 'condeig',
+ 'det',
+ 'norm',
+ 'null',
+ 'orth',
+ 'rank',
+ 'rcond',
+ 'rref',
+ 'rrefmovie',
+ 'subspace',
+ 'trace',
+ 'chol',
+ 'inv',
+ 'lscov',
+ 'lu',
+ 'nnls',
+ 'pinv',
+ 'qr',
+ 'balance',
+ 'cdf2rdf',
+ 'eig',
+ 'gsvd',
+ 'hess',
+ 'poly',
+ 'qz',
+ 'rsf2csf',
+ 'schur',
+ 'svd',
+ 'expm',
+ 'funm',
+ 'logm',
+ 'sqrtm',
+ 'qrdelete',
+ 'qrinsert',
+ 'bar',
+ 'barh',
+ 'hist',
+ 'hold',
+ 'loglog',
+ 'pie',
+ 'plot',
+ 'polar',
+ 'semilogx',
+ 'semilogy',
+ 'subplot',
+ 'bar3',
+ 'bar3h',
+ 'comet3',
+ 'cylinder',
+ 'fill3',
+ 'plot3',
+ 'quiver3',
+ 'slice',
+ 'sphere',
+ 'stem3',
+ 'waterfall',
+ 'clabel',
+ 'datetick',
+ 'grid',
+ 'gtext',
+ 'legend',
+ 'plotyy',
+ 'title',
+ 'xlabel',
+ 'ylabel',
+ 'zlabel',
+ 'contour',
+ 'contourc',
+ 'contourf',
+ 'hidden',
+ 'meshc',
+ 'mesh',
+ 'peaks',
+ 'surf',
+ 'surface',
+ 'surfc',
+ 'surfl',
+ 'trimesh',
+ 'trisurf',
+ 'coneplot',
+ 'contourslice',
+ 'isocaps',
+ 'isonormals',
+ 'isosurface',
+ 'reducepatch',
+ 'reducevolume',
+ 'shrinkfaces',
+ 'smooth3',
+ 'stream2',
+ 'stream3',
+ 'streamline',
+ 'surf2patch',
+ 'subvolume',
+ 'griddata',
+ 'meshgrid',
+ 'area',
+ 'box',
+ 'comet',
+ 'compass',
+ 'errorbar',
+ 'ezcontour',
+ 'ezcontourf',
+ 'ezmesh',
+ 'ezmeshc',
+ 'ezplot',
+ 'ezplot3',
+ 'ezpolar',
+ 'ezsurf',
+ 'ezsurfc',
+ 'feather',
+ 'fill',
+ 'fplot',
+ 'pareto',
+ 'pie3',
+ 'plotmatrix',
+ 'pcolor',
+ 'rose',
+ 'quiver',
+ 'ribbon',
+ 'stairs',
+ 'scatter',
+ 'scatter3',
+ 'stem',
+ 'convhull',
+ 'delaunay',
+ 'dsearch',
+ 'inpolygon',
+ 'polyarea',
+ 'tsearch',
+ 'voronoi',
+ 'camdolly',
+ 'camlookat',
+ 'camorbit',
+ 'campan',
+ 'campos',
+ 'camproj',
+ 'camroll',
+ 'camtarget',
+ 'camup',
+ 'camva',
+ 'camzoom',
+ 'daspect',
+ 'pbaspect',
+ 'view',
+ 'viewmtx',
+ 'xlim',
+ 'ylim',
+ 'zlim',
+ 'camlight',
+ 'diffuse',
+ 'lighting',
+ 'lightingangle',
+ 'material',
+ 'specular',
+ 'brighten',
+ 'bwcontr',
+ 'caxis',
+ 'colorbar',
+ 'colorcube',
+ 'colordef',
+ 'colormap',
+ 'graymon',
+ 'hsv2rgb',
+ 'rgb2hsv',
+ 'rgbplot',
+ 'shading',
+ 'spinmap',
+ 'surfnorm',
+ 'whitebg',
+ 'autumn',
+ 'bone',
+ 'contrast',
+ 'cool',
+ 'copper',
+ 'flag',
+ 'gray',
+ 'hot',
+ 'hsv',
+ 'jet',
+ 'lines',
+ 'prism',
+ 'spring',
+ 'summer',
+ 'winter',
+ 'orient',
+ 'print',
+ 'printopt',
+ 'saveas',
+ 'copyobj',
+ 'findobj',
+ 'gcbo',
+ 'gco',
+ 'get',
+ 'rotate',
+ 'ishandle',
+ 'set',
+ 'axes',
+ 'figure',
+ 'image',
+ 'light',
+ 'line',
+ 'patch',
+ 'rectangle',
+ 'surface',
+ 'text Create',
+ 'uicontext Create',
+ 'capture',
+ 'clc',
+ 'clf',
+ 'clg',
+ 'close',
+ 'gcf',
+ 'newplot',
+ 'refresh',
+ 'saveas',
+ 'axis',
+ 'cla',
+ 'gca',
+ 'propedit',
+ 'reset',
+ 'rotate3d',
+ 'selectmoveresize',
+ 'shg',
+ 'ginput',
+ 'zoom',
+ 'dragrect',
+ 'drawnow',
+ 'rbbox',
+ 'dialog',
+ 'errordlg',
+ 'helpdlg',
+ 'inputdlg',
+ 'listdlg',
+ 'msgbox',
+ 'pagedlg',
+ 'printdlg',
+ 'questdlg',
+ 'uigetfile',
+ 'uiputfile',
+ 'uisetcolor',
+ 'uisetfont',
+ 'warndlg',
+ 'menu',
+ 'menuedit',
+ 'uicontextmenu',
+ 'uicontrol',
+ 'uimenu',
+ 'dragrect',
+ 'findfigs',
+ 'gcbo',
+ 'rbbox',
+ 'selectmoveresize',
+ 'textwrap',
+ 'uiresume',
+ 'uiwait Used',
+ 'waitbar',
+ 'waitforbuttonpress',
+ 'convhull',
+ 'cumprod',
+ 'cumsum',
+ 'cumtrapz',
+ 'delaunay',
+ 'dsearch',
+ 'factor',
+ 'inpolygon',
+ 'max',
+ 'mean',
+ 'median',
+ 'min',
+ 'perms',
+ 'polyarea',
+ 'primes',
+ 'prod',
+ 'sort',
+ 'sortrows',
+ 'std',
+ 'sum',
+ 'trapz',
+ 'tsearch',
+ 'var',
+ 'voronoi',
+ 'del2',
+ 'diff',
+ 'gradient',
+ 'corrcoef',
+ 'cov',
+ 'conv',
+ 'conv2',
+ 'deconv',
+ 'filter',
+ 'filter2',
+ 'abs',
+ 'angle',
+ 'cplxpair',
+ 'fft',
+ 'fft2',
+ 'fftshift',
+ 'ifft',
+ 'ifft2',
+ 'ifftn',
+ 'ifftshift',
+ 'nextpow2',
+ 'unwrap',
+ 'cross',
+ 'intersect',
+ 'ismember',
+ 'setdiff',
+ 'setxor',
+ 'union',
+ 'unique',
+ 'conv',
+ 'deconv',
+ 'poly',
+ 'polyder',
+ 'polyeig',
+ 'polyfit',
+ 'polyval',
+ 'polyvalm',
+ 'residue',
+ 'roots',
+ 'griddata',
+ 'interp1',
+ 'interp2',
+ 'interp3',
+ 'interpft',
+ 'interpn',
+ 'meshgrid',
+ 'ndgrid',
+ 'spline',
+ 'dblquad',
+ 'fmin',
+ 'fmins',
+ 'fzero',
+ 'ode45,',
+ 'ode113,',
+ 'ode15s,',
+ 'ode23s,',
+ 'ode23t,',
+ 'ode23tb',
+ 'odefile',
+ 'odeget',
+ 'odeset',
+ 'quad,',
+ 'vectorize',
+ 'spdiags',
+ 'speye',
+ 'sprand',
+ 'sprandn',
+ 'sprandsym',
+ 'find',
+ 'full',
+ 'sparse',
+ 'spconvert',
+ 'nnz',
+ 'nonzeros',
+ 'nzmax',
+ 'spalloc',
+ 'spfun',
+ 'spones',
+ 'colmmd',
+ 'colperm',
+ 'dmperm',
+ 'randperm',
+ 'symmmd',
+ 'symrcm',
+ 'condest',
+ 'normest',
+ 'bicg',
+ 'bicgstab',
+ 'cgs',
+ 'cholinc',
+ 'cholupdate',
+ 'gmres',
+ 'luinc',
+ 'pcg',
+ 'qmr',
+ 'qr',
+ 'qrdelete',
+ 'qrinsert',
+ 'qrupdate',
+ 'eigs',
+ 'svds',
+ 'spparms',
+ 'lin2mu',
+ 'mu2lin',
+ 'sound',
+ 'soundsc',
+ 'auread',
+ 'auwrite',
+ 'wavread',
+ 'wavwrite',
+ '[Keywords 6]',
+ 'addpath',
+ 'doc',
+ 'docopt',
+ 'help',
+ 'helpdesk',
+ 'helpwin',
+ 'lasterr',
+ 'lastwarn',
+ 'lookfor',
+ 'partialpath',
+ 'path',
+ 'pathtool',
+ 'profile',
+ 'profreport',
+ 'rmpath',
+ 'type',
+ 'ver',
+ 'version',
+ 'web',
+ 'what',
+ 'whatsnew',
+ 'which',
+ 'clear',
+ 'disp',
+ 'length',
+ 'load',
+ 'mlock',
+ 'munlock',
+ 'openvar',
+ 'pack',
+ 'save',
+ 'saveas',
+ 'size',
+ 'who',
+ 'whos',
+ 'workspace',
+ 'clc',
+ 'echo',
+ 'format',
+ 'home',
+ 'more',
+ 'cd',
+ 'copyfile',
+ 'delete',
+ 'diary',
+ 'dir',
+ 'edit',
+ 'fileparts',
+ 'fullfile',
+ 'inmem',
+ 'ls',
+ 'matlabroot',
+ 'mkdir',
+ 'open',
+ 'pwd',
+ 'tempdir',
+ 'tempname',
+ 'matlabrc',
+ 'quit',
+)
+ ),
+ 'SYMBOLS' => array(
+ '...'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ //3 => false,
+ //4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000FF;',
+ 2 => 'color: #0000FF;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #228B22;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => ''
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #080;'
+ ),
+ 'STRINGS' => array(
+ //0 => 'color: #A020F0;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #33f;'
+ ),
+ 'METHODS' => array(
+ 1 => '',
+ 2 => ''
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #080;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color:#A020F0;'
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => 'http://www.mathworks.com/access/helpdesk/help/techdoc/ref/{FNAME}.html',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ 0 => array(
+ GESHI_SEARCH => "([^\w])'([^\\n\\r']*)'",
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => "\\1'",
+ GESHI_AFTER => "'"
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/mirc.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/mirc.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/mirc.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,156 +1,156 @@
-<?php
-/*************************************************************************************
- * mirc.php
- * -----
- * Author: Alberto 'Birckin' de Areba (Birckin at hotmail.com)
- * Copyright: (c) 2006 Alberto de Areba
- * Release Version: 1.0.7.21
- * Date Started: 2006/05/29
- *
- * mIRC Scripting language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/05/29 (1.0.0)
- * - First Release
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'mIRC Scripting',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'alias', 'menu', 'dialog',
- ),
- 2 => array(
- 'if', 'elseif', 'else', 'while', 'return', 'goto',
- ),
- 3 => array(
- 'action','ajinvite','alias','amsg','ame','anick','aop','auser',
- 'avoice','auto','autojoin','away','background','ban','beep',
- 'channel','clear','clearall','clipboard','close','closemsg','color',
- 'copy','creq','ctcp','ctcpreply','ctcps','dcc','dde','ddeserver',
- 'debug','describe','disable','disconnect','dlevel','dll','dns',
- 'dqwindow','ebeeps','echo','editbox','emailaddr','enable','events',
- 'exit','filter','findtext','finger','flash','flood','flush',
- 'flushini', 'font','fsend','fserve','fullname','ghide','gload',
- 'gmove','gopts','gplay','gpoint','gqreq','groups','gshow','gsize',
- 'gstop','gtalk','gunload','guser','help','hop','ignore','invite',
- 'join','kick','linesep','links','list','load','loadbuf','localinfo',
- 'log','me','mdi','mkdir','mnick','mode','msg','names','nick','noop',
- 'notice','notify','omsg','onotice','part','partall','pdcc',
- 'perform','ping','play','pop','protect','pvoice','qmsg','qme',
- 'query','queryrn','quit','raw','remini','remote','remove','rename',
- 'enwin','resetidle','rlevel','rmdir','run','ruser','save','savebuf',
- 'saveini','say','server','showmirc','sline','sound','speak','splay',
- 'sreq','strip','time',
- //'timer[N/name]', //Handled as a regular expression below ...
- 'timers','timestamp','titlebar','tnick','tokenize','topic','ulist',
- 'unload','updatenl','url','uwho','window','winhelp','write',
- 'writeini','who','whois','whowas'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']',
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #994444;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #990000; font-weight: bold;',
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- 0 => 'color: #FF0000;',
- ),
- 'STRINGS' => array(
- ),
- 'NUMBERS' => array(
- 0 => '',
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #FF0000;',
- ),
- 'REGEXPS' => array(
- 0 => 'color: #000099;',
- 1 => 'color: #990000;',
- 2 => 'color: #888800;',
- 3 => 'color: #888800;',
- 4 => 'color: #000099;',
- 5 => 'color: #000099;',
- 6 => 'color: #990000; font-weight: bold;',
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.mirc.com/{FNAME}',
- 4 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '\$[a-zA-Z0-9]+',
- 1 => '(%|&)[a-zA-Z0-9]+',
- 2 => '(#|@)[a-zA-Z0-9]+',
- 3 => '-[a-z\d]+',
- 4 => '(on|ctcp) (!|@|&)?(\d|\*):[a-zA-Z]+:',
- /*4 => array(
- GESHI_SEARCH => '((on|ctcp) (!|@|&)?(\d|\*):(Action|Active|Agent|AppActive|Ban|Chat|Close|Connect|Ctcp|CtcpReply|DccServer|DeHelp|DeOp|DeVoice|Dialog|Dns|Error|Exit|FileRcvd|FileSent|GetFail|Help|Hotlink|Input|Invite|Join|KeyDown|KeyUp|Kick|Load|Logon|MidiEnd|Mode|Mp3End|Nick|NoSound|Notice|Notify|Op|Open|Part|Ping|Pong|PlayEnd|Quit|Raw|RawMode|SendFail|Serv|ServerMode|ServerOp|Signal|Snotice|Start|Text|Topic|UnBan|Unload|Unotify|User|Mode|Voice|Wallops|WaveEnd):)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => 'i',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),*/
- 5 => 'raw (\d|\*):',
- 6 => '/timer(?!s\b)[0-9a-zA-Z_]+',
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-if (isset($this) && is_a($this, 'GeSHi')) {
- $this->set_numbers_highlighting(false);
-}
-?>
+<?php
+/*************************************************************************************
+ * mirc.php
+ * -----
+ * Author: Alberto 'Birckin' de Areba (Birckin at hotmail.com)
+ * Copyright: (c) 2006 Alberto de Areba
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/05/29
+ *
+ * mIRC Scripting language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/05/29 (1.0.0)
+ * - First Release
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'mIRC Scripting',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'alias', 'menu', 'dialog',
+ ),
+ 2 => array(
+ 'if', 'elseif', 'else', 'while', 'return', 'goto',
+ ),
+ 3 => array(
+ 'action','ajinvite','alias','amsg','ame','anick','aop','auser',
+ 'avoice','auto','autojoin','away','background','ban','beep',
+ 'channel','clear','clearall','clipboard','close','closemsg','color',
+ 'copy','creq','ctcp','ctcpreply','ctcps','dcc','dde','ddeserver',
+ 'debug','describe','disable','disconnect','dlevel','dll','dns',
+ 'dqwindow','ebeeps','echo','editbox','emailaddr','enable','events',
+ 'exit','filter','findtext','finger','flash','flood','flush',
+ 'flushini', 'font','fsend','fserve','fullname','ghide','gload',
+ 'gmove','gopts','gplay','gpoint','gqreq','groups','gshow','gsize',
+ 'gstop','gtalk','gunload','guser','help','hop','ignore','invite',
+ 'join','kick','linesep','links','list','load','loadbuf','localinfo',
+ 'log','me','mdi','mkdir','mnick','mode','msg','names','nick','noop',
+ 'notice','notify','omsg','onotice','part','partall','pdcc',
+ 'perform','ping','play','pop','protect','pvoice','qmsg','qme',
+ 'query','queryrn','quit','raw','remini','remote','remove','rename',
+ 'enwin','resetidle','rlevel','rmdir','run','ruser','save','savebuf',
+ 'saveini','say','server','showmirc','sline','sound','speak','splay',
+ 'sreq','strip','time',
+ //'timer[N/name]', //Handled as a regular expression below ...
+ 'timers','timestamp','titlebar','tnick','tokenize','topic','ulist',
+ 'unload','updatenl','url','uwho','window','winhelp','write',
+ 'writeini','who','whois','whowas'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']',
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #994444;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #990000; font-weight: bold;',
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #FF0000;',
+ ),
+ 'STRINGS' => array(
+ ),
+ 'NUMBERS' => array(
+ 0 => '',
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #FF0000;',
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #000099;',
+ 1 => 'color: #990000;',
+ 2 => 'color: #888800;',
+ 3 => 'color: #888800;',
+ 4 => 'color: #000099;',
+ 5 => 'color: #000099;',
+ 6 => 'color: #990000; font-weight: bold;',
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.mirc.com/{FNAME}',
+ 4 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '\$[a-zA-Z0-9]+',
+ 1 => '(%|&)[a-zA-Z0-9]+',
+ 2 => '(#|@)[a-zA-Z0-9]+',
+ 3 => '-[a-z\d]+',
+ 4 => '(on|ctcp) (!|@|&)?(\d|\*):[a-zA-Z]+:',
+ /*4 => array(
+ GESHI_SEARCH => '((on|ctcp) (!|@|&)?(\d|\*):(Action|Active|Agent|AppActive|Ban|Chat|Close|Connect|Ctcp|CtcpReply|DccServer|DeHelp|DeOp|DeVoice|Dialog|Dns|Error|Exit|FileRcvd|FileSent|GetFail|Help|Hotlink|Input|Invite|Join|KeyDown|KeyUp|Kick|Load|Logon|MidiEnd|Mode|Mp3End|Nick|NoSound|Notice|Notify|Op|Open|Part|Ping|Pong|PlayEnd|Quit|Raw|RawMode|SendFail|Serv|ServerMode|ServerOp|Signal|Snotice|Start|Text|Topic|UnBan|Unload|Unotify|User|Mode|Voice|Wallops|WaveEnd):)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => 'i',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),*/
+ 5 => 'raw (\d|\*):',
+ 6 => '/timer(?!s\b)[0-9a-zA-Z_]+',
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+if (isset($this) && is_a($this, 'GeSHi')) {
+ $this->set_numbers_highlighting(false);
+}
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/mpasm.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/mpasm.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/mpasm.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,158 +1,158 @@
-<?php
-/*************************************************************************************
- * mpasm.php
- * ---------
- * Author: Bakalex (bakalex at gmail.com)
- * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/12/6
- *
- * Microchip Assembler language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/01/29 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/12/6)
- * -------------------------
- *
- * For the moment, i've only added PIC16C6X registers. We need more (PIC16F/C7x/8x,
- * PIC10, PIC18 and dsPIC registers).
- * Must take a look to dsPIC instructions.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Microchip Assembler',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- /*Directive Language*/
- 4 => array(
- 'CONSTANT', '#DEFINE', 'END', 'EQU', 'ERROR', 'ERROR-LEVEL', '#INCLUDE', 'LIST',
- 'MESSG', 'NOLIST', 'ORG', 'PAGE', 'PROCESSOR', 'RADIX', 'SET', 'SPACE', 'SUBTITLE',
- 'TITLE', '#UNDEFINE', 'VARIABLE', 'ELSE', 'ENDIF', 'ENDW', 'IF', 'IFDEF', 'IFNDEF',
- 'WHILE', '__BADRAM', 'CBLOCK', '__CONFIG', 'DA', 'DATA', 'DB', 'DE', 'DT', 'DW',
- 'ENDC', 'FILL', '__IDLOCS', '__MAXRAM', 'RES', 'ENDM', 'EXITM', 'EXPAND', 'LOCAL',
- 'MACRO', 'NOEXPAND', 'BANKISEL', 'BANKSEL', 'CODE', 'EXTERN', 'GLOBAL', 'IDATA',
- 'PAGESEL', 'UDATA', 'UDATA_ACS', 'UDATA_OVR', 'UDATA_SHR'
- ),
- /* 12&14-bit Specific Instruction Set*/
- 1 => array(
- 'andlw', 'call', 'clrwdt', 'goto', 'iorlw', 'movlw', 'option', 'retlw', 'sleep',
- 'tris', 'xorlw', 'addwf', 'andwf', 'clrf', 'clrw', 'comf', 'decf', 'decfsz', 'incf',
- 'incfsz', 'iorwf', 'movf', 'movwf', 'nop', 'rlf', 'rrf', 'subwf', 'swapf', 'xorwf',
- 'bcf', 'bsf', 'btfsc', 'btfss',
- 'addlw', 'iorlw', 'retfie', 'return', 'sublw', 'xorlw', 'addcf', 'adddcf', 'b', 'bc', 'bdc',
- 'bnc', 'bndc', 'bnz', 'bz', 'clrc', 'clrdc', 'clrz', 'lcall', 'lgoto', 'movfw',
- 'negf', 'setc', 'setdc', 'setz', 'skpc', 'skpdc', 'skpnc', 'skpndc', 'skpnz', 'skpz',
- 'subcf', 'subdcf', 'tstf'
- ),
- /* 16-bit Specific Instructiob Set */
- 2 => array (
- 'movfp', 'movlb', 'movlp', 'movpf', 'movwf', 'tablrd', 'tablwt', 'tlrd', 'tlwt',
- 'addwfc', 'daw', 'mullw', 'negw', 'rlcf', 'rlncf', 'rrcf', 'rrncf', 'setf', 'subwfb',
- 'btg', 'cpfseq', 'cpfsgt', 'cpfslt', 'dcfsnz', 'infsnz', 'tstfsz', 'lfsr', 'bnn',
- 'bnov', 'bra', 'pop', 'push', 'rcall', 'reset'
- ),
- /* Registers */
- 3 => array(
- 'INDF', 'TMR0', 'PCL', 'STATUS', 'FSR', 'PORTA', 'PORTB', 'PORTC', 'PORTD', 'PORTE',
- 'PCLATH', 'INTCON', 'PIR1', 'PIR2', 'TMR1L', 'TMR1H', 'T1CON', 'TMR2', 'T2CON', 'TMR2L',
- 'TMR2H', 'TMR0H', 'TMR0L', 'SSPBUF', 'SSPCON', 'CCPR1L', 'CCPR1H', 'CCP1CON', 'RCSTA',
- 'TXREG', 'RCREG', 'CCPR2L', 'CCPR2H', 'CCP2CON', 'OPTION', 'TRISA', 'TRISB', 'TRISC',
- 'TRISD', 'TRISE', 'PIE2', 'PIE1', 'PR2', 'SSPADD', 'SSPSTAT', 'TXSTA', 'SPBRG'
- ),
- /*Operands*/
- 5 => array(
- 'high','low'
- )
- ),
- 'SYMBOLS' => array(
- '[', ']', '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #00007f;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #007f00;',
- 4 => 'color: #46aa03; font-weight:bold;',
- 5 => 'color: #7f0000;',
- 6 => 'color: #7f0000;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #adadad; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f007f;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #ff0000;',
- 1 => 'color: #ff0000;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '[0-9a-fA-F]{1,32}[hH]',
- 1 => '[01]{1,64}[bB]'
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * mpasm.php
+ * ---------
+ * Author: Bakalex (bakalex at gmail.com)
+ * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/12/6
+ *
+ * Microchip Assembler language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/01/29 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/12/6)
+ * -------------------------
+ *
+ * For the moment, i've only added PIC16C6X registers. We need more (PIC16F/C7x/8x,
+ * PIC10, PIC18 and dsPIC registers).
+ * Must take a look to dsPIC instructions.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Microchip Assembler',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ /*Directive Language*/
+ 4 => array(
+ 'CONSTANT', '#DEFINE', 'END', 'EQU', 'ERROR', 'ERROR-LEVEL', '#INCLUDE', 'LIST',
+ 'MESSG', 'NOLIST', 'ORG', 'PAGE', 'PROCESSOR', 'RADIX', 'SET', 'SPACE', 'SUBTITLE',
+ 'TITLE', '#UNDEFINE', 'VARIABLE', 'ELSE', 'ENDIF', 'ENDW', 'IF', 'IFDEF', 'IFNDEF',
+ 'WHILE', '__BADRAM', 'CBLOCK', '__CONFIG', 'DA', 'DATA', 'DB', 'DE', 'DT', 'DW',
+ 'ENDC', 'FILL', '__IDLOCS', '__MAXRAM', 'RES', 'ENDM', 'EXITM', 'EXPAND', 'LOCAL',
+ 'MACRO', 'NOEXPAND', 'BANKISEL', 'BANKSEL', 'CODE', 'EXTERN', 'GLOBAL', 'IDATA',
+ 'PAGESEL', 'UDATA', 'UDATA_ACS', 'UDATA_OVR', 'UDATA_SHR'
+ ),
+ /* 12&14-bit Specific Instruction Set*/
+ 1 => array(
+ 'andlw', 'call', 'clrwdt', 'goto', 'iorlw', 'movlw', 'option', 'retlw', 'sleep',
+ 'tris', 'xorlw', 'addwf', 'andwf', 'clrf', 'clrw', 'comf', 'decf', 'decfsz', 'incf',
+ 'incfsz', 'iorwf', 'movf', 'movwf', 'nop', 'rlf', 'rrf', 'subwf', 'swapf', 'xorwf',
+ 'bcf', 'bsf', 'btfsc', 'btfss',
+ 'addlw', 'iorlw', 'retfie', 'return', 'sublw', 'xorlw', 'addcf', 'adddcf', 'b', 'bc', 'bdc',
+ 'bnc', 'bndc', 'bnz', 'bz', 'clrc', 'clrdc', 'clrz', 'lcall', 'lgoto', 'movfw',
+ 'negf', 'setc', 'setdc', 'setz', 'skpc', 'skpdc', 'skpnc', 'skpndc', 'skpnz', 'skpz',
+ 'subcf', 'subdcf', 'tstf'
+ ),
+ /* 16-bit Specific Instructiob Set */
+ 2 => array (
+ 'movfp', 'movlb', 'movlp', 'movpf', 'movwf', 'tablrd', 'tablwt', 'tlrd', 'tlwt',
+ 'addwfc', 'daw', 'mullw', 'negw', 'rlcf', 'rlncf', 'rrcf', 'rrncf', 'setf', 'subwfb',
+ 'btg', 'cpfseq', 'cpfsgt', 'cpfslt', 'dcfsnz', 'infsnz', 'tstfsz', 'lfsr', 'bnn',
+ 'bnov', 'bra', 'pop', 'push', 'rcall', 'reset'
+ ),
+ /* Registers */
+ 3 => array(
+ 'INDF', 'TMR0', 'PCL', 'STATUS', 'FSR', 'PORTA', 'PORTB', 'PORTC', 'PORTD', 'PORTE',
+ 'PCLATH', 'INTCON', 'PIR1', 'PIR2', 'TMR1L', 'TMR1H', 'T1CON', 'TMR2', 'T2CON', 'TMR2L',
+ 'TMR2H', 'TMR0H', 'TMR0L', 'SSPBUF', 'SSPCON', 'CCPR1L', 'CCPR1H', 'CCP1CON', 'RCSTA',
+ 'TXREG', 'RCREG', 'CCPR2L', 'CCPR2H', 'CCP2CON', 'OPTION', 'TRISA', 'TRISB', 'TRISC',
+ 'TRISD', 'TRISE', 'PIE2', 'PIE1', 'PR2', 'SSPADD', 'SSPSTAT', 'TXSTA', 'SPBRG'
+ ),
+ /*Operands*/
+ 5 => array(
+ 'high','low'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #00007f;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #007f00;',
+ 4 => 'color: #46aa03; font-weight:bold;',
+ 5 => 'color: #7f0000;',
+ 6 => 'color: #7f0000;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #adadad; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f007f;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #ff0000;',
+ 1 => 'color: #ff0000;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '[0-9a-fA-F]{1,32}[hH]',
+ 1 => '[01]{1,64}[bB]'
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/mysql.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/mysql.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/mysql.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,181 +1,181 @@
-<?php
- /*************************************************************************************
- * mysql.php
- * ---------
- * Author: Carl F�rstenberg (azatoth at gmail.com)
- * Copyright: (c) 2005 Carl F�rstenberg, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * MySQL language file for GeSHi.
- *
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'MySQL',
- 'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => 1,
- 'QUOTEMARKS' => array("'", '"', ''),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- /* Mix */
- 'ALTER DATABASE', 'ALTER TABLE', 'CREATE DATABASE', 'CREATE INDEX', 'CREATE TABLE', 'DROP DATABASE',
- 'DROP INDEX', 'DROP TABLE', 'RENAME TABLE', 'DELETE', 'DO', 'HANDLER', 'INSERT', 'LOAD DATA INFILE',
- 'REPLACE', 'SELECT', 'TRUNCATE', 'UPDATE', 'DESCRIBE', 'USE', 'START TRANSACTION', 'COMMIT', 'ROLLBACK',
- 'SAVEPOINT', 'ROLLBACK TO SAVEPOINT', 'LOCK TABLES', 'UNLOCK_TABLES', 'SET TRANACTIONS', 'SET', 'SHOW',
- 'CREATE PROCEDURE', 'CREATE FUNCTION', 'ALTER PROCEDURE', 'ALTER FUNCTION', 'DROP PROCEDURE', 'DROP FUNCTION',
- 'SHOW CREATE PROCEDURE', 'SHOW CREATE FUNCTION', 'SHOW PROCEDURE STATUS', 'SHOW FUNCTION STATUS',
- 'CALL', 'BEGIN', 'END', 'DECLARE', 'CREATE ROUTINE', 'ALTER ROUTINE', 'CREATE', 'ALTER', 'DROP',
- 'PRIMARY KEY', 'VALUES', 'INTO', 'FROM',
- 'ANALYZE', 'BDB', 'BERKELEYDB', 'BTREE', 'BY', 'CASCADE', 'CHECK', 'COLUMN', 'COLUMNS', 'CONSTRAINT',
- 'CROSS', 'DATABASES', 'DELAYED', 'DISTINCT', 'DISTINCTROW', 'ENCLOSED', 'ERRORS', 'ESCAPED', 'EXISTS',
- 'EXPLAIN', 'FALSE', 'FIELDS', 'FORCE', 'FOREIGN', 'FULLTEXT', 'GEOMETRY', 'GRANT', 'GROUP', 'HASH',
- 'HAVING', 'HELP', 'HIGH_PRIORITY', 'IGNORE', 'INNER', 'INNODB', 'INTERVAL', 'JOIN', 'KEYS', 'KILL',
- 'LINES', 'LOW_PRIORITY', 'MASTER_SERVER_ID', 'MATCH', 'MIDDLEINT', 'MRG_MYISAM', 'NATURAL', 'OPTIMIZE',
- 'OPTION', 'OPTIONALLY', 'ORDER', 'OUTER', 'OUTFILE', 'PRIVILEGES', 'PURGE', 'READ', 'REFERENCES',
- 'REQUIRE', 'RESTRICT', 'RETURNS', 'REVOKE', 'RLIKE', 'RTREE', 'SOME', 'SONAME', 'SPATIAL', 'SQL_BIG_RESULT',
- 'SQL_CALC_FOUND_ROWS', 'SQL_SMALL_RESULT', 'SSL', 'STARTING', 'STRAIGHT_JOIN', 'STRIPED', 'TERMINATED',
- 'TRUE', 'TYPES', 'UNION', 'USAGE', 'USER_RESOURCES', 'USING', 'VARCHARACTER', 'WARNINGS', 'WHERE', 'WRITE',
- /* Control Flow Functions */
- 'CASE', 'WHEN', 'THEN', 'ELSE', 'END',
- /* String Functions */
- 'UNHEX', 'BIN', 'BIT_LENGTH', 'CHAR_LENGTH', 'CHARACTER_LENGTH', 'COMPRESS', 'CONCAT',
- 'CONCAT_WS', 'CONV', 'ELT', 'EXPORT_SET', 'FIELD', 'FIND_IN_SET', 'FORMAT', 'HEX',
- 'INSERT', 'INSTR', 'LCASE', 'LEFT', 'LENGTH', 'LOAD_FILE', 'LOCATE', 'LOWER', 'LPAD',
- 'LTRIM', 'MAKE_SET', 'MID', 'OCT', 'OCTET_LENGTH', 'ORD', 'POSITION', 'QUOTE', 'REPEAT',
- 'REPLACE', 'REVERSE', 'RIGHT', 'RPAD', 'RTRIM', 'SOUNDEX', 'SPACE', 'SUBSTRING',
- 'SUBSTRING_INDEX', 'TRIM', 'UCASE', 'UPPER', 'UNCOMPRESS', 'UNCOMPRESSD_LENGTH',
- 'MD5', 'SHA1',
- /* Numeric Functions */
- 'ABS', 'ACOS', 'ASIN', 'ATAN', 'ATAN2', 'CEILING', 'CEIL', 'COS', 'COT', 'CRC32', 'DEGREES',
- 'EXP', 'FLOOR', 'LN', 'LOG', 'LOG2', 'LOG10', 'MOD', 'PI', 'POW', 'POWER', 'RADIANS', 'RAND',
- 'ROUND', 'SIGN', 'SIN', 'SQRT', 'TAN', 'TRUNCATE',
- /* Date and Time Functions */
- 'ADDDATE', 'ADDTIME', 'CONVERT_TZ', 'CURDATE', 'CURRENT_DATE', 'CURTIME', 'CURRENT_TIME',
- 'CURRENT_TIMESTAMP', 'DATEDIFF', 'DATE_ADD', 'DATE_SUB', 'DATE_FORMAT', 'DAY',
- 'DAYNAME', 'DAYOFMONTH', 'DAYOFWEEK', 'DAYOFYEAR', 'EXTRACT', 'FROM_DAYS', 'FROM_UNIXTIME',
- 'GET_FORMAT', 'LAST_DAY', 'LOCALTIME', 'LOCALTIMESTAMP', 'MAKEDATE', 'MAKETIME',
- 'MICROSECOND', 'MONTHNAME', 'NOW', 'PERIOD_ADD', 'PERIOD_DIFF', 'QUARTER',
- 'SECOND', 'SEC_TO_TIME', 'STR_TO_DATE', 'SUBDATE', 'SUBTIME', 'SYSDATE', 'TIME', 'TIMEDIFF',
- 'TIMESTAMP', 'TIMESTAMPADD', 'TIMESTAMPDIFF', 'TIME_FORMAT', 'TIME_TO_SEC', 'TO_DAYS',
- 'UNIX_TIMESTAMP', 'UTC_DATE', 'UTC_TIME', 'UTC_TIMESTAMP', 'WEEKDAY', 'WEEKOFYEAR',
- 'YEARWEEK',
-
- ),
- 2 => array(
- 'INTEGER', 'SMALLINT', 'DECIMAL', 'NUMERIC', 'FLOAT', 'REAL', 'DOUBLE PRECISION',
- 'DOUBLE', 'INT', 'DEC', 'BIT' ,'TINYINT', 'SMALLINT', 'MEDIUMINT', 'BIGINT',
- 'DATETIME', 'DATE', 'TIMESTAMP', 'TIME', 'YEAR',
- 'CHAR', 'VARCHAR', 'BINARY', 'CHARACTER VARYING', 'VARBINARY', 'TINYBLOB', 'TINYTEXT',
- 'BLOB', 'TEXT','MEDIUMBLOB', 'MEDIUMTEXT', 'LONGBLOB', 'LONGTEXT', 'ENUM', 'SET',
- 'SERIAL DEFAULT VALUE', 'SERIAL', 'FIXED'
- ),
- 3 => array(
- 'ZEROFILL', 'NOT NULL', 'UNSIGNED', 'AUTO_INCREMENT', 'UNIQUE', 'NOT', 'NULL', 'CHARACTER SET', 'CHARSET',
- 'ASCII', 'UNICODE', 'NATIONAL', 'BOTH', 'LEADING', 'TRAILING','DEFAULT'
- ),
- 4 => array(
- 'MICROSECOND', 'SECOND', 'MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'SECOND_MICROSECOND',
- 'MINUTE_MICROSECOND', 'MINUTE_SECOND', 'HOUR_MICROSECOND', 'HOUR_SECOND', 'HOUR_MINUTE', 'DAY_MICROSECOND',
- 'DAY_SECOND', 'DAY_MINUTE', 'DAY_HOUR', 'YEAR_MONTH'
- ),
- 5 => array(
- 'OR', 'XOR', 'AND', 'NOT', 'BETWEEN', 'IS', 'LIKE', 'REGEXP', 'IN', 'DIV',
- 'MOD', 'BINARY', 'COLLATE', 'LIMIT', 'OFFSET'
- ),
- ),
- 'SYMBOLS' => array(
- ':=',
- '||', 'OR', 'XOR',
- '&&', 'AND',
- 'NOT',
- 'BETWEEN', 'CASE', 'WHEN', 'THEN', 'ELSE',
- '=', '<=>', '>=', '>', '<=', '<', '<>', '!=', 'IS', 'LIKE', 'REGEXP', 'IN',
- '|',
- '&',
- '<<', '>>',
- '-', '+',
- '*', '/', 'DIV', '%', 'MOD',
- '^',
- '-', '~',
- '!',
- 'BINARY', 'COLLATE',
- '(', ')',
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #993333; font-weight: bold;',
- 2 => 'color: #aa9933; font-weight: bold;',
- 3 => 'color: #aa3399; font-weight: bold;',
- 4 => 'color: #33aa99; font-weight: bold;',
- 5 => 'color: #993333; font-weight: bold;'
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #808080; font-style: italic;',
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+ /*************************************************************************************
+ * mysql.php
+ * ---------
+ * Author: Carl F�rstenberg (azatoth at gmail.com)
+ * Copyright: (c) 2005 Carl F�rstenberg, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * MySQL language file for GeSHi.
+ *
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'MySQL',
+ 'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => 1,
+ 'QUOTEMARKS' => array("'", '"', ''),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ /* Mix */
+ 'ALTER DATABASE', 'ALTER TABLE', 'CREATE DATABASE', 'CREATE INDEX', 'CREATE TABLE', 'DROP DATABASE',
+ 'DROP INDEX', 'DROP TABLE', 'RENAME TABLE', 'DELETE', 'DO', 'HANDLER', 'INSERT', 'LOAD DATA INFILE',
+ 'REPLACE', 'SELECT', 'TRUNCATE', 'UPDATE', 'DESCRIBE', 'USE', 'START TRANSACTION', 'COMMIT', 'ROLLBACK',
+ 'SAVEPOINT', 'ROLLBACK TO SAVEPOINT', 'LOCK TABLES', 'UNLOCK_TABLES', 'SET TRANACTIONS', 'SET', 'SHOW',
+ 'CREATE PROCEDURE', 'CREATE FUNCTION', 'ALTER PROCEDURE', 'ALTER FUNCTION', 'DROP PROCEDURE', 'DROP FUNCTION',
+ 'SHOW CREATE PROCEDURE', 'SHOW CREATE FUNCTION', 'SHOW PROCEDURE STATUS', 'SHOW FUNCTION STATUS',
+ 'CALL', 'BEGIN', 'END', 'DECLARE', 'CREATE ROUTINE', 'ALTER ROUTINE', 'CREATE', 'ALTER', 'DROP',
+ 'PRIMARY KEY', 'VALUES', 'INTO', 'FROM',
+ 'ANALYZE', 'BDB', 'BERKELEYDB', 'BTREE', 'BY', 'CASCADE', 'CHECK', 'COLUMN', 'COLUMNS', 'CONSTRAINT',
+ 'CROSS', 'DATABASES', 'DELAYED', 'DISTINCT', 'DISTINCTROW', 'ENCLOSED', 'ERRORS', 'ESCAPED', 'EXISTS',
+ 'EXPLAIN', 'FALSE', 'FIELDS', 'FORCE', 'FOREIGN', 'FULLTEXT', 'GEOMETRY', 'GRANT', 'GROUP', 'HASH',
+ 'HAVING', 'HELP', 'HIGH_PRIORITY', 'IGNORE', 'INNER', 'INNODB', 'INTERVAL', 'JOIN', 'KEYS', 'KILL',
+ 'LINES', 'LOW_PRIORITY', 'MASTER_SERVER_ID', 'MATCH', 'MIDDLEINT', 'MRG_MYISAM', 'NATURAL', 'OPTIMIZE',
+ 'OPTION', 'OPTIONALLY', 'ORDER', 'OUTER', 'OUTFILE', 'PRIVILEGES', 'PURGE', 'READ', 'REFERENCES',
+ 'REQUIRE', 'RESTRICT', 'RETURNS', 'REVOKE', 'RLIKE', 'RTREE', 'SOME', 'SONAME', 'SPATIAL', 'SQL_BIG_RESULT',
+ 'SQL_CALC_FOUND_ROWS', 'SQL_SMALL_RESULT', 'SSL', 'STARTING', 'STRAIGHT_JOIN', 'STRIPED', 'TERMINATED',
+ 'TRUE', 'TYPES', 'UNION', 'USAGE', 'USER_RESOURCES', 'USING', 'VARCHARACTER', 'WARNINGS', 'WHERE', 'WRITE',
+ /* Control Flow Functions */
+ 'CASE', 'WHEN', 'THEN', 'ELSE', 'END',
+ /* String Functions */
+ 'UNHEX', 'BIN', 'BIT_LENGTH', 'CHAR_LENGTH', 'CHARACTER_LENGTH', 'COMPRESS', 'CONCAT',
+ 'CONCAT_WS', 'CONV', 'ELT', 'EXPORT_SET', 'FIELD', 'FIND_IN_SET', 'FORMAT', 'HEX',
+ 'INSERT', 'INSTR', 'LCASE', 'LEFT', 'LENGTH', 'LOAD_FILE', 'LOCATE', 'LOWER', 'LPAD',
+ 'LTRIM', 'MAKE_SET', 'MID', 'OCT', 'OCTET_LENGTH', 'ORD', 'POSITION', 'QUOTE', 'REPEAT',
+ 'REPLACE', 'REVERSE', 'RIGHT', 'RPAD', 'RTRIM', 'SOUNDEX', 'SPACE', 'SUBSTRING',
+ 'SUBSTRING_INDEX', 'TRIM', 'UCASE', 'UPPER', 'UNCOMPRESS', 'UNCOMPRESSD_LENGTH',
+ 'MD5', 'SHA1',
+ /* Numeric Functions */
+ 'ABS', 'ACOS', 'ASIN', 'ATAN', 'ATAN2', 'CEILING', 'CEIL', 'COS', 'COT', 'CRC32', 'DEGREES',
+ 'EXP', 'FLOOR', 'LN', 'LOG', 'LOG2', 'LOG10', 'MOD', 'PI', 'POW', 'POWER', 'RADIANS', 'RAND',
+ 'ROUND', 'SIGN', 'SIN', 'SQRT', 'TAN', 'TRUNCATE',
+ /* Date and Time Functions */
+ 'ADDDATE', 'ADDTIME', 'CONVERT_TZ', 'CURDATE', 'CURRENT_DATE', 'CURTIME', 'CURRENT_TIME',
+ 'CURRENT_TIMESTAMP', 'DATEDIFF', 'DATE_ADD', 'DATE_SUB', 'DATE_FORMAT', 'DAY',
+ 'DAYNAME', 'DAYOFMONTH', 'DAYOFWEEK', 'DAYOFYEAR', 'EXTRACT', 'FROM_DAYS', 'FROM_UNIXTIME',
+ 'GET_FORMAT', 'LAST_DAY', 'LOCALTIME', 'LOCALTIMESTAMP', 'MAKEDATE', 'MAKETIME',
+ 'MICROSECOND', 'MONTHNAME', 'NOW', 'PERIOD_ADD', 'PERIOD_DIFF', 'QUARTER',
+ 'SECOND', 'SEC_TO_TIME', 'STR_TO_DATE', 'SUBDATE', 'SUBTIME', 'SYSDATE', 'TIME', 'TIMEDIFF',
+ 'TIMESTAMP', 'TIMESTAMPADD', 'TIMESTAMPDIFF', 'TIME_FORMAT', 'TIME_TO_SEC', 'TO_DAYS',
+ 'UNIX_TIMESTAMP', 'UTC_DATE', 'UTC_TIME', 'UTC_TIMESTAMP', 'WEEKDAY', 'WEEKOFYEAR',
+ 'YEARWEEK',
+
+ ),
+ 2 => array(
+ 'INTEGER', 'SMALLINT', 'DECIMAL', 'NUMERIC', 'FLOAT', 'REAL', 'DOUBLE PRECISION',
+ 'DOUBLE', 'INT', 'DEC', 'BIT' ,'TINYINT', 'SMALLINT', 'MEDIUMINT', 'BIGINT',
+ 'DATETIME', 'DATE', 'TIMESTAMP', 'TIME', 'YEAR',
+ 'CHAR', 'VARCHAR', 'BINARY', 'CHARACTER VARYING', 'VARBINARY', 'TINYBLOB', 'TINYTEXT',
+ 'BLOB', 'TEXT','MEDIUMBLOB', 'MEDIUMTEXT', 'LONGBLOB', 'LONGTEXT', 'ENUM', 'SET',
+ 'SERIAL DEFAULT VALUE', 'SERIAL', 'FIXED'
+ ),
+ 3 => array(
+ 'ZEROFILL', 'NOT NULL', 'UNSIGNED', 'AUTO_INCREMENT', 'UNIQUE', 'NOT', 'NULL', 'CHARACTER SET', 'CHARSET',
+ 'ASCII', 'UNICODE', 'NATIONAL', 'BOTH', 'LEADING', 'TRAILING','DEFAULT'
+ ),
+ 4 => array(
+ 'MICROSECOND', 'SECOND', 'MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'SECOND_MICROSECOND',
+ 'MINUTE_MICROSECOND', 'MINUTE_SECOND', 'HOUR_MICROSECOND', 'HOUR_SECOND', 'HOUR_MINUTE', 'DAY_MICROSECOND',
+ 'DAY_SECOND', 'DAY_MINUTE', 'DAY_HOUR', 'YEAR_MONTH'
+ ),
+ 5 => array(
+ 'OR', 'XOR', 'AND', 'NOT', 'BETWEEN', 'IS', 'LIKE', 'REGEXP', 'IN', 'DIV',
+ 'MOD', 'BINARY', 'COLLATE', 'LIMIT', 'OFFSET'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ ':=',
+ '||', 'OR', 'XOR',
+ '&&', 'AND',
+ 'NOT',
+ 'BETWEEN', 'CASE', 'WHEN', 'THEN', 'ELSE',
+ '=', '<=>', '>=', '>', '<=', '<', '<>', '!=', 'IS', 'LIKE', 'REGEXP', 'IN',
+ '|',
+ '&',
+ '<<', '>>',
+ '-', '+',
+ '*', '/', 'DIV', '%', 'MOD',
+ '^',
+ '-', '~',
+ '!',
+ 'BINARY', 'COLLATE',
+ '(', ')',
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #993333; font-weight: bold;',
+ 2 => 'color: #aa9933; font-weight: bold;',
+ 3 => 'color: #aa3399; font-weight: bold;',
+ 4 => 'color: #33aa99; font-weight: bold;',
+ 5 => 'color: #993333; font-weight: bold;'
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #808080; font-style: italic;',
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/nsis.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/nsis.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/nsis.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,352 +1,352 @@
-<?php
-/*************************************************************************************
- * nsis.php
- * --------
- * Author: deguix (cevo_deguix at yahoo.com.br), Tux (http://tux.a4.cz/)
- * Copyright: (c) 2005 deguix, 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2005/12/03
- *
- * Nullsoft Scriptable Install System language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/12/03 (2.0.2)
- * - Updated to NSIS 2.11.
- * 2005/06/17 (2.0.1)
- * - Updated to NSIS 2.07b0.
- * 2005/04/05 (2.0.0)
- * - Updated to NSIS 2.06.
- * 2004/11/27 (1.0.2)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.1)
- * - Added support for URLs
- * 2004/08/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'NSIS',
- 'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'",'"','`'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- '!appendfile', '!addIncludeDir', '!addplugindir', '!cd', '!define', '!delfile', '!echo', '!else',
- '!endif', '!error', '!execute', '!ifdef', '!ifmacrodef', '!ifmacrondef', '!ifndef', '!include',
- '!insertmacro', '!macro', '!macroend', '!packhdr', '!tempfile', '!system', '!undef', '!verbose',
- '!warning'
- ),
- 2 => array(
- 'AddBrandingImage', 'AllowRootDirInstall', 'AutoCloseWindow', 'BGFont',
- 'BGGradient', 'BrandingText', 'Caption', 'ChangeUI', 'CheckBitmap', 'CompletedText', 'ComponentText',
- 'CRCCheck', 'DetailsButtonText', 'DirShow', 'DirText', 'DirVar', 'DirVerify', 'FileErrorText',
- 'Function', 'FunctionEnd', 'Icon', 'InstallButtonText', 'InstallColors', 'InstallDir',
- 'InstallDirRegKey', 'InstProgressFlags', 'InstType', 'LangString', 'LangStringUP', 'LicenseBkColor',
- 'LicenseData', 'LicenseForceSelection', 'LicenseLangString', 'LicenseText', 'LoadLanguageFile',
- 'MiscButtonText', 'Name', 'OutFile', 'Page', 'PageEx', 'PageExEnd', 'Section',
- 'SectionEnd', 'SectionGroup', 'SectionGroupEnd', 'SetCompressor', 'SetFont', 'ShowInstDetails',
- 'ShowUninstDetails', 'SilentInstall', 'SilentUnInstall', 'SpaceTexts', 'SubCaption', 'SubSection',
- 'SubSectionEnd', 'UninstallButtonText', 'UninstallCaption', 'UninstallIcon', 'UninstallSubCaption',
- 'UninstallText', 'UninstPage', 'Var', 'VIAddVersionKey', 'VIProductVersion', 'WindowIcon', 'XPStyle'
- ),
- 3 => array(
- 'AddSize', 'AllowSkipFiles', 'AutoCloseWindow', 'FileBufSize', 'GetInstDirError', 'PageCallbacks',
- 'SectionIn', 'SetCompress', 'SetCompressionLevel', 'SetCompressorDictSize',
- 'SetDatablockOptimize', 'SetDateSave', 'SetOverwrite', 'SetPluginUnload'
- ),
- 4 => array(
- 'Abort', 'BringToFront', 'Call', 'CallInstDLL', 'ClearErrors', 'CopyFiles','CreateDirectory',
- 'CreateFont', 'CreateShortCut', 'Delete', 'DeleteINISec', 'DeleteINIStr', 'DeleteRegKey',
- 'DeleteRegValue', 'DetailPrint', 'EnableWindow', 'EnumRegKey', 'EnumRegValue', 'Exch', 'Exec',
- 'ExecShell', 'ExecWait', 'ExpandEnvStrings', 'File', 'FileClose', 'FileOpen', 'FileRead',
- 'FileReadByte', 'FileSeek', 'FileWrite', 'FileWriteByte', 'FindClose', 'FindFirst', 'FindNext',
- 'FindWindow', 'FlushINI', 'GetCurInstType', 'GetCurrentAddress', 'GetDlgItem', 'GetDLLVersion',
- 'GetDLLVersionLocal', 'GetErrorLevel', 'GetFileTime', 'GetFileTimeLocal', 'GetFullPathName',
- 'GetFunctionAddress', 'GetLabelAddress', 'GetTempFileName', 'GetWindowText', 'Goto', 'HideWindow',
- 'IfAbort', 'IfErrors', 'IfFileExists', 'IfRebootFlag', 'IfSilent', 'InitPluginsDir', 'InstTypeGetText',
- 'InstTypeSetText', 'IntCmp', 'IntCmpU', 'IntFmt', 'IntOp', 'IsWindow', 'LockWindow', 'LogSet', 'LogText',
- 'MessageBox', 'Nop', 'Pop', 'Push', 'Quit', 'ReadEnvStr', 'ReadIniStr', 'ReadRegDWORD', 'ReadRegStr',
- 'Reboot', 'RegDLL', 'Rename', 'ReserveFile', 'Return', 'RMDir', 'SearchPath', 'SectionGetFlags',
- 'SectionGetInstTypes', 'SectionGetSize', 'SectionGetText', 'SectionSetFlags', 'SectionSetInstTypes',
- 'SectionSetSize', 'SectionSetText', 'SendMessage', 'SetAutoClose', 'SetBrandingImage', 'SetCtlColors',
- 'SetCurInstType', 'SetDetailsPrint', 'SetDetailsView', 'SetErrorLevel', 'SetErrors', 'SetFileAttributes',
- 'SetOutPath', 'SetRebootFlag', 'SetShellVarContext', 'SetSilent', 'ShowWindow', 'Sleep', 'StrCmp',
- 'StrCpy', 'StrLen', 'UnRegDLL', 'WriteINIStr', 'WriteRegBin', 'WriteRegDWORD', 'WriteRegExpandStr',
- 'WriteRegStr', 'WriteUninstaller'
- ),
- 5 => array(
- 'all', 'alwaysoff', 'ARCHIVE', 'auto', 'both', 'bzip2', 'checkbox', 'components', 'current',
- 'custom', 'directory', 'false', 'FILE_ATTRIBUTE_ARCHIVE', 'FILE_ATTRIBUTE_HIDDEN', 'FILE_ATTRIBUTE_NORMAL',
- 'FILE_ATTRIBUTE_OFFLINE', 'FILE_ATTRIBUTE_READONLY', 'FILE_ATTRIBUTE_SYSTEM,TEMPORARY',
- 'FILE_ATTRIBUTE_TEMPORARY', 'force', 'HIDDEN', 'hide', 'HKCC', 'HKCR', 'HKCU', 'HKDD', 'HKEY_CLASSES_ROOT',
- 'HKEY_CURRENT_CONFIG', 'HKEY_CURRENT_USER', 'HKEY_DYN_DATA', 'HKEY_LOCAL_MACHINE', 'HKEY_PERFORMANCE_DATA',
- 'HKEY_USERS', 'HKLM', 'HKPD', 'HKU', 'IDABORT', 'IDCANCEL', 'IDIGNORE', 'IDNO', 'IDOK', 'IDRETRY', 'IDYES',
- 'ifdiff', 'ifnewer', 'instfiles', 'lastused', 'leave', 'license', 'listonly', 'lzma', 'manual',
- 'MB_ABORTRETRYIGNORE', 'MB_DEFBUTTON1', 'MB_DEFBUTTON2', 'MB_DEFBUTTON3', 'MB_DEFBUTTON4',
- 'MB_ICONEXCLAMATION', 'MB_ICONINFORMATION', 'MB_ICONQUESTION', 'MB_ICONSTOP', 'MB_OK', 'MB_OKCANCEL',
- 'MB_RETRYCANCEL', 'MB_RIGHT', 'MB_SETFOREGROUND', 'MB_TOPMOST', 'MB_YESNO', 'MB_YESNOCANCEL', 'nevershow',
- 'none', 'normal', 'off', 'OFFLINE', 'on', 'radiobuttons', 'READONLY', 'RO', 'SHCTX', 'SHELL_CONTEXT', 'show',
- 'silent', 'silentlog', 'SW_HIDE', 'SW_SHOWMAXIMIZED', 'SW_SHOWMINIMIZED', 'SW_SHOWNORMAL', 'SYSTEM',
- 'textonly', 'true', 'try', 'uninstConfirm', 'zlib'
- ),
- 6 => array(
- '/a', '/components', '/COMPONENTSONLYONCUSTOM', '/CUSTOMSTRING', '/e', '/FILESONLY', '/FINAL', '/gray', '/GLOBAL',
- '/ifempty', '/IMGID', '/ITALIC', '/lang', '/NOCUSTOM', '/nonfatal', '/NOUNLOAD', '/oname', '/r', '/REBOOTOK',
- '/RESIZETOFIT', '/SOLID', '/SD', '/SHORT', '/silent', '/SOLID', '/STRIKE', '/TIMEOUT', '/TRIMCENTER', '/TRIMLEFT',
- '/TRIMRIGHT', '/UNDERLINE', '/windows', '/x'
- ),
- 7 => array(
- '.onGUIEnd', '.onGUIInit', '.onInit', '.onInstFailed', '.onInstSuccess', '.onMouseOverSection',
- '.onRebootFailed', '.onSelChange', '.onUserAbort', '.onVerifyInstDir', 'un.onGUIEnd', 'un.onGUIInit',
- 'un.onInit', 'un.onRebootFailed', 'un.onUninstFailed', 'un.onUninstSuccess', 'un.onUserAbort'
- ),
- 8 => array(
- 'MUI.nsh', '"${NSISDIR}\Contrib\Modern UI\System.nsh"', 'MUI_SYSVERSION', 'MUI_ICON', 'MUI_UNICON',
- 'MUI_HEADERIMAGE', 'MUI_HEADERIMAGE_BITMAP', 'MUI_HEADERIMAGE_BITMAP_NOSTRETCH', 'MUI_HEADERIMAGE_BITMAP_RTL',
- 'MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_UNBITMAP', 'MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH',
- 'MUI_HEADERIMAGE_UNBITMAP_RTL', 'MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_RIGHT', 'MUI_BGCOLOR',
- 'MUI_UI', 'MUI_UI_HEADERIMAGE', 'MUI_UI_HEADERIMAGE_RIGHT', 'MUI_UI_COMPONENTSPAGE_SMALLDESC',
- 'MUI_UI_COMPONENTSPAGE_NODESC', 'MUI_WELCOMEFINISHPAGE_BITMAP', 'MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
- 'MUI_WELCOMEFINISHPAGE_INI', 'MUI_UNWELCOMEFINISHPAGE_BITMAP', 'MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
- 'MUI_UNWELCOMEFINISHPAGE_INI', 'MUI_LICENSEPAGE_BGCOLOR', 'MUI_COMPONENTSPAGE_CHECKBITMAP',
- 'MUI_COMPONENTSPAGE_SMALLDESC', 'MUI_COMPONENTSPAGE_NODESC', 'MUI_INSTFILESPAGE_COLORS',
- 'MUI_INSTFILESPAGE_PROGRESSBAR', 'MUI_FINISHPAGE_NOAUTOCLOSE', 'MUI_UNFINISHPAGE_NOAUTOCLOSE',
- 'MUI_ABORTWARNING', 'MUI_ABORTWARNING_TEXT', 'MUI_UNABORTWARNING', 'MUI_UNABORTWARNING_TEXT',
- 'MUI_PAGE_WELCOME', 'MUI_PAGE_LICENSE', 'MUI_PAGE_COMPONENTS', 'MUI_PAGE_DIRECTORY',
- 'MUI_PAGE_STARTMENU', 'MUI_PAGE_INSTFILES', 'MUI_PAGE_FINISH', 'MUI_UNPAGE_WELCOME',
- 'MUI_UNPAGE_CONFIRM', 'MUI_UNPAGE_LICENSE', 'MUI_UNPAGE_COMPONENTS', 'MUI_UNPAGE_DIRECTORY',
- 'MUI_UNPAGE_INSTFILES', 'MUI_UNPAGE_FINISH', 'MUI_PAGE_HEADER_TEXT', 'MUI_PAGE_HEADER_SUBTEXT',
- 'MUI_WELCOMEPAGE_TITLE', 'MUI_WELCOMEPAGE_TITLE_3LINES', 'MUI_WELCOMEPAGE_TEXT',
- 'MUI_LICENSEPAGE_TEXT_TOP', 'MUI_LICENSEPAGE_TEXT_BOTTOM', 'MUI_LICENSEPAGE_BUTTON',
- 'MUI_LICENSEPAGE_CHECKBOX', 'MUI_LICENSEPAGE_CHECKBOX_TEXT', 'MUI_LICENSEPAGE_RADIOBUTTONS',
- 'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT', 'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE',
- 'MUI_COMPONENTSPAGE_TEXT_TOP', 'MUI_COMPONENTSPAGE_TEXT_COMPLIST', 'MUI_COMPONENTSPAGE_TEXT_INSTTYPE',
- 'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE', 'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO',
- 'MUI_DIRECTORYPAGE_TEXT_TOP', 'MUI_DIRECTORYPAGE_TEXT_DESTINATION', 'MUI_DIRECTORYPAGE_VARIABLE',
- 'MUI_DIRECTORYPAGE_VERIFYONLEAVE', 'MUI_STARTMENU_WRITE_BEGIN', 'MUI_STARTMENU_WRITE_END',
- 'MUI_STARTMENUPAGE_TEXT_TOP', 'MUI_STARTMENUPAGE_TEXT_CHECKBOX', 'MUI_STARTMENUPAGE_DEFAULTFOLDER',
- 'MUI_STARTMENUPAGE_NODISABLE', 'MUI_STARTMENUPAGE_REGISTRY_ROOT', 'MUI_STARTMENUPAGE_REGISTRY_KEY',
- 'MUI_STARTMENUPAGE_REGISTRY_VALUENAME', 'MUI_INSTFILESPAGE_FINISHHEADER_TEXT',
- 'MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT', 'MUI_INSTFILESPAGE_ABORTHEADER_TEXT',
- 'MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT', 'MUI_FINISHPAGE_TITLE', 'MUI_FINISHPAGE_TITLE_3LINES',
- 'MUI_FINISHPAGE_TEXT', 'MUI_FINISHPAGE_TEXT_LARGE', 'MUI_FINISHPAGE_BUTTON',
- 'MUI_FINISHPAGE_TEXT_REBOOT', 'MUI_FINISHPAGE_TEXT_REBOOTNOW', 'MUI_FINISHPAGE_TEXT_REBOOTLATER',
- 'MUI_FINISHPAGE_RUN', 'MUI_FINISHPAGE_RUN_TEXT', 'MUI_FINISHPAGE_RUN_PARAMETERS',
- 'MUI_FINISHPAGE_RUN_NOTCHECKED', 'MUI_FINISHPAGE_RUN_FUNCTION', 'MUI_FINISHPAGE_SHOWREADME',
- 'MUI_FINISHPAGE_SHOWREADME_TEXT', 'MUI_FINISHPAGE_SHOWREADME_NOTCHECKED',
- 'MUI_FINISHPAGE_SHOWREADME_FUNCTION', 'MUI_FINISHPAGE_LINK', 'MUI_FINISHPAGE_LINK_LOCATION',
- 'MUI_FINISHPAGE_LINK_COLOR', 'MUI_FINISHPAGE_NOREBOOTSUPPORT', 'MUI_UNCONFIRMPAGE_TEXT_TOP',
- 'MUI_UNCONFIRMPAGE_TEXT_LOCATION', 'MUI_LANGUAGE', 'MUI_LANGDLL_DISPLAY',
- 'MUI_LANGDLL_REGISTRY_ROOT', 'MUI_LANGDLL_REGISTRY_KEY', 'MUI_LANGDLL_REGISTRY_VALUENAME',
- 'MUI_LANGDLL_WINDOWTITLE', 'MUI_LANGDLL_INFO', 'MUI_LANGDLL_ALWAYSSHOW',
- 'MUI_RESERVEFILE_INSTALLOPTIONS', 'MUI_RESERVEFILE_LANGDLL', 'MUI_FUNCTION_DESCRIPTION_BEGIN',
- 'MUI_DESCRIPTION_TEXT', 'MUI_FUNCTION_DESCRIPTION_END', 'MUI_INSTALLOPTIONS_EXTRACT',
- 'MUI_INSTALLOPTIONS_EXTRACT_AS', 'MUI_HEADER_TEXT', 'MUI_INSTALLOPTIONS_DISPLAY',
- 'MUI_INSTALLOPTIONS_INITDIALOG', 'MUI_INSTALLOPTIONS_SHOW',
- 'MUI_INSTALLOPTIONS_DISPLAY_RETURN', 'MUI_INSTALLOPTIONS_SHOW_RETURN',
- 'MUI_INSTALLOPTIONS_READ', 'MUI_INSTALLOPTIONS_WRITE',
- 'MUI_CUSTOMFUNCTION_GUIINIT', 'MUI_CUSTOMFUNCTION_GUIINIT',
- 'MUI_CUSTOMFUNCTION_UNGUIINIT', 'MUI_CUSTOMFUNCTION_ABORT', 'MUI_CUSTOMFUNCTION_UNABORT',
- 'MUI_PAGE_CUSTOMFUNCTION_PRE', 'MUI_PAGE_CUSTOMFUNCTION_SHOW', 'MUI_PAGE_CUSTOMFUNCTION_LEAVE',
- 'MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT'
- ),
- 9 => array(
- 'LogicLib.nsh', '${LOGICLIB}', 'LOGICLIB_STRCMP', 'LOGICLIB_INT64CMP', 'LOGICLIB_SECTIONCMP', '${If}', '${Unless}',
- '${ElseIf}', '${ElseUnless}', '${Else}', '${EndIf}', '${EndUnless}', '${AndIf}', '${AndUnless}',
- '${OrIf}', '${OrUnless}', '${IfThen}', '${IfCmd}', '${Select}', '${Case2}', '${Case3}',
- '${Case4}', '${Case5}', '${CaseElse}', '${Default}', '${EndSelect}', '${Switch}',
- '${Case}', '${EndSwitch}', '${Do}', '${DoWhile}', '${UntilWhile}', '${Continue}', '${Break}',
- '${Loop}', '${LoopWhile}', '${LoopUntil}', '${While}', '${ExitWhile}', '${EndWhile}', '${For}',
- '${ForEach}', '${ExitFor}', '${Next}', '${Abort}', '${Errors}', '${RebootFlag}', '${Silent}',
- '${FileExists}', '${Cmd}', '${SectionIsSelected}', '${SectionIsSectionGroup}',
- '${SectionIsSectionGroupEnd}', '${SectionIsBold}', '${SectionIsReadOnly}',
- '${SectionIsExpanded}', '${SectionIsPartiallySelected}'
- ),
- 10 => array(
- 'StrFunc.nsh', '${STRFUNC}', '${StrCase}', '${StrClb}', '${StrIOToNSIS}', '${StrLoc}', '${StrNSISToIO}', '${StrRep}',
- '${StrSort}', '${StrStr}', '${StrStrAdv}', '${StrTok}', '${StrTrimNewLines}'
- ),
- 11 => array(
- 'UpgradeDLL.nsh', 'UPGRADEDLL_INCLUDED', 'UpgradeDLL'
- ),
- 12 => array(
- 'Sections.nsh', 'SECTIONS_INCLUDED', '${SF_SELECTED}', '${SF_SECGRP}', '${SF_SUBSEC}', '${SF_SECGRPEND}',
- '${SF_SUBSECEND}', '${SF_BOLD}', '${SF_RO}', '${SF_EXPAND}', '${SF_PSELECTED}', '${SF_TOGGLED}',
- '${SF_NAMECHG}', '${SECTION_OFF}', 'SelectSection', 'UnselectSection', 'ReverseSection',
- 'StartRadioButtons', 'RadioButton', 'EndRadioButtons', '${INSTTYPE_1}', '${INSTTYPE_1}', '${INSTTYPE_2}',
- '${INSTTYPE_3}', '${INSTTYPE_4}', '${INSTTYPE_5}', '${INSTTYPE_6}', '${INSTTYPE_7}', '${INSTTYPE_8}',
- '${INSTTYPE_9}', '${INSTTYPE_10}', '${INSTTYPE_11}', '${INSTTYPE_12}', '${INSTTYPE_13}', '${INSTTYPE_14}',
- '${INSTTYPE_15}', '${INSTTYPE_16}', '${INSTTYPE_17}', '${INSTTYPE_18}', '${INSTTYPE_19}', '${INSTTYPE_20}',
- '${INSTTYPE_21}', '${INSTTYPE_22}', '${INSTTYPE_23}', '${INSTTYPE_24}', '${INSTTYPE_25}', '${INSTTYPE_26}',
- '${INSTTYPE_27}', '${INSTTYPE_28}', '${INSTTYPE_29}', '${INSTTYPE_30}', '${INSTTYPE_31}', '${INSTTYPE_32}',
- 'SetSectionInInstType', 'ClearSectionInInstType', 'SetSectionFlag', 'ClearSectionFlag', 'SectionFlagIsSet'
- ),
- 13 => array(
- 'Colors.nsh', 'WHITE', 'BLACK', 'YELLOW', 'RED', 'GREEN', 'BLUE', 'MAGENTA', 'CYAN', 'rgb2hex'
- ),
- 14 => array(
- 'FileFunc.nsh', '${Locate}', '${GetSize}', '${DriveSpace}', '${GetDrives}', '${GetTime}', '${GetFileAttributes}', '${GetFileVersion}', '${GetExeName}', '${GetExePath}', '${GetParameters}', '${GetOptions}', '${GetRoot}', '${GetParent}', '${GetFileName}', '${GetBaseName}', '${GetFileExt}', '${BannerTrimPath}', '${DirState}', '${RefreshShellIcons}'
- ),
- 15 => array(
- 'TextFunc.nsh', '${LineFind}', '${LineRead}', '${FileReadFromEnd}', '${LineSum}', '${FileJoin}', '${TextCompare}', '${ConfigRead}', '${ConfigWrite}', '${FileRecode}', '${TrimNewLines}'
- ),
- 16 => array(
- 'WordFunc.nsh', '${WordFind}', '${WordFind2X}', '${WordFind3X}', '${WordReplace}', '${WordAdd}', '${WordInsert}', '${StrFilter}', '${VersionCompare}', '${VersionConvert}'
- )
- ),
- 'SYMBOLS' => array(
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
- 6 => false,
- 7 => false,
- 8 => false,
- 9 => false,
- 10 => false,
- 11 => false,
- 12 => false,
- 13 => false,
- 14 => false,
- 15 => false,
- 16 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000066; font-weight:bold;',
- 2 => 'color: #000066;',
- 3 => 'color: #003366;',
- 4 => 'color: #000099;',
- 5 => 'color: #ff6600;',
- 6 => 'color: #ff6600;',
- 7 => 'color: #006600;',
- 8 => 'color: #006600;',
- 9 => 'color: #006600;',
- 10 => 'color: #006600;',
- 11 => 'color: #006600;',
- 12 => 'color: #006600;',
- 13 => 'color: #006600;',
- 14 => 'color: #006600;',
- 15 => 'color: #006600;',
- 16 => 'color: #006600;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #666666; font-style: italic;',
- 2 => 'color: #666666; font-style: italic;',
- 'MULTI' => 'color: #666666; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #660066; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => ''
- ),
- 'STRINGS' => array(
- 0 => 'color: #660066;'
- ),
- 'NUMBERS' => array(
- 0 => ''
- ),
- 'METHODS' => array(
- 0 => ''
- ),
- 'SYMBOLS' => array(
- 0 => ''
- ),
- 'REGEXPS' => array(
- 0 => 'color: #660000;',
- 1 => 'color: #660000;',
- 2 => 'color: #660000;',
- 3 => 'color: #660000;',
- 4 => 'color: #660000;',
- 5 => 'color: #660000;',
- 6 => 'color: #660000;',
- 7 => 'color: #000099;',
- 8 => 'color: #003399;'
- ),
- 'SCRIPT' => array(
- 0 => ''
- )
- ),
- 'URLS' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => '',
- 5 => '',
- 6 => '',
- 7 => '',
- 8 => '',
- 9 => '',
- 10 => '',
- 11 => '',
- 12 => '',
- 13 => '',
- 14 => '',
- 15 => '',
- 16 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '\$\$',
- 1 => '\$\\r',
- 2 => '\$\\n',
- 3 => '\$\\t',
- 4 => '\$[a-zA-Z0-9_]+',
- 5 => '\$\{.{1,256}\}',
- 6 => '\$\\\(.{1,256}\\\)',
- 7 => array(
- GESHI_SEARCH => '([^:/\\\*\?\"\<\>\|\s]*?)(::)([^:/\\\*\?\"\<\>\|\s]*?)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '\\2\\3'
- ),
- 8 => array(
- GESHI_SEARCH => '([^:/\\\*\?\"\<\>\|\s]*?)(::)([^:/\\\*\?\"\<\>\|]*?\s)',
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1\\2',
- GESHI_AFTER => ''
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * nsis.php
+ * --------
+ * Author: deguix (cevo_deguix at yahoo.com.br), Tux (http://tux.a4.cz/)
+ * Copyright: (c) 2005 deguix, 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/12/03
+ *
+ * Nullsoft Scriptable Install System language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/03 (2.0.2)
+ * - Updated to NSIS 2.11.
+ * 2005/06/17 (2.0.1)
+ * - Updated to NSIS 2.07b0.
+ * 2005/04/05 (2.0.0)
+ * - Updated to NSIS 2.06.
+ * 2004/11/27 (1.0.2)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ * - Added support for URLs
+ * 2004/08/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'NSIS',
+ 'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'",'"','`'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '!appendfile', '!addIncludeDir', '!addplugindir', '!cd', '!define', '!delfile', '!echo', '!else',
+ '!endif', '!error', '!execute', '!ifdef', '!ifmacrodef', '!ifmacrondef', '!ifndef', '!include',
+ '!insertmacro', '!macro', '!macroend', '!packhdr', '!tempfile', '!system', '!undef', '!verbose',
+ '!warning'
+ ),
+ 2 => array(
+ 'AddBrandingImage', 'AllowRootDirInstall', 'AutoCloseWindow', 'BGFont',
+ 'BGGradient', 'BrandingText', 'Caption', 'ChangeUI', 'CheckBitmap', 'CompletedText', 'ComponentText',
+ 'CRCCheck', 'DetailsButtonText', 'DirShow', 'DirText', 'DirVar', 'DirVerify', 'FileErrorText',
+ 'Function', 'FunctionEnd', 'Icon', 'InstallButtonText', 'InstallColors', 'InstallDir',
+ 'InstallDirRegKey', 'InstProgressFlags', 'InstType', 'LangString', 'LangStringUP', 'LicenseBkColor',
+ 'LicenseData', 'LicenseForceSelection', 'LicenseLangString', 'LicenseText', 'LoadLanguageFile',
+ 'MiscButtonText', 'Name', 'OutFile', 'Page', 'PageEx', 'PageExEnd', 'Section',
+ 'SectionEnd', 'SectionGroup', 'SectionGroupEnd', 'SetCompressor', 'SetFont', 'ShowInstDetails',
+ 'ShowUninstDetails', 'SilentInstall', 'SilentUnInstall', 'SpaceTexts', 'SubCaption', 'SubSection',
+ 'SubSectionEnd', 'UninstallButtonText', 'UninstallCaption', 'UninstallIcon', 'UninstallSubCaption',
+ 'UninstallText', 'UninstPage', 'Var', 'VIAddVersionKey', 'VIProductVersion', 'WindowIcon', 'XPStyle'
+ ),
+ 3 => array(
+ 'AddSize', 'AllowSkipFiles', 'AutoCloseWindow', 'FileBufSize', 'GetInstDirError', 'PageCallbacks',
+ 'SectionIn', 'SetCompress', 'SetCompressionLevel', 'SetCompressorDictSize',
+ 'SetDatablockOptimize', 'SetDateSave', 'SetOverwrite', 'SetPluginUnload'
+ ),
+ 4 => array(
+ 'Abort', 'BringToFront', 'Call', 'CallInstDLL', 'ClearErrors', 'CopyFiles','CreateDirectory',
+ 'CreateFont', 'CreateShortCut', 'Delete', 'DeleteINISec', 'DeleteINIStr', 'DeleteRegKey',
+ 'DeleteRegValue', 'DetailPrint', 'EnableWindow', 'EnumRegKey', 'EnumRegValue', 'Exch', 'Exec',
+ 'ExecShell', 'ExecWait', 'ExpandEnvStrings', 'File', 'FileClose', 'FileOpen', 'FileRead',
+ 'FileReadByte', 'FileSeek', 'FileWrite', 'FileWriteByte', 'FindClose', 'FindFirst', 'FindNext',
+ 'FindWindow', 'FlushINI', 'GetCurInstType', 'GetCurrentAddress', 'GetDlgItem', 'GetDLLVersion',
+ 'GetDLLVersionLocal', 'GetErrorLevel', 'GetFileTime', 'GetFileTimeLocal', 'GetFullPathName',
+ 'GetFunctionAddress', 'GetLabelAddress', 'GetTempFileName', 'GetWindowText', 'Goto', 'HideWindow',
+ 'IfAbort', 'IfErrors', 'IfFileExists', 'IfRebootFlag', 'IfSilent', 'InitPluginsDir', 'InstTypeGetText',
+ 'InstTypeSetText', 'IntCmp', 'IntCmpU', 'IntFmt', 'IntOp', 'IsWindow', 'LockWindow', 'LogSet', 'LogText',
+ 'MessageBox', 'Nop', 'Pop', 'Push', 'Quit', 'ReadEnvStr', 'ReadIniStr', 'ReadRegDWORD', 'ReadRegStr',
+ 'Reboot', 'RegDLL', 'Rename', 'ReserveFile', 'Return', 'RMDir', 'SearchPath', 'SectionGetFlags',
+ 'SectionGetInstTypes', 'SectionGetSize', 'SectionGetText', 'SectionSetFlags', 'SectionSetInstTypes',
+ 'SectionSetSize', 'SectionSetText', 'SendMessage', 'SetAutoClose', 'SetBrandingImage', 'SetCtlColors',
+ 'SetCurInstType', 'SetDetailsPrint', 'SetDetailsView', 'SetErrorLevel', 'SetErrors', 'SetFileAttributes',
+ 'SetOutPath', 'SetRebootFlag', 'SetShellVarContext', 'SetSilent', 'ShowWindow', 'Sleep', 'StrCmp',
+ 'StrCpy', 'StrLen', 'UnRegDLL', 'WriteINIStr', 'WriteRegBin', 'WriteRegDWORD', 'WriteRegExpandStr',
+ 'WriteRegStr', 'WriteUninstaller'
+ ),
+ 5 => array(
+ 'all', 'alwaysoff', 'ARCHIVE', 'auto', 'both', 'bzip2', 'checkbox', 'components', 'current',
+ 'custom', 'directory', 'false', 'FILE_ATTRIBUTE_ARCHIVE', 'FILE_ATTRIBUTE_HIDDEN', 'FILE_ATTRIBUTE_NORMAL',
+ 'FILE_ATTRIBUTE_OFFLINE', 'FILE_ATTRIBUTE_READONLY', 'FILE_ATTRIBUTE_SYSTEM,TEMPORARY',
+ 'FILE_ATTRIBUTE_TEMPORARY', 'force', 'HIDDEN', 'hide', 'HKCC', 'HKCR', 'HKCU', 'HKDD', 'HKEY_CLASSES_ROOT',
+ 'HKEY_CURRENT_CONFIG', 'HKEY_CURRENT_USER', 'HKEY_DYN_DATA', 'HKEY_LOCAL_MACHINE', 'HKEY_PERFORMANCE_DATA',
+ 'HKEY_USERS', 'HKLM', 'HKPD', 'HKU', 'IDABORT', 'IDCANCEL', 'IDIGNORE', 'IDNO', 'IDOK', 'IDRETRY', 'IDYES',
+ 'ifdiff', 'ifnewer', 'instfiles', 'lastused', 'leave', 'license', 'listonly', 'lzma', 'manual',
+ 'MB_ABORTRETRYIGNORE', 'MB_DEFBUTTON1', 'MB_DEFBUTTON2', 'MB_DEFBUTTON3', 'MB_DEFBUTTON4',
+ 'MB_ICONEXCLAMATION', 'MB_ICONINFORMATION', 'MB_ICONQUESTION', 'MB_ICONSTOP', 'MB_OK', 'MB_OKCANCEL',
+ 'MB_RETRYCANCEL', 'MB_RIGHT', 'MB_SETFOREGROUND', 'MB_TOPMOST', 'MB_YESNO', 'MB_YESNOCANCEL', 'nevershow',
+ 'none', 'normal', 'off', 'OFFLINE', 'on', 'radiobuttons', 'READONLY', 'RO', 'SHCTX', 'SHELL_CONTEXT', 'show',
+ 'silent', 'silentlog', 'SW_HIDE', 'SW_SHOWMAXIMIZED', 'SW_SHOWMINIMIZED', 'SW_SHOWNORMAL', 'SYSTEM',
+ 'textonly', 'true', 'try', 'uninstConfirm', 'zlib'
+ ),
+ 6 => array(
+ '/a', '/components', '/COMPONENTSONLYONCUSTOM', '/CUSTOMSTRING', '/e', '/FILESONLY', '/FINAL', '/gray', '/GLOBAL',
+ '/ifempty', '/IMGID', '/ITALIC', '/lang', '/NOCUSTOM', '/nonfatal', '/NOUNLOAD', '/oname', '/r', '/REBOOTOK',
+ '/RESIZETOFIT', '/SOLID', '/SD', '/SHORT', '/silent', '/SOLID', '/STRIKE', '/TIMEOUT', '/TRIMCENTER', '/TRIMLEFT',
+ '/TRIMRIGHT', '/UNDERLINE', '/windows', '/x'
+ ),
+ 7 => array(
+ '.onGUIEnd', '.onGUIInit', '.onInit', '.onInstFailed', '.onInstSuccess', '.onMouseOverSection',
+ '.onRebootFailed', '.onSelChange', '.onUserAbort', '.onVerifyInstDir', 'un.onGUIEnd', 'un.onGUIInit',
+ 'un.onInit', 'un.onRebootFailed', 'un.onUninstFailed', 'un.onUninstSuccess', 'un.onUserAbort'
+ ),
+ 8 => array(
+ 'MUI.nsh', '"${NSISDIR}\Contrib\Modern UI\System.nsh"', 'MUI_SYSVERSION', 'MUI_ICON', 'MUI_UNICON',
+ 'MUI_HEADERIMAGE', 'MUI_HEADERIMAGE_BITMAP', 'MUI_HEADERIMAGE_BITMAP_NOSTRETCH', 'MUI_HEADERIMAGE_BITMAP_RTL',
+ 'MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_UNBITMAP', 'MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH',
+ 'MUI_HEADERIMAGE_UNBITMAP_RTL', 'MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_RIGHT', 'MUI_BGCOLOR',
+ 'MUI_UI', 'MUI_UI_HEADERIMAGE', 'MUI_UI_HEADERIMAGE_RIGHT', 'MUI_UI_COMPONENTSPAGE_SMALLDESC',
+ 'MUI_UI_COMPONENTSPAGE_NODESC', 'MUI_WELCOMEFINISHPAGE_BITMAP', 'MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
+ 'MUI_WELCOMEFINISHPAGE_INI', 'MUI_UNWELCOMEFINISHPAGE_BITMAP', 'MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
+ 'MUI_UNWELCOMEFINISHPAGE_INI', 'MUI_LICENSEPAGE_BGCOLOR', 'MUI_COMPONENTSPAGE_CHECKBITMAP',
+ 'MUI_COMPONENTSPAGE_SMALLDESC', 'MUI_COMPONENTSPAGE_NODESC', 'MUI_INSTFILESPAGE_COLORS',
+ 'MUI_INSTFILESPAGE_PROGRESSBAR', 'MUI_FINISHPAGE_NOAUTOCLOSE', 'MUI_UNFINISHPAGE_NOAUTOCLOSE',
+ 'MUI_ABORTWARNING', 'MUI_ABORTWARNING_TEXT', 'MUI_UNABORTWARNING', 'MUI_UNABORTWARNING_TEXT',
+ 'MUI_PAGE_WELCOME', 'MUI_PAGE_LICENSE', 'MUI_PAGE_COMPONENTS', 'MUI_PAGE_DIRECTORY',
+ 'MUI_PAGE_STARTMENU', 'MUI_PAGE_INSTFILES', 'MUI_PAGE_FINISH', 'MUI_UNPAGE_WELCOME',
+ 'MUI_UNPAGE_CONFIRM', 'MUI_UNPAGE_LICENSE', 'MUI_UNPAGE_COMPONENTS', 'MUI_UNPAGE_DIRECTORY',
+ 'MUI_UNPAGE_INSTFILES', 'MUI_UNPAGE_FINISH', 'MUI_PAGE_HEADER_TEXT', 'MUI_PAGE_HEADER_SUBTEXT',
+ 'MUI_WELCOMEPAGE_TITLE', 'MUI_WELCOMEPAGE_TITLE_3LINES', 'MUI_WELCOMEPAGE_TEXT',
+ 'MUI_LICENSEPAGE_TEXT_TOP', 'MUI_LICENSEPAGE_TEXT_BOTTOM', 'MUI_LICENSEPAGE_BUTTON',
+ 'MUI_LICENSEPAGE_CHECKBOX', 'MUI_LICENSEPAGE_CHECKBOX_TEXT', 'MUI_LICENSEPAGE_RADIOBUTTONS',
+ 'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT', 'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE',
+ 'MUI_COMPONENTSPAGE_TEXT_TOP', 'MUI_COMPONENTSPAGE_TEXT_COMPLIST', 'MUI_COMPONENTSPAGE_TEXT_INSTTYPE',
+ 'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE', 'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO',
+ 'MUI_DIRECTORYPAGE_TEXT_TOP', 'MUI_DIRECTORYPAGE_TEXT_DESTINATION', 'MUI_DIRECTORYPAGE_VARIABLE',
+ 'MUI_DIRECTORYPAGE_VERIFYONLEAVE', 'MUI_STARTMENU_WRITE_BEGIN', 'MUI_STARTMENU_WRITE_END',
+ 'MUI_STARTMENUPAGE_TEXT_TOP', 'MUI_STARTMENUPAGE_TEXT_CHECKBOX', 'MUI_STARTMENUPAGE_DEFAULTFOLDER',
+ 'MUI_STARTMENUPAGE_NODISABLE', 'MUI_STARTMENUPAGE_REGISTRY_ROOT', 'MUI_STARTMENUPAGE_REGISTRY_KEY',
+ 'MUI_STARTMENUPAGE_REGISTRY_VALUENAME', 'MUI_INSTFILESPAGE_FINISHHEADER_TEXT',
+ 'MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT', 'MUI_INSTFILESPAGE_ABORTHEADER_TEXT',
+ 'MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT', 'MUI_FINISHPAGE_TITLE', 'MUI_FINISHPAGE_TITLE_3LINES',
+ 'MUI_FINISHPAGE_TEXT', 'MUI_FINISHPAGE_TEXT_LARGE', 'MUI_FINISHPAGE_BUTTON',
+ 'MUI_FINISHPAGE_TEXT_REBOOT', 'MUI_FINISHPAGE_TEXT_REBOOTNOW', 'MUI_FINISHPAGE_TEXT_REBOOTLATER',
+ 'MUI_FINISHPAGE_RUN', 'MUI_FINISHPAGE_RUN_TEXT', 'MUI_FINISHPAGE_RUN_PARAMETERS',
+ 'MUI_FINISHPAGE_RUN_NOTCHECKED', 'MUI_FINISHPAGE_RUN_FUNCTION', 'MUI_FINISHPAGE_SHOWREADME',
+ 'MUI_FINISHPAGE_SHOWREADME_TEXT', 'MUI_FINISHPAGE_SHOWREADME_NOTCHECKED',
+ 'MUI_FINISHPAGE_SHOWREADME_FUNCTION', 'MUI_FINISHPAGE_LINK', 'MUI_FINISHPAGE_LINK_LOCATION',
+ 'MUI_FINISHPAGE_LINK_COLOR', 'MUI_FINISHPAGE_NOREBOOTSUPPORT', 'MUI_UNCONFIRMPAGE_TEXT_TOP',
+ 'MUI_UNCONFIRMPAGE_TEXT_LOCATION', 'MUI_LANGUAGE', 'MUI_LANGDLL_DISPLAY',
+ 'MUI_LANGDLL_REGISTRY_ROOT', 'MUI_LANGDLL_REGISTRY_KEY', 'MUI_LANGDLL_REGISTRY_VALUENAME',
+ 'MUI_LANGDLL_WINDOWTITLE', 'MUI_LANGDLL_INFO', 'MUI_LANGDLL_ALWAYSSHOW',
+ 'MUI_RESERVEFILE_INSTALLOPTIONS', 'MUI_RESERVEFILE_LANGDLL', 'MUI_FUNCTION_DESCRIPTION_BEGIN',
+ 'MUI_DESCRIPTION_TEXT', 'MUI_FUNCTION_DESCRIPTION_END', 'MUI_INSTALLOPTIONS_EXTRACT',
+ 'MUI_INSTALLOPTIONS_EXTRACT_AS', 'MUI_HEADER_TEXT', 'MUI_INSTALLOPTIONS_DISPLAY',
+ 'MUI_INSTALLOPTIONS_INITDIALOG', 'MUI_INSTALLOPTIONS_SHOW',
+ 'MUI_INSTALLOPTIONS_DISPLAY_RETURN', 'MUI_INSTALLOPTIONS_SHOW_RETURN',
+ 'MUI_INSTALLOPTIONS_READ', 'MUI_INSTALLOPTIONS_WRITE',
+ 'MUI_CUSTOMFUNCTION_GUIINIT', 'MUI_CUSTOMFUNCTION_GUIINIT',
+ 'MUI_CUSTOMFUNCTION_UNGUIINIT', 'MUI_CUSTOMFUNCTION_ABORT', 'MUI_CUSTOMFUNCTION_UNABORT',
+ 'MUI_PAGE_CUSTOMFUNCTION_PRE', 'MUI_PAGE_CUSTOMFUNCTION_SHOW', 'MUI_PAGE_CUSTOMFUNCTION_LEAVE',
+ 'MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT'
+ ),
+ 9 => array(
+ 'LogicLib.nsh', '${LOGICLIB}', 'LOGICLIB_STRCMP', 'LOGICLIB_INT64CMP', 'LOGICLIB_SECTIONCMP', '${If}', '${Unless}',
+ '${ElseIf}', '${ElseUnless}', '${Else}', '${EndIf}', '${EndUnless}', '${AndIf}', '${AndUnless}',
+ '${OrIf}', '${OrUnless}', '${IfThen}', '${IfCmd}', '${Select}', '${Case2}', '${Case3}',
+ '${Case4}', '${Case5}', '${CaseElse}', '${Default}', '${EndSelect}', '${Switch}',
+ '${Case}', '${EndSwitch}', '${Do}', '${DoWhile}', '${UntilWhile}', '${Continue}', '${Break}',
+ '${Loop}', '${LoopWhile}', '${LoopUntil}', '${While}', '${ExitWhile}', '${EndWhile}', '${For}',
+ '${ForEach}', '${ExitFor}', '${Next}', '${Abort}', '${Errors}', '${RebootFlag}', '${Silent}',
+ '${FileExists}', '${Cmd}', '${SectionIsSelected}', '${SectionIsSectionGroup}',
+ '${SectionIsSectionGroupEnd}', '${SectionIsBold}', '${SectionIsReadOnly}',
+ '${SectionIsExpanded}', '${SectionIsPartiallySelected}'
+ ),
+ 10 => array(
+ 'StrFunc.nsh', '${STRFUNC}', '${StrCase}', '${StrClb}', '${StrIOToNSIS}', '${StrLoc}', '${StrNSISToIO}', '${StrRep}',
+ '${StrSort}', '${StrStr}', '${StrStrAdv}', '${StrTok}', '${StrTrimNewLines}'
+ ),
+ 11 => array(
+ 'UpgradeDLL.nsh', 'UPGRADEDLL_INCLUDED', 'UpgradeDLL'
+ ),
+ 12 => array(
+ 'Sections.nsh', 'SECTIONS_INCLUDED', '${SF_SELECTED}', '${SF_SECGRP}', '${SF_SUBSEC}', '${SF_SECGRPEND}',
+ '${SF_SUBSECEND}', '${SF_BOLD}', '${SF_RO}', '${SF_EXPAND}', '${SF_PSELECTED}', '${SF_TOGGLED}',
+ '${SF_NAMECHG}', '${SECTION_OFF}', 'SelectSection', 'UnselectSection', 'ReverseSection',
+ 'StartRadioButtons', 'RadioButton', 'EndRadioButtons', '${INSTTYPE_1}', '${INSTTYPE_1}', '${INSTTYPE_2}',
+ '${INSTTYPE_3}', '${INSTTYPE_4}', '${INSTTYPE_5}', '${INSTTYPE_6}', '${INSTTYPE_7}', '${INSTTYPE_8}',
+ '${INSTTYPE_9}', '${INSTTYPE_10}', '${INSTTYPE_11}', '${INSTTYPE_12}', '${INSTTYPE_13}', '${INSTTYPE_14}',
+ '${INSTTYPE_15}', '${INSTTYPE_16}', '${INSTTYPE_17}', '${INSTTYPE_18}', '${INSTTYPE_19}', '${INSTTYPE_20}',
+ '${INSTTYPE_21}', '${INSTTYPE_22}', '${INSTTYPE_23}', '${INSTTYPE_24}', '${INSTTYPE_25}', '${INSTTYPE_26}',
+ '${INSTTYPE_27}', '${INSTTYPE_28}', '${INSTTYPE_29}', '${INSTTYPE_30}', '${INSTTYPE_31}', '${INSTTYPE_32}',
+ 'SetSectionInInstType', 'ClearSectionInInstType', 'SetSectionFlag', 'ClearSectionFlag', 'SectionFlagIsSet'
+ ),
+ 13 => array(
+ 'Colors.nsh', 'WHITE', 'BLACK', 'YELLOW', 'RED', 'GREEN', 'BLUE', 'MAGENTA', 'CYAN', 'rgb2hex'
+ ),
+ 14 => array(
+ 'FileFunc.nsh', '${Locate}', '${GetSize}', '${DriveSpace}', '${GetDrives}', '${GetTime}', '${GetFileAttributes}', '${GetFileVersion}', '${GetExeName}', '${GetExePath}', '${GetParameters}', '${GetOptions}', '${GetRoot}', '${GetParent}', '${GetFileName}', '${GetBaseName}', '${GetFileExt}', '${BannerTrimPath}', '${DirState}', '${RefreshShellIcons}'
+ ),
+ 15 => array(
+ 'TextFunc.nsh', '${LineFind}', '${LineRead}', '${FileReadFromEnd}', '${LineSum}', '${FileJoin}', '${TextCompare}', '${ConfigRead}', '${ConfigWrite}', '${FileRecode}', '${TrimNewLines}'
+ ),
+ 16 => array(
+ 'WordFunc.nsh', '${WordFind}', '${WordFind2X}', '${WordFind3X}', '${WordReplace}', '${WordAdd}', '${WordInsert}', '${StrFilter}', '${VersionCompare}', '${VersionConvert}'
+ )
+ ),
+ 'SYMBOLS' => array(
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000066; font-weight:bold;',
+ 2 => 'color: #000066;',
+ 3 => 'color: #003366;',
+ 4 => 'color: #000099;',
+ 5 => 'color: #ff6600;',
+ 6 => 'color: #ff6600;',
+ 7 => 'color: #006600;',
+ 8 => 'color: #006600;',
+ 9 => 'color: #006600;',
+ 10 => 'color: #006600;',
+ 11 => 'color: #006600;',
+ 12 => 'color: #006600;',
+ 13 => 'color: #006600;',
+ 14 => 'color: #006600;',
+ 15 => 'color: #006600;',
+ 16 => 'color: #006600;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #666666; font-style: italic;',
+ 2 => 'color: #666666; font-style: italic;',
+ 'MULTI' => 'color: #666666; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #660066; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => ''
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #660066;'
+ ),
+ 'NUMBERS' => array(
+ 0 => ''
+ ),
+ 'METHODS' => array(
+ 0 => ''
+ ),
+ 'SYMBOLS' => array(
+ 0 => ''
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #660000;',
+ 1 => 'color: #660000;',
+ 2 => 'color: #660000;',
+ 3 => 'color: #660000;',
+ 4 => 'color: #660000;',
+ 5 => 'color: #660000;',
+ 6 => 'color: #660000;',
+ 7 => 'color: #000099;',
+ 8 => 'color: #003399;'
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ )
+ ),
+ 'URLS' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '\$\$',
+ 1 => '\$\\r',
+ 2 => '\$\\n',
+ 3 => '\$\\t',
+ 4 => '\$[a-zA-Z0-9_]+',
+ 5 => '\$\{.{1,256}\}',
+ 6 => '\$\\\(.{1,256}\\\)',
+ 7 => array(
+ GESHI_SEARCH => '([^:/\\\*\?\"\<\>\|\s]*?)(::)([^:/\\\*\?\"\<\>\|\s]*?)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '\\2\\3'
+ ),
+ 8 => array(
+ GESHI_SEARCH => '([^:/\\\*\?\"\<\>\|\s]*?)(::)([^:/\\\*\?\"\<\>\|]*?\s)',
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1\\2',
+ GESHI_AFTER => ''
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/objc.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/objc.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/objc.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,239 +1,239 @@
-<?php
-/*************************************************************************************
- * objc.php
- * --------
- * Author: M. Uli Kusterer (witness.of.teachtext at gmx.net)
- * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * Objective C language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Objective C',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'if', 'return', 'while', 'case', 'continue', 'default',
- 'do', 'else', 'for', 'switch', 'goto'
- ),
- 2 => array(
- 'NULL', 'false', 'break', 'true', 'enum', 'nil', 'Nil', 'errno', 'EDOM',
- 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
- 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
- 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
- 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
- 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
- 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
- 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
- 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
- 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
- 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
- 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC'
- ),
- 3 => array(
- 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
- 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
- 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
- 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
- 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
- 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
- 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
- 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
- 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
- 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
- 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
- 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
- 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
- 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
- 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
- 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
- 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
- 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
- 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
- ),
- 4 => array( // Data types:
- 'auto', 'char', 'const', 'double', 'float', 'int', 'long',
- 'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
- 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
- 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
- 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
- // OpenStep/GNUstep/Cocoa:
- 'SEL', 'id', 'NSRect', 'NSRange', 'NSPoint', 'NSZone', 'Class', 'IMP', 'BOOL',
- // OpenStep/GNUstep/Cocoa @identifiers
- '@selector', '@class', '@protocol', '@interface', '@implementation', '@end',
- '@private', '@protected', '@public', '@try', '@throw', '@catch', '@finally',
- '@encode', '@defs', '@synchronized'
- ),
- 5 => array( // OpenStep/GNUstep/Cocoa Foundation
- 'NSAppleEventDescriptor', 'NSNetService', 'NSAppleEventManager',
- 'NSNetServiceBrowser', 'NSAppleScript', 'NSNotification', 'NSArchiver',
- 'NSNotificationCenter', 'NSArray', 'NSNotificationQueue', 'NSAssertionHandler',
- 'NSNull', 'NSAttributedString', 'NSNumber', 'NSAutoreleasePool',
- 'NSNumberFormatter', 'NSBundle', 'NSObject', 'NSCachedURLResponse',
- 'NSOutputStream', 'NSCalendarDate', 'NSPipe', 'NSCharacterSet', 'NSPort',
- 'NSClassDescription', 'NSPortCoder', 'NSCloneCommand', 'NSPortMessage',
- 'NSCloseCommand', 'NSPortNameServer', 'NSCoder', 'NSPositionalSpecifier',
- 'NSConditionLock', 'NSProcessInfo', 'NSConnection', 'NSPropertyListSerialization',
- 'NSCountCommand', 'NSPropertySpecifier', 'NSCountedSet', 'NSProtocolChecker',
- 'NSCreateCommand', 'NSProxy', 'NSData', 'NSQuitCommand', 'NSDate',
- 'NSRandomSpecifier', 'NSDateFormatter', 'NSRangeSpecifier', 'NSDecimalNumber',
- 'NSRecursiveLock', 'NSDecimalNumberHandler', 'NSRelativeSpecifier',
- 'NSDeleteCommand', 'NSRunLoop', 'NSDeserializer', 'NSScanner', 'NSDictionary',
- 'NSScriptClassDescription', 'NSDirectoryEnumerator', 'NSScriptCoercionHandler',
- 'NSDistantObject', 'NSScriptCommand', 'NSDistantObjectRequest',
- 'NSScriptCommandDescription', 'NSDistributedLock', 'NSScriptExecutionContext',
- 'NSDistributedNotificationCenter', 'NSScriptObjectSpecifier', 'NSEnumerator',
- 'NSScriptSuiteRegistry', 'NSError', 'NSScriptWhoseTest', 'NSException',
- 'NSSerializer', 'NSExistsCommand', 'NSSet', 'NSFileHandle', 'NSSetCommand',
- 'NSFileManager', 'NSSocketPort', 'NSFormatter', 'NSSocketPortNameServer',
- 'NSGetCommand', 'NSSortDescriptor', 'NSHost', 'NSSpecifierTest', 'NSHTTPCookie',
- 'NSSpellServer', 'NSHTTPCookieStorage', 'NSStream', 'NSHTTPURLResponse',
- 'NSString', 'NSIndexSet', 'NSTask', 'NSIndexSpecifier', 'NSThread',
- 'NSInputStream', 'NSTimer', 'NSInvocation', 'NSTimeZone', 'NSKeyedArchiver',
- 'NSUnarchiver', 'NSKeyedUnarchiver', 'NSUndoManager', 'NSLock',
- 'NSUniqueIDSpecifier', 'NSLogicalTest', 'NSURL', 'NSMachBootstrapServer',
- 'NSURLAuthenticationChallenge', 'NSMachPort', 'NSURLCache', 'NSMessagePort',
- 'NSURLConnection', 'NSMessagePortNameServer', 'NSURLCredential',
- 'NSMethodSignature', 'NSURLCredentialStorage', 'NSMiddleSpecifier',
- 'NSURLDownload', 'NSMoveCommand', 'NSURLHandle', 'NSMutableArray',
- 'NSURLProtectionSpace', 'NSMutableAttributedString', 'NSURLProtocol',
- 'NSMutableCharacterSet', 'NSURLRequest', 'NSMutableData', 'NSURLResponse',
- 'NSMutableDictionary', 'NSUserDefaults', 'NSMutableIndexSet', 'NSValue',
- 'NSMutableSet', 'NSValueTransformer', 'NSMutableString', 'NSWhoseSpecifier',
- 'NSMutableURLRequest', 'NSXMLParser', 'NSNameSpecifier'
- ),
- 6 => array( // OpenStep/GNUstep/Cocoa AppKit
- 'NSActionCell', 'NSOpenGLPixelFormat', 'NSAffineTransform', 'NSOpenGLView',
- 'NSAlert', 'NSOpenPanel', 'NSAppleScript Additions', 'NSOutlineView',
- 'NSApplication', 'NSPageLayout', 'NSArrayController', 'NSPanel',
- 'NSATSTypesetter', 'NSParagraphStyle', 'NSPasteboard', 'NSBezierPath',
- 'NSPDFImageRep', 'NSBitmapImageRep', 'NSPICTImageRep', 'NSBox', 'NSPopUpButton',
- 'NSBrowser', 'NSPopUpButtonCell', 'NSBrowserCell', 'NSPrinter', 'NSPrintInfo',
- 'NSButton', 'NSPrintOperation', 'NSButtonCell', 'NSPrintPanel', 'NSCachedImageRep',
- 'NSProgressIndicator', 'NSCell', 'NSQuickDrawView', 'NSClipView', 'NSResponder',
- 'NSRulerMarker', 'NSColor', 'NSRulerView', 'NSColorList', 'NSSavePanel',
- 'NSColorPanel', 'NSScreen', 'NSColorPicker', 'NSScroller', 'NSColorWell',
- 'NSScrollView', 'NSComboBox', 'NSSearchField', 'NSComboBoxCell',
- 'NSSearchFieldCell', 'NSControl', 'NSSecureTextField', 'NSController',
- 'NSSecureTextFieldCell', 'NSCursor', 'NSSegmentedCell', 'NSCustomImageRep',
- 'NSSegmentedControl', 'NSDocument', 'NSShadow', 'NSDocumentController',
- 'NSSimpleHorizontalTypesetter', 'NSDrawer', 'NSSlider', 'NSEPSImageRep',
- 'NSSliderCell', 'NSEvent', 'NSSound', 'NSFileWrapper', 'NSSpeechRecognizer',
- 'NSFont', 'NSSpeechSynthesizer', 'NSFontDescriptor', 'NSSpellChecker',
- 'NSFontManager', 'NSSplitView', 'NSFontPanel', 'NSStatusBar', 'NSForm',
- 'NSStatusItem', 'NSFormCell', 'NSStepper', 'NSGlyphGenerator', 'NSStepperCell',
- 'NSGlyphInfo', 'NSGraphicsContext', 'NSTableColumn', 'NSHelpManager',
- 'NSTableHeaderCell', 'NSImage', 'NSTableHeaderView', 'NSImageCell', 'NSTableView',
- 'NSImageRep', 'NSTabView', 'NSImageView', 'NSTabViewItem', 'NSInputManager',
- 'NSText', 'NSInputServer', 'NSTextAttachment', 'NSLayoutManager',
- 'NSTextAttachmentCell', 'NSMatrix', 'NSTextContainer', 'NSMenu', 'NSTextField',
- 'NSMenuItem', 'NSTextFieldCell', 'NSMenuItemCell', 'NSTextStorage', 'NSMenuView',
- 'NSTextTab', 'NSMovie', 'NSTextView', 'NSMovieView', 'NSToolbar', 'NSToolbarItem',
- 'NSMutableParagraphStyle', 'NSTypesetter', 'NSNib', 'NSNibConnector',
- 'NSUserDefaultsController', 'NSNibControlConnector', 'NSView',
- 'NSNibOutletConnector', 'NSWindow', 'NSObjectController', 'NSWindowController',
- 'NSOpenGLContext', 'NSWorkspace', 'NSOpenGLPixelBuffer'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
- 6 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #0000dd;',
- 4 => 'color: #0000ff;',
- 5 => 'color: #0000ff;',
- 6 => 'color: #0000ff;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #ff0000;',
- 2 => 'color: #339900;',
- 'MULTI' => 'color: #ff0000; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #666666; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #002200;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #666666;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #0000dd;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #002200;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
- 4 => '',
- 5 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/{FNAME}.html',
- 6 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/{FNAME}.html'
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * objc.php
+ * --------
+ * Author: M. Uli Kusterer (witness.of.teachtext at gmx.net)
+ * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * Objective C language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Objective C',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'if', 'return', 'while', 'case', 'continue', 'default',
+ 'do', 'else', 'for', 'switch', 'goto'
+ ),
+ 2 => array(
+ 'NULL', 'false', 'break', 'true', 'enum', 'nil', 'Nil', 'errno', 'EDOM',
+ 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
+ 'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
+ 'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
+ 'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
+ 'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
+ 'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
+ 'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
+ 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
+ 'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
+ 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
+ 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC'
+ ),
+ 3 => array(
+ 'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+ 'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
+ 'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 'tolower', 'toupper',
+ 'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
+ 'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
+ 'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 'acos', 'atan', 'atan2',
+ 'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
+ 'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
+ 'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
+ 'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
+ 'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
+ 'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
+ 'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
+ 'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
+ 'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
+ 'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
+ 'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
+ 'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
+ 'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+ ),
+ 4 => array( // Data types:
+ 'auto', 'char', 'const', 'double', 'float', 'int', 'long',
+ 'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
+ 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
+ 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
+ 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+ // OpenStep/GNUstep/Cocoa:
+ 'SEL', 'id', 'NSRect', 'NSRange', 'NSPoint', 'NSZone', 'Class', 'IMP', 'BOOL',
+ // OpenStep/GNUstep/Cocoa @identifiers
+ '@selector', '@class', '@protocol', '@interface', '@implementation', '@end',
+ '@private', '@protected', '@public', '@try', '@throw', '@catch', '@finally',
+ '@encode', '@defs', '@synchronized'
+ ),
+ 5 => array( // OpenStep/GNUstep/Cocoa Foundation
+ 'NSAppleEventDescriptor', 'NSNetService', 'NSAppleEventManager',
+ 'NSNetServiceBrowser', 'NSAppleScript', 'NSNotification', 'NSArchiver',
+ 'NSNotificationCenter', 'NSArray', 'NSNotificationQueue', 'NSAssertionHandler',
+ 'NSNull', 'NSAttributedString', 'NSNumber', 'NSAutoreleasePool',
+ 'NSNumberFormatter', 'NSBundle', 'NSObject', 'NSCachedURLResponse',
+ 'NSOutputStream', 'NSCalendarDate', 'NSPipe', 'NSCharacterSet', 'NSPort',
+ 'NSClassDescription', 'NSPortCoder', 'NSCloneCommand', 'NSPortMessage',
+ 'NSCloseCommand', 'NSPortNameServer', 'NSCoder', 'NSPositionalSpecifier',
+ 'NSConditionLock', 'NSProcessInfo', 'NSConnection', 'NSPropertyListSerialization',
+ 'NSCountCommand', 'NSPropertySpecifier', 'NSCountedSet', 'NSProtocolChecker',
+ 'NSCreateCommand', 'NSProxy', 'NSData', 'NSQuitCommand', 'NSDate',
+ 'NSRandomSpecifier', 'NSDateFormatter', 'NSRangeSpecifier', 'NSDecimalNumber',
+ 'NSRecursiveLock', 'NSDecimalNumberHandler', 'NSRelativeSpecifier',
+ 'NSDeleteCommand', 'NSRunLoop', 'NSDeserializer', 'NSScanner', 'NSDictionary',
+ 'NSScriptClassDescription', 'NSDirectoryEnumerator', 'NSScriptCoercionHandler',
+ 'NSDistantObject', 'NSScriptCommand', 'NSDistantObjectRequest',
+ 'NSScriptCommandDescription', 'NSDistributedLock', 'NSScriptExecutionContext',
+ 'NSDistributedNotificationCenter', 'NSScriptObjectSpecifier', 'NSEnumerator',
+ 'NSScriptSuiteRegistry', 'NSError', 'NSScriptWhoseTest', 'NSException',
+ 'NSSerializer', 'NSExistsCommand', 'NSSet', 'NSFileHandle', 'NSSetCommand',
+ 'NSFileManager', 'NSSocketPort', 'NSFormatter', 'NSSocketPortNameServer',
+ 'NSGetCommand', 'NSSortDescriptor', 'NSHost', 'NSSpecifierTest', 'NSHTTPCookie',
+ 'NSSpellServer', 'NSHTTPCookieStorage', 'NSStream', 'NSHTTPURLResponse',
+ 'NSString', 'NSIndexSet', 'NSTask', 'NSIndexSpecifier', 'NSThread',
+ 'NSInputStream', 'NSTimer', 'NSInvocation', 'NSTimeZone', 'NSKeyedArchiver',
+ 'NSUnarchiver', 'NSKeyedUnarchiver', 'NSUndoManager', 'NSLock',
+ 'NSUniqueIDSpecifier', 'NSLogicalTest', 'NSURL', 'NSMachBootstrapServer',
+ 'NSURLAuthenticationChallenge', 'NSMachPort', 'NSURLCache', 'NSMessagePort',
+ 'NSURLConnection', 'NSMessagePortNameServer', 'NSURLCredential',
+ 'NSMethodSignature', 'NSURLCredentialStorage', 'NSMiddleSpecifier',
+ 'NSURLDownload', 'NSMoveCommand', 'NSURLHandle', 'NSMutableArray',
+ 'NSURLProtectionSpace', 'NSMutableAttributedString', 'NSURLProtocol',
+ 'NSMutableCharacterSet', 'NSURLRequest', 'NSMutableData', 'NSURLResponse',
+ 'NSMutableDictionary', 'NSUserDefaults', 'NSMutableIndexSet', 'NSValue',
+ 'NSMutableSet', 'NSValueTransformer', 'NSMutableString', 'NSWhoseSpecifier',
+ 'NSMutableURLRequest', 'NSXMLParser', 'NSNameSpecifier'
+ ),
+ 6 => array( // OpenStep/GNUstep/Cocoa AppKit
+ 'NSActionCell', 'NSOpenGLPixelFormat', 'NSAffineTransform', 'NSOpenGLView',
+ 'NSAlert', 'NSOpenPanel', 'NSAppleScript Additions', 'NSOutlineView',
+ 'NSApplication', 'NSPageLayout', 'NSArrayController', 'NSPanel',
+ 'NSATSTypesetter', 'NSParagraphStyle', 'NSPasteboard', 'NSBezierPath',
+ 'NSPDFImageRep', 'NSBitmapImageRep', 'NSPICTImageRep', 'NSBox', 'NSPopUpButton',
+ 'NSBrowser', 'NSPopUpButtonCell', 'NSBrowserCell', 'NSPrinter', 'NSPrintInfo',
+ 'NSButton', 'NSPrintOperation', 'NSButtonCell', 'NSPrintPanel', 'NSCachedImageRep',
+ 'NSProgressIndicator', 'NSCell', 'NSQuickDrawView', 'NSClipView', 'NSResponder',
+ 'NSRulerMarker', 'NSColor', 'NSRulerView', 'NSColorList', 'NSSavePanel',
+ 'NSColorPanel', 'NSScreen', 'NSColorPicker', 'NSScroller', 'NSColorWell',
+ 'NSScrollView', 'NSComboBox', 'NSSearchField', 'NSComboBoxCell',
+ 'NSSearchFieldCell', 'NSControl', 'NSSecureTextField', 'NSController',
+ 'NSSecureTextFieldCell', 'NSCursor', 'NSSegmentedCell', 'NSCustomImageRep',
+ 'NSSegmentedControl', 'NSDocument', 'NSShadow', 'NSDocumentController',
+ 'NSSimpleHorizontalTypesetter', 'NSDrawer', 'NSSlider', 'NSEPSImageRep',
+ 'NSSliderCell', 'NSEvent', 'NSSound', 'NSFileWrapper', 'NSSpeechRecognizer',
+ 'NSFont', 'NSSpeechSynthesizer', 'NSFontDescriptor', 'NSSpellChecker',
+ 'NSFontManager', 'NSSplitView', 'NSFontPanel', 'NSStatusBar', 'NSForm',
+ 'NSStatusItem', 'NSFormCell', 'NSStepper', 'NSGlyphGenerator', 'NSStepperCell',
+ 'NSGlyphInfo', 'NSGraphicsContext', 'NSTableColumn', 'NSHelpManager',
+ 'NSTableHeaderCell', 'NSImage', 'NSTableHeaderView', 'NSImageCell', 'NSTableView',
+ 'NSImageRep', 'NSTabView', 'NSImageView', 'NSTabViewItem', 'NSInputManager',
+ 'NSText', 'NSInputServer', 'NSTextAttachment', 'NSLayoutManager',
+ 'NSTextAttachmentCell', 'NSMatrix', 'NSTextContainer', 'NSMenu', 'NSTextField',
+ 'NSMenuItem', 'NSTextFieldCell', 'NSMenuItemCell', 'NSTextStorage', 'NSMenuView',
+ 'NSTextTab', 'NSMovie', 'NSTextView', 'NSMovieView', 'NSToolbar', 'NSToolbarItem',
+ 'NSMutableParagraphStyle', 'NSTypesetter', 'NSNib', 'NSNibConnector',
+ 'NSUserDefaultsController', 'NSNibControlConnector', 'NSView',
+ 'NSNibOutletConnector', 'NSWindow', 'NSObjectController', 'NSWindowController',
+ 'NSOpenGLContext', 'NSWorkspace', 'NSOpenGLPixelBuffer'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #0000dd;',
+ 4 => 'color: #0000ff;',
+ 5 => 'color: #0000ff;',
+ 6 => 'color: #0000ff;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #ff0000;',
+ 2 => 'color: #339900;',
+ 'MULTI' => 'color: #ff0000; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #666666; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #002200;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #666666;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #0000dd;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #002200;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+ 4 => '',
+ 5 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/{FNAME}.html',
+ 6 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/{FNAME}.html'
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/ocaml-brief.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/ocaml-brief.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/ocaml-brief.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,112 +1,112 @@
-<?php
-/*************************************************************************************
- * ocaml.php
- * ----------
- * Author: Flaie (fireflaie at gmail.com)
- * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2005/08/27
- *
- * OCaml (Objective Caml) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/08/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'OCaml',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array('(*' => '*)'),
- 'CASE_KEYWORDS' => 0,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => "",
- 'KEYWORDS' => array(
- /* main OCaml keywords */
- 1 => array(
- 'and', 'As', 'asr', 'begin', 'Class', 'Closed', 'constraint', 'do', 'done', 'downto', 'else',
- 'end', 'exception', 'external', 'failwith', 'false', 'flush', 'for', 'fun', 'function', 'functor',
- 'if', 'in', 'include', 'inherit', 'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
- 'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',
- 'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',
- 'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'
- )
- ),
- /* highlighting symbols is really important in OCaml */
- 'SYMBOLS' => array(
- ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',
- '>', '<', '(', ')', '[', ']', '&', '|', '#', "'"
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #06c; font-weight: bold;' /* nice blue */
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- 0 => 'color: #6c6;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #3cb371;' /* nice green */
- ),
- 'NUMBERS' => array(
- 0 => 'color: #c6c;' /* pink */
- ),
- 'METHODS' => array(
- 1 => 'color: #060;' /* dark green */
- ),
- 'REGEXPS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #a52a2a;' /* maroon */
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * ocaml.php
+ * ----------
+ * Author: Flaie (fireflaie at gmail.com)
+ * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/08/27
+ *
+ * OCaml (Objective Caml) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/08/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'OCaml',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array('(*' => '*)'),
+ 'CASE_KEYWORDS' => 0,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => "",
+ 'KEYWORDS' => array(
+ /* main OCaml keywords */
+ 1 => array(
+ 'and', 'As', 'asr', 'begin', 'Class', 'Closed', 'constraint', 'do', 'done', 'downto', 'else',
+ 'end', 'exception', 'external', 'failwith', 'false', 'flush', 'for', 'fun', 'function', 'functor',
+ 'if', 'in', 'include', 'inherit', 'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
+ 'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',
+ 'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',
+ 'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'
+ )
+ ),
+ /* highlighting symbols is really important in OCaml */
+ 'SYMBOLS' => array(
+ ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',
+ '>', '<', '(', ')', '[', ']', '&', '|', '#', "'"
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #06c; font-weight: bold;' /* nice blue */
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #6c6;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #3cb371;' /* nice green */
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #c6c;' /* pink */
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #060;' /* dark green */
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #a52a2a;' /* maroon */
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/ocaml.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/ocaml.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/ocaml.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,161 +1,161 @@
-<?php
-/*************************************************************************************
- * ocaml.php
- * ----------
- * Author: Flaie (fireflaie at gmail.com)
- * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2005/08/27
- *
- * OCaml (Objective Caml) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/08/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'OCaml',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array('(*' => '*)'),
- 'CASE_KEYWORDS' => 0,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => "",
- 'KEYWORDS' => array(
- /* main OCaml keywords */
- 1 => array(
- 'and', 'As', 'asr', 'begin', 'Class', 'Closed', 'constraint', 'do', 'done', 'downto', 'else',
- 'end', 'exception', 'external', 'failwith', 'false', 'flush', 'for', 'fun', 'function', 'functor',
- 'if', 'in', 'include', 'inherit', 'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
- 'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',
- 'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',
- 'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'
- ),
- /* define names of main librarys, so we can link to it */
- 2 => array(
- 'Arg', 'Arith_status', 'Array', 'ArrayLabels', 'Big_int', 'Bigarray', 'Buffer', 'Callback',
- 'CamlinternalOO', 'Char', 'Complex', 'Condition', 'Dbm', 'Digest', 'Dynlink', 'Event',
- 'Filename', 'Format', 'Gc', 'Genlex', 'Graphics', 'GraphicsX11', 'Hashtbl', 'Int32', 'Int64',
- 'Lazy', 'Lexing', 'List', 'ListLabels', 'Map', 'Marshal', 'MoreLabels', 'Mutex', 'Nativeint',
- 'Num', 'Obj', 'Oo', 'Parsing', 'Pervasives', 'Printexc', 'Printf', 'Queue', 'Random', 'Scanf',
- 'Set', 'Sort', 'Stack', 'StdLabels', 'Str', 'Stream', 'String', 'StringLabels', 'Sys', 'Thread',
- 'ThreadUnix', 'Tk'
- ),
- /* just link to the Pervasives functions library, cause it's the default opened library when starting OCaml */
- 3 => array(
- 'raise', 'invalid_arg', 'failwith', 'compare', 'min', 'max', 'succ', 'pred', 'mod', 'abs',
- 'max_int', 'min_int', 'sqrt', 'exp', 'log', 'log10', 'cos', 'sin', 'tan', 'acos', 'asin',
- 'atan', 'atan2', 'cosh', 'sinh', 'tanh', 'ceil', 'floor', 'abs_float', 'mod_float', 'frexp',
- 'ldexp', 'modf', 'float', 'float_of_int', 'truncate', 'int_of_float', 'infinity', 'nan',
- 'max_float', 'min_float', 'epsilon_float', 'classify_float', 'int_of_char', 'char_of_int',
- 'ignore', 'string_of_bool', 'bool_of_string', 'string_of_int', 'int_of_string',
- 'string_of_float', 'float_of_string', 'fst', 'snd', 'stdin', 'stdout', 'stderr', 'print_char',
- 'print_string', 'print_int', 'print_float', 'print_endline', 'print_newline', 'prerr_char',
- 'prerr_string', 'prerr_int', 'prerr_float', 'prerr_endline', 'prerr_newline', 'read_line',
- 'read_int', 'read_float', 'open_out', 'open_out_bin', 'open_out_gen', 'flush', 'flush_all',
- 'output_char', 'output_string', 'output', 'output_byte', 'output_binary_int', 'output_value',
- 'seek_out', 'pos_out', 'out_channel_length', 'close_out', 'close_out_noerr', 'set_binary_mode_out',
- 'open_in', 'open_in_bin', 'open_in_gen', 'input_char', 'input_line', 'input', 'really_input',
- 'input_byte', 'input_binary_int', 'input_value', 'seek_in', 'pos_in', 'in_channel_length',
- 'close_in', 'close_in_noerr', 'set_binary_mode_in', 'incr', 'decr', 'string_of_format',
- 'format_of_string', 'exit', 'at_exit'
- ),
- /* here Pervasives Types */
- 4 => array (
- 'fpclass', 'in_channel', 'out_channel', 'open_flag', 'Sys_error', 'ref', 'format'
- ),
- /* finally Pervasives Exceptions */
- 5 => array (
- 'Exit', 'Invalid_Argument', 'Failure', 'Division_by_zero'
- )
- ),
- /* highlighting symbols is really important in OCaml */
- 'SYMBOLS' => array(
- ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',
- '>', '<', '(', ')', '[', ']', '&', '|', '#', "'"
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => true, /* functions name are case seinsitive */
- 3 => true, /* types name too */
- 4 => true /* finally exceptions too */
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #06c; font-weight: bold;' /* nice blue */
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */
- ),
- 'ESCAPE_CHAR' => array(
- ),
- 'BRACKETS' => array(
- 0 => 'color: #6c6;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #3cb371;' /* nice green */
- ),
- 'NUMBERS' => array(
- 0 => 'color: #c6c;' /* pink */
- ),
- 'METHODS' => array(
- 1 => 'color: #060;' /* dark green */
- ),
- 'REGEXPS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #a52a2a;' /* maroon */
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- /* some of keywords are Pervasives functions (land, lxor, asr, ...) */
- 1 => '',
- /* link to the wanted library */
- 2 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/{FNAME}.html',
- /* link to Pervasives functions */
- 3 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#VAL{FNAME}',
- /* link to Pervasives type */
- 4 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#TYPE{FNAME}',
- /* link to Pervasives exceptions */
- 5 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#EXCEPTION{FNAME}'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * ocaml.php
+ * ----------
+ * Author: Flaie (fireflaie at gmail.com)
+ * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/08/27
+ *
+ * OCaml (Objective Caml) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/08/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'OCaml',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array('(*' => '*)'),
+ 'CASE_KEYWORDS' => 0,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => "",
+ 'KEYWORDS' => array(
+ /* main OCaml keywords */
+ 1 => array(
+ 'and', 'As', 'asr', 'begin', 'Class', 'Closed', 'constraint', 'do', 'done', 'downto', 'else',
+ 'end', 'exception', 'external', 'failwith', 'false', 'flush', 'for', 'fun', 'function', 'functor',
+ 'if', 'in', 'include', 'inherit', 'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
+ 'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',
+ 'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',
+ 'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'
+ ),
+ /* define names of main librarys, so we can link to it */
+ 2 => array(
+ 'Arg', 'Arith_status', 'Array', 'ArrayLabels', 'Big_int', 'Bigarray', 'Buffer', 'Callback',
+ 'CamlinternalOO', 'Char', 'Complex', 'Condition', 'Dbm', 'Digest', 'Dynlink', 'Event',
+ 'Filename', 'Format', 'Gc', 'Genlex', 'Graphics', 'GraphicsX11', 'Hashtbl', 'Int32', 'Int64',
+ 'Lazy', 'Lexing', 'List', 'ListLabels', 'Map', 'Marshal', 'MoreLabels', 'Mutex', 'Nativeint',
+ 'Num', 'Obj', 'Oo', 'Parsing', 'Pervasives', 'Printexc', 'Printf', 'Queue', 'Random', 'Scanf',
+ 'Set', 'Sort', 'Stack', 'StdLabels', 'Str', 'Stream', 'String', 'StringLabels', 'Sys', 'Thread',
+ 'ThreadUnix', 'Tk'
+ ),
+ /* just link to the Pervasives functions library, cause it's the default opened library when starting OCaml */
+ 3 => array(
+ 'raise', 'invalid_arg', 'failwith', 'compare', 'min', 'max', 'succ', 'pred', 'mod', 'abs',
+ 'max_int', 'min_int', 'sqrt', 'exp', 'log', 'log10', 'cos', 'sin', 'tan', 'acos', 'asin',
+ 'atan', 'atan2', 'cosh', 'sinh', 'tanh', 'ceil', 'floor', 'abs_float', 'mod_float', 'frexp',
+ 'ldexp', 'modf', 'float', 'float_of_int', 'truncate', 'int_of_float', 'infinity', 'nan',
+ 'max_float', 'min_float', 'epsilon_float', 'classify_float', 'int_of_char', 'char_of_int',
+ 'ignore', 'string_of_bool', 'bool_of_string', 'string_of_int', 'int_of_string',
+ 'string_of_float', 'float_of_string', 'fst', 'snd', 'stdin', 'stdout', 'stderr', 'print_char',
+ 'print_string', 'print_int', 'print_float', 'print_endline', 'print_newline', 'prerr_char',
+ 'prerr_string', 'prerr_int', 'prerr_float', 'prerr_endline', 'prerr_newline', 'read_line',
+ 'read_int', 'read_float', 'open_out', 'open_out_bin', 'open_out_gen', 'flush', 'flush_all',
+ 'output_char', 'output_string', 'output', 'output_byte', 'output_binary_int', 'output_value',
+ 'seek_out', 'pos_out', 'out_channel_length', 'close_out', 'close_out_noerr', 'set_binary_mode_out',
+ 'open_in', 'open_in_bin', 'open_in_gen', 'input_char', 'input_line', 'input', 'really_input',
+ 'input_byte', 'input_binary_int', 'input_value', 'seek_in', 'pos_in', 'in_channel_length',
+ 'close_in', 'close_in_noerr', 'set_binary_mode_in', 'incr', 'decr', 'string_of_format',
+ 'format_of_string', 'exit', 'at_exit'
+ ),
+ /* here Pervasives Types */
+ 4 => array (
+ 'fpclass', 'in_channel', 'out_channel', 'open_flag', 'Sys_error', 'ref', 'format'
+ ),
+ /* finally Pervasives Exceptions */
+ 5 => array (
+ 'Exit', 'Invalid_Argument', 'Failure', 'Division_by_zero'
+ )
+ ),
+ /* highlighting symbols is really important in OCaml */
+ 'SYMBOLS' => array(
+ ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',
+ '>', '<', '(', ')', '[', ']', '&', '|', '#', "'"
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => true, /* functions name are case seinsitive */
+ 3 => true, /* types name too */
+ 4 => true /* finally exceptions too */
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #06c; font-weight: bold;' /* nice blue */
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */
+ ),
+ 'ESCAPE_CHAR' => array(
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #6c6;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #3cb371;' /* nice green */
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #c6c;' /* pink */
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #060;' /* dark green */
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #a52a2a;' /* maroon */
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ /* some of keywords are Pervasives functions (land, lxor, asr, ...) */
+ 1 => '',
+ /* link to the wanted library */
+ 2 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/{FNAME}.html',
+ /* link to Pervasives functions */
+ 3 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#VAL{FNAME}',
+ /* link to Pervasives type */
+ 4 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#TYPE{FNAME}',
+ /* link to Pervasives exceptions */
+ 5 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#EXCEPTION{FNAME}'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/oobas.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/oobas.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/oobas.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,130 +1,130 @@
-<?php
-/*************************************************************************************
- * oobas.php
- * ---------
- * Author: Roberto Rossi (rsoftware at altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/30
- *
- * OpenOffice.org Basic language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'OpenOffice.org Basic',
- 'COMMENT_SINGLE' => array(1 => "'"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'dim','private','public','global','as','if','redim','true','set',
- 'byval',
- 'false','bool','double','integer','long','object','single','variant',
- 'msgbox','print','inputbox','green','blue','red','qbcolor',
- 'rgb','open','close','reset','freefile','get','input','line',
- 'put','write','loc','seek','eof','lof','chdir','chdrive',
- 'curdir','dir','fileattr','filecopy','filedatetime','fileexists',
- 'filelen','getattr','kill','mkdir','name','rmdir','setattr',
- 'dateserial','datevalue','day','month','weekday','year','cdatetoiso',
- 'cdatefromiso','hour','minute','second','timeserial','timevalue',
- 'date','now','time','timer','erl','err','error','on','error','goto','resume',
- 'and','eqv','imp','not','or','xor','mod','','atn','cos','sin','tan','log',
- 'exp','rnd','randomize','sqr','fix','int','abs','sgn','hex','oct',
- 'it','then','else','select','case','iif','do','loop','for','next',
- 'while','wend','gosub','return','goto','on','goto','call','choose','declare',
- 'end','exit','freelibrary','function','rem','stop','sub','switch','with',
- 'cbool','cdate','cdbl','cint','clng','const','csng','cstr','defbool',
- 'defdate','defdbl','defint','deflng','asc','chr','str','val','cbyte',
- 'space','string','format','lcase','left','lset','ltrim','mid','right',
- 'rset','rtrim','trim','ucase','split','join','converttourl','convertfromurl',
- 'instr','len','strcomp','beep','shell','wait','getsystemticks','environ',
- 'getsolarversion','getguitype','twipsperpixelx','twipsperpixely',
- 'createunostruct','createunoservice','getprocessservicemanager',
- 'createunodialog','createunolistener','createunovalue','thiscomponent',
- 'globalscope'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * oobas.php
+ * ---------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/30
+ *
+ * OpenOffice.org Basic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'OpenOffice.org Basic',
+ 'COMMENT_SINGLE' => array(1 => "'"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'dim','private','public','global','as','if','redim','true','set',
+ 'byval',
+ 'false','bool','double','integer','long','object','single','variant',
+ 'msgbox','print','inputbox','green','blue','red','qbcolor',
+ 'rgb','open','close','reset','freefile','get','input','line',
+ 'put','write','loc','seek','eof','lof','chdir','chdrive',
+ 'curdir','dir','fileattr','filecopy','filedatetime','fileexists',
+ 'filelen','getattr','kill','mkdir','name','rmdir','setattr',
+ 'dateserial','datevalue','day','month','weekday','year','cdatetoiso',
+ 'cdatefromiso','hour','minute','second','timeserial','timevalue',
+ 'date','now','time','timer','erl','err','error','on','error','goto','resume',
+ 'and','eqv','imp','not','or','xor','mod','','atn','cos','sin','tan','log',
+ 'exp','rnd','randomize','sqr','fix','int','abs','sgn','hex','oct',
+ 'it','then','else','select','case','iif','do','loop','for','next',
+ 'while','wend','gosub','return','goto','on','goto','call','choose','declare',
+ 'end','exit','freelibrary','function','rem','stop','sub','switch','with',
+ 'cbool','cdate','cdbl','cint','clng','const','csng','cstr','defbool',
+ 'defdate','defdbl','defint','deflng','asc','chr','str','val','cbyte',
+ 'space','string','format','lcase','left','lset','ltrim','mid','right',
+ 'rset','rtrim','trim','ucase','split','join','converttourl','convertfromurl',
+ 'instr','len','strcomp','beep','shell','wait','getsystemticks','environ',
+ 'getsolarversion','getguitype','twipsperpixelx','twipsperpixely',
+ 'createunostruct','createunoservice','getprocessservicemanager',
+ 'createunodialog','createunolistener','createunovalue','thiscomponent',
+ 'globalscope'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/oracle8.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/oracle8.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/oracle8.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,487 +1,487 @@
-<?php
-/*************************************************************************************
- * oracle8.php
- * -----------
- * Author: Guy Wicks (Guy.Wicks at rbs.co.uk)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * Oracle 8 language file for GeSHi
- *
- * CHANGES
- * -------
- * 2005/01/29 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Oracle 8 SQL',
- 'COMMENT_SINGLE' => array(1 => '--'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
- 'QUOTEMARKS' => array("'", '"', '`'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
-//Put your package names here - e.g. select distinct ''''|| lower(name) || ''',' from user_source;
- 6 => array(
- ),
-
-//Put your table names here - e.g. select distinct ''''|| lower(table_name) || ''',' from user_tables;
- 5 => array(
- ),
-
-//Put your view names here - e.g. select distinct ''''|| lower(view_name) || ''',' from user_views;
- 4 => array(
- ),
-
-//Put your table field names here - e.g. select distinct ''''|| lower(column_name) || ''',' from user_tab_columns;
- 3 => array(
- ),
-//Put ORACLE reserved keywords here (8.1.7). I like mine uppercase.
- 1 => array(
- 'ABS',
- 'ACCESS',
- 'ACOS',
- 'ADD',
- 'ADD_MONTHS',
- 'ALL',
- 'ALTER',
- 'ANALYZE',
- 'AND',
- 'ANY',
- 'ARRAY',
- 'AS',
- 'ASC',
- 'ASCII',
- 'ASIN',
- 'ASSOCIATE',
- 'AT',
- 'ATAN',
- 'ATAN2',
- 'AUDIT',
- 'AUTHID',
- 'AVG',
- 'BEGIN',
- 'BETWEEN',
- 'BFILENAME',
- 'BINARY_INTEGER',
- 'BITAND',
- 'BODY',
- 'BOOLEAN',
- 'BULK',
- 'BY',
- 'CALL',
- 'CASCADE',
- 'CASE',
- 'CEIL',
- 'CHAR',
- 'CHAR_BASE',
- 'CHARTOROWID',
- 'CHECK',
- 'CHR',
- 'CLOSE',
- 'CLUSTER',
- 'COALESCE',
- 'COLLECT',
- 'COLUMN',
- 'COMMENT',
- 'COMMIT',
- 'COMPRESS',
- 'CONCAT',
- 'CONNECT',
- 'CONSTANT',
- 'CONSTRAINT',
- 'CONSTRAINTS',
- 'CONTEXT',
- 'CONTROLFILE',
- 'CONVERT',
- 'CORR',
- 'COS',
- 'COSH',
- 'COST',
- 'COUNT',
- 'COVAR_POP',
- 'COVAR_SAMP',
- 'CREATE',
- 'CUME_DIST',
- 'CURRENT',
- 'CURRVAL',
- 'CURSOR',
- 'DATABASE',
- 'DATE',
- 'DAY',
- 'DECIMAL',
- 'DECLARE',
- 'DECODE',
- 'DEFAULT',
- 'DELETE',
- 'DENSE_RANK',
- 'DEREF',
- 'DESC',
- 'DIMENSION',
- 'DIRECTORY',
- 'DISASSOCIATE',
- 'DISTINCT',
- 'DO',
- 'DROP',
- 'DUMP',
- 'ELSE',
- 'ELSIF',
- 'EMPTY_BLOB',
- 'EMPTY_CLOB',
- 'END',
- 'EXCEPTION',
- 'EXCLUSIVE',
- 'EXEC',
- 'EXECUTE',
- 'EXISTS',
- 'EXIT',
- 'EXP',
- 'EXPLAIN',
- 'EXTENDS',
- 'EXTRACT',
- 'FALSE',
- 'FETCH',
- 'FILE',
- 'FIRST_VALUE',
- 'FLOAT',
- 'FLOOR',
- 'FOR',
- 'FORALL',
- 'FROM',
- 'FUNCTION',
- 'GOTO',
- 'GRANT',
- 'GREATEST',
- 'GROUP',
- 'GROUPING',
- 'HAVING',
- 'HEAP',
- 'HEXTORAW',
- 'HOUR',
- 'IDENTIFIED',
- 'IF',
- 'IMMEDIATE',
- 'IN',
- 'INCREMENT',
- 'INDEX',
- 'INDEXTYPE',
- 'INDICATOR',
- 'INITCAP',
- 'INITIAL',
- 'INSERT',
- 'INSTR',
- 'INSTRB',
- 'INTEGER',
- 'INTERFACE',
- 'INTERSECT',
- 'INTERVAL',
- 'INTO',
- 'IS',
- 'ISOLATION',
- 'JAVA',
- 'KEY',
- 'LAG',
- 'LAST_DAY',
- 'LAST_VALUE',
- 'LEAD',
- 'LEAST',
- 'LENGTH',
- 'LENGTHB',
- 'LEVEL',
- 'LIBRARY',
- 'LIKE',
- 'LIMITED',
- 'LINK',
- 'LN',
- 'LOCK',
- 'LOG',
- 'LONG',
- 'LOOP',
- 'LOWER',
- 'LPAD',
- 'LTRIM',
- 'MAKE_REF',
- 'MATERIALIZED',
- 'MAX',
- 'MAXEXTENTS',
- 'MIN',
- 'MINUS',
- 'MINUTE',
- 'MLSLABEL',
- 'MOD',
- 'MODE',
- 'MODIFY',
- 'MONTH',
- 'MONTHS_BETWEEN',
- 'NATURAL',
- 'NATURALN',
- 'NEW',
- 'NEW_TIME',
- 'NEXT_DAY',
- 'NEXTVAL',
- 'NLS_CHARSET_DECL_LEN',
- 'NLS_CHARSET_ID',
- 'NLS_CHARSET_NAME',
- 'NLS_INITCAP',
- 'NLS_LOWER',
- 'NLS_UPPER',
- 'NLSSORT',
- 'NOAUDIT',
- 'NOCOMPRESS',
- 'NOCOPY',
- 'NOT',
- 'NOWAIT',
- 'NTILE',
- 'NULL',
- 'NULLIF',
- 'NUMBER',
- 'NUMBER_BASE',
- 'NUMTODSINTERVAL',
- 'NUMTOYMINTERVAL',
- 'NVL',
- 'NVL2',
- 'OCIROWID',
- 'OF',
- 'OFFLINE',
- 'ON',
- 'ONLINE',
- 'OPAQUE',
- 'OPEN',
- 'OPERATOR',
- 'OPTION',
- 'OR',
- 'ORDER',
- 'ORGANIZATION',
- 'OTHERS',
- 'OUT',
- 'OUTLINE',
- 'PACKAGE',
- 'PARTITION',
- 'PCTFREE',
- 'PERCENT_RANK',
- 'PLAN',
- 'PLS_INTEGER',
- 'POSITIVE',
- 'POSITIVEN',
- 'POWER',
- 'PRAGMA',
- 'PRIMARY',
- 'PRIOR',
- 'PRIVATE',
- 'PRIVILEGES',
- 'PROCEDURE',
- 'PROFILE',
- 'PUBLIC',
- 'RAISE',
- 'RANGE',
- 'RANK',
- 'RATIO_TO_REPORT',
- 'RAW',
- 'RAWTOHEX',
- 'REAL',
- 'RECORD',
- 'REF',
- 'REFTOHEX',
- 'REGR_AVGX',
- 'REGR_AVGY',
- 'REGR_COUNT',
- 'REGR_INTERCEPT',
- 'REGR_R2',
- 'REGR_SLOPE',
- 'REGR_SXX',
- 'REGR_SXY',
- 'REGR_SYY',
- 'RELEASE',
- 'RENAME',
- 'REPLACE',
- 'RESOURCE',
- 'RETURN',
- 'RETURNING',
- 'REVERSE',
- 'REVOKE',
- 'ROLE',
- 'ROLLBACK',
- 'ROUND',
- 'ROW',
- 'ROW_NUMBER',
- 'ROWID',
- 'ROWIDTOCHAR',
- 'ROWNUM',
- 'ROWS',
- 'ROWTYPE',
- 'RPAD',
- 'RTRIM',
- 'SAVEPOINT',
- 'SCHEMA',
- 'SECOND',
- 'SEGMENT',
- 'SELECT',
- 'SEPERATE',
- 'SEQUENCE',
- 'SESSION',
- 'SET',
- 'SHARE',
- 'SIGN',
- 'SIN',
- 'SINH',
- 'SIZE',
- 'SMALLINT',
- 'SOUNDEX',
- 'SPACE',
- 'SQL',
- 'SQLCODE',
- 'SQLERRM',
- 'SQRT',
- 'START',
- 'STATISTICS',
- 'STDDEV',
- 'STDDEV_POP',
- 'STDDEV_SAMP',
- 'STOP',
- 'SUBSTR',
- 'SUBSTRB',
- 'SUBTYPE',
- 'SUCCESSFUL',
- 'SUM',
- 'SYNONYM',
- 'SYS_CONTEXT',
- 'SYS_GUID',
- 'SYSDATE',
- 'SYSTEM',
- 'TABLE',
- 'TABLESPACE',
- 'TAN',
- 'TANH',
- 'TEMPORARY',
- 'THEN',
- 'TIME',
- 'TIMESTAMP',
- 'TIMEZONE_ABBR',
- 'TIMEZONE_HOUR',
- 'TIMEZONE_MINUTE',
- 'TIMEZONE_REGION',
- 'TIMING',
- 'TO',
- 'TO_CHAR',
- 'TO_DATE',
- 'TO_LOB',
- 'TO_MULTI_BYTE',
- 'TO_NUMBER',
- 'TO_SINGLE_BYTE',
- 'TRANSACTION',
- 'TRANSLATE',
- 'TRIGGER',
- 'TRIM',
- 'TRUE',
- 'TRUNC',
- 'TRUNCATE',
- 'TYPE',
- 'UI',
- 'UID',
- 'UNION',
- 'UNIQUE',
- 'UPDATE',
- 'UPPER',
- 'USE',
- 'USER',
- 'USERENV',
- 'USING',
- 'VALIDATE',
- 'VALUE',
- 'VALUES',
- 'VAR_POP',
- 'VAR_SAMP',
- 'VARCHAR',
- 'VARCHAR2',
- 'VARIANCE',
- 'VIEW',
- 'VSIZE',
- 'WHEN',
- 'WHENEVER',
- 'WHERE',
- 'WHILE',
- 'WITH',
- 'WORK',
- 'WRITE',
- 'YEAR',
- 'ZONE'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '=', '<', '>', '|'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #993333; font-weight: bold; text-transform: uppercase;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #ff0000;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- ),
-
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * oracle8.php
+ * -----------
+ * Author: Guy Wicks (Guy.Wicks at rbs.co.uk)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * Oracle 8 language file for GeSHi
+ *
+ * CHANGES
+ * -------
+ * 2005/01/29 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Oracle 8 SQL',
+ 'COMMENT_SINGLE' => array(1 => '--'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+ 'QUOTEMARKS' => array("'", '"', '`'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+//Put your package names here - e.g. select distinct ''''|| lower(name) || ''',' from user_source;
+ 6 => array(
+ ),
+
+//Put your table names here - e.g. select distinct ''''|| lower(table_name) || ''',' from user_tables;
+ 5 => array(
+ ),
+
+//Put your view names here - e.g. select distinct ''''|| lower(view_name) || ''',' from user_views;
+ 4 => array(
+ ),
+
+//Put your table field names here - e.g. select distinct ''''|| lower(column_name) || ''',' from user_tab_columns;
+ 3 => array(
+ ),
+//Put ORACLE reserved keywords here (8.1.7). I like mine uppercase.
+ 1 => array(
+ 'ABS',
+ 'ACCESS',
+ 'ACOS',
+ 'ADD',
+ 'ADD_MONTHS',
+ 'ALL',
+ 'ALTER',
+ 'ANALYZE',
+ 'AND',
+ 'ANY',
+ 'ARRAY',
+ 'AS',
+ 'ASC',
+ 'ASCII',
+ 'ASIN',
+ 'ASSOCIATE',
+ 'AT',
+ 'ATAN',
+ 'ATAN2',
+ 'AUDIT',
+ 'AUTHID',
+ 'AVG',
+ 'BEGIN',
+ 'BETWEEN',
+ 'BFILENAME',
+ 'BINARY_INTEGER',
+ 'BITAND',
+ 'BODY',
+ 'BOOLEAN',
+ 'BULK',
+ 'BY',
+ 'CALL',
+ 'CASCADE',
+ 'CASE',
+ 'CEIL',
+ 'CHAR',
+ 'CHAR_BASE',
+ 'CHARTOROWID',
+ 'CHECK',
+ 'CHR',
+ 'CLOSE',
+ 'CLUSTER',
+ 'COALESCE',
+ 'COLLECT',
+ 'COLUMN',
+ 'COMMENT',
+ 'COMMIT',
+ 'COMPRESS',
+ 'CONCAT',
+ 'CONNECT',
+ 'CONSTANT',
+ 'CONSTRAINT',
+ 'CONSTRAINTS',
+ 'CONTEXT',
+ 'CONTROLFILE',
+ 'CONVERT',
+ 'CORR',
+ 'COS',
+ 'COSH',
+ 'COST',
+ 'COUNT',
+ 'COVAR_POP',
+ 'COVAR_SAMP',
+ 'CREATE',
+ 'CUME_DIST',
+ 'CURRENT',
+ 'CURRVAL',
+ 'CURSOR',
+ 'DATABASE',
+ 'DATE',
+ 'DAY',
+ 'DECIMAL',
+ 'DECLARE',
+ 'DECODE',
+ 'DEFAULT',
+ 'DELETE',
+ 'DENSE_RANK',
+ 'DEREF',
+ 'DESC',
+ 'DIMENSION',
+ 'DIRECTORY',
+ 'DISASSOCIATE',
+ 'DISTINCT',
+ 'DO',
+ 'DROP',
+ 'DUMP',
+ 'ELSE',
+ 'ELSIF',
+ 'EMPTY_BLOB',
+ 'EMPTY_CLOB',
+ 'END',
+ 'EXCEPTION',
+ 'EXCLUSIVE',
+ 'EXEC',
+ 'EXECUTE',
+ 'EXISTS',
+ 'EXIT',
+ 'EXP',
+ 'EXPLAIN',
+ 'EXTENDS',
+ 'EXTRACT',
+ 'FALSE',
+ 'FETCH',
+ 'FILE',
+ 'FIRST_VALUE',
+ 'FLOAT',
+ 'FLOOR',
+ 'FOR',
+ 'FORALL',
+ 'FROM',
+ 'FUNCTION',
+ 'GOTO',
+ 'GRANT',
+ 'GREATEST',
+ 'GROUP',
+ 'GROUPING',
+ 'HAVING',
+ 'HEAP',
+ 'HEXTORAW',
+ 'HOUR',
+ 'IDENTIFIED',
+ 'IF',
+ 'IMMEDIATE',
+ 'IN',
+ 'INCREMENT',
+ 'INDEX',
+ 'INDEXTYPE',
+ 'INDICATOR',
+ 'INITCAP',
+ 'INITIAL',
+ 'INSERT',
+ 'INSTR',
+ 'INSTRB',
+ 'INTEGER',
+ 'INTERFACE',
+ 'INTERSECT',
+ 'INTERVAL',
+ 'INTO',
+ 'IS',
+ 'ISOLATION',
+ 'JAVA',
+ 'KEY',
+ 'LAG',
+ 'LAST_DAY',
+ 'LAST_VALUE',
+ 'LEAD',
+ 'LEAST',
+ 'LENGTH',
+ 'LENGTHB',
+ 'LEVEL',
+ 'LIBRARY',
+ 'LIKE',
+ 'LIMITED',
+ 'LINK',
+ 'LN',
+ 'LOCK',
+ 'LOG',
+ 'LONG',
+ 'LOOP',
+ 'LOWER',
+ 'LPAD',
+ 'LTRIM',
+ 'MAKE_REF',
+ 'MATERIALIZED',
+ 'MAX',
+ 'MAXEXTENTS',
+ 'MIN',
+ 'MINUS',
+ 'MINUTE',
+ 'MLSLABEL',
+ 'MOD',
+ 'MODE',
+ 'MODIFY',
+ 'MONTH',
+ 'MONTHS_BETWEEN',
+ 'NATURAL',
+ 'NATURALN',
+ 'NEW',
+ 'NEW_TIME',
+ 'NEXT_DAY',
+ 'NEXTVAL',
+ 'NLS_CHARSET_DECL_LEN',
+ 'NLS_CHARSET_ID',
+ 'NLS_CHARSET_NAME',
+ 'NLS_INITCAP',
+ 'NLS_LOWER',
+ 'NLS_UPPER',
+ 'NLSSORT',
+ 'NOAUDIT',
+ 'NOCOMPRESS',
+ 'NOCOPY',
+ 'NOT',
+ 'NOWAIT',
+ 'NTILE',
+ 'NULL',
+ 'NULLIF',
+ 'NUMBER',
+ 'NUMBER_BASE',
+ 'NUMTODSINTERVAL',
+ 'NUMTOYMINTERVAL',
+ 'NVL',
+ 'NVL2',
+ 'OCIROWID',
+ 'OF',
+ 'OFFLINE',
+ 'ON',
+ 'ONLINE',
+ 'OPAQUE',
+ 'OPEN',
+ 'OPERATOR',
+ 'OPTION',
+ 'OR',
+ 'ORDER',
+ 'ORGANIZATION',
+ 'OTHERS',
+ 'OUT',
+ 'OUTLINE',
+ 'PACKAGE',
+ 'PARTITION',
+ 'PCTFREE',
+ 'PERCENT_RANK',
+ 'PLAN',
+ 'PLS_INTEGER',
+ 'POSITIVE',
+ 'POSITIVEN',
+ 'POWER',
+ 'PRAGMA',
+ 'PRIMARY',
+ 'PRIOR',
+ 'PRIVATE',
+ 'PRIVILEGES',
+ 'PROCEDURE',
+ 'PROFILE',
+ 'PUBLIC',
+ 'RAISE',
+ 'RANGE',
+ 'RANK',
+ 'RATIO_TO_REPORT',
+ 'RAW',
+ 'RAWTOHEX',
+ 'REAL',
+ 'RECORD',
+ 'REF',
+ 'REFTOHEX',
+ 'REGR_AVGX',
+ 'REGR_AVGY',
+ 'REGR_COUNT',
+ 'REGR_INTERCEPT',
+ 'REGR_R2',
+ 'REGR_SLOPE',
+ 'REGR_SXX',
+ 'REGR_SXY',
+ 'REGR_SYY',
+ 'RELEASE',
+ 'RENAME',
+ 'REPLACE',
+ 'RESOURCE',
+ 'RETURN',
+ 'RETURNING',
+ 'REVERSE',
+ 'REVOKE',
+ 'ROLE',
+ 'ROLLBACK',
+ 'ROUND',
+ 'ROW',
+ 'ROW_NUMBER',
+ 'ROWID',
+ 'ROWIDTOCHAR',
+ 'ROWNUM',
+ 'ROWS',
+ 'ROWTYPE',
+ 'RPAD',
+ 'RTRIM',
+ 'SAVEPOINT',
+ 'SCHEMA',
+ 'SECOND',
+ 'SEGMENT',
+ 'SELECT',
+ 'SEPERATE',
+ 'SEQUENCE',
+ 'SESSION',
+ 'SET',
+ 'SHARE',
+ 'SIGN',
+ 'SIN',
+ 'SINH',
+ 'SIZE',
+ 'SMALLINT',
+ 'SOUNDEX',
+ 'SPACE',
+ 'SQL',
+ 'SQLCODE',
+ 'SQLERRM',
+ 'SQRT',
+ 'START',
+ 'STATISTICS',
+ 'STDDEV',
+ 'STDDEV_POP',
+ 'STDDEV_SAMP',
+ 'STOP',
+ 'SUBSTR',
+ 'SUBSTRB',
+ 'SUBTYPE',
+ 'SUCCESSFUL',
+ 'SUM',
+ 'SYNONYM',
+ 'SYS_CONTEXT',
+ 'SYS_GUID',
+ 'SYSDATE',
+ 'SYSTEM',
+ 'TABLE',
+ 'TABLESPACE',
+ 'TAN',
+ 'TANH',
+ 'TEMPORARY',
+ 'THEN',
+ 'TIME',
+ 'TIMESTAMP',
+ 'TIMEZONE_ABBR',
+ 'TIMEZONE_HOUR',
+ 'TIMEZONE_MINUTE',
+ 'TIMEZONE_REGION',
+ 'TIMING',
+ 'TO',
+ 'TO_CHAR',
+ 'TO_DATE',
+ 'TO_LOB',
+ 'TO_MULTI_BYTE',
+ 'TO_NUMBER',
+ 'TO_SINGLE_BYTE',
+ 'TRANSACTION',
+ 'TRANSLATE',
+ 'TRIGGER',
+ 'TRIM',
+ 'TRUE',
+ 'TRUNC',
+ 'TRUNCATE',
+ 'TYPE',
+ 'UI',
+ 'UID',
+ 'UNION',
+ 'UNIQUE',
+ 'UPDATE',
+ 'UPPER',
+ 'USE',
+ 'USER',
+ 'USERENV',
+ 'USING',
+ 'VALIDATE',
+ 'VALUE',
+ 'VALUES',
+ 'VAR_POP',
+ 'VAR_SAMP',
+ 'VARCHAR',
+ 'VARCHAR2',
+ 'VARIANCE',
+ 'VIEW',
+ 'VSIZE',
+ 'WHEN',
+ 'WHENEVER',
+ 'WHERE',
+ 'WHILE',
+ 'WITH',
+ 'WORK',
+ 'WRITE',
+ 'YEAR',
+ 'ZONE'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '=', '<', '>', '|'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #993333; font-weight: bold; text-transform: uppercase;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #ff0000;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/pascal.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/pascal.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/pascal.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,144 +1,144 @@
-<?php
-/*************************************************************************************
- * pascal.php
- * ----------
- * Author: Tux (tux at inamil.cz)
- * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/26
- *
- * Pascal language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.2)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.1)
- * - Added support for URLs
- * 2004/08/05 (1.0.0)
- * - Added support for symbols
- * 2004/07/27 (0.9.1)
- * - Pascal is OO language. Some new words.
- * 2004/07/26 (0.9.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Pascal',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('{' => '}','(*' => '*)'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'if', 'while', 'until', 'repeat', 'default',
- 'do', 'else', 'for', 'switch', 'goto','label','asm','begin','end',
- 'assembler','case', 'downto', 'to','div','mod','far','forward','in','inherited',
- 'inline','interrupt','label','library','not','var','of','then','stdcall',
- 'cdecl','end.','raise','try','except','name','finally','resourcestring','override','overload',
- 'default','public','protected','private','property','published','stored','catch'
- ),
- 2 => array(
- 'nil', 'false', 'break', 'true', 'function', 'procedure','implementation','interface',
- 'unit','program','initialization','finalization','uses'
- ),
- 3 => array(
- 'abs', 'absolute','and','arc','arctan','chr','constructor','destructor',
- 'dispose','cos','eof','eoln','exp','get','index','ln','new','xor','write','writeln',
- 'shr','sin','sqrt','succ','pred','odd','read','readln','ord','ordinal','blockread','blockwrite'
- ),
- 4 => array(
- 'array', 'char', 'const', 'boolean', 'real', 'integer', 'longint',
- 'word', 'shortint', 'record','byte','bytebool','string',
- 'type','object','export','exports','external','file','longbool','pointer','set',
- 'packed','ansistring','union'
- ),
- ),
- 'SYMBOLS' => array(
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => '',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #339933;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #202020;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * pascal.php
+ * ----------
+ * Author: Tux (tux at inamil.cz)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/26
+ *
+ * Pascal language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ * - Added support for URLs
+ * 2004/08/05 (1.0.0)
+ * - Added support for symbols
+ * 2004/07/27 (0.9.1)
+ * - Pascal is OO language. Some new words.
+ * 2004/07/26 (0.9.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Pascal',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('{' => '}','(*' => '*)'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'if', 'while', 'until', 'repeat', 'default',
+ 'do', 'else', 'for', 'switch', 'goto','label','asm','begin','end',
+ 'assembler','case', 'downto', 'to','div','mod','far','forward','in','inherited',
+ 'inline','interrupt','label','library','not','var','of','then','stdcall',
+ 'cdecl','end.','raise','try','except','name','finally','resourcestring','override','overload',
+ 'default','public','protected','private','property','published','stored','catch'
+ ),
+ 2 => array(
+ 'nil', 'false', 'break', 'true', 'function', 'procedure','implementation','interface',
+ 'unit','program','initialization','finalization','uses'
+ ),
+ 3 => array(
+ 'abs', 'absolute','and','arc','arctan','chr','constructor','destructor',
+ 'dispose','cos','eof','eoln','exp','get','index','ln','new','xor','write','writeln',
+ 'shr','sin','sqrt','succ','pred','odd','read','readln','ord','ordinal','blockread','blockwrite'
+ ),
+ 4 => array(
+ 'array', 'char', 'const', 'boolean', 'real', 'integer', 'longint',
+ 'word', 'shortint', 'record','byte','bytebool','string',
+ 'type','object','export','exports','external','file','longbool','pointer','set',
+ 'packed','ansistring','union'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => '',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #339933;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #202020;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/per.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/per.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/per.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,302 +1,302 @@
-<?php
-/*************************************************************************************
- * per.php
- * --------
- * Author: Lars Gersmann (lars.gersmann at gmail.com)
- * Copyright: (c) 2007 Lars Gersmann
- * Release Version: 1.0.7.21
- * Date Started: 2007/06/03
- *
- * Per (forms) (FOURJ's Genero 4GL) language file for GeSHi.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
- $language_data = array (
- 'LANG_NAME' => 'per',
- 'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),
- 'COMMENT_MULTI' => array('{' => '}'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- "ACCELERATOR",
- "ACCELERATOR2",
- "ACTION",
- "ALT",
- "AND",
- "AUTO",
- "AUTONEXT",
- "AUTOSCALE",
- "BETWEEN",
- "BOTH",
- "BUTTON",
- "BUTTONEDIT",
- "BUTTONTEXTHIDDEN",
- "BY",
- "BYTE",
- "CANVAS",
- "CENTER",
- "CHECKBOX",
- "CLASS",
- "COLOR",
- "COLUMNS",
- "COMBOBOX",
- "COMMAND",
- "COMMENT",
- "COMMENTS",
- "COMPACT",
- "COMPRESS",
- "CONFIG",
- "CONTROL",
- "CURRENT",
- "DATABASE",
- "DATEEDIT",
- "DEC",
- "DEFAULT",
- "DEFAULTS",
- "DELIMITERS",
- "DISPLAY",
- "DISPLAYONLY",
- "DOWNSHIFT",
- "DYNAMIC",
- "EDIT",
- "FIXED",
- "FOLDER",
- "FONTPITCH",
- "FORMAT",
- "FORMONLY",
- "GRID",
- "GRIDCHILDRENINPARENT",
- "GROUP",
- "HBOX",
- "HEIGHT",
- "HIDDEN",
- "HORIZONTAL",
- "INCLUDE",
- "INITIAL",
- "INITIALIZER",
- "INPUT",
- "INSTRUCTIONS",
- "INTERVAL",
- "INVISIBLE",
- "IS",
- "ITEM",
- "ITEMS",
- "JUSTIFY",
- "KEY",
- "KEYS",
- "LABEL",
- "LEFT",
- "LIKE",
- "LINES",
- "MATCHES",
- "NAME",
- "NOENTRY",
- "NONCOMPRESS",
- "NORMAL",
- "NOT",
- "NOUPDATE",
- "OPTIONS",
- "OR",
- "ORIENTATION",
- "PACKED",
- "PAGE",
- "PICTURE",
- "PIXELHEIGHT",
- "PIXELS",
- "PIXELWIDTH",
- "POINTS",
- "PROGRAM",
- "PROGRESSBAR",
- "QUERYCLEAR",
- "QUERYEDITABLE",
- "RADIOGROUP",
- "RECORD",
- "REQUIRED",
- "REVERSE",
- "RIGHT",
- "SAMPLE",
- "SCREEN",
- "SCROLL",
- "SCROLLBARS",
- "SCROLLGRID",
- "SECOND",
- "SEPARATOR",
- "SHIFT",
- "SIZE",
- "SIZEPOLICY",
- "SMALLFLOAT",
- "SMALLINT",
- "SPACING",
- "STRETCH",
- "STYLE",
- "TABINDEX",
- "TABLE",
- "TAG",
- "TEXT",
- "TEXTEDIT",
- "THROUGH",
- "THRU",
- "TITLE",
- "TO",
- "TOOLBAR",
- "TOPMENU",
- "TYPE",
- "UNHIDABLE",
- "UNHIDABLECOLUMNS",
- "UNMOVABLE",
- "UNMOVABLECOLUMNS",
- "UNSIZABLE",
- "UNSIZABLECOLUMNS",
- "UNSORTABLE",
- "UNSORTABLECOLUMNS",
- "UPSHIFT",
- "USER",
- "VALIDATE",
- "VALUECHECKED",
- "VALUEMAX",
- "VALUEMIN",
- "VALUEUNCHECKED",
- "VARCHAR",
- "VARIABLE",
- "VBOX",
- "VERIFY",
- "VERSION",
- "VERTICAL",
- "TIMESTAMP",
- "WANTCOLUMNSANCHORED", /* to be removed! */
- "WANTFIXEDPAGESIZE",
- "WANTNORETURNS",
- "WANTTABS",
- "WHERE",
- "WIDGET",
- "WIDTH",
- "WINDOWSTYLE",
- "WITHOUT",
- "WORDWRAP",
- "X",
- "Y",
- "ZEROFILL",
- "SCHEMA",
- "ATTRIBUTES",
- "TABLES",
- "LAYOUT",
- "END"
- ),
- 2 => array(
- "YEAR",
- "BLACK",
- "BLINK",
- "BLUE",
- "YELLOW",
- "WHITE",
- "UNDERLINE",
- "CENTURY",
- "FRACTION",
- "CHAR",
- "CHARACTER",
- "CHARACTERS",
- "CYAN",
- "DATE",
- "DATETIME",
- "DAY",
- "DECIMAL",
- "FALSE",
- "FLOAT",
- "GREEN",
- "HOUR",
- "INT",
- "INTEGER",
- "MAGENTA",
- "MINUTE",
- "MONEY",
- "NONE",
- "NULL",
- "REAL",
- "RED",
- "TRUE",
- "TODAY",
- "MONTH",
- "IMAGE"
- ),
- ),
- 'SYMBOLS' => array(
- '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',
- '(', ')', '[', ']'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0600FF;',
- 2 => 'color: #0000FF; font-weight: bold;',
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008080; font-style: italic;',
- 2 => 'color: #008080;',
- 'MULTI' => 'color: green'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #008080; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #808080;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #0000FF;',
- 2 => 'color: #0000FF;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #008000;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * per.php
+ * --------
+ * Author: Lars Gersmann (lars.gersmann at gmail.com)
+ * Copyright: (c) 2007 Lars Gersmann
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/06/03
+ *
+ * Per (forms) (FOURJ's Genero 4GL) language file for GeSHi.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+ 'LANG_NAME' => 'per',
+ 'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),
+ 'COMMENT_MULTI' => array('{' => '}'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ "ACCELERATOR",
+ "ACCELERATOR2",
+ "ACTION",
+ "ALT",
+ "AND",
+ "AUTO",
+ "AUTONEXT",
+ "AUTOSCALE",
+ "BETWEEN",
+ "BOTH",
+ "BUTTON",
+ "BUTTONEDIT",
+ "BUTTONTEXTHIDDEN",
+ "BY",
+ "BYTE",
+ "CANVAS",
+ "CENTER",
+ "CHECKBOX",
+ "CLASS",
+ "COLOR",
+ "COLUMNS",
+ "COMBOBOX",
+ "COMMAND",
+ "COMMENT",
+ "COMMENTS",
+ "COMPACT",
+ "COMPRESS",
+ "CONFIG",
+ "CONTROL",
+ "CURRENT",
+ "DATABASE",
+ "DATEEDIT",
+ "DEC",
+ "DEFAULT",
+ "DEFAULTS",
+ "DELIMITERS",
+ "DISPLAY",
+ "DISPLAYONLY",
+ "DOWNSHIFT",
+ "DYNAMIC",
+ "EDIT",
+ "FIXED",
+ "FOLDER",
+ "FONTPITCH",
+ "FORMAT",
+ "FORMONLY",
+ "GRID",
+ "GRIDCHILDRENINPARENT",
+ "GROUP",
+ "HBOX",
+ "HEIGHT",
+ "HIDDEN",
+ "HORIZONTAL",
+ "INCLUDE",
+ "INITIAL",
+ "INITIALIZER",
+ "INPUT",
+ "INSTRUCTIONS",
+ "INTERVAL",
+ "INVISIBLE",
+ "IS",
+ "ITEM",
+ "ITEMS",
+ "JUSTIFY",
+ "KEY",
+ "KEYS",
+ "LABEL",
+ "LEFT",
+ "LIKE",
+ "LINES",
+ "MATCHES",
+ "NAME",
+ "NOENTRY",
+ "NONCOMPRESS",
+ "NORMAL",
+ "NOT",
+ "NOUPDATE",
+ "OPTIONS",
+ "OR",
+ "ORIENTATION",
+ "PACKED",
+ "PAGE",
+ "PICTURE",
+ "PIXELHEIGHT",
+ "PIXELS",
+ "PIXELWIDTH",
+ "POINTS",
+ "PROGRAM",
+ "PROGRESSBAR",
+ "QUERYCLEAR",
+ "QUERYEDITABLE",
+ "RADIOGROUP",
+ "RECORD",
+ "REQUIRED",
+ "REVERSE",
+ "RIGHT",
+ "SAMPLE",
+ "SCREEN",
+ "SCROLL",
+ "SCROLLBARS",
+ "SCROLLGRID",
+ "SECOND",
+ "SEPARATOR",
+ "SHIFT",
+ "SIZE",
+ "SIZEPOLICY",
+ "SMALLFLOAT",
+ "SMALLINT",
+ "SPACING",
+ "STRETCH",
+ "STYLE",
+ "TABINDEX",
+ "TABLE",
+ "TAG",
+ "TEXT",
+ "TEXTEDIT",
+ "THROUGH",
+ "THRU",
+ "TITLE",
+ "TO",
+ "TOOLBAR",
+ "TOPMENU",
+ "TYPE",
+ "UNHIDABLE",
+ "UNHIDABLECOLUMNS",
+ "UNMOVABLE",
+ "UNMOVABLECOLUMNS",
+ "UNSIZABLE",
+ "UNSIZABLECOLUMNS",
+ "UNSORTABLE",
+ "UNSORTABLECOLUMNS",
+ "UPSHIFT",
+ "USER",
+ "VALIDATE",
+ "VALUECHECKED",
+ "VALUEMAX",
+ "VALUEMIN",
+ "VALUEUNCHECKED",
+ "VARCHAR",
+ "VARIABLE",
+ "VBOX",
+ "VERIFY",
+ "VERSION",
+ "VERTICAL",
+ "TIMESTAMP",
+ "WANTCOLUMNSANCHORED", /* to be removed! */
+ "WANTFIXEDPAGESIZE",
+ "WANTNORETURNS",
+ "WANTTABS",
+ "WHERE",
+ "WIDGET",
+ "WIDTH",
+ "WINDOWSTYLE",
+ "WITHOUT",
+ "WORDWRAP",
+ "X",
+ "Y",
+ "ZEROFILL",
+ "SCHEMA",
+ "ATTRIBUTES",
+ "TABLES",
+ "LAYOUT",
+ "END"
+ ),
+ 2 => array(
+ "YEAR",
+ "BLACK",
+ "BLINK",
+ "BLUE",
+ "YELLOW",
+ "WHITE",
+ "UNDERLINE",
+ "CENTURY",
+ "FRACTION",
+ "CHAR",
+ "CHARACTER",
+ "CHARACTERS",
+ "CYAN",
+ "DATE",
+ "DATETIME",
+ "DAY",
+ "DECIMAL",
+ "FALSE",
+ "FLOAT",
+ "GREEN",
+ "HOUR",
+ "INT",
+ "INTEGER",
+ "MAGENTA",
+ "MINUTE",
+ "MONEY",
+ "NONE",
+ "NULL",
+ "REAL",
+ "RED",
+ "TRUE",
+ "TODAY",
+ "MONTH",
+ "IMAGE"
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',
+ '(', ')', '[', ']'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0600FF;',
+ 2 => 'color: #0000FF; font-weight: bold;',
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008080; font-style: italic;',
+ 2 => 'color: #008080;',
+ 'MULTI' => 'color: green'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #008080; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #808080;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #0000FF;',
+ 2 => 'color: #0000FF;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/perl.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/perl.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/perl.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,179 +1,179 @@
-<?php
-/*************************************************************************************
- * perl.php
- * --------
- * Author: Andreas Gohr (andi at splitbrain.org), Ben Keen (ben.keen at gmail.com)
- * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/20
- *
- * Perl language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2008/02/15 (1.003)
- * - Fixed SF#1891630 with placebo patch
- * 2006/01/05 (1.0.2)
- * - Used hardescape feature for ' strings (Cliff Stanford)
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/08/20 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * LABEL:
- * * string comparison operators
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Perl',
- 'COMMENT_SINGLE' => array(1 => '#'),
- 'COMMENT_MULTI' => array(
- '=back' => '=cut',
- '=head' => '=cut',
- '=item' => '=cut',
- '=over' => '=cut',
- '=begin' => '=cut',
- '=end' => '=cut',
- '=for' => '=cut',
- '=encoding' => '=cut',
- '=pod' => '=cut'
- ),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'HARDQUOTE' => array("'", "'"), // An optional 2-element array defining the beginning and end of a hard-quoted string
- 'HARDESCAPE' => array('\\\'', "\\\\"), // Things that must still be escaped inside a hard-quoted string
- // If HARDQUOTE is defined, HARDESCAPE must be defined
- // This will not work unless the first character of each element is either in the
- // QUOTEMARKS array or is the ESCAPE_CHAR
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'case', 'do', 'else', 'elsif', 'for', 'if', 'then', 'until', 'while', 'foreach', 'my',
- 'or', 'and', 'unless', 'next', 'last', 'redo', 'not', 'our',
- 'reset', 'continue','and', 'cmp', 'ne'
- ),
- 2 => array(
- 'use', 'sub', 'new', '__END__', '__DATA__', '__DIE__', '__WARN__', 'BEGIN',
- 'STDIN', 'STDOUT', 'STDERR'
- ),
- 3 => array(
- 'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 'bless',
- 'caller', 'chdir', 'chmod', 'chomp', 'chop', 'chown', 'chr',
- 'chroot', 'close', 'closedir', 'connect', 'continue', 'cos',
- 'crypt', 'dbmclose', 'dbmopen', 'defined', 'delete', 'die',
- 'dump', 'each', 'endgrent', 'endhostent', 'endnetent', 'endprotoent',
- 'endpwent', 'endservent', 'eof', 'eval', 'exec', 'exists', 'exit',
- 'exp', 'fcntl', 'fileno', 'flock', 'fork', 'format', 'formline',
- 'getc', 'getgrent', 'getgrgid', 'getgrnam', 'gethostbyaddr',
- 'gethostbyname', 'gethostent', 'getlogin', 'getnetbyaddr', 'getnetbyname',
- 'getnetent', 'getpeername', 'getpgrp', 'getppid', 'getpriority',
- 'getprotobyname', 'getprotobynumber', 'getprotoent', 'getpwent',
- 'getpwnam', 'getpwuid', 'getservbyname', 'getservbyport', 'getservent',
- 'getsockname', 'getsockopt', 'glob', 'gmtime', 'goto', 'grep',
- 'hex', 'import', 'index', 'int', 'ioctl', 'join', 'keys', 'kill',
- 'last', 'lc', 'lcfirst', 'length', 'link', 'listen', 'local',
- 'localtime', 'log', 'lstat', 'm', 'map', 'mkdir', 'msgctl', 'msgget',
- 'msgrcv', 'msgsnd', 'my', 'next', 'no', 'oct', 'open', 'opendir',
- 'ord', 'our', 'pack', 'package', 'pipe', 'pop', 'pos', 'print',
- 'printf', 'prototype', 'push', 'qq', 'qr', 'quotemeta', 'qw',
- 'qx', 'q', 'rand', 'read', 'readdir', 'readline', 'readlink', 'readpipe',
- 'recv', 'redo', 'ref', 'rename', 'require', 'return',
- 'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 'scalar', 'seek',
- 'seekdir', 'select', 'semctl', 'semget', 'semop', 'send', 'setgrent',
- 'sethostent', 'setnetent', 'setpgrp', 'setpriority', 'setprotoent',
- 'setpwent', 'setservent', 'setsockopt', 'shift', 'shmctl', 'shmget',
- 'shmread', 'shmwrite', 'shutdown', 'sin', 'sleep', 'socket', 'socketpair',
- 'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 'stat',
- 'study', 'substr', 'symlink', 'syscall', 'sysopen', 'sysread',
- 'sysseek', 'system', 'syswrite', 'tell', 'telldir', 'tie', 'tied',
- 'time', 'times', 'tr', 'truncate', 'uc', 'ucfirst', 'umask', 'undef',
- 'unlink', 'unpack', 'unshift', 'untie', 'utime', 'values',
- 'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'write', 'y'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => true,
- 2 => true,
- 3 => true,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;',
- 4 => 'color: #009999;',
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 3 => 'http://perldoc.perl.org/functions/{FNAME}.html'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '->',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- 0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
- 4 => '<[a-zA-Z_][a-zA-Z0-9_]*>',
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * perl.php
+ * --------
+ * Author: Andreas Gohr (andi at splitbrain.org), Ben Keen (ben.keen at gmail.com)
+ * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/20
+ *
+ * Perl language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2008/02/15 (1.003)
+ * - Fixed SF#1891630 with placebo patch
+ * 2006/01/05 (1.0.2)
+ * - Used hardescape feature for ' strings (Cliff Stanford)
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/08/20 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * LABEL:
+ * * string comparison operators
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Perl',
+ 'COMMENT_SINGLE' => array(1 => '#'),
+ 'COMMENT_MULTI' => array(
+ '=back' => '=cut',
+ '=head' => '=cut',
+ '=item' => '=cut',
+ '=over' => '=cut',
+ '=begin' => '=cut',
+ '=end' => '=cut',
+ '=for' => '=cut',
+ '=encoding' => '=cut',
+ '=pod' => '=cut'
+ ),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'HARDQUOTE' => array("'", "'"), // An optional 2-element array defining the beginning and end of a hard-quoted string
+ 'HARDESCAPE' => array('\\\'', "\\\\"), // Things that must still be escaped inside a hard-quoted string
+ // If HARDQUOTE is defined, HARDESCAPE must be defined
+ // This will not work unless the first character of each element is either in the
+ // QUOTEMARKS array or is the ESCAPE_CHAR
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'case', 'do', 'else', 'elsif', 'for', 'if', 'then', 'until', 'while', 'foreach', 'my',
+ 'or', 'and', 'unless', 'next', 'last', 'redo', 'not', 'our',
+ 'reset', 'continue','and', 'cmp', 'ne'
+ ),
+ 2 => array(
+ 'use', 'sub', 'new', '__END__', '__DATA__', '__DIE__', '__WARN__', 'BEGIN',
+ 'STDIN', 'STDOUT', 'STDERR'
+ ),
+ 3 => array(
+ 'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 'bless',
+ 'caller', 'chdir', 'chmod', 'chomp', 'chop', 'chown', 'chr',
+ 'chroot', 'close', 'closedir', 'connect', 'continue', 'cos',
+ 'crypt', 'dbmclose', 'dbmopen', 'defined', 'delete', 'die',
+ 'dump', 'each', 'endgrent', 'endhostent', 'endnetent', 'endprotoent',
+ 'endpwent', 'endservent', 'eof', 'eval', 'exec', 'exists', 'exit',
+ 'exp', 'fcntl', 'fileno', 'flock', 'fork', 'format', 'formline',
+ 'getc', 'getgrent', 'getgrgid', 'getgrnam', 'gethostbyaddr',
+ 'gethostbyname', 'gethostent', 'getlogin', 'getnetbyaddr', 'getnetbyname',
+ 'getnetent', 'getpeername', 'getpgrp', 'getppid', 'getpriority',
+ 'getprotobyname', 'getprotobynumber', 'getprotoent', 'getpwent',
+ 'getpwnam', 'getpwuid', 'getservbyname', 'getservbyport', 'getservent',
+ 'getsockname', 'getsockopt', 'glob', 'gmtime', 'goto', 'grep',
+ 'hex', 'import', 'index', 'int', 'ioctl', 'join', 'keys', 'kill',
+ 'last', 'lc', 'lcfirst', 'length', 'link', 'listen', 'local',
+ 'localtime', 'log', 'lstat', 'm', 'map', 'mkdir', 'msgctl', 'msgget',
+ 'msgrcv', 'msgsnd', 'my', 'next', 'no', 'oct', 'open', 'opendir',
+ 'ord', 'our', 'pack', 'package', 'pipe', 'pop', 'pos', 'print',
+ 'printf', 'prototype', 'push', 'qq', 'qr', 'quotemeta', 'qw',
+ 'qx', 'q', 'rand', 'read', 'readdir', 'readline', 'readlink', 'readpipe',
+ 'recv', 'redo', 'ref', 'rename', 'require', 'return',
+ 'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 'scalar', 'seek',
+ 'seekdir', 'select', 'semctl', 'semget', 'semop', 'send', 'setgrent',
+ 'sethostent', 'setnetent', 'setpgrp', 'setpriority', 'setprotoent',
+ 'setpwent', 'setservent', 'setsockopt', 'shift', 'shmctl', 'shmget',
+ 'shmread', 'shmwrite', 'shutdown', 'sin', 'sleep', 'socket', 'socketpair',
+ 'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 'stat',
+ 'study', 'substr', 'symlink', 'syscall', 'sysopen', 'sysread',
+ 'sysseek', 'system', 'syswrite', 'tell', 'telldir', 'tie', 'tied',
+ 'time', 'times', 'tr', 'truncate', 'uc', 'ucfirst', 'umask', 'undef',
+ 'unlink', 'unpack', 'unshift', 'untie', 'utime', 'values',
+ 'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'write', 'y'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;',
+ 4 => 'color: #009999;',
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 3 => 'http://perldoc.perl.org/functions/{FNAME}.html'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '->',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ 0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
+ 4 => '<[a-zA-Z_][a-zA-Z0-9_]*>',
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/php-brief.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/php-brief.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/php-brief.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,166 +1,166 @@
-<?php
-/*************************************************************************************
- * php-brief.php
- * -------------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/02
- *
- * PHP language file for GeSHi (brief version).
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * - Fixed &new problem
- * 2004/10/27 (1.0.2)
- * - Added support for URLs
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/07/14)
- * -------------------------
- * * Remove more functions that are hardly used
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'PHP',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'include', 'require', 'include_once', 'require_once',
- 'for', 'as', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
- 'return', 'break'
- ),
- 2 => array(
- 'null', '__LINE__', '__FILE__',
- 'false', '<?php', '?>',
- 'true', 'var', 'default',
- 'function', 'class', 'new', '&new', 'public', 'private', 'interface', 'extends',
- ),
- 3 => array(
- 'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',
- 'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
- 'extension_loaded', 'get_extension_funcs', 'debug_backtrace',
- 'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
- 'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
- 'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',
- 'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd
', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
- 'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_ke
y_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',
- 'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',
- 'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows',
'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',
- 'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name'
, 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
- 'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
- 'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}',
- '!', '@', '%', '&', '|', '/',
- '<', '>',
- '=', '-', '+', '*',
- '.', ':', ',', ';'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;'
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- 3 => ''
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.php.net/{FNAME}',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '->',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- 0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- '<?php' => '?>',
- '<?' => '?>',
- '<%' => '%>',
- '<script language="php">' => '</script>'
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- 1 => true,
- 2 => true,
- 3 => true
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * php-brief.php
+ * -------------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/02
+ *
+ * PHP language file for GeSHi (brief version).
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * - Fixed &new problem
+ * 2004/10/27 (1.0.2)
+ * - Added support for URLs
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Remove more functions that are hardly used
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'PHP',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'include', 'require', 'include_once', 'require_once',
+ 'for', 'as', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
+ 'return', 'break'
+ ),
+ 2 => array(
+ 'null', '__LINE__', '__FILE__',
+ 'false', '<?php', '?>',
+ 'true', 'var', 'default',
+ 'function', 'class', 'new', '&new', 'public', 'private', 'interface', 'extends',
+ ),
+ 3 => array(
+ 'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',
+ 'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
+ 'extension_loaded', 'get_extension_funcs', 'debug_backtrace',
+ 'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
+ 'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
+ 'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',
+ 'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd
', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
+ 'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_ke
y_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',
+ 'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',
+ 'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows',
'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',
+ 'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name'
, 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
+ 'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
+ 'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}',
+ '!', '@', '%', '&', '|', '/',
+ '<', '>',
+ '=', '-', '+', '*',
+ '.', ':', ',', ';'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;'
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.php.net/{FNAME}',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '->',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ 0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ '<?php' => '?>',
+ '<?' => '?>',
+ '<%' => '%>',
+ '<script language="php">' => '</script>'
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ 1 => true,
+ 2 => true,
+ 3 => true
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/php.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/php.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/php.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,359 +1,359 @@
-<?php
-/*************************************************************************************
- * php.php
- * --------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/20
- *
- * PHP language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/25 (1.0.3)
- * - Added support for multiple object splitters
- * - Fixed &new problem
- * 2004/10/27 (1.0.2)
- * - Added URL support
- * - Added extra constants
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/07/14)
- * -------------------------
- * * Make sure the last few function I may have missed
- * (like eval()) are included for highlighting
- * * Split to several files - php4, php5 etc
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'PHP',
- 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'include', 'require', 'include_once', 'require_once',
- 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile',
- 'endif', 'switch', 'case', 'endswitch', 'endfor', 'endforeach',
- 'return', 'break', 'continue'
- ),
- 2 => array(
- 'null', '__LINE__', '__FILE__',
- 'false', '<?php', '?>', '<?',
- '<script language', '</script>',
- 'true', 'var', 'default',
- 'function', 'class', 'new', '&new', 'public', 'private', 'interface', 'extends',
- '__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION',
- 'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR',
- 'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR',
- 'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
- 'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
- 'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR',
- 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
- ),
- 3 => array(
- 'zlib_get_coding_type','zend_version','zend_logo_guid','yp_order','yp_next',
- 'yp_match','yp_master','yp_get_default_domain','yp_first','yp_errno','yp_err_string',
- 'yp_cat','yp_all','xml_set_unparsed_entity_decl_handler','xml_set_start_namespace_decl_handler','xml_set_processing_instruction_handler','xml_set_object',
- 'xml_set_notation_decl_handler','xml_set_external_entity_ref_handler','xml_set_end_namespace_decl_handler','xml_set_element_handler','xml_set_default_handler','xml_set_character_data_handler',
- 'xml_parser_set_option','xml_parser_get_option','xml_parser_free','xml_parser_create_ns','xml_parser_create','xml_parse_into_struct',
- 'xml_parse','xml_get_error_code','xml_get_current_line_number','xml_get_current_column_number','xml_get_current_byte_index','xml_error_string',
- 'wordwrap','wddx_serialize_vars','wddx_serialize_value','wddx_packet_start','wddx_packet_end','wddx_deserialize',
- 'wddx_add_vars','vsprintf','vprintf','virtual','version_compare','var_export',
- 'var_dump','utf8_encode','utf8_decode','usort','usleep','user_error',
- 'urlencode','urldecode','unserialize','unregister_tick_function','unpack','unlink',
- 'unixtojd','uniqid','umask','uksort','ucwords','ucfirst',
- 'uasort','trim','trigger_error','touch','token_name','token_get_all',
- 'tmpfile','time','textdomain','tempnam','tanh','tan',
- 'system','syslog','symlink','substr_replace','substr_count','substr',
- 'strval','strtr','strtoupper','strtotime','strtolower','strtok',
- 'strstr','strspn','strrpos','strrev','strrchr','strpos',
- 'strncmp','strncasecmp','strnatcmp','strnatcasecmp','strlen','stristr',
- 'stripslashes','stripcslashes','strip_tags','strftime','stream_wrapper_register','stream_set_write_buffer',
- 'stream_set_timeout','stream_set_blocking','stream_select','stream_register_wrapper','stream_get_meta_data','stream_filter_prepend',
- 'stream_filter_append','stream_context_set_params','stream_context_set_option','stream_context_get_options','stream_context_create','strcspn',
- 'strcoll','strcmp','strchr','strcasecmp','str_word_count','str_shuffle',
- 'str_rot13','str_replace','str_repeat','str_pad','stat','sscanf',
- 'srand','sqrt','sql_regcase','sprintf','spliti','split',
- 'soundex','sort','socket_writev','socket_write','socket_strerror','socket_shutdown',
- 'socket_setopt','socket_set_timeout','socket_set_option','socket_set_nonblock','socket_set_blocking','socket_set_block',
- 'socket_sendto','socket_sendmsg','socket_send','socket_select','socket_recvmsg','socket_recvfrom',
- 'socket_recv','socket_readv','socket_read','socket_listen','socket_last_error','socket_iovec_set',
- 'socket_iovec_free','socket_iovec_fetch','socket_iovec_delete','socket_iovec_alloc','socket_iovec_add','socket_getsockname',
- 'socket_getpeername','socket_getopt','socket_get_status','socket_get_option','socket_create_pair','socket_create_listen',
- 'socket_create','socket_connect','socket_close','socket_clear_error','socket_bind','socket_accept',
- 'sleep','sizeof','sinh','sin','similar_text','shuffle',
- 'show_source','shmop_write','shmop_size','shmop_read','shmop_open','shmop_delete',
- 'shmop_close','shm_remove_var','shm_remove','shm_put_var','shm_get_var','shm_detach',
- 'shm_attach','shell_exec','sha1_file','sha1','settype','setlocale',
- 'setcookie','set_time_limit','set_socket_blocking','set_magic_quotes_runtime','set_include_path','set_file_buffer',
- 'set_error_handler','session_write_close','session_unset','session_unregister','session_start','session_set_save_handler',
- 'session_set_cookie_params','session_save_path','session_register','session_regenerate_id','session_name','session_module_name',
- 'session_is_registered','session_id','session_get_cookie_params','session_encode','session_destroy','session_decode',
- 'session_cache_limiter','session_cache_expire','serialize','sem_remove','sem_release','sem_get',
- 'sem_acquire','rtrim','rsort','round','rmdir','rewinddir',
- 'rewind','restore_include_path','restore_error_handler','reset','rename','register_tick_function',
- 'register_shutdown_function','realpath','readlink','readgzfile','readfile','readdir',
- 'read_exif_data','rawurlencode','rawurldecode','range','rand','rad2deg',
- 'quotemeta','quoted_printable_decode','putenv','proc_open','proc_close','printf',
- 'print_r','prev','preg_split','preg_replace_callback','preg_replace','preg_quote',
- 'preg_match_all','preg_match','preg_grep','pow','posix_uname','posix_ttyname',
- 'posix_times','posix_strerror','posix_setuid','posix_setsid','posix_setpgid','posix_setgid',
- 'posix_seteuid','posix_setegid','posix_mkfifo','posix_kill','posix_isatty','posix_getuid',
- 'posix_getsid','posix_getrlimit','posix_getpwuid','posix_getpwnam','posix_getppid','posix_getpid',
- 'posix_getpgrp','posix_getpgid','posix_getlogin','posix_getgroups','posix_getgrnam','posix_getgrgid',
- 'posix_getgid','posix_geteuid','posix_getegid','posix_getcwd','posix_get_last_error','posix_errno',
- 'posix_ctermid','pos','popen','pi','phpversion','phpinfo',
- 'phpcredits','php_uname','php_sapi_name','php_logo_guid','php_ini_scanned_files','pg_update',
- 'pg_untrace','pg_unescape_bytea','pg_tty','pg_trace','pg_setclientencoding','pg_set_client_encoding',
- 'pg_send_query','pg_select','pg_result_status','pg_result_seek','pg_result_error','pg_result',
- 'pg_query','pg_put_line','pg_port','pg_ping','pg_pconnect','pg_options',
- 'pg_numrows','pg_numfields','pg_num_rows','pg_num_fields','pg_meta_data','pg_lowrite',
- 'pg_lounlink','pg_loreadall','pg_loread','pg_loopen','pg_loimport','pg_loexport',
- 'pg_locreate','pg_loclose','pg_lo_write','pg_lo_unlink','pg_lo_tell','pg_lo_seek',
- 'pg_lo_read_all','pg_lo_read','pg_lo_open','pg_lo_import','pg_lo_export','pg_lo_create',
- 'pg_lo_close','pg_last_oid','pg_last_notice','pg_last_error','pg_insert','pg_host',
- 'pg_getlastoid','pg_get_result','pg_get_pid','pg_get_notify','pg_freeresult','pg_free_result',
- 'pg_fieldtype','pg_fieldsize','pg_fieldprtlen','pg_fieldnum','pg_fieldname','pg_fieldisnull',
- 'pg_field_type','pg_field_size','pg_field_prtlen','pg_field_num','pg_field_name','pg_field_is_null',
- 'pg_fetch_row','pg_fetch_result','pg_fetch_object','pg_fetch_assoc','pg_fetch_array','pg_fetch_all',
- 'pg_exec','pg_escape_string','pg_escape_bytea','pg_errormessage','pg_end_copy','pg_delete',
- 'pg_dbname','pg_copy_to','pg_copy_from','pg_convert','pg_connection_status','pg_connection_reset',
- 'pg_connection_busy','pg_connect','pg_cmdtuples','pg_close','pg_clientencoding','pg_client_encoding',
- 'pg_cancel_query','pg_affected_rows','pfsockopen','pclose','pathinfo','passthru',
- 'parse_url','parse_str','parse_ini_file','pack','overload','output_reset_rewrite_vars',
- 'output_add_rewrite_var','ord','openssl_x509_read','openssl_x509_parse','openssl_x509_free','openssl_x509_export_to_file',
- 'openssl_x509_export','openssl_x509_checkpurpose','openssl_x509_check_private_key','openssl_verify','openssl_sign','openssl_seal',
- 'openssl_public_encrypt','openssl_public_decrypt','openssl_private_encrypt','openssl_private_decrypt','openssl_pkey_new','openssl_pkey_get_public',
- 'openssl_pkey_get_private','openssl_pkey_free','openssl_pkey_export_to_file','openssl_pkey_export','openssl_pkcs7_verify','openssl_pkcs7_sign',
- 'openssl_pkcs7_encrypt','openssl_pkcs7_decrypt','openssl_open','openssl_get_publickey','openssl_get_privatekey','openssl_free_key',
- 'openssl_error_string','openssl_csr_sign','openssl_csr_new','openssl_csr_export_to_file','openssl_csr_export','openlog',
- 'opendir','octdec','ob_start','ob_list_handlers','ob_implicit_flush','ob_iconv_handler',
- 'ob_gzhandler','ob_get_status','ob_get_level','ob_get_length','ob_get_flush','ob_get_contents',
- 'ob_get_clean','ob_flush','ob_end_flush','ob_end_clean','ob_clean','number_format',
- 'nl_langinfo','nl2br','ngettext','next','natsort','natcasesort',
- 'mysql_unbuffered_query','mysql_thread_id','mysql_tablename','mysql_table_name','mysql_stat','mysql_selectdb',
- 'mysql_select_db','mysql_result','mysql_real_escape_string','mysql_query','mysql_ping','mysql_pconnect',
- 'mysql_numrows','mysql_numfields','mysql_num_rows','mysql_num_fields','mysql_listtables','mysql_listfields',
- 'mysql_listdbs','mysql_list_tables','mysql_list_processes','mysql_list_fields','mysql_list_dbs','mysql_insert_id',
- 'mysql_info','mysql_get_server_info','mysql_get_proto_info','mysql_get_host_info','mysql_get_client_info','mysql_freeresult',
- 'mysql_free_result','mysql_fieldtype','mysql_fieldtable','mysql_fieldname','mysql_fieldlen','mysql_fieldflags',
- 'mysql_field_type','mysql_field_table','mysql_field_seek','mysql_field_name','mysql_field_len','mysql_field_flags',
- 'mysql_fetch_row','mysql_fetch_object','mysql_fetch_lengths','mysql_fetch_field','mysql_fetch_assoc','mysql_fetch_array',
- 'mysql_escape_string','mysql_error','mysql_errno','mysql_dropdb','mysql_drop_db','mysql_dbname',
- 'mysql_db_query','mysql_db_name','mysql_data_seek','mysql_createdb','mysql_create_db','mysql_connect',
- 'mysql_close','mysql_client_encoding','mysql_affected_rows','mysql','mt_srand','mt_rand',
- 'mt_getrandmax','move_uploaded_file','money_format','mktime','mkdir','min',
- 'microtime','method_exists','metaphone','memory_get_usage','md5_file','md5',
- 'mbsubstr','mbstrrpos','mbstrpos','mbstrlen','mbstrcut','mbsplit',
- 'mbregex_encoding','mberegi_replace','mberegi','mbereg_search_setpos','mbereg_search_regs','mbereg_search_pos',
- 'mbereg_search_init','mbereg_search_getregs','mbereg_search_getpos','mbereg_search','mbereg_replace','mbereg_match',
- 'mbereg','mb_substr_count','mb_substr','mb_substitute_character','mb_strwidth','mb_strtoupper',
- 'mb_strtolower','mb_strrpos','mb_strpos','mb_strlen','mb_strimwidth','mb_strcut',
- 'mb_split','mb_send_mail','mb_regex_set_options','mb_regex_encoding','mb_preferred_mime_name','mb_parse_str',
- 'mb_output_handler','mb_language','mb_internal_encoding','mb_http_output','mb_http_input','mb_get_info',
- 'mb_eregi_replace','mb_eregi','mb_ereg_search_setpos','mb_ereg_search_regs','mb_ereg_search_pos','mb_ereg_search_init',
- 'mb_ereg_search_getregs','mb_ereg_search_getpos','mb_ereg_search','mb_ereg_replace','mb_ereg_match','mb_ereg',
- 'mb_encode_numericentity','mb_encode_mimeheader','mb_detect_order','mb_detect_encoding','mb_decode_numericentity','mb_decode_mimeheader',
- 'mb_convert_variables','mb_convert_kana','mb_convert_encoding','mb_convert_case','max','mail',
- 'magic_quotes_runtime','ltrim','lstat','long2ip','log1p','log10',
- 'log','localtime','localeconv','linkinfo','link','levenshtein',
- 'lcg_value','ksort','krsort','key_exists','key','juliantojd',
- 'join','jewishtojd','jdtounix','jdtojulian','jdtojewish','jdtogregorian',
- 'jdtofrench','jdmonthname','jddayofweek','is_writeable','is_writable','is_uploaded_file',
- 'is_subclass_of','is_string','is_scalar','is_resource','is_real','is_readable',
- 'is_object','is_numeric','is_null','is_nan','is_long','is_link',
- 'is_integer','is_int','is_infinite','is_float','is_finite','is_file',
- 'is_executable','is_double','is_dir','is_callable','is_bool','is_array',
- 'is_a','iptcparse','iptcembed','ip2long','intval','ini_set',
- 'ini_restore','ini_get_all','ini_get','ini_alter','in_array','import_request_variables',
- 'implode','image_type_to_mime_type','ignore_user_abort','iconv_set_encoding','iconv_get_encoding','iconv',
- 'i18n_mime_header_encode','i18n_mime_header_decode','i18n_ja_jp_hantozen','i18n_internal_encoding','i18n_http_output','i18n_http_input',
- 'i18n_discover_encoding','i18n_convert','hypot','htmlspecialchars','htmlentities','html_entity_decode',
- 'highlight_string','highlight_file','hexdec','hebrevc','hebrev','headers_sent',
- 'header','gzwrite','gzuncompress','gztell','gzseek','gzrewind',
- 'gzread','gzputs','gzpassthru','gzopen','gzinflate','gzgetss',
- 'gzgets','gzgetc','gzfile','gzeof','gzencode','gzdeflate',
- 'gzcompress','gzclose','gregoriantojd','gmstrftime','gmmktime','gmdate',
- 'glob','gettype','gettimeofday','gettext','getservbyport','getservbyname',
- 'getrusage','getrandmax','getprotobynumber','getprotobyname','getopt','getmyuid',
- 'getmypid','getmyinode','getmygid','getmxrr','getlastmod','getimagesize',
- 'gethostbynamel','gethostbyname','gethostbyaddr','getenv','getdate','getcwd',
- 'getallheaders','get_resource_type','get_required_files','get_parent_class','get_object_vars','get_meta_tags',
- 'get_magic_quotes_runtime','get_magic_quotes_gpc','get_loaded_extensions','get_included_files','get_include_path','get_html_translation_table',
- 'get_extension_funcs','get_defined_vars','get_defined_functions','get_defined_constants','get_declared_classes','get_current_user',
- 'get_class_vars','get_class_methods','get_class','get_cfg_var','get_browser','fwrite',
- 'function_exists','func_num_args','func_get_args','func_get_arg','ftruncate','ftp_systype',
- 'ftp_ssl_connect','ftp_size','ftp_site','ftp_set_option','ftp_rmdir','ftp_rename',
- 'ftp_rawlist','ftp_quit','ftp_pwd','ftp_put','ftp_pasv','ftp_nlist',
- 'ftp_nb_put','ftp_nb_get','ftp_nb_fput','ftp_nb_fget','ftp_nb_continue','ftp_mkdir',
- 'ftp_mdtm','ftp_login','ftp_get_option','ftp_get','ftp_fput','ftp_fget',
- 'ftp_exec','ftp_delete','ftp_connect','ftp_close','ftp_chdir','ftp_cdup',
- 'ftok','ftell','fstat','fsockopen','fseek','fscanf',
- 'frenchtojd','fread','fputs','fpassthru','fopen','fnmatch',
- 'fmod','flush','floor','flock','floatval','filetype',
- 'filesize','filepro_rowcount','filepro_retrieve','filepro_fieldwidth','filepro_fieldtype','filepro_fieldname',
- 'filepro_fieldcount','filepro','fileperms','fileowner','filemtime','fileinode',
- 'filegroup','filectime','fileatime','file_get_contents','file_exists','file',
- 'fgetss','fgets','fgetcsv','fgetc','fflush','feof',
- 'fclose','ezmlm_hash','extract','extension_loaded','expm1','explode',
- 'exp','exif_thumbnail','exif_tagname','exif_read_data','exif_imagetype','exec',
- 'escapeshellcmd','escapeshellarg','error_reporting','error_log','eregi_replace','eregi',
- 'ereg_replace','ereg','end','easter_days','easter_date','each',
- 'doubleval','dngettext','dl','diskfreespace','disk_total_space','disk_free_space',
- 'dirname','dir','dgettext','deg2rad','defined','define_syslog_variables',
- 'define','decoct','dechex','decbin','debug_zval_dump','debug_backtrace',
- 'deaggregate','dcngettext','dcgettext','dba_sync','dba_replace','dba_popen',
- 'dba_optimize','dba_open','dba_nextkey','dba_list','dba_insert','dba_handlers',
- 'dba_firstkey','dba_fetch','dba_exists','dba_delete','dba_close','date',
- 'current','ctype_xdigit','ctype_upper','ctype_space','ctype_punct','ctype_print',
- 'ctype_lower','ctype_graph','ctype_digit','ctype_cntrl','ctype_alpha','ctype_alnum',
- 'crypt','create_function','crc32','count_chars','count','cosh',
- 'cos','copy','convert_cyr_string','constant','connection_status','connection_aborted',
- 'compact','closelog','closedir','clearstatcache','class_exists','chunk_split',
- 'chr','chown','chop','chmod','chgrp','checkdnsrr',
- 'checkdate','chdir','ceil','call_user_method_array','call_user_method','call_user_func_array',
- 'call_user_func','cal_to_jd','cal_info','cal_from_jd','cal_days_in_month','bzwrite',
- 'bzread','bzopen','bzflush','bzerrstr','bzerror','bzerrno',
- 'bzdecompress','bzcompress','bzclose','bindtextdomain','bindec','bind_textdomain_codeset',
- 'bin2hex','bcsub','bcsqrt','bcscale','bcpow','bcmul',
- 'bcmod','bcdiv','bccomp','bcadd','basename','base_convert',
- 'base64_encode','base64_decode','atanh','atan2','atan','assert_options',
- 'assert','asort','asinh','asin','arsort','array_walk',
- 'array_values','array_unshift','array_unique','array_sum','array_splice','array_slice',
- 'array_shift','array_search','array_reverse','array_reduce','array_rand','array_push',
- 'array_pop','array_pad','array_multisort','array_merge_recursive','array_merge','array_map',
- 'array_keys','array_key_exists','array_intersect_assoc','array_intersect','array_flip','array_filter',
- 'array_fill','array_diff_assoc','array_diff','array_count_values','array_chunk','array_change_key_case',
- 'apache_setenv','apache_response_headers','apache_request_headers','apache_note','apache_lookup_uri','apache_get_version',
- 'apache_child_terminate','aggregation_info','aggregate_properties_by_regexp','aggregate_properties_by_list','aggregate_properties','aggregate_methods_by_regexp',
- 'aggregate_methods_by_list','aggregate_methods','aggregate','addslashes','addcslashes','acosh',
- 'acos','abs','_','echo', 'print', 'global', 'static', 'exit', 'array', 'empty',
- 'eval', 'isset', 'unset', 'die', 'list'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}',
- '!', '@', '%', '&', '|', '/',
- '<', '>',
- '=', '-', '+', '*',
- '.', ':', ',', ';'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;',
- 2 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;',
- 1 => 'color: #ff0000'
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- 3 => ''
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.php.net/{FNAME}',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '->',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- 0 => array(
- GESHI_SEARCH => "([a-zA-Z]+)(\\n)(.*?)(\\n)(\\1[^a-zA-Z0-9])",
- GESHI_REPLACE => '\3',
- GESHI_BEFORE => '\1\2',
- GESHI_AFTER => '\4\5',
- GESHI_MODIFIERS => 'siU'
- ),
- 1 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<?php' => '?>'
- ),
- 1 => array(
- '<?' => '?>'
- ),
- 2 => array(
- '<%' => '%>'
- ),
- 3 => array(
- '<script language="php">' => '</script>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- 1 => true,
- 2 => true,
- 3 => true
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * php.php
+ * --------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/20
+ *
+ * PHP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/25 (1.0.3)
+ * - Added support for multiple object splitters
+ * - Fixed &new problem
+ * 2004/10/27 (1.0.2)
+ * - Added URL support
+ * - Added extra constants
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Make sure the last few function I may have missed
+ * (like eval()) are included for highlighting
+ * * Split to several files - php4, php5 etc
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'PHP',
+ 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'include', 'require', 'include_once', 'require_once',
+ 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile',
+ 'endif', 'switch', 'case', 'endswitch', 'endfor', 'endforeach',
+ 'return', 'break', 'continue'
+ ),
+ 2 => array(
+ 'null', '__LINE__', '__FILE__',
+ 'false', '<?php', '?>', '<?',
+ '<script language', '</script>',
+ 'true', 'var', 'default',
+ 'function', 'class', 'new', '&new', 'public', 'private', 'interface', 'extends',
+ '__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION',
+ 'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR',
+ 'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR',
+ 'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+ 'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
+ 'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR',
+ 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+ ),
+ 3 => array(
+ 'zlib_get_coding_type','zend_version','zend_logo_guid','yp_order','yp_next',
+ 'yp_match','yp_master','yp_get_default_domain','yp_first','yp_errno','yp_err_string',
+ 'yp_cat','yp_all','xml_set_unparsed_entity_decl_handler','xml_set_start_namespace_decl_handler','xml_set_processing_instruction_handler','xml_set_object',
+ 'xml_set_notation_decl_handler','xml_set_external_entity_ref_handler','xml_set_end_namespace_decl_handler','xml_set_element_handler','xml_set_default_handler','xml_set_character_data_handler',
+ 'xml_parser_set_option','xml_parser_get_option','xml_parser_free','xml_parser_create_ns','xml_parser_create','xml_parse_into_struct',
+ 'xml_parse','xml_get_error_code','xml_get_current_line_number','xml_get_current_column_number','xml_get_current_byte_index','xml_error_string',
+ 'wordwrap','wddx_serialize_vars','wddx_serialize_value','wddx_packet_start','wddx_packet_end','wddx_deserialize',
+ 'wddx_add_vars','vsprintf','vprintf','virtual','version_compare','var_export',
+ 'var_dump','utf8_encode','utf8_decode','usort','usleep','user_error',
+ 'urlencode','urldecode','unserialize','unregister_tick_function','unpack','unlink',
+ 'unixtojd','uniqid','umask','uksort','ucwords','ucfirst',
+ 'uasort','trim','trigger_error','touch','token_name','token_get_all',
+ 'tmpfile','time','textdomain','tempnam','tanh','tan',
+ 'system','syslog','symlink','substr_replace','substr_count','substr',
+ 'strval','strtr','strtoupper','strtotime','strtolower','strtok',
+ 'strstr','strspn','strrpos','strrev','strrchr','strpos',
+ 'strncmp','strncasecmp','strnatcmp','strnatcasecmp','strlen','stristr',
+ 'stripslashes','stripcslashes','strip_tags','strftime','stream_wrapper_register','stream_set_write_buffer',
+ 'stream_set_timeout','stream_set_blocking','stream_select','stream_register_wrapper','stream_get_meta_data','stream_filter_prepend',
+ 'stream_filter_append','stream_context_set_params','stream_context_set_option','stream_context_get_options','stream_context_create','strcspn',
+ 'strcoll','strcmp','strchr','strcasecmp','str_word_count','str_shuffle',
+ 'str_rot13','str_replace','str_repeat','str_pad','stat','sscanf',
+ 'srand','sqrt','sql_regcase','sprintf','spliti','split',
+ 'soundex','sort','socket_writev','socket_write','socket_strerror','socket_shutdown',
+ 'socket_setopt','socket_set_timeout','socket_set_option','socket_set_nonblock','socket_set_blocking','socket_set_block',
+ 'socket_sendto','socket_sendmsg','socket_send','socket_select','socket_recvmsg','socket_recvfrom',
+ 'socket_recv','socket_readv','socket_read','socket_listen','socket_last_error','socket_iovec_set',
+ 'socket_iovec_free','socket_iovec_fetch','socket_iovec_delete','socket_iovec_alloc','socket_iovec_add','socket_getsockname',
+ 'socket_getpeername','socket_getopt','socket_get_status','socket_get_option','socket_create_pair','socket_create_listen',
+ 'socket_create','socket_connect','socket_close','socket_clear_error','socket_bind','socket_accept',
+ 'sleep','sizeof','sinh','sin','similar_text','shuffle',
+ 'show_source','shmop_write','shmop_size','shmop_read','shmop_open','shmop_delete',
+ 'shmop_close','shm_remove_var','shm_remove','shm_put_var','shm_get_var','shm_detach',
+ 'shm_attach','shell_exec','sha1_file','sha1','settype','setlocale',
+ 'setcookie','set_time_limit','set_socket_blocking','set_magic_quotes_runtime','set_include_path','set_file_buffer',
+ 'set_error_handler','session_write_close','session_unset','session_unregister','session_start','session_set_save_handler',
+ 'session_set_cookie_params','session_save_path','session_register','session_regenerate_id','session_name','session_module_name',
+ 'session_is_registered','session_id','session_get_cookie_params','session_encode','session_destroy','session_decode',
+ 'session_cache_limiter','session_cache_expire','serialize','sem_remove','sem_release','sem_get',
+ 'sem_acquire','rtrim','rsort','round','rmdir','rewinddir',
+ 'rewind','restore_include_path','restore_error_handler','reset','rename','register_tick_function',
+ 'register_shutdown_function','realpath','readlink','readgzfile','readfile','readdir',
+ 'read_exif_data','rawurlencode','rawurldecode','range','rand','rad2deg',
+ 'quotemeta','quoted_printable_decode','putenv','proc_open','proc_close','printf',
+ 'print_r','prev','preg_split','preg_replace_callback','preg_replace','preg_quote',
+ 'preg_match_all','preg_match','preg_grep','pow','posix_uname','posix_ttyname',
+ 'posix_times','posix_strerror','posix_setuid','posix_setsid','posix_setpgid','posix_setgid',
+ 'posix_seteuid','posix_setegid','posix_mkfifo','posix_kill','posix_isatty','posix_getuid',
+ 'posix_getsid','posix_getrlimit','posix_getpwuid','posix_getpwnam','posix_getppid','posix_getpid',
+ 'posix_getpgrp','posix_getpgid','posix_getlogin','posix_getgroups','posix_getgrnam','posix_getgrgid',
+ 'posix_getgid','posix_geteuid','posix_getegid','posix_getcwd','posix_get_last_error','posix_errno',
+ 'posix_ctermid','pos','popen','pi','phpversion','phpinfo',
+ 'phpcredits','php_uname','php_sapi_name','php_logo_guid','php_ini_scanned_files','pg_update',
+ 'pg_untrace','pg_unescape_bytea','pg_tty','pg_trace','pg_setclientencoding','pg_set_client_encoding',
+ 'pg_send_query','pg_select','pg_result_status','pg_result_seek','pg_result_error','pg_result',
+ 'pg_query','pg_put_line','pg_port','pg_ping','pg_pconnect','pg_options',
+ 'pg_numrows','pg_numfields','pg_num_rows','pg_num_fields','pg_meta_data','pg_lowrite',
+ 'pg_lounlink','pg_loreadall','pg_loread','pg_loopen','pg_loimport','pg_loexport',
+ 'pg_locreate','pg_loclose','pg_lo_write','pg_lo_unlink','pg_lo_tell','pg_lo_seek',
+ 'pg_lo_read_all','pg_lo_read','pg_lo_open','pg_lo_import','pg_lo_export','pg_lo_create',
+ 'pg_lo_close','pg_last_oid','pg_last_notice','pg_last_error','pg_insert','pg_host',
+ 'pg_getlastoid','pg_get_result','pg_get_pid','pg_get_notify','pg_freeresult','pg_free_result',
+ 'pg_fieldtype','pg_fieldsize','pg_fieldprtlen','pg_fieldnum','pg_fieldname','pg_fieldisnull',
+ 'pg_field_type','pg_field_size','pg_field_prtlen','pg_field_num','pg_field_name','pg_field_is_null',
+ 'pg_fetch_row','pg_fetch_result','pg_fetch_object','pg_fetch_assoc','pg_fetch_array','pg_fetch_all',
+ 'pg_exec','pg_escape_string','pg_escape_bytea','pg_errormessage','pg_end_copy','pg_delete',
+ 'pg_dbname','pg_copy_to','pg_copy_from','pg_convert','pg_connection_status','pg_connection_reset',
+ 'pg_connection_busy','pg_connect','pg_cmdtuples','pg_close','pg_clientencoding','pg_client_encoding',
+ 'pg_cancel_query','pg_affected_rows','pfsockopen','pclose','pathinfo','passthru',
+ 'parse_url','parse_str','parse_ini_file','pack','overload','output_reset_rewrite_vars',
+ 'output_add_rewrite_var','ord','openssl_x509_read','openssl_x509_parse','openssl_x509_free','openssl_x509_export_to_file',
+ 'openssl_x509_export','openssl_x509_checkpurpose','openssl_x509_check_private_key','openssl_verify','openssl_sign','openssl_seal',
+ 'openssl_public_encrypt','openssl_public_decrypt','openssl_private_encrypt','openssl_private_decrypt','openssl_pkey_new','openssl_pkey_get_public',
+ 'openssl_pkey_get_private','openssl_pkey_free','openssl_pkey_export_to_file','openssl_pkey_export','openssl_pkcs7_verify','openssl_pkcs7_sign',
+ 'openssl_pkcs7_encrypt','openssl_pkcs7_decrypt','openssl_open','openssl_get_publickey','openssl_get_privatekey','openssl_free_key',
+ 'openssl_error_string','openssl_csr_sign','openssl_csr_new','openssl_csr_export_to_file','openssl_csr_export','openlog',
+ 'opendir','octdec','ob_start','ob_list_handlers','ob_implicit_flush','ob_iconv_handler',
+ 'ob_gzhandler','ob_get_status','ob_get_level','ob_get_length','ob_get_flush','ob_get_contents',
+ 'ob_get_clean','ob_flush','ob_end_flush','ob_end_clean','ob_clean','number_format',
+ 'nl_langinfo','nl2br','ngettext','next','natsort','natcasesort',
+ 'mysql_unbuffered_query','mysql_thread_id','mysql_tablename','mysql_table_name','mysql_stat','mysql_selectdb',
+ 'mysql_select_db','mysql_result','mysql_real_escape_string','mysql_query','mysql_ping','mysql_pconnect',
+ 'mysql_numrows','mysql_numfields','mysql_num_rows','mysql_num_fields','mysql_listtables','mysql_listfields',
+ 'mysql_listdbs','mysql_list_tables','mysql_list_processes','mysql_list_fields','mysql_list_dbs','mysql_insert_id',
+ 'mysql_info','mysql_get_server_info','mysql_get_proto_info','mysql_get_host_info','mysql_get_client_info','mysql_freeresult',
+ 'mysql_free_result','mysql_fieldtype','mysql_fieldtable','mysql_fieldname','mysql_fieldlen','mysql_fieldflags',
+ 'mysql_field_type','mysql_field_table','mysql_field_seek','mysql_field_name','mysql_field_len','mysql_field_flags',
+ 'mysql_fetch_row','mysql_fetch_object','mysql_fetch_lengths','mysql_fetch_field','mysql_fetch_assoc','mysql_fetch_array',
+ 'mysql_escape_string','mysql_error','mysql_errno','mysql_dropdb','mysql_drop_db','mysql_dbname',
+ 'mysql_db_query','mysql_db_name','mysql_data_seek','mysql_createdb','mysql_create_db','mysql_connect',
+ 'mysql_close','mysql_client_encoding','mysql_affected_rows','mysql','mt_srand','mt_rand',
+ 'mt_getrandmax','move_uploaded_file','money_format','mktime','mkdir','min',
+ 'microtime','method_exists','metaphone','memory_get_usage','md5_file','md5',
+ 'mbsubstr','mbstrrpos','mbstrpos','mbstrlen','mbstrcut','mbsplit',
+ 'mbregex_encoding','mberegi_replace','mberegi','mbereg_search_setpos','mbereg_search_regs','mbereg_search_pos',
+ 'mbereg_search_init','mbereg_search_getregs','mbereg_search_getpos','mbereg_search','mbereg_replace','mbereg_match',
+ 'mbereg','mb_substr_count','mb_substr','mb_substitute_character','mb_strwidth','mb_strtoupper',
+ 'mb_strtolower','mb_strrpos','mb_strpos','mb_strlen','mb_strimwidth','mb_strcut',
+ 'mb_split','mb_send_mail','mb_regex_set_options','mb_regex_encoding','mb_preferred_mime_name','mb_parse_str',
+ 'mb_output_handler','mb_language','mb_internal_encoding','mb_http_output','mb_http_input','mb_get_info',
+ 'mb_eregi_replace','mb_eregi','mb_ereg_search_setpos','mb_ereg_search_regs','mb_ereg_search_pos','mb_ereg_search_init',
+ 'mb_ereg_search_getregs','mb_ereg_search_getpos','mb_ereg_search','mb_ereg_replace','mb_ereg_match','mb_ereg',
+ 'mb_encode_numericentity','mb_encode_mimeheader','mb_detect_order','mb_detect_encoding','mb_decode_numericentity','mb_decode_mimeheader',
+ 'mb_convert_variables','mb_convert_kana','mb_convert_encoding','mb_convert_case','max','mail',
+ 'magic_quotes_runtime','ltrim','lstat','long2ip','log1p','log10',
+ 'log','localtime','localeconv','linkinfo','link','levenshtein',
+ 'lcg_value','ksort','krsort','key_exists','key','juliantojd',
+ 'join','jewishtojd','jdtounix','jdtojulian','jdtojewish','jdtogregorian',
+ 'jdtofrench','jdmonthname','jddayofweek','is_writeable','is_writable','is_uploaded_file',
+ 'is_subclass_of','is_string','is_scalar','is_resource','is_real','is_readable',
+ 'is_object','is_numeric','is_null','is_nan','is_long','is_link',
+ 'is_integer','is_int','is_infinite','is_float','is_finite','is_file',
+ 'is_executable','is_double','is_dir','is_callable','is_bool','is_array',
+ 'is_a','iptcparse','iptcembed','ip2long','intval','ini_set',
+ 'ini_restore','ini_get_all','ini_get','ini_alter','in_array','import_request_variables',
+ 'implode','image_type_to_mime_type','ignore_user_abort','iconv_set_encoding','iconv_get_encoding','iconv',
+ 'i18n_mime_header_encode','i18n_mime_header_decode','i18n_ja_jp_hantozen','i18n_internal_encoding','i18n_http_output','i18n_http_input',
+ 'i18n_discover_encoding','i18n_convert','hypot','htmlspecialchars','htmlentities','html_entity_decode',
+ 'highlight_string','highlight_file','hexdec','hebrevc','hebrev','headers_sent',
+ 'header','gzwrite','gzuncompress','gztell','gzseek','gzrewind',
+ 'gzread','gzputs','gzpassthru','gzopen','gzinflate','gzgetss',
+ 'gzgets','gzgetc','gzfile','gzeof','gzencode','gzdeflate',
+ 'gzcompress','gzclose','gregoriantojd','gmstrftime','gmmktime','gmdate',
+ 'glob','gettype','gettimeofday','gettext','getservbyport','getservbyname',
+ 'getrusage','getrandmax','getprotobynumber','getprotobyname','getopt','getmyuid',
+ 'getmypid','getmyinode','getmygid','getmxrr','getlastmod','getimagesize',
+ 'gethostbynamel','gethostbyname','gethostbyaddr','getenv','getdate','getcwd',
+ 'getallheaders','get_resource_type','get_required_files','get_parent_class','get_object_vars','get_meta_tags',
+ 'get_magic_quotes_runtime','get_magic_quotes_gpc','get_loaded_extensions','get_included_files','get_include_path','get_html_translation_table',
+ 'get_extension_funcs','get_defined_vars','get_defined_functions','get_defined_constants','get_declared_classes','get_current_user',
+ 'get_class_vars','get_class_methods','get_class','get_cfg_var','get_browser','fwrite',
+ 'function_exists','func_num_args','func_get_args','func_get_arg','ftruncate','ftp_systype',
+ 'ftp_ssl_connect','ftp_size','ftp_site','ftp_set_option','ftp_rmdir','ftp_rename',
+ 'ftp_rawlist','ftp_quit','ftp_pwd','ftp_put','ftp_pasv','ftp_nlist',
+ 'ftp_nb_put','ftp_nb_get','ftp_nb_fput','ftp_nb_fget','ftp_nb_continue','ftp_mkdir',
+ 'ftp_mdtm','ftp_login','ftp_get_option','ftp_get','ftp_fput','ftp_fget',
+ 'ftp_exec','ftp_delete','ftp_connect','ftp_close','ftp_chdir','ftp_cdup',
+ 'ftok','ftell','fstat','fsockopen','fseek','fscanf',
+ 'frenchtojd','fread','fputs','fpassthru','fopen','fnmatch',
+ 'fmod','flush','floor','flock','floatval','filetype',
+ 'filesize','filepro_rowcount','filepro_retrieve','filepro_fieldwidth','filepro_fieldtype','filepro_fieldname',
+ 'filepro_fieldcount','filepro','fileperms','fileowner','filemtime','fileinode',
+ 'filegroup','filectime','fileatime','file_get_contents','file_exists','file',
+ 'fgetss','fgets','fgetcsv','fgetc','fflush','feof',
+ 'fclose','ezmlm_hash','extract','extension_loaded','expm1','explode',
+ 'exp','exif_thumbnail','exif_tagname','exif_read_data','exif_imagetype','exec',
+ 'escapeshellcmd','escapeshellarg','error_reporting','error_log','eregi_replace','eregi',
+ 'ereg_replace','ereg','end','easter_days','easter_date','each',
+ 'doubleval','dngettext','dl','diskfreespace','disk_total_space','disk_free_space',
+ 'dirname','dir','dgettext','deg2rad','defined','define_syslog_variables',
+ 'define','decoct','dechex','decbin','debug_zval_dump','debug_backtrace',
+ 'deaggregate','dcngettext','dcgettext','dba_sync','dba_replace','dba_popen',
+ 'dba_optimize','dba_open','dba_nextkey','dba_list','dba_insert','dba_handlers',
+ 'dba_firstkey','dba_fetch','dba_exists','dba_delete','dba_close','date',
+ 'current','ctype_xdigit','ctype_upper','ctype_space','ctype_punct','ctype_print',
+ 'ctype_lower','ctype_graph','ctype_digit','ctype_cntrl','ctype_alpha','ctype_alnum',
+ 'crypt','create_function','crc32','count_chars','count','cosh',
+ 'cos','copy','convert_cyr_string','constant','connection_status','connection_aborted',
+ 'compact','closelog','closedir','clearstatcache','class_exists','chunk_split',
+ 'chr','chown','chop','chmod','chgrp','checkdnsrr',
+ 'checkdate','chdir','ceil','call_user_method_array','call_user_method','call_user_func_array',
+ 'call_user_func','cal_to_jd','cal_info','cal_from_jd','cal_days_in_month','bzwrite',
+ 'bzread','bzopen','bzflush','bzerrstr','bzerror','bzerrno',
+ 'bzdecompress','bzcompress','bzclose','bindtextdomain','bindec','bind_textdomain_codeset',
+ 'bin2hex','bcsub','bcsqrt','bcscale','bcpow','bcmul',
+ 'bcmod','bcdiv','bccomp','bcadd','basename','base_convert',
+ 'base64_encode','base64_decode','atanh','atan2','atan','assert_options',
+ 'assert','asort','asinh','asin','arsort','array_walk',
+ 'array_values','array_unshift','array_unique','array_sum','array_splice','array_slice',
+ 'array_shift','array_search','array_reverse','array_reduce','array_rand','array_push',
+ 'array_pop','array_pad','array_multisort','array_merge_recursive','array_merge','array_map',
+ 'array_keys','array_key_exists','array_intersect_assoc','array_intersect','array_flip','array_filter',
+ 'array_fill','array_diff_assoc','array_diff','array_count_values','array_chunk','array_change_key_case',
+ 'apache_setenv','apache_response_headers','apache_request_headers','apache_note','apache_lookup_uri','apache_get_version',
+ 'apache_child_terminate','aggregation_info','aggregate_properties_by_regexp','aggregate_properties_by_list','aggregate_properties','aggregate_methods_by_regexp',
+ 'aggregate_methods_by_list','aggregate_methods','aggregate','addslashes','addcslashes','acosh',
+ 'acos','abs','_','echo', 'print', 'global', 'static', 'exit', 'array', 'empty',
+ 'eval', 'isset', 'unset', 'die', 'list'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}',
+ '!', '@', '%', '&', '|', '/',
+ '<', '>',
+ '=', '-', '+', '*',
+ '.', ':', ',', ';'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;',
+ 2 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;',
+ 1 => 'color: #ff0000'
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.php.net/{FNAME}',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '->',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ 0 => array(
+ GESHI_SEARCH => "([a-zA-Z]+)(\\n)(.*?)(\\n)(\\1[^a-zA-Z0-9])",
+ GESHI_REPLACE => '\3',
+ GESHI_BEFORE => '\1\2',
+ GESHI_AFTER => '\4\5',
+ GESHI_MODIFIERS => 'siU'
+ ),
+ 1 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<?php' => '?>'
+ ),
+ 1 => array(
+ '<?' => '?>'
+ ),
+ 2 => array(
+ '<%' => '%>'
+ ),
+ 3 => array(
+ '<script language="php">' => '</script>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ 1 => true,
+ 2 => true,
+ 3 => true
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/plsql.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/plsql.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/plsql.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,256 +1,256 @@
-<?php
-/*************************************************************************************
- * plsql.php
- * -------
- * Author: Victor Engmark <victor.engmark at gmail.com>
- * Copyright: (c) 2006 Victor Engmark (http://l0b0.net/)
- * Release Version: 1.0.7.21
- * Date Started: 2006/10/26
- *
- * Oracle 9.2 PL/SQL language file for GeSHi.
- * Formatting is based on the default setup of TOAD 8.6.
- *
- * CHANGES
- * -------
- * 2006/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/10/27)
- * -------------------------
- * * Add < and > to brackets
- * * Remove symbols which are also comment delimiters / quote marks?
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'PL/SQL',
- 'COMMENT_SINGLE' => array(1 =>'--'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2930
- 'COMMENT_MULTI' => array('/*' => '*/'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2950
- 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
- 'QUOTEMARKS' => array("'", '"'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- //PL/SQL reserved keywords (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/f_words.htm#LNPLS019)
- 1 => array('ZONE', 'YEAR', 'WRITE', 'WORK', 'WITH', 'WHILE', 'WHERE',
- 'WHENEVER', 'WHEN', 'VIEW', 'VARCHAR2', 'VARCHAR', 'VALUES',
- 'VALIDATE', 'USE', 'UPDATE', 'UNIQUE', 'UNION', 'TYPE', 'TRUE',
- 'TRIGGER', 'TO', 'TIMEZONE_REGION', 'TIMEZONE_MINUTE', 'TIMEZONE_HOUR',
- 'TIMEZONE_ABBR', 'TIMESTAMP', 'TIME', 'THEN', 'TABLE', 'SYNONYM',
- 'SUCCESSFUL', 'SUBTYPE', 'START', 'SQLERRM', 'SQLCODE', 'SQL', 'SPACE',
- 'SMALLINT', 'SHARE', 'SET', 'SEPARATE', 'SELECT', 'SECOND',
- 'SAVEPOINT', 'ROWTYPE', 'ROWNUM', 'ROWID', 'ROW', 'ROLLBACK',
- 'REVERSE', 'RETURN', 'RELEASE', 'RECORD', 'REAL', 'RAW', 'RANGE',
- 'RAISE', 'PUBLIC', 'PROCEDURE', 'PRIVATE', 'PRIOR', 'PRAGMA',
- 'POSITIVEN', 'POSITIVE', 'PLS_INTEGER', 'PCTFREE', 'PARTITION',
- 'PACKAGE', 'OUT', 'OTHERS', 'ORGANIZATION', 'ORDER', 'OR', 'OPTION',
- 'OPERATOR', 'OPEN', 'OPAQUE', 'ON', 'OF', 'OCIROWID', 'NUMBER_BASE',
- 'NUMBER', 'NULL', 'NOWAIT', 'NOT', 'NOCOPY', 'NEXTVAL', 'NEW',
- 'NATURALN', 'NATURAL', 'MONTH', 'MODE', 'MLSLABEL', 'MINUTE', 'MINUS',
- 'LOOP', 'LONG', 'LOCK', 'LIMITED', 'LIKE', 'LEVEL', 'JAVA',
- 'ISOLATION', 'IS', 'INTO', 'INTERVAL', 'INTERSECT', 'INTERFACE',
- 'INTEGER', 'INSERT', 'INDICATOR', 'INDEX', 'IN', 'IMMEDIATE', 'IF',
- 'HOUR', 'HEAP', 'HAVING', 'GROUP', 'GOTO', 'FUNCTION', 'FROM',
- 'FORALL', 'FOR', 'FLOAT', 'FETCH', 'FALSE', 'EXTENDS', 'EXIT',
- 'EXISTS', 'EXECUTE', 'EXCLUSIVE', 'EXCEPTION', 'END', 'ELSIF', 'ELSE',
- 'DROP', 'DO', 'DISTINCT', 'DESC', 'DELETE', 'DEFAULT', 'DECLARE',
- 'DECIMAL', 'DAY', 'DATE', 'CURSOR', 'CURRVAL', 'CURRENT', 'CREATE',
- 'CONSTANT', 'CONNECT', 'COMPRESS', 'COMMIT', 'COMMENT', 'COLLECT',
- 'CLUSTER', 'CLOSE', 'CHECK', 'CHAR_BASE', 'CHAR', 'CASE', 'BY', 'BULK',
- 'BOOLEAN', 'BODY', 'BINARY_INTEGER', 'BETWEEN', 'BEGIN', 'AUTHID',
- 'AT', 'ASC', 'AS', 'ARRAY', 'ANY', 'AND', 'ALTER', 'ALL'),
- //SQL functions (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/toc.htm & http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/functions101a.htm#85925)
- 2 => array('XMLTRANSFORM', 'XMLSEQUENCE', 'XMLFOREST', 'XMLELEMENT',
- 'XMLCONCAT', 'XMLCOLATTVAL', 'XMLAGG', 'WIDTH_BUCKET', 'VSIZE',
- 'VARIANCE', 'VAR_SAMP', 'VAR_POP', 'VALUE', 'USERENV', 'USER', 'UPPER',
- 'UPDATEXML', 'UNISTR', 'UID', 'TZ_OFFSET', 'TRUNC', 'TRIM', 'TREAT',
- 'TRANSLATE', 'TO_YMINTERVAL', 'TO_TIMESTAMP_TZ', 'TO_TIMESTAMP',
- 'TO_SINGLE_BYTE', 'TO_NUMBER', 'TO_NCLOB', 'TO_NCHAR', 'TO_MULTI_BYTE',
- 'TO_LOB', 'TO_DSINTERVAL', 'TO_DATE', 'TO_CLOB', 'TO_CHAR', 'TANH',
- 'TAN', 'SYSTIMESTAMP', 'SYSDATE', 'SYS_XMLGEN', 'SYS_XMLAGG',
- 'SYS_TYPEID', 'SYS_GUID', 'SYS_EXTRACT_UTC', 'SYS_DBURIGEN',
- 'SYS_CONTEXT', 'SYS_CONNECT_BY_PATH', 'SUM', 'SUBSTR', 'STDDEV_SAMP',
- 'STDDEV_POP', 'STDDEV', 'SQRT', 'SOUNDEX', 'SINH', 'SIN', 'SIGN',
- 'SESSIONTIMEZONE', 'RTRIM', 'RPAD', 'ROWIDTONCHAR', 'ROWIDTOCHAR',
- 'ROW_NUMBER', 'ROUND', 'REPLACE', 'REGR_SYY', 'REGR_SXY', 'REGR_SXX',
- 'REGR_SLOPE', 'REGR_R2', 'REGR_INTERCEPT', 'REGR_COUNT', 'REGR_AVGY',
- 'REGR_AVGX', 'REFTOHEX', 'REF', 'RAWTONHEX', 'RAWTOHEX',
- 'RATIO_TO_REPORT', 'RANK', 'POWER', 'PERCENTILE_DISC',
- 'PERCENTILE_CONT', 'PERCENT_RANK', 'PATH', 'NVL2', 'NVL',
- 'NUMTOYMINTERVAL', 'NUMTODSINTERVAL', 'NULLIF', 'NTILE', 'NLSSORT',
- 'NLS_UPPER', 'NLS_LOWER', 'NLS_INITCAP', 'NLS_CHARSET_NAME',
- 'NLS_CHARSET_ID', 'NLS_CHARSET_DECL_LEN', 'NEXT_DAY', 'NEW_TIME',
- 'NCHR', 'MONTHS_BETWEEN', 'MOD', 'MIN', 'MAX', 'MAKE_REF', 'LTRIM',
- 'LPAD', 'LOWER', 'LOG', 'LOCALTIMESTAMP', 'LN', 'LENGTH', 'LEAST',
- 'LEAD', 'LAST_VALUE', 'LAST_DAY', 'LAST', 'LAG', 'INSTR', 'INITCAP',
- 'HEXTORAW', 'GROUPING_ID', 'GROUPING', 'GROUP_ID', 'GREATEST',
- 'FROM_TZ', 'FLOOR', 'FIRST_VALUE', 'FIRST', 'EXTRACTVALUE', 'EXTRACT',
- 'EXP', 'EXISTSNODE', 'EMPTY_CLOB', 'EMPTY_BLOB', 'DUMP', 'DEREF',
- 'DEPTH', 'DENSE_RANK', 'DECOMPOSE', 'DECODE', 'DBTIMEZONE',
- 'CURRENT_TIMESTAMP', 'CURRENT_DATE', 'CUME_DIST', 'COVAR_SAMP',
- 'COVAR_POP', 'COUNT', 'COSH', 'COS', 'CORR', 'CONVERT', 'CONCAT',
- 'COMPOSE', 'COALESCE', 'CHR', 'CHARTOROWID', 'CEIL', 'CAST', 'BITAND',
- 'BIN_TO_NUM', 'BFILENAME', 'AVG', 'ATAN2', 'ATAN', 'ASIN', 'ASCIISTR',
- 'ASCII', 'ADD_MONTHS', 'ACOS', 'ABS'),
- //PL/SQL packages (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96612/intro2.htm#1025672)
- 3 => array('UTL_URL', 'UTL_TCP', 'UTL_SMTP', 'UTL_REF', 'UTL_RAW',
- 'UTL_PG', 'UTL_INADDR', 'UTL_HTTP', 'UTL_FILE', 'UTL_ENCODE',
- 'UTL_COLL', 'SDO_UTIL', 'SDO_TUNE', 'SDO_MIGRATE', 'SDO_LRS',
- 'SDO_GEOM', 'SDO_CS', 'DMBS_XMLQUERY', 'DMBS_FLASHBACK',
- 'DMBS_DEFER_SYS', 'DEBUG_EXTPROC', 'DBMS_XSLPROCESSOR', 'DBMS_XPLAN',
- 'DBMS_XMLSCHEMA', 'DBMS_XMLSAVE', 'DBMS_XMLPARSER', 'DBMS_XMLGEN',
- 'DBMS_XMLDOM', 'DBMS_XDBT', 'DBMS_XDB_VERSION', 'DBMS_XDB', 'DBMS_WM',
- 'DBMS_UTILITY', 'DBMS_TYPES', 'DBMS_TTS', 'DBMS_TRANSFORM',
- 'DBMS_TRANSACTION', 'DBMS_TRACE', 'DBMS_STRM_A', 'DBMS_STRM',
- 'DBMS_STORAGE_MAP', 'DBMS_STATS', 'DBMS_SQL', 'DBMS_SPACE_ADMIN',
- 'DBMS_SPACE', 'DBMS_SHARED_POOL', 'DBMS_SESSION', 'DBMS_RULE_ADM',
- 'DBMS_RULE', 'DBMS_ROWID', 'DBMS_RLS', 'DBMS_RESUMABLE',
- 'DBMS_RESOURCE_MANAGER_PRIVS', 'DBMS_RESOURCE_MANAGER', 'DBMS_REPUTIL',
- 'DBMS_REPCAT_RGT', 'DBMS_REPCAT_INSTATIATE', 'DBMS_REPCAT_ADMIN',
- 'DBMS_REPCAT', 'DBMS_REPAIR', 'DBMS_REFRESH', 'DBMS_REDEFINITION',
- 'DBMS_RECTIFIER_DIFF', 'DBMS_RANDOM', 'DBMS_PROPAGATION_ADM',
- 'DBMS_PROFILER', 'DBMS_PIPE', 'DBMS_PCLXUTIL', 'DBMS_OUTPUT',
- 'DBMS_OUTLN_EDIT', 'DBMS_OUTLN', 'DBMS_ORACLE_TRACE_USER',
- 'DBMS_ORACLE_TRACE_AGENT', 'DBMS_OLAP', 'DBMS_OFFLINE_SNAPSHOT',
- 'DBMS_OFFLINE_OG', 'DBMS_ODCI', 'DBMS_OBFUSCATION_TOOLKIT',
- 'DBMS_MVIEW', 'DBMS_MGWMSG', 'DBMS_MGWADM', 'DBMS_METADATA',
- 'DBMS_LOGSTDBY', 'DBMS_LOGMNR_D', 'DBMS_LOGMNR_CDC_SUBSCRIBE',
- 'DBMS_LOGMNR_CDC_PUBLISH', 'DBMS_LOGMNR', 'DBMS_LOCK', 'DBMS_LOB',
- 'DBMS_LIBCACHE', 'DBMS_LDAP', 'DBMS_JOB', 'DBMS_IOT',
- 'DBMS_HS_PASSTHROUGH', 'DBMS_FGA', 'DBMS_DISTRIBUTED_TRUST_ADMIN',
- 'DBMS_DESCRIBE', 'DBMS_DEFER_QUERY', 'DBMS_DEFER', 'DBMS_DEBUG',
- 'DBMS_DDL', 'DBMS_CAPTURE_ADM', 'DBMS_AW', 'DBMS_AQELM', 'DBMS_AQADM',
- 'DBMS_AQ', 'DBMS_APPLY_ADM', 'DBMS_APPLICATION_INFO', 'DBMS_ALERT',
- 'CWM2_OLAP_AW_ACCESS'),
- //PL/SQL predefined exceptions (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/07_errs.htm#784)
- 4 => array('ZERO_DIVIDE', 'VALUE_ERROR', 'TOO_MANY_ROWS',
- 'TIMEOUT_ON_RESOURCE', 'SYS_INVALID_ROWID', 'SUBSCRIPT_OUTSIDE_LIMIT',
- 'SUBSCRIPT_BEYOND_COUNT', 'STORAGE_ERROR', 'SELF_IS_NULL',
- 'ROWTYPE_MISMATCH', 'PROGRAM_ERROR', 'NOT_LOGGED_ON', 'NO_DATA_FOUND',
- 'LOGIN_DENIED', 'INVALID_NUMBER', 'INVALID_CURSOR', 'DUP_VAL_ON_INDEX',
- 'CURSOR_ALREADY_OPEN', 'COLLECTION_IS_NULL', 'CASE_NOT_FOUND',
- 'ACCESS_INTO_NULL'),
- //Static data dictionary views (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96536/ch2.htm)
- 5 => array('USER_REPSITES', 'USER_REPSCHEMA',
- 'USER_REPRESOLUTION_STATISTICS', 'USER_REPRESOLUTION_METHOD',
- 'USER_REPRESOLUTION', 'USER_REPRESOL_STATS_CONTROL', 'USER_REPPROP',
- 'USER_REPPRIORITY_GROUP', 'USER_REPPRIORITY',
- 'USER_REPPARAMETER_COLUMN', 'USER_REPOBJECT', 'USER_REPKEY_COLUMNS',
- 'USER_REPGROUPED_COLUMN', 'USER_REPGROUP_PRIVILEGES', 'USER_REPGROUP',
- 'USER_REPGENOBJECTS', 'USER_REPGENERATED', 'USER_REPFLAVORS',
- 'USER_REPFLAVOR_OBJECTS', 'USER_REPFLAVOR_COLUMNS', 'USER_REPDDL',
- 'USER_REPCONFLICT', 'USER_REPCOLUMN_GROUP', 'USER_REPCOLUMN',
- 'USER_REPCATLOG', 'USER_REPCAT_USER_PARM_VALUES',
- 'USER_REPCAT_USER_AUTHORIZATIONS', 'USER_REPCAT_TEMPLATE_SITES',
- 'USER_REPCAT_TEMPLATE_PARMS', 'USER_REPCAT_TEMPLATE_OBJECTS',
- 'USER_REPCAT_REFRESH_TEMPLATES', 'USER_REPCAT', 'USER_REPAUDIT_COLUMN',
- 'USER_REPAUDIT_ATTRIBUTE', 'DBA_REPSITES_NEW', 'DBA_REPSITES',
- 'DBA_REPSCHEMA', 'DBA_REPRESOLUTION_STATISTICS',
- 'DBA_REPRESOLUTION_METHOD', 'DBA_REPRESOLUTION',
- 'DBA_REPRESOL_STATS_CONTROL', 'DBA_REPPROP', 'DBA_REPPRIORITY_GROUP',
- 'DBA_REPPRIORITY', 'DBA_REPPARAMETER_COLUMN', 'DBA_REPOBJECT',
- 'DBA_REPKEY_COLUMNS', 'DBA_REPGROUPED_COLUMN',
- 'DBA_REPGROUP_PRIVILEGES', 'DBA_REPGROUP', 'DBA_REPGENOBJECTS',
- 'DBA_REPGENERATED', 'DBA_REPFLAVORS', 'DBA_REPFLAVOR_OBJECTS',
- 'DBA_REPFLAVOR_COLUMNS', 'DBA_REPEXTENSIONS', 'DBA_REPDDL',
- 'DBA_REPCONFLICT', 'DBA_REPCOLUMN_GROUP', 'DBA_REPCOLUMN',
- 'DBA_REPCATLOG', 'DBA_REPCAT_USER_PARM_VALUES',
- 'DBA_REPCAT_USER_AUTHORIZATIONS', 'DBA_REPCAT_TEMPLATE_SITES',
- 'DBA_REPCAT_TEMPLATE_PARMS', 'DBA_REPCAT_TEMPLATE_OBJECTS',
- 'DBA_REPCAT_REFRESH_TEMPLATES', 'DBA_REPCAT_EXCEPTIONS', 'DBA_REPCAT',
- 'DBA_REPAUDIT_COLUMN', 'DBA_REPAUDIT_ATTRIBUTE', 'ALL_REPSITES',
- 'ALL_REPSCHEMA', 'ALL_REPRESOLUTION_STATISTICS',
- 'ALL_REPRESOLUTION_METHOD', 'ALL_REPRESOLUTION',
- 'ALL_REPRESOL_STATS_CONTROL', 'ALL_REPPROP', 'ALL_REPPRIORITY_GROUP',
- 'ALL_REPPRIORITY', 'ALL_REPPARAMETER_COLUMN', 'ALL_REPOBJECT',
- 'ALL_REPKEY_COLUMNS', 'ALL_REPGROUPED_COLUMN',
- 'ALL_REPGROUP_PRIVILEGES', 'ALL_REPGROUP', 'ALL_REPGENOBJECTS',
- 'ALL_REPGENERATED', 'ALL_REPFLAVORS', 'ALL_REPFLAVOR_OBJECTS',
- 'ALL_REPFLAVOR_COLUMNS', 'ALL_REPDDL', 'ALL_REPCONFLICT',
- 'ALL_REPCOLUMN_GROUP', 'ALL_REPCOLUMN', 'ALL_REPCATLOG',
- 'ALL_REPCAT_USER_PARM_VALUES', 'ALL_REPCAT_USER_AUTHORIZATIONS',
- 'ALL_REPCAT_TEMPLATE_SITES', 'ALL_REPCAT_TEMPLATE_PARMS',
- 'ALL_REPCAT_TEMPLATE_OBJECTS', 'ALL_REPCAT_REFRESH_TEMPLATES',
- 'ALL_REPCAT', 'ALL_REPAUDIT_COLUMN', 'ALL_REPAUDIT_ATTRIBUTE')
- ),
- 'SYMBOLS' => array(
- //PL/SQL delimiters (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2732)
- '+', '%', "'", '.', '/', '(', ')', ':', ',', '*', '"', '=', '<', '>', '@', ';', '-', ':=', '=>', '||', '**', '<<', '>>', '/*', '*/', '..', '<>', '!=', '~=', '^=', '<=', '>='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #00F;',
- 2 => 'color: #000;',
- 3 => 'color: #00F;',
- 4 => 'color: #F00;',
- 5 => 'color: #800;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #080; font-style: italic;',
- 'MULTI' => 'color: #080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #00F;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #F00;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #800;'
- ),
- 'METHODS' => array(
- 0 => 'color: #0F0;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #00F;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- 0 => 'color: #0F0;'
- )
- ),
- 'URLS' => array(
- 1 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
- 2 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
- 3 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
- 4 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
- 5 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}'
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(),
- 'REGEXPS' => array(),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(),
- 'HIGHLIGHT_STRICT_BLOCK' => array()
-);
-
-?>
+<?php
+/*************************************************************************************
+ * plsql.php
+ * -------
+ * Author: Victor Engmark <victor.engmark at gmail.com>
+ * Copyright: (c) 2006 Victor Engmark (http://l0b0.net/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/10/26
+ *
+ * Oracle 9.2 PL/SQL language file for GeSHi.
+ * Formatting is based on the default setup of TOAD 8.6.
+ *
+ * CHANGES
+ * -------
+ * 2006/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/10/27)
+ * -------------------------
+ * * Add < and > to brackets
+ * * Remove symbols which are also comment delimiters / quote marks?
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'PL/SQL',
+ 'COMMENT_SINGLE' => array(1 =>'--'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2930
+ 'COMMENT_MULTI' => array('/*' => '*/'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2950
+ 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+ 'QUOTEMARKS' => array("'", '"'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ //PL/SQL reserved keywords (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/f_words.htm#LNPLS019)
+ 1 => array('ZONE', 'YEAR', 'WRITE', 'WORK', 'WITH', 'WHILE', 'WHERE',
+ 'WHENEVER', 'WHEN', 'VIEW', 'VARCHAR2', 'VARCHAR', 'VALUES',
+ 'VALIDATE', 'USE', 'UPDATE', 'UNIQUE', 'UNION', 'TYPE', 'TRUE',
+ 'TRIGGER', 'TO', 'TIMEZONE_REGION', 'TIMEZONE_MINUTE', 'TIMEZONE_HOUR',
+ 'TIMEZONE_ABBR', 'TIMESTAMP', 'TIME', 'THEN', 'TABLE', 'SYNONYM',
+ 'SUCCESSFUL', 'SUBTYPE', 'START', 'SQLERRM', 'SQLCODE', 'SQL', 'SPACE',
+ 'SMALLINT', 'SHARE', 'SET', 'SEPARATE', 'SELECT', 'SECOND',
+ 'SAVEPOINT', 'ROWTYPE', 'ROWNUM', 'ROWID', 'ROW', 'ROLLBACK',
+ 'REVERSE', 'RETURN', 'RELEASE', 'RECORD', 'REAL', 'RAW', 'RANGE',
+ 'RAISE', 'PUBLIC', 'PROCEDURE', 'PRIVATE', 'PRIOR', 'PRAGMA',
+ 'POSITIVEN', 'POSITIVE', 'PLS_INTEGER', 'PCTFREE', 'PARTITION',
+ 'PACKAGE', 'OUT', 'OTHERS', 'ORGANIZATION', 'ORDER', 'OR', 'OPTION',
+ 'OPERATOR', 'OPEN', 'OPAQUE', 'ON', 'OF', 'OCIROWID', 'NUMBER_BASE',
+ 'NUMBER', 'NULL', 'NOWAIT', 'NOT', 'NOCOPY', 'NEXTVAL', 'NEW',
+ 'NATURALN', 'NATURAL', 'MONTH', 'MODE', 'MLSLABEL', 'MINUTE', 'MINUS',
+ 'LOOP', 'LONG', 'LOCK', 'LIMITED', 'LIKE', 'LEVEL', 'JAVA',
+ 'ISOLATION', 'IS', 'INTO', 'INTERVAL', 'INTERSECT', 'INTERFACE',
+ 'INTEGER', 'INSERT', 'INDICATOR', 'INDEX', 'IN', 'IMMEDIATE', 'IF',
+ 'HOUR', 'HEAP', 'HAVING', 'GROUP', 'GOTO', 'FUNCTION', 'FROM',
+ 'FORALL', 'FOR', 'FLOAT', 'FETCH', 'FALSE', 'EXTENDS', 'EXIT',
+ 'EXISTS', 'EXECUTE', 'EXCLUSIVE', 'EXCEPTION', 'END', 'ELSIF', 'ELSE',
+ 'DROP', 'DO', 'DISTINCT', 'DESC', 'DELETE', 'DEFAULT', 'DECLARE',
+ 'DECIMAL', 'DAY', 'DATE', 'CURSOR', 'CURRVAL', 'CURRENT', 'CREATE',
+ 'CONSTANT', 'CONNECT', 'COMPRESS', 'COMMIT', 'COMMENT', 'COLLECT',
+ 'CLUSTER', 'CLOSE', 'CHECK', 'CHAR_BASE', 'CHAR', 'CASE', 'BY', 'BULK',
+ 'BOOLEAN', 'BODY', 'BINARY_INTEGER', 'BETWEEN', 'BEGIN', 'AUTHID',
+ 'AT', 'ASC', 'AS', 'ARRAY', 'ANY', 'AND', 'ALTER', 'ALL'),
+ //SQL functions (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/toc.htm & http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/functions101a.htm#85925)
+ 2 => array('XMLTRANSFORM', 'XMLSEQUENCE', 'XMLFOREST', 'XMLELEMENT',
+ 'XMLCONCAT', 'XMLCOLATTVAL', 'XMLAGG', 'WIDTH_BUCKET', 'VSIZE',
+ 'VARIANCE', 'VAR_SAMP', 'VAR_POP', 'VALUE', 'USERENV', 'USER', 'UPPER',
+ 'UPDATEXML', 'UNISTR', 'UID', 'TZ_OFFSET', 'TRUNC', 'TRIM', 'TREAT',
+ 'TRANSLATE', 'TO_YMINTERVAL', 'TO_TIMESTAMP_TZ', 'TO_TIMESTAMP',
+ 'TO_SINGLE_BYTE', 'TO_NUMBER', 'TO_NCLOB', 'TO_NCHAR', 'TO_MULTI_BYTE',
+ 'TO_LOB', 'TO_DSINTERVAL', 'TO_DATE', 'TO_CLOB', 'TO_CHAR', 'TANH',
+ 'TAN', 'SYSTIMESTAMP', 'SYSDATE', 'SYS_XMLGEN', 'SYS_XMLAGG',
+ 'SYS_TYPEID', 'SYS_GUID', 'SYS_EXTRACT_UTC', 'SYS_DBURIGEN',
+ 'SYS_CONTEXT', 'SYS_CONNECT_BY_PATH', 'SUM', 'SUBSTR', 'STDDEV_SAMP',
+ 'STDDEV_POP', 'STDDEV', 'SQRT', 'SOUNDEX', 'SINH', 'SIN', 'SIGN',
+ 'SESSIONTIMEZONE', 'RTRIM', 'RPAD', 'ROWIDTONCHAR', 'ROWIDTOCHAR',
+ 'ROW_NUMBER', 'ROUND', 'REPLACE', 'REGR_SYY', 'REGR_SXY', 'REGR_SXX',
+ 'REGR_SLOPE', 'REGR_R2', 'REGR_INTERCEPT', 'REGR_COUNT', 'REGR_AVGY',
+ 'REGR_AVGX', 'REFTOHEX', 'REF', 'RAWTONHEX', 'RAWTOHEX',
+ 'RATIO_TO_REPORT', 'RANK', 'POWER', 'PERCENTILE_DISC',
+ 'PERCENTILE_CONT', 'PERCENT_RANK', 'PATH', 'NVL2', 'NVL',
+ 'NUMTOYMINTERVAL', 'NUMTODSINTERVAL', 'NULLIF', 'NTILE', 'NLSSORT',
+ 'NLS_UPPER', 'NLS_LOWER', 'NLS_INITCAP', 'NLS_CHARSET_NAME',
+ 'NLS_CHARSET_ID', 'NLS_CHARSET_DECL_LEN', 'NEXT_DAY', 'NEW_TIME',
+ 'NCHR', 'MONTHS_BETWEEN', 'MOD', 'MIN', 'MAX', 'MAKE_REF', 'LTRIM',
+ 'LPAD', 'LOWER', 'LOG', 'LOCALTIMESTAMP', 'LN', 'LENGTH', 'LEAST',
+ 'LEAD', 'LAST_VALUE', 'LAST_DAY', 'LAST', 'LAG', 'INSTR', 'INITCAP',
+ 'HEXTORAW', 'GROUPING_ID', 'GROUPING', 'GROUP_ID', 'GREATEST',
+ 'FROM_TZ', 'FLOOR', 'FIRST_VALUE', 'FIRST', 'EXTRACTVALUE', 'EXTRACT',
+ 'EXP', 'EXISTSNODE', 'EMPTY_CLOB', 'EMPTY_BLOB', 'DUMP', 'DEREF',
+ 'DEPTH', 'DENSE_RANK', 'DECOMPOSE', 'DECODE', 'DBTIMEZONE',
+ 'CURRENT_TIMESTAMP', 'CURRENT_DATE', 'CUME_DIST', 'COVAR_SAMP',
+ 'COVAR_POP', 'COUNT', 'COSH', 'COS', 'CORR', 'CONVERT', 'CONCAT',
+ 'COMPOSE', 'COALESCE', 'CHR', 'CHARTOROWID', 'CEIL', 'CAST', 'BITAND',
+ 'BIN_TO_NUM', 'BFILENAME', 'AVG', 'ATAN2', 'ATAN', 'ASIN', 'ASCIISTR',
+ 'ASCII', 'ADD_MONTHS', 'ACOS', 'ABS'),
+ //PL/SQL packages (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96612/intro2.htm#1025672)
+ 3 => array('UTL_URL', 'UTL_TCP', 'UTL_SMTP', 'UTL_REF', 'UTL_RAW',
+ 'UTL_PG', 'UTL_INADDR', 'UTL_HTTP', 'UTL_FILE', 'UTL_ENCODE',
+ 'UTL_COLL', 'SDO_UTIL', 'SDO_TUNE', 'SDO_MIGRATE', 'SDO_LRS',
+ 'SDO_GEOM', 'SDO_CS', 'DMBS_XMLQUERY', 'DMBS_FLASHBACK',
+ 'DMBS_DEFER_SYS', 'DEBUG_EXTPROC', 'DBMS_XSLPROCESSOR', 'DBMS_XPLAN',
+ 'DBMS_XMLSCHEMA', 'DBMS_XMLSAVE', 'DBMS_XMLPARSER', 'DBMS_XMLGEN',
+ 'DBMS_XMLDOM', 'DBMS_XDBT', 'DBMS_XDB_VERSION', 'DBMS_XDB', 'DBMS_WM',
+ 'DBMS_UTILITY', 'DBMS_TYPES', 'DBMS_TTS', 'DBMS_TRANSFORM',
+ 'DBMS_TRANSACTION', 'DBMS_TRACE', 'DBMS_STRM_A', 'DBMS_STRM',
+ 'DBMS_STORAGE_MAP', 'DBMS_STATS', 'DBMS_SQL', 'DBMS_SPACE_ADMIN',
+ 'DBMS_SPACE', 'DBMS_SHARED_POOL', 'DBMS_SESSION', 'DBMS_RULE_ADM',
+ 'DBMS_RULE', 'DBMS_ROWID', 'DBMS_RLS', 'DBMS_RESUMABLE',
+ 'DBMS_RESOURCE_MANAGER_PRIVS', 'DBMS_RESOURCE_MANAGER', 'DBMS_REPUTIL',
+ 'DBMS_REPCAT_RGT', 'DBMS_REPCAT_INSTATIATE', 'DBMS_REPCAT_ADMIN',
+ 'DBMS_REPCAT', 'DBMS_REPAIR', 'DBMS_REFRESH', 'DBMS_REDEFINITION',
+ 'DBMS_RECTIFIER_DIFF', 'DBMS_RANDOM', 'DBMS_PROPAGATION_ADM',
+ 'DBMS_PROFILER', 'DBMS_PIPE', 'DBMS_PCLXUTIL', 'DBMS_OUTPUT',
+ 'DBMS_OUTLN_EDIT', 'DBMS_OUTLN', 'DBMS_ORACLE_TRACE_USER',
+ 'DBMS_ORACLE_TRACE_AGENT', 'DBMS_OLAP', 'DBMS_OFFLINE_SNAPSHOT',
+ 'DBMS_OFFLINE_OG', 'DBMS_ODCI', 'DBMS_OBFUSCATION_TOOLKIT',
+ 'DBMS_MVIEW', 'DBMS_MGWMSG', 'DBMS_MGWADM', 'DBMS_METADATA',
+ 'DBMS_LOGSTDBY', 'DBMS_LOGMNR_D', 'DBMS_LOGMNR_CDC_SUBSCRIBE',
+ 'DBMS_LOGMNR_CDC_PUBLISH', 'DBMS_LOGMNR', 'DBMS_LOCK', 'DBMS_LOB',
+ 'DBMS_LIBCACHE', 'DBMS_LDAP', 'DBMS_JOB', 'DBMS_IOT',
+ 'DBMS_HS_PASSTHROUGH', 'DBMS_FGA', 'DBMS_DISTRIBUTED_TRUST_ADMIN',
+ 'DBMS_DESCRIBE', 'DBMS_DEFER_QUERY', 'DBMS_DEFER', 'DBMS_DEBUG',
+ 'DBMS_DDL', 'DBMS_CAPTURE_ADM', 'DBMS_AW', 'DBMS_AQELM', 'DBMS_AQADM',
+ 'DBMS_AQ', 'DBMS_APPLY_ADM', 'DBMS_APPLICATION_INFO', 'DBMS_ALERT',
+ 'CWM2_OLAP_AW_ACCESS'),
+ //PL/SQL predefined exceptions (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/07_errs.htm#784)
+ 4 => array('ZERO_DIVIDE', 'VALUE_ERROR', 'TOO_MANY_ROWS',
+ 'TIMEOUT_ON_RESOURCE', 'SYS_INVALID_ROWID', 'SUBSCRIPT_OUTSIDE_LIMIT',
+ 'SUBSCRIPT_BEYOND_COUNT', 'STORAGE_ERROR', 'SELF_IS_NULL',
+ 'ROWTYPE_MISMATCH', 'PROGRAM_ERROR', 'NOT_LOGGED_ON', 'NO_DATA_FOUND',
+ 'LOGIN_DENIED', 'INVALID_NUMBER', 'INVALID_CURSOR', 'DUP_VAL_ON_INDEX',
+ 'CURSOR_ALREADY_OPEN', 'COLLECTION_IS_NULL', 'CASE_NOT_FOUND',
+ 'ACCESS_INTO_NULL'),
+ //Static data dictionary views (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96536/ch2.htm)
+ 5 => array('USER_REPSITES', 'USER_REPSCHEMA',
+ 'USER_REPRESOLUTION_STATISTICS', 'USER_REPRESOLUTION_METHOD',
+ 'USER_REPRESOLUTION', 'USER_REPRESOL_STATS_CONTROL', 'USER_REPPROP',
+ 'USER_REPPRIORITY_GROUP', 'USER_REPPRIORITY',
+ 'USER_REPPARAMETER_COLUMN', 'USER_REPOBJECT', 'USER_REPKEY_COLUMNS',
+ 'USER_REPGROUPED_COLUMN', 'USER_REPGROUP_PRIVILEGES', 'USER_REPGROUP',
+ 'USER_REPGENOBJECTS', 'USER_REPGENERATED', 'USER_REPFLAVORS',
+ 'USER_REPFLAVOR_OBJECTS', 'USER_REPFLAVOR_COLUMNS', 'USER_REPDDL',
+ 'USER_REPCONFLICT', 'USER_REPCOLUMN_GROUP', 'USER_REPCOLUMN',
+ 'USER_REPCATLOG', 'USER_REPCAT_USER_PARM_VALUES',
+ 'USER_REPCAT_USER_AUTHORIZATIONS', 'USER_REPCAT_TEMPLATE_SITES',
+ 'USER_REPCAT_TEMPLATE_PARMS', 'USER_REPCAT_TEMPLATE_OBJECTS',
+ 'USER_REPCAT_REFRESH_TEMPLATES', 'USER_REPCAT', 'USER_REPAUDIT_COLUMN',
+ 'USER_REPAUDIT_ATTRIBUTE', 'DBA_REPSITES_NEW', 'DBA_REPSITES',
+ 'DBA_REPSCHEMA', 'DBA_REPRESOLUTION_STATISTICS',
+ 'DBA_REPRESOLUTION_METHOD', 'DBA_REPRESOLUTION',
+ 'DBA_REPRESOL_STATS_CONTROL', 'DBA_REPPROP', 'DBA_REPPRIORITY_GROUP',
+ 'DBA_REPPRIORITY', 'DBA_REPPARAMETER_COLUMN', 'DBA_REPOBJECT',
+ 'DBA_REPKEY_COLUMNS', 'DBA_REPGROUPED_COLUMN',
+ 'DBA_REPGROUP_PRIVILEGES', 'DBA_REPGROUP', 'DBA_REPGENOBJECTS',
+ 'DBA_REPGENERATED', 'DBA_REPFLAVORS', 'DBA_REPFLAVOR_OBJECTS',
+ 'DBA_REPFLAVOR_COLUMNS', 'DBA_REPEXTENSIONS', 'DBA_REPDDL',
+ 'DBA_REPCONFLICT', 'DBA_REPCOLUMN_GROUP', 'DBA_REPCOLUMN',
+ 'DBA_REPCATLOG', 'DBA_REPCAT_USER_PARM_VALUES',
+ 'DBA_REPCAT_USER_AUTHORIZATIONS', 'DBA_REPCAT_TEMPLATE_SITES',
+ 'DBA_REPCAT_TEMPLATE_PARMS', 'DBA_REPCAT_TEMPLATE_OBJECTS',
+ 'DBA_REPCAT_REFRESH_TEMPLATES', 'DBA_REPCAT_EXCEPTIONS', 'DBA_REPCAT',
+ 'DBA_REPAUDIT_COLUMN', 'DBA_REPAUDIT_ATTRIBUTE', 'ALL_REPSITES',
+ 'ALL_REPSCHEMA', 'ALL_REPRESOLUTION_STATISTICS',
+ 'ALL_REPRESOLUTION_METHOD', 'ALL_REPRESOLUTION',
+ 'ALL_REPRESOL_STATS_CONTROL', 'ALL_REPPROP', 'ALL_REPPRIORITY_GROUP',
+ 'ALL_REPPRIORITY', 'ALL_REPPARAMETER_COLUMN', 'ALL_REPOBJECT',
+ 'ALL_REPKEY_COLUMNS', 'ALL_REPGROUPED_COLUMN',
+ 'ALL_REPGROUP_PRIVILEGES', 'ALL_REPGROUP', 'ALL_REPGENOBJECTS',
+ 'ALL_REPGENERATED', 'ALL_REPFLAVORS', 'ALL_REPFLAVOR_OBJECTS',
+ 'ALL_REPFLAVOR_COLUMNS', 'ALL_REPDDL', 'ALL_REPCONFLICT',
+ 'ALL_REPCOLUMN_GROUP', 'ALL_REPCOLUMN', 'ALL_REPCATLOG',
+ 'ALL_REPCAT_USER_PARM_VALUES', 'ALL_REPCAT_USER_AUTHORIZATIONS',
+ 'ALL_REPCAT_TEMPLATE_SITES', 'ALL_REPCAT_TEMPLATE_PARMS',
+ 'ALL_REPCAT_TEMPLATE_OBJECTS', 'ALL_REPCAT_REFRESH_TEMPLATES',
+ 'ALL_REPCAT', 'ALL_REPAUDIT_COLUMN', 'ALL_REPAUDIT_ATTRIBUTE')
+ ),
+ 'SYMBOLS' => array(
+ //PL/SQL delimiters (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2732)
+ '+', '%', "'", '.', '/', '(', ')', ':', ',', '*', '"', '=', '<', '>', '@', ';', '-', ':=', '=>', '||', '**', '<<', '>>', '/*', '*/', '..', '<>', '!=', '~=', '^=', '<=', '>='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #00F;',
+ 2 => 'color: #000;',
+ 3 => 'color: #00F;',
+ 4 => 'color: #F00;',
+ 5 => 'color: #800;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #080; font-style: italic;',
+ 'MULTI' => 'color: #080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #00F;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #F00;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #800;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #0F0;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #00F;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ 0 => 'color: #0F0;'
+ )
+ ),
+ 'URLS' => array(
+ 1 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
+ 2 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
+ 3 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
+ 4 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}',
+ 5 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAME}'
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(),
+ 'REGEXPS' => array(),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(),
+ 'HIGHLIGHT_STRICT_BLOCK' => array()
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/python.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/python.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/python.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,227 +1,227 @@
-<?php
-/*************************************************************************************
- * python.php
- * ----------
- * Author: Roberto Rossi (rsoftware at altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/30
- *
- * Python language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/05/26
- * - Modifications by Tim (tim at skreak.com): added more keyword categories, tweaked colors
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/08/30 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Python',
- 'COMMENT_SINGLE' => array(1 => '#'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"', "'", '"""'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
-
- /*
- ** Set 1: reserved words
- ** http://python.org/doc/current/ref/keywords.html
- */
- 1 => array(
- 'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break',
- 'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec',
- 'import', 'pass', 'yield', 'def', 'finally', 'in', 'print'
- ),
-
- /*
- ** Set 2: builtins
- ** http://python.org/doc/current/lib/built-in-funcs.html
- */
- 2 => array(
- '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp',
- 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile',
- 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help',
- 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals',
- 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',
- 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
- 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',
- 'vars', 'xrange', 'zip',
- // Built-in constants: http://python.org/doc/current/lib/node35.html
- 'False', 'True', 'None', 'NotImplemented', 'Ellipsis',
- // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html
- 'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError',
- 'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError',
- 'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError',
- 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError',
- 'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError',
- 'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError',
- 'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning',
- 'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning',
- 'RuntimeWarning', 'FutureWarning',
- // self: this is a common python convention (but not a reserved word)
- 'self'
- ),
-
- /*
- ** Set 3: standard library
- ** http://python.org/doc/current/lib/modindex.html
- */
- 3 => array(
- '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm',
- 'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer',
- 'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi',
- 'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop',
- 'collections', 'colorsys', 'commands', 'compileall', 'compiler', 'compiler',
- 'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt',
- 'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE',
- 'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm',
- 'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl',
- 'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl',
- 'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob',
- 'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib',
- 'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect',
- 'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap',
- 'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify',
- 'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator',
- 'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes',
- 'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile',
- 'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random',
- 're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter',
- 'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve',
- 'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd',
- 'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string',
- 'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev',
- 'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios',
- 'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token',
- 'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2',
- 'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings',
- 'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml',
- 'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib'
- ),
-
- /*
- ** Set 4: special methods
- ** http://python.org/doc/current/ref/specialnames.html
- */
- 4 => array(
- /*
- // Iterator types: http://python.org/doc/current/lib/typeiter.html
- '__iter__', 'next',
- // String types: http://python.org/doc/current/lib/string-methods.html
- 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
- 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle',
- 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust',
- 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
- 'translate', 'upper', 'zfill',
- */
- // Basic customization: http://python.org/doc/current/ref/customization.html
- '__new__', '__init__', '__del__', '__repr__', '__str__',
- '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__',
- '__hash__', '__nonzero__', '__unicode__', '__dict__',
- // Attribute access: http://python.org/doc/current/ref/attribute-access.html
- '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__',
- '__delete__', '__slots__',
- // Class creation, callable objects
- '__metaclass__', '__call__',
- // Container types: http://python.org/doc/current/ref/sequence-types.html
- '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__',
- '__getslice__', '__setslice__', '__delslice__',
- // Numeric types: http://python.org/doc/current/ref/numeric-types.html
- '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',
- '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',
- '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__',
- '__long__','__lshift__',
- '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',
- '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',
- '__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__',
- '__sub__','__xor__'
- )
-
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '`'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #ff7700;font-weight:bold;', // Reserved
- 2 => 'color: #008000;', // Built-ins + self
- 3 => 'color: #dc143c;', // Standard lib
- 4 => 'color: #0000cd;' // Special methods
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: black;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #483d8b;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #ff4500;'
- ),
- 'METHODS' => array(
- 1 => 'color: black;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * python.php
+ * ----------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/30
+ *
+ * Python language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/05/26
+ * - Modifications by Tim (tim at skreak.com): added more keyword categories, tweaked colors
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Python',
+ 'COMMENT_SINGLE' => array(1 => '#'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"', "'", '"""'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+
+ /*
+ ** Set 1: reserved words
+ ** http://python.org/doc/current/ref/keywords.html
+ */
+ 1 => array(
+ 'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break',
+ 'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec',
+ 'import', 'pass', 'yield', 'def', 'finally', 'in', 'print'
+ ),
+
+ /*
+ ** Set 2: builtins
+ ** http://python.org/doc/current/lib/built-in-funcs.html
+ */
+ 2 => array(
+ '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp',
+ 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile',
+ 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help',
+ 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals',
+ 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',
+ 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
+ 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',
+ 'vars', 'xrange', 'zip',
+ // Built-in constants: http://python.org/doc/current/lib/node35.html
+ 'False', 'True', 'None', 'NotImplemented', 'Ellipsis',
+ // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html
+ 'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError',
+ 'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError',
+ 'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError',
+ 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError',
+ 'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError',
+ 'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError',
+ 'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning',
+ 'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning',
+ 'RuntimeWarning', 'FutureWarning',
+ // self: this is a common python convention (but not a reserved word)
+ 'self'
+ ),
+
+ /*
+ ** Set 3: standard library
+ ** http://python.org/doc/current/lib/modindex.html
+ */
+ 3 => array(
+ '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm',
+ 'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer',
+ 'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi',
+ 'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop',
+ 'collections', 'colorsys', 'commands', 'compileall', 'compiler', 'compiler',
+ 'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt',
+ 'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE',
+ 'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm',
+ 'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl',
+ 'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl',
+ 'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob',
+ 'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib',
+ 'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect',
+ 'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap',
+ 'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify',
+ 'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator',
+ 'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes',
+ 'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile',
+ 'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random',
+ 're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter',
+ 'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve',
+ 'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd',
+ 'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string',
+ 'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev',
+ 'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios',
+ 'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token',
+ 'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2',
+ 'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings',
+ 'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml',
+ 'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib'
+ ),
+
+ /*
+ ** Set 4: special methods
+ ** http://python.org/doc/current/ref/specialnames.html
+ */
+ 4 => array(
+ /*
+ // Iterator types: http://python.org/doc/current/lib/typeiter.html
+ '__iter__', 'next',
+ // String types: http://python.org/doc/current/lib/string-methods.html
+ 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
+ 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle',
+ 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust',
+ 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
+ 'translate', 'upper', 'zfill',
+ */
+ // Basic customization: http://python.org/doc/current/ref/customization.html
+ '__new__', '__init__', '__del__', '__repr__', '__str__',
+ '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__',
+ '__hash__', '__nonzero__', '__unicode__', '__dict__',
+ // Attribute access: http://python.org/doc/current/ref/attribute-access.html
+ '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__',
+ '__delete__', '__slots__',
+ // Class creation, callable objects
+ '__metaclass__', '__call__',
+ // Container types: http://python.org/doc/current/ref/sequence-types.html
+ '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__',
+ '__getslice__', '__setslice__', '__delslice__',
+ // Numeric types: http://python.org/doc/current/ref/numeric-types.html
+ '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',
+ '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',
+ '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__',
+ '__long__','__lshift__',
+ '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',
+ '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',
+ '__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__',
+ '__sub__','__xor__'
+ )
+
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '`'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ 4 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #ff7700;font-weight:bold;', // Reserved
+ 2 => 'color: #008000;', // Built-ins + self
+ 3 => 'color: #dc143c;', // Standard lib
+ 4 => 'color: #0000cd;' // Special methods
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: black;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #483d8b;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #ff4500;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: black;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/qbasic.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/qbasic.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/qbasic.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,146 +1,146 @@
-<?php
-/*************************************************************************************
- * qbasic.php
- * ----------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/20
- *
- * QBasic/QuickBASIC language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.2)
- * - Added support for URLs
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * - Removed unnessecary slashes from some keywords
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Make sure all possible combinations of keywords with
- * a space in them (EXIT FOR, END SELECT) are added
- * to the first keyword group
- * * Update colours, especially for the first keyword group
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-$language_data = array (
- 'LANG_NAME' => 'QBasic/QuickBASIC',
- 'COMMENT_SINGLE' => array(1 => "'", 2 => ' REM', 3 => "\tREM"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'DO', 'LOOP', 'WHILE', 'WEND', 'THEN', 'ELSE', 'ELSEIF', 'IF',
- 'FOR', 'TO', 'NEXT', 'STEP', 'GOTO', 'GOSUB', 'RETURN', 'RESUME', 'SELECT',
- 'CASE', 'UNTIL'
- ),
- 3 => array(
- 'ABS', 'ABSOLUTE', 'ACCESS', 'ALIAS', 'AND', 'ANY', 'APPEND', 'AS', 'ASC', 'ATN',
- 'BASE', 'BEEP', 'BINARY', 'BLOAD', 'BSAVE', 'BYVAL', 'CALL', 'CALLS', 'CASE',
- 'CDBL', 'CDECL', 'CHAIN', 'CHDIR', 'CHDIR', 'CHR$', 'CINT', 'CIRCLE', 'CLEAR',
- 'CLNG', 'CLOSE', 'CLS', 'COM', 'COMMAND$', 'COMMON', 'CONST', 'COS', 'CSNG',
- 'CSRLIN', 'CVD', 'CVDMBF', 'CVI', 'CVL', 'CVS', 'CVSMDF', 'DATA', 'DATE$',
- 'DECLARE', 'DEF', 'FN', 'SEG', 'DEFDBL', 'DEFINT', 'DEFLNG', 'DEFSNG', 'DEFSTR',
- 'DIM', 'DOUBLE', 'DRAW', 'END', 'ENVIRON', 'ENVIRON$', 'EOF', 'EQV', 'ERASE',
- 'ERDEV', 'ERDEV$', 'ERL', 'ERR', 'ERROR', 'EXIT', 'EXP', 'FIELD', 'FILEATTR',
- 'FILES', 'FIX', 'FRE', 'FREEFILE', 'FUNCTION', 'GET', 'HEX$', 'IMP', 'INKEY$',
- 'INP', 'INPUT', 'INPUT$', 'INSTR', 'INT', 'INTEGER', 'IOCTL', 'IOCTL$', 'IS',
- 'KEY', 'KILL', 'LBOUND', 'LCASE$', 'LEFT$', 'LEN', 'LET', 'LINE', 'LIST', 'LOC',
- 'LOCAL', 'LOCATE', 'LOCK', 'LOF', 'LOG', 'UNLOCK', 'LONG', 'LPOS', 'LPRINT',
- 'LSET', 'LTRIM$', 'MID$', 'MKD$', 'MKDIR', 'MKDMBF$', 'MKI$', 'MKL$',
- 'MKS$', 'MKSMBF$', 'MOD', 'NAME', 'NOT', 'OCT$', 'OFF', 'ON', 'PEN', 'PLAY',
- 'STRIG', 'TIMER', 'UEVENT', 'OPEN', 'OPTION', 'BASE', 'OR', 'OUT', 'OUTPUT',
- 'PAINT', 'PALETTE', 'PCOPY', 'PEEK', 'PMAP', 'POINT', 'POKE', 'POS', 'PRESET',
- 'PRINT', 'USING', 'PSET', 'PUT', 'RANDOM', 'RANDOMIZE', 'READ', 'REDIM', 'RESET',
- 'RESTORE', 'RIGHT$', 'RMDIR', 'RND', 'RSET', 'RTRIM$', 'RUN', 'SADD', 'SCREEN',
- 'SEEK', 'SETMEM', 'SGN', 'SHARED', 'SHELL', 'SIGNAL', 'SIN', 'SINGLE', 'SLEEP',
- 'SOUND', 'SPACE$', 'SPC', 'SQR', 'STATIC', 'STICK', 'STOP', 'STR$', 'STRIG',
- 'STRING', 'STRING$', 'SUB', 'SWAP', 'SYSTEM', 'TAB', 'TAN', 'TIME$', 'TIMER',
- 'TROFF', 'TRON', 'TYPE', 'UBOUND', 'UCASE$', 'UEVENT', 'UNLOCK', 'USING', 'VAL',
- 'VARPTR', 'VARPTR$', 'VARSEG', 'VIEW', 'WAIT', 'WIDTH', 'WINDOW', 'WRITE', 'XOR'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 3 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #a1a100;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080;',
- 2 => 'color: #808080;',
- 3 => 'color: #808080;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 3 => 'http://www.qbasicnews.com/qboho/qck{FNAMEL}.shtml'
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 8
-);
-
-?>
+<?php
+/*************************************************************************************
+ * qbasic.php
+ * ----------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/20
+ *
+ * QBasic/QuickBASIC language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ * - Added support for URLs
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * - Removed unnessecary slashes from some keywords
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Make sure all possible combinations of keywords with
+ * a space in them (EXIT FOR, END SELECT) are added
+ * to the first keyword group
+ * * Update colours, especially for the first keyword group
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+$language_data = array (
+ 'LANG_NAME' => 'QBasic/QuickBASIC',
+ 'COMMENT_SINGLE' => array(1 => "'", 2 => ' REM', 3 => "\tREM"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'DO', 'LOOP', 'WHILE', 'WEND', 'THEN', 'ELSE', 'ELSEIF', 'IF',
+ 'FOR', 'TO', 'NEXT', 'STEP', 'GOTO', 'GOSUB', 'RETURN', 'RESUME', 'SELECT',
+ 'CASE', 'UNTIL'
+ ),
+ 3 => array(
+ 'ABS', 'ABSOLUTE', 'ACCESS', 'ALIAS', 'AND', 'ANY', 'APPEND', 'AS', 'ASC', 'ATN',
+ 'BASE', 'BEEP', 'BINARY', 'BLOAD', 'BSAVE', 'BYVAL', 'CALL', 'CALLS', 'CASE',
+ 'CDBL', 'CDECL', 'CHAIN', 'CHDIR', 'CHDIR', 'CHR$', 'CINT', 'CIRCLE', 'CLEAR',
+ 'CLNG', 'CLOSE', 'CLS', 'COM', 'COMMAND$', 'COMMON', 'CONST', 'COS', 'CSNG',
+ 'CSRLIN', 'CVD', 'CVDMBF', 'CVI', 'CVL', 'CVS', 'CVSMDF', 'DATA', 'DATE$',
+ 'DECLARE', 'DEF', 'FN', 'SEG', 'DEFDBL', 'DEFINT', 'DEFLNG', 'DEFSNG', 'DEFSTR',
+ 'DIM', 'DOUBLE', 'DRAW', 'END', 'ENVIRON', 'ENVIRON$', 'EOF', 'EQV', 'ERASE',
+ 'ERDEV', 'ERDEV$', 'ERL', 'ERR', 'ERROR', 'EXIT', 'EXP', 'FIELD', 'FILEATTR',
+ 'FILES', 'FIX', 'FRE', 'FREEFILE', 'FUNCTION', 'GET', 'HEX$', 'IMP', 'INKEY$',
+ 'INP', 'INPUT', 'INPUT$', 'INSTR', 'INT', 'INTEGER', 'IOCTL', 'IOCTL$', 'IS',
+ 'KEY', 'KILL', 'LBOUND', 'LCASE$', 'LEFT$', 'LEN', 'LET', 'LINE', 'LIST', 'LOC',
+ 'LOCAL', 'LOCATE', 'LOCK', 'LOF', 'LOG', 'UNLOCK', 'LONG', 'LPOS', 'LPRINT',
+ 'LSET', 'LTRIM$', 'MID$', 'MKD$', 'MKDIR', 'MKDMBF$', 'MKI$', 'MKL$',
+ 'MKS$', 'MKSMBF$', 'MOD', 'NAME', 'NOT', 'OCT$', 'OFF', 'ON', 'PEN', 'PLAY',
+ 'STRIG', 'TIMER', 'UEVENT', 'OPEN', 'OPTION', 'BASE', 'OR', 'OUT', 'OUTPUT',
+ 'PAINT', 'PALETTE', 'PCOPY', 'PEEK', 'PMAP', 'POINT', 'POKE', 'POS', 'PRESET',
+ 'PRINT', 'USING', 'PSET', 'PUT', 'RANDOM', 'RANDOMIZE', 'READ', 'REDIM', 'RESET',
+ 'RESTORE', 'RIGHT$', 'RMDIR', 'RND', 'RSET', 'RTRIM$', 'RUN', 'SADD', 'SCREEN',
+ 'SEEK', 'SETMEM', 'SGN', 'SHARED', 'SHELL', 'SIGNAL', 'SIN', 'SINGLE', 'SLEEP',
+ 'SOUND', 'SPACE$', 'SPC', 'SQR', 'STATIC', 'STICK', 'STOP', 'STR$', 'STRIG',
+ 'STRING', 'STRING$', 'SUB', 'SWAP', 'SYSTEM', 'TAB', 'TAN', 'TIME$', 'TIMER',
+ 'TROFF', 'TRON', 'TYPE', 'UBOUND', 'UCASE$', 'UEVENT', 'UNLOCK', 'USING', 'VAL',
+ 'VARPTR', 'VARPTR$', 'VARSEG', 'VIEW', 'WAIT', 'WIDTH', 'WINDOW', 'WRITE', 'XOR'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 3 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #a1a100;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080;',
+ 2 => 'color: #808080;',
+ 3 => 'color: #808080;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 3 => 'http://www.qbasicnews.com/qboho/qck{FNAMEL}.shtml'
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 8
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/rails.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/rails.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/rails.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,404 +1,404 @@
-<?php
-/*************************************************************************************
- * rails.php
- * ---------
- * Author: Moises Deniz
- * Copyright: (c) 2005 Moises Deniz
- * Release Version: 1.0.7.21
- * Date Started: 2007/03/21
- *
- * Ruby language and Ruby on Rails Framework file for GeSHi
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Rails',
- 'COMMENT_SINGLE' => array(1 => "#"),
- 'COMMENT_MULTI' => array("=begin" => "=end"),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"', '`','\''),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'alias', 'and', 'begin', 'break', 'case', 'class',
- 'def', 'defined', 'do', 'else', 'elsif', 'end',
- 'ensure', 'for', 'if', 'in', 'module', 'while',
- 'next', 'not', 'or', 'redo', 'rescue', 'yield',
- 'retry', 'super', 'then', 'undef', 'unless',
- 'until', 'when', 'BEGIN', 'END', 'include'
- ),
- 2 => array(
- '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',
- 'return'
- ),
- 3 => array(
- 'Array', 'Float', 'Integer', 'String', 'at_exit',
- 'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',
- 'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',
- 'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',
- 'iterator?', 'lambda', 'load', 'local_variables', 'loop',
- 'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',
- 'raise', 'rand', 'readline', 'readlines', 'require', 'select',
- 'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',
- 'system', 'trace_var', 'trap', 'untrace_var'
- ),
- 4 => array(
- 'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',
- 'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',
- 'CGI::HtmlExtension', 'CGI::QueryExtension',
- 'CGI::Session', 'CGI::Session::FileStore',
- 'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',
- 'ConditionVariable', 'Continuation', 'Data',
- 'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',
- 'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',
- 'Exception', 'FalseClass', 'File',
- 'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',
- 'FileUtils::DryRun', 'FileUtils::NoWrite',
- 'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',
- 'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',
- 'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',
- 'Iconv::Failure', 'Iconv::IllegalSequence',
- 'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',
- 'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',
- 'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',
- 'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',
- 'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',
- 'Logger::ShiftingError', 'Marshal', 'MatchData',
- 'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',
- 'NameError::message', 'NilClass', 'NoMemoryError',
- 'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',
- 'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',
- 'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',
- 'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',
- 'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',
- 'RuntimeError', 'ScriptError', 'SecurityError', 'Set',
- 'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',
- 'SingleForwardable', 'Singleton', 'SingletonClassMethods',
- 'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',
- 'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',
- 'SyncEnumerator', 'SyntaxError', 'SystemCallError',
- 'SystemExit', 'SystemStackError', 'Tempfile',
- 'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',
- 'ThreadError', 'ThreadGroup',
- 'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',
- 'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',
- 'URI::Generic', 'URI::HTTP', 'URI::HTTPS',
- 'URI::InvalidComponentError', 'URI::InvalidURIError',
- 'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',
- 'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',
- 'ZeroDivisionError', 'Zlib',
- 'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',
- 'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',
- 'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',
- 'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',
- 'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',
- 'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',
- 'Zlib::VersionError',
- 'Zlib::ZStream',
- 'ActionController::AbstractRequest',
- 'ActionController::Assertions::DomAssertions',
- 'ActionController::Assertions::ModelAssertions',
- 'ActionController::Assertions::ResponseAssertions',
- 'ActionController::Assertions::RoutingAssertions',
- 'ActionController::Assertions::SelectorAssertions',
- 'ActionController::Assertions::TagAssertions',
- 'ActionController::Base',
- 'ActionController::Benchmarking::ClassMethods',
- 'ActionController::Caching',
- 'ActionController::Caching::Actions',
- 'ActionController::Caching::Actions::ActionCachePath',
- 'ActionController::Caching::Fragments',
- 'ActionController::Caching::Pages',
- 'ActionController::Caching::Pages::ClassMethods',
- 'ActionController::Caching::Sweeping',
- 'ActionController::Components',
- 'ActionController::Components::ClassMethods',
- 'ActionController::Components::InstanceMethods',
- 'ActionController::Cookies',
- 'ActionController::Filters::ClassMethods',
- 'ActionController::Flash',
- 'ActionController::Flash::FlashHash',
- 'ActionController::Helpers::ClassMethods',
- 'ActionController::Integration::Session',
- 'ActionController::IntegrationTest',
- 'ActionController::Layout::ClassMethods',
- 'ActionController::Macros',
- 'ActionController::Macros::AutoComplete::ClassMethods',
- 'ActionController::Macros::InPlaceEditing::ClassMethods',
- 'ActionController::MimeResponds::InstanceMethods',
- 'ActionController::Pagination',
- 'ActionController::Pagination::ClassMethods',
- 'ActionController::Pagination::Paginator',
- 'ActionController::Pagination::Paginator::Page',
- 'ActionController::Pagination::Paginator::Window',
- 'ActionController::Rescue', 'ActionController::Resources',
- 'ActionController::Routing',
- 'ActionController::Scaffolding::ClassMethods',
- 'ActionController::SessionManagement::ClassMethods',
- 'ActionController::Streaming', 'ActionController::TestProcess',
- 'ActionController::TestUploadedFile',
- 'ActionController::UrlWriter',
- 'ActionController::Verification::ClassMethods',
- 'ActionMailer::Base', 'ActionView::Base',
- 'ActionView::Helpers::ActiveRecordHelper',
- 'ActionView::Helpers::AssetTagHelper',
- 'ActionView::Helpers::BenchmarkHelper',
- 'ActionView::Helpers::CacheHelper',
- 'ActionView::Helpers::CaptureHelper',
- 'ActionView::Helpers::DateHelper',
- 'ActionView::Helpers::DebugHelper',
- 'ActionView::Helpers::FormHelper',
- 'ActionView::Helpers::FormOptionsHelper',
- 'ActionView::Helpers::FormTagHelper',
- 'ActionView::Helpers::JavaScriptHelper',
- 'ActionView::Helpers::JavaScriptMacrosHelper',
- 'ActionView::Helpers::NumberHelper',
- 'ActionView::Helpers::PaginationHelper',
- 'ActionView::Helpers::PrototypeHelper',
- 'ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods',
- 'ActionView::Helpers::ScriptaculousHelper',
- 'ActionView::Helpers::TagHelper',
- 'ActionView::Helpers::TextHelper',
- 'ActionView::Helpers::UrlHelper', 'ActionView::Partials',
- 'ActionWebService::API::Method', 'ActionWebService::Base',
- 'ActionWebService::Client::Soap',
- 'ActionWebService::Client::XmlRpc',
- 'ActionWebService::Container::ActionController::ClassMethods',
- 'ActionWebService::Container::Delegated::ClassMethods',
- 'ActionWebService::Container::Direct::ClassMethods',
- 'ActionWebService::Invocation::ClassMethods',
- 'ActionWebService::Scaffolding::ClassMethods',
- 'ActionWebService::SignatureTypes', 'ActionWebService::Struct',
- 'ActiveRecord::Acts::List::ClassMethods',
- 'ActiveRecord::Acts::List::InstanceMethods',
- 'ActiveRecord::Acts::NestedSet::ClassMethods',
- 'ActiveRecord::Acts::NestedSet::InstanceMethods',
- 'ActiveRecord::Acts::Tree::ClassMethods',
- 'ActiveRecord::Acts::Tree::InstanceMethods',
- 'ActiveRecord::Aggregations::ClassMethods',
- 'ActiveRecord::Associations::ClassMethods',
- 'ActiveRecord::AttributeMethods::ClassMethods',
- 'ActiveRecord::Base',
- 'ActiveRecord::Calculations::ClassMethods',
- 'ActiveRecord::Callbacks',
- 'ActiveRecord::ConnectionAdapters::AbstractAdapter',
- 'ActiveRecord::ConnectionAdapters::Column',
- 'ActiveRecord::ConnectionAdapters::DB2Adapter',
- 'ActiveRecord::ConnectionAdapters::DatabaseStatements',
- 'ActiveRecord::ConnectionAdapters::FirebirdAdapter',
- 'ActiveRecord::ConnectionAdapters::FrontBaseAdapter',
- 'ActiveRecord::ConnectionAdapters::MysqlAdapter',
- 'ActiveRecord::ConnectionAdapters::OpenBaseAdapter',
- 'ActiveRecord::ConnectionAdapters::OracleAdapter',
- 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter',
- 'ActiveRecord::ConnectionAdapters::Quoting',
- 'ActiveRecord::ConnectionAdapters::SQLServerAdapter',
- 'ActiveRecord::ConnectionAdapters::SQLiteAdapter',
- 'ActiveRecord::ConnectionAdapters::SchemaStatements',
- 'ActiveRecord::ConnectionAdapters::SybaseAdapter::ColumnWithIdentity',
- 'ActiveRecord::ConnectionAdapters::SybaseAdapterContext',
- 'ActiveRecord::ConnectionAdapters::TableDefinition',
- 'ActiveRecord::Errors', 'ActiveRecord::Locking',
- 'ActiveRecord::Locking::Optimistic',
- 'ActiveRecord::Locking::Optimistic::ClassMethods',
- 'ActiveRecord::Locking::Pessimistic',
- 'ActiveRecord::Migration', 'ActiveRecord::Observer',
- 'ActiveRecord::Observing::ClassMethods',
- 'ActiveRecord::Reflection::ClassMethods',
- 'ActiveRecord::Reflection::MacroReflection',
- 'ActiveRecord::Schema', 'ActiveRecord::Timestamp',
- 'ActiveRecord::Transactions::ClassMethods',
- 'ActiveRecord::Validations',
- 'ActiveRecord::Validations::ClassMethods',
- 'ActiveRecord::XmlSerialization',
- 'ActiveSupport::CachingTools::HashCaching',
- 'ActiveSupport::CoreExtensions::Array::Conversions',
- 'ActiveSupport::CoreExtensions::Array::Grouping',
- 'ActiveSupport::CoreExtensions::Date::Conversions',
- 'ActiveSupport::CoreExtensions::Hash::Conversions',
- 'ActiveSupport::CoreExtensions::Hash::Conversions::ClassMethods',
- 'ActiveSupport::CoreExtensions::Hash::Diff',
- 'ActiveSupport::CoreExtensions::Hash::Keys',
- 'ActiveSupport::CoreExtensions::Hash::ReverseMerge',
- 'ActiveSupport::CoreExtensions::Integer::EvenOdd',
- 'ActiveSupport::CoreExtensions::Integer::Inflections',
- 'ActiveSupport::CoreExtensions::Numeric::Bytes',
- 'ActiveSupport::CoreExtensions::Numeric::Time',
- 'ActiveSupport::CoreExtensions::Pathname::CleanWithin',
- 'ActiveSupport::CoreExtensions::Range::Conversions',
- 'ActiveSupport::CoreExtensions::String::Access',
- 'ActiveSupport::CoreExtensions::String::Conversions',
- 'ActiveSupport::CoreExtensions::String::Inflections',
- 'ActiveSupport::CoreExtensions::String::Iterators',
- 'ActiveSupport::CoreExtensions::String::StartsEndsWith',
- 'ActiveSupport::CoreExtensions::String::Unicode',
- 'ActiveSupport::CoreExtensions::Time::Calculations',
- 'ActiveSupport::CoreExtensions::Time::Calculations::ClassMethods',
- 'ActiveSupport::CoreExtensions::Time::Conversions',
- 'ActiveSupport::Multibyte::Chars',
- 'ActiveSupport::Multibyte::Handlers::UTF8Handler', 'Binding',
- 'Breakpoint', 'Builder::BlankSlate', 'Builder::XmlMarkup',
- 'Enumerable', 'Fixtures',
- 'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',
- 'Inflector::Inflections', 'Mime', 'Mime::Type',
- 'OCI8AutoRecover', 'Symbol', 'TimeZone', 'XmlSimple'
- ),
- 5 => array(
- 'image_tag', 'link_to', 'link_to_remote', 'javascript_include_tag',
- 'assert_equal', 'assert_not_equal', 'before_filter',
- 'after_filter', 'render', 'redirect_to', 'hide_action',
- 'render_to_string', 'url_for', 'controller_name',
- 'controller_class_name', 'controller_path', 'session',
- 'render_component', 'render_component_as_string', 'cookie',
- 'layout', 'flash', 'auto_complete_for', 'in_place_editor_for',
- 'respond_to', 'paginate', 'current_page', 'each', 'first',
- 'first_page', 'last_page', 'last', 'length', 'new', 'page_count',
- 'previous', 'next', 'scaffold', 'session', 'send_data',
- 'send_file', 'deliver', 'receive', 'error_messages_for',
- 'error_message_on', 'form', 'input', 'stylesheet_link_tag',
- 'stylesheet_path', 'content_for', 'select_date', 'select', 'ago',
- 'month', 'day', 'check_box', 'fields_for', 'file_field',
- 'form_for', 'hidden_field', 'text_area', 'password_field',
- 'collection_select', 'options_for_select',
- 'options_from_collection_for_select', 'file_field_tag',
- 'form_for_tag', 'hidden_field_tag', 'text_area_tag',
- 'password_field_tag', 'link_to_function', 'javascript_tag',
- 'human_size', 'number_to_currency', 'pagination_links',
- 'form_remote_tag', 'form_remote_for', 'link_to_remote',
- 'submit_to_remote', 'remote_function', 'observe_form',
- 'observe_field', 'remote_form_for', 'options_for_ajax', 'alert',
- 'call', 'assign', 'show', 'hide', 'insert_html', 'sortable',
- 'toggle', 'visual_effect', 'replace', 'replace_html', 'remove',
- 'save', 'save!', 'draggable', 'drop_receiving', 'literal',
- 'draggable_element', 'drop_receiving_element', 'sortable_element',
- 'content_tag', 'tag', 'link_to_image', 'link_to_if',
- 'link_to_unless', 'mail_to', 'link_image_to', 'button_to',
- 'current_page?', 'act_as_list', 'act_as_nested', 'act_as_tree',
- 'has_many', 'has_one', 'belongs_to', 'has_many_and_belogns_to',
- 'delete', 'destroy', 'destroy_all', 'clone', 'deep_clone', 'copy',
- 'update', 'table_name', 'primary_key', 'sum', 'maximun', 'minimum',
- 'count', 'size', 'after_save', 'after_create', 'before_save',
- 'before_create', 'add_to_base', 'errors', 'add', 'validate',
- 'validate', 'validates_presence_of', 'validates_format_of',
- 'validates_numericality_of', 'validates_uniqueness_of',
- 'validates_length_of', 'validates_format_of', 'validates_size_of',
- 'to_a', 'to_s', 'to_xml', 'to_i'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',
- '+', '-', '=>', '=>', '<<'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true,
- 5 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color:#9966CC; font-weight:bold;',
- 2 => 'color:#0000FF; font-weight:bold;',
- 3 => 'color:#CC0066; font-weight:bold;',
- 4 => 'color:#CC00FF; font-weight:bold;',
- 5 => 'color:#5A0A0A; font-weight:bold;'
- ),
- 'COMMENTS' => array(
- 1 => 'color:#008000; font-style:italic;',
- 'MULTI' => 'color:#000080; font-style:italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color:#000099;'
- ),
- 'BRACKETS' => array(
- 0 => 'color:#006600; font-weight:bold;'
- ),
- 'STRINGS' => array(
- 0 => 'color:#996600;'
- ),
- 'NUMBERS' => array(
- 0 => 'color:#006666;'
- ),
- 'METHODS' => array(
- 1 => 'color:#9900CC;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color:#006600; font-weight:bold;'
- ),
- 'REGEXPS' => array(
- 0 => 'color:#ff6633; font-weight:bold;',
- 1 => 'color:#0066ff; font-weight:bold;',
- 2 => 'color:#6666ff; font-weight:bold;',
- 3 => 'color:#ff3333; font-weight:bold;'
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- 0 => array(
- GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)",
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- 1 => array(
- GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)",
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- 2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*",
- 3 => array(
- GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)",
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<%' => '%>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * rails.php
+ * ---------
+ * Author: Moises Deniz
+ * Copyright: (c) 2005 Moises Deniz
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/03/21
+ *
+ * Ruby language and Ruby on Rails Framework file for GeSHi
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Rails',
+ 'COMMENT_SINGLE' => array(1 => "#"),
+ 'COMMENT_MULTI' => array("=begin" => "=end"),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"', '`','\''),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'alias', 'and', 'begin', 'break', 'case', 'class',
+ 'def', 'defined', 'do', 'else', 'elsif', 'end',
+ 'ensure', 'for', 'if', 'in', 'module', 'while',
+ 'next', 'not', 'or', 'redo', 'rescue', 'yield',
+ 'retry', 'super', 'then', 'undef', 'unless',
+ 'until', 'when', 'BEGIN', 'END', 'include'
+ ),
+ 2 => array(
+ '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',
+ 'return'
+ ),
+ 3 => array(
+ 'Array', 'Float', 'Integer', 'String', 'at_exit',
+ 'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',
+ 'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',
+ 'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',
+ 'iterator?', 'lambda', 'load', 'local_variables', 'loop',
+ 'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',
+ 'raise', 'rand', 'readline', 'readlines', 'require', 'select',
+ 'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',
+ 'system', 'trace_var', 'trap', 'untrace_var'
+ ),
+ 4 => array(
+ 'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',
+ 'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',
+ 'CGI::HtmlExtension', 'CGI::QueryExtension',
+ 'CGI::Session', 'CGI::Session::FileStore',
+ 'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',
+ 'ConditionVariable', 'Continuation', 'Data',
+ 'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',
+ 'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',
+ 'Exception', 'FalseClass', 'File',
+ 'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',
+ 'FileUtils::DryRun', 'FileUtils::NoWrite',
+ 'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',
+ 'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',
+ 'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',
+ 'Iconv::Failure', 'Iconv::IllegalSequence',
+ 'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',
+ 'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',
+ 'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',
+ 'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',
+ 'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',
+ 'Logger::ShiftingError', 'Marshal', 'MatchData',
+ 'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',
+ 'NameError::message', 'NilClass', 'NoMemoryError',
+ 'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',
+ 'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',
+ 'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',
+ 'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',
+ 'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',
+ 'RuntimeError', 'ScriptError', 'SecurityError', 'Set',
+ 'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',
+ 'SingleForwardable', 'Singleton', 'SingletonClassMethods',
+ 'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',
+ 'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',
+ 'SyncEnumerator', 'SyntaxError', 'SystemCallError',
+ 'SystemExit', 'SystemStackError', 'Tempfile',
+ 'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',
+ 'ThreadError', 'ThreadGroup',
+ 'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',
+ 'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',
+ 'URI::Generic', 'URI::HTTP', 'URI::HTTPS',
+ 'URI::InvalidComponentError', 'URI::InvalidURIError',
+ 'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',
+ 'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',
+ 'ZeroDivisionError', 'Zlib',
+ 'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',
+ 'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',
+ 'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',
+ 'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',
+ 'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',
+ 'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',
+ 'Zlib::VersionError',
+ 'Zlib::ZStream',
+ 'ActionController::AbstractRequest',
+ 'ActionController::Assertions::DomAssertions',
+ 'ActionController::Assertions::ModelAssertions',
+ 'ActionController::Assertions::ResponseAssertions',
+ 'ActionController::Assertions::RoutingAssertions',
+ 'ActionController::Assertions::SelectorAssertions',
+ 'ActionController::Assertions::TagAssertions',
+ 'ActionController::Base',
+ 'ActionController::Benchmarking::ClassMethods',
+ 'ActionController::Caching',
+ 'ActionController::Caching::Actions',
+ 'ActionController::Caching::Actions::ActionCachePath',
+ 'ActionController::Caching::Fragments',
+ 'ActionController::Caching::Pages',
+ 'ActionController::Caching::Pages::ClassMethods',
+ 'ActionController::Caching::Sweeping',
+ 'ActionController::Components',
+ 'ActionController::Components::ClassMethods',
+ 'ActionController::Components::InstanceMethods',
+ 'ActionController::Cookies',
+ 'ActionController::Filters::ClassMethods',
+ 'ActionController::Flash',
+ 'ActionController::Flash::FlashHash',
+ 'ActionController::Helpers::ClassMethods',
+ 'ActionController::Integration::Session',
+ 'ActionController::IntegrationTest',
+ 'ActionController::Layout::ClassMethods',
+ 'ActionController::Macros',
+ 'ActionController::Macros::AutoComplete::ClassMethods',
+ 'ActionController::Macros::InPlaceEditing::ClassMethods',
+ 'ActionController::MimeResponds::InstanceMethods',
+ 'ActionController::Pagination',
+ 'ActionController::Pagination::ClassMethods',
+ 'ActionController::Pagination::Paginator',
+ 'ActionController::Pagination::Paginator::Page',
+ 'ActionController::Pagination::Paginator::Window',
+ 'ActionController::Rescue', 'ActionController::Resources',
+ 'ActionController::Routing',
+ 'ActionController::Scaffolding::ClassMethods',
+ 'ActionController::SessionManagement::ClassMethods',
+ 'ActionController::Streaming', 'ActionController::TestProcess',
+ 'ActionController::TestUploadedFile',
+ 'ActionController::UrlWriter',
+ 'ActionController::Verification::ClassMethods',
+ 'ActionMailer::Base', 'ActionView::Base',
+ 'ActionView::Helpers::ActiveRecordHelper',
+ 'ActionView::Helpers::AssetTagHelper',
+ 'ActionView::Helpers::BenchmarkHelper',
+ 'ActionView::Helpers::CacheHelper',
+ 'ActionView::Helpers::CaptureHelper',
+ 'ActionView::Helpers::DateHelper',
+ 'ActionView::Helpers::DebugHelper',
+ 'ActionView::Helpers::FormHelper',
+ 'ActionView::Helpers::FormOptionsHelper',
+ 'ActionView::Helpers::FormTagHelper',
+ 'ActionView::Helpers::JavaScriptHelper',
+ 'ActionView::Helpers::JavaScriptMacrosHelper',
+ 'ActionView::Helpers::NumberHelper',
+ 'ActionView::Helpers::PaginationHelper',
+ 'ActionView::Helpers::PrototypeHelper',
+ 'ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods',
+ 'ActionView::Helpers::ScriptaculousHelper',
+ 'ActionView::Helpers::TagHelper',
+ 'ActionView::Helpers::TextHelper',
+ 'ActionView::Helpers::UrlHelper', 'ActionView::Partials',
+ 'ActionWebService::API::Method', 'ActionWebService::Base',
+ 'ActionWebService::Client::Soap',
+ 'ActionWebService::Client::XmlRpc',
+ 'ActionWebService::Container::ActionController::ClassMethods',
+ 'ActionWebService::Container::Delegated::ClassMethods',
+ 'ActionWebService::Container::Direct::ClassMethods',
+ 'ActionWebService::Invocation::ClassMethods',
+ 'ActionWebService::Scaffolding::ClassMethods',
+ 'ActionWebService::SignatureTypes', 'ActionWebService::Struct',
+ 'ActiveRecord::Acts::List::ClassMethods',
+ 'ActiveRecord::Acts::List::InstanceMethods',
+ 'ActiveRecord::Acts::NestedSet::ClassMethods',
+ 'ActiveRecord::Acts::NestedSet::InstanceMethods',
+ 'ActiveRecord::Acts::Tree::ClassMethods',
+ 'ActiveRecord::Acts::Tree::InstanceMethods',
+ 'ActiveRecord::Aggregations::ClassMethods',
+ 'ActiveRecord::Associations::ClassMethods',
+ 'ActiveRecord::AttributeMethods::ClassMethods',
+ 'ActiveRecord::Base',
+ 'ActiveRecord::Calculations::ClassMethods',
+ 'ActiveRecord::Callbacks',
+ 'ActiveRecord::ConnectionAdapters::AbstractAdapter',
+ 'ActiveRecord::ConnectionAdapters::Column',
+ 'ActiveRecord::ConnectionAdapters::DB2Adapter',
+ 'ActiveRecord::ConnectionAdapters::DatabaseStatements',
+ 'ActiveRecord::ConnectionAdapters::FirebirdAdapter',
+ 'ActiveRecord::ConnectionAdapters::FrontBaseAdapter',
+ 'ActiveRecord::ConnectionAdapters::MysqlAdapter',
+ 'ActiveRecord::ConnectionAdapters::OpenBaseAdapter',
+ 'ActiveRecord::ConnectionAdapters::OracleAdapter',
+ 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter',
+ 'ActiveRecord::ConnectionAdapters::Quoting',
+ 'ActiveRecord::ConnectionAdapters::SQLServerAdapter',
+ 'ActiveRecord::ConnectionAdapters::SQLiteAdapter',
+ 'ActiveRecord::ConnectionAdapters::SchemaStatements',
+ 'ActiveRecord::ConnectionAdapters::SybaseAdapter::ColumnWithIdentity',
+ 'ActiveRecord::ConnectionAdapters::SybaseAdapterContext',
+ 'ActiveRecord::ConnectionAdapters::TableDefinition',
+ 'ActiveRecord::Errors', 'ActiveRecord::Locking',
+ 'ActiveRecord::Locking::Optimistic',
+ 'ActiveRecord::Locking::Optimistic::ClassMethods',
+ 'ActiveRecord::Locking::Pessimistic',
+ 'ActiveRecord::Migration', 'ActiveRecord::Observer',
+ 'ActiveRecord::Observing::ClassMethods',
+ 'ActiveRecord::Reflection::ClassMethods',
+ 'ActiveRecord::Reflection::MacroReflection',
+ 'ActiveRecord::Schema', 'ActiveRecord::Timestamp',
+ 'ActiveRecord::Transactions::ClassMethods',
+ 'ActiveRecord::Validations',
+ 'ActiveRecord::Validations::ClassMethods',
+ 'ActiveRecord::XmlSerialization',
+ 'ActiveSupport::CachingTools::HashCaching',
+ 'ActiveSupport::CoreExtensions::Array::Conversions',
+ 'ActiveSupport::CoreExtensions::Array::Grouping',
+ 'ActiveSupport::CoreExtensions::Date::Conversions',
+ 'ActiveSupport::CoreExtensions::Hash::Conversions',
+ 'ActiveSupport::CoreExtensions::Hash::Conversions::ClassMethods',
+ 'ActiveSupport::CoreExtensions::Hash::Diff',
+ 'ActiveSupport::CoreExtensions::Hash::Keys',
+ 'ActiveSupport::CoreExtensions::Hash::ReverseMerge',
+ 'ActiveSupport::CoreExtensions::Integer::EvenOdd',
+ 'ActiveSupport::CoreExtensions::Integer::Inflections',
+ 'ActiveSupport::CoreExtensions::Numeric::Bytes',
+ 'ActiveSupport::CoreExtensions::Numeric::Time',
+ 'ActiveSupport::CoreExtensions::Pathname::CleanWithin',
+ 'ActiveSupport::CoreExtensions::Range::Conversions',
+ 'ActiveSupport::CoreExtensions::String::Access',
+ 'ActiveSupport::CoreExtensions::String::Conversions',
+ 'ActiveSupport::CoreExtensions::String::Inflections',
+ 'ActiveSupport::CoreExtensions::String::Iterators',
+ 'ActiveSupport::CoreExtensions::String::StartsEndsWith',
+ 'ActiveSupport::CoreExtensions::String::Unicode',
+ 'ActiveSupport::CoreExtensions::Time::Calculations',
+ 'ActiveSupport::CoreExtensions::Time::Calculations::ClassMethods',
+ 'ActiveSupport::CoreExtensions::Time::Conversions',
+ 'ActiveSupport::Multibyte::Chars',
+ 'ActiveSupport::Multibyte::Handlers::UTF8Handler', 'Binding',
+ 'Breakpoint', 'Builder::BlankSlate', 'Builder::XmlMarkup',
+ 'Enumerable', 'Fixtures',
+ 'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',
+ 'Inflector::Inflections', 'Mime', 'Mime::Type',
+ 'OCI8AutoRecover', 'Symbol', 'TimeZone', 'XmlSimple'
+ ),
+ 5 => array(
+ 'image_tag', 'link_to', 'link_to_remote', 'javascript_include_tag',
+ 'assert_equal', 'assert_not_equal', 'before_filter',
+ 'after_filter', 'render', 'redirect_to', 'hide_action',
+ 'render_to_string', 'url_for', 'controller_name',
+ 'controller_class_name', 'controller_path', 'session',
+ 'render_component', 'render_component_as_string', 'cookie',
+ 'layout', 'flash', 'auto_complete_for', 'in_place_editor_for',
+ 'respond_to', 'paginate', 'current_page', 'each', 'first',
+ 'first_page', 'last_page', 'last', 'length', 'new', 'page_count',
+ 'previous', 'next', 'scaffold', 'session', 'send_data',
+ 'send_file', 'deliver', 'receive', 'error_messages_for',
+ 'error_message_on', 'form', 'input', 'stylesheet_link_tag',
+ 'stylesheet_path', 'content_for', 'select_date', 'select', 'ago',
+ 'month', 'day', 'check_box', 'fields_for', 'file_field',
+ 'form_for', 'hidden_field', 'text_area', 'password_field',
+ 'collection_select', 'options_for_select',
+ 'options_from_collection_for_select', 'file_field_tag',
+ 'form_for_tag', 'hidden_field_tag', 'text_area_tag',
+ 'password_field_tag', 'link_to_function', 'javascript_tag',
+ 'human_size', 'number_to_currency', 'pagination_links',
+ 'form_remote_tag', 'form_remote_for', 'link_to_remote',
+ 'submit_to_remote', 'remote_function', 'observe_form',
+ 'observe_field', 'remote_form_for', 'options_for_ajax', 'alert',
+ 'call', 'assign', 'show', 'hide', 'insert_html', 'sortable',
+ 'toggle', 'visual_effect', 'replace', 'replace_html', 'remove',
+ 'save', 'save!', 'draggable', 'drop_receiving', 'literal',
+ 'draggable_element', 'drop_receiving_element', 'sortable_element',
+ 'content_tag', 'tag', 'link_to_image', 'link_to_if',
+ 'link_to_unless', 'mail_to', 'link_image_to', 'button_to',
+ 'current_page?', 'act_as_list', 'act_as_nested', 'act_as_tree',
+ 'has_many', 'has_one', 'belongs_to', 'has_many_and_belogns_to',
+ 'delete', 'destroy', 'destroy_all', 'clone', 'deep_clone', 'copy',
+ 'update', 'table_name', 'primary_key', 'sum', 'maximun', 'minimum',
+ 'count', 'size', 'after_save', 'after_create', 'before_save',
+ 'before_create', 'add_to_base', 'errors', 'add', 'validate',
+ 'validate', 'validates_presence_of', 'validates_format_of',
+ 'validates_numericality_of', 'validates_uniqueness_of',
+ 'validates_length_of', 'validates_format_of', 'validates_size_of',
+ 'to_a', 'to_s', 'to_xml', 'to_i'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',
+ '+', '-', '=>', '=>', '<<'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ 4 => true,
+ 5 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color:#9966CC; font-weight:bold;',
+ 2 => 'color:#0000FF; font-weight:bold;',
+ 3 => 'color:#CC0066; font-weight:bold;',
+ 4 => 'color:#CC00FF; font-weight:bold;',
+ 5 => 'color:#5A0A0A; font-weight:bold;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color:#008000; font-style:italic;',
+ 'MULTI' => 'color:#000080; font-style:italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color:#000099;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color:#006600; font-weight:bold;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color:#996600;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color:#006666;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color:#9900CC;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color:#006600; font-weight:bold;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color:#ff6633; font-weight:bold;',
+ 1 => 'color:#0066ff; font-weight:bold;',
+ 2 => 'color:#6666ff; font-weight:bold;',
+ 3 => 'color:#ff3333; font-weight:bold;'
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ 0 => array(
+ GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)",
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ 1 => array(
+ GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)",
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ 2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*",
+ 3 => array(
+ GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)",
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<%' => '%>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/reg.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/reg.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/reg.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,214 +1,214 @@
-<?php
-/*************************************************************************************
- * reg.php
- * -------
- * Author: Sean Hanna (smokingrope at gmail.com)
- * Copyright: (c) 2006 Sean Hanna
- * Release Version: 1.0.7.21
- * Date Started: 03/15/2006
- *
- * Microsoft Registry Editor Language File.
- *
- * CHANGES
- * -------
- * 03/15/2006 (0.5.0)
- * - Syntax File Created
- * 04/27/2006 (0.9.5)
- * - Syntax Coloring Cleaned Up
- * - First Release
- * 04/29/2006 (1.0.0)
- * - Updated a few coloring settings
- *
- * TODO (updated 4/27/2006)
- * -------------------------
- * - Add a verification to the multi-line portion of the hex field regex
- * for a '\' character on the line preceding the line of the multi-line
- * hex field.
- *
- * KNOWN ISSUES (updated 4/27/2006)
- * ---------------------------------
- *
- * - There are two regexes for the multiline hex value regex. The regex for
- * all lines after the first does not verify that the previous line contains
- * a line continuation character '\'. This regex also does not check for
- * end of line as it should.
- *
- * - If number_highlighting is enabled during processing of this syntax file
- * many of the regexps used will appear slightly incorrect.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
-
- ************************************************************************************/
-$language_data = array (
- 'LANG_NAME' => 'Microsoft Registry',
- 'COMMENT_SINGLE' => array(1 =>';'),
- 'COMMENT_MULTI' => array( ),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(),
- 2 => array()
- /* Registry Key Constants Not Used
- 3 => array(
- 'HKEY_LOCAL_MACHINE',
- 'HKEY_CLASSES_ROOT',
- 'HKEY_CURRENT_USER',
- 'HKEY_USERS',
- 'HKEY_CURRENT_CONFIG',
- 'HKEY_DYN_DATA',
- 'HKLM', 'HKCR', 'HKCU', 'HKU', 'HKCC', 'HKDD'
- )/***/
- ),
- 'SYMBOLS' => array( ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array( 1 => 'color: #00CCFF;',
- 2 => 'color: #0000FF;' ),
- 'COMMENTS' => array( 1 => 'color: #009900;' ),
- 'ESCAPE_CHAR' => array(),
- 'BRACKETS' => array(0 => 'color: #000000;'),
- 'STRINGS' => array( 0 => 'color: #009900;' ),
- 'NUMBERS' => array(),
- 'METHODS' => array(),
- 'SYMBOLS' => array(0 => 'color: #000000;'),
- 'SCRIPT' => array(),
- 'REGEXPS' => array(
- 0 => '',
- 1 => 'color: #0000FF;',
- 2 => '',
- 3 => '',
- 4 => 'color: #0000FF;',
- 5 => '',
- 6 => '',
- 7 => '',
- 8 => '',
- 9 => 'color: #FF6600;',
- )
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- // Highlight Key Delimiters
- 0 => array(
- GESHI_SEARCH => '((^|\\n)\\s*)(\\\\\\[(.*)\\\\\\])(\\s*(\\n|$))',
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\5',
- GESHI_CLASS => 'kw1'
- ),
- // Highlight File Format Header Version 5
- 1 => array(
- GESHI_SEARCH => '((\\n|^)\\s*)(Windows Registry Editor Version [0-9]+(.)+([0-9]+))((\\n|$)\\s*)',
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\6',
- GESHI_CLASS => 'geshi_registry_header'
- ),
- // Highlight File Format Header Version 4
- 2 => array(
- GESHI_SEARCH => '((\\n|^)\\s*)(REGEDIT [0-9]+)(\\s*(\\n|$))',
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\4',
- GESHI_CLASS => 'geshi_registry_header'
- ),
- // Highlight dword: 32 bit integer values
- 3 => array(
- GESHI_SEARCH => '(=\\s*)(dword:[0-9]{8})(\\s*(\\n|$))',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3',
- GESHI_CLASS => 'kw2'
- ),
- // Highlight variable names
- 4 => array(
- GESHI_SEARCH => '((\\n|^)\\s*\\"\\;)(.*)(\\"\\;\\s*=)',
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\4',
- GESHI_CLASS => 'geshi_variable'
- ),
- // Highlight String Values
- 5 => array(
- GESHI_SEARCH => '(=\\s*)(\\"\\;.*\\"\\;)(\\s*(\\n|$))',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3',
- GESHI_CLASS => 'st0'
- ),
- // Highlight Hexadecimal Values
- 6 => array(
- GESHI_SEARCH => '(=\\s*)(hex((\\\\\\([0-9]{1,2}\\\\\\))|()):(([0-9a-fA-F]{2},)|(\\s))*(([0-9a-fA-F]{2})|(\\\\\\\\)))(\\s*(\\n|$))',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\12',
- GESHI_CLASS => 'kw2'
- ),
- // Highlight Hexadecimal Values (Multi-Line)
- 7 => array(
- GESHI_SEARCH => '((\\n|^)\\s*)((([0-9a-fA-F]{2},)|(\\s))*(([0-9a-fA-F]{2})|(\\\\\\\\)))',
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\10',
- GESHI_CLASS => 'kw2'
- ),
- // Highlight Default Variable
- 8 => array(
- GESHI_SEARCH => '((\\n|^)\\s*)(@)(\\s*=)',
- GESHI_REPLACE => '\\3',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\4',
- GESHI_CLASS => 'geshi_variable'
- ),
- // Highlight GUID's found anywhere.
- 9 => array(
- GESHI_SEARCH => '(\\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\})',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '',
- GESHI_CLASS => 'geshi_guid'
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-if (isset($this) && is_a($this, 'GeSHi')) {
- $this->set_numbers_highlighting(false);
-}
-?>
+<?php
+/*************************************************************************************
+ * reg.php
+ * -------
+ * Author: Sean Hanna (smokingrope at gmail.com)
+ * Copyright: (c) 2006 Sean Hanna
+ * Release Version: 1.0.7.21
+ * Date Started: 03/15/2006
+ *
+ * Microsoft Registry Editor Language File.
+ *
+ * CHANGES
+ * -------
+ * 03/15/2006 (0.5.0)
+ * - Syntax File Created
+ * 04/27/2006 (0.9.5)
+ * - Syntax Coloring Cleaned Up
+ * - First Release
+ * 04/29/2006 (1.0.0)
+ * - Updated a few coloring settings
+ *
+ * TODO (updated 4/27/2006)
+ * -------------------------
+ * - Add a verification to the multi-line portion of the hex field regex
+ * for a '\' character on the line preceding the line of the multi-line
+ * hex field.
+ *
+ * KNOWN ISSUES (updated 4/27/2006)
+ * ---------------------------------
+ *
+ * - There are two regexes for the multiline hex value regex. The regex for
+ * all lines after the first does not verify that the previous line contains
+ * a line continuation character '\'. This regex also does not check for
+ * end of line as it should.
+ *
+ * - If number_highlighting is enabled during processing of this syntax file
+ * many of the regexps used will appear slightly incorrect.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+
+ ************************************************************************************/
+$language_data = array (
+ 'LANG_NAME' => 'Microsoft Registry',
+ 'COMMENT_SINGLE' => array(1 =>';'),
+ 'COMMENT_MULTI' => array( ),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(),
+ 2 => array()
+ /* Registry Key Constants Not Used
+ 3 => array(
+ 'HKEY_LOCAL_MACHINE',
+ 'HKEY_CLASSES_ROOT',
+ 'HKEY_CURRENT_USER',
+ 'HKEY_USERS',
+ 'HKEY_CURRENT_CONFIG',
+ 'HKEY_DYN_DATA',
+ 'HKLM', 'HKCR', 'HKCU', 'HKU', 'HKCC', 'HKDD'
+ )/***/
+ ),
+ 'SYMBOLS' => array( ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array( 1 => 'color: #00CCFF;',
+ 2 => 'color: #0000FF;' ),
+ 'COMMENTS' => array( 1 => 'color: #009900;' ),
+ 'ESCAPE_CHAR' => array(),
+ 'BRACKETS' => array(0 => 'color: #000000;'),
+ 'STRINGS' => array( 0 => 'color: #009900;' ),
+ 'NUMBERS' => array(),
+ 'METHODS' => array(),
+ 'SYMBOLS' => array(0 => 'color: #000000;'),
+ 'SCRIPT' => array(),
+ 'REGEXPS' => array(
+ 0 => '',
+ 1 => 'color: #0000FF;',
+ 2 => '',
+ 3 => '',
+ 4 => 'color: #0000FF;',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => 'color: #FF6600;',
+ )
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ // Highlight Key Delimiters
+ 0 => array(
+ GESHI_SEARCH => '((^|\\n)\\s*)(\\\\\\[(.*)\\\\\\])(\\s*(\\n|$))',
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\5',
+ GESHI_CLASS => 'kw1'
+ ),
+ // Highlight File Format Header Version 5
+ 1 => array(
+ GESHI_SEARCH => '((\\n|^)\\s*)(Windows Registry Editor Version [0-9]+(.)+([0-9]+))((\\n|$)\\s*)',
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\6',
+ GESHI_CLASS => 'geshi_registry_header'
+ ),
+ // Highlight File Format Header Version 4
+ 2 => array(
+ GESHI_SEARCH => '((\\n|^)\\s*)(REGEDIT [0-9]+)(\\s*(\\n|$))',
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\4',
+ GESHI_CLASS => 'geshi_registry_header'
+ ),
+ // Highlight dword: 32 bit integer values
+ 3 => array(
+ GESHI_SEARCH => '(=\\s*)(dword:[0-9]{8})(\\s*(\\n|$))',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3',
+ GESHI_CLASS => 'kw2'
+ ),
+ // Highlight variable names
+ 4 => array(
+ GESHI_SEARCH => '((\\n|^)\\s*\\"\\;)(.*)(\\"\\;\\s*=)',
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\4',
+ GESHI_CLASS => 'geshi_variable'
+ ),
+ // Highlight String Values
+ 5 => array(
+ GESHI_SEARCH => '(=\\s*)(\\"\\;.*\\"\\;)(\\s*(\\n|$))',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3',
+ GESHI_CLASS => 'st0'
+ ),
+ // Highlight Hexadecimal Values
+ 6 => array(
+ GESHI_SEARCH => '(=\\s*)(hex((\\\\\\([0-9]{1,2}\\\\\\))|()):(([0-9a-fA-F]{2},)|(\\s))*(([0-9a-fA-F]{2})|(\\\\\\\\)))(\\s*(\\n|$))',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\12',
+ GESHI_CLASS => 'kw2'
+ ),
+ // Highlight Hexadecimal Values (Multi-Line)
+ 7 => array(
+ GESHI_SEARCH => '((\\n|^)\\s*)((([0-9a-fA-F]{2},)|(\\s))*(([0-9a-fA-F]{2})|(\\\\\\\\)))',
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\10',
+ GESHI_CLASS => 'kw2'
+ ),
+ // Highlight Default Variable
+ 8 => array(
+ GESHI_SEARCH => '((\\n|^)\\s*)(@)(\\s*=)',
+ GESHI_REPLACE => '\\3',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\4',
+ GESHI_CLASS => 'geshi_variable'
+ ),
+ // Highlight GUID's found anywhere.
+ 9 => array(
+ GESHI_SEARCH => '(\\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\})',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '',
+ GESHI_CLASS => 'geshi_guid'
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+if (isset($this) && is_a($this, 'GeSHi')) {
+ $this->set_numbers_highlighting(false);
+}
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/robots.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/robots.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/robots.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,98 +1,98 @@
-<?php
-/*************************************************************************************
- * robots.php
- * --------
- * Author: Christian Lescuyer (cl at goelette.net)
- * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info
- * Release Version: 1.0.7.21
- * Date Started: 2006/02/17
- *
- * robots.txt language file for GeSHi.
- *
- * 2006/02/17 (1.0.0)
- * - First Release
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'robots.txt',
- 'COMMENT_SINGLE' => array(1 => '#'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'User-agent', 'Disallow'
- )
- ),
- 'SYMBOLS' => array(
- ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => 'http://www.robotstxt.org/wc/norobots.html'
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * robots.php
+ * --------
+ * Author: Christian Lescuyer (cl at goelette.net)
+ * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/02/17
+ *
+ * robots.txt language file for GeSHi.
+ *
+ * 2006/02/17 (1.0.0)
+ * - First Release
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'robots.txt',
+ 'COMMENT_SINGLE' => array(1 => '#'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'User-agent', 'Disallow'
+ )
+ ),
+ 'SYMBOLS' => array(
+ ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => 'http://www.robotstxt.org/wc/norobots.html'
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/ruby.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/ruby.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/ruby.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,219 +1,219 @@
-<?php
-/*************************************************************************************
- * ruby.php
- * --------
- * Author: Moises Deniz
- * Copyright: (c) 2007 Moises Deniz
- * Release Version: 1.0.7.21
- * Date Started: 2007/03/21
- *
- * Ruby language file for GeSHi
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Ruby',
- 'COMMENT_SINGLE' => array(1 => "#"),
- 'COMMENT_MULTI' => array("=begin" => "=end"),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"', '`','\''),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'alias', 'and', 'begin', 'break', 'case', 'class',
- 'def', 'defined', 'do', 'else', 'elsif', 'end',
- 'ensure', 'for', 'if', 'in', 'module', 'while',
- 'next', 'not', 'or', 'redo', 'rescue', 'yield',
- 'retry', 'super', 'then', 'undef', 'unless',
- 'until', 'when', 'BEGIN', 'END', 'include'
- ),
- 2 => array(
- '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',
- 'return'
- ),
- 3 => array(
- 'Array', 'Float', 'Integer', 'String', 'at_exit',
- 'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',
- 'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',
- 'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',
- 'iterator?', 'lambda', 'load', 'local_variables', 'loop',
- 'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',
- 'raise', 'rand', 'readline', 'readlines', 'require', 'select',
- 'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',
- 'system', 'trace_var', 'trap', 'untrace_var'
- ),
- 4 => array(
- 'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',
- 'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',
- 'CGI::HtmlExtension', 'CGI::QueryExtension',
- 'CGI::Session', 'CGI::Session::FileStore',
- 'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',
- 'ConditionVariable', 'Continuation', 'Data',
- 'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',
- 'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',
- 'Exception', 'FalseClass', 'File',
- 'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',
- 'FileUtils::DryRun', 'FileUtils::NoWrite',
- 'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',
- 'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',
- 'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',
- 'Iconv::Failure', 'Iconv::IllegalSequence',
- 'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',
- 'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',
- 'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',
- 'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',
- 'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',
- 'Logger::ShiftingError', 'Marshal', 'MatchData',
- 'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',
- 'NameError::message', 'NilClass', 'NoMemoryError',
- 'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',
- 'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',
- 'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',
- 'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',
- 'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',
- 'RuntimeError', 'ScriptError', 'SecurityError', 'Set',
- 'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',
- 'SingleForwardable', 'Singleton', 'SingletonClassMethods',
- 'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',
- 'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',
- 'SyncEnumerator', 'SyntaxError', 'SystemCallError',
- 'SystemExit', 'SystemStackError', 'Tempfile',
- 'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',
- 'ThreadError', 'ThreadGroup',
- 'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',
- 'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',
- 'URI::Generic', 'URI::HTTP', 'URI::HTTPS',
- 'URI::InvalidComponentError', 'URI::InvalidURIError',
- 'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',
- 'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',
- 'ZeroDivisionError', 'Zlib',
- 'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',
- 'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',
- 'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',
- 'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',
- 'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',
- 'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',
- 'Zlib::VersionError',
- 'Zlib::ZStream',
- 'Enumerable',
- 'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',
- 'Inflector::Inflections', 'Mime', 'Mime::Type',
- 'OCI8AutoRecover', 'Symbol', 'TimeZone', 'XmlSimple'
- ),
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',
- '+', '-', '=>', '=>', '<<'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => true,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color:#9966CC; font-weight:bold;',
- 2 => 'color:#0000FF; font-weight:bold;',
- 3 => 'color:#CC0066; font-weight:bold;',
- 4 => 'color:#CC00FF; font-weight:bold;',
- ),
- 'COMMENTS' => array(
- 1 => 'color:#008000; font-style:italic;',
- 'MULTI' => 'color:#000080; font-style:italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color:#000099;'
- ),
- 'BRACKETS' => array(
- 0 => 'color:#006600; font-weight:bold;'
- ),
- 'STRINGS' => array(
- 0 => 'color:#996600;'
- ),
- 'NUMBERS' => array(
- 0 => 'color:#006666;'
- ),
- 'METHODS' => array(
- 1 => 'color:#9900CC;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color:#006600; font-weight:bold;'
- ),
- 'REGEXPS' => array(
- 0 => 'color:#ff6633; font-weight:bold;',
- 1 => 'color:#0066ff; font-weight:bold;',
- 2 => 'color:#6666ff; font-weight:bold;',
- 3 => 'color:#ff3333; font-weight:bold;'
- ),
- 'SCRIPT' => array(
- 0 => '',
- 1 => '',
- 2 => '',
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- 0 => array(
- GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)",
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- 1 => array(
- GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)",
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- 2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*",
- 3 => array(
- GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)",
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<%' => '%>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true,
- ),
- 'TAB_WIDTH' => 2
-);
-
-?>
+<?php
+/*************************************************************************************
+ * ruby.php
+ * --------
+ * Author: Moises Deniz
+ * Copyright: (c) 2007 Moises Deniz
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/03/21
+ *
+ * Ruby language file for GeSHi
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Ruby',
+ 'COMMENT_SINGLE' => array(1 => "#"),
+ 'COMMENT_MULTI' => array("=begin" => "=end"),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"', '`','\''),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'alias', 'and', 'begin', 'break', 'case', 'class',
+ 'def', 'defined', 'do', 'else', 'elsif', 'end',
+ 'ensure', 'for', 'if', 'in', 'module', 'while',
+ 'next', 'not', 'or', 'redo', 'rescue', 'yield',
+ 'retry', 'super', 'then', 'undef', 'unless',
+ 'until', 'when', 'BEGIN', 'END', 'include'
+ ),
+ 2 => array(
+ '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',
+ 'return'
+ ),
+ 3 => array(
+ 'Array', 'Float', 'Integer', 'String', 'at_exit',
+ 'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',
+ 'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',
+ 'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',
+ 'iterator?', 'lambda', 'load', 'local_variables', 'loop',
+ 'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',
+ 'raise', 'rand', 'readline', 'readlines', 'require', 'select',
+ 'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',
+ 'system', 'trace_var', 'trap', 'untrace_var'
+ ),
+ 4 => array(
+ 'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',
+ 'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',
+ 'CGI::HtmlExtension', 'CGI::QueryExtension',
+ 'CGI::Session', 'CGI::Session::FileStore',
+ 'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',
+ 'ConditionVariable', 'Continuation', 'Data',
+ 'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',
+ 'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',
+ 'Exception', 'FalseClass', 'File',
+ 'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',
+ 'FileUtils::DryRun', 'FileUtils::NoWrite',
+ 'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',
+ 'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',
+ 'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',
+ 'Iconv::Failure', 'Iconv::IllegalSequence',
+ 'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',
+ 'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',
+ 'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',
+ 'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',
+ 'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',
+ 'Logger::ShiftingError', 'Marshal', 'MatchData',
+ 'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',
+ 'NameError::message', 'NilClass', 'NoMemoryError',
+ 'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',
+ 'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',
+ 'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',
+ 'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',
+ 'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',
+ 'RuntimeError', 'ScriptError', 'SecurityError', 'Set',
+ 'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',
+ 'SingleForwardable', 'Singleton', 'SingletonClassMethods',
+ 'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',
+ 'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',
+ 'SyncEnumerator', 'SyntaxError', 'SystemCallError',
+ 'SystemExit', 'SystemStackError', 'Tempfile',
+ 'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',
+ 'ThreadError', 'ThreadGroup',
+ 'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',
+ 'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',
+ 'URI::Generic', 'URI::HTTP', 'URI::HTTPS',
+ 'URI::InvalidComponentError', 'URI::InvalidURIError',
+ 'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',
+ 'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',
+ 'ZeroDivisionError', 'Zlib',
+ 'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',
+ 'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',
+ 'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',
+ 'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',
+ 'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',
+ 'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',
+ 'Zlib::VersionError',
+ 'Zlib::ZStream',
+ 'Enumerable',
+ 'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',
+ 'Inflector::Inflections', 'Mime', 'Mime::Type',
+ 'OCI8AutoRecover', 'Symbol', 'TimeZone', 'XmlSimple'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',
+ '+', '-', '=>', '=>', '<<'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => true,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color:#9966CC; font-weight:bold;',
+ 2 => 'color:#0000FF; font-weight:bold;',
+ 3 => 'color:#CC0066; font-weight:bold;',
+ 4 => 'color:#CC00FF; font-weight:bold;',
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color:#008000; font-style:italic;',
+ 'MULTI' => 'color:#000080; font-style:italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color:#000099;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color:#006600; font-weight:bold;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color:#996600;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color:#006666;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color:#9900CC;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color:#006600; font-weight:bold;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color:#ff6633; font-weight:bold;',
+ 1 => 'color:#0066ff; font-weight:bold;',
+ 2 => 'color:#6666ff; font-weight:bold;',
+ 3 => 'color:#ff3333; font-weight:bold;'
+ ),
+ 'SCRIPT' => array(
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ 0 => array(
+ GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)",
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ 1 => array(
+ GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)",
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ 2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*",
+ 3 => array(
+ GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)",
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<%' => '%>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true,
+ ),
+ 'TAB_WIDTH' => 2
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/sas.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/sas.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/sas.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,357 +1,357 @@
-<?php
-/*************************************************************************************
- * sas.php
- * -------
- * Author: Galen Johnson (solitaryr at gmail.com)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2005/12/27
- *
- * SAS language file for GeSHi. Based on the sas vim file.
- *
- * CHANGES
- * -------
- * 2005/12/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/12/27)
- * -------------------------
- *
- * * Check highlighting stuff works
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'SAS',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- '_NULL_', '_INFILE_', '_N_', '_WEBOUT_', '_NUMERIC_', '_CHARACTER_', '_ALL_'
- ),
- 2 => array(
- '%BQUOTE', '%NRBQUOTE', '%CMPRES', '%QCMPRES',
-
- '%COMPSTOR', '%DATATYP', '%DISPLAY', '%DO',
- '%ELSE', '%END', '%EVAL', '%GLOBAL',
- '%GOTO', '%IF', '%INDEX', '%INPUT',
- '%KEYDEF', '%LABEL', '%LEFT', '%LENGTH',
- '%LET', '%LOCAL', '%LOWCASE', '%MACRO',
- '%MEND', '%NRBQUOTE', '%NRQUOTE', '%NRSTR',
-
- '%PUT', '%QCMPRES', '%QLEFT', '%QLOWCASE',
- '%QSCAN', '%QSUBSTR', '%QSYSFUNC', '%QTRIM',
- '%QUOTE', '%QUPCASE', '%SCAN', '%STR',
- '%SUBSTR', '%SUPERQ', '%SYSCALL', '%SYSEVALF',
- '%SYSEXEC', '%SYSFUNC', '%SYSGET', '%SYSLPUT',
- '%SYSPROD', '%SYSRC', '%SYSRPUT', '%THEN',
-
- '%TO', '%TRIM', '%UNQUOTE', '%UNTIL',
- '%UPCASE', '%VERIFY', '%WHILE', '%WINDOW'
- ),
- 3 => array(
- 'ABS', 'ADDR', 'AIRY', 'ARCOS', 'ARSIN', 'ATAN', 'ATTRC', 'ATTRN',
-
- 'BAND', 'BETAINV', 'BLSHIFT', 'BNOT', 'BOR', 'BRSHIFT', 'BXOR',
- 'BYTE', 'CDF', 'CEIL', 'CEXIST', 'CINV', 'CLOSE', 'CNONCT', 'COLLATE',
- 'COMPBL', 'COMPOUND', 'COMPRESS', 'COSH', 'COS', 'CSS', 'CUROBS',
- 'CV', 'DACCDBSL', 'DACCDB', 'DACCSL', 'DACCSYD', 'DACCTAB',
- 'DAIRY', 'DATETIME', 'DATEJUL', 'DATEPART', 'DATE', 'DAY',
- 'DCLOSE', 'DEPDBSL', 'DEPDB', 'DEPSL',
-
- 'DEPSYD', 'DEPSYD', 'DEPTAB', 'DEPTAB', 'DEQUOTE', 'DHMS',
- 'DIF', 'DIGAMMA', 'DIM', 'DINFO', 'DNUM', 'DOPEN', 'DOPTNAME',
- 'DOPTNUM', 'DREAD', 'DROPNOTE', 'DSNAME', 'ERFC', 'ERF', 'EXIST',
- 'EXP', 'FAPPEND', 'FCLOSE', 'FCOL', 'FDELETE', 'FETCHOBS', 'FETCH',
- 'FEXIST', 'FGET', 'FILEEXIST', 'FILENAME', 'FILEREF', 'FINFO',
- 'FINV', 'FIPNAMEL', 'FIPNAME', 'FIPSTATE', 'FLOOR', 'FNONCT',
-
- 'FNOTE', 'FOPEN', 'FOPTNAME', 'FOPTNUM', 'FPOINT', 'FPOS',
- 'FPUT', 'FREAD', 'FREWIND', 'FRLEN', 'FSEP', 'FUZZ', 'FWRITE',
- 'GAMINV', 'GAMMA', 'GETOPTION', 'GETVARC', 'GETVARN', 'HBOUND',
- 'HMS', 'HOSTHELP', 'HOUR', 'IBESSEL', 'INDEXW', 'INDEXC',
- 'INDEX', 'INPUTN', 'INPUTC', 'INPUT', 'INTRR', 'INTCK', 'INTNX',
- 'INT', 'IRR', 'JBESSEL', 'JULDATE', 'KURTOSIS', 'LAG', 'LBOUND',
-
- 'LEFT', 'LENGTH', 'LGAMMA', 'LIBNAME', 'LIBREF', 'LOG10',
- 'LOG2', 'LOGPDF', 'LOGPMF', 'LOGSDF', 'LOG', 'LOWCASE', 'MAX', 'MDY',
- 'MEAN', 'MINUTE', 'MIN', 'MOD', 'MONTH', 'MOPEN', 'MORT',
- 'NETPV', 'NMISS', 'NORMAL', 'NPV', 'N', 'OPEN', 'ORDINAL',
- 'PATHNAME', 'PDF', 'PEEKC', 'PEEK', 'PMF', 'POINT', 'POISSON', 'POKE',
- 'PROBBETA', 'PROBBNML', 'PROBCHI', 'PROBF', 'PROBGAM',
-
- 'PROBHYPR', 'PROBIT', 'PROBNEGB', 'PROBNORM', 'PROBT', 'PUTN',
- 'PUTC', 'PUT', 'QTR', 'QUOTE', 'RANBIN', 'RANCAU', 'RANEXP',
- 'RANGAM', 'RANGE', 'RANK', 'RANNOR', 'RANPOI', 'RANTBL', 'RANTRI',
- 'RANUNI', 'REPEAT', 'RESOLVE', 'REVERSE', 'REWIND', 'RIGHT',
- 'ROUND', 'SAVING', 'SCAN', 'SDF', 'SECOND', 'SIGN', 'SINH', 'SIN',
- 'SKEWNESS', 'SOUNDEX', 'SPEDIS', 'SQRT', 'STDERR', 'STD', 'STFIPS',
-
- 'STNAME', 'STNAMEL', 'SUBSTR', 'SUM', 'SYMGET', 'SYSGET', 'SYSMSG',
- 'SYSPROD', 'SYSRC', 'SYSTEM', 'TANH', 'TAN', 'TIMEPART', 'TIME',
- 'TINV', 'TNONCT', 'TODAY', 'TRANSLATE', 'TRANWRD', 'TRIGAMMA',
- 'TRIMN', 'TRIM', 'TRUNC', 'UNIFORM', 'UPCASE', 'USS',
- 'VARFMT', 'VARINFMT', 'VARLABEL', 'VARLEN', 'VARNAME',
- 'VARNUM', 'VARRAYX', 'VARRAY', 'VARTYPE', 'VAR', 'VERIFY', 'VFORMATX',
-
- 'VFORMATDX', 'VFORMATD', 'VFORMATNX', 'VFORMATN', 'VFORMATWX',
- 'VFORMATW', 'VFORMAT', 'VINARRAYX', 'VINARRAY', 'VINFORMATX',
- 'VINFORMATDX', 'VINFORMATD', 'VINFORMATNX', 'VINFORMATN',
- 'VINFORMATWX', 'VINFORMATW', 'VINFORMAT', 'VLABELX',
- 'VLABEL', 'VLENGTHX', 'VLENGTH', 'VNAMEX', 'VNAME', 'VTYPEX',
- 'VTYPE', 'WEEKDAY', 'YEAR', 'YYQ', 'ZIPFIPS', 'ZIPNAME', 'ZIPNAMEL',
-
- 'ZIPSTATE'
- ),
- 4 => array(
- 'ABORT', 'ARRAY', 'ATTRIB', 'BY', 'CALL', 'CARDS4', 'CATNAME',
- 'CONTINUE', 'DATALINES4', 'DELETE', 'DISPLAY',
-
- 'DM', 'DROP', 'ENDSAS', 'FILENAME', 'FILE', 'FOOTNOTE',
- 'FORMAT', 'GOTO', 'INFILE', 'INFORMAT', 'INPUT', 'KEEP',
- 'LABEL', 'LEAVE', 'LENGTH', 'LIBNAME', 'LINK', 'LIST', 'LOSTCARD',
- 'MERGE', 'MISSING', 'MODIFY', 'OPTIONS', 'OUTPUT', 'PAGE',
- 'PUT', 'REDIRECT', 'REMOVE', 'RENAME', 'REPLACE', 'RETAIN',
- 'RETURN', 'SELECT', 'SET', 'SKIP', 'STARTSAS', 'STOP', 'TITLE',
-
- 'UPDATE', 'WAITSAS', 'WHERE', 'WINDOW', 'X', 'SYSTASK',
- 'ADD', 'AND', 'ALTER', 'AS', 'CASCADE', 'CHECK', 'CREATE',
- 'DELETE', 'DESCRIBE', 'DISTINCT', 'DROP', 'FOREIGN',
- 'FROM', 'GROUP', 'HAVING', 'INDEX', 'INSERT', 'INTO', 'IN',
- 'KEY', 'LIKE', 'MESSAGE', 'MODIFY', 'MSGTYPE', 'NOT',
- 'NULL', 'ON', 'OR', 'ORDER', 'PRIMARY', 'REFERENCES',
-
- 'RESET', 'RESTRICT', 'SELECT', 'SET', 'TABLE',
- 'UNIQUE', 'UPDATE', 'VALIDATE', 'VIEW', 'WHERE'
- ),
- 5 => array(
- 'DO', 'ELSE', 'END', 'IF', 'THEN', 'UNTIL', 'WHILE'
-
- ),
- 6 => array(
- 'RUN', 'QUIT', 'DATA'
- ),
- 7 => array(
-
- 'ERROR'
- ),
- 8 => array(
- 'WARNING'
- ),
-
- 9 => array(
- 'NOTE'
- )
- ),
- 'SYMBOLS' => array(
-
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
-
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
-
- 6 => false,
- 7 => false,
- 8 => false,
- 9 => false
-
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff;',
-
- 2 => 'color: #0000ff;',
- 3 => 'color: #0000ff;',
- 4 => 'color: #0000ff;',
- 5 => 'color: #0000ff;',
-
- 6 => 'color: #000080; font-weight: bold;',
- 7 => 'color: #ff0000;',
- 8 => 'color: #00ff00;',
- 9 => 'color: #0000ff;'
-
- ),
- 'COMMENTS' => array(
- 1 => 'color: #006400; font-style: italic;',
- 'MULTI' => 'color: #006400; font-style: italic;'
-
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
-
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #a020f0;'
-
- ),
- 'NUMBERS' => array(
- 0 => 'color: #2e8b57; font-weight: bold;'
- ),
- 'METHODS' => array(
-
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
-
- 0 => '',
- 1 => '',
- 2 => '',
- 3 => ''
-
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff; font-weight: bold;',
- 1 => 'color: #000080; font-weight: bold;',
-
- 2 => 'color: #006400; font-style: italic;',
- 3 => 'color: #006400; font-style: italic;',
- 4 => 'color: #006400; font-style: italic;',
- 5 => 'color: #ff0000; font-weight: bold;',
-
- 6 => 'color: #00ff00; font-style: italic;',
- 7 => 'color: #0000ff; font-style: normal;',
- 8 => 'color: #b218b2; font-weight: bold;',
- 9 => 'color: #b218b2; font-weight: bold;'
-
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
-
- 3 => '',
- 4 => '',
- 5 => '',
- 6 => '',
-
- 7 => '',
- 8 => '',
- 9 => ''
- ),
-
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
-
- 0 => "&[a-zA-Z_][a-zA-Z0-9_]*",
- 1 => array(
- GESHI_SEARCH => '(^\\s*)(PROC \\w+)',
- GESHI_REPLACE => '\\2',
-
- GESHI_MODIFIERS => 'im',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
-
- 2 => array(
- GESHI_SEARCH => '(^\\s*)(\\*.*;)',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 'im',
-
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- 3 => array(
-
- GESHI_SEARCH => '(.*;\\s*)(\\*.*;)',
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 'im',
- GESHI_BEFORE => '\\1',
-
- GESHI_AFTER => ''
- ),
- 4 => array(
- GESHI_SEARCH => '(^\\s*)(%\\*.*;)',
-
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 'im',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
-
- ),
- 5 => array(
- GESHI_SEARCH => '(^ERROR.*)',
- GESHI_REPLACE => '\\1',
-
- GESHI_MODIFIERS => 'im',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
-
- 6 => array(
- GESHI_SEARCH => '(^WARNING.*)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => 'im',
-
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 7 => array(
-
- GESHI_SEARCH => '(^NOTE.*)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => 'im',
- GESHI_BEFORE => '',
-
- GESHI_AFTER => ''
- ),
- 8 => array(
- GESHI_SEARCH => '(^\\s*)(CARDS.*)(^\\s*;\\s*$)',
-
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 'sim',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3'
-
- ),
- 9 => array(
- GESHI_SEARCH => '(^\\s*)(DATALINES.*)(^\\s*;\\s*$)',
- GESHI_REPLACE => '\\2',
-
- GESHI_MODIFIERS => 'sim',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => '\\3'
- )
-
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
-
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * sas.php
+ * -------
+ * Author: Galen Johnson (solitaryr at gmail.com)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/12/27
+ *
+ * SAS language file for GeSHi. Based on the sas vim file.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/12/27)
+ * -------------------------
+ *
+ * * Check highlighting stuff works
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'SAS',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '_NULL_', '_INFILE_', '_N_', '_WEBOUT_', '_NUMERIC_', '_CHARACTER_', '_ALL_'
+ ),
+ 2 => array(
+ '%BQUOTE', '%NRBQUOTE', '%CMPRES', '%QCMPRES',
+
+ '%COMPSTOR', '%DATATYP', '%DISPLAY', '%DO',
+ '%ELSE', '%END', '%EVAL', '%GLOBAL',
+ '%GOTO', '%IF', '%INDEX', '%INPUT',
+ '%KEYDEF', '%LABEL', '%LEFT', '%LENGTH',
+ '%LET', '%LOCAL', '%LOWCASE', '%MACRO',
+ '%MEND', '%NRBQUOTE', '%NRQUOTE', '%NRSTR',
+
+ '%PUT', '%QCMPRES', '%QLEFT', '%QLOWCASE',
+ '%QSCAN', '%QSUBSTR', '%QSYSFUNC', '%QTRIM',
+ '%QUOTE', '%QUPCASE', '%SCAN', '%STR',
+ '%SUBSTR', '%SUPERQ', '%SYSCALL', '%SYSEVALF',
+ '%SYSEXEC', '%SYSFUNC', '%SYSGET', '%SYSLPUT',
+ '%SYSPROD', '%SYSRC', '%SYSRPUT', '%THEN',
+
+ '%TO', '%TRIM', '%UNQUOTE', '%UNTIL',
+ '%UPCASE', '%VERIFY', '%WHILE', '%WINDOW'
+ ),
+ 3 => array(
+ 'ABS', 'ADDR', 'AIRY', 'ARCOS', 'ARSIN', 'ATAN', 'ATTRC', 'ATTRN',
+
+ 'BAND', 'BETAINV', 'BLSHIFT', 'BNOT', 'BOR', 'BRSHIFT', 'BXOR',
+ 'BYTE', 'CDF', 'CEIL', 'CEXIST', 'CINV', 'CLOSE', 'CNONCT', 'COLLATE',
+ 'COMPBL', 'COMPOUND', 'COMPRESS', 'COSH', 'COS', 'CSS', 'CUROBS',
+ 'CV', 'DACCDBSL', 'DACCDB', 'DACCSL', 'DACCSYD', 'DACCTAB',
+ 'DAIRY', 'DATETIME', 'DATEJUL', 'DATEPART', 'DATE', 'DAY',
+ 'DCLOSE', 'DEPDBSL', 'DEPDB', 'DEPSL',
+
+ 'DEPSYD', 'DEPSYD', 'DEPTAB', 'DEPTAB', 'DEQUOTE', 'DHMS',
+ 'DIF', 'DIGAMMA', 'DIM', 'DINFO', 'DNUM', 'DOPEN', 'DOPTNAME',
+ 'DOPTNUM', 'DREAD', 'DROPNOTE', 'DSNAME', 'ERFC', 'ERF', 'EXIST',
+ 'EXP', 'FAPPEND', 'FCLOSE', 'FCOL', 'FDELETE', 'FETCHOBS', 'FETCH',
+ 'FEXIST', 'FGET', 'FILEEXIST', 'FILENAME', 'FILEREF', 'FINFO',
+ 'FINV', 'FIPNAMEL', 'FIPNAME', 'FIPSTATE', 'FLOOR', 'FNONCT',
+
+ 'FNOTE', 'FOPEN', 'FOPTNAME', 'FOPTNUM', 'FPOINT', 'FPOS',
+ 'FPUT', 'FREAD', 'FREWIND', 'FRLEN', 'FSEP', 'FUZZ', 'FWRITE',
+ 'GAMINV', 'GAMMA', 'GETOPTION', 'GETVARC', 'GETVARN', 'HBOUND',
+ 'HMS', 'HOSTHELP', 'HOUR', 'IBESSEL', 'INDEXW', 'INDEXC',
+ 'INDEX', 'INPUTN', 'INPUTC', 'INPUT', 'INTRR', 'INTCK', 'INTNX',
+ 'INT', 'IRR', 'JBESSEL', 'JULDATE', 'KURTOSIS', 'LAG', 'LBOUND',
+
+ 'LEFT', 'LENGTH', 'LGAMMA', 'LIBNAME', 'LIBREF', 'LOG10',
+ 'LOG2', 'LOGPDF', 'LOGPMF', 'LOGSDF', 'LOG', 'LOWCASE', 'MAX', 'MDY',
+ 'MEAN', 'MINUTE', 'MIN', 'MOD', 'MONTH', 'MOPEN', 'MORT',
+ 'NETPV', 'NMISS', 'NORMAL', 'NPV', 'N', 'OPEN', 'ORDINAL',
+ 'PATHNAME', 'PDF', 'PEEKC', 'PEEK', 'PMF', 'POINT', 'POISSON', 'POKE',
+ 'PROBBETA', 'PROBBNML', 'PROBCHI', 'PROBF', 'PROBGAM',
+
+ 'PROBHYPR', 'PROBIT', 'PROBNEGB', 'PROBNORM', 'PROBT', 'PUTN',
+ 'PUTC', 'PUT', 'QTR', 'QUOTE', 'RANBIN', 'RANCAU', 'RANEXP',
+ 'RANGAM', 'RANGE', 'RANK', 'RANNOR', 'RANPOI', 'RANTBL', 'RANTRI',
+ 'RANUNI', 'REPEAT', 'RESOLVE', 'REVERSE', 'REWIND', 'RIGHT',
+ 'ROUND', 'SAVING', 'SCAN', 'SDF', 'SECOND', 'SIGN', 'SINH', 'SIN',
+ 'SKEWNESS', 'SOUNDEX', 'SPEDIS', 'SQRT', 'STDERR', 'STD', 'STFIPS',
+
+ 'STNAME', 'STNAMEL', 'SUBSTR', 'SUM', 'SYMGET', 'SYSGET', 'SYSMSG',
+ 'SYSPROD', 'SYSRC', 'SYSTEM', 'TANH', 'TAN', 'TIMEPART', 'TIME',
+ 'TINV', 'TNONCT', 'TODAY', 'TRANSLATE', 'TRANWRD', 'TRIGAMMA',
+ 'TRIMN', 'TRIM', 'TRUNC', 'UNIFORM', 'UPCASE', 'USS',
+ 'VARFMT', 'VARINFMT', 'VARLABEL', 'VARLEN', 'VARNAME',
+ 'VARNUM', 'VARRAYX', 'VARRAY', 'VARTYPE', 'VAR', 'VERIFY', 'VFORMATX',
+
+ 'VFORMATDX', 'VFORMATD', 'VFORMATNX', 'VFORMATN', 'VFORMATWX',
+ 'VFORMATW', 'VFORMAT', 'VINARRAYX', 'VINARRAY', 'VINFORMATX',
+ 'VINFORMATDX', 'VINFORMATD', 'VINFORMATNX', 'VINFORMATN',
+ 'VINFORMATWX', 'VINFORMATW', 'VINFORMAT', 'VLABELX',
+ 'VLABEL', 'VLENGTHX', 'VLENGTH', 'VNAMEX', 'VNAME', 'VTYPEX',
+ 'VTYPE', 'WEEKDAY', 'YEAR', 'YYQ', 'ZIPFIPS', 'ZIPNAME', 'ZIPNAMEL',
+
+ 'ZIPSTATE'
+ ),
+ 4 => array(
+ 'ABORT', 'ARRAY', 'ATTRIB', 'BY', 'CALL', 'CARDS4', 'CATNAME',
+ 'CONTINUE', 'DATALINES4', 'DELETE', 'DISPLAY',
+
+ 'DM', 'DROP', 'ENDSAS', 'FILENAME', 'FILE', 'FOOTNOTE',
+ 'FORMAT', 'GOTO', 'INFILE', 'INFORMAT', 'INPUT', 'KEEP',
+ 'LABEL', 'LEAVE', 'LENGTH', 'LIBNAME', 'LINK', 'LIST', 'LOSTCARD',
+ 'MERGE', 'MISSING', 'MODIFY', 'OPTIONS', 'OUTPUT', 'PAGE',
+ 'PUT', 'REDIRECT', 'REMOVE', 'RENAME', 'REPLACE', 'RETAIN',
+ 'RETURN', 'SELECT', 'SET', 'SKIP', 'STARTSAS', 'STOP', 'TITLE',
+
+ 'UPDATE', 'WAITSAS', 'WHERE', 'WINDOW', 'X', 'SYSTASK',
+ 'ADD', 'AND', 'ALTER', 'AS', 'CASCADE', 'CHECK', 'CREATE',
+ 'DELETE', 'DESCRIBE', 'DISTINCT', 'DROP', 'FOREIGN',
+ 'FROM', 'GROUP', 'HAVING', 'INDEX', 'INSERT', 'INTO', 'IN',
+ 'KEY', 'LIKE', 'MESSAGE', 'MODIFY', 'MSGTYPE', 'NOT',
+ 'NULL', 'ON', 'OR', 'ORDER', 'PRIMARY', 'REFERENCES',
+
+ 'RESET', 'RESTRICT', 'SELECT', 'SET', 'TABLE',
+ 'UNIQUE', 'UPDATE', 'VALIDATE', 'VIEW', 'WHERE'
+ ),
+ 5 => array(
+ 'DO', 'ELSE', 'END', 'IF', 'THEN', 'UNTIL', 'WHILE'
+
+ ),
+ 6 => array(
+ 'RUN', 'QUIT', 'DATA'
+ ),
+ 7 => array(
+
+ 'ERROR'
+ ),
+ 8 => array(
+ 'WARNING'
+ ),
+
+ 9 => array(
+ 'NOTE'
+ )
+ ),
+ 'SYMBOLS' => array(
+
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false
+
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff;',
+
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #0000ff;',
+ 4 => 'color: #0000ff;',
+ 5 => 'color: #0000ff;',
+
+ 6 => 'color: #000080; font-weight: bold;',
+ 7 => 'color: #ff0000;',
+ 8 => 'color: #00ff00;',
+ 9 => 'color: #0000ff;'
+
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #006400; font-style: italic;',
+ 'MULTI' => 'color: #006400; font-style: italic;'
+
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #a020f0;'
+
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #2e8b57; font-weight: bold;'
+ ),
+ 'METHODS' => array(
+
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => ''
+
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff; font-weight: bold;',
+ 1 => 'color: #000080; font-weight: bold;',
+
+ 2 => 'color: #006400; font-style: italic;',
+ 3 => 'color: #006400; font-style: italic;',
+ 4 => 'color: #006400; font-style: italic;',
+ 5 => 'color: #ff0000; font-weight: bold;',
+
+ 6 => 'color: #00ff00; font-style: italic;',
+ 7 => 'color: #0000ff; font-style: normal;',
+ 8 => 'color: #b218b2; font-weight: bold;',
+ 9 => 'color: #b218b2; font-weight: bold;'
+
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+
+ 3 => '',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+
+ 7 => '',
+ 8 => '',
+ 9 => ''
+ ),
+
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+
+ 0 => "&[a-zA-Z_][a-zA-Z0-9_]*",
+ 1 => array(
+ GESHI_SEARCH => '(^\\s*)(PROC \\w+)',
+ GESHI_REPLACE => '\\2',
+
+ GESHI_MODIFIERS => 'im',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+
+ 2 => array(
+ GESHI_SEARCH => '(^\\s*)(\\*.*;)',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 'im',
+
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ 3 => array(
+
+ GESHI_SEARCH => '(.*;\\s*)(\\*.*;)',
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 'im',
+ GESHI_BEFORE => '\\1',
+
+ GESHI_AFTER => ''
+ ),
+ 4 => array(
+ GESHI_SEARCH => '(^\\s*)(%\\*.*;)',
+
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 'im',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+
+ ),
+ 5 => array(
+ GESHI_SEARCH => '(^ERROR.*)',
+ GESHI_REPLACE => '\\1',
+
+ GESHI_MODIFIERS => 'im',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+
+ 6 => array(
+ GESHI_SEARCH => '(^WARNING.*)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => 'im',
+
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 7 => array(
+
+ GESHI_SEARCH => '(^NOTE.*)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => 'im',
+ GESHI_BEFORE => '',
+
+ GESHI_AFTER => ''
+ ),
+ 8 => array(
+ GESHI_SEARCH => '(^\\s*)(CARDS.*)(^\\s*;\\s*$)',
+
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 'sim',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3'
+
+ ),
+ 9 => array(
+ GESHI_SEARCH => '(^\\s*)(DATALINES.*)(^\\s*;\\s*$)',
+ GESHI_REPLACE => '\\2',
+
+ GESHI_MODIFIERS => 'sim',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => '\\3'
+ )
+
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/scheme.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/scheme.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/scheme.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,170 +1,170 @@
-<?php
-/*************************************************************************************
- * scheme.php
- * ----------
- * Author: Jon Raphaelson (jonraphaelson at gmail.com)
- * Copyright: (c) 2005 Jon Raphaelson, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/30
- *
- * Scheme language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/09/22 (1.0.0)
- * - First Release
- *
- * TODO (updated 2005/09/22)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Scheme',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(';|' => '|;'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'abs', 'acos', 'and', 'angle', 'append', 'appply', 'approximate',
- 'asin', 'assoc', 'assq', 'assv', 'atan',
-
- 'begin', 'boolean?', 'bound-identifier=?',
-
- 'caar', 'caddr', 'cadr', 'call-with-current-continuation',
- 'call-with-input-file', 'call-with-output-file', 'call/cc', 'car',
- 'case', 'catch', 'cdddar', 'cddddr', 'cdr', 'ceiling', 'char->integer',
- 'char-alphabetic?', 'char-ci<=?', 'char-ci<?', 'char-ci?', 'char-ci>=?',
- 'char-ci>?', 'char-ci=?', 'char-downcase', 'char-lower-case?',
- 'char-numeric', 'char-ready', 'char-ready?', 'char-upcase',
- 'char-upper-case?', 'char-whitespace?', 'char<=?', 'char<?', 'char=?',
- 'char>=?', 'char>?', 'char?', 'close-input-port', 'close-output-port',
- 'complex?', 'cond', 'cons', 'construct-identifier', 'cos',
- 'current-input-port', 'current-output-port',
-
- 'd', 'define', 'define-syntax', 'delay', 'denominator', 'display', 'do',
-
- 'e', 'eof-object?', 'eq?', 'equal?', 'eqv?', 'even?', 'exact->inexact',
- 'exact?', 'exp', 'expt', 'else',
-
- 'f', 'floor', 'for-each', 'force', 'free-identifer=?',
-
- 'gcd', 'gen-counter', 'gen-loser', 'generate-identifier',
-
- 'identifier->symbol', 'identifier', 'if', 'imag-part', 'inexact->exact',
- 'inexact?', 'input-port?', 'integer->char', 'integer?', 'integrate-system',
-
- 'l', 'lambda', 'last-pair', 'lcm', 'length', 'let', 'let*', 'letrec',
- 'list', 'list->string', 'list->vector', 'list-ref', 'list-tail', 'list?',
- 'load', 'log',
-
- 'magnitude', 'make-polar', 'make-promise', 'make-rectangular',
- 'make-string', 'make-vector', 'map', 'map-streams', 'max', 'member',
- 'memq', 'memv', 'min', 'modulo',
-
- 'negative', 'newline', 'nil', 'not', 'null?', 'number->string', 'number?',
- 'numerator',
-
- 'odd?', 'open-input-file', 'open-output-file', 'or', 'output-port',
-
- 'pair?', 'peek-char', 'positive?', 'procedure?',
-
- 'quasiquote', 'quote', 'quotient',
-
- 'rational', 'rationalize', 'read', 'read-char', 'real-part', 'real?',
- 'remainder', 'return', 'reverse',
-
- 's', 'sequence', 'set!', 'set-char!', 'set-cdr!', 'sin', 'sqrt', 'string',
- 'string->list', 'string->number', 'string->symbol', 'string-append',
- 'string-ci<=?', 'string-ci<?', 'string-ci=?', 'string-ci>=?',
- 'string-ci>?', 'string-copy', 'string-fill!', 'string-length',
- 'string-ref', 'string-set!', 'string<=?', 'string<?', 'string=?',
- 'string>=?', 'string>?', 'string?', 'substring', 'symbol->string',
- 'symbol?', 'syntax', 'syntax-rules',
-
- 't', 'tan', 'template', 'transcript-off', 'transcript-on', 'truncate',
-
- 'unquote', 'unquote-splicing', 'unwrap-syntax',
-
- 'vector', 'vector->list', 'vector-fill!', 'vector-length', 'vector-ref',
- 'vector-set!', 'vector?',
-
- 'with-input-from-file', 'with-output-to-file', 'write', 'write-char',
-
- 'zero?'
-
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 0 => 'color: #202020;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * scheme.php
+ * ----------
+ * Author: Jon Raphaelson (jonraphaelson at gmail.com)
+ * Copyright: (c) 2005 Jon Raphaelson, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/30
+ *
+ * Scheme language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/09/22 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2005/09/22)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Scheme',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(';|' => '|;'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'abs', 'acos', 'and', 'angle', 'append', 'appply', 'approximate',
+ 'asin', 'assoc', 'assq', 'assv', 'atan',
+
+ 'begin', 'boolean?', 'bound-identifier=?',
+
+ 'caar', 'caddr', 'cadr', 'call-with-current-continuation',
+ 'call-with-input-file', 'call-with-output-file', 'call/cc', 'car',
+ 'case', 'catch', 'cdddar', 'cddddr', 'cdr', 'ceiling', 'char->integer',
+ 'char-alphabetic?', 'char-ci<=?', 'char-ci<?', 'char-ci?', 'char-ci>=?',
+ 'char-ci>?', 'char-ci=?', 'char-downcase', 'char-lower-case?',
+ 'char-numeric', 'char-ready', 'char-ready?', 'char-upcase',
+ 'char-upper-case?', 'char-whitespace?', 'char<=?', 'char<?', 'char=?',
+ 'char>=?', 'char>?', 'char?', 'close-input-port', 'close-output-port',
+ 'complex?', 'cond', 'cons', 'construct-identifier', 'cos',
+ 'current-input-port', 'current-output-port',
+
+ 'd', 'define', 'define-syntax', 'delay', 'denominator', 'display', 'do',
+
+ 'e', 'eof-object?', 'eq?', 'equal?', 'eqv?', 'even?', 'exact->inexact',
+ 'exact?', 'exp', 'expt', 'else',
+
+ 'f', 'floor', 'for-each', 'force', 'free-identifer=?',
+
+ 'gcd', 'gen-counter', 'gen-loser', 'generate-identifier',
+
+ 'identifier->symbol', 'identifier', 'if', 'imag-part', 'inexact->exact',
+ 'inexact?', 'input-port?', 'integer->char', 'integer?', 'integrate-system',
+
+ 'l', 'lambda', 'last-pair', 'lcm', 'length', 'let', 'let*', 'letrec',
+ 'list', 'list->string', 'list->vector', 'list-ref', 'list-tail', 'list?',
+ 'load', 'log',
+
+ 'magnitude', 'make-polar', 'make-promise', 'make-rectangular',
+ 'make-string', 'make-vector', 'map', 'map-streams', 'max', 'member',
+ 'memq', 'memv', 'min', 'modulo',
+
+ 'negative', 'newline', 'nil', 'not', 'null?', 'number->string', 'number?',
+ 'numerator',
+
+ 'odd?', 'open-input-file', 'open-output-file', 'or', 'output-port',
+
+ 'pair?', 'peek-char', 'positive?', 'procedure?',
+
+ 'quasiquote', 'quote', 'quotient',
+
+ 'rational', 'rationalize', 'read', 'read-char', 'real-part', 'real?',
+ 'remainder', 'return', 'reverse',
+
+ 's', 'sequence', 'set!', 'set-char!', 'set-cdr!', 'sin', 'sqrt', 'string',
+ 'string->list', 'string->number', 'string->symbol', 'string-append',
+ 'string-ci<=?', 'string-ci<?', 'string-ci=?', 'string-ci>=?',
+ 'string-ci>?', 'string-copy', 'string-fill!', 'string-length',
+ 'string-ref', 'string-set!', 'string<=?', 'string<?', 'string=?',
+ 'string>=?', 'string>?', 'string?', 'substring', 'symbol->string',
+ 'symbol?', 'syntax', 'syntax-rules',
+
+ 't', 'tan', 'template', 'transcript-off', 'transcript-on', 'truncate',
+
+ 'unquote', 'unquote-splicing', 'unwrap-syntax',
+
+ 'vector', 'vector->list', 'vector-fill!', 'vector-length', 'vector-ref',
+ 'vector-set!', 'vector?',
+
+ 'with-input-from-file', 'with-output-to-file', 'write', 'write-char',
+
+ 'zero?'
+
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #202020;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/sdlbasic.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/sdlbasic.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/sdlbasic.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,161 +1,161 @@
-<?php
-/*************************************************************************************
- * sdlbasic.php
- * ------------
- * Author: Roberto Rossi
- * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)
- * Release Version: 1.0.7.21
- * Date Started: 2005/08/19
- *
- * sdlBasic (http://sdlbasic.sf.net) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2005/08/19 (1.0.0)
- * - First Release
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
- $language_data = array (
- 'LANG_NAME' => 'sdlBasic',
- 'COMMENT_SINGLE' => array(1 => "'", 2 => "rem", 3 => "!", 4 => "#"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'const', 'option', 'explicit', 'option', 'qbasic', 'include', 'argc',
- 'argv', 'command', 'command$', 'run', 'shell', 'end', 'os', 'declare',
- 'sub', 'function', 'return', 'while', 'wend', 'exit', 'while', 'end',
- 'while', 'continue', 'if', 'then', 'else', 'elseif', 'end', 'if',
- 'select', 'case', 'case', 'else', 'end', 'case', 'for', 'each', 'step',
- 'next', 'to', 'continue', 'dim', 'shared', 'common', 'lbound', 'bound',
- 'erase', 'asc', 'chr', 'chr$', 'insert', 'insert$', 'instr', 'lcase',
- 'lcase$', 'left', 'left$', 'len', 'length', 'ltrim', 'ltrim$', 'mid',
- 'mid$', 'replace', 'replace$', 'replacesubstr', 'replacesubstr$',
- 'reverse', 'reverse$', 'right', 'right$', 'rinstr', 'rtrim', 'rtrim$',
- 'space', 'space$', 'str', 'str$', 'strf', 'strf$', 'string', 'string$',
- 'tally', 'trim', 'trim$', 'typeof', 'typeof$', 'ucase', 'ucase$', 'val',
- 'abs', 'acos', 'andbit', 'asin', 'atan', 'bitwiseand', 'bitwiseor',
- 'bitwisexor', 'cos', 'exp', 'fix', 'floor', 'frac', 'hex', 'hex$', 'int',
- 'log', 'min', 'max', 'orbit', 'randomize', 'rnd', 'round', 'sgn', 'sin',
- 'sqr', 'tan', 'xorbit', 'open', 'as', 'file', 'input', 'close', 'output',
- 'append', 'eof', 'fileexists', 'filecopy', 'filemove', 'filerename',
- 'freefile', 'kill', 'loc', 'lof', 'readbyte', 'rename', 'seek',
- 'writebyte', 'chdir', 'dir', 'dir$', 'direxists', 'dirfirst', 'dirnext',
- 'mkdir', 'rmdir', 'print', 'date', 'date$', 'time', 'time$', 'ticks',
- 'data', 'read', 'reservebank', 'freebank', 'copybank', 'loadbank',
- 'savebank', 'setbank', 'sizebank', 'poke', 'doke', 'loke', 'peek', 'deek',
- 'leek', 'memcopy', 'setdisplay', 'setcaption', 'caption', 'displaywidth',
- 'displayheight', 'displaybpp', 'screen', 'directscreen', 'screenopen',
- 'screenclose', 'screenclone', 'screencopy', 'screenfade', 'screenfadein',
- 'screencrossfade', 'screenalpha', 'screenlock', 'screenunlock',
- 'screenrect', 'xscreenrect', 'yscreenrect', 'wscreenrect', 'hscreenrect',
- 'flagscreenrect', 'screenwidth', 'screenheight', 'offset', 'xoffset',
- 'yoffset', 'cls', 'screenswap', 'autoback', 'setautoback',
- 'dualplayfield', 'waitvbl', 'fps', 'rgb', 'enablepalette', 'color',
- 'palette', 'colorcycling', 'ink', 'point', 'dot', 'plot', 'line', 'box',
- 'bar', 'circle', 'fillcircle', 'ellipse', 'fillellipse', 'paint',
- 'loadimage', 'saveimage', 'loadsound', 'savesound', 'loadmusic',
- 'hotspot', 'setcolorkey', 'imageexists', 'imagewidth', 'imageheight',
- 'deleteimage', 'copyimage', 'setalpha', 'zoomimage', 'rotateimage',
- 'rotozoomimage', 'blt', 'pastebob', 'pasteicon', 'grab', 'spriteclip',
- 'sprite', 'deletesprite', 'xsprite', 'ysprite', 'spritewidth',
- 'spriteheight', 'frsprite', 'livesprite', 'spritehit', 'autoupdatesprite',
- 'updatesprite', 'setbob', 'bob', 'deletebob', 'xbob', 'ybob', 'bobwidth',
- 'bobheight', 'frbob', 'livebob', 'bobhit', 'autoupdatebob', 'updatebob',
- 'text', 'setfont', 'textrender', 'pen', 'paper', 'prints', 'locate',
- 'atx', 'aty', 'curson', 'cursoff', 'inputs', 'zoneinputs',
- 'isenabledsound', 'soundexists', 'deletesound', 'copysound',
- 'musicexists', 'playsound', 'volumesound', 'stopsound', 'pausesound',
- 'resumesound', 'vumetersound', 'positionsound', 'soundchannels',
- 'playmusic', 'positionmusic', 'stopmusic', 'fademusic', 'pausemusic',
- 'resumemusic', 'rewindmusic', 'volumemusic', 'speedmusic', 'numdrivescd',
- 'namecd', 'getfreecd', 'opencd', 'indrivecd', 'trackscd', 'curtrackcd',
- 'curframecd', 'playcd', 'playtrackscd', 'playtrackscd', 'playtrackscd',
- 'pausecd', 'resumecd', 'stopcd', 'ejectcd', 'closecd', 'tracktypecd',
- 'tracklengthcd', 'trackoffsetcd', 'key', 'inkey', 'waitkey', 'xmouse',
- 'ymouse', 'xmousescreen', 'ymousescreen', 'bmouse', 'changemouse',
- 'locatemouse', 'mouseshow', 'mousehide', 'mousezone', 'numjoysticks',
- 'namejoystick', 'numaxesjoystick', 'numballsjoystick', 'numhatsjoystick',
- 'numbuttonsjoystick', 'getaxisjoystick', 'gethatjoystick',
- 'getbuttonjoystick', 'xgetballjoystick', 'ygetballjoystick', 'joy',
- 'bjoy', 'wait', 'timer', 'isenabledsock', 'getfreesock', 'opensock',
- 'acceptsock', 'isserverready', 'connectsock', 'connectionreadysock',
- 'isclientready', 'losesock', 'peeksock', 'readsock', 'readbytesock',
- 'readlinesock', 'writesock', 'writebytesock', 'writelinesock',
- 'getremoteip', 'getremoteport', 'getlocalip'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080;',
- 2 => 'color: #808080;',
- 3 => 'color: #808080;',
- 4 => 'color: #808080;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * sdlbasic.php
+ * ------------
+ * Author: Roberto Rossi
+ * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/08/19
+ *
+ * sdlBasic (http://sdlbasic.sf.net) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/19 (1.0.0)
+ * - First Release
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+ $language_data = array (
+ 'LANG_NAME' => 'sdlBasic',
+ 'COMMENT_SINGLE' => array(1 => "'", 2 => "rem", 3 => "!", 4 => "#"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'const', 'option', 'explicit', 'option', 'qbasic', 'include', 'argc',
+ 'argv', 'command', 'command$', 'run', 'shell', 'end', 'os', 'declare',
+ 'sub', 'function', 'return', 'while', 'wend', 'exit', 'while', 'end',
+ 'while', 'continue', 'if', 'then', 'else', 'elseif', 'end', 'if',
+ 'select', 'case', 'case', 'else', 'end', 'case', 'for', 'each', 'step',
+ 'next', 'to', 'continue', 'dim', 'shared', 'common', 'lbound', 'bound',
+ 'erase', 'asc', 'chr', 'chr$', 'insert', 'insert$', 'instr', 'lcase',
+ 'lcase$', 'left', 'left$', 'len', 'length', 'ltrim', 'ltrim$', 'mid',
+ 'mid$', 'replace', 'replace$', 'replacesubstr', 'replacesubstr$',
+ 'reverse', 'reverse$', 'right', 'right$', 'rinstr', 'rtrim', 'rtrim$',
+ 'space', 'space$', 'str', 'str$', 'strf', 'strf$', 'string', 'string$',
+ 'tally', 'trim', 'trim$', 'typeof', 'typeof$', 'ucase', 'ucase$', 'val',
+ 'abs', 'acos', 'andbit', 'asin', 'atan', 'bitwiseand', 'bitwiseor',
+ 'bitwisexor', 'cos', 'exp', 'fix', 'floor', 'frac', 'hex', 'hex$', 'int',
+ 'log', 'min', 'max', 'orbit', 'randomize', 'rnd', 'round', 'sgn', 'sin',
+ 'sqr', 'tan', 'xorbit', 'open', 'as', 'file', 'input', 'close', 'output',
+ 'append', 'eof', 'fileexists', 'filecopy', 'filemove', 'filerename',
+ 'freefile', 'kill', 'loc', 'lof', 'readbyte', 'rename', 'seek',
+ 'writebyte', 'chdir', 'dir', 'dir$', 'direxists', 'dirfirst', 'dirnext',
+ 'mkdir', 'rmdir', 'print', 'date', 'date$', 'time', 'time$', 'ticks',
+ 'data', 'read', 'reservebank', 'freebank', 'copybank', 'loadbank',
+ 'savebank', 'setbank', 'sizebank', 'poke', 'doke', 'loke', 'peek', 'deek',
+ 'leek', 'memcopy', 'setdisplay', 'setcaption', 'caption', 'displaywidth',
+ 'displayheight', 'displaybpp', 'screen', 'directscreen', 'screenopen',
+ 'screenclose', 'screenclone', 'screencopy', 'screenfade', 'screenfadein',
+ 'screencrossfade', 'screenalpha', 'screenlock', 'screenunlock',
+ 'screenrect', 'xscreenrect', 'yscreenrect', 'wscreenrect', 'hscreenrect',
+ 'flagscreenrect', 'screenwidth', 'screenheight', 'offset', 'xoffset',
+ 'yoffset', 'cls', 'screenswap', 'autoback', 'setautoback',
+ 'dualplayfield', 'waitvbl', 'fps', 'rgb', 'enablepalette', 'color',
+ 'palette', 'colorcycling', 'ink', 'point', 'dot', 'plot', 'line', 'box',
+ 'bar', 'circle', 'fillcircle', 'ellipse', 'fillellipse', 'paint',
+ 'loadimage', 'saveimage', 'loadsound', 'savesound', 'loadmusic',
+ 'hotspot', 'setcolorkey', 'imageexists', 'imagewidth', 'imageheight',
+ 'deleteimage', 'copyimage', 'setalpha', 'zoomimage', 'rotateimage',
+ 'rotozoomimage', 'blt', 'pastebob', 'pasteicon', 'grab', 'spriteclip',
+ 'sprite', 'deletesprite', 'xsprite', 'ysprite', 'spritewidth',
+ 'spriteheight', 'frsprite', 'livesprite', 'spritehit', 'autoupdatesprite',
+ 'updatesprite', 'setbob', 'bob', 'deletebob', 'xbob', 'ybob', 'bobwidth',
+ 'bobheight', 'frbob', 'livebob', 'bobhit', 'autoupdatebob', 'updatebob',
+ 'text', 'setfont', 'textrender', 'pen', 'paper', 'prints', 'locate',
+ 'atx', 'aty', 'curson', 'cursoff', 'inputs', 'zoneinputs',
+ 'isenabledsound', 'soundexists', 'deletesound', 'copysound',
+ 'musicexists', 'playsound', 'volumesound', 'stopsound', 'pausesound',
+ 'resumesound', 'vumetersound', 'positionsound', 'soundchannels',
+ 'playmusic', 'positionmusic', 'stopmusic', 'fademusic', 'pausemusic',
+ 'resumemusic', 'rewindmusic', 'volumemusic', 'speedmusic', 'numdrivescd',
+ 'namecd', 'getfreecd', 'opencd', 'indrivecd', 'trackscd', 'curtrackcd',
+ 'curframecd', 'playcd', 'playtrackscd', 'playtrackscd', 'playtrackscd',
+ 'pausecd', 'resumecd', 'stopcd', 'ejectcd', 'closecd', 'tracktypecd',
+ 'tracklengthcd', 'trackoffsetcd', 'key', 'inkey', 'waitkey', 'xmouse',
+ 'ymouse', 'xmousescreen', 'ymousescreen', 'bmouse', 'changemouse',
+ 'locatemouse', 'mouseshow', 'mousehide', 'mousezone', 'numjoysticks',
+ 'namejoystick', 'numaxesjoystick', 'numballsjoystick', 'numhatsjoystick',
+ 'numbuttonsjoystick', 'getaxisjoystick', 'gethatjoystick',
+ 'getbuttonjoystick', 'xgetballjoystick', 'ygetballjoystick', 'joy',
+ 'bjoy', 'wait', 'timer', 'isenabledsock', 'getfreesock', 'opensock',
+ 'acceptsock', 'isserverready', 'connectsock', 'connectionreadysock',
+ 'isclientready', 'losesock', 'peeksock', 'readsock', 'readbytesock',
+ 'readlinesock', 'writesock', 'writebytesock', 'writelinesock',
+ 'getremoteip', 'getremoteport', 'getlocalip'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080;',
+ 2 => 'color: #808080;',
+ 3 => 'color: #808080;',
+ 4 => 'color: #808080;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/smalltalk.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/smalltalk.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/smalltalk.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,159 +1,159 @@
-<?php
-/*************************************************************************************
- * smalltalk.php
- * --------
- * Author: Bananeweizen (Bananeweizen at gmx.de)
- * Copyright: (c) 2005 Bananeweizen (www.bananeweizen.de)
- * Release Version: 1.0.7.21
- * Date Started: 2005/03/27
- *
- * Smalltalk language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006-05-24 (1.0.0)
- * - First Release
- *
- * TODO
- * -------------------------
- * * recognize nested array symbols correctly
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Smalltalk',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array('"' => '"'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'"),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array('self','super','true','false','nil')
- ),
- 'SYMBOLS' => array(
- '[', ']', '=' , ':=', '(', ')', '#'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #7f007f;'
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #007f00; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => ''
- ),
- 'BRACKETS' => array(
- 0 => ''
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #7f0000;'
- ),
- 'METHODS' => array(
- 0 => ''
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #000066; font-weight:bold;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;',
- 1 => 'color: #7f0000;',
- 2 => 'color: #7f0000;',
- 3 => 'color: #00007f;',
- 4 => 'color: #7f007f;',
- 5 => 'color: #00007f;',
- 6 => 'color: #00007f;'
- ),
- 'SCRIPT' => array(
- 0 => ''
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => array(
- GESHI_SEARCH => '([^a-zA-Z0-9_#])([A-Z]+[a-zA-Z0-9_]*)', //class names
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- 1 => array(
- GESHI_SEARCH => '(#+)([a-zA-Z0-9_]+)', //symbols
- GESHI_REPLACE => '\\1\\2',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 2 => array(
- GESHI_SEARCH => '(#\s*\([^)]*\))', //array symbols
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 3 => array(
- GESHI_SEARCH => '\|([a-zA-Z0-9_\s]+)\|', //temporary variables
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '|',
- GESHI_AFTER => '|'
- ),
- 4 => array(
- GESHI_SEARCH => '(self|super|true|false|nil)', //keywords again (to avoid matching in next regexp)
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 5 => array(
- GESHI_SEARCH => '([:(,=[.*/+-]\s*)([a-zA-Z0-9_]+)', //message parameters, message receivers
- GESHI_REPLACE => '\\2',
- GESHI_MODIFIERS => 's',
- GESHI_BEFORE => '\\1',
- GESHI_AFTER => ''
- ),
- 6 => array(
- GESHI_SEARCH => '([a-zA-Z0-9_]+)(\s*:=)', //assignment targets
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => '',
- GESHI_BEFORE => '',
- GESHI_AFTER => '\\2'
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * smalltalk.php
+ * --------
+ * Author: Bananeweizen (Bananeweizen at gmx.de)
+ * Copyright: (c) 2005 Bananeweizen (www.bananeweizen.de)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/03/27
+ *
+ * Smalltalk language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006-05-24 (1.0.0)
+ * - First Release
+ *
+ * TODO
+ * -------------------------
+ * * recognize nested array symbols correctly
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Smalltalk',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array('"' => '"'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'"),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array('self','super','true','false','nil')
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '=' , ':=', '(', ')', '#'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #7f007f;'
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #007f00; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => ''
+ ),
+ 'BRACKETS' => array(
+ 0 => ''
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #7f0000;'
+ ),
+ 'METHODS' => array(
+ 0 => ''
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #000066; font-weight:bold;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;',
+ 1 => 'color: #7f0000;',
+ 2 => 'color: #7f0000;',
+ 3 => 'color: #00007f;',
+ 4 => 'color: #7f007f;',
+ 5 => 'color: #00007f;',
+ 6 => 'color: #00007f;'
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => array(
+ GESHI_SEARCH => '([^a-zA-Z0-9_#])([A-Z]+[a-zA-Z0-9_]*)', //class names
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ 1 => array(
+ GESHI_SEARCH => '(#+)([a-zA-Z0-9_]+)', //symbols
+ GESHI_REPLACE => '\\1\\2',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 2 => array(
+ GESHI_SEARCH => '(#\s*\([^)]*\))', //array symbols
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 3 => array(
+ GESHI_SEARCH => '\|([a-zA-Z0-9_\s]+)\|', //temporary variables
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '|',
+ GESHI_AFTER => '|'
+ ),
+ 4 => array(
+ GESHI_SEARCH => '(self|super|true|false|nil)', //keywords again (to avoid matching in next regexp)
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 5 => array(
+ GESHI_SEARCH => '([:(,=[.*/+-]\s*)([a-zA-Z0-9_]+)', //message parameters, message receivers
+ GESHI_REPLACE => '\\2',
+ GESHI_MODIFIERS => 's',
+ GESHI_BEFORE => '\\1',
+ GESHI_AFTER => ''
+ ),
+ 6 => array(
+ GESHI_SEARCH => '([a-zA-Z0-9_]+)(\s*:=)', //assignment targets
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => '',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '\\2'
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/smarty.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/smarty.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/smarty.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,172 +1,172 @@
-<?php
-/*************************************************************************************
- * smarty.php
- * ----------
- * Author: Alan Juden (alan at judenware.org)
- * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/07/10
- *
- * Smarty template language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.0)
- * - Initial Release
- *
- * TODO
- * ----
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Smarty',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array('{*' => '*}'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- '$smarty', 'now', 'const', 'capture', 'config', 'section', 'foreach', 'template', 'version', 'ldelim', 'rdelim',
- 'config_load', 'foreachelse', 'include', 'include_php', 'insert', 'if', 'elseif', 'else', 'php',
- 'sectionelse', 'clear_all_cache', 'clear_cache', 'is_cached',
- ),
- 2 => array(
- 'capitalize', 'count_characters', 'cat', 'count_paragraphs', 'count_sentences', 'count_words', 'date_format',
- 'default', 'escape', 'indent', 'lower', 'nl2br', 'regex_replace', 'replace', 'spacify', 'string_format',
- 'strip', 'strip_tags', 'truncate', 'upper', 'wordwrap'
- ),
- 3 => array(
- 'assign', 'counter', 'cycle', 'debug', 'eval', 'fetch', 'html_checkboxes', 'html_image', 'html_options',
- 'html_radios', 'html_select_date', 'html_select_time', 'html_table', 'math', 'mailto', 'popup_init',
- 'popup', 'textformat'
- ),
- 4 => array(
- '$template_dir', '$compile_dir', '$config_dir', '$plugins_dir', '$debugging', '$debug_tpl',
- '$debugging_ctrl', '$autoload_filters', '$compile_check', '$force_compile', '$caching', '$cache_dir',
- '$cache_lifetime', '$cache_handler_func', '$cache_modified_check', '$config_overwrite',
- '$config_booleanize', '$config_read_hidden', '$config_fix_newlines', '$default_template_handler_func',
- '$php_handling', '$security', '$secure_dir', '$security_settings', '$trusted_dir', '$left_delimiter',
- '$right_delimiter', '$compiler_class', '$request_vars_order', '$request_use_auto_globals',
- '$error_reporting', '$compile_id', '$use_sub_dirs', '$default_modifiers', '$default_resource_type'
- ),
- 5 => array(
- 'append', 'append_by_ref', 'assign', 'assign_by_ref', 'clear_all_assign', 'clear_all_cache',
- 'clear_assign', 'clear_cache', 'clear_compiled_tpl', 'clear_config', 'config_load', 'display',
- 'fetch', 'get_config_vars', 'get_registered_object', 'get_template_vars', 'is_cached',
- 'load_filter', 'register_block', 'register_compiler_function', 'register_function',
- 'register_modifier', 'register_object', 'register_outputfilter', 'register_postfilter',
- 'register_prefilter', 'register_resource', 'trigger_error', 'template_exists', 'unregister_block',
- 'unregister_compiler_function', 'unregister_function', 'unregister_modifier', 'unregister_object',
- 'unregister_outputfilter', 'unregister_postfilter', 'unregister_prefilter', 'unregister_resource'
- ),
- 6 => array(
- 'name', 'assign', 'file', 'scope', 'global', 'key', 'once', 'script',
- 'loop', 'start', 'step', 'max', 'show', 'values', 'value', 'from', 'item'
- ),
- 7 => array(
- 'eq', 'neq', 'ne', 'lte', 'gte', 'ge', 'le', 'not', 'mod'
- ),
- ),
- 'SYMBOLS' => array(
- '/', '=', '==', '!=', '>', '<', '>=', '<=', '!', '%'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
- 6 => false,
- 7 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0600FF;', //Functions
- 2 => 'color: #008000;', //Modifiers
- 3 => 'color: #0600FF;', //Custom Functions
- 4 => 'color: #804040;', //Variables
- 5 => 'color: #008000;', //Methods
- 6 => 'color: #6A0A0A;', //Attributes
- 7 => 'color: #D36900;' //Text-based symbols
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #008080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #D36900;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #D36900;'
- ),
- 'SCRIPT' => array(
- 0 => ''
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => 'http://smarty.php.net/{FNAME}',
- 2 => 'http://smarty.php.net/{FNAME}',
- 3 => 'http://smarty.php.net/{FNAME}',
- 4 => 'http://smarty.php.net/{FNAME}',
- 5 => 'http://smarty.php.net/{FNAME}',
- 6 => '',
- 7 => 'http://smarty.php.net/{FNAME}'
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '{' => '}'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => true
- ),
- 'PARSER_CONTROL' => array(
- 'KEYWORDS' => array(
- 'DISALLOWED_BEFORE' => "a-zA-Z0-9\$_\|\#;>|^",
- 'DISALLOWED_AFTER' => "a-zA-Z0-9_<\|%\\-&"
- )
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * smarty.php
+ * ----------
+ * Author: Alan Juden (alan at judenware.org)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/07/10
+ *
+ * Smarty template language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ * - Initial Release
+ *
+ * TODO
+ * ----
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Smarty',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array('{*' => '*}'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '$smarty', 'now', 'const', 'capture', 'config', 'section', 'foreach', 'template', 'version', 'ldelim', 'rdelim',
+ 'config_load', 'foreachelse', 'include', 'include_php', 'insert', 'if', 'elseif', 'else', 'php',
+ 'sectionelse', 'clear_all_cache', 'clear_cache', 'is_cached',
+ ),
+ 2 => array(
+ 'capitalize', 'count_characters', 'cat', 'count_paragraphs', 'count_sentences', 'count_words', 'date_format',
+ 'default', 'escape', 'indent', 'lower', 'nl2br', 'regex_replace', 'replace', 'spacify', 'string_format',
+ 'strip', 'strip_tags', 'truncate', 'upper', 'wordwrap'
+ ),
+ 3 => array(
+ 'assign', 'counter', 'cycle', 'debug', 'eval', 'fetch', 'html_checkboxes', 'html_image', 'html_options',
+ 'html_radios', 'html_select_date', 'html_select_time', 'html_table', 'math', 'mailto', 'popup_init',
+ 'popup', 'textformat'
+ ),
+ 4 => array(
+ '$template_dir', '$compile_dir', '$config_dir', '$plugins_dir', '$debugging', '$debug_tpl',
+ '$debugging_ctrl', '$autoload_filters', '$compile_check', '$force_compile', '$caching', '$cache_dir',
+ '$cache_lifetime', '$cache_handler_func', '$cache_modified_check', '$config_overwrite',
+ '$config_booleanize', '$config_read_hidden', '$config_fix_newlines', '$default_template_handler_func',
+ '$php_handling', '$security', '$secure_dir', '$security_settings', '$trusted_dir', '$left_delimiter',
+ '$right_delimiter', '$compiler_class', '$request_vars_order', '$request_use_auto_globals',
+ '$error_reporting', '$compile_id', '$use_sub_dirs', '$default_modifiers', '$default_resource_type'
+ ),
+ 5 => array(
+ 'append', 'append_by_ref', 'assign', 'assign_by_ref', 'clear_all_assign', 'clear_all_cache',
+ 'clear_assign', 'clear_cache', 'clear_compiled_tpl', 'clear_config', 'config_load', 'display',
+ 'fetch', 'get_config_vars', 'get_registered_object', 'get_template_vars', 'is_cached',
+ 'load_filter', 'register_block', 'register_compiler_function', 'register_function',
+ 'register_modifier', 'register_object', 'register_outputfilter', 'register_postfilter',
+ 'register_prefilter', 'register_resource', 'trigger_error', 'template_exists', 'unregister_block',
+ 'unregister_compiler_function', 'unregister_function', 'unregister_modifier', 'unregister_object',
+ 'unregister_outputfilter', 'unregister_postfilter', 'unregister_prefilter', 'unregister_resource'
+ ),
+ 6 => array(
+ 'name', 'assign', 'file', 'scope', 'global', 'key', 'once', 'script',
+ 'loop', 'start', 'step', 'max', 'show', 'values', 'value', 'from', 'item'
+ ),
+ 7 => array(
+ 'eq', 'neq', 'ne', 'lte', 'gte', 'ge', 'le', 'not', 'mod'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '/', '=', '==', '!=', '>', '<', '>=', '<=', '!', '%'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0600FF;', //Functions
+ 2 => 'color: #008000;', //Modifiers
+ 3 => 'color: #0600FF;', //Custom Functions
+ 4 => 'color: #804040;', //Variables
+ 5 => 'color: #008000;', //Methods
+ 6 => 'color: #6A0A0A;', //Attributes
+ 7 => 'color: #D36900;' //Text-based symbols
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #008080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #D36900;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #D36900;'
+ ),
+ 'SCRIPT' => array(
+ 0 => ''
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => 'http://smarty.php.net/{FNAME}',
+ 2 => 'http://smarty.php.net/{FNAME}',
+ 3 => 'http://smarty.php.net/{FNAME}',
+ 4 => 'http://smarty.php.net/{FNAME}',
+ 5 => 'http://smarty.php.net/{FNAME}',
+ 6 => '',
+ 7 => 'http://smarty.php.net/{FNAME}'
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '{' => '}'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => true
+ ),
+ 'PARSER_CONTROL' => array(
+ 'KEYWORDS' => array(
+ 'DISALLOWED_BEFORE' => "a-zA-Z0-9\$_\|\#;>|^",
+ 'DISALLOWED_AFTER' => "a-zA-Z0-9_<\|%\\-&"
+ )
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/sql.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/sql.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/sql.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,135 +1,135 @@
-<?php
-/*************************************************************************************
- * sql.php
- * -------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * SQL language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.3)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.2)
- * - Added "`" string delimiter
- * - Added "#" single comment starter
- * 2004/08/05 (1.0.1)
- * - Added support for symbols
- * - Added many more keywords (mostly MYSQL keywords)
- * 2004/07/14 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Add all keywords
- * * Split this to several sql files - mysql-sql, ansi-sql etc
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'SQL',
- 'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => 1,
- 'QUOTEMARKS' => array("'", '"', '`'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- 'ALL', 'ASC', 'AS', 'ALTER', 'AND', 'ADD', 'AUTO_INCREMENT',
- 'BETWEEN', 'BINARY', 'BOTH', 'BY', 'BOOLEAN',
- 'CHANGE', 'CHECK', 'COLUMNS', 'COLUMN', 'CROSS','CREATE',
- 'DATABASES', 'DATABASE', 'DATA', 'DELAYED', 'DESCRIBE', 'DESC', 'DISTINCT', 'DELETE', 'DROP', 'DEFAULT',
- 'ENCLOSED', 'ESCAPED', 'EXISTS', 'EXPLAIN',
- 'FIELDS', 'FIELD', 'FLUSH', 'FOR', 'FOREIGN', 'FUNCTION', 'FROM',
- 'GROUP', 'GRANT',
- 'HAVING',
- 'IGNORE', 'INDEX', 'INFILE', 'INSERT', 'INNER', 'INTO', 'IDENTIFIED', 'IN', 'IS', 'IF',
- 'JOIN',
- 'KEYS', 'KILL','KEY',
- 'LEADING', 'LIKE', 'LIMIT', 'LINES', 'LOAD', 'LOCAL', 'LOCK', 'LOW_PRIORITY', 'LEFT', 'LANGUAGE',
- 'MODIFY',
- 'NATURAL', 'NOT', 'NULL', 'NEXTVAL',
- 'OPTIMIZE', 'OPTION', 'OPTIONALLY', 'ORDER', 'OUTFILE', 'OR', 'OUTER', 'ON',
- 'PROCEEDURE','PROCEDURAL', 'PRIMARY',
- 'READ', 'REFERENCES', 'REGEXP', 'RENAME', 'REPLACE', 'RETURN', 'REVOKE', 'RLIKE', 'RIGHT',
- 'SHOW', 'SONAME', 'STATUS', 'STRAIGHT_JOIN', 'SELECT', 'SETVAL', 'SET',
- 'TABLES', 'TEMINATED', 'TO', 'TRAILING','TRUNCATE', 'TABLE', 'TEMPORARY', 'TRIGGER', 'TRUSTED',
- 'UNIQUE', 'UNLOCK', 'USE', 'USING', 'UPDATE', 'UNSIGNED',
- 'VALUES', 'VARIABLES', 'VIEW',
- 'WITH', 'WRITE', 'WHERE',
- 'ZEROFILL',
- 'XOR',
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '=', '<', '>', '|'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #993333; font-weight: bold;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 2 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * sql.php
+ * -------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * SQL language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ * - Added "`" string delimiter
+ * - Added "#" single comment starter
+ * 2004/08/05 (1.0.1)
+ * - Added support for symbols
+ * - Added many more keywords (mostly MYSQL keywords)
+ * 2004/07/14 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Add all keywords
+ * * Split this to several sql files - mysql-sql, ansi-sql etc
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'SQL',
+ 'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => 1,
+ 'QUOTEMARKS' => array("'", '"', '`'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'ALL', 'ASC', 'AS', 'ALTER', 'AND', 'ADD', 'AUTO_INCREMENT',
+ 'BETWEEN', 'BINARY', 'BOTH', 'BY', 'BOOLEAN',
+ 'CHANGE', 'CHECK', 'COLUMNS', 'COLUMN', 'CROSS','CREATE',
+ 'DATABASES', 'DATABASE', 'DATA', 'DELAYED', 'DESCRIBE', 'DESC', 'DISTINCT', 'DELETE', 'DROP', 'DEFAULT',
+ 'ENCLOSED', 'ESCAPED', 'EXISTS', 'EXPLAIN',
+ 'FIELDS', 'FIELD', 'FLUSH', 'FOR', 'FOREIGN', 'FUNCTION', 'FROM',
+ 'GROUP', 'GRANT',
+ 'HAVING',
+ 'IGNORE', 'INDEX', 'INFILE', 'INSERT', 'INNER', 'INTO', 'IDENTIFIED', 'IN', 'IS', 'IF',
+ 'JOIN',
+ 'KEYS', 'KILL','KEY',
+ 'LEADING', 'LIKE', 'LIMIT', 'LINES', 'LOAD', 'LOCAL', 'LOCK', 'LOW_PRIORITY', 'LEFT', 'LANGUAGE',
+ 'MODIFY',
+ 'NATURAL', 'NOT', 'NULL', 'NEXTVAL',
+ 'OPTIMIZE', 'OPTION', 'OPTIONALLY', 'ORDER', 'OUTFILE', 'OR', 'OUTER', 'ON',
+ 'PROCEEDURE','PROCEDURAL', 'PRIMARY',
+ 'READ', 'REFERENCES', 'REGEXP', 'RENAME', 'REPLACE', 'RETURN', 'REVOKE', 'RLIKE', 'RIGHT',
+ 'SHOW', 'SONAME', 'STATUS', 'STRAIGHT_JOIN', 'SELECT', 'SETVAL', 'SET',
+ 'TABLES', 'TEMINATED', 'TO', 'TRAILING','TRUNCATE', 'TABLE', 'TEMPORARY', 'TRIGGER', 'TRUSTED',
+ 'UNIQUE', 'UNLOCK', 'USE', 'USING', 'UPDATE', 'UNSIGNED',
+ 'VALUES', 'VARIABLES', 'VIEW',
+ 'WITH', 'WRITE', 'WHERE',
+ 'ZEROFILL',
+ 'XOR',
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '=', '<', '>', '|'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #993333; font-weight: bold;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 2 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/tcl.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/tcl.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/tcl.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,181 +1,181 @@
-<?php
-/*************************************************************************************
- * tcl.php
- * ---------------------------------
- * Author: Reid van Melle (rvanmelle at gmail.com)
- * Copyright: (c) 2004 Reid van Melle (sorry at nowhere)
- * Release Version: 1.0.7.21
- * Date Started: 2006/05/05
- *
- * TCL/iTCL language file for GeSHi.
- *
- * This was thrown together in about an hour so I don't expect
- * really great things. However, it is a good start. I never
- * got a change to try out the iTCL or object-based support but
- * this is not widely used anyway.
- *
- * CHANGES
- * -------
- * 2006/05/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/05/05)
- * -------------------------
- * - Get TCL built-in special variables hilighted with a new color..
- * currently, these are listed in //special variables in the keywords
- * section, but they get covered by the general REGEXP for symbols
- * - General cleanup, testing, and verification
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'TCL',
- 'COMMENT_SINGLE' => array(1 => '#'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"', "'"),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
-
- /*
- ** Set 1: reserved words
- ** http://python.org/doc/current/ref/keywords.html
- */
- 1 => array(
- 'proc', 'global', 'upvar', 'if', 'then', 'else', 'elseif', 'for', 'foreach',
- 'break', 'continue', 'while', 'set', 'eval', 'case', 'in', 'switch',
- 'default', 'exit', 'error', 'proc', 'return', 'uplevel', 'loop',
- 'for_array_keys', 'for_recursive_glob', 'for_file', 'unwind_protect',
- 'expr', 'catch', 'namespace', 'rename', 'variable',
- // itcl
- 'method', 'itcl_class', 'public', 'protected'),
-
- /*
- ** Set 2: builtins
- ** http://asps.activatestate.com/ASPN/docs/ActiveTcl/8.4/tcl/tcl_2_contents.htm
- */
- 2 => array(
- // string handling
- 'append', 'binary', 'format', 're_syntax', 'regexp', 'regsub',
- 'scan', 'string', 'subst',
- // list handling
- 'concat', 'join', 'lappend', 'lindex', 'list', 'llength', 'lrange',
- 'lreplace', 'lsearch', 'lset', 'lsort', 'split',
- // math
- 'expr',
- // procedures and output
- 'incr', 'close', 'eof', 'fblocked', 'fconfigure', 'fcopy', 'file',
- 'fileevent', 'flush', 'gets', 'open', 'puts', 'read', 'seek',
- 'socket', 'tell',
- // packages and source files
- 'load', 'loadTk', 'package', 'pgk::create', 'pgk_mkIndex', 'source',
- // interpreter routines
- 'bgerror', 'history', 'info', 'interp', 'memory', 'unknown',
- // library routines
- 'enconding', 'http', 'msgcat',
- // system related
- 'cd', 'clock', 'exec', 'exit', 'glob', 'pid', 'pwd', 'time',
- // platform specified
- 'dde', 'registry', 'resource',
- // special variables
- '$argc', '$argv', '$errorCode', '$errorInfo', '$argv0',
- '$auto_index', '$auto_oldpath', '$auto_path', '$env',
- '$tcl_interactive', '$tcl_libpath', '$tcl_library',
- '$tcl_pkgPath', '$tcl_platform', '$tcl_precision', '$tcl_traceExec',
- ),
-
- /*
- ** Set 3: standard library
- */
- 3 => array(
- 'comment', 'dde', 'filename', 'http', 'library', 'memory',
- 'packagens', 'registry', 'resource', 'tcltest', 'tclvars',
- ),
-
- /*
- ** Set 4: special methods
- */
- 4 => array(
- )
-
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '$', '*', '&', '%', '!', ';', '<', '>', '?'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => true,
- 2 => true,
- 3 => true,
- 4 => true
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #ff7700;font-weight:bold;', // Reserved
- 2 => 'color: #008000;', // Built-ins + self
- 3 => 'color: #dc143c;', // Standard lib
- 4 => 'color: #0000cd;' // Special methods
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: black;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #483d8b;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #ff4500;'
- ),
- 'METHODS' => array(
- 1 => 'color: black;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #ff3333;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '::'
- ),
- 'REGEXPS' => array(
- 0 => '[\\$]+[a-zA-Z_][a-zA-Z0-9_]*',
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * tcl.php
+ * ---------------------------------
+ * Author: Reid van Melle (rvanmelle at gmail.com)
+ * Copyright: (c) 2004 Reid van Melle (sorry at nowhere)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/05/05
+ *
+ * TCL/iTCL language file for GeSHi.
+ *
+ * This was thrown together in about an hour so I don't expect
+ * really great things. However, it is a good start. I never
+ * got a change to try out the iTCL or object-based support but
+ * this is not widely used anyway.
+ *
+ * CHANGES
+ * -------
+ * 2006/05/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/05/05)
+ * -------------------------
+ * - Get TCL built-in special variables hilighted with a new color..
+ * currently, these are listed in //special variables in the keywords
+ * section, but they get covered by the general REGEXP for symbols
+ * - General cleanup, testing, and verification
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'TCL',
+ 'COMMENT_SINGLE' => array(1 => '#'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"', "'"),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+
+ /*
+ ** Set 1: reserved words
+ ** http://python.org/doc/current/ref/keywords.html
+ */
+ 1 => array(
+ 'proc', 'global', 'upvar', 'if', 'then', 'else', 'elseif', 'for', 'foreach',
+ 'break', 'continue', 'while', 'set', 'eval', 'case', 'in', 'switch',
+ 'default', 'exit', 'error', 'proc', 'return', 'uplevel', 'loop',
+ 'for_array_keys', 'for_recursive_glob', 'for_file', 'unwind_protect',
+ 'expr', 'catch', 'namespace', 'rename', 'variable',
+ // itcl
+ 'method', 'itcl_class', 'public', 'protected'),
+
+ /*
+ ** Set 2: builtins
+ ** http://asps.activatestate.com/ASPN/docs/ActiveTcl/8.4/tcl/tcl_2_contents.htm
+ */
+ 2 => array(
+ // string handling
+ 'append', 'binary', 'format', 're_syntax', 'regexp', 'regsub',
+ 'scan', 'string', 'subst',
+ // list handling
+ 'concat', 'join', 'lappend', 'lindex', 'list', 'llength', 'lrange',
+ 'lreplace', 'lsearch', 'lset', 'lsort', 'split',
+ // math
+ 'expr',
+ // procedures and output
+ 'incr', 'close', 'eof', 'fblocked', 'fconfigure', 'fcopy', 'file',
+ 'fileevent', 'flush', 'gets', 'open', 'puts', 'read', 'seek',
+ 'socket', 'tell',
+ // packages and source files
+ 'load', 'loadTk', 'package', 'pgk::create', 'pgk_mkIndex', 'source',
+ // interpreter routines
+ 'bgerror', 'history', 'info', 'interp', 'memory', 'unknown',
+ // library routines
+ 'enconding', 'http', 'msgcat',
+ // system related
+ 'cd', 'clock', 'exec', 'exit', 'glob', 'pid', 'pwd', 'time',
+ // platform specified
+ 'dde', 'registry', 'resource',
+ // special variables
+ '$argc', '$argv', '$errorCode', '$errorInfo', '$argv0',
+ '$auto_index', '$auto_oldpath', '$auto_path', '$env',
+ '$tcl_interactive', '$tcl_libpath', '$tcl_library',
+ '$tcl_pkgPath', '$tcl_platform', '$tcl_precision', '$tcl_traceExec',
+ ),
+
+ /*
+ ** Set 3: standard library
+ */
+ 3 => array(
+ 'comment', 'dde', 'filename', 'http', 'library', 'memory',
+ 'packagens', 'registry', 'resource', 'tcltest', 'tclvars',
+ ),
+
+ /*
+ ** Set 4: special methods
+ */
+ 4 => array(
+ )
+
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '$', '*', '&', '%', '!', ';', '<', '>', '?'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => true,
+ 2 => true,
+ 3 => true,
+ 4 => true
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #ff7700;font-weight:bold;', // Reserved
+ 2 => 'color: #008000;', // Built-ins + self
+ 3 => 'color: #dc143c;', // Standard lib
+ 4 => 'color: #0000cd;' // Special methods
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: black;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #483d8b;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #ff4500;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: black;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #ff3333;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '::'
+ ),
+ 'REGEXPS' => array(
+ 0 => '[\\$]+[a-zA-Z_][a-zA-Z0-9_]*',
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/text.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/text.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/text.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,81 +1,81 @@
-<?php
-/*************************************************************************************
- * text.php
- * --------
- * Author: Sean Hanna (smokingrope at gmail.com)
- * Copyright: (c) 2006 Sean Hanna
- * Release Version: 1.0.7.21
- * Date Started: 04/23/2006
- *
- * Standard Text File (No Syntax Highlighting).
- *
- * CHANGES
- * -------
- * 04/23/2006 (0.5.0)
- * - Syntax File Created
- *
- * 04/27/2006 (1.0.0)
- * - Documentation Cleaned Up
- * - First Release
- *
- * TODO (updated 04/27/2006)
- * -------------------------
- *
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
-
- ************************************************************************************/
-$language_data = array (
- 'LANG_NAME' => 'Text',
- 'COMMENT_SINGLE' => array( ),
- 'COMMENT_MULTI' => array( ),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array(),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array( ),
- 'SYMBOLS' => array( ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(),
- 'COMMENTS' => array(),
- 'ESCAPE_CHAR' => array(),
- 'BRACKETS' => array(),
- 'STRINGS' => array(),
- 'NUMBERS' => array(),
- 'METHODS' => array(),
- 'SYMBOLS' => array(),
- 'SCRIPT' => array(),
- 'REGEXPS' => array()
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(),
- 'REGEXPS' => array( ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array( ),
- 'HIGHLIGHT_STRICT_BLOCK' => array( )
-);
-if (isset($this) && is_a($this, 'GeSHi')) {
- $this->set_numbers_highlighting(false);
- $this->set_brackets_highlighting(false);
- $this->disable_highlighting();
-}
-?>
+<?php
+/*************************************************************************************
+ * text.php
+ * --------
+ * Author: Sean Hanna (smokingrope at gmail.com)
+ * Copyright: (c) 2006 Sean Hanna
+ * Release Version: 1.0.7.21
+ * Date Started: 04/23/2006
+ *
+ * Standard Text File (No Syntax Highlighting).
+ *
+ * CHANGES
+ * -------
+ * 04/23/2006 (0.5.0)
+ * - Syntax File Created
+ *
+ * 04/27/2006 (1.0.0)
+ * - Documentation Cleaned Up
+ * - First Release
+ *
+ * TODO (updated 04/27/2006)
+ * -------------------------
+ *
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+
+ ************************************************************************************/
+$language_data = array (
+ 'LANG_NAME' => 'Text',
+ 'COMMENT_SINGLE' => array( ),
+ 'COMMENT_MULTI' => array( ),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array(),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array( ),
+ 'SYMBOLS' => array( ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(),
+ 'COMMENTS' => array(),
+ 'ESCAPE_CHAR' => array(),
+ 'BRACKETS' => array(),
+ 'STRINGS' => array(),
+ 'NUMBERS' => array(),
+ 'METHODS' => array(),
+ 'SYMBOLS' => array(),
+ 'SCRIPT' => array(),
+ 'REGEXPS' => array()
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(),
+ 'REGEXPS' => array( ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array( ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array( )
+);
+if (isset($this) && is_a($this, 'GeSHi')) {
+ $this->set_numbers_highlighting(false);
+ $this->set_brackets_highlighting(false);
+ $this->disable_highlighting();
+}
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/thinbasic.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/thinbasic.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/thinbasic.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,864 +1,864 @@
-<?php
-/*************************************************************************************
- * thinbasic.php
- * ------
- * Author: Eros Olmi (eros.olmi at thinbasic.com)
- * Copyright: (c) 2006 Eros Olmi (http://www.thinbasic.com), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2006/05/12
- *
- * thinBasic language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/05/12 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/05/12)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
- $language_data = array (
- 'LANG_NAME' => 'thinBasic',
- 'COMMENT_SINGLE' => array(1 => "'"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'XOR','XML_TREETOSTRING','XML_PARSEFILE','XML_PARSE','XML_PARENT','XML_NODETYPE','XML_NODETOSTRING','XML_NEXTSIBLING',
- 'XML_LASTERROR','XML_GETTAG','XML_FREE','XML_FINDNODE','XML_DECODEPARAM','XML_CHILDDATA','XML_CHILD','XML_ATTRIBVALUE',
- 'XML_ATTRIBNAME','XML_ATTRIBCOUNT','WORD','WITH','WIN_SHOW','WIN_SETTITLE','WIN_SETFOREGROUND','WIN_ISZOOMED',
- 'WIN_ISVISIBLE','WIN_ISICONIC','WIN_GETTITLE','WIN_GETFOREGROUND','WIN_GETCLASS','WIN_GETACTIVE','WIN_FLASH','WIN_FINDBYTITLE',
- 'WIN_FINDBYCLASS','WHILE','WEND','VERIFY','VARPTR','VARIANTVT$','VARIANTVT','VARIANT',
- 'VARIABLE_GETINFO','VARIABLE_EXISTS','VARIABLE_EXIST','VALUE','VAL','USING$','USING','USES',
- 'USER','UNTIL','UNITS','UNION','UNICODE2ASCII','UDP_SEND','UDP_RECV','UDP_OPENSERVER',
- 'UDP_OPEN','UDP_FREEFILE','UDP_CLOSE','UCODE$','UCASE$','UBOUND','TYPE','TRIMFULL$',
- 'TRIM$','TOOLTIP','TOKENIZER_MOVETOEOL','TOKENIZER_KEYSETUSERSTRING','TOKENIZER_KEYSETUSERNUMBER','TOKENIZER_KEYGETUSERSTRING','TOKENIZER_KEYGETUSERNUMBER','TOKENIZER_KEYGETSUBTYPE',
- 'TOKENIZER_KEYGETNAME','TOKENIZER_KEYGETMAINTYPE','TOKENIZER_KEYFIND','TOKENIZER_KEYADD','TOKENIZER_GETNEXTTOKEN','TOKENIZER_DEFAULT_SET','TOKENIZER_DEFAULT_GET','TOKENIZER_DEFAULT_CODE',
- 'TOKENIZER_DEFAULT_CHAR','TO','TIMER','TIME$','THEN','TEXTBOX','TEXT','TCP_SEND',
- 'TCP_RECV','TCP_PRINT','TCP_OPEN','TCP_LINEINPUT','TCP_FREEFILE','TCP_CLOSE','TB_IMGCTX_SETIMAGEADJUSTMENT','TB_IMGCTX_LOADIMAGE',
- 'TB_IMGCTX_GETIMAGEADJUSTMENT','TBGL_VIEWPORT','TBGL_VERTEX','TBGL_USETEXTUREFLAG','TBGL_USETEXTURE','TBGL_USELINESTIPPLEFLAG','TBGL_USELINESTIPPLE','TBGL_USELIGHTSOURCEFLAG',
- 'TBGL_USELIGHTSOURCE','TBGL_USELIGHTINGFLAG','TBGL_USELIGHTING','TBGL_USEFOGFLAG','TBGL_USEFOG','TBGL_USEDEPTHMASK','TBGL_USEDEPTHFLAG','TBGL_USEDEPTH',
- 'TBGL_USECLIPPLANEFLAG','TBGL_USECLIPPLANE','TBGL_USEBLENDFLAG','TBGL_USEBLEND','TBGL_USEALPHATEST','TBGL_TRANSLATE','TBGL_TORUS','TBGL_TEXCOORD2D',
- 'TBGL_SPHERE','TBGL_SHOWWINDOW','TBGL_SHOWCURSOR','TBGL_SETWINDOWTITLE','TBGL_SETUPLIGHTSOURCE','TBGL_SETUPFOG','TBGL_SETUPCLIPPLANE','TBGL_SETPRIMITIVEQUALITY',
- 'TBGL_SETLIGHTPARAMETER','TBGL_SETDRAWDISTANCE','TBGL_SCALE','TBGL_SAVESCREENSHOT','TBGL_ROTATEXYZ','TBGL_ROTATE','TBGL_RESETMATRIX','TBGL_RENDERTOTEXTURE',
- 'TBGL_RENDERMATRIX3D','TBGL_RENDERMATRIX2D','TBGL_PUSHMATRIX','TBGL_PRINTFONT','TBGL_PRINTBMP','TBGL_PRINT','TBGL_POS3DTOPOS2D','TBGL_POPMATRIX',
- 'TBGL_POLYGONLOOK','TBGL_POINTSIZE','TBGL_POINTINSIDE3D','TBGL_NORMAL','TBGL_NEWLIST','TBGL_MOUSEGETWHEELDELTA','TBGL_MOUSEGETRBUTTON','TBGL_MOUSEGETPOSY',
- 'TBGL_MOUSEGETPOSX','TBGL_MOUSEGETMBUTTON','TBGL_MOUSEGETLBUTTON','TBGL_M15SETVERTEXZ','TBGL_M15SETVERTEXY','TBGL_M15SETVERTEXXYZ','TBGL_M15SETVERTEXX','TBGL_M15SETVERTEXTEXY',
- 'TBGL_M15SETVERTEXTEXXY','TBGL_M15SETVERTEXTEXX','TBGL_M15SETVERTEXTEXN','TBGL_M15SETVERTEXRGB','TBGL_M15SETVERTEXR','TBGL_M15SETVERTEXPSTOP','TBGL_M15SETVERTEXPARAM','TBGL_M15SETVERTEXLAYER',
- 'TBGL_M15SETVERTEXG','TBGL_M15SETVERTEXB','TBGL_M15SETMODELVERTEXCOUNT','TBGL_M15SETBONECHILD','TBGL_M15ROTBONEZ','TBGL_M15ROTBONEY','TBGL_M15ROTBONEX','TBGL_M15ROTBONE',
- 'TBGL_M15RESETBONES','TBGL_M15RECALCNORMALS','TBGL_M15LOADMODEL','TBGL_M15INITMODELBUFFERS','TBGL_M15GETVERTEXZ','TBGL_M15GETVERTEXY','TBGL_M15GETVERTEXXYZ','TBGL_M15GETVERTEXX',
- 'TBGL_M15GETVERTEXTEXY','TBGL_M15GETVERTEXTEXXY','TBGL_M15GETVERTEXTEXX','TBGL_M15GETVERTEXTEXN','TBGL_M15GETVERTEXRGB','TBGL_M15GETVERTEXR','TBGL_M15GETVERTEXPSTOP','TBGL_M15GETVERTEXPARAM',
- 'TBGL_M15GETVERTEXLAYER','TBGL_M15GETVERTEXG','TBGL_M15GETVERTEXB','TBGL_M15GETMODELVERTEXCOUNT','TBGL_M15GETMODELPOLYCOUNT','TBGL_M15ERASECHILDBONES','TBGL_M15DRAWMODEL','TBGL_M15DEFBONERESET',
- 'TBGL_M15DEFBONELAYER','TBGL_M15DEFBONEBOX','TBGL_M15DEFBONEANCHOR','TBGL_M15DEFBONEADDVERTEX','TBGL_M15CLEARMODEL','TBGL_M15APPLYBONES','TBGL_M15ADDBONETREEITEM','TBGL_LOADTEXTURE',
- 'TBGL_LOADFONT','TBGL_LOADBMPFONT','TBGL_LINEWIDTH','TBGL_LINESTIPPLE','TBGL_KILLFONT','TBGL_ISWINDOW','TBGL_ISPOINTVISIBLE','TBGL_ISPOINTBEHINDVIEW',
- 'TBGL_GETWINDOWMULTIKEYSTATE','TBGL_GETWINDOWKEYSTATE','TBGL_GETWINDOWKEYONCE','TBGL_GETWINDOWCLIENT','TBGL_GETTEXTURENAME','TBGL_GETTEXTURELIST','TBGL_GETPIXELINFO','TBGL_GETMULTIASYNCKEYSTATE',
- 'TBGL_GETLASTGLERROR','TBGL_GETFRAMERATE','TBGL_GETDESKTOPINFO','TBGL_GETASYNCKEYSTATE','TBGL_ERRORMESSAGES','TBGL_ENDPOLY','TBGL_ENDLIST','TBGL_DRAWFRAME',
- 'TBGL_DESTROYWINDOW','TBGL_DELETELIST','TBGL_CYLINDER','TBGL_CREATEWINDOWEX','TBGL_CREATEWINDOW','TBGL_COLORALPHA','TBGL_COLOR','TBGL_CLEARFRAME',
- 'TBGL_CAMERA','TBGL_CALLLIST','TBGL_BUILDFONT','TBGL_BOX','TBGL_BLENDFUNC','TBGL_BINDTEXTURE','TBGL_BEGINPOLY','TBGL_BACKCOLOR',
- 'TBGL_ALPHAFUNC','TBDI_JOYZ','TBDI_JOYY','TBDI_JOYX','TBDI_JOYSTOPEFFECT','TBDI_JOYSLIDER','TBDI_JOYSETRANGEZ','TBDI_JOYSETRANGEY',
- 'TBDI_JOYSETRANGEXYZ','TBDI_JOYSETRANGEX','TBDI_JOYSETDEADZONEZ','TBDI_JOYSETDEADZONEY','TBDI_JOYSETDEADZONEXYZ','TBDI_JOYSETDEADZONEX','TBDI_JOYSETAUTOCENTER','TBDI_JOYRZ',
- 'TBDI_JOYRY','TBDI_JOYRX','TBDI_JOYPOV','TBDI_JOYPLAYEFFECT','TBDI_JOYLOADEFFECT','TBDI_JOYHASFF','TBDI_JOYHASEFFECT','TBDI_JOYGETEFFECTNAME',
- 'TBDI_JOYGETEFFECTGUID','TBDI_JOYCREATEEFFECT','TBDI_JOYCOUNTPOV','TBDI_JOYCOUNTEFFECTS','TBDI_JOYCOUNTBTN','TBDI_JOYCOUNTAXES','TBDI_JOYBUTTON','TBDI_JOYAVAIL',
- 'TBDI_INIT','TBASS_STREAMFREE','TBASS_STREAMCREATEFILE','TBASS_SETVOLUME','TBASS_SETEAXPRESET','TBASS_SETEAXPARAMETERS','TBASS_SETCONFIG','TBASS_SET3DPOSITION',
- 'TBASS_SET3DFACTORS','TBASS_SAMPLELOAD','TBASS_SAMPLEGETCHANNEL','TBASS_MUSICLOAD','TBASS_MUSICFREE','TBASS_INIT','TBASS_GETVOLUME','TBASS_GETVERSION',
- 'TBASS_GETCONFIG','TBASS_FREE','TBASS_ERRORGETCODE','TBASS_CHANNELSTOP','TBASS_CHANNELSETPOSITION','TBASS_CHANNELSETATTRIBUTES','TBASS_CHANNELSET3DPOSITION','TBASS_CHANNELPLAY',
- 'TBASS_CHANNELPAUSE','TBASS_CHANNELISACTIVE','TBASS_CHANNELGETPOSITION','TBASS_CHANNELGETLENGTH','TBASS_CHANNELGETATTRIBUTES','TBASS_APPLY3D','TANH','TANGENT',
- 'TAN','TALLY','TABCTRL_ONNOTIFY','TABCTRL_INSERTITEM','TABCTRL_GETCURSEL','SWAP','SUB','STRZIP$',
- 'STRUNZIP$','STRREVERSE$','STRPTRLEN','STRPTR','STRINSERT$','STRING$','STRING','STRDELETE$',
- 'STR$','STOP','STEP','STDOUT','STDIN','STAT_SUM','STAT_STDERROR','STAT_STDDEVIATION',
- 'STAT_RANDOM','STAT_PRODUCT','STAT_MIN','STAT_MEDIAN','STAT_MEANHARMONIC','STAT_MEANGEOMETRIC','STAT_MEANARITHMETIC','STAT_MAX',
- 'STAT_INVERSESUM','STAT_HISTOGRAM','STAT_FILLARRAY','STAT_COUNT','STAT_COPYARRAY','STAT_CLONEARRAY','STAT_CHISQUARE','STATIC',
- 'STATE','SQR','SPLIT','SORT','SMTP_STATISTICS','SMTP_SETOPTION','SMTP_SETLOGFILE','SMTP_SENDHTML',
- 'SMTP_SENDEMAIL','SMTP_GETERROR','SMTP_FINISHED','SMTP_DEBUG','SMTP_CONNECT','SMTP_CLOSE','SLEEP','SIZEOF',
- 'SIZE','SINH','SINGLE','SIN','SIGNED','SHOW','SHIFT','SHAPETOBMP',
- 'SGN','SETAT','SET','SENDMESSAGE','SENDKEYSBULK','SENDKEYS','SEND','SELECTEXPRESSION',
- 'SELECT','SECH','SEC','SCAN','SAPI_SPEAK','SAPI_SETVOLUME','SAPI_SETRATE','SAPI_MODULELOADED',
- 'SAPI_GETVOLUME','SAPI_GETRATE','RTRIM$','RTF_SETTEXT','RTF_SETFONTSIZE','RTF_SETFONTNAME','RTF_SETFGCOLOR','RTF_SETEFFECT',
- 'RTF_SETBGCOLOR','RTF_SETALIGN','RTF_SAVETOFILE','RTF_LOADFROMFILE','RTF_GETTEXT','RTF_GETFONTSIZE','RTF_GETFONTNAME','RTF_GETEFFECT',
- 'RTF_GETCLASS','RTF_APPENDTEXT','RSET$','ROUND','RNDF','RND','RIGHT$','RIGHT',
- 'RGB','RESOURCE','RESIZE','RESET','REPLACE$','REPEAT$','REMOVE$','REM',
- 'REGISTRY_SETVALUE','REGISTRY_SETTXTNUM','REGISTRY_SETTXTBOOL','REGISTRY_SETDWORD','REGISTRY_GETVALUE','REGISTRY_GETTXTNUM','REGISTRY_GETTXTBOOL','REGISTRY_GETDWORD',
- 'REGISTRY_GETALLKEYS','REGISTRY_DELVALUE','REGISTRY_DELKEY','REFERENCE','REF','REDRAW','REDIM','RAS_SETPARAMS',
- 'RAS_OPENDIALUPDIALOG','RAS_LOADENTRIES','RAS_HANGUPALL','RAS_HANGUP','RAS_GETENTRY','RAS_BEGINDIAL','RANDOMIZE','RADTODEG',
- 'QUERYPERFORMANCEFREQUENCY','QUERYPERFORMANCECOUNTER','QUAD','PTR','PRESERVE','POST','POPUP','POKE$',
- 'POKE','PIXELS','PI','PERMUTATIONS','PEEKMESSAGE','PEEK$','PEEK','PC_SYSTEMUPFROM',
- 'PC_SUSPENDSTATE','PC_SHUTDOWN','PC_SHOWCARET','PC_SETCARETBLINKTIME','PC_RESTARTDIALOG','PC_PREVENTSHUTDOWN','PC_LOCK','PC_INSERTCD',
- 'PC_HIDECARET','PC_GETSTATEONOFF','PC_GETSCROLLLOCKKEYSTATE','PC_GETNUMLOCKKEYSTATE','PC_GETCARETBLINKTIME','PC_GETCAPSLOCKKEYSTATE','PC_EMPTYBIN','PC_EJECTCD',
- 'PC_DECODECDERROR','PCT','PARSESET$','PARSECOUNT','PARSE$','PARSE','PARAMETERS','OUTSIDE',
- 'OS_WINVERSIONTEXT','OS_WINGETVERSIONTIMELINE','OS_SHELLEXECUTE','OS_SHELLABOUT','OS_SHELL','OS_SETLASTCALLDLLERROR','OS_SERVICESTOP','OS_SERVICESTATUSDESCRIPTION',
- 'OS_SERVICESTARTTYPEDESCRIPTION','OS_SERVICESTART','OS_SERVICESETSTARTTYPE','OS_SERVICEQUERY','OS_SERVICEGETSTARTTYPE','OS_SERVICEGETLIST','OS_PROCESSKILLBYNAME','OS_PROCESSKILLBYID',
- 'OS_PROCESSISRUNNING','OS_PROCESSGETLIST','OS_PROCESSGETID','OS_PROCESSARERUNNING','OS_MESSAGEBEEP','OS_ISWOW64','OS_ISFEATUREPRESENT','OS_IEVERSION',
- 'OS_GETWINDOWSDIR','OS_GETUSERNAME','OS_GETTEMPDIR','OS_GETSYSTEMDIR','OS_GETSPECIALFOLDER','OS_GETLASTCALLDLLSTATUS','OS_GETLASTCALLDLLERROR','OS_GETCURRENTTHREADID',
- 'OS_GETCURRENTPROCESSID','OS_GETCOMPUTERNAME','OS_GETCOMMANDS','OS_GETCOMMAND','OS_FLASHWINDOW','OS_FATALAPPEXIT','OS_ENVIRON','OS_CALLDLL',
- 'OR','OPTIONAL','OPTION','OPT','ONCE','ON','OFF','NUMBER',
- 'NOT','NEXT','NEW','MSGBOX','MOUSEPTR','MODULE','MODELESS','MODAL',
- 'MOD','MKWRD$','MKS$','MKQ$','MKL$','MKI$','MKE$','MKDWD$',
- 'MKD$','MKCUX$','MKCUR$','MKBYT$','MIN$','MIN','MID$','MENU',
- 'MDI_CREATE','MCASE$','MAX$','MAX','MAKWRD','MAKLNG','MAKINT','MAKDWR',
- 'LTRIM$','LSET$','LOWRD','LOOP','LONG','LOINT','LOG_WRITE','LOGB',
- 'LOG2','LOG10','LOG','LOCAL','LOC','LL_UPDATEBYNAME','LL_UPDATE','LL_TOSTRING',
- 'LL_TOFILE','LL_NAME','LL_GETITEM','LL_GETBYNUMBER','LL_FROMFILE','LL_FREE','LL_FINDLAST','LL_FINDBYNAME',
- 'LL_FINDBYDATA','LL_DELETELIKE','LL_DELETEBYNAME','LL_DELETE','LL_DATABYNAME','LL_DATA','LL_COUNT','LL_ADD',
- 'LISTBOX','LINE','LIBRARY_EXISTS','LIB','LEN','LEFT$','LEFT','LCASE$',
- 'LBOUND','LABEL','KILL','JOIN$','ITERATE','ISWINDOW','ISUNICODE','ISTRUE',
- 'ISODD','ISLIKE','ISFALSE','ISEVEN','IP_TOSTRING','IP_ADDR','INTERNALINFO','INTEGER',
- 'INT','INSTR','INSIDE','INPUTBOX$','INI_SETKEY','INI_GETSECTIONSLIST','INI_GETSECTIONKEYLIST','INI_GETKEY',
- 'INET_URLDOWNLOAD','INET_PING','INET_OPENDIALUPDIALOG','INET_GETSTATE','INET_GETREMOTEMACADDRESS','INET_GETIP','INET_GETCONNECTIONMODE','INCR',
- 'IN','IMAGE','IIF$','IIF','IF','ICRYPTO_TESTSHA1','ICRYPTO_TESTMD5','ICRYPTO_TESTCRC32',
- 'ICRYPTO_TESTCRC16','ICRYPTO_STRING2ASCII','ICRYPTO_SHA1','ICRYPTO_MD5','ICRYPTO_ENCRYPTRIJNDAEL','ICRYPTO_ENCRYPTRC4','ICRYPTO_DECRYPTRIJNDAEL','ICRYPTO_DECRYPTRC4',
- 'ICRYPTO_CRC32','ICRYPTO_CRC16','ICRYPTO_BYTEXOR','ICRYPTO_BIN2ASCII','ICRYPTO_ASCII2STRING','ICRYPTO_ASCII2BIN','HOST_ADDR','HOSTNAME_TOIP',
- 'HOSTIP_TONAME','HIWRD','HIINT','HEX$','HASH','HANDLE','GUIDTXT$','GUID$',
- 'GRAPHIC','GLVOID','GLUSHORT','GLUINT','GLUBYTE','GLSIZEI','GLSHORT','GLOBAL',
- 'GLINT','GLFLOAT','GLENUM','GLDOUBLE','GLCLAMPF','GLCLAMPD','GLBYTE','GLBOOLEAN',
- 'GLBITFIELD','GETWINDOWMULTIKEYSTATE','GETWINDOWKEYSTATE','GETTICKCOUNT','GETS','GETMULTIASYNCKEYSTATE','GETMESSAGE','GETCURRENTINSTANCE',
- 'GETAT','GETASYNCKEYSTATE','GET','FUNCTION_NPARAMS','FUNCTION_EXISTS','FUNCTION_CPARAMS','FUNCTION','FTP_SETSTRING',
- 'FTP_SETSERVERDIR','FTP_SETNUMBER','FTP_SETMODE','FTP_SETLOGFILE','FTP_SETLOCALDIR','FTP_QUIT','FTP_PUTFILE','FTP_GETSTRING',
- 'FTP_GETSERVERDIR','FTP_GETNUMBER','FTP_GETLOCALDIR','FTP_GETLIST','FTP_GETFILE','FTP_GETERRORSTRING','FTP_GETERRORNUMBER','FTP_FINISHED',
- 'FTP_EXTRACT','FTP_DELFILE','FTP_CONNECT','FTP_COMMAND','FRAME','FRAC','FORMAT$','FOR',
- 'FONT_LIST','FONT_CREATE','FONT','FOCUS','FLUSH','FIX','FILE_SIZE','FILE_SHELLDELETE',
- 'FILE_SHELLCOPY','FILE_SETDATETIME','FILE_SEEK','FILE_SAVE','FILE_RENAME','FILE_PUT','FILE_PATHSPLIT','FILE_OPEN',
- 'FILE_LOF','FILE_LOAD','FILE_LINEPRINT','FILE_LINEINPUT','FILE_KILL','FILE_GETVERSIONSTRING','FILE_GETVERSION','FILE_GETTIME',
- 'FILE_GETDATETIMESTAMP','FILE_GETDATETIME','FILE_GETDATE','FILE_GET','FILE_EXISTS','FILE_EOF','FILE_COPY','FILE_CLOSE',
- 'FILE_CHANGED','FILE_APPEND','FACTORIAL','EXTRACT$','EXT','EXPORT','EXP2','EXP10',
- 'EXP','EXIT','EVAL_STRING','EVAL_SETSTRING','EVAL_SETNUMBER','EVAL_MATH','EVAL_LINKEXT','EVAL_GETSTRING',
- 'EVAL_GETNUMBER','EVAL_ERRORGETTOKEN','EVAL_ERRORDESCRIPTION','EVAL_ERRORCLEAR','EVAL','ERRCLEAR','ERR','ENGINE_GETCURRENTTOKEN',
- 'ENDIF','END','ENABLE','ELSEIF','ELSE','ECHO','DWORD','DT_YEAR',
- 'DT_TIMETOSEC','DT_TIMESUBSECONDS','DT_TIMEFORMAT','DT_TIMEADDSECONDS','DT_SETTIMESEPARATOR','DT_SETDATESEPARATOR','DT_SETDATECENTURY','DT_SECTOTIME',
- 'DT_SECTODATE','DT_SECOND','DT_MONTH','DT_MINUTE','DT_LASTDAYOFMONTH','DT_ISVALIDDATE','DT_ISLEAPYEAR','DT_HOUR',
- 'DT_GETWEEKDAYNAME','DT_GETWEEKDAY','DT_GETTIMESTAMP','DT_GETTIMESEPARATOR','DT_GETMONTHNAME','DT_GETDATESEPARATOR','DT_GETDATECENTURY','DT_DAY',
- 'DT_DATETOSEC','DT_DATETIMESUBSECONDS','DT_DATETIMEADDSECONDS','DT_DATESUBDAYS','DT_DATEFORMAT','DT_DATEDIFF','DT_DATEADDDAYS','DT_COOKIEDATE',
- 'DRAW','DOUBLE','DOEVENTS','DO','DISABLE','DIR_REMOVE','DIR_MAKEALL','DIR_MAKE',
- 'DIR_LISTARRAY','DIR_LIST','DIR_ISEMPTY','DIR_ISDIR','DIR_GETCURRENT','DIR_EXISTS','DIR_CHANGEDRIVE','DIR_CHANGE',
- 'DIM','DICTIONARY_MEMINFO','DICTIONARY_LISTKEYS','DICTIONARY_FREE','DICTIONARY_FIND','DICTIONARY_EXISTS','DICTIONARY_CREATE','DICTIONARY_COUNT',
- 'DICTIONARY_ADD','DIALOG_STOPEVENTS','DIALOG_SAVEFILE','DIALOG_OPENFILE','DIALOG_GETCONTROL','DIALOG_CHOOSECOLOR','DIALOG_BROWSEFORFOLDER','DIALOG',
- 'DESKTOP','DESCENDING','DESCEND','DELETEOBJECT','DELETE','DEGTORAD','DECR','DECLARE',
- 'DATE$','CVWRD','CVS','CVQ','CVL','CVI','CVE','CVDWD',
- 'CVD','CVCUX','CVCUR','CVBYT','CURRENCY','CUR','CSET$','CSCH',
- 'CSC','CRYPTO_GETPROVIDERTYPESCOUNT','CRYPTO_GETPROVIDERSCOUNT','CRYPTO_GETDEFAULTPROVIDER','CRYPTO_GENRANDOMSTRING','CRYPTO_ENUMPROVIDERTYPES','CRYPTO_ENUMPROVIDERS','CRYPTO_ENCRYPT',
- 'CRYPTO_DECRYPT','CREATEFONT','COTH','COTAN','COSH','COS','CONTROL_SETTEXT','CONTROL_GETTEXT',
- 'CONTROL_GETNUMBER','CONTROL','CONST','CONSOLE_WRITELINE','CONSOLE_WRITE','CONSOLE_WAITKEY','CONSOLE_SHOWWINDOW','CONSOLE_SHOWCURSOR',
- 'CONSOLE_SETTITLE','CONSOLE_SETTEXTATTRIBUTE','CONSOLE_SETSTDHANDLE','CONSOLE_SETSCREENBUFFERSIZE','CONSOLE_SETPROGRESSBARCHAR','CONSOLE_SETOUTPUTMODE','CONSOLE_SETOUTPUTCP','CONSOLE_SETINPUTMODE',
- 'CONSOLE_SETFILEAPISTOOEM','CONSOLE_SETFILEAPISTOANSI','CONSOLE_SETCURSORSIZE','CONSOLE_SETCURSORPOSITION','CONSOLE_SETCP','CONSOLE_SETACTIVESCREENBUFFER','CONSOLE_SCROLLWINDOW','CONSOLE_SCROLLBUFFERONEROW',
- 'CONSOLE_SCROLLBUFFER','CONSOLE_SAVESCREEN','CONSOLE_RESTORESCREEN','CONSOLE_READLINE','CONSOLE_READ','CONSOLE_PROGRESSBAR','CONSOLE_PRINTLINE','CONSOLE_PRINTAT',
- 'CONSOLE_PRINT','CONSOLE_NORMALSCREEN','CONSOLE_LINE','CONSOLE_INKEYB','CONSOLE_INKEY','CONSOLE_HIDECURSOR','CONSOLE_GETTITLE','CONSOLE_GETTEXTATTRIBUTE',
- 'CONSOLE_GETSTDHANDLE','CONSOLE_GETSIZEY','CONSOLE_GETSIZEX','CONSOLE_GETPROGRESSBARCHAR','CONSOLE_GETOUTPUTMODE','CONSOLE_GETOUTPUTCP','CONSOLE_GETNUMBEROFMOUSEBUTTONS','CONSOLE_GETINPUTMODE',
- 'CONSOLE_GETCURSORY','CONSOLE_GETCURSORX','CONSOLE_GETCURSORSIZE','CONSOLE_GETCURRENTFONTINDEX','CONSOLE_GETCP','CONSOLE_GENERATECTRLEVENT','CONSOLE_FULLSCREEN','CONSOLE_FREE',
- 'CONSOLE_FOREGROUNDRGB','CONSOLE_ENABLECTRLC','CONSOLE_DISABLECTRLC','CONSOLE_CREATESCREENBUFFER','CONSOLE_COLORAT','CONSOLE_CLS','CONSOLE_BOX','CONSOLE_BACKGROUNDRGB',
- 'CONSOLE_ATTACH','CONSOLE_AREFILEAPISANSI','CONSOLE_ALLOC','COM_VARIANTINIT','COM_VARIANTCOPY','COM_VARIANTCLEAR','COM_SUCCEEDED','COM_STRINGFROMCLSID',
- 'COM_RELEASE','COM_QUERYINTERFACE','COM_PROGIDFROMCLSID','COM_ISEQUALIID','COM_ISEQUALGUID','COM_ISEQUALCLSID','COM_GETOBJECT','COM_GETENGINEGUID',
- 'COM_EXECUTE','COM_DISPLAYERROR','COM_CREATEOBJECT','COM_CLSIDFROMSTRING','COM_CLSIDFROMPROGID','COM_BUILDVARIANT','COMBOBOX','COMBINATIONS',
- 'COLOR','CLIPBOARD_SETTEXT','CLIPBOARD_GETTEXT','CLIENT','CLEARMESSAGES','CHR$','CHOOSE$','CHOOSE',
- 'CHECKBOX','CHECK3STATE','CHECK','CGI_WRITELOGFILE','CGI_WRITE','CGI_URLDECODESTRING','CGI_UPLOADFILESTIME','CGI_UPLOADFILESNUMBER',
- 'CGI_UPLOADFILESIZE','CGI_STARTSESSION','CGI_SETSESSIONVARIABLE','CGI_RESETDEFAULTSETTINGS','CGI_REMOVESPECIALCHARSPREFIX','CGI_REMOVEQUOTE','CGI_READ','CGI_LOADCONFIGFILE',
- 'CGI_HEADER','CGI_GETSESSIONVARIABLE','CGI_GETREQUESTMETHOD','CGI_GETQUERYVALUE','CGI_GETCURRENTSESSION','CGI_GETCURRENTGUID','CGI_ENVIRON','CGI_CFGSETOPTION',
- 'CGI_CFGGETOPTION','CGI_ADDSPECIALCHARSPREFIX','CGI_ADDQUOTE','CEIL','CASE','CALL','BYVAL','BYTE',
- 'BYREF','BYCMD','BUTTON','BUNDLE_SETSCRIPTPARAMETERS','BUNDLE_SETSCRIPTNAME','BUNDLE_SETFLAGOBFUSCATEMAINSCRIPT','BUNDLE_SETFLAGDELETEAFTERRUN','BUNDLE_SETFLAGCOMPRESSALLFILES',
- 'BUNDLE_SETFLAGASKBEFOREEXTRACT','BUNDLE_SETEXTRACTIONFOLDER','BUNDLE_SETCREATIONFOLDER','BUNDLE_SETBUNDLENAME','BUNDLE_RESET','BUNDLE_MAKE','BUNDLE_BUILDER','BUNDLE_ADDFOLDER',
- 'BUNDLE_ADDFILE','BOUNDCHECK','BIN$','BIFF_WRITETEXT','BIFF_WRITENUMBER','BIFF_WRITEDATE','BIFF_SETROWHEIGHT','BIFF_SETCOLWIDTH',
- 'BIFF_SETBUFFER','BIFF_CREATEFILE','BIFF_CLOSEFILE','BETWEEN','BEEP','BAR','ATTACH','ATN',
- 'AT','ASSIGN','ASCIZ','ASCIIZ','ASCII2UNICODE','ASCENDING','ASCEND','ASC',
- 'AS','ARRAY','ARCTANH','ARCSINH','ARCSIN','ARCSECH','ARCSEC','ARCCSCH',
- 'ARCCSC','ARCCOTH','ARCCOT','ARCCOSH','ARCCOS','APP_TIMER','APP_SOURCEPATH','APP_SOURCENAME',
- 'APP_SOURCEFULLNAME','APP_PATH','APP_NAME','APP_LISTVARIABLES','APP_LISTKEYWORDS','APP_LISTFUNCTIONS','APP_LISTEQUATES','APP_INCLUDEPATH',
- 'APP_GETMODULEFULLPATH','APP_COUNTER','APPEND','ANY','ANIMATE_STOP','ANIMATE_PLAY','ANIMATE_OPEN','AND',
- 'ALIAS','ALERT','ADD','ACODE$','ABS','%DEF','#MINVERSION','#IF',
- '#ENDIF','#ELSEIF','#ELSE','#DEFAULT','#DEF','SQLWRITEPRIVATEPROFILESTRING','SQLWRITEFILEDSN','SQLWRITEDSNTOINI',
- 'SQLVALIDDSN','SQLTRANSACT','SQLTABLES','SQLTABLEPRIVILEGES','SQLSTATISTICS','SQLSPECIALCOLUMNS','SQLSETSTMTOPTION','SQLSETSTMTATTR',
- 'SQLSETSCROLLOPTIONS','SQLSETPOS','SQLSETPARAM','SQLSETENVATTR','SQLSETDESCREC','SQLSETDESCFIELD','SQLSETCURSORNAME','SQLSETCONNECTOPTION',
- 'SQLSETCONNECTATTR','SQLSETCONFIGMODE','SQLROWCOUNT','SQLREMOVETRANSLATOR','SQLREMOVEDSNFROMINI','SQLREMOVEDRIVERMANAGER','SQLREMOVEDRIVER','SQLREADFILEDSN',
- 'SQLPUTDATA','SQLPROCEDURES','SQLPROCEDURECOLUMNS','SQLPRIMARYKEYS','SQLPREPARE','SQLPOSTINSTALLERERROR','SQLPARAMOPTIONS','SQLPARAMDATA',
- 'SQLNUMRESULTCOLS','SQLNUMPARAMS','SQLNATIVESQL','SQLMORERESULTS','SQLMANAGEDATASOURCES','SQLINSTALLTRANSLATOREX','SQLINSTALLERERROR','SQLINSTALLDRIVERMANAGER',
- 'SQLINSTALLDRIVEREX','SQLGETTYPEINFO','SQLGETTRANSLATOR','SQLGETSTMTOPTION','SQLGETSTMTATTR','SQLGETPRIVATEPROFILESTRING','SQLGETINSTALLEDDRIVERS','SQLGETINFO',
- 'SQLGETFUNCTIONS','SQLGETENVATTR','SQLGETDIAGREC','SQLGETDIAGFIELD','SQLGETDESCREC','SQLGETDESCFIELD','SQLGETDATA','SQLGETCURSORNAME',
- 'SQLGETCONNECTOPTION','SQLGETCONNECTATTR','SQLGETCONFIGMODE','SQLFREESTMT','SQLFREEHANDLE','SQLFREEENV','SQLFREECONNECT','SQLFOREIGNKEYS',
- 'SQLFETCHSCROLL','SQLFETCH','SQLEXTENDEDFETCH','SQLEXECUTE','SQLEXECDIRECT','SQLERROR','SQLENDTRAN','SQLDRIVERS',
- 'SQLDRIVERCONNECT','SQLDISCONNECT','SQLDESCRIBEPARAM','SQLDESCRIBECOL','SQLDATASOURCES','SQLCREATEDATASOURCE','SQLCOPYDESC','SQLCONNECT',
- 'SQLCONFIGDRIVER','SQLCONFIGDATASOURCE','SQLCOLUMNS','SQLCOLUMNPRIVILEGES','SQLCOLATTRIBUTES','SQLCOLATTRIBUTE','SQLCLOSECURSOR','SQLCANCEL',
- 'SQLBULKOPERATIONS','SQLBROWSECONNECT','SQLBINDPARAMETER','SQLBINDPARAM','SQLBINDCOL','SQLALLOCSTMT','SQLALLOCHANDLE','SQLALLOCENV',
- 'SQLALLOCCONNECT','ODBCWRONGDRIVER','ODBCWRITEPRIVATEPROFILESTRING','ODBCWRITEFILEDSN','ODBCWRITEDSNTOINI','ODBCVALIDDSN','ODBCUPDATERECORD','ODBCUPDATEBYBOOKMARK',
- 'ODBCUNLOCKRECORD','ODBCUNBINDCOLUMNS','ODBCUNBINDCOL','ODBCTABLESCOUNT','ODBCTABLES','ODBCTABLEPRIVILEGESCOUNT','ODBCTABLEPRIVILEGES','ODBCSUPPORTS',
- 'ODBCSTATTABLESCHEMANAME','ODBCSTATTABLEPAGES','ODBCSTATTABLECATALOGNAME','ODBCSTATTABLECARDINALITY','ODBCSTATISTICSCOUNT','ODBCSTATISTICS','ODBCSTATINDEXSORTSEQUENCE','ODBCSTATINDEXSCHEMANAME',
- 'ODBCSTATINDEXQUALIFIER','ODBCSTATINDEXPAGES','ODBCSTATINDEXFILTERCONDITION','ODBCSTATINDEXCOLUMNORDINALPOSITION','ODBCSTATINDEXCOLUMNNAME','ODBCSTATINDEXCATALOGNAME','ODBCSTATINDEXCARDINALITY','ODBCSTATINDEXALLOWDUPLICATES',
- 'ODBCSPECIALCOLUMNSCOUNT','ODBCSPECIALCOLUMNS','ODBCSETTXNISOLATION','ODBCSETTRANSLATELIB','ODBCSETTRACEFILE','ODBCSETTRACE','ODBCSETSTMTUSEBOOKMARKS','ODBCSETSTMTSIMULATECURSOR',
- 'ODBCSETSTMTROWSTATUSPTR','ODBCSETSTMTROWSFETCHEDPTR','ODBCSETSTMTROWOPERATIONPTR','ODBCSETSTMTROWBINDTYPE','ODBCSETSTMTROWBINDOFFSETPTR','ODBCSETSTMTROWARRAYSIZE','ODBCSETSTMTRETRIEVEDATA','ODBCSETSTMTQUERYTIMEOUT',
- 'ODBCSETSTMTPARAMSTATUSPTR','ODBCSETSTMTPARAMSPROCESSEDPTR','ODBCSETSTMTPARAMSETSIZE','ODBCSETSTMTPARAMOPERATIONPTR','ODBCSETSTMTPARAMBINDTYPE','ODBCSETSTMTPARAMBINDOFFSETPTR','ODBCSETSTMTNOSCAN','ODBCSETSTMTMETADATAID',
- 'ODBCSETSTMTMAXROWS','ODBCSETSTMTMAXLENGTH','ODBCSETSTMTKEYSETSIZE','ODBCSETSTMTFETCHBOOKMARKPTR','ODBCSETSTMTENABLEAUTOIPD','ODBCSETSTMTCURSORTYPE','ODBCSETSTMTCURSORSENSITIVITY','ODBCSETSTMTCURSORSCROLLABLE',
- 'ODBCSETSTMTCONCURRENCY','ODBCSETSTMTATTR','ODBCSETSTMTASYNCENABLE','ODBCSETSTMTAPPROWDESC','ODBCSETSTMTAPPPARAMDESC','ODBCSETSTATICCURSOR','ODBCSETROWVERCONCURRENCY','ODBCSETRESULT',
- 'ODBCSETRELATIVEPOSITION','ODBCSETREADONLYCONCURRENCY','ODBCSETQUIETMODE','ODBCSETPOSITION','ODBCSETPOS','ODBCSETPACKETMODE','ODBCSETOPTIMISTICCONCURRENCY','ODBCSETODBCCURSORS',
- 'ODBCSETMULTIUSERKEYSETCURSOR','ODBCSETMETADATAID','ODBCSETLOGINTIMEOUT','ODBCSETLOCKCONCURRENCY','ODBCSETKEYSETDRIVENCURSOR','ODBCSETFORWARDONLYCURSOR','ODBCSETENVOUTPUTNTS','ODBCSETENVODBCVERSION',
- 'ODBCSETENVCPMATCH','ODBCSETENVCONNECTIONPOOLING','ODBCSETENVATTR','ODBCSETDYNAMICCURSOR','ODBCSETDESCREC','ODBCSETDESCFIELD','ODBCSETCURSORTYPE','ODBCSETCURSORSENSITIVITY',
- 'ODBCSETCURSORSCROLLABILITY','ODBCSETCURSORNAME','ODBCSETCURSORLOCKTYPE','ODBCSETCURSORKEYSETSIZE','ODBCSETCURSORCONCURRENCY','ODBCSETCURRENTCATALOG','ODBCSETCONNECTIONTIMEOUT','ODBCSETCONNECTATTR',
- 'ODBCSETCONFIGMODE','ODBCSETCONCURVALUESCONCURRENCY','ODBCSETAUTOCOMMITON','ODBCSETAUTOCOMMITOFF','ODBCSETAUTOCOMMIT','ODBCSETASYNCENABLE','ODBCSETACCESSMODE','ODBCSETABSOLUTEPOSITION',
- 'ODBCROWCOUNT','ODBCROLLBACKTRAN','ODBCROLLBACKENVTRAN','ODBCROLLBACKDBCTRAN','ODBCRESULT','ODBCRESETPARAMS','ODBCREMOVETRANSLATOR','ODBCREMOVEDSNFROMINI',
- 'ODBCREMOVEDRIVERMANAGER','ODBCREMOVEDRIVER','ODBCREFRESHRECORD','ODBCRECORDCOUNT','ODBCREADFILEDSN','ODBCQUOTEDIDENTIFIERCASE','ODBCPUTDATA','ODBCPROCEDURESCOUNT',
- 'ODBCPROCEDURES','ODBCPROCEDURECOLUMNSCOUNT','ODBCPROCEDURECOLUMNS','ODBCPRIMARYKEYSCOUNT','ODBCPRIMARYKEYS','ODBCPREPARE','ODBCPOSTINSTALLERERROR','ODBCPARAMDATA',
- 'ODBCOPENSTMT','ODBCOPENCONNECTION','ODBCNUMRESULTCOLS','ODBCNUMPARAMS','ODBCNATIVESQL','ODBCMOVEPREVIOUS','ODBCMOVENEXT','ODBCMOVELAST',
- 'ODBCMOVEFIRST','ODBCMOVE','ODBCMORERESULTS','ODBCMANAGEDATASOURCES','ODBCLOCKRECORD','ODBCINSTALLTRANSLATOREX','ODBCINSTALLERERROR','ODBCINSTALLDRIVERMANAGER',
- 'ODBCINSTALLDRIVEREX','ODBCGETXOPENCLIYEAR','ODBCGETUSERNAME','ODBCGETUNION','ODBCGETTYPEINFOCOUNT','ODBCGETTYPEINFO','ODBCGETTXNISOLATIONOPTION','ODBCGETTXNISOLATION',
- 'ODBCGETTXNCAPABLE','ODBCGETTRANSLATOR','ODBCGETTRANSLATELIB','ODBCGETTRACEFILE','ODBCGETTRACE','ODBCGETTIMEDATEFUNCTIONS','ODBCGETTIMEDATEDIFFINTERVALS','ODBCGETTIMEDATEADDINTERVALS',
- 'ODBCGETTABLETERM','ODBCGETSYSTEMFUNCTIONS','ODBCGETSUBQUERIES','ODBCGETSTRINGFUNCTIONS','ODBCGETSTMTUSEBOOKMARKS','ODBCGETSTMTSQLSTATE','ODBCGETSTMTSIMULATECURSOR','ODBCGETSTMTROWSTATUSPTR',
- 'ODBCGETSTMTROWSFETCHEDPTR','ODBCGETSTMTROWOPERATIONPTR','ODBCGETSTMTROWNUMBER','ODBCGETSTMTROWBINDTYPE','ODBCGETSTMTROWBINDOFFSETPTR','ODBCGETSTMTROWARRAYSIZE','ODBCGETSTMTRETRIEVEDATA','ODBCGETSTMTQUERYTIMEOUT',
- 'ODBCGETSTMTPARAMSTATUSPTR','ODBCGETSTMTPARAMSPROCESSEDPTR','ODBCGETSTMTPARAMSETSIZE','ODBCGETSTMTPARAMOPERATIONPTR','ODBCGETSTMTPARAMBINDTYPE','ODBCGETSTMTPARAMBINDOFFSETPTR','ODBCGETSTMTNOSCAN','ODBCGETSTMTMETADATAID',
- 'ODBCGETSTMTMAXROWS','ODBCGETSTMTMAXLENGTH','ODBCGETSTMTKEYSETSIZE','ODBCGETSTMTIMPROWDESC','ODBCGETSTMTIMPPARAMDESC','ODBCGETSTMTFETCHBOOKMARKPTR','ODBCGETSTMTERRORINFO','ODBCGETSTMTENABLEAUTOIPD',
- 'ODBCGETSTMTCURSORTYPE','ODBCGETSTMTCURSORSENSITIVITY','ODBCGETSTMTCURSORSCROLLABLE','ODBCGETSTMTCONCURRENCY','ODBCGETSTMTATTR','ODBCGETSTMTASYNCENABLE','ODBCGETSTMTAPPROWDESC','ODBCGETSTMTAPPPARAMDESC',
- 'ODBCGETSTATICCURSORATTRIBUTES2','ODBCGETSTATICCURSORATTRIBUTES1','ODBCGETSTATEMENTSQLSTATE','ODBCGETSTATEMENTERRORINFO','ODBCGETSTANDARDCLICONFORMANCE','ODBCGETSQLSTATE','ODBCGETSQLCONFORMANCE','ODBCGETSQL92VALUEEXPRESSIONS',
- 'ODBCGETSQL92STRINGFUNCTIONS','ODBCGETSQL92ROWVALUECONSTRUCTOR','ODBCGETSQL92REVOKE','ODBCGETSQL92RELATIONALJOINOPERATORS','ODBCGETSQL92PREDICATES','ODBCGETSQL92NUMERICVALUEFUNCTIONS','ODBCGETSQL92GRANT','ODBCGETSQL92FOREIGNKEYUPDATERULE',
- 'ODBCGETSQL92FOREIGNKEYDELETERULE','ODBCGETSQL92DATETIMEFUNCTIONS','ODBCGETSPECIALCHARACTERS','ODBCGETSERVERNAME','ODBCGETSEARCHPATTERNESCAPE','ODBCGETSCROLLOPTIONS','ODBCGETSCHEMAUSAGE','ODBCGETSCHEMATERM',
- 'ODBCGETROWUPDATES','ODBCGETQUIETMODE','ODBCGETPROCEDURETERM','ODBCGETPROCEDURESSUPPORT','ODBCGETPRIVATEPROFILESTRING','ODBCGETPOSOPERATIONS','ODBCGETPARAMARRAYSELECTS','ODBCGETPARAMARRAYROWCOUNTS',
- 'ODBCGETPACKETMODE','ODBCGETOUTERJOINS','ODBCGETORDERBYCOLUMNSINSELECT','ODBCGETOJCAPABILITIES','ODBCGETODBCVER','ODBCGETODBCINTERFACECONFORMANCE','ODBCGETODBCCURSORS','ODBCGETNUMERICFUNCTIONS',
- 'ODBCGETNULLCOLLATION','ODBCGETNONNULLABLECOLUMNS','ODBCGETNEEDLONGDATALEN','ODBCGETMULTRESULTSETS','ODBCGETMULTIPLEACTIVETXN','ODBCGETMETADATAID','ODBCGETMAXUSERNAMELEN','ODBCGETMAXTABLESINSELECT',
- 'ODBCGETMAXTABLENAMELEN','ODBCGETMAXSTATEMENTLEN','ODBCGETMAXSCHEMANAMELEN','ODBCGETMAXROWSIZEINCLUDESLONG','ODBCGETMAXROWSIZE','ODBCGETMAXPROCEDURENAMELEN','ODBCGETMAXINDEXSIZE','ODBCGETMAXIDENTIFIERLEN',
- 'ODBCGETMAXDRIVERCONNECTIONS','ODBCGETMAXCURSORNAMELEN','ODBCGETMAXCONCURRENTACTIVITIES','ODBCGETMAXCOLUMNSINTABLE','ODBCGETMAXCOLUMNSINSELECT','ODBCGETMAXCOLUMNSINORDERBY','ODBCGETMAXCOLUMNSININDEX','ODBCGETMAXCOLUMNSINGROUPBY',
- 'ODBCGETMAXCOLUMNNAMELEN','ODBCGETMAXCHARLITERALLEN','ODBCGETMAXCATALOGNAMELEN','ODBCGETMAXBINARYLITERALLEN','ODBCGETMAXASYNCCONCURRENTSTATEMENTS','ODBCGETLONGVARCHARDATABYCOLNAME','ODBCGETLONGVARCHARDATA','ODBCGETLOGINTIMEOUT',
- 'ODBCGETLIKEESCAPECLAUSE','ODBCGETKEYWORDS','ODBCGETKEYSETCURSORATTRIBUTES2','ODBCGETKEYSETCURSORATTRIBUTES1','ODBCGETINTEGRITY','ODBCGETINSTALLERERRORMESSAGE','ODBCGETINSTALLERERRORCODE','ODBCGETINSTALLEDDRIVERS',
- 'ODBCGETINSERTSTATEMENT','ODBCGETINFOSTR','ODBCGETINFOSCHEMAVIEWS','ODBCGETINFOLONG','ODBCGETINFOINT','ODBCGETINFO','ODBCGETINDEXKEYWORDS','ODBCGETIMPROWDESCREC',
- 'ODBCGETIMPROWDESCFIELDTYPE','ODBCGETIMPROWDESCFIELDSCALE','ODBCGETIMPROWDESCFIELDPRECISION','ODBCGETIMPROWDESCFIELDOCTETLENGTH','ODBCGETIMPROWDESCFIELDNULLABLE','ODBCGETIMPROWDESCFIELDNAME','ODBCGETIMPROWDESCFIELD','ODBCGETIMPPARAMDESCREC',
- 'ODBCGETIMPPARAMDESCFIELDTYPE','ODBCGETIMPPARAMDESCFIELDSCALE','ODBCGETIMPPARAMDESCFIELDPRECISION','ODBCGETIMPPARAMDESCFIELDOCTETLENGTH','ODBCGETIMPPARAMDESCFIELDNULLABLE','ODBCGETIMPPARAMDESCFIELDNAME','ODBCGETIMPPARAMDESCFIELD','ODBCGETIDENTIFIERQUOTECHAR',
- 'ODBCGETIDENTIFIERCASE','ODBCGETGROUPBY','ODBCGETFUNCTIONS','ODBCGETFORWARDONLYCURSORATTRIBUTES2','ODBCGETFORWARDONLYCURSORATTRIBUTES1','ODBCGETFILEUSAGE','ODBCGETEXPRESSIONSINORDERBY','ODBCGETERRORINFO',
- 'ODBCGETENVSQLSTATE','ODBCGETENVOUTPUTNTS','ODBCGETENVODBCVERSION','ODBCGETENVIRONMENTSQLSTATE','ODBCGETENVIRONMENTERRORINFO','ODBCGETENVERRORINFO','ODBCGETENVCPMATCH','ODBCGETENVCONNECTIONPOOLING',
- 'ODBCGETENVATTR','ODBCGETDYNAMICCURSORATTRIBUTES2','ODBCGETDYNAMICCURSORATTRIBUTES1','ODBCGETDROPVIEW','ODBCGETDROPTRANSLATION','ODBCGETDROPTABLE','ODBCGETDROPSCHEMA','ODBCGETDROPDOMAIN',
- 'ODBCGETDROPCOLLATION','ODBCGETDROPCHARACTERSET','ODBCGETDROPASSERTION','ODBCGETDRIVERVER','ODBCGETDRIVERODBCVER','ODBCGETDRIVERNAME','ODBCGETDRIVERMANAGERINSTALLPATH','ODBCGETDRIVERHLIB',
- 'ODBCGETDRIVERHENV','ODBCGETDRIVERHDBC','ODBCGETDMVERMINOR','ODBCGETDMVERMAJOR','ODBCGETDMVER','ODBCGETDIAGREC','ODBCGETDIAGFIELD','ODBCGETDESCSQLSTATE',
- 'ODBCGETDESCRIPTORSQLSTATE','ODBCGETDESCRIPTORERRORINFO','ODBCGETDESCRIBEPARAMETER','ODBCGETDESCREC','ODBCGETDESCFIELD','ODBCGETDESCERRORINFO','ODBCGETDEFAULTTXNISOLATION','ODBCGETDDLINDEX',
- 'ODBCGETDBMSVER','ODBCGETDBMSNAME','ODBCGETDBCSQLSTATE','ODBCGETDBCERRORINFO','ODBCGETDATETIMELITERALS','ODBCGETDATASTRINGBYCOLNAME','ODBCGETDATASTRING','ODBCGETDATASOURCEREADONLY',
- 'ODBCGETDATASOURCENAME','ODBCGETDATAEXTENSIONS','ODBCGETDATABASENAME','ODBCGETDATA','ODBCGETCURSORTYPE','ODBCGETCURSORSENSITIVITYSUPPORT','ODBCGETCURSORSENSITIVITY','ODBCGETCURSORSCROLLABILITY',
- 'ODBCGETCURSORROLLBACKBEHAVIOR','ODBCGETCURSORNAME','ODBCGETCURSORLOCKTYPE','ODBCGETCURSORKEYSETSIZE','ODBCGETCURSORCONCURRENCY','ODBCGETCURSORCOMMITBEHAVIOR','ODBCGETCURRENTCATALOG','ODBCGETCREATEVIEW',
- 'ODBCGETCREATETRANSLATION','ODBCGETCREATETABLE','ODBCGETCREATESCHEMA','ODBCGETCREATEDOMAIN','ODBCGETCREATECOLLATION','ODBCGETCREATECHARACTERSET','ODBCGETCREATEASSERTION','ODBCGETCORRELATIONNAME',
- 'ODBCGETCONVERTVARCHAR','ODBCGETCONVERTVARBINARY','ODBCGETCONVERTTINYINT','ODBCGETCONVERTTIMESTAMP','ODBCGETCONVERTTIME','ODBCGETCONVERTSMALLINT','ODBCGETCONVERTREAL','ODBCGETCONVERTNUMERIC',
- 'ODBCGETCONVERTLONGVARCHAR','ODBCGETCONVERTLONGVARBINARY','ODBCGETCONVERTINTERVALYEARMONTH','ODBCGETCONVERTINTERVALDAYTIME','ODBCGETCONVERTINTEGER','ODBCGETCONVERTFUNCTIONS','ODBCGETCONVERTFLOAT','ODBCGETCONVERTDOUBLE',
- 'ODBCGETCONVERTDECIMAL','ODBCGETCONVERTDATE','ODBCGETCONVERTCHAR','ODBCGETCONVERTBIT','ODBCGETCONVERTBINARY','ODBCGETCONVERTBIGINT','ODBCGETCONNECTIONTIMEOUT','ODBCGETCONNECTIONSQLSTATE',
- 'ODBCGETCONNECTIONERRORINFO','ODBCGETCONNECTIONDEAD','ODBCGETCONNECTATTR','ODBCGETCONFIGMODE','ODBCGETCONCATNULLBEHAVIOR','ODBCGETCOLUMNALIAS','ODBCGETCOLLATIONSEQ','ODBCGETCATALOGUSAGE',
- 'ODBCGETCATALOGTERM','ODBCGETCATALOGNAMESEPARATOR','ODBCGETCATALOGNAME','ODBCGETCATALOGLOCATION','ODBCGETBOOKMARKPERSISTENCE','ODBCGETBATCHSUPPORT','ODBCGETBATCHROWCOUNT','ODBCGETAUTOIPD',
- 'ODBCGETAUTOCOMMIT','ODBCGETASYNCMODE','ODBCGETASYNCENABLE','ODBCGETALTERTABLE','ODBCGETALTERDOMAIN','ODBCGETAGGREGATEFUNCTIONS','ODBCGETACTIVEENVIRONMENTS','ODBCGETACCESSMODE',
- 'ODBCGETACCESSIBLETABLES','ODBCGETACCESSIBLEPROCEDURES','ODBCFREESTMT','ODBCFREEHANDLE','ODBCFREEENV','ODBCFREEDESC','ODBCFREEDBC','ODBCFREECONNECT',
- 'ODBCFOREIGNKEYSCOUNT','ODBCFOREIGNKEYS','ODBCFETCHSCROLL','ODBCFETCHBYBOOKMARK','ODBCFETCH','ODBCEXTENDEDFETCH','ODBCEXECUTE','ODBCEXECDIRECT',
- 'ODBCERROR','ODBCEOF','ODBCENDTRAN','ODBCDRIVERSCOUNT','ODBCDRIVERS','ODBCDRIVERCONNECT','ODBCDISCONNECT','ODBCDESCRIBEPARAM',
- 'ODBCDESCRIBECOL','ODBCDELETERECORD','ODBCDELETEBYBOOKMARK','ODBCDATASOURCES','ODBCCREATEDATASOURCE','ODBCCOPYDESC','ODBCCONNECTIONISDEAD','ODBCCONNECTIONISALIVE',
- 'ODBCCONNECT','ODBCCONFIGDRIVER','ODBCCONFIGDATASOURCE','ODBCCOMMITTRAN','ODBCCOMMITENVTRAN','ODBCCOMMITDBCTRAN','ODBCCOLUPDATABLE','ODBCCOLUNSIGNED',
- 'ODBCCOLUNNAMED','ODBCCOLUMNSCOUNT','ODBCCOLUMNS','ODBCCOLUMNPRIVILEGESCOUNT','ODBCCOLUMNPRIVILEGES','ODBCCOLUMN','ODBCCOLTYPENAME','ODBCCOLTYPE',
- 'ODBCCOLTABLENAME','ODBCCOLSEARCHABLE','ODBCCOLSCHEMANAME','ODBCCOLSCALE','ODBCCOLPRECISION','ODBCCOLOCTETLENGTH','ODBCCOLNUMPRECRADIX','ODBCCOLNULLABLE',
- 'ODBCCOLNAME','ODBCCOLLOCALTYPENAME','ODBCCOLLITERALSUFFIX','ODBCCOLLITERALPREFIX','ODBCCOLLENGTH','ODBCCOLLABEL','ODBCCOLISNULL','ODBCCOLFIXEDPRECSCALE',
- 'ODBCCOLDISPLAYSIZE','ODBCCOLCOUNT','ODBCCOLCONCISETYPE','ODBCCOLCATALOGNAME','ODBCCOLCASESENSITIVE','ODBCCOLBASETABLENAME','ODBCCOLBASECOLUMNNAME','ODBCCOLAUTOUNIQUEVALUE',
- 'ODBCCOLATTRIBUTE','ODBCCLOSESTMTCURSOR','ODBCCLOSESTMT','ODBCCLOSECURSOR','ODBCCLOSECONNECTION','ODBCCLEARRESULT','ODBCCANCEL','ODBCBULKOPERATIONS',
- 'ODBCBROWSECONNECT','ODBCBINDPARAMETER','ODBCBINDCOLTOWORD','ODBCBINDCOLTOTIMESTAMP','ODBCBINDCOLTOTIME','ODBCBINDCOLTOSTRING','ODBCBINDCOLTOSINGLE','ODBCBINDCOLTOQUAD',
- 'ODBCBINDCOLTONUMERIC','ODBCBINDCOLTOLONG','ODBCBINDCOLTOINTEGER','ODBCBINDCOLTODWORD','ODBCBINDCOLTODOUBLE','ODBCBINDCOLTODECIMAL','ODBCBINDCOLTODATE','ODBCBINDCOLTOCURRENCY',
- 'ODBCBINDCOLTOBYTE','ODBCBINDCOLTOBIT','ODBCBINDCOLTOBINARY','ODBCBINDCOL','ODBCALLOCSTMT','ODBCALLOCHANDLE','ODBCALLOCENV','ODBCALLOCDESC',
- 'ODBCALLOCDBC','ODBCALLOCCONNECT','ODBCADDRECORD','GLVIEWPORT','GLVERTEXPOINTER','GLVERTEX4SV','GLVERTEX4S','GLVERTEX4IV',
- 'GLVERTEX4I','GLVERTEX4FV','GLVERTEX4F','GLVERTEX4DV','GLVERTEX4D','GLVERTEX3SV','GLVERTEX3S','GLVERTEX3IV',
- 'GLVERTEX3I','GLVERTEX3FV','GLVERTEX3F','GLVERTEX3DV','GLVERTEX3D','GLVERTEX2SV','GLVERTEX2S','GLVERTEX2IV',
- 'GLVERTEX2I','GLVERTEX2FV','GLVERTEX2F','GLVERTEX2DV','GLVERTEX2D','GLUUNPROJECT','GLUTESSVERTEX','GLUTESSPROPERTY',
- 'GLUTESSNORMAL','GLUTESSENDPOLYGON','GLUTESSENDCONTOUR','GLUTESSCALLBACK','GLUTESSBEGINPOLYGON','GLUTESSBEGINCONTOUR','GLUSPHERE','GLUSCALEIMAGE',
- 'GLUQUADRICTEXTURE','GLUQUADRICORIENTATION','GLUQUADRICNORMALS','GLUQUADRICDRAWSTYLE','GLUQUADRICCALLBACK','GLUPWLCURVE','GLUPROJECT','GLUPICKMATRIX',
- 'GLUPERSPECTIVE','GLUPARTIALDISK','GLUORTHO2D','GLUNURBSSURFACE','GLUNURBSPROPERTY','GLUNURBSCURVE','GLUNURBSCALLBACK','GLUNEXTCONTOUR',
- 'GLUNEWTESS','GLUNEWQUADRIC','GLUNEWNURBSRENDERER','GLULOOKAT','GLULOADSAMPLINGMATRICES','GLUGETTESSPROPERTY','GLUGETSTRING','GLUGETNURBSPROPERTY',
- 'GLUERRORSTRING','GLUENDTRIM','GLUENDSURFACE','GLUENDPOLYGON','GLUENDCURVE','GLUDISK','GLUDELETETESS','GLUDELETEQUADRIC',
- 'GLUDELETENURBSRENDERER','GLUCYLINDER','GLUBUILD2DMIPMAPS','GLUBUILD1DMIPMAPS','GLUBEGINTRIM','GLUBEGINSURFACE','GLUBEGINPOLYGON','GLUBEGINCURVE',
- 'GLTRANSLATEF','GLTRANSLATED','GLTEXSUBIMAGE2D','GLTEXSUBIMAGE1D','GLTEXPARAMETERIV','GLTEXPARAMETERI','GLTEXPARAMETERFV','GLTEXPARAMETERF',
- 'GLTEXIMAGE2D','GLTEXIMAGE1D','GLTEXGENIV','GLTEXGENI','GLTEXGENFV','GLTEXGENF','GLTEXGENDV','GLTEXGEND',
- 'GLTEXENVIV','GLTEXENVI','GLTEXENVFV','GLTEXENVF','GLTEXCOORDPOINTER','GLTEXCOORD4SV','GLTEXCOORD4S','GLTEXCOORD4IV',
- 'GLTEXCOORD4I','GLTEXCOORD4FV','GLTEXCOORD4F','GLTEXCOORD4DV','GLTEXCOORD4D','GLTEXCOORD3SV','GLTEXCOORD3S','GLTEXCOORD3IV',
- 'GLTEXCOORD3I','GLTEXCOORD3FV','GLTEXCOORD3F','GLTEXCOORD3DV','GLTEXCOORD3D','GLTEXCOORD2SV','GLTEXCOORD2S','GLTEXCOORD2IV',
- 'GLTEXCOORD2I','GLTEXCOORD2FV','GLTEXCOORD2F','GLTEXCOORD2DV','GLTEXCOORD2D','GLTEXCOORD1SV','GLTEXCOORD1S','GLTEXCOORD1IV',
- 'GLTEXCOORD1I','GLTEXCOORD1FV','GLTEXCOORD1F','GLTEXCOORD1DV','GLTEXCOORD1D','GLSTENCILOP','GLSTENCILMASK','GLSTENCILFUNC',
- 'GLSHADEMODEL','GLSELECTBUFFER','GLSCISSOR','GLSCALEF','GLSCALED','GLROTATEF','GLROTATED','GLRENDERMODE',
- 'GLRECTSV','GLRECTS','GLRECTIV','GLRECTI','GLRECTFV','GLRECTF','GLRECTDV','GLRECTD',
- 'GLREADPIXELS','GLREADBUFFER','GLRASTERPOS4SV','GLRASTERPOS4S','GLRASTERPOS4IV','GLRASTERPOS4I','GLRASTERPOS4FV','GLRASTERPOS4F',
- 'GLRASTERPOS4DV','GLRASTERPOS4D','GLRASTERPOS3SV','GLRASTERPOS3S','GLRASTERPOS3IV','GLRASTERPOS3I','GLRASTERPOS3FV','GLRASTERPOS3F',
- 'GLRASTERPOS3DV','GLRASTERPOS3D','GLRASTERPOS2SV','GLRASTERPOS2S','GLRASTERPOS2IV','GLRASTERPOS2I','GLRASTERPOS2FV','GLRASTERPOS2F',
- 'GLRASTERPOS2DV','GLRASTERPOS2D','GLPUSHNAME','GLPUSHMATRIX','GLPUSHCLIENTATTRIB','GLPUSHATTRIB','GLPRIORITIZETEXTURES','GLPOPNAME',
- 'GLPOPMATRIX','GLPOPCLIENTATTRIB','GLPOPATTRIB','GLPOLYGONSTIPPLE','GLPOLYGONOFFSET','GLPOLYGONMODE','GLPOINTSIZE','GLPIXELZOOM',
- 'GLPIXELTRANSFERI','GLPIXELTRANSFERF','GLPIXELSTOREI','GLPIXELSTOREF','GLPIXELMAPUSV','GLPIXELMAPUIV','GLPIXELMAPFV','GLPASSTHROUGH',
- 'GLORTHO','GLNORMALPOINTER','GLNORMAL3SV','GLNORMAL3S','GLNORMAL3IV','GLNORMAL3I','GLNORMAL3FV','GLNORMAL3F',
- 'GLNORMAL3DV','GLNORMAL3D','GLNORMAL3BV','GLNORMAL3B','GLNEWLIST','GLMULTMATRIXF','GLMULTMATRIXD','GLMATRIXMODE',
- 'GLMATERIALIV','GLMATERIALI','GLMATERIALFV','GLMATERIALF','GLMAPGRID2F','GLMAPGRID2D','GLMAPGRID1F','GLMAPGRID1D',
- 'GLMAP2F','GLMAP2D','GLMAP1F','GLMAP1D','GLLOGICOP','GLLOADNAME','GLLOADMATRIXF','GLLOADMATRIXD',
- 'GLLOADIDENTITY','GLLISTBASE','GLLINEWIDTH','GLLINESTIPPLE','GLLIGHTMODELIV','GLLIGHTMODELI','GLLIGHTMODELFV','GLLIGHTMODELF',
- 'GLLIGHTIV','GLLIGHTI','GLLIGHTFV','GLLIGHTF','GLISTEXTURE','GLISLIST','GLISENABLED','GLINTERLEAVEDARRAYS',
- 'GLINITNAMES','GLINDEXUBV','GLINDEXUB','GLINDEXSV','GLINDEXS','GLINDEXPOINTER','GLINDEXMASK','GLINDEXIV',
- 'GLINDEXI','GLINDEXFV','GLINDEXF','GLINDEXDV','GLINDEXD','GLHINT','GLGETTEXPARAMETERIV','GLGETTEXPARAMETERFV',
- 'GLGETTEXLEVELPARAMETERIV','GLGETTEXLEVELPARAMETERFV','GLGETTEXIMAGE','GLGETTEXGENIV','GLGETTEXGENFV','GLGETTEXGENDV','GLGETTEXENVIV','GLGETTEXENVFV',
- 'GLGETSTRING','GLGETPOLYGONSTIPPLE','GLGETPOINTERV','GLGETPIXELMAPUSV','GLGETPIXELMAPUIV','GLGETPIXELMAPFV','GLGETMATERIALIV','GLGETMATERIALFV',
- 'GLGETMAPIV','GLGETMAPFV','GLGETMAPDV','GLGETLIGHTIV','GLGETLIGHTFV','GLGETINTEGERV','GLGETFLOATV','GLGETERROR',
- 'GLGETDOUBLEV','GLGETCLIPPLANE','GLGETBOOLEANV','GLGENTEXTURES','GLGENLISTS','GLFRUSTUM','GLFRONTFACE','GLFOGIV',
- 'GLFOGI','GLFOGFV','GLFOGF','GLFLUSH','GLFINISH','GLFEEDBACKBUFFER','GLEVALPOINT2','GLEVALPOINT1',
- 'GLEVALMESH2','GLEVALMESH1','GLEVALCOORD2FV','GLEVALCOORD2F','GLEVALCOORD2DV','GLEVALCOORD2D','GLEVALCOORD1FV','GLEVALCOORD1F',
- 'GLEVALCOORD1DV','GLEVALCOORD1D','GLENDLIST','GLEND','GLENABLECLIENTSTATE','GLENABLE','GLEDGEFLAGV','GLEDGEFLAGPOINTER',
- 'GLEDGEFLAG','GLDRAWPIXELS','GLDRAWELEMENTS','GLDRAWBUFFER','GLDRAWARRAYS','GLDISABLECLIENTSTATE','GLDISABLE','GLDEPTHRANGE',
- 'GLDEPTHMASK','GLDEPTHFUNC','GLDELETETEXTURES','GLDELETELISTS','GLCULLFACE','GLCOPYTEXSUBIMAGE2D','GLCOPYTEXSUBIMAGE1D','GLCOPYTEXIMAGE2D',
- 'GLCOPYTEXIMAGE1D','GLCOPYPIXELS','GLCOLORPOINTER','GLCOLORMATERIAL','GLCOLORMASK','GLCOLOR4USV','GLCOLOR4US','GLCOLOR4UIV',
- 'GLCOLOR4UI','GLCOLOR4UBV','GLCOLOR4UB','GLCOLOR4SV','GLCOLOR4S','GLCOLOR4IV','GLCOLOR4I','GLCOLOR4FV',
- 'GLCOLOR4F','GLCOLOR4DV','GLCOLOR4D','GLCOLOR4BV','GLCOLOR4B','GLCOLOR3USV','GLCOLOR3US','GLCOLOR3UIV',
- 'GLCOLOR3UI','GLCOLOR3UBV','GLCOLOR3UB','GLCOLOR3SV','GLCOLOR3S','GLCOLOR3IV','GLCOLOR3I','GLCOLOR3FV',
- 'GLCOLOR3F','GLCOLOR3DV','GLCOLOR3D','GLCOLOR3BV','GLCOLOR3B','GLCLIPPLANE','GLCLEARSTENCIL','GLCLEARINDEX',
- 'GLCLEARDEPTH','GLCLEARCOLOR','GLCLEARACCUM','GLCLEAR','GLCALLLISTS','GLCALLLIST','GLBLENDFUNC','GLBITMAP',
- 'GLBINDTEXTURE','GLBEGIN','GLARRAYELEMENT','GLARETEXTURESRESIDENT','GLALPHAFUNC','GLACCUM'),
- 2 => array(
- '$BEL','$BS','$CR','$CRLF','$DQ','$DT_DATE_SEPARATOR','$DT_LANGUAGE','$DT_TIME_SEPARATOR',
- '$ESC','$FF','$LF','$NUL','$PC_SD_MY_PC','$SPC','$SQL_OPT_TRACE_FILE_DEFAULT','$SQL_SPEC_STRING',
- '$TAB','$TRACKBAR_CLASS','$VT','%ACM_OPEN','%ACM_OPENW','%ACM_PLAY','%ACM_STOP','%ACN_START',
- '%ACN_STOP','%ACS_AUTOPLAY','%ACS_CENTER','%ACS_TIMER','%ACS_TRANSPARENT','%APP_COUNTER_FUNLOOKUP','%APP_COUNTER_KEYLOOKUP','%APP_COUNTER_LOOKUP',
- '%APP_COUNTER_TESTALPHA','%APP_COUNTER_UDTLOOKUP','%APP_COUNTER_VARLOOKUP','%APP_TIMER_EXECTOTAL','%APP_TIMER_INIT','%APP_TIMER_LOAD','%APP_TIMER_PREPROCESSOR','%AW_ACTIVATE',
- '%AW_BLEND','%AW_CENTER','%AW_HIDE','%AW_HOR_NEGATIVE','%AW_HOR_POSITIVE','%AW_SLIDE','%AW_VER_NEGATIVE','%AW_VER_POSITIVE',
- '%BCM_FIRST','%BLACK','%BLUE','%BM_GETCHECK','%BM_SETCHECK','%BST_CHECKED','%BST_UNCHECKED','%BS_AUTOCHECKBOX',
- '%BS_BOTTOM','%BS_CENTER','%BS_DEFAULT','%BS_DEFPUSHBUTTON','%BS_FLAT','%BS_LEFT','%BS_LEFTTEXT','%BS_MULTILINE',
- '%BS_NOTIFY','%BS_OWNERDRAW','%BS_PUSHLIKE','%BS_RIGHT','%BS_TOP','%BS_VCENTER','%BUNDLE_BUILDER_CANCELLED','%CBM_FIRST',
- '%CBN_CLOSEUP','%CBN_DBLCLK','%CBN_DROPDOWN','%CBN_EDITCHANGE','%CBN_EDITUPDATE','%CBN_ERRSPACE','%CBN_KILLFOCUS','%CBN_SELCANCEL',
- '%CBN_SELCHANGE','%CBN_SELENDCANCEL','%CBN_SELENDOK','%CBN_SETFOCUS','%CBS_AUTOHSCROLL','%CBS_DISABLENOSCROLL','%CBS_DROPDOWN','%CBS_DROPDOWNLIST',
- '%CBS_HASSTRINGS','%CBS_LOWERCASE','%CBS_NOINTEGRALHEIGHT','%CBS_SIMPLE','%CBS_SORT','%CBS_UPPERCASE','%CB_SELECTSTRING','%CCM_FIRST',
- '%CC_ANYCOLOR','%CC_ENABLEHOOK','%CC_ENABLETEMPLATE','%CC_ENABLETEMPLATEHANDLE','%CC_FULLOPEN','%CC_PREVENTFULLOPEN','%CC_RGBINIT','%CC_SHOWHELP',
- '%CC_SOLIDCOLOR','%CFE_BOLD','%CFE_ITALIC','%CFE_LINK','%CFE_PROTECTED','%CFE_STRIKEOUT','%CFE_UNDERLINE','%CFM_ANIMATION',
- '%CFM_BACKCOLOR','%CFM_BOLD','%CFM_CHARSET','%CFM_COLOR','%CFM_FACE','%CFM_ITALIC','%CFM_KERNING','%CFM_LCID',
- '%CFM_LINK','%CFM_OFFSET','%CFM_PROTECTED','%CFM_REVAUTHOR','%CFM_SIZE','%CFM_SPACING','%CFM_STRIKEOUT','%CFM_STYLE',
- '%CFM_UNDERLINE','%CFM_UNDERLINETYPE','%CFM_WEIGHT','%CGI_ACCEPT_FILE_UPLOAD','%CGI_AUTO_ADD_SPECIAL_CHARS_PREFIX','%CGI_AUTO_CREATE_VARS','%CGI_BUFFERIZE_OUTPUT','%CGI_DOUBLE_QUOTE',
- '%CGI_FILE_UPLOAD_BASEPATH','%CGI_FORCE_SESSION_VALIDATION','%CGI_MAX_BYTE_FROM_STD_IN','%CGI_REQUEST_METHOD_GET','%CGI_REQUEST_METHOD_POST','%CGI_SESSION_FILE_BASEPATH','%CGI_SINGLE_QUOTE','%CGI_SPECIAL_CHARS_PREFIX',
- '%CGI_TEMPORARY_UPLOAD_PATH','%CGI_UPLOAD_CAN_OVERWRITE','%CGI_WRITE_LOG_FILE','%CGI_WRITE_VARS_INTO_LOG_FILE','%CONOLE_ATTACH_PARENT_PROCESS','%CONSOLE_BACKGROUND_BLUE','%CONSOLE_BACKGROUND_GREEN','%CONSOLE_BACKGROUND_INTENSITY',
- '%CONSOLE_BACKGROUND_RED','%CONSOLE_BOX_FLAG_3DOFF','%CONSOLE_BOX_FLAG_3DON','%CONSOLE_BOX_FLAG_SHADOW','%CONSOLE_COMMON_LVB_GRID_HORIZONTAL','%CONSOLE_COMMON_LVB_GRID_LVERTICAL','%CONSOLE_COMMON_LVB_GRID_RVERTICAL','%CONSOLE_COMMON_LVB_LEADING_BYTE',
- '%CONSOLE_COMMON_LVB_REVERSE_VIDEO','%CONSOLE_COMMON_LVB_TRAILING_BYTE','%CONSOLE_COMMON_LVB_UNDERSCORE','%CONSOLE_CTRL_BREAK_EVENT','%CONSOLE_CTRL_C_EVENT','%CONSOLE_DOUBLE_CLICK','%CONSOLE_ENABLE_AUTO_POSITION','%CONSOLE_ENABLE_ECHO_INPUT',
- '%CONSOLE_ENABLE_EXTENDED_FLAGS','%CONSOLE_ENABLE_INSERT_MODE','%CONSOLE_ENABLE_LINE_INPUT','%CONSOLE_ENABLE_MOUSE_INPUT','%CONSOLE_ENABLE_PROCESSED_INPUT','%CONSOLE_ENABLE_PROCESSED_OUTPUT','%CONSOLE_ENABLE_QUICK_EDIT_MODE','%CONSOLE_ENABLE_WINDOW_INPUT',
- '%CONSOLE_ENABLE_WRAP_AT_EOL_OUTPUT','%CONSOLE_FOREGROUND_BLUE','%CONSOLE_FOREGROUND_GREEN','%CONSOLE_FOREGROUND_INTENSITY','%CONSOLE_FOREGROUND_RED','%CONSOLE_LBUTTON','%CONSOLE_LINE_HORIZONTAL','%CONSOLE_LINE_VERTICAL',
- '%CONSOLE_MBUTTON','%CONSOLE_MOUSE_MOVED','%CONSOLE_MOUSE_WHEELED','%CONSOLE_RBUTTON','%CONSOLE_SCROLLBUF_DOWN','%CONSOLE_SCROLLBUF_UP','%CONSOLE_SCROLLWND_ABSOLUTE','%CONSOLE_SCROLLWND_RELATIVE',
- '%CONSOLE_STD_ERROR_HANDLE','%CONSOLE_STD_INPUT_HANDLE','%CONSOLE_STD_OUTPUT_HANDLE','%CONSOLE_SW_FORCEMINIMIZE','%CONSOLE_SW_HIDE','%CONSOLE_SW_MAXIMIZE','%CONSOLE_SW_MINIMIZE','%CONSOLE_SW_RESTORE',
- '%CONSOLE_SW_SHOW','%CONSOLE_SW_SHOWDEFAULT','%CONSOLE_SW_SHOWMAXIMIZED','%CONSOLE_SW_SHOWMINIMIZED','%CONSOLE_SW_SHOWMINNOACTIVE','%CONSOLE_SW_SHOWNA','%CONSOLE_SW_SHOWNOACTIVATE','%CONSOLE_SW_SHOWNORMAL',
- '%CONSOLE_UNAVAILABLE','%CRYPTO_CALG_DES','%CRYPTO_CALG_RC2','%CRYPTO_CALG_RC4','%CRYPTO_PROV_DH_SCHANNEL','%CRYPTO_PROV_DSS','%CRYPTO_PROV_DSS_DH','%CRYPTO_PROV_FORTEZZA',
- '%CRYPTO_PROV_MS_EXCHANGE','%CRYPTO_PROV_RSA_FULL','%CRYPTO_PROV_RSA_SCHANNEL','%CRYPTO_PROV_RSA_SIG','%CRYPTO_PROV_SSL','%CSIDL_ADMINTOOLS','%CSIDL_ALTSTARTUP','%CSIDL_APPDATA',
- '%CSIDL_BITBUCKET','%CSIDL_CDBURN_AREA','%CSIDL_COMMON_ADMINTOOLS','%CSIDL_COMMON_ALTSTARTUP','%CSIDL_COMMON_APPDATA','%CSIDL_COMMON_DESKTOPDIRECTORY','%CSIDL_COMMON_DOCUMENTS','%CSIDL_COMMON_FAVORITES',
- '%CSIDL_COMMON_MUSIC','%CSIDL_COMMON_PICTURES','%CSIDL_COMMON_PROGRAMS','%CSIDL_COMMON_STARTMENU','%CSIDL_COMMON_STARTUP','%CSIDL_COMMON_TEMPLATES','%CSIDL_COMMON_VIDEO','%CSIDL_CONTROLS',
- '%CSIDL_COOKIES','%CSIDL_DESKTOP','%CSIDL_DESKTOPDIRECTORY','%CSIDL_DRIVES','%CSIDL_FAVORITES','%CSIDL_FLAG_CREATE','%CSIDL_FONTS','%CSIDL_HISTORY',
- '%CSIDL_INTERNET','%CSIDL_INTERNET_CACHE','%CSIDL_LOCAL_APPDATA','%CSIDL_MYDOCUMENTS','%CSIDL_MYMUSIC','%CSIDL_MYPICTURES','%CSIDL_MYVIDEO','%CSIDL_NETHOOD',
- '%CSIDL_NETWORK','%CSIDL_PERSONAL','%CSIDL_PRINTERS','%CSIDL_PRINTHOOD','%CSIDL_PROFILE','%CSIDL_PROGRAMS','%CSIDL_PROGRAM_FILES','%CSIDL_PROGRAM_FILES_COMMON',
- '%CSIDL_RECENT','%CSIDL_SENDTO','%CSIDL_STARTMENU','%CSIDL_STARTUP','%CSIDL_SYSTEM','%CSIDL_TEMPLATES','%CSIDL_WINDOWS','%CW_USEDEFAULT',
- '%CYAN','%DATE_TIME_FILE_CREATION','%DATE_TIME_LAST_FILE_ACCESS','%DATE_TIME_LAST_FILE_WRITE','%DICTIONARY_MEMINFO_DATA','%DICTIONARY_MEMINFO_KEYS','%DICTIONARY_MEMINFO_TOTAL','%DICTIONARY_SORTDESCENDING',
- '%DICTIONARY_SORTKEYS','%DSCAPS_CERTIFIED','%DSCAPS_CONTINUOUSRATE','%DSCAPS_EMULDRIVER','%DSCAPS_SECONDARY16BIT','%DSCAPS_SECONDARY8BIT','%DSCAPS_SECONDARYMONO','%DSCAPS_SECONDARYSTEREO',
- '%DSCCAPS_CERTIFIED','%DSCCAPS_EMULDRIVER','%DS_3DLOOK','%DS_ABSALIGN','%DS_CENTER','%DS_CENTERMOUSE','%DS_CONTEXTHELP','%DS_CONTROL',
- '%DS_MODALFRAME','%DS_NOFAILCREATE','%DS_SETFONT','%DS_SETFOREGROUND','%DS_SYSMODAL','%DTM_FIRST','%DTM_GETMCCOLOR','%DTM_GETMCFONT',
- '%DTM_GETMONTHCAL','%DTM_GETRANGE','%DTM_GETSYSTEMTIME','%DTM_SETFORMAT','%DTM_SETFORMATW','%DTM_SETMCCOLOR','%DTM_SETMCFONT','%DTM_SETRANGE',
- '%DTM_SETSYSTEMTIME','%DTN_CLOSEUP','%DTN_DATETIMECHANGE','%DTN_DROPDOWN','%DTN_FORMAT','%DTN_FORMATQUERY','%DTN_FORMATQUERYW','%DTN_FORMATW',
- '%DTN_USERSTRING','%DTN_USERSTRINGW','%DTN_WMKEYDOWN','%DTN_WMKEYDOWNW','%DTS_APPCANPARSE','%DTS_LONGDATEFORMAT','%DTS_RIGHTALIGN','%DTS_SHORTDATECENTURYFORMAT',
- '%DTS_SHORTDATEFORMAT','%DTS_SHOWNONE','%DTS_TIMEFORMAT','%DTS_UPDOWN','%DT_DATE_CENTURY','%DT_DATE_OK','%DT_DAY_IN_YEAR','%DT_DIFF_IN_DAYS',
- '%DT_DIFF_IN_HOURS','%DT_DIFF_IN_MINUTES','%DT_DIFF_IN_SECONDS','%DT_HOURS_IN_DAY','%DT_MINUTES_IN_HOUR','%DT_SECONDS_IN_DAY','%DT_SECONDS_IN_HOUR','%DT_SECONDS_IN_MINUTE',
- '%DT_SECONDS_IN_YEAR','%DT_USE_LONG_FORM','%DT_USE_SHORT_FORM','%DT_WRONG_DATE','%DT_WRONG_DAY','%DT_WRONG_MONTH','%ECM_FIRST','%ECOOP_AND',
- '%ECOOP_OR','%ECOOP_SET','%ECOOP_XOR','%ECO_AUTOHSCROLL','%ECO_AUTOVSCROLL','%ECO_AUTOWORDSELECTION','%ECO_NOHIDESEL','%ECO_READONLY',
- '%ECO_SELECTIONBAR','%ECO_WANTRETURN','%EM_AUTOURLDETECT','%EM_CANPASTE','%EM_CANREDO','%EM_CANUNDO','%EM_CHARFROMPOS','%EM_DISPLAYBAND',
- '%EM_EMPTYUNDOBUFFER','%EM_EXGETSEL','%EM_EXLIMITTEXT','%EM_EXLINEFROMCHAR','%EM_EXSETSEL','%EM_FINDTEXT','%EM_FINDTEXTEX','%EM_FINDWORDBREAK',
- '%EM_FMTLINES','%EM_FORMATRANGE','%EM_GETAUTOURLDETECT','%EM_GETCHARFORMAT','%EM_GETEDITSTYLE','%EM_GETEVENTMASK','%EM_GETFIRSTVISIBLELINE','%EM_GETHANDLE',
- '%EM_GETIMESTATUS','%EM_GETLIMITTEXT','%EM_GETLINE','%EM_GETLINECOUNT','%EM_GETMARGINS','%EM_GETMODIFY','%EM_GETOLEINTERFACE','%EM_GETOPTIONS',
- '%EM_GETPARAFORMAT','%EM_GETPASSWORDCHAR','%EM_GETRECT','%EM_GETREDONAME','%EM_GETSCROLLPOS','%EM_GETSEL','%EM_GETSELTEXT','%EM_GETTEXTMODE',
- '%EM_GETTEXTRANGE','%EM_GETTHUMB','%EM_GETUNDONAME','%EM_GETWORDBREAKPROC','%EM_GETWORDBREAKPROCEX','%EM_HIDESELECTION','%EM_LIMITTEXT','%EM_LINEFROMCHAR',
- '%EM_LINEINDEX','%EM_LINELENGTH','%EM_LINESCROLL','%EM_PASTESPECIAL','%EM_POSFROMCHAR','%EM_REDO','%EM_REPLACESEL','%EM_REQUESTRESIZE',
- '%EM_SCROLL','%EM_SCROLLCARET','%EM_SELECTIONTYPE','%EM_SETBKGNDCOLOR','%EM_SETCHARFORMAT','%EM_SETEDITSTYLE','%EM_SETEVENTMASK','%EM_SETHANDLE',
- '%EM_SETIMESTATUS','%EM_SETLIMITTEXT','%EM_SETMARGINS','%EM_SETMODIFY','%EM_SETOLECALLBACK','%EM_SETOPTIONS','%EM_SETPARAFORMAT','%EM_SETPASSWORDCHAR',
- '%EM_SETREADONLY','%EM_SETRECT','%EM_SETRECTNP','%EM_SETSCROLLPOS','%EM_SETSEL','%EM_SETTABSTOPS','%EM_SETTARGETDEVICE','%EM_SETTEXTMODE',
- '%EM_SETUNDOLIMIT','%EM_SETWORDBREAKPROC','%EM_SETWORDBREAKPROCEX','%EM_SETWORDWRAPMODE','%EM_SETZOOM','%EM_STOPGROUPTYPING','%EM_STREAMIN','%EM_STREAMOUT',
- '%EM_UNDO','%ENM_CHANGE','%ENM_CORRECTTEXT','%ENM_DRAGDROPDONE','%ENM_DROPFILES','%ENM_KEYEVENTS','%ENM_MOUSEEVENTS','%ENM_NONE',
- '%ENM_PARAGRAPHEXPANDED','%ENM_PROTECTED','%ENM_REQUESTRESIZE','%ENM_SCROLL','%ENM_SCROLLEVENTS','%ENM_SELCHANGE','%ENM_UPDATE','%EN_CHANGE',
- '%EN_MSGFILTER','%EN_SELCHANGE','%EN_UPDATE','%ES_AUTOHSCROLL','%ES_AUTOVSCROLL','%ES_CENTER','%ES_DISABLENOSCROLL','%ES_EX_NOCALLOLEINIT',
- '%ES_LEFT','%ES_LOWERCASE','%ES_MULTILINE','%ES_NOHIDESEL','%ES_NOOLEDRAGDROP','%ES_NUMBER','%ES_OEMCONVERT','%ES_PASSWORD',
- '%ES_READONLY','%ES_RIGHT','%ES_SAVESEL','%ES_SELECTIONBAR','%ES_SUNKEN','%ES_UPPERCASE','%ES_WANTRETURN','%EVAL_EXEC_STRING',
- '%FALSE','%FILE_ADDPATH','%FILE_ARCHIVE','%FILE_BUILDVERSION','%FILE_HIDDEN','%FILE_MAJORVERSION','%FILE_MINORVERSION','%FILE_NORMAL',
- '%FILE_READONLY','%FILE_REVISIONVERSION','%FILE_SUBDIR','%FILE_SYSTEM','%FILE_VLABEL','%FTP_GET_CONNECT_STATUS','%FTP_GET_FILE_BYTES_RCVD','%FTP_GET_FILE_BYTES_SENT',
- '%FTP_GET_LAST_RESPONSE','%FTP_GET_LOCAL_IP','%FTP_GET_SERVER_IP','%FTP_GET_TOTAL_BYTES_RCVD','%FTP_GET_TOTAL_BYTES_SENT','%FTP_LIST_FULLLIST','%FTP_LIST_FULLLISTDIR','%FTP_LIST_FULLLISTFILE',
- '%FTP_SET_ASYNC','%FTP_SET_CONNECT_WAIT','%FTP_SET_MAX_LISTEN_WAIT','%FTP_SET_MAX_RESPONSE_WAIT','%FTP_SET_PASSIVE','%FTP_SET_SYNC','%FW_BLACK','%FW_BOLD',
- '%FW_DEMIBOLD','%FW_DONTCARE','%FW_EXTRABOLD','%FW_EXTRALIGHT','%FW_HEAVY','%FW_LIGHT','%FW_MEDIUM','%FW_NORMAL',
- '%FW_REGULAR','%FW_SEMIBOLD','%FW_THIN','%FW_ULTRABOLD','%FW_ULTRALIGHT','%GDTR_MAX','%GDTR_MIN','%GLU_AUTO_LOAD_MATRIX',
- '%GLU_BEGIN','%GLU_CCW','%GLU_CULLING','%GLU_CW','%GLU_DISPLAY_MODE','%GLU_DOMAIN_DISTANCE','%GLU_EDGE_FLAG','%GLU_END',
- '%GLU_ERROR','%GLU_EXTENSIONS','%GLU_EXTERIOR','%GLU_FALSE','%GLU_FILL','%GLU_FLAT','%GLU_INCOMPATIBLE_GL_VERSION','%GLU_INSIDE',
- '%GLU_INTERIOR','%GLU_INVALID_ENUM','%GLU_INVALID_VALUE','%GLU_LINE','%GLU_MAP1_TRIM_2','%GLU_MAP1_TRIM_3','%GLU_NONE','%GLU_NURBS_ERROR1',
- '%GLU_NURBS_ERROR10','%GLU_NURBS_ERROR11','%GLU_NURBS_ERROR12','%GLU_NURBS_ERROR13','%GLU_NURBS_ERROR14','%GLU_NURBS_ERROR15','%GLU_NURBS_ERROR16','%GLU_NURBS_ERROR17',
- '%GLU_NURBS_ERROR18','%GLU_NURBS_ERROR19','%GLU_NURBS_ERROR2','%GLU_NURBS_ERROR20','%GLU_NURBS_ERROR21','%GLU_NURBS_ERROR22','%GLU_NURBS_ERROR23','%GLU_NURBS_ERROR24',
- '%GLU_NURBS_ERROR25','%GLU_NURBS_ERROR26','%GLU_NURBS_ERROR27','%GLU_NURBS_ERROR28','%GLU_NURBS_ERROR29','%GLU_NURBS_ERROR3','%GLU_NURBS_ERROR30','%GLU_NURBS_ERROR31',
- '%GLU_NURBS_ERROR32','%GLU_NURBS_ERROR33','%GLU_NURBS_ERROR34','%GLU_NURBS_ERROR35','%GLU_NURBS_ERROR36','%GLU_NURBS_ERROR37','%GLU_NURBS_ERROR4','%GLU_NURBS_ERROR5',
- '%GLU_NURBS_ERROR6','%GLU_NURBS_ERROR7','%GLU_NURBS_ERROR8','%GLU_NURBS_ERROR9','%GLU_OUTLINE_PATCH','%GLU_OUTLINE_POLYGON','%GLU_OUTSIDE','%GLU_OUT_OF_MEMORY',
- '%GLU_PARAMETRIC_ERROR','%GLU_PARAMETRIC_TOLERANCE','%GLU_PATH_LENGTH','%GLU_POINT','%GLU_SAMPLING_METHOD','%GLU_SAMPLING_TOLERANCE','%GLU_SILHOUETTE','%GLU_SMOOTH',
- '%GLU_TESS_BEGIN','%GLU_TESS_BEGIN_DATA','%GLU_TESS_BOUNDARY_ONLY','%GLU_TESS_COMBINE','%GLU_TESS_COMBINE_DATA','%GLU_TESS_COORD_TOO_LARGE','%GLU_TESS_EDGE_FLAG','%GLU_TESS_EDGE_FLAG_DATA',
- '%GLU_TESS_END','%GLU_TESS_END_DATA','%GLU_TESS_ERROR','%GLU_TESS_ERROR1','%GLU_TESS_ERROR2','%GLU_TESS_ERROR3','%GLU_TESS_ERROR4','%GLU_TESS_ERROR5',
- '%GLU_TESS_ERROR6','%GLU_TESS_ERROR7','%GLU_TESS_ERROR8','%GLU_TESS_ERROR_DATA','%GLU_TESS_MISSING_BEGIN_CONTOUR','%GLU_TESS_MISSING_BEGIN_POLYGON','%GLU_TESS_MISSING_END_CONTOUR','%GLU_TESS_MISSING_END_POLYGON',
- '%GLU_TESS_NEED_COMBINE_CALLBACK','%GLU_TESS_TOLERANCE','%GLU_TESS_VERTEX','%GLU_TESS_VERTEX_DATA','%GLU_TESS_WINDING_ABS_GEQ_TWO','%GLU_TESS_WINDING_NEGATIVE','%GLU_TESS_WINDING_NONZERO','%GLU_TESS_WINDING_ODD',
- '%GLU_TESS_WINDING_POSITIVE','%GLU_TESS_WINDING_RULE','%GLU_TRUE','%GLU_UNKNOWN','%GLU_U_STEP','%GLU_VERSION','%GLU_VERSION_1_1','%GLU_VERSION_1_2',
- '%GLU_VERTEX','%GLU_V_STEP','%GL_2D','%GL_2_BYTES','%GL_3D','%GL_3D_COLOR','%GL_3D_COLOR_TEXTURE','%GL_3_BYTES',
- '%GL_4D_COLOR_TEXTURE','%GL_4_BYTES','%GL_ABGR_EXT','%GL_ACCUM','%GL_ACCUM_ALPHA_BITS','%GL_ACCUM_BLUE_BITS','%GL_ACCUM_BUFFER_BIT','%GL_ACCUM_CLEAR_VALUE',
- '%GL_ACCUM_GREEN_BITS','%GL_ACCUM_RED_BITS','%GL_ADD','%GL_ALL_ATTRIB_BITS','%GL_ALPHA','%GL_ALPHA12','%GL_ALPHA16','%GL_ALPHA4',
- '%GL_ALPHA8','%GL_ALPHA_BIAS','%GL_ALPHA_BITS','%GL_ALPHA_SCALE','%GL_ALPHA_TEST','%GL_ALPHA_TEST_FUNC','%GL_ALPHA_TEST_REF','%GL_ALWAYS',
- '%GL_AMBIENT','%GL_AMBIENT_AND_DIFFUSE','%GL_AND','%GL_AND_INVERTED','%GL_AND_REVERSE','%GL_ARRAY_ELEMENT_LOCK_COUNT_EXT','%GL_ARRAY_ELEMENT_LOCK_FIRST_EXT','%GL_ATTRIB_STACK_DEPTH',
- '%GL_AUTO_NORMAL','%GL_AUX0','%GL_AUX1','%GL_AUX2','%GL_AUX3','%GL_AUX_BUFFERS','%GL_BACK','%GL_BACK_LEFT',
- '%GL_BACK_RIGHT','%GL_BGRA_EXT','%GL_BGR_EXT','%GL_BITMAP','%GL_BITMAP_TOKEN','%GL_BLEND','%GL_BLEND_COLOR_EXT','%GL_BLEND_DST',
- '%GL_BLEND_EQUATION_EXT','%GL_BLEND_SRC','%GL_BLUE','%GL_BLUE_BIAS','%GL_BLUE_BITS','%GL_BLUE_SCALE','%GL_BYTE','%GL_C3F_V3F',
- '%GL_C4F_N3F_V3F','%GL_C4UB_V2F','%GL_C4UB_V3F','%GL_CCW','%GL_CLAMP','%GL_CLEAR','%GL_CLIENT_ALL_ATTRIB_BITS','%GL_CLIENT_ATTRIB_STACK_DEPTH',
- '%GL_CLIENT_PIXEL_STORE_BIT','%GL_CLIENT_VERTEX_ARRAY_BIT','%GL_CLIP_PLANE0','%GL_CLIP_PLANE1','%GL_CLIP_PLANE2','%GL_CLIP_PLANE3','%GL_CLIP_PLANE4','%GL_CLIP_PLANE5',
- '%GL_CLIP_VOLUME_CLIPPING_HINT_EXT','%GL_COEFF','%GL_COLOR','%GL_COLOR_ARRAY','%GL_COLOR_ARRAY_COUNT_EXT','%GL_COLOR_ARRAY_EXT','%GL_COLOR_ARRAY_POINTER','%GL_COLOR_ARRAY_POINTER_EXT',
- '%GL_COLOR_ARRAY_SIZE','%GL_COLOR_ARRAY_SIZE_EXT','%GL_COLOR_ARRAY_STRIDE','%GL_COLOR_ARRAY_STRIDE_EXT','%GL_COLOR_ARRAY_TYPE','%GL_COLOR_ARRAY_TYPE_EXT','%GL_COLOR_BUFFER_BIT','%GL_COLOR_CLEAR_VALUE',
- '%GL_COLOR_INDEX','%GL_COLOR_INDEX12_EXT','%GL_COLOR_INDEX16_EXT','%GL_COLOR_INDEX1_EXT','%GL_COLOR_INDEX2_EXT','%GL_COLOR_INDEX4_EXT','%GL_COLOR_INDEX8_EXT','%GL_COLOR_INDEXES',
- '%GL_COLOR_LOGIC_OP','%GL_COLOR_MATERIAL','%GL_COLOR_MATERIAL_FACE','%GL_COLOR_MATERIAL_PARAMETER','%GL_COLOR_SUM_EXT','%GL_COLOR_TABLE_ALPHA_SIZE_EXT','%GL_COLOR_TABLE_BIAS_EXT','%GL_COLOR_TABLE_BLUE_SIZE_EXT',
- '%GL_COLOR_TABLE_EXT','%GL_COLOR_TABLE_FORMAT_EXT','%GL_COLOR_TABLE_GREEN_SIZE_EXT','%GL_COLOR_TABLE_INTENSITY_SIZE_EXT','%GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','%GL_COLOR_TABLE_RED_SIZE_EXT','%GL_COLOR_TABLE_SCALE_EXT','%GL_COLOR_TABLE_WIDTH_EXT',
- '%GL_COLOR_WRITEMASK','%GL_COMPILE','%GL_COMPILE_AND_EXECUTE','%GL_CONSTANT_ALPHA_EXT','%GL_CONSTANT_ATTENUATION','%GL_CONSTANT_COLOR_EXT','%GL_CONVOLUTION_1D_EXT','%GL_CONVOLUTION_2D_EXT',
- '%GL_CONVOLUTION_BORDER_MODE_EXT','%GL_CONVOLUTION_FILTER_BIAS_EXT','%GL_CONVOLUTION_FILTER_SCALE_EXT','%GL_CONVOLUTION_FORMAT_EXT','%GL_CONVOLUTION_HEIGHT_EXT','%GL_CONVOLUTION_WIDTH_EXT','%GL_COPY','%GL_COPY_INVERTED',
- '%GL_COPY_PIXEL_TOKEN','%GL_CULL_FACE','%GL_CULL_FACE_MODE','%GL_CULL_VERTEX_EXT','%GL_CULL_VERTEX_EYE_POSITION_EXT','%GL_CULL_VERTEX_OBJECT_POSITION_EXT','%GL_CURRENT_BIT','%GL_CURRENT_COLOR',
- '%GL_CURRENT_INDEX','%GL_CURRENT_NORMAL','%GL_CURRENT_RASTER_COLOR','%GL_CURRENT_RASTER_DISTANCE','%GL_CURRENT_RASTER_INDEX','%GL_CURRENT_RASTER_POSITION','%GL_CURRENT_RASTER_POSITION_VALID','%GL_CURRENT_RASTER_TEXTURE_COORDS',
- '%GL_CURRENT_SECONDARY_COLOR_EXT','%GL_CURRENT_TEXTURE_COORDS','%GL_CW','%GL_DECAL','%GL_DECR','%GL_DEPTH','%GL_DEPTH_BIAS','%GL_DEPTH_BITS',
- '%GL_DEPTH_BUFFER_BIT','%GL_DEPTH_CLEAR_VALUE','%GL_DEPTH_COMPONENT','%GL_DEPTH_FUNC','%GL_DEPTH_RANGE','%GL_DEPTH_SCALE','%GL_DEPTH_TEST','%GL_DEPTH_WRITEMASK',
- '%GL_DIFFUSE','%GL_DITHER','%GL_DOMAIN','%GL_DONT_CARE','%GL_DOUBLE','%GL_DOUBLEBUFFER','%GL_DOUBLE_EXT','%GL_DRAW_BUFFER',
- '%GL_DRAW_PIXEL_TOKEN','%GL_DST_ALPHA','%GL_DST_COLOR','%GL_EDGE_FLAG','%GL_EDGE_FLAG_ARRAY','%GL_EDGE_FLAG_ARRAY_COUNT_EXT','%GL_EDGE_FLAG_ARRAY_EXT','%GL_EDGE_FLAG_ARRAY_POINTER',
- '%GL_EDGE_FLAG_ARRAY_POINTER_EXT','%GL_EDGE_FLAG_ARRAY_STRIDE','%GL_EDGE_FLAG_ARRAY_STRIDE_EXT','%GL_EMISSION','%GL_ENABLE_BIT','%GL_EQUAL','%GL_EQUIV','%GL_EVAL_BIT',
- '%GL_EXP','%GL_EXP2','%GL_EXTENSIONS','%GL_EXT_ABGR','%GL_EXT_BGRA','%GL_EXT_BLEND_COLOR','%GL_EXT_BLEND_MINMAX','%GL_EXT_BLEND_SUBTRACT',
- '%GL_EXT_CLIP_VOLUME_HINT','%GL_EXT_COLOR_TABLE','%GL_EXT_COMPILED_VERTEX_ARRAY','%GL_EXT_CONVOLUTION','%GL_EXT_CULL_VERTEX','%GL_EXT_HISTOGRAM','%GL_EXT_PACKED_PIXELS','%GL_EXT_PALETTED_TEXTURE',
- '%GL_EXT_POLYGON_OFFSET','%GL_EXT_SECONDARY_COLOR','%GL_EXT_SEPARATE_SPECULAR_COLOR','%GL_EXT_VERTEX_ARRAY','%GL_EYE_LINEAR','%GL_EYE_PLANE','%GL_FALSE','%GL_FASTEST',
- '%GL_FEEDBACK','%GL_FEEDBACK_BUFFER_POINTER','%GL_FEEDBACK_BUFFER_SIZE','%GL_FEEDBACK_BUFFER_TYPE','%GL_FILL','%GL_FLAT','%GL_FLOAT','%GL_FOG',
- '%GL_FOG_BIT','%GL_FOG_COLOR','%GL_FOG_DENSITY','%GL_FOG_END','%GL_FOG_HINT','%GL_FOG_INDEX','%GL_FOG_MODE','%GL_FOG_START',
- '%GL_FRONT','%GL_FRONT_AND_BACK','%GL_FRONT_FACE','%GL_FRONT_LEFT','%GL_FRONT_RIGHT','%GL_FUNC_ADD_EXT','%GL_FUNC_REVERSE_SUBTRACT_EXT','%GL_FUNC_SUBTRACT_EXT',
- '%GL_GEQUAL','%GL_GREATER','%GL_GREEN','%GL_GREEN_BIAS','%GL_GREEN_BITS','%GL_GREEN_SCALE','%GL_HINT_BIT','%GL_HISTOGRAM_ALPHA_SIZE_EXT',
- '%GL_HISTOGRAM_BLUE_SIZE_EXT','%GL_HISTOGRAM_EXT','%GL_HISTOGRAM_FORMAT_EXT','%GL_HISTOGRAM_GREEN_SIZE_EXT','%GL_HISTOGRAM_LUMINANCE_SIZE_EXT','%GL_HISTOGRAM_RED_SIZE_EXT','%GL_HISTOGRAM_SINK_EXT','%GL_HISTOGRAM_WIDTH_EXT',
- '%GL_INCR','%GL_INDEX_ARRAY','%GL_INDEX_ARRAY_COUNT_EXT','%GL_INDEX_ARRAY_EXT','%GL_INDEX_ARRAY_POINTER','%GL_INDEX_ARRAY_POINTER_EXT','%GL_INDEX_ARRAY_STRIDE','%GL_INDEX_ARRAY_STRIDE_EXT',
- '%GL_INDEX_ARRAY_TYPE','%GL_INDEX_ARRAY_TYPE_EXT','%GL_INDEX_BITS','%GL_INDEX_CLEAR_VALUE','%GL_INDEX_LOGIC_OP','%GL_INDEX_MODE','%GL_INDEX_OFFSET','%GL_INDEX_SHIFT',
- '%GL_INDEX_WRITEMASK','%GL_INT','%GL_INTENSITY','%GL_INTENSITY12','%GL_INTENSITY16','%GL_INTENSITY4','%GL_INTENSITY8','%GL_INVALID_ENUM',
- '%GL_INVALID_OPERATION','%GL_INVALID_VALUE','%GL_INVERT','%GL_KEEP','%GL_LEFT','%GL_LEQUAL','%GL_LESS','%GL_LIGHT0',
- '%GL_LIGHT1','%GL_LIGHT2','%GL_LIGHT3','%GL_LIGHT4','%GL_LIGHT5','%GL_LIGHT6','%GL_LIGHT7','%GL_LIGHTING',
- '%GL_LIGHTING_BIT','%GL_LIGHT_MODEL_AMBIENT','%GL_LIGHT_MODEL_COLOR_CONTROL_EXT','%GL_LIGHT_MODEL_LOCAL_VIEWER','%GL_LIGHT_MODEL_TWO_SIDE','%GL_LINE','%GL_LINEAR','%GL_LINEAR_ATTENUATION',
- '%GL_LINEAR_MIPMAP_LINEAR','%GL_LINEAR_MIPMAP_NEAREST','%GL_LINES','%GL_LINE_BIT','%GL_LINE_LOOP','%GL_LINE_RESET_TOKEN','%GL_LINE_SMOOTH','%GL_LINE_SMOOTH_HINT',
- '%GL_LINE_STIPPLE','%GL_LINE_STIPPLE_PATTERN','%GL_LINE_STIPPLE_REPEAT','%GL_LINE_STRIP','%GL_LINE_TOKEN','%GL_LINE_WIDTH','%GL_LINE_WIDTH_GRANULARITY','%GL_LINE_WIDTH_RANGE',
- '%GL_LIST_BASE','%GL_LIST_BIT','%GL_LIST_INDEX','%GL_LIST_MODE','%GL_LOAD','%GL_LOGIC_OP','%GL_LOGIC_OP_MODE','%GL_LUMINANCE',
- '%GL_LUMINANCE12','%GL_LUMINANCE12_ALPHA12','%GL_LUMINANCE12_ALPHA4','%GL_LUMINANCE16','%GL_LUMINANCE16_ALPHA16','%GL_LUMINANCE4','%GL_LUMINANCE4_ALPHA4','%GL_LUMINANCE6_ALPHA2',
- '%GL_LUMINANCE8','%GL_LUMINANCE8_ALPHA8','%GL_LUMINANCE_ALPHA','%GL_MAP1_COLOR_4','%GL_MAP1_GRID_DOMAIN','%GL_MAP1_GRID_SEGMENTS','%GL_MAP1_INDEX','%GL_MAP1_NORMAL',
- '%GL_MAP1_TEXTURE_COORD_1','%GL_MAP1_TEXTURE_COORD_2','%GL_MAP1_TEXTURE_COORD_3','%GL_MAP1_TEXTURE_COORD_4','%GL_MAP1_VERTEX_3','%GL_MAP1_VERTEX_4','%GL_MAP2_COLOR_4','%GL_MAP2_GRID_DOMAIN',
- '%GL_MAP2_GRID_SEGMENTS','%GL_MAP2_INDEX','%GL_MAP2_NORMAL','%GL_MAP2_TEXTURE_COORD_1','%GL_MAP2_TEXTURE_COORD_2','%GL_MAP2_TEXTURE_COORD_3','%GL_MAP2_TEXTURE_COORD_4','%GL_MAP2_VERTEX_3',
- '%GL_MAP2_VERTEX_4','%GL_MAP_COLOR','%GL_MAP_STENCIL','%GL_MATRIX_MODE','%GL_MAX_ATTRIB_STACK_DEPTH','%GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','%GL_MAX_CLIP_PLANES','%GL_MAX_CONVOLUTION_HEIGHT_EXT',
- '%GL_MAX_CONVOLUTION_WIDTH_EXT','%GL_MAX_EVAL_ORDER','%GL_MAX_EXT','%GL_MAX_LIGHTS','%GL_MAX_LIST_NESTING','%GL_MAX_MODELVIEW_STACK_DEPTH','%GL_MAX_NAME_STACK_DEPTH','%GL_MAX_PIXEL_MAP_TABLE',
- '%GL_MAX_PROJECTION_STACK_DEPTH','%GL_MAX_TEXTURE_SIZE','%GL_MAX_TEXTURE_STACK_DEPTH','%GL_MAX_VIEWPORT_DIMS','%GL_MINMAX_EXT','%GL_MINMAX_FORMAT_EXT','%GL_MINMAX_SINK_EXT','%GL_MIN_EXT',
- '%GL_MODELVIEW','%GL_MODELVIEW_MATRIX','%GL_MODELVIEW_STACK_DEPTH','%GL_MODULATE','%GL_MULT','%GL_N3F_V3F','%GL_NAME_STACK_DEPTH','%GL_NAND',
- '%GL_NEAREST','%GL_NEAREST_MIPMAP_LINEAR','%GL_NEAREST_MIPMAP_NEAREST','%GL_NEVER','%GL_NICEST','%GL_NONE','%GL_NOOP','%GL_NOR',
- '%GL_NORMALIZE','%GL_NORMAL_ARRAY','%GL_NORMAL_ARRAY_COUNT_EXT','%GL_NORMAL_ARRAY_EXT','%GL_NORMAL_ARRAY_POINTER','%GL_NORMAL_ARRAY_POINTER_EXT','%GL_NORMAL_ARRAY_STRIDE','%GL_NORMAL_ARRAY_STRIDE_EXT',
- '%GL_NORMAL_ARRAY_TYPE','%GL_NORMAL_ARRAY_TYPE_EXT','%GL_NOTEQUAL','%GL_NO_ERROR','%GL_OBJECT_LINEAR','%GL_OBJECT_PLANE','%GL_ONE','%GL_ONE_MINUS_CONSTANT_ALPHA_EXT',
- '%GL_ONE_MINUS_CONSTANT_COLOR_EXT','%GL_ONE_MINUS_DST_ALPHA','%GL_ONE_MINUS_DST_COLOR','%GL_ONE_MINUS_SRC_ALPHA','%GL_ONE_MINUS_SRC_COLOR','%GL_OR','%GL_ORDER','%GL_OR_INVERTED',
- '%GL_OR_REVERSE','%GL_OUT_OF_MEMORY','%GL_PACK_ALIGNMENT','%GL_PACK_LSB_FIRST','%GL_PACK_ROW_LENGTH','%GL_PACK_SKIP_PIXELS','%GL_PACK_SKIP_ROWS','%GL_PACK_SWAP_BYTES',
- '%GL_PASS_THROUGH_TOKEN','%GL_PERSPECTIVE_CORRECTION_HINT','%GL_PIXEL_MAP_A_TO_A','%GL_PIXEL_MAP_A_TO_A_SIZE','%GL_PIXEL_MAP_B_TO_B','%GL_PIXEL_MAP_B_TO_B_SIZE','%GL_PIXEL_MAP_G_TO_G','%GL_PIXEL_MAP_G_TO_G_SIZE',
- '%GL_PIXEL_MAP_I_TO_A','%GL_PIXEL_MAP_I_TO_A_SIZE','%GL_PIXEL_MAP_I_TO_B','%GL_PIXEL_MAP_I_TO_B_SIZE','%GL_PIXEL_MAP_I_TO_G','%GL_PIXEL_MAP_I_TO_G_SIZE','%GL_PIXEL_MAP_I_TO_I','%GL_PIXEL_MAP_I_TO_I_SIZE',
- '%GL_PIXEL_MAP_I_TO_R','%GL_PIXEL_MAP_I_TO_R_SIZE','%GL_PIXEL_MAP_R_TO_R','%GL_PIXEL_MAP_R_TO_R_SIZE','%GL_PIXEL_MAP_S_TO_S','%GL_PIXEL_MAP_S_TO_S_SIZE','%GL_PIXEL_MODE_BIT','%GL_POINT',
- '%GL_POINTS','%GL_POINT_BIT','%GL_POINT_SIZE','%GL_POINT_SIZE_GRANULARITY','%GL_POINT_SIZE_RANGE','%GL_POINT_SMOOTH','%GL_POINT_SMOOTH_HINT','%GL_POINT_TOKEN',
- '%GL_POLYGON','%GL_POLYGON_BIT','%GL_POLYGON_MODE','%GL_POLYGON_OFFSET_BIAS_EXT','%GL_POLYGON_OFFSET_EXT','%GL_POLYGON_OFFSET_FACTOR','%GL_POLYGON_OFFSET_FACTOR_EXT','%GL_POLYGON_OFFSET_FILL',
- '%GL_POLYGON_OFFSET_LINE','%GL_POLYGON_OFFSET_POINT','%GL_POLYGON_OFFSET_UNITS','%GL_POLYGON_SMOOTH','%GL_POLYGON_SMOOTH_HINT','%GL_POLYGON_STIPPLE','%GL_POLYGON_STIPPLE_BIT','%GL_POLYGON_TOKEN',
- '%GL_POSITION','%GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_ALPHA_BIAS_EXT','%GL_POST_CONVOLUTION_ALPHA_SCALE_EXT','%GL_POST_CONVOLUTION_BLUE_BIAS_EXT','%GL_POST_CONVOLUTION_BLUE_SCALE_EXT','%GL_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_GREEN_BIAS_EXT',
- '%GL_POST_CONVOLUTION_GREEN_SCALE_EXT','%GL_POST_CONVOLUTION_RED_BIAS_EXT','%GL_POST_CONVOLUTION_RED_SCALE_EXT','%GL_PROJECTION','%GL_PROJECTION_MATRIX','%GL_PROJECTION_STACK_DEPTH','%GL_PROXY_COLOR_TABLE_EXT','%GL_PROXY_HISTOGRAM_EXT',
- '%GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_PROXY_TEXTURE_1D','%GL_PROXY_TEXTURE_2D','%GL_Q','%GL_QUADRATIC_ATTENUATION','%GL_QUADS','%GL_QUAD_STRIP',
- '%GL_R','%GL_R3_G3_B2','%GL_READ_BUFFER','%GL_RED','%GL_REDUCE_EXT','%GL_RED_BIAS','%GL_RED_BITS','%GL_RED_SCALE',
- '%GL_RENDER','%GL_RENDERER','%GL_RENDER_MODE','%GL_REPEAT','%GL_REPLACE','%GL_RETURN','%GL_RGB','%GL_RGB10',
- '%GL_RGB10_A2','%GL_RGB12','%GL_RGB16','%GL_RGB4','%GL_RGB5','%GL_RGB5_A1','%GL_RGB8','%GL_RGBA',
- '%GL_RGBA12','%GL_RGBA16','%GL_RGBA2','%GL_RGBA4','%GL_RGBA8','%GL_RGBA_MODE','%GL_RIGHT','%GL_S',
- '%GL_SCISSOR_BIT','%GL_SCISSOR_BOX','%GL_SCISSOR_TEST','%GL_SECONDARY_COLOR_ARRAY_EXT','%GL_SECONDARY_COLOR_ARRAY_POINTER_EXT','%GL_SECONDARY_COLOR_ARRAY_SIZE_EXT','%GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT','%GL_SECONDARY_COLOR_ARRAY_TYPE_EXT',
- '%GL_SELECT','%GL_SELECTION_BUFFER_POINTER','%GL_SELECTION_BUFFER_SIZE','%GL_SEPARABLE_2D_EXT','%GL_SEPARATE_SPECULAR_COLOR_EXT','%GL_SET','%GL_SHADE_MODEL','%GL_SHININESS',
- '%GL_SHORT','%GL_SINGLE_COLOR_EXT','%GL_SMOOTH','%GL_SPECULAR','%GL_SPHERE_MAP','%GL_SPOT_CUTOFF','%GL_SPOT_DIRECTION','%GL_SPOT_EXPONENT',
- '%GL_SRC_ALPHA','%GL_SRC_ALPHA_SATURATE','%GL_SRC_COLOR','%GL_STACK_OVERFLOW','%GL_STACK_UNDERFLOW','%GL_STENCIL','%GL_STENCIL_BITS','%GL_STENCIL_BUFFER_BIT',
- '%GL_STENCIL_CLEAR_VALUE','%GL_STENCIL_FAIL','%GL_STENCIL_FUNC','%GL_STENCIL_INDEX','%GL_STENCIL_PASS_DEPTH_FAIL','%GL_STENCIL_PASS_DEPTH_PASS','%GL_STENCIL_REF','%GL_STENCIL_TEST',
- '%GL_STENCIL_VALUE_MASK','%GL_STENCIL_WRITEMASK','%GL_STEREO','%GL_SUBPIXEL_BITS','%GL_T','%GL_T2F_C3F_V3F','%GL_T2F_C4F_N3F_V3F','%GL_T2F_C4UB_V3F',
- '%GL_T2F_N3F_V3F','%GL_T2F_V3F','%GL_T4F_C4F_N3F_V4F','%GL_T4F_V4F','%GL_TABLE_TOO_LARGE_EXT','%GL_TEXTURE','%GL_TEXTURE_1D','%GL_TEXTURE_2D',
- '%GL_TEXTURE_ALPHA_SIZE','%GL_TEXTURE_BINDING_1D','%GL_TEXTURE_BINDING_2D','%GL_TEXTURE_BIT','%GL_TEXTURE_BLUE_SIZE','%GL_TEXTURE_BORDER','%GL_TEXTURE_BORDER_COLOR','%GL_TEXTURE_COMPONENTS',
- '%GL_TEXTURE_COORD_ARRAY','%GL_TEXTURE_COORD_ARRAY_COUNT_EXT','%GL_TEXTURE_COORD_ARRAY_EXT','%GL_TEXTURE_COORD_ARRAY_POINTER','%GL_TEXTURE_COORD_ARRAY_POINTER_EXT','%GL_TEXTURE_COORD_ARRAY_SIZE','%GL_TEXTURE_COORD_ARRAY_SIZE_EXT','%GL_TEXTURE_COORD_ARRAY_STRIDE',
- '%GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','%GL_TEXTURE_COORD_ARRAY_TYPE','%GL_TEXTURE_COORD_ARRAY_TYPE_EXT','%GL_TEXTURE_ENV','%GL_TEXTURE_ENV_COLOR','%GL_TEXTURE_ENV_MODE','%GL_TEXTURE_GEN_MODE','%GL_TEXTURE_GEN_Q',
- '%GL_TEXTURE_GEN_R','%GL_TEXTURE_GEN_S','%GL_TEXTURE_GEN_T','%GL_TEXTURE_GREEN_SIZE','%GL_TEXTURE_HEIGHT','%GL_TEXTURE_INTENSITY_SIZE','%GL_TEXTURE_INTERNAL_FORMAT','%GL_TEXTURE_LUMINANCE_SIZE',
- '%GL_TEXTURE_MAG_FILTER','%GL_TEXTURE_MATRIX','%GL_TEXTURE_MIN_FILTER','%GL_TEXTURE_PRIORITY','%GL_TEXTURE_RED_SIZE','%GL_TEXTURE_RESIDENT','%GL_TEXTURE_STACK_DEPTH','%GL_TEXTURE_WIDTH',
- '%GL_TEXTURE_WRAP_S','%GL_TEXTURE_WRAP_T','%GL_TRANSFORM_BIT','%GL_TRIANGLES','%GL_TRIANGLE_FAN','%GL_TRIANGLE_STRIP','%GL_TRUE','%GL_UNPACK_ALIGNMENT',
- '%GL_UNPACK_LSB_FIRST','%GL_UNPACK_ROW_LENGTH','%GL_UNPACK_SKIP_PIXELS','%GL_UNPACK_SKIP_ROWS','%GL_UNPACK_SWAP_BYTES','%GL_UNSIGNED_BYTE','%GL_UNSIGNED_BYTE_3_3_2_EXT','%GL_UNSIGNED_INT',
- '%GL_UNSIGNED_INT_10_10_10_2_EXT','%GL_UNSIGNED_INT_8_8_8_8_EXT','%GL_UNSIGNED_SHORT','%GL_UNSIGNED_SHORT_4_4_4_4_EXT','%GL_UNSIGNED_SHORT_5_5_5_1_EXT','%GL_V2F','%GL_V3F','%GL_VENDOR',
- '%GL_VERSION','%GL_VERSION_1_1','%GL_VERTEX_ARRAY','%GL_VERTEX_ARRAY_COUNT_EXT','%GL_VERTEX_ARRAY_EXT','%GL_VERTEX_ARRAY_POINTER','%GL_VERTEX_ARRAY_POINTER_EXT','%GL_VERTEX_ARRAY_SIZE',
- '%GL_VERTEX_ARRAY_SIZE_EXT','%GL_VERTEX_ARRAY_STRIDE','%GL_VERTEX_ARRAY_STRIDE_EXT','%GL_VERTEX_ARRAY_TYPE','%GL_VERTEX_ARRAY_TYPE_EXT','%GL_VIEWPORT','%GL_VIEWPORT_BIT','%GL_WIN_SWAP_HINT',
- '%GL_XOR','%GL_ZERO','%GL_ZOOM_X','%GL_ZOOM_Y','%GRAY','%GREEN','%GWLP_HINSTANCE','%GWLP_HWNDPARENT',
- '%GWLP_ID','%GWLP_USERDATA','%GWLP_WNDPROC','%GWL_EXSTYLE','%GWL_HINSTANCE','%GWL_HWNDPARENT','%GWL_ID','%GWL_STYLE',
- '%GWL_USERDATA','%GWL_WNDPROC','%HDM_FIRST','%HTCAPTION','%HWND_BOTTOM','%HWND_DESKTOP','%HWND_MESSAGE','%HWND_NOTOPMOST',
- '%HWND_TOP','%HWND_TOPMOST','%ICRYPTO_XOR_DECREASE','%ICRYPTO_XOR_INCREASE','%ICRYPTO_XOR_NORMAL','%IDABORT','%IDCANCEL','%IDCONTINUE',
- '%IDIGNORE','%IDNO','%IDOK','%IDRETRY','%IDTIMEOUT','%IDTRYAGAIN','%IDYES','%INTERNET_CONNECTION_CONFIGURED',
- '%INTERNET_CONNECTION_LAN','%INTERNET_CONNECTION_MODEM','%INTERNET_CONNECTION_MODEM_BUSY','%INTERNET_CONNECTION_OFFLINE','%INTERNET_CONNECTION_PROXY','%INTERNET_RAS_INSTALLED','%LBN_DBLCLK','%LBN_KILLFOCUS',
- '%LBN_SELCANCEL','%LBN_SELCHANGE','%LBN_SETFOCUS','%LBS_DISABLENOSCROLL','%LBS_EXTENDEDSEL','%LBS_MULTICOLUMN','%LBS_MULTIPLESEL','%LBS_NOINTEGRALHEIGHT',
- '%LBS_NOSEL','%LBS_NOTIFY','%LBS_SORT','%LBS_STANDARD','%LBS_USETABSTOPS','%LB_ADDFILE','%LB_ADDSTRING','%LB_DELETESTRING',
- '%LB_DIR','%LB_FINDSTRING','%LB_FINDSTRINGEXACT','%LB_GETANCHORINDEX','%LB_GETCARETINDEX','%LB_GETCOUNT','%LB_GETCURSEL','%LB_GETHORIZONTALEXTENT',
- '%LB_GETITEMDATA','%LB_GETITEMHEIGHT','%LB_GETITEMRECT','%LB_GETLISTBOXINFO','%LB_GETLOCALE','%LB_GETSEL','%LB_GETSELCOUNT','%LB_GETSELITEMS',
- '%LB_GETTEXT','%LB_GETTEXTLEN','%LB_GETTOPINDEX','%LB_INITSTORAGE','%LB_INSERTSTRING','%LB_ITEMFROMPOINT','%LB_MULTIPLEADDSTRING','%LB_RESETCONTENT',
- '%LB_SELECTSTRING','%LB_SELITEMRANGE','%LB_SELITEMRANGEEX','%LB_SETANCHORINDEX','%LB_SETCARETINDEX','%LB_SETCOLUMNWIDTH','%LB_SETCOUNT','%LB_SETCURSEL',
- '%LB_SETHORIZONTALEXTENT','%LB_SETITEMDATA','%LB_SETITEMHEIGHT','%LB_SETLOCALE','%LB_SETSEL','%LB_SETTABSTOPS','%LB_SETTOPINDEX','%LF_FACESIZE',
- '%LTGRAY','%LVM_FIRST','%LWA_ALPHA','%LWA_COLORKEY','%MAGENTA','%MAXBYTE','%MAXCHAR','%MAXDWORD',
- '%MAXSHORT','%MAXWORD','%MAX_PATH','%MB_ABORTRETRYIGNORE','%MB_APPLMODAL','%MB_CANCELTRYCONTINUE','%MB_DEFBUTTON1','%MB_DEFBUTTON2',
- '%MB_DEFBUTTON3','%MB_HELP','%MB_ICONASTERISK','%MB_ICONERROR','%MB_ICONEXCLAMATION','%MB_ICONHAND','%MB_ICONINFORMATION','%MB_ICONQUESTION',
- '%MB_ICONSTOP','%MB_ICONWARNING','%MB_OK','%MB_OKCANCEL','%MB_RETRYCANCEL','%MB_SIMPLE','%MB_SYSTEMMODAL','%MB_TOPMOST',
- '%MB_YESNO','%MB_YESNOCANCEL','%MF_CHECKED','%MF_DISABLED','%MF_ENABLED','%MF_GRAYED','%MF_SEPARATOR','%MF_UNCHECKED',
- '%MINCHAR','%MINLONG','%MINSHORT','%NULL','%ODBC352_INC','%ODBCVER','%ODBC_ADD_DSN','%ODBC_ADD_SYS_DSN',
- '%ODBC_BOTH_DSN','%ODBC_CONFIG_DRIVER','%ODBC_CONFIG_DRIVER_MAX','%ODBC_CONFIG_DSN','%ODBC_CONFIG_SYS_DSN','%ODBC_DRIVER_VERSION','%ODBC_ERROR_COMPONENT_NOT_FOUND','%ODBC_ERROR_CREATE_DSN_FAILED',
- '%ODBC_ERROR_GENERAL_ERR','%ODBC_ERROR_INVALID_BUFF_LEN','%ODBC_ERROR_INVALID_DSN','%ODBC_ERROR_INVALID_HWND','%ODBC_ERROR_INVALID_INF','%ODBC_ERROR_INVALID_KEYWORD_VALUE','%ODBC_ERROR_INVALID_LOG_FILE','%ODBC_ERROR_INVALID_NAME',
- '%ODBC_ERROR_INVALID_PARAM_SEQUENCE','%ODBC_ERROR_INVALID_PATH','%ODBC_ERROR_INVALID_REQUEST_TYPE','%ODBC_ERROR_INVALID_STR','%ODBC_ERROR_LOAD_LIB_FAILED','%ODBC_ERROR_OUTPUT_STRING_TRUNCATED','%ODBC_ERROR_OUT_OF_MEM','%ODBC_ERROR_REMOVE_DSN_FAILED',
- '%ODBC_ERROR_REQUEST_FAILED','%ODBC_ERROR_USAGE_UPDATE_FAILED','%ODBC_ERROR_USER_CANCELED','%ODBC_ERROR_WRITING_SYSINFO_FAILED','%ODBC_INSTALL_COMPLETE','%ODBC_INSTALL_DRIVER','%ODBC_INSTALL_INQUIRY','%ODBC_REMOVE_DEFAULT_DSN',
- '%ODBC_REMOVE_DRIVER','%ODBC_REMOVE_DSN','%ODBC_REMOVE_SYS_DSN','%ODBC_SYSTEM_DSN','%ODBC_USER_DSN','%OFN_ALLOWMULTISELECT','%OFN_CREATEPROMPT','%OFN_ENABLEHOOK',
- '%OFN_ENABLEINCLUDENOTIFY','%OFN_ENABLESIZING','%OFN_ENABLETEMPLATE','%OFN_ENABLETEMPLATEHANDLE','%OFN_EXPLORER','%OFN_EXTENSIONDIFFERENT','%OFN_FILEMUSTEXIST','%OFN_HIDEREADONLY',
- '%OFN_LONGNAMES','%OFN_NOCHANGEDIR','%OFN_NODEREFERENCELINKS','%OFN_NOLONGNAMES','%OFN_NONETWORKBUTTON','%OFN_NOREADONLYRETURN','%OFN_NOTESTFILECREATE','%OFN_NOVALIDATE',
- '%OFN_OVERWRITEPROMPT','%OFN_PATHMUSTEXIST','%OFN_READONLY','%OFN_SHAREAWARE','%OFN_SHOWHELP','%OS_ERROR_CALLFUNCTION','%OS_ERROR_EMPTYSTRING','%OS_ERROR_LOADLIBRARY',
- '%OS_ERROR_SUCCESS','%OS_ERROR_WRONGPARAMETER','%OS_SHELL_ASYNC','%OS_SHELL_SYNC','%OS_WINDOWS_2K','%OS_WINDOWS_95','%OS_WINDOWS_95_OSR2','%OS_WINDOWS_98',
- '%OS_WINDOWS_98_SE','%OS_WINDOWS_ME','%OS_WINDOWS_NT','%OS_WINDOWS_SERVER_2003','%OS_WINDOWS_SERVER_LONGHORN','%OS_WINDOWS_SERVER_LONGHORN_DC','%OS_WINDOWS_VISTA','%OS_WINDOWS_XP',
- '%OS_WNDSTYLE_HIDE','%OS_WNDSTYLE_MAXIMIZED','%OS_WNDSTYLE_MINIMIZED','%OS_WNDSTYLE_MINIMIZEDNOFOCUS','%OS_WNDSTYLE_NORMAL','%OS_WNDSTYLE_NORMALNOFOCUS','%PATH_EXT','%PATH_FILE',
- '%PATH_FILEEXT','%PATH_ROOT','%PATH_ROOTPATH','%PATH_ROOTPATHPROG','%PATH_ROOTPATHPROGEXT','%PBM_DELTAPOS','%PBM_GETPOS','%PBM_GETRANGE',
- '%PBM_SETBARCOLOR','%PBM_SETBKCOLOR','%PBM_SETPOS','%PBM_SETRANGE','%PBM_SETRANGE32','%PBM_SETSTEP','%PBM_STEPIT','%PBS_SMOOTH',
- '%PBS_VERTICAL','%PC_DISABLEWAKEEVENT_OFF','%PC_DISABLEWAKEEVENT_ON','%PC_EB_NOCONFIRMATION','%PC_EB_NOPROGRESSUI','%PC_EB_NORMAL','%PC_EB_NOSOUND','%PC_FORCECRITICAL_OFF',
- '%PC_FORCECRITICAL_ON','%PC_HIBERNATE_OFF','%PC_HIBERNATE_ON','%PC_RD_FORCE','%PC_RD_FORCEIFHUNG','%PC_RD_LOGOFF','%PC_RD_POWEROFF','%PC_RD_REBOOT',
- '%PC_RD_SHUTDOWN','%PC_SD_DONOT_FORCE','%PC_SD_DONOT_REBOOT','%PC_SD_FORCE','%PC_SD_REBOOT','%PFA_CENTER','%PFA_LEFT','%PFA_RIGHT',
- '%PF_3DNOW_INSTRUCTIONS_AVAILABLE','%PF_CHANNELS_ENABLED','%PF_COMPARE64_EXCHANGE128','%PF_COMPARE_EXCHANGE128','%PF_COMPARE_EXCHANGE_DOUBLE','%PF_FLOATING_POINT_EMULATED','%PF_FLOATING_POINT_PRECISION_ERRATA','%PF_MMX_INSTRUCTIONS_AVAILABLE',
- '%PF_NX_ENABLED','%PF_PAE_ENABLED','%PF_RDTSC_INSTRUCTION_AVAILABLE','%PF_SSE3_INSTRUCTIONS_AVAILABLE','%PF_XMMI64_INSTRUCTIONS_AVAILABLE','%PF_XMMI_INSTRUCTIONS_AVAILABLE','%PGM_FIRST','%RED',
- '%RTF_UBB','%SAPI_SVSFDEFAULT','%SAPI_SVSFISFILENAME','%SAPI_SVSFISNOTXML','%SAPI_SVSFISXML','%SAPI_SVSFLAGSASYNC','%SAPI_SVSFNLPMASK','%SAPI_SVSFNLPSPEAKPUNC',
- '%SAPI_SVSFPERSISTXML','%SAPI_SVSFPURGEBEFORESPEAK','%SAPI_SVSFUNUSEDFLAGS','%SAPI_SVSFVOICEMASK','%SBS_SIZEGRIP','%SB_BOTTOM','%SB_ENDSCROLL','%SB_LEFT',
- '%SB_LINEDOWN','%SB_LINELEFT','%SB_LINERIGHT','%SB_LINEUP','%SB_PAGEDOWN','%SB_PAGELEFT','%SB_PAGERIGHT','%SB_PAGEUP',
- '%SB_RIGHT','%SB_SETPARTS','%SB_SETTEXT','%SB_THUMBPOSITION','%SB_THUMBTRACK','%SB_TOP','%SCF_ALL','%SCF_ASSOCIATEFONT',
- '%SCF_DEFAULT','%SCF_NOKBUPDATE','%SCF_SELECTION','%SCF_USEUIRULES','%SCF_WORD','%SC_CLOSE','%SC_CONTEXTHELP','%SC_HOTKEY',
- '%SC_HSCROLL','%SC_KEYMENU','%SC_MAXIMIZE','%SC_MINIMIZE','%SC_MONITORPOWER','%SC_MOUSEMENU','%SC_MOVE','%SC_NEXTWINDOW',
- '%SC_PREVWINDOW','%SC_RESTORE','%SC_SCREENSAVE','%SC_SIZE','%SC_TASKLIST','%SC_VSCROLL','%SERVICE_ACTIVE','%SERVICE_AUTO_START',
- '%SERVICE_BOOT_START','%SERVICE_CONTINUE_PENDING','%SERVICE_DEMAND_START','%SERVICE_DISABLED','%SERVICE_DRIVER','%SERVICE_INACTIVE','%SERVICE_INFO_DISPLAY_NAME','%SERVICE_INFO_NAME',
- '%SERVICE_PAUSED','%SERVICE_PAUSE_PENDING','%SERVICE_RUNNING','%SERVICE_START_PENDING','%SERVICE_STATE_ALL','%SERVICE_STOPPED','%SERVICE_STOP_PENDING','%SERVICE_SYSTEM_START',
- '%SERVICE_TYPE_ALL','%SERVICE_WIN32','%SES_ALLOWBEEPS','%SES_BEEPONMAXTEXT','%SES_BIDI','%SES_EMULATE10','%SES_EMULATESYSEDIT','%SES_EXTENDBACKCOLOR',
- '%SES_LOWERCASE','%SES_MAPCPS','%SES_NOIME','%SES_NOINPUTSEQUENCECHK','%SES_SCROLLONKILLFOCUS','%SES_UPPERCASE','%SES_USEAIMM','%SES_USECRLF',
- '%SES_XLTCRCRLFTOCR','%SF_RTF','%SF_TEXT','%SMTP_SET_ATTACH_CONTENT_TYPE','%SMTP_SET_CONTENT_TYPE_PREFIX','%SQL_AA_FALSE','%SQL_AA_TRUE','%SQL_ACCESSIBLE_PROCEDURES',
- '%SQL_ACCESSIBLE_TABLES','%SQL_ACCESS_MODE','%SQL_ACTIVE_CONNECTIONS','%SQL_ACTIVE_ENVIRONMENTS','%SQL_ACTIVE_STATEMENTS','%SQL_ADD','%SQL_AD_ADD_CONSTRAINT_DEFERRABLE','%SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED',
- '%SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE','%SQL_AD_ADD_DOMAIN_CONSTRAINT','%SQL_AD_ADD_DOMAIN_DEFAULT','%SQL_AD_CONSTRAINT_NAME_DEFINITION','%SQL_AD_DROP_DOMAIN_CONSTRAINT','%SQL_AD_DROP_DOMAIN_DEFAULT','%SQL_AF_ALL',
- '%SQL_AF_AVG','%SQL_AF_COUNT','%SQL_AF_DISTINCT','%SQL_AF_MAX','%SQL_AF_MIN','%SQL_AF_SUM','%SQL_AGGREGATE_FUNCTIONS','%SQL_ALL_EXCEPT_LIKE',
- '%SQL_ALL_TYPES','%SQL_ALTER_DOMAIN','%SQL_ALTER_TABLE','%SQL_AM_CONNECTION','%SQL_AM_NONE','%SQL_AM_STATEMENT','%SQL_API_ALL_FUNCTIONS','%SQL_API_LOADBYORDINAL',
- '%SQL_API_ODBC3_ALL_FUNCTIONS','%SQL_API_ODBC3_ALL_FUNCTIONS_SIZE','%SQL_API_SQLALLOCCONNECT','%SQL_API_SQLALLOCENV','%SQL_API_SQLALLOCHANDLE','%SQL_API_SQLALLOCHANDLESTD','%SQL_API_SQLALLOCSTMT','%SQL_API_SQLBINDCOL',
- '%SQL_API_SQLBINDPARAM','%SQL_API_SQLBINDPARAMETER','%SQL_API_SQLBROWSECONNECT','%SQL_API_SQLBULKOPERATIONS','%SQL_API_SQLCANCEL','%SQL_API_SQLCLOSECURSOR','%SQL_API_SQLCOLATTRIBUTE','%SQL_API_SQLCOLATTRIBUTES',
- '%SQL_API_SQLCOLUMNPRIVILEGES','%SQL_API_SQLCOLUMNS','%SQL_API_SQLCONNECT','%SQL_API_SQLCOPYDESC','%SQL_API_SQLDATASOURCES','%SQL_API_SQLDESCRIBECOL','%SQL_API_SQLDESCRIBEPARAM','%SQL_API_SQLDISCONNECT',
- '%SQL_API_SQLDRIVERCONNECT','%SQL_API_SQLDRIVERS','%SQL_API_SQLENDTRAN','%SQL_API_SQLERROR','%SQL_API_SQLEXECDIRECT','%SQL_API_SQLEXECUTE','%SQL_API_SQLEXTENDEDFETCH','%SQL_API_SQLFETCH',
- '%SQL_API_SQLFETCHSCROLL','%SQL_API_SQLFOREIGNKEYS','%SQL_API_SQLFREECONNECT','%SQL_API_SQLFREEENV','%SQL_API_SQLFREEHANDLE','%SQL_API_SQLFREESTMT','%SQL_API_SQLGETCONNECTATTR','%SQL_API_SQLGETCONNECTOPTION',
- '%SQL_API_SQLGETCURSORNAME','%SQL_API_SQLGETDATA','%SQL_API_SQLGETDESCFIELD','%SQL_API_SQLGETDESCREC','%SQL_API_SQLGETDIAGFIELD','%SQL_API_SQLGETDIAGREC','%SQL_API_SQLGETENVATTR','%SQL_API_SQLGETFUNCTIONS',
- '%SQL_API_SQLGETINFO','%SQL_API_SQLGETSTMTATTR','%SQL_API_SQLGETSTMTOPTION','%SQL_API_SQLGETTYPEINFO','%SQL_API_SQLMORERESULTS','%SQL_API_SQLNATIVESQL','%SQL_API_SQLNUMPARAMS','%SQL_API_SQLNUMRESULTCOLS',
- '%SQL_API_SQLPARAMDATA','%SQL_API_SQLPARAMOPTIONS','%SQL_API_SQLPREPARE','%SQL_API_SQLPRIMARYKEYS','%SQL_API_SQLPROCEDURECOLUMNS','%SQL_API_SQLPROCEDURES','%SQL_API_SQLPUTDATA','%SQL_API_SQLROWCOUNT',
- '%SQL_API_SQLSETCONNECTATTR','%SQL_API_SQLSETCONNECTOPTION','%SQL_API_SQLSETCURSORNAME','%SQL_API_SQLSETDESCFIELD','%SQL_API_SQLSETDESCREC','%SQL_API_SQLSETENVATTR','%SQL_API_SQLSETPARAM','%SQL_API_SQLSETPOS',
- '%SQL_API_SQLSETSCROLLOPTIONS','%SQL_API_SQLSETSTMTATTR','%SQL_API_SQLSETSTMTOPTION','%SQL_API_SQLSPECIALCOLUMNS','%SQL_API_SQLSTATISTICS','%SQL_API_SQLTABLEPRIVILEGES','%SQL_API_SQLTABLES','%SQL_API_SQLTRANSACT',
- '%SQL_ARD_TYPE','%SQL_ASYNC_ENABLE','%SQL_ASYNC_ENABLE_DEFAULT','%SQL_ASYNC_ENABLE_OFF','%SQL_ASYNC_ENABLE_ON','%SQL_ASYNC_MODE','%SQL_ATTR_ACCESS_MODE','%SQL_ATTR_ANSI_APP',
- '%SQL_ATTR_APP_PARAM_DESC','%SQL_ATTR_APP_ROW_DESC','%SQL_ATTR_ASYNC_ENABLE','%SQL_ATTR_AUTOCOMMIT','%SQL_ATTR_AUTO_IPD','%SQL_ATTR_CONCURRENCY','%SQL_ATTR_CONNECTION_DEAD','%SQL_ATTR_CONNECTION_POOLING',
- '%SQL_ATTR_CONNECTION_TIMEOUT','%SQL_ATTR_CP_MATCH','%SQL_ATTR_CURRENT_CATALOG','%SQL_ATTR_CURSOR_SCROLLABLE','%SQL_ATTR_CURSOR_SENSITIVITY','%SQL_ATTR_CURSOR_TYPE','%SQL_ATTR_DISCONNECT_BEHAVIOR','%SQL_ATTR_ENABLE_AUTO_IPD',
- '%SQL_ATTR_ENLIST_IN_DTC','%SQL_ATTR_ENLIST_IN_XA','%SQL_ATTR_FETCH_BOOKMARK_PTR','%SQL_ATTR_IMP_PARAM_DESC','%SQL_ATTR_IMP_ROW_DESC','%SQL_ATTR_KEYSET_SIZE','%SQL_ATTR_LOGIN_TIMEOUT','%SQL_ATTR_MAX_LENGTH',
- '%SQL_ATTR_MAX_ROWS','%SQL_ATTR_METADATA_ID','%SQL_ATTR_NOSCAN','%SQL_ATTR_ODBC_CURSORS','%SQL_ATTR_ODBC_VERSION','%SQL_ATTR_OUTPUT_NTS','%SQL_ATTR_PACKET_SIZE','%SQL_ATTR_PARAMSET_SIZE',
- '%SQL_ATTR_PARAMS_PROCESSED_PTR','%SQL_ATTR_PARAM_BIND_OFFSET_PTR','%SQL_ATTR_PARAM_BIND_TYPE','%SQL_ATTR_PARAM_OPERATION_PTR','%SQL_ATTR_PARAM_STATUS_PTR','%SQL_ATTR_QUERY_TIMEOUT','%SQL_ATTR_QUIET_MODE','%SQL_ATTR_READONLY',
- '%SQL_ATTR_READWRITE_UNKNOWN','%SQL_ATTR_RETRIEVE_DATA','%SQL_ATTR_ROWS_FETCHED_PTR','%SQL_ATTR_ROW_ARRAY_SIZE','%SQL_ATTR_ROW_BIND_OFFSET_PTR','%SQL_ATTR_ROW_BIND_TYPE','%SQL_ATTR_ROW_NUMBER','%SQL_ATTR_ROW_OPERATION_PTR',
- '%SQL_ATTR_ROW_STATUS_PTR','%SQL_ATTR_SIMULATE_CURSOR','%SQL_ATTR_TRACE','%SQL_ATTR_TRACEFILE','%SQL_ATTR_TRANSLATE_LIB','%SQL_ATTR_TRANSLATE_OPTION','%SQL_ATTR_TXN_ISOLATION','%SQL_ATTR_USE_BOOKMARKS',
- '%SQL_ATTR_WRITE','%SQL_AT_ADD_COLUMN','%SQL_AT_ADD_COLUMN_COLLATION','%SQL_AT_ADD_COLUMN_DEFAULT','%SQL_AT_ADD_COLUMN_SINGLE','%SQL_AT_ADD_CONSTRAINT','%SQL_AT_ADD_TABLE_CONSTRAINT','%SQL_AT_CONSTRAINT_DEFERRABLE',
- '%SQL_AT_CONSTRAINT_INITIALLY_DEFERRED','%SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AT_CONSTRAINT_NAME_DEFINITION','%SQL_AT_CONSTRAINT_NON_DEFERRABLE','%SQL_AT_DROP_COLUMN','%SQL_AT_DROP_COLUMN_CASCADE','%SQL_AT_DROP_COLUMN_DEFAULT','%SQL_AT_DROP_COLUMN_RESTRICT',
- '%SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE','%SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT','%SQL_AT_SET_COLUMN_DEFAULT','%SQL_AUTOCOMMIT','%SQL_AUTOCOMMIT_DEFAULT','%SQL_AUTOCOMMIT_OFF','%SQL_AUTOCOMMIT_ON','%SQL_BATCH_ROW_COUNT',
- '%SQL_BATCH_SUPPORT','%SQL_BEST_ROWID','%SQL_BIGINT','%SQL_BINARY','%SQL_BIND_BY_COLUMN','%SQL_BIND_TYPE','%SQL_BIND_TYPE_DEFAULT','%SQL_BIT',
- '%SQL_BOOKMARK_PERSISTENCE','%SQL_BP_CLOSE','%SQL_BP_DELETE','%SQL_BP_DROP','%SQL_BP_OTHER_HSTMT','%SQL_BP_SCROLL','%SQL_BP_TRANSACTION','%SQL_BP_UPDATE',
- '%SQL_BRC_EXPLICIT','%SQL_BRC_PROCEDURES','%SQL_BRC_ROLLED_UP','%SQL_BS_ROW_COUNT_EXPLICIT','%SQL_BS_ROW_COUNT_PROC','%SQL_BS_SELECT_EXPLICIT','%SQL_BS_SELECT_PROC','%SQL_CA1_ABSOLUTE',
- '%SQL_CA1_BOOKMARK','%SQL_CA1_BULK_ADD','%SQL_CA1_BULK_DELETE_BY_BOOKMARK','%SQL_CA1_BULK_FETCH_BY_BOOKMARK','%SQL_CA1_BULK_UPDATE_BY_BOOKMARK','%SQL_CA1_LOCK_EXCLUSIVE','%SQL_CA1_LOCK_NO_CHANGE','%SQL_CA1_LOCK_UNLOCK',
- '%SQL_CA1_NEXT','%SQL_CA1_POSITIONED_DELETE','%SQL_CA1_POSITIONED_UPDATE','%SQL_CA1_POS_DELETE','%SQL_CA1_POS_POSITION','%SQL_CA1_POS_REFRESH','%SQL_CA1_POS_UPDATE','%SQL_CA1_RELATIVE',
- '%SQL_CA1_SELECT_FOR_UPDATE','%SQL_CA2_CRC_APPROXIMATE','%SQL_CA2_CRC_EXACT','%SQL_CA2_LOCK_CONCURRENCY','%SQL_CA2_MAX_ROWS_AFFECTS_ALL','%SQL_CA2_MAX_ROWS_CATALOG','%SQL_CA2_MAX_ROWS_DELETE','%SQL_CA2_MAX_ROWS_INSERT',
- '%SQL_CA2_MAX_ROWS_SELECT','%SQL_CA2_MAX_ROWS_UPDATE','%SQL_CA2_OPT_ROWVER_CONCURRENCY','%SQL_CA2_OPT_VALUES_CONCURRENCY','%SQL_CA2_READ_ONLY_CONCURRENCY','%SQL_CA2_SENSITIVITY_ADDITIONS','%SQL_CA2_SENSITIVITY_DELETIONS','%SQL_CA2_SENSITIVITY_UPDATES',
- '%SQL_CA2_SIMULATE_NON_UNIQUE','%SQL_CA2_SIMULATE_TRY_UNIQUE','%SQL_CA2_SIMULATE_UNIQUE','%SQL_CASCADE','%SQL_CATALOG_LOCATION','%SQL_CATALOG_NAME','%SQL_CATALOG_NAME_SEPARATOR','%SQL_CATALOG_TERM',
- '%SQL_CATALOG_USAGE','%SQL_CA_CONSTRAINT_DEFERRABLE','%SQL_CA_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CA_CONSTRAINT_NON_DEFERRABLE','%SQL_CA_CREATE_ASSERTION','%SQL_CB_CLOSE','%SQL_CB_DELETE',
- '%SQL_CB_NON_NULL','%SQL_CB_NULL','%SQL_CB_PRESERVE','%SQL_CCOL_CREATE_COLLATION','%SQL_CCS_COLLATE_CLAUSE','%SQL_CCS_CREATE_CHARACTER_SET','%SQL_CCS_LIMITED_COLLATION','%SQL_CC_CLOSE',
- '%SQL_CC_DELETE','%SQL_CC_PRESERVE','%SQL_CDO_COLLATION','%SQL_CDO_CONSTRAINT','%SQL_CDO_CONSTRAINT_DEFERRABLE','%SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CDO_CONSTRAINT_NAME_DEFINITION',
- '%SQL_CDO_CONSTRAINT_NON_DEFERRABLE','%SQL_CDO_CREATE_DOMAIN','%SQL_CDO_DEFAULT','%SQL_CD_FALSE','%SQL_CD_TRUE','%SQL_CHAR','%SQL_CLOSE','%SQL_CL_END',
- '%SQL_CL_START','%SQL_CN_ANY','%SQL_CN_DIFFERENT','%SQL_CN_NONE','%SQL_CODE_DATE','%SQL_CODE_DAY','%SQL_CODE_DAY_TO_HOUR','%SQL_CODE_DAY_TO_MINUTE',
- '%SQL_CODE_DAY_TO_SECOND','%SQL_CODE_HOUR','%SQL_CODE_HOUR_TO_MINUTE','%SQL_CODE_HOUR_TO_SECOND','%SQL_CODE_MINUTE','%SQL_CODE_MINUTE_TO_SECOND','%SQL_CODE_MONTH','%SQL_CODE_SECOND',
- '%SQL_CODE_TIME','%SQL_CODE_TIMESTAMP','%SQL_CODE_YEAR','%SQL_CODE_YEAR_TO_MONTH','%SQL_COLATT_OPT_MAX','%SQL_COLATT_OPT_MIN','%SQL_COLLATION_SEQ','%SQL_COLUMN_ALIAS',
- '%SQL_COLUMN_AUTO_INCREMENT','%SQL_COLUMN_CASE_SENSITIVE','%SQL_COLUMN_COUNT','%SQL_COLUMN_DISPLAY_SIZE','%SQL_COLUMN_IGNORE','%SQL_COLUMN_LABEL','%SQL_COLUMN_LENGTH','%SQL_COLUMN_MONEY',
- '%SQL_COLUMN_NAME','%SQL_COLUMN_NULLABLE','%SQL_COLUMN_NUMBER_UNKNOWN','%SQL_COLUMN_OWNER_NAME','%SQL_COLUMN_PRECISION','%SQL_COLUMN_QUALIFIER_NAME','%SQL_COLUMN_SCALE','%SQL_COLUMN_SEARCHABLE',
- '%SQL_COLUMN_TABLE_NAME','%SQL_COLUMN_TYPE','%SQL_COLUMN_TYPE_NAME','%SQL_COLUMN_UNSIGNED','%SQL_COLUMN_UPDATABLE','%SQL_COL_PRED_BASIC','%SQL_COL_PRED_CHAR','%SQL_COMMIT',
- '%SQL_CONCAT_NULL_BEHAVIOR','%SQL_CONCURRENCY','%SQL_CONCUR_DEFAULT','%SQL_CONCUR_LOCK','%SQL_CONCUR_READ_ONLY','%SQL_CONCUR_ROWVER','%SQL_CONCUR_TIMESTAMP','%SQL_CONCUR_VALUES',
- '%SQL_CONVERT_BIGINT','%SQL_CONVERT_BINARY','%SQL_CONVERT_BIT','%SQL_CONVERT_CHAR','%SQL_CONVERT_DATE','%SQL_CONVERT_DECIMAL','%SQL_CONVERT_DOUBLE','%SQL_CONVERT_FLOAT',
- '%SQL_CONVERT_FUNCTIONS','%SQL_CONVERT_GUID','%SQL_CONVERT_INTEGER','%SQL_CONVERT_INTERVAL_DAY_TIME','%SQL_CONVERT_INTERVAL_YEAR_MONTH','%SQL_CONVERT_LONGVARBINARY','%SQL_CONVERT_LONGVARCHAR','%SQL_CONVERT_NUMERIC',
- '%SQL_CONVERT_REAL','%SQL_CONVERT_SMALLINT','%SQL_CONVERT_TIME','%SQL_CONVERT_TIMESTAMP','%SQL_CONVERT_TINYINT','%SQL_CONVERT_VARBINARY','%SQL_CONVERT_VARCHAR','%SQL_CONVERT_WCHAR',
- '%SQL_CONVERT_WLONGVARCHAR','%SQL_CONVERT_WVARCHAR','%SQL_CORRELATION_NAME','%SQL_CP_DEFAULT','%SQL_CP_MATCH_DEFAULT','%SQL_CP_OFF','%SQL_CP_ONE_PER_DRIVER','%SQL_CP_ONE_PER_HENV',
- '%SQL_CP_RELAXED_MATCH','%SQL_CP_STRICT_MATCH','%SQL_CREATE_ASSERTION','%SQL_CREATE_CHARACTER_SET','%SQL_CREATE_COLLATION','%SQL_CREATE_DOMAIN','%SQL_CREATE_SCHEMA','%SQL_CREATE_TABLE',
- '%SQL_CREATE_TRANSLATION','%SQL_CREATE_VIEW','%SQL_CR_CLOSE','%SQL_CR_DELETE','%SQL_CR_PRESERVE','%SQL_CS_AUTHORIZATION','%SQL_CS_CREATE_SCHEMA','%SQL_CS_DEFAULT_CHARACTER_SET',
- '%SQL_CTR_CREATE_TRANSLATION','%SQL_CT_COLUMN_COLLATION','%SQL_CT_COLUMN_CONSTRAINT','%SQL_CT_COLUMN_DEFAULT','%SQL_CT_COMMIT_DELETE','%SQL_CT_COMMIT_PRESERVE','%SQL_CT_CONSTRAINT_DEFERRABLE','%SQL_CT_CONSTRAINT_INITIALLY_DEFERRED',
- '%SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CT_CONSTRAINT_NAME_DEFINITION','%SQL_CT_CONSTRAINT_NON_DEFERRABLE','%SQL_CT_CREATE_TABLE','%SQL_CT_GLOBAL_TEMPORARY','%SQL_CT_LOCAL_TEMPORARY','%SQL_CT_TABLE_CONSTRAINT','%SQL_CURRENT_QUALIFIER',
- '%SQL_CURSOR_COMMIT_BEHAVIOR','%SQL_CURSOR_DYNAMIC','%SQL_CURSOR_FORWARD_ONLY','%SQL_CURSOR_KEYSET_DRIVEN','%SQL_CURSOR_ROLLBACK_BEHAVIOR','%SQL_CURSOR_SENSITIVITY','%SQL_CURSOR_STATIC','%SQL_CURSOR_TYPE',
- '%SQL_CURSOR_TYPE_DEFAULT','%SQL_CUR_DEFAULT','%SQL_CUR_USE_DRIVER','%SQL_CUR_USE_IF_NEEDED','%SQL_CUR_USE_ODBC','%SQL_CU_DML_STATEMENTS','%SQL_CU_INDEX_DEFINITION','%SQL_CU_PRIVILEGE_DEFINITION',
- '%SQL_CU_PROCEDURE_INVOCATION','%SQL_CU_TABLE_DEFINITION','%SQL_CVT_BIGINT','%SQL_CVT_BINARY','%SQL_CVT_BIT','%SQL_CVT_CHAR','%SQL_CVT_DATE','%SQL_CVT_DECIMAL',
- '%SQL_CVT_DOUBLE','%SQL_CVT_FLOAT','%SQL_CVT_GUID','%SQL_CVT_INTEGER','%SQL_CVT_INTERVAL_DAY_TIME','%SQL_CVT_INTERVAL_YEAR_MONTH','%SQL_CVT_LONGVARBINARY','%SQL_CVT_LONGVARCHAR',
- '%SQL_CVT_NUMERIC','%SQL_CVT_REAL','%SQL_CVT_SMALLINT','%SQL_CVT_TIME','%SQL_CVT_TIMESTAMP','%SQL_CVT_TINYINT','%SQL_CVT_VARBINARY','%SQL_CVT_VARCHAR',
- '%SQL_CVT_WCHAR','%SQL_CVT_WLONGVARCHAR','%SQL_CVT_WVARCHAR','%SQL_CV_CASCADED','%SQL_CV_CHECK_OPTION','%SQL_CV_CREATE_VIEW','%SQL_CV_LOCAL','%SQL_C_BINARY',
- '%SQL_C_BIT','%SQL_C_BOOKMARK','%SQL_C_CHAR','%SQL_C_DATE','%SQL_C_DEFAULT','%SQL_C_DOUBLE','%SQL_C_FLOAT','%SQL_C_GUID',
- '%SQL_C_INTERVAL_DAY','%SQL_C_INTERVAL_DAY_TO_HOUR','%SQL_C_INTERVAL_DAY_TO_MINUTE','%SQL_C_INTERVAL_DAY_TO_SECOND','%SQL_C_INTERVAL_HOUR','%SQL_C_INTERVAL_HOUR_TO_MINUTE','%SQL_C_INTERVAL_HOUR_TO_SECOND','%SQL_C_INTERVAL_MINUTE',
- '%SQL_C_INTERVAL_MINUTE_TO_SECOND','%SQL_C_INTERVAL_MONTH','%SQL_C_INTERVAL_SECOND','%SQL_C_INTERVAL_YEAR','%SQL_C_INTERVAL_YEAR_TO_MONTH','%SQL_C_LONG','%SQL_C_NUMERIC','%SQL_C_SBIGINT',
- '%SQL_C_SHORT','%SQL_C_SLONG','%SQL_C_SSHORT','%SQL_C_STINYINT','%SQL_C_TIME','%SQL_C_TIMESTAMP','%SQL_C_TINYINT','%SQL_C_TYPE_DATE',
- '%SQL_C_TYPE_TIME','%SQL_C_TYPE_TIMESTAMP','%SQL_C_UBIGINT','%SQL_C_ULONG','%SQL_C_USHORT','%SQL_C_UTINYINT','%SQL_C_VARBOOKMARK','%SQL_DATABASE_NAME',
- '%SQL_DATA_AT_EXEC','%SQL_DATA_SOURCE_NAME','%SQL_DATA_SOURCE_READ_ONLY','%SQL_DATE','%SQL_DATETIME','%SQL_DATETIME_LITERALS','%SQL_DATE_LEN','%SQL_DAY',
- '%SQL_DAY_TO_HOUR','%SQL_DAY_TO_MINUTE','%SQL_DAY_TO_SECOND','%SQL_DA_DROP_ASSERTION','%SQL_DBMS_NAME','%SQL_DBMS_VER','%SQL_DB_DEFAULT','%SQL_DB_DISCONNECT',
- '%SQL_DB_RETURN_TO_POOL','%SQL_DCS_DROP_CHARACTER_SET','%SQL_DC_DROP_COLLATION','%SQL_DDL_INDEX','%SQL_DD_CASCADE','%SQL_DD_DROP_DOMAIN','%SQL_DD_RESTRICT','%SQL_DECIMAL',
- '%SQL_DEFAULT','%SQL_DEFAULT_PARAM','%SQL_DEFAULT_TXN_ISOLATION','%SQL_DELETE','%SQL_DELETE_BY_BOOKMARK','%SQL_DESCRIBE_PARAMETER','%SQL_DESC_ALLOC_AUTO','%SQL_DESC_ALLOC_TYPE',
- '%SQL_DESC_ALLOC_USER','%SQL_DESC_ARRAY_SIZE','%SQL_DESC_ARRAY_STATUS_PTR','%SQL_DESC_AUTO_UNIQUE_VALUE','%SQL_DESC_BASE_COLUMN_NAME','%SQL_DESC_BASE_TABLE_NAME','%SQL_DESC_BIND_OFFSET_PTR','%SQL_DESC_BIND_TYPE',
- '%SQL_DESC_CASE_SENSITIVE','%SQL_DESC_CATALOG_NAME','%SQL_DESC_CONCISE_TYPE','%SQL_DESC_COUNT','%SQL_DESC_DATA_PTR','%SQL_DESC_DATETIME_INTERVAL_CODE','%SQL_DESC_DATETIME_INTERVAL_PRECISION','%SQL_DESC_DISPLAY_SIZE',
- '%SQL_DESC_FIXED_PREC_SCALE','%SQL_DESC_INDICATOR_PTR','%SQL_DESC_LABEL','%SQL_DESC_LENGTH','%SQL_DESC_LITERAL_PREFIX','%SQL_DESC_LITERAL_SUFFIX','%SQL_DESC_LOCAL_TYPE_NAME','%SQL_DESC_MAXIMUM_SCALE',
- '%SQL_DESC_MINIMUM_SCALE','%SQL_DESC_NAME','%SQL_DESC_NULLABLE','%SQL_DESC_NUM_PREC_RADIX','%SQL_DESC_OCTET_LENGTH','%SQL_DESC_OCTET_LENGTH_PTR','%SQL_DESC_PARAMETER_TYPE','%SQL_DESC_PRECISION',
- '%SQL_DESC_ROWS_PROCESSED_PTR','%SQL_DESC_SCALE','%SQL_DESC_SCHEMA_NAME','%SQL_DESC_SEARCHABLE','%SQL_DESC_TABLE_NAME','%SQL_DESC_TYPE','%SQL_DESC_TYPE_NAME','%SQL_DESC_UNNAMED',
- '%SQL_DESC_UNSIGNED','%SQL_DESC_UPDATABLE','%SQL_DIAG_ALTER_TABLE','%SQL_DIAG_CALL','%SQL_DIAG_CLASS_ORIGIN','%SQL_DIAG_COLUMN_NUMBER','%SQL_DIAG_CONNECTION_NAME','%SQL_DIAG_CREATE_INDEX',
- '%SQL_DIAG_CREATE_TABLE','%SQL_DIAG_CREATE_VIEW','%SQL_DIAG_CURSOR_ROW_COUNT','%SQL_DIAG_DELETE_WHERE','%SQL_DIAG_DROP_INDEX','%SQL_DIAG_DROP_TABLE','%SQL_DIAG_DROP_VIEW','%SQL_DIAG_DYNAMIC_DELETE_CURSOR',
- '%SQL_DIAG_DYNAMIC_FUNCTION','%SQL_DIAG_DYNAMIC_FUNCTION_CODE','%SQL_DIAG_DYNAMIC_UPDATE_CURSOR','%SQL_DIAG_GRANT','%SQL_DIAG_INSERT','%SQL_DIAG_MESSAGE_TEXT','%SQL_DIAG_NATIVE','%SQL_DIAG_NUMBER',
- '%SQL_DIAG_RETURNCODE','%SQL_DIAG_REVOKE','%SQL_DIAG_ROW_COUNT','%SQL_DIAG_ROW_NUMBER','%SQL_DIAG_SELECT_CURSOR','%SQL_DIAG_SERVER_NAME','%SQL_DIAG_SQLSTATE','%SQL_DIAG_SUBCLASS_ORIGIN',
- '%SQL_DIAG_UNKNOWN_STATEMENT','%SQL_DIAG_UPDATE_WHERE','%SQL_DI_CREATE_INDEX','%SQL_DI_DROP_INDEX','%SQL_DL_SQL92_DATE','%SQL_DL_SQL92_INTERVAL_DAY','%SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR','%SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE',
- '%SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND','%SQL_DL_SQL92_INTERVAL_HOUR','%SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE','%SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MINUTE','%SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MONTH','%SQL_DL_SQL92_INTERVAL_SECOND',
- '%SQL_DL_SQL92_INTERVAL_YEAR','%SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH','%SQL_DL_SQL92_TIME','%SQL_DL_SQL92_TIMESTAMP','%SQL_DM_VER','%SQL_DOUBLE','%SQL_DRIVER_COMPLETE','%SQL_DRIVER_COMPLETE_REQUIRED',
- '%SQL_DRIVER_HDBC','%SQL_DRIVER_HDESC','%SQL_DRIVER_HENV','%SQL_DRIVER_HLIB','%SQL_DRIVER_HSTMT','%SQL_DRIVER_NAME','%SQL_DRIVER_NOPROMPT','%SQL_DRIVER_ODBC_VER',
- '%SQL_DRIVER_PROMPT','%SQL_DRIVER_VER','%SQL_DROP','%SQL_DROP_ASSERTION','%SQL_DROP_CHARACTER_SET','%SQL_DROP_COLLATION','%SQL_DROP_DOMAIN','%SQL_DROP_SCHEMA',
- '%SQL_DROP_TABLE','%SQL_DROP_TRANSLATION','%SQL_DROP_VIEW','%SQL_DS_CASCADE','%SQL_DS_DROP_SCHEMA','%SQL_DS_RESTRICT','%SQL_DTC_DONE','%SQL_DTC_ENLIST_EXPENSIVE',
- '%SQL_DTC_TRANSITION_COST','%SQL_DTC_UNENLIST_EXPENSIVE','%SQL_DTR_DROP_TRANSLATION','%SQL_DT_CASCADE','%SQL_DT_DROP_TABLE','%SQL_DT_RESTRICT','%SQL_DV_CASCADE','%SQL_DV_DROP_VIEW',
- '%SQL_DV_RESTRICT','%SQL_DYNAMIC_CURSOR_ATTRIBUTES1','%SQL_DYNAMIC_CURSOR_ATTRIBUTES2','%SQL_ENSURE','%SQL_ENTIRE_ROWSET','%SQL_ERROR','%SQL_EXPRESSIONS_IN_ORDERBY','%SQL_FALSE',
- '%SQL_FD_FETCH_ABSOLUTE','%SQL_FD_FETCH_BOOKMARK','%SQL_FD_FETCH_FIRST','%SQL_FD_FETCH_LAST','%SQL_FD_FETCH_NEXT','%SQL_FD_FETCH_PREV','%SQL_FD_FETCH_PRIOR','%SQL_FD_FETCH_RELATIVE',
- '%SQL_FETCH_ABSOLUTE','%SQL_FETCH_BOOKMARK','%SQL_FETCH_BY_BOOKMARK','%SQL_FETCH_DIRECTION','%SQL_FETCH_FIRST','%SQL_FETCH_FIRST_SYSTEM','%SQL_FETCH_FIRST_USER','%SQL_FETCH_LAST',
- '%SQL_FETCH_NEXT','%SQL_FETCH_PREV','%SQL_FETCH_PRIOR','%SQL_FETCH_RELATIVE','%SQL_FILE_CATALOG','%SQL_FILE_NOT_SUPPORTED','%SQL_FILE_QUALIFIER','%SQL_FILE_TABLE',
- '%SQL_FILE_USAGE','%SQL_FLOAT','%SQL_FN_CVT_CAST','%SQL_FN_CVT_CONVERT','%SQL_FN_NUM_ABS','%SQL_FN_NUM_ACOS','%SQL_FN_NUM_ASIN','%SQL_FN_NUM_ATAN',
- '%SQL_FN_NUM_ATAN2','%SQL_FN_NUM_CEILING','%SQL_FN_NUM_COS','%SQL_FN_NUM_COT','%SQL_FN_NUM_DEGREES','%SQL_FN_NUM_EXP','%SQL_FN_NUM_FLOOR','%SQL_FN_NUM_LOG',
- '%SQL_FN_NUM_LOG10','%SQL_FN_NUM_MOD','%SQL_FN_NUM_PI','%SQL_FN_NUM_POWER','%SQL_FN_NUM_RADIANS','%SQL_FN_NUM_RAND','%SQL_FN_NUM_ROUND','%SQL_FN_NUM_SIGN',
- '%SQL_FN_NUM_SIN','%SQL_FN_NUM_SQRT','%SQL_FN_NUM_TAN','%SQL_FN_NUM_TRUNCATE','%SQL_FN_STR_ASCII','%SQL_FN_STR_BIT_LENGTH','%SQL_FN_STR_CHAR','%SQL_FN_STR_CHARACTER_LENGTH',
- '%SQL_FN_STR_CHAR_LENGTH','%SQL_FN_STR_CONCAT','%SQL_FN_STR_DIFFERENCE','%SQL_FN_STR_INSERT','%SQL_FN_STR_LCASE','%SQL_FN_STR_LEFT','%SQL_FN_STR_LENGTH','%SQL_FN_STR_LOCATE',
- '%SQL_FN_STR_LOCATE_2','%SQL_FN_STR_LTRIM','%SQL_FN_STR_OCTET_LENGTH','%SQL_FN_STR_POSITION','%SQL_FN_STR_REPEAT','%SQL_FN_STR_REPLACE','%SQL_FN_STR_RIGHT','%SQL_FN_STR_RTRIM',
- '%SQL_FN_STR_SOUNDEX','%SQL_FN_STR_SPACE','%SQL_FN_STR_SUBSTRING','%SQL_FN_STR_UCASE','%SQL_FN_SYS_DBNAME','%SQL_FN_SYS_IFNULL','%SQL_FN_SYS_USERNAME','%SQL_FN_TD_CURDATE',
- '%SQL_FN_TD_CURRENT_DATE','%SQL_FN_TD_CURRENT_TIME','%SQL_FN_TD_CURRENT_TIMESTAMP','%SQL_FN_TD_CURTIME','%SQL_FN_TD_DAYNAME','%SQL_FN_TD_DAYOFMONTH','%SQL_FN_TD_DAYOFWEEK','%SQL_FN_TD_DAYOFYEAR',
- '%SQL_FN_TD_EXTRACT','%SQL_FN_TD_HOUR','%SQL_FN_TD_MINUTE','%SQL_FN_TD_MONTH','%SQL_FN_TD_MONTHNAME','%SQL_FN_TD_NOW','%SQL_FN_TD_QUARTER','%SQL_FN_TD_SECOND',
- '%SQL_FN_TD_TIMESTAMPADD','%SQL_FN_TD_TIMESTAMPDIFF','%SQL_FN_TD_WEEK','%SQL_FN_TD_YEAR','%SQL_FN_TSI_DAY','%SQL_FN_TSI_FRAC_SECOND','%SQL_FN_TSI_HOUR','%SQL_FN_TSI_MINUTE',
- '%SQL_FN_TSI_MONTH','%SQL_FN_TSI_QUARTER','%SQL_FN_TSI_SECOND','%SQL_FN_TSI_WEEK','%SQL_FN_TSI_YEAR','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2','%SQL_GB_COLLATE',
- '%SQL_GB_GROUP_BY_CONTAINS_SELECT','%SQL_GB_GROUP_BY_EQUALS_SELECT','%SQL_GB_NOT_SUPPORTED','%SQL_GB_NO_RELATION','%SQL_GD_ANY_COLUMN','%SQL_GD_ANY_ORDER','%SQL_GD_BLOCK','%SQL_GD_BOUND',
- '%SQL_GETDATA_EXTENSIONS','%SQL_GET_BOOKMARK','%SQL_GROUP_BY','%SQL_GUID','%SQL_HANDLE_DBC','%SQL_HANDLE_DESC','%SQL_HANDLE_ENV','%SQL_HANDLE_SENV',
- '%SQL_HANDLE_STMT','%SQL_HOUR','%SQL_HOUR_TO_MINUTE','%SQL_HOUR_TO_SECOND','%SQL_IC_LOWER','%SQL_IC_MIXED','%SQL_IC_SENSITIVE','%SQL_IC_UPPER',
- '%SQL_IDENTIFIER_CASE','%SQL_IDENTIFIER_QUOTE_CHAR','%SQL_IGNORE','%SQL_IK_ALL','%SQL_IK_ASC','%SQL_IK_DESC','%SQL_IK_NONE','%SQL_INDEX_ALL',
- '%SQL_INDEX_CLUSTERED','%SQL_INDEX_HASHED','%SQL_INDEX_KEYWORDS','%SQL_INDEX_OTHER','%SQL_INDEX_UNIQUE','%SQL_INFO_FIRST','%SQL_INFO_SCHEMA_VIEWS','%SQL_INITIALLY_DEFERRED',
- '%SQL_INITIALLY_IMMEDIATE','%SQL_INSENSITIVE','%SQL_INSERT_STATEMENT','%SQL_INTEGER','%SQL_INTEGRITY','%SQL_INTERVAL','%SQL_INTERVAL_DAY','%SQL_INTERVAL_DAY_TO_HOUR',
- '%SQL_INTERVAL_DAY_TO_MINUTE','%SQL_INTERVAL_DAY_TO_SECOND','%SQL_INTERVAL_HOUR','%SQL_INTERVAL_HOUR_TO_MINUTE','%SQL_INTERVAL_HOUR_TO_SECOND','%SQL_INTERVAL_MINUTE','%SQL_INTERVAL_MINUTE_TO_SECOND','%SQL_INTERVAL_MONTH',
- '%SQL_INTERVAL_SECOND','%SQL_INTERVAL_YEAR','%SQL_INTERVAL_YEAR_TO_MONTH','%SQL_INVALID_HANDLE','%SQL_ISV_ASSERTIONS','%SQL_ISV_CHARACTER_SETS','%SQL_ISV_CHECK_CONSTRAINTS','%SQL_ISV_COLLATIONS',
- '%SQL_ISV_COLUMNS','%SQL_ISV_COLUMN_DOMAIN_USAGE','%SQL_ISV_COLUMN_PRIVILEGES','%SQL_ISV_CONSTRAINT_COLUMN_USAGE','%SQL_ISV_CONSTRAINT_TABLE_USAGE','%SQL_ISV_DOMAINS','%SQL_ISV_DOMAIN_CONSTRAINTS','%SQL_ISV_KEY_COLUMN_USAGE',
- '%SQL_ISV_REFERENTIAL_CONSTRAINTS','%SQL_ISV_SCHEMATA','%SQL_ISV_SQL_LANGUAGES','%SQL_ISV_TABLES','%SQL_ISV_TABLE_CONSTRAINTS','%SQL_ISV_TABLE_PRIVILEGES','%SQL_ISV_TRANSLATIONS','%SQL_ISV_USAGE_PRIVILEGES',
- '%SQL_ISV_VIEWS','%SQL_ISV_VIEW_COLUMN_USAGE','%SQL_ISV_VIEW_TABLE_USAGE','%SQL_IS_DAY','%SQL_IS_DAY_TO_HOUR','%SQL_IS_DAY_TO_MINUTE','%SQL_IS_DAY_TO_SECOND','%SQL_IS_HOUR',
- '%SQL_IS_HOUR_TO_MINUTE','%SQL_IS_HOUR_TO_SECOND','%SQL_IS_INSERT_LITERALS','%SQL_IS_INSERT_SEARCHED','%SQL_IS_INTEGER','%SQL_IS_MINUTE','%SQL_IS_MINUTE_TO_SECOND','%SQL_IS_MONTH',
- '%SQL_IS_POINTER','%SQL_IS_SECOND','%SQL_IS_SELECT_INTO','%SQL_IS_SMALLINT','%SQL_IS_UINTEGER','%SQL_IS_USMALLINT','%SQL_IS_YEAR','%SQL_IS_YEAR_TO_MONTH',
- '%SQL_KEYSET_CURSOR_ATTRIBUTES1','%SQL_KEYSET_CURSOR_ATTRIBUTES2','%SQL_KEYSET_SIZE','%SQL_KEYSET_SIZE_DEFAULT','%SQL_KEYWORDS','%SQL_LCK_EXCLUSIVE','%SQL_LCK_NO_CHANGE','%SQL_LCK_UNLOCK',
- '%SQL_LEN_BINARY_ATTR_OFFSET','%SQL_LEN_DATA_AT_EXEC_OFFSET','%SQL_LIKE_ESCAPE_CLAUSE','%SQL_LIKE_ONLY','%SQL_LOCK_EXCLUSIVE','%SQL_LOCK_NO_CHANGE','%SQL_LOCK_TYPES','%SQL_LOCK_UNLOCK',
- '%SQL_LOGIN_TIMEOUT','%SQL_LOGIN_TIMEOUT_DEFAULT','%SQL_LONGVARBINARY','%SQL_LONGVARCHAR','%SQL_MAXIMUM_CATALOG_NAME_LENGTH','%SQL_MAXIMUM_COLUMNS_IN_GROUP_BY','%SQL_MAXIMUM_COLUMNS_IN_INDEX','%SQL_MAXIMUM_COLUMNS_IN_ORDER_BY',
- '%SQL_MAXIMUM_COLUMNS_IN_SELECT','%SQL_MAXIMUM_COLUMN_NAME_LENGTH','%SQL_MAXIMUM_CONCURRENT_ACTIVITIES','%SQL_MAXIMUM_CURSOR_NAME_LENGTH','%SQL_MAXIMUM_DRIVER_CONNECTIONS','%SQL_MAXIMUM_IDENTIFIER_LENGTH','%SQL_MAXIMUM_INDEX_SIZE','%SQL_MAXIMUM_ROW_SIZE',
- '%SQL_MAXIMUM_SCHEMA_NAME_LENGTH','%SQL_MAXIMUM_STATEMENT_LENGTH','%SQL_MAXIMUM_TABLES_IN_SELECT','%SQL_MAXIMUM_USER_NAME_LENGTH','%SQL_MAX_ASYNC_CONCURRENT_STATEMENTS','%SQL_MAX_BINARY_LITERAL_LEN','%SQL_MAX_CATALOG_NAME_LEN','%SQL_MAX_CHAR_LITERAL_LEN',
- '%SQL_MAX_COLUMNS_IN_GROUP_BY','%SQL_MAX_COLUMNS_IN_INDEX','%SQL_MAX_COLUMNS_IN_ORDER_BY','%SQL_MAX_COLUMNS_IN_SELECT','%SQL_MAX_COLUMNS_IN_TABLE','%SQL_MAX_COLUMN_NAME_LEN','%SQL_MAX_CONCURRENT_ACTIVITIES','%SQL_MAX_CURSOR_NAME_LEN',
- '%SQL_MAX_DRIVER_CONNECTIONS','%SQL_MAX_DSN_LENGTH','%SQL_MAX_IDENTIFIER_LEN','%SQL_MAX_INDEX_SIZE','%SQL_MAX_LENGTH','%SQL_MAX_LENGTH_DEFAULT','%SQL_MAX_MESSAGE_LENGTH','%SQL_MAX_NUMERIC_LEN',
- '%SQL_MAX_OPTION_STRING_LENGTH','%SQL_MAX_OWNER_NAME_LEN','%SQL_MAX_PROCEDURE_NAME_LEN','%SQL_MAX_QUALIFIER_NAME_LEN','%SQL_MAX_ROWS','%SQL_MAX_ROWS_DEFAULT','%SQL_MAX_ROW_SIZE','%SQL_MAX_ROW_SIZE_INCLUDES_LONG',
- '%SQL_MAX_SCHEMA_NAME_LEN','%SQL_MAX_STATEMENT_LEN','%SQL_MAX_TABLES_IN_SELECT','%SQL_MAX_TABLE_NAME_LEN','%SQL_MAX_USER_NAME_LEN','%SQL_MINUTE','%SQL_MINUTE_TO_SECOND','%SQL_MODE_DEFAULT',
- '%SQL_MODE_READ_ONLY','%SQL_MODE_READ_WRITE','%SQL_MONTH','%SQL_MULTIPLE_ACTIVE_TXN','%SQL_MULT_RESULT_SETS','%SQL_NAMED','%SQL_NC_END','%SQL_NC_HIGH',
- '%SQL_NC_LOW','%SQL_NC_START','%SQL_NEED_DATA','%SQL_NEED_LONG_DATA_LEN','%SQL_NNC_NON_NULL','%SQL_NNC_NULL','%SQL_NONSCROLLABLE','%SQL_NON_NULLABLE_COLUMNS',
- '%SQL_NOSCAN','%SQL_NOSCAN_DEFAULT','%SQL_NOSCAN_OFF','%SQL_NOSCAN_ON','%SQL_NOT_DEFERRABLE','%SQL_NO_ACTION','%SQL_NO_COLUMN_NUMBER','%SQL_NO_DATA',
- '%SQL_NO_DATA_FOUND','%SQL_NO_NULLS','%SQL_NO_ROW_NUMBER','%SQL_NO_TOTAL','%SQL_NTS','%SQL_NTSL','%SQL_NULLABLE','%SQL_NULLABLE_UNKNOWN',
- '%SQL_NULL_COLLATION','%SQL_NULL_DATA','%SQL_NULL_HANDLE','%SQL_NULL_HDBC','%SQL_NULL_HDESC','%SQL_NULL_HENV','%SQL_NULL_HSTMT','%SQL_NUMERIC',
- '%SQL_NUMERIC_FUNCTIONS','%SQL_OAC_LEVEL1','%SQL_OAC_LEVEL2','%SQL_OAC_NONE','%SQL_ODBC_API_CONFORMANCE','%SQL_ODBC_CURSORS','%SQL_ODBC_INTERFACE_CONFORMANCE','%SQL_ODBC_SAG_CLI_CONFORMANCE',
- '%SQL_ODBC_SQL_CONFORMANCE','%SQL_ODBC_SQL_OPT_IEF','%SQL_ODBC_VER','%SQL_OIC_CORE','%SQL_OIC_LEVEL1','%SQL_OIC_LEVEL2','%SQL_OJ_ALL_COMPARISON_OPS','%SQL_OJ_CAPABILITIES',
- '%SQL_OJ_FULL','%SQL_OJ_INNER','%SQL_OJ_LEFT','%SQL_OJ_NESTED','%SQL_OJ_NOT_ORDERED','%SQL_OJ_RIGHT','%SQL_OPT_TRACE','%SQL_OPT_TRACEFILE',
- '%SQL_OPT_TRACE_DEFAULT','%SQL_OPT_TRACE_OFF','%SQL_OPT_TRACE_ON','%SQL_ORDER_BY_COLUMNS_IN_SELECT','%SQL_OSCC_COMPLIANT','%SQL_OSCC_NOT_COMPLIANT','%SQL_OSC_CORE','%SQL_OSC_EXTENDED',
- '%SQL_OSC_MINIMUM','%SQL_OUTER_JOINS','%SQL_OUTER_JOIN_CAPABILITIES','%SQL_OU_DML_STATEMENTS','%SQL_OU_INDEX_DEFINITION','%SQL_OU_PRIVILEGE_DEFINITION','%SQL_OU_PROCEDURE_INVOCATION','%SQL_OU_TABLE_DEFINITION',
- '%SQL_OV_ODBC2','%SQL_OV_ODBC3','%SQL_OWNER_TERM','%SQL_OWNER_USAGE','%SQL_PACKET_SIZE','%SQL_PARAM_ARRAY_ROW_COUNTS','%SQL_PARAM_ARRAY_SELECTS','%SQL_PARAM_BIND_BY_COLUMN',
- '%SQL_PARAM_BIND_TYPE_DEFAULT','%SQL_PARAM_DIAG_UNAVAILABLE','%SQL_PARAM_ERROR','%SQL_PARAM_IGNORE','%SQL_PARAM_INPUT','%SQL_PARAM_INPUT_OUTPUT','%SQL_PARAM_OUTPUT','%SQL_PARAM_PROCEED',
- '%SQL_PARAM_SUCCESS','%SQL_PARAM_SUCCESS_WITH_INFO','%SQL_PARAM_TYPE_DEFAULT','%SQL_PARAM_TYPE_UNKNOWN','%SQL_PARAM_UNUSED','%SQL_PARC_BATCH','%SQL_PARC_NO_BATCH','%SQL_PAS_BATCH',
- '%SQL_PAS_NO_BATCH','%SQL_PAS_NO_SELECT','%SQL_PC_NON_PSEUDO','%SQL_PC_NOT_PSEUDO','%SQL_PC_PSEUDO','%SQL_PC_UNKNOWN','%SQL_POSITION','%SQL_POSITIONED_STATEMENTS',
- '%SQL_POS_ADD','%SQL_POS_DELETE','%SQL_POS_OPERATIONS','%SQL_POS_POSITION','%SQL_POS_REFRESH','%SQL_POS_UPDATE','%SQL_PRED_BASIC','%SQL_PRED_CHAR',
- '%SQL_PRED_NONE','%SQL_PRED_SEARCHABLE','%SQL_PROCEDURES','%SQL_PROCEDURE_TERM','%SQL_PS_POSITIONED_DELETE','%SQL_PS_POSITIONED_UPDATE','%SQL_PS_SELECT_FOR_UPDATE','%SQL_PT_FUNCTION',
- '%SQL_PT_PROCEDURE','%SQL_PT_UNKNOWN','%SQL_QL_END','%SQL_QL_START','%SQL_QUALIFIER_LOCATION','%SQL_QUALIFIER_NAME_SEPARATOR','%SQL_QUALIFIER_TERM','%SQL_QUALIFIER_USAGE',
- '%SQL_QUERY_TIMEOUT','%SQL_QUERY_TIMEOUT_DEFAULT','%SQL_QUICK','%SQL_QUIET_MODE','%SQL_QUOTED_IDENTIFIER_CASE','%SQL_QU_DML_STATEMENTS','%SQL_QU_INDEX_DEFINITION','%SQL_QU_PRIVILEGE_DEFINITION',
- '%SQL_QU_PROCEDURE_INVOCATION','%SQL_QU_TABLE_DEFINITION','%SQL_RD_DEFAULT','%SQL_RD_OFF','%SQL_RD_ON','%SQL_REAL','%SQL_REFRESH','%SQL_RESET_PARAMS',
- '%SQL_RESTRICT','%SQL_RESULT_COL','%SQL_RETRIEVE_DATA','%SQL_RETURN_VALUE','%SQL_ROLLBACK','%SQL_ROWSET_SIZE','%SQL_ROWSET_SIZE_DEFAULT','%SQL_ROWVER',
- '%SQL_ROW_ADDED','%SQL_ROW_DELETED','%SQL_ROW_ERROR','%SQL_ROW_IDENTIFIER','%SQL_ROW_IGNORE','%SQL_ROW_NOROW','%SQL_ROW_NUMBER','%SQL_ROW_NUMBER_UNKNOWN',
- '%SQL_ROW_PROCEED','%SQL_ROW_SUCCESS','%SQL_ROW_SUCCESS_WITH_INFO','%SQL_ROW_UPDATED','%SQL_ROW_UPDATES','%SQL_SCCO_LOCK','%SQL_SCCO_OPT_ROWVER','%SQL_SCCO_OPT_TIMESTAMP',
- '%SQL_SCCO_OPT_VALUES','%SQL_SCCO_READ_ONLY','%SQL_SCC_ISO92_CLI','%SQL_SCC_XOPEN_CLI_VERSION1','%SQL_SCHEMA_TERM','%SQL_SCHEMA_USAGE','%SQL_SCOPE_CURROW','%SQL_SCOPE_SESSION',
- '%SQL_SCOPE_TRANSACTION','%SQL_SCROLLABLE','%SQL_SCROLL_CONCURRENCY','%SQL_SCROLL_DYNAMIC','%SQL_SCROLL_FORWARD_ONLY','%SQL_SCROLL_KEYSET_DRIVEN','%SQL_SCROLL_OPTIONS','%SQL_SCROLL_STATIC',
- '%SQL_SC_FIPS127_2_TRANSITIONAL','%SQL_SC_NON_UNIQUE','%SQL_SC_SQL92_ENTRY','%SQL_SC_SQL92_FULL','%SQL_SC_SQL92_INTERMEDIATE','%SQL_SC_TRY_UNIQUE','%SQL_SC_UNIQUE','%SQL_SDF_CURRENT_DATE',
- '%SQL_SDF_CURRENT_TIME','%SQL_SDF_CURRENT_TIMESTAMP','%SQL_SEARCHABLE','%SQL_SEARCH_PATTERN_ESCAPE','%SQL_SECOND','%SQL_SENSITIVE','%SQL_SERVER_NAME','%SQL_SETPARAM_VALUE_MAX',
- '%SQL_SETPOS_MAX_LOCK_VALUE','%SQL_SETPOS_MAX_OPTION_VALUE','%SQL_SET_DEFAULT','%SQL_SET_NULL','%SQL_SFKD_CASCADE','%SQL_SFKD_NO_ACTION','%SQL_SFKD_SET_DEFAULT','%SQL_SFKD_SET_NULL',
- '%SQL_SFKU_CASCADE','%SQL_SFKU_NO_ACTION','%SQL_SFKU_SET_DEFAULT','%SQL_SFKU_SET_NULL','%SQL_SG_DELETE_TABLE','%SQL_SG_INSERT_COLUMN','%SQL_SG_INSERT_TABLE','%SQL_SG_REFERENCES_COLUMN',
- '%SQL_SG_REFERENCES_TABLE','%SQL_SG_SELECT_TABLE','%SQL_SG_UPDATE_COLUMN','%SQL_SG_UPDATE_TABLE','%SQL_SG_USAGE_ON_CHARACTER_SET','%SQL_SG_USAGE_ON_COLLATION','%SQL_SG_USAGE_ON_DOMAIN','%SQL_SG_USAGE_ON_TRANSLATION',
- '%SQL_SG_WITH_GRANT_OPTION','%SQL_SIGNED_OFFSET','%SQL_SIMULATE_CURSOR','%SQL_SMALLINT','%SQL_SNVF_BIT_LENGTH','%SQL_SNVF_CHARACTER_LENGTH','%SQL_SNVF_CHAR_LENGTH','%SQL_SNVF_EXTRACT',
- '%SQL_SNVF_OCTET_LENGTH','%SQL_SNVF_POSITION','%SQL_SO_DYNAMIC','%SQL_SO_FORWARD_ONLY','%SQL_SO_KEYSET_DRIVEN','%SQL_SO_MIXED','%SQL_SO_STATIC','%SQL_SPECIAL_CHARACTERS',
- '%SQL_SPEC_MAJOR','%SQL_SPEC_MINOR','%SQL_SP_BETWEEN','%SQL_SP_COMPARISON','%SQL_SP_EXISTS','%SQL_SP_IN','%SQL_SP_ISNOTNULL','%SQL_SP_ISNULL',
- '%SQL_SP_LIKE','%SQL_SP_MATCH_FULL','%SQL_SP_MATCH_PARTIAL','%SQL_SP_MATCH_UNIQUE_FULL','%SQL_SP_MATCH_UNIQUE_PARTIAL','%SQL_SP_OVERLAPS','%SQL_SP_QUANTIFIED_COMPARISON','%SQL_SP_UNIQUE',
- '%SQL_SQL92_DATETIME_FUNCTIONS','%SQL_SQL92_FOREIGN_KEY_DELETE_RULE','%SQL_SQL92_FOREIGN_KEY_UPDATE_RULE','%SQL_SQL92_GRANT','%SQL_SQL92_NUMERIC_VALUE_FUNCTIONS','%SQL_SQL92_PREDICATES','%SQL_SQL92_RELATIONAL_JOIN_OPERATORS','%SQL_SQL92_REVOKE',
- '%SQL_SQL92_ROW_VALUE_CONSTRUCTOR','%SQL_SQL92_STRING_FUNCTIONS','%SQL_SQL92_VALUE_EXPRESSIONS','%SQL_SQLSTATE_SIZE','%SQL_SQL_CONFORMANCE','%SQL_SQ_COMPARISON','%SQL_SQ_CORRELATED_SUBQUERIES','%SQL_SQ_EXISTS',
- '%SQL_SQ_IN','%SQL_SQ_QUANTIFIED','%SQL_SRJO_CORRESPONDING_CLAUSE','%SQL_SRJO_CROSS_JOIN','%SQL_SRJO_EXCEPT_JOIN','%SQL_SRJO_FULL_OUTER_JOIN','%SQL_SRJO_INNER_JOIN','%SQL_SRJO_INTERSECT_JOIN',
- '%SQL_SRJO_LEFT_OUTER_JOIN','%SQL_SRJO_NATURAL_JOIN','%SQL_SRJO_RIGHT_OUTER_JOIN','%SQL_SRJO_UNION_JOIN','%SQL_SRVC_DEFAULT','%SQL_SRVC_NULL','%SQL_SRVC_ROW_SUBQUERY','%SQL_SRVC_VALUE_EXPRESSION',
- '%SQL_SR_CASCADE','%SQL_SR_DELETE_TABLE','%SQL_SR_GRANT_OPTION_FOR','%SQL_SR_INSERT_COLUMN','%SQL_SR_INSERT_TABLE','%SQL_SR_REFERENCES_COLUMN','%SQL_SR_REFERENCES_TABLE','%SQL_SR_RESTRICT',
- '%SQL_SR_SELECT_TABLE','%SQL_SR_UPDATE_COLUMN','%SQL_SR_UPDATE_TABLE','%SQL_SR_USAGE_ON_CHARACTER_SET','%SQL_SR_USAGE_ON_COLLATION','%SQL_SR_USAGE_ON_DOMAIN','%SQL_SR_USAGE_ON_TRANSLATION','%SQL_SSF_CONVERT',
- '%SQL_SSF_LOWER','%SQL_SSF_SUBSTRING','%SQL_SSF_TRANSLATE','%SQL_SSF_TRIM_BOTH','%SQL_SSF_TRIM_LEADING','%SQL_SSF_TRIM_TRAILING','%SQL_SSF_UPPER','%SQL_SS_ADDITIONS',
- '%SQL_SS_DELETIONS','%SQL_SS_UPDATES','%SQL_STANDARD_CLI_CONFORMANCE','%SQL_STATIC_CURSOR_ATTRIBUTES1','%SQL_STATIC_CURSOR_ATTRIBUTES2','%SQL_STATIC_SENSITIVITY','%SQL_STILL_EXECUTING','%SQL_STRING_FUNCTIONS',
- '%SQL_SUBQUERIES','%SQL_SUCCESS','%SQL_SUCCESS_WITH_INFO','%SQL_SU_DML_STATEMENTS','%SQL_SU_INDEX_DEFINITION','%SQL_SU_PRIVILEGE_DEFINITION','%SQL_SU_PROCEDURE_INVOCATION','%SQL_SU_TABLE_DEFINITION',
- '%SQL_SVE_CASE','%SQL_SVE_CAST','%SQL_SVE_COALESCE','%SQL_SVE_NULLIF','%SQL_SYSTEM_FUNCTIONS','%SQL_TABLE_STAT','%SQL_TABLE_TERM','%SQL_TC_ALL',
- '%SQL_TC_DDL_COMMIT','%SQL_TC_DDL_IGNORE','%SQL_TC_DML','%SQL_TC_NONE','%SQL_TIME','%SQL_TIMEDATE_ADD_INTERVALS','%SQL_TIMEDATE_DIFF_INTERVALS','%SQL_TIMEDATE_FUNCTIONS',
- '%SQL_TIMESTAMP','%SQL_TIMESTAMP_LEN','%SQL_TIME_LEN','%SQL_TINYINT','%SQL_TRANSACTION_CAPABLE','%SQL_TRANSACTION_ISOLATION_OPTION','%SQL_TRANSACTION_READ_COMMITTED','%SQL_TRANSACTION_READ_UNCOMMITTED',
- '%SQL_TRANSACTION_REPEATABLE_READ','%SQL_TRANSACTION_SERIALIZABLE','%SQL_TRANSLATE_DLL','%SQL_TRANSLATE_OPTION','%SQL_TRUE','%SQL_TXN_CAPABLE','%SQL_TXN_ISOLATION','%SQL_TXN_ISOLATION_OPTION',
- '%SQL_TXN_READ_COMMITTED','%SQL_TXN_READ_UNCOMMITTED','%SQL_TXN_REPEATABLE_READ','%SQL_TXN_SERIALIZABLE','%SQL_TYPE_DATE','%SQL_TYPE_NULL','%SQL_TYPE_TIME','%SQL_TYPE_TIMESTAMP',
- '%SQL_UB_DEFAULT','%SQL_UB_FIXED','%SQL_UB_OFF','%SQL_UB_ON','%SQL_UB_VARIABLE','%SQL_UNBIND','%SQL_UNICODE','%SQL_UNICODE_CHAR',
- '%SQL_UNICODE_LONGVARCHAR','%SQL_UNICODE_VARCHAR','%SQL_UNION','%SQL_UNION_STATEMENT','%SQL_UNKNOWN_TYPE','%SQL_UNNAMED','%SQL_UNSEARCHABLE','%SQL_UNSIGNED_OFFSET',
- '%SQL_UNSPECIFIED','%SQL_UPDATE','%SQL_UPDATE_BY_BOOKMARK','%SQL_USER_NAME','%SQL_USE_BOOKMARKS','%SQL_US_UNION','%SQL_US_UNION_ALL','%SQL_U_UNION',
- '%SQL_U_UNION_ALL','%SQL_VARBINARY','%SQL_VARCHAR','%SQL_XOPEN_CLI_YEAR','%SQL_YEAR','%SQL_YEAR_TO_MONTH','%SRCCOPY','%SS_BITMAP',
- '%SS_BLACKFRAME','%SS_BLACKRECT','%SS_CENTER','%SS_CENTERIMAGE','%SS_ENDELLIPSIS','%SS_ETCHEDFRAME','%SS_ETCHEDHORZ','%SS_ETCHEDVERT',
- '%SS_GRAYFRAME','%SS_GRAYRECT','%SS_LEFT','%SS_NOPREFIX','%SS_NOTIFY','%SS_NOWORDWRAP','%SS_PATHELLIPSIS','%SS_RIGHT',
- '%SS_RIGHTJUST','%SS_SIMPLE','%SS_SUNKEN','%SS_WHITEFRAME','%SS_WHITERECT','%SS_WORDELLIPSIS','%STAT_FILL_FROM_MEMORY','%STAT_FILL_NATURAL',
- '%STAT_FILL_NATURAL_ERASTONE','%STAT_FILL_NATURAL_EVEN','%STAT_FILL_NATURAL_FIBONACCI','%STAT_FILL_NATURAL_ODD','%STAT_FILL_WITH_NUMBER','%STAT_MINMAX_INDEX','%STAT_MINMAX_VALUE','%STAT_TYPE_BYTE',
- '%STAT_TYPE_CURRENCY','%STAT_TYPE_DOUBLE','%STAT_TYPE_DWORD','%STAT_TYPE_EXT','%STAT_TYPE_INTEGER','%STAT_TYPE_LONG','%STAT_TYPE_QUAD','%STAT_TYPE_SINGLE',
- '%STAT_TYPE_WORD','%SWP_ASYNCWINDOWPOS','%SWP_DEFERERASE','%SWP_DRAWFRAME','%SWP_FRAMECHANGED','%SWP_HIDEWINDOW','%SWP_NOACTIVATE','%SWP_NOCOPYBITS',
- '%SWP_NOMOVE','%SWP_NOOWNERZORDER','%SWP_NOREDRAW','%SWP_NOREPOSITION','%SWP_NOSENDCHANGING','%SWP_NOSIZE','%SWP_NOZORDER','%SWP_SHOWWINDOW',
- '%SW_FORCEMINIMIZE','%SW_HIDE','%SW_MAXIMIZE','%SW_MINIMIZE','%SW_NORMAL','%SW_RESTORE','%SW_SHOW','%SW_SHOWDEFAULT',
- '%SW_SHOWMAXIMIZED','%SW_SHOWMINIMIZED','%SW_SHOWMINNOACTIVE','%SW_SHOWNA','%SW_SHOWNOACTIVATE','%SW_SHOWNORMAL','%TBASS_3DALG_DEFAULT','%TBASS_3DALG_FULL',
- '%TBASS_3DALG_LIGHT','%TBASS_3DALG_OFF','%TBASS_3DMODE_NORMAL','%TBASS_3DMODE_OFF','%TBASS_3DMODE_RELATIVE','%TBASS_ACTIVE_PAUSED','%TBASS_ACTIVE_PLAYING','%TBASS_ACTIVE_STALLED',
- '%TBASS_ACTIVE_STOPPED','%TBASS_CONFIG_3DALGORITHM','%TBASS_CONFIG_BUFFER','%TBASS_CONFIG_CURVE_PAN','%TBASS_CONFIG_CURVE_VOL','%TBASS_CONFIG_FLOATDSP','%TBASS_CONFIG_GVOL_MUSIC','%TBASS_CONFIG_GVOL_SAMPLE',
- '%TBASS_CONFIG_GVOL_STREAM','%TBASS_CONFIG_MAXVOL','%TBASS_CONFIG_MP3_CODEC','%TBASS_CONFIG_NET_AGENT','%TBASS_CONFIG_NET_BUFFER','%TBASS_CONFIG_NET_PASSIVE','%TBASS_CONFIG_NET_PREBUF','%TBASS_CONFIG_NET_PROXY',
- '%TBASS_CONFIG_NET_TIMEOUT','%TBASS_CONFIG_PAUSE_NOPLAY','%TBASS_CONFIG_UPDATEPERIOD','%TBASS_CTYPE_MUSIC_IT','%TBASS_CTYPE_MUSIC_MO3','%TBASS_CTYPE_MUSIC_MOD','%TBASS_CTYPE_MUSIC_MTM','%TBASS_CTYPE_MUSIC_S3M',
- '%TBASS_CTYPE_MUSIC_XM','%TBASS_CTYPE_RECORD','%TBASS_CTYPE_SAMPLE','%TBASS_CTYPE_STREAM','%TBASS_CTYPE_STREAM_AIFF','%TBASS_CTYPE_STREAM_MP1','%TBASS_CTYPE_STREAM_MP2','%TBASS_CTYPE_STREAM_MP3',
- '%TBASS_CTYPE_STREAM_OGG','%TBASS_CTYPE_STREAM_WAV','%TBASS_CTYPE_STREAM_WAV_FLOAT','%TBASS_CTYPE_STREAM_WAV_PCM','%TBASS_DATA_AVAILABLE','%TBASS_DATA_FFT1024','%TBASS_DATA_FFT2048','%TBASS_DATA_FFT4096',
- '%TBASS_DATA_FFT512','%TBASS_DATA_FFT_INDIVIDUAL','%TBASS_DATA_FFT_NOWINDOW','%TBASS_DATA_FLOAT','%TBASS_DEVICE_3D','%TBASS_DEVICE_8BITS','%TBASS_DEVICE_LATENCY','%TBASS_DEVICE_MONO',
- '%TBASS_DEVICE_NOSPEAKER','%TBASS_DEVICE_SPEAKERS','%TBASS_EAX_ENVIRONMENT_ALLEY','%TBASS_EAX_ENVIRONMENT_ARENA','%TBASS_EAX_ENVIRONMENT_AUDITORIUM','%TBASS_EAX_ENVIRONMENT_BATHROOM','%TBASS_EAX_ENVIRONMENT_CARPETEDHALLWAY','%TBASS_EAX_ENVIRONMENT_CAVE',
- '%TBASS_EAX_ENVIRONMENT_CITY','%TBASS_EAX_ENVIRONMENT_CONCERTHALL','%TBASS_EAX_ENVIRONMENT_COUNT','%TBASS_EAX_ENVIRONMENT_DIZZY','%TBASS_EAX_ENVIRONMENT_DRUGGED','%TBASS_EAX_ENVIRONMENT_FOREST','%TBASS_EAX_ENVIRONMENT_GENERIC','%TBASS_EAX_ENVIRONMENT_HALLWAY',
- '%TBASS_EAX_ENVIRONMENT_HANGAR','%TBASS_EAX_ENVIRONMENT_LIVINGROOM','%TBASS_EAX_ENVIRONMENT_MOUNTAINS','%TBASS_EAX_ENVIRONMENT_PADDEDCELL','%TBASS_EAX_ENVIRONMENT_PARKINGLOT','%TBASS_EAX_ENVIRONMENT_PLAIN','%TBASS_EAX_ENVIRONMENT_PSYCHOTIC','%TBASS_EAX_ENVIRONMENT_QUARRY',
- '%TBASS_EAX_ENVIRONMENT_ROOM','%TBASS_EAX_ENVIRONMENT_SEWERPIPE','%TBASS_EAX_ENVIRONMENT_STONECORRIDOR','%TBASS_EAX_ENVIRONMENT_STONEROOM','%TBASS_EAX_ENVIRONMENT_UNDERWATER','%TBASS_ERROR_ALREADY','%TBASS_ERROR_BUFLOST','%TBASS_ERROR_CODEC',
- '%TBASS_ERROR_CREATE','%TBASS_ERROR_DECODE','%TBASS_ERROR_DEVICE','%TBASS_ERROR_DRIVER','%TBASS_ERROR_DX','%TBASS_ERROR_EMPTY','%TBASS_ERROR_FILEFORM','%TBASS_ERROR_FILEOPEN',
- '%TBASS_ERROR_FORMAT','%TBASS_ERROR_FREQ','%TBASS_ERROR_HANDLE','%TBASS_ERROR_ILLPARAM','%TBASS_ERROR_ILLTYPE','%TBASS_ERROR_INIT','%TBASS_ERROR_MEM','%TBASS_ERROR_NO3D',
- '%TBASS_ERROR_NOCHAN','%TBASS_ERROR_NOEAX','%TBASS_ERROR_NOFX','%TBASS_ERROR_NOHW','%TBASS_ERROR_NONET','%TBASS_ERROR_NOPAUSE','%TBASS_ERROR_NOPLAY','%TBASS_ERROR_NOTAVAIL',
- '%TBASS_ERROR_NOTFILE','%TBASS_ERROR_PLAYING','%TBASS_ERROR_POSITION','%TBASS_ERROR_SPEAKER','%TBASS_ERROR_START','%TBASS_ERROR_TIMEOUT','%TBASS_ERROR_UNKNOWN','%TBASS_ERROR_VERSION',
- '%TBASS_FALSE','%TBASS_FILEPOS_CURRENT','%TBASS_FILEPOS_DECODE','%TBASS_FILEPOS_DOWNLOAD','%TBASS_FILEPOS_END','%TBASS_FILEPOS_START','%TBASS_FILE_CLOSE','%TBASS_FILE_LEN',
- '%TBASS_FILE_READ','%TBASS_FILE_SEEK','%TBASS_FX_CHORUS','%TBASS_FX_COMPRESSOR','%TBASS_FX_DISTORTION','%TBASS_FX_ECHO','%TBASS_FX_FLANGER','%TBASS_FX_GARGLE',
- '%TBASS_FX_I3DL2REVERB','%TBASS_FX_PARAMEQ','%TBASS_FX_PHASE_180','%TBASS_FX_PHASE_90','%TBASS_FX_PHASE_NEG_180','%TBASS_FX_PHASE_NEG_90','%TBASS_FX_PHASE_ZERO','%TBASS_FX_REVERB',
- '%TBASS_INPUT_LEVEL','%TBASS_INPUT_OFF','%TBASS_INPUT_ON','%TBASS_INPUT_TYPE_ANALOG','%TBASS_INPUT_TYPE_AUX','%TBASS_INPUT_TYPE_CD','%TBASS_INPUT_TYPE_DIGITAL','%TBASS_INPUT_TYPE_LINE',
- '%TBASS_INPUT_TYPE_MASK','%TBASS_INPUT_TYPE_MIC','%TBASS_INPUT_TYPE_PHONE','%TBASS_INPUT_TYPE_SPEAKER','%TBASS_INPUT_TYPE_SYNTH','%TBASS_INPUT_TYPE_UNDEF','%TBASS_INPUT_TYPE_WAVE','%TBASS_MP3_SETPOS',
- '%TBASS_MUSIC_3D','%TBASS_MUSIC_ATTRIB_AMPLIFY','%TBASS_MUSIC_ATTRIB_BPM','%TBASS_MUSIC_ATTRIB_PANSEP','%TBASS_MUSIC_ATTRIB_PSCALER','%TBASS_MUSIC_ATTRIB_SPEED','%TBASS_MUSIC_ATTRIB_VOL_CHAN','%TBASS_MUSIC_ATTRIB_VOL_GLOBAL',
- '%TBASS_MUSIC_ATTRIB_VOL_INST','%TBASS_MUSIC_AUTOFREE','%TBASS_MUSIC_CALCLEN','%TBASS_MUSIC_DECODE','%TBASS_MUSIC_FLOAT','%TBASS_MUSIC_FT2MOD','%TBASS_MUSIC_FX','%TBASS_MUSIC_LOOP',
- '%TBASS_MUSIC_MONO','%TBASS_MUSIC_NONINTER','%TBASS_MUSIC_NOSAMPLE','%TBASS_MUSIC_POSRESET','%TBASS_MUSIC_POSRESETEX','%TBASS_MUSIC_PRESCAN','%TBASS_MUSIC_PT1MOD','%TBASS_MUSIC_RAMP',
- '%TBASS_MUSIC_RAMPS','%TBASS_MUSIC_STOPBACK','%TBASS_MUSIC_SURROUND','%TBASS_MUSIC_SURROUND2','%TBASS_OBJECT_DS','%TBASS_OBJECT_DS3DL','%TBASS_OK','%TBASS_RECORD_PAUSE',
- '%TBASS_SAMPLE_3D','%TBASS_SAMPLE_8BITS','%TBASS_SAMPLE_FLOAT','%TBASS_SAMPLE_FX','%TBASS_SAMPLE_LOOP','%TBASS_SAMPLE_MONO','%TBASS_SAMPLE_MUTEMAX','%TBASS_SAMPLE_OVER_DIST',
- '%TBASS_SAMPLE_OVER_POS','%TBASS_SAMPLE_OVER_VOL','%TBASS_SAMPLE_SOFTWARE','%TBASS_SAMPLE_VAM','%TBASS_SLIDE_FREQ','%TBASS_SLIDE_PAN','%TBASS_SLIDE_VOL','%TBASS_SPEAKER_CENLFE',
- '%TBASS_SPEAKER_CENTER','%TBASS_SPEAKER_FRONT','%TBASS_SPEAKER_FRONTLEFT','%TBASS_SPEAKER_FRONTRIGHT','%TBASS_SPEAKER_LEFT','%TBASS_SPEAKER_LFE','%TBASS_SPEAKER_REAR','%TBASS_SPEAKER_REAR2',
- '%TBASS_SPEAKER_REAR2LEFT','%TBASS_SPEAKER_REAR2RIGHT','%TBASS_SPEAKER_REARLEFT','%TBASS_SPEAKER_REARRIGHT','%TBASS_SPEAKER_RIGHT','%TBASS_STREAMPROC_END','%TBASS_STREAM_AUTOFREE','%TBASS_STREAM_BLOCK',
- '%TBASS_STREAM_DECODE','%TBASS_STREAM_PRESCAN','%TBASS_STREAM_RESTRATE','%TBASS_STREAM_STATUS','%TBASS_SYNC_DOWNLOAD','%TBASS_SYNC_END','%TBASS_SYNC_FREE','%TBASS_SYNC_MESSAGE',
- '%TBASS_SYNC_META','%TBASS_SYNC_MIXTIME','%TBASS_SYNC_MUSICFX','%TBASS_SYNC_MUSICINST','%TBASS_SYNC_MUSICPOS','%TBASS_SYNC_ONETIME','%TBASS_SYNC_POS','%TBASS_SYNC_SLIDE',
- '%TBASS_SYNC_STALL','%TBASS_TAG_HTTP','%TBASS_TAG_ICY','%TBASS_TAG_ID3','%TBASS_TAG_ID3V2','%TBASS_TAG_META','%TBASS_TAG_MUSIC_INST','%TBASS_TAG_MUSIC_MESSAGE',
- '%TBASS_TAG_MUSIC_NAME','%TBASS_TAG_MUSIC_SAMPLE','%TBASS_TAG_OGG','%TBASS_TAG_RIFF_INFO','%TBASS_TAG_VENDOR','%TBASS_TRUE','%TBASS_UNICODE','%TBASS_VAM_HARDWARE',
- '%TBASS_VAM_SOFTWARE','%TBASS_VAM_TERM_DIST','%TBASS_VAM_TERM_PRIO','%TBASS_VAM_TERM_TIME','%TBASS_VERSION','%TBCD_CHANNEL','%TBCD_THUMB','%TBCD_TICS',
- '%TBGL_ALIGN_CENTER','%TBGL_ALIGN_CENTER_CENTER','%TBGL_ALIGN_CENTER_DOWN','%TBGL_ALIGN_CENTER_UP','%TBGL_ALIGN_LEFT','%TBGL_ALIGN_LEFT_CENTER','%TBGL_ALIGN_LEFT_DOWN','%TBGL_ALIGN_LEFT_UP',
- '%TBGL_ALIGN_RIGHT','%TBGL_ALIGN_RIGHT_CENTER','%TBGL_ALIGN_RIGHT_DOWN','%TBGL_ALIGN_RIGHT_UP','%TBGL_ALWAYS','%TBGL_EQUAL','%TBGL_ERROR_FILE','%TBGL_ERROR_MSGBOX',
- '%TBGL_ERROR_NONE','%TBGL_GEQUAL','%TBGL_GREATER','%TBGL_LEQUAL','%TBGL_LESS','%TBGL_LIGHT_AMBIENT','%TBGL_LIGHT_CONSTANT_ATTENUATION','%TBGL_LIGHT_DIFFUSE',
- '%TBGL_LIGHT_LINEAR_ATTENUATION','%TBGL_LIGHT_POSITION','%TBGL_LIGHT_QUADRATIC_ATTENUATION','%TBGL_LIGHT_SPECULAR','%TBGL_LIGHT_SPOT_CUTOFF','%TBGL_LIGHT_SPOT_DIRECTION','%TBGL_LIGHT_SPOT_EXPONENT','%TBGL_M15B',
- '%TBGL_M15G','%TBGL_M15LAYER','%TBGL_M15PSTOP','%TBGL_M15R','%TBGL_M15TEXN','%TBGL_M15TEXX','%TBGL_M15TEXY','%TBGL_M15X',
- '%TBGL_M15Y','%TBGL_M15Z','%TBGL_NEVER','%TBGL_NORMAL_NONE','%TBGL_NORMAL_PRECISE','%TBGL_NORMAL_SMOOTH','%TBGL_NOTEQUAL','%TBGL_OBJ_CUBE',
- '%TBGL_OBJ_CUBE3','%TBGL_OBJ_CYLINDER','%TBGL_OBJ_SPHERE','%TBGL_PINFO_RGB','%TBGL_PINFO_XYZ','%TBGL_TEX_LINEAR','%TBGL_TEX_MIPMAP','%TBGL_TEX_NEAREST',
- '%TBM_CLEARSEL','%TBM_CLEARTICS','%TBM_GETBUDDY','%TBM_GETCHANNELRECT','%TBM_GETLINESIZE','%TBM_GETNUMTICS','%TBM_GETPAGESIZE','%TBM_GETPOS',
- '%TBM_GETPTICS','%TBM_GETRANGEMAX','%TBM_GETRANGEMIN','%TBM_GETSELEND','%TBM_GETSELSTART','%TBM_GETTHUMBLENGTH','%TBM_GETTHUMBRECT','%TBM_GETTIC',
- '%TBM_GETTICPOS','%TBM_GETTOOLTIPS','%TBM_GETUNICODEFORMAT','%TBM_SETBUDDY','%TBM_SETLINESIZE','%TBM_SETPAGESIZE','%TBM_SETPOS','%TBM_SETRANGE',
- '%TBM_SETRANGEMAX','%TBM_SETRANGEMIN','%TBM_SETSEL','%TBM_SETSELEND','%TBM_SETSELSTART','%TBM_SETTHUMBLENGTH','%TBM_SETTIC','%TBM_SETTICFREQ',
- '%TBM_SETTIPSIDE','%TBM_SETTOOLTIPS','%TBM_SETUNICODEFORMAT','%TBS_AUTOTICKS','%TBS_BOTH','%TBS_BOTTOM','%TBS_DOWNISLEFT','%TBS_ENABLESELRANGE',
- '%TBS_FIXEDLENGTH','%TBS_HORZ','%TBS_LEFT','%TBS_NOTHUMB','%TBS_NOTICKS','%TBS_REVERSED','%TBS_RIGHT','%TBS_TOOLTIPS',
- '%TBS_TOP','%TBS_VERT','%TBTS_BOTTOM','%TBTS_LEFT','%TBTS_RIGHT','%TBTS_TOP','%TB_%VT_BSTR','%TB_%VT_CY',
- '%TB_%VT_DATE','%TB_%VT_EMPTY','%TB_%VT_I2','%TB_%VT_I4','%TB_%VT_NULL','%TB_%VT_R4','%TB_%VT_R8','%TB_BOTTOM',
- '%TB_CLASS_E_NOAGGREGATION','%TB_CO_E_CLASSSTRING','%TB_DISPATCH_METHOD','%TB_DISPATCH_PROPERTYGET','%TB_DISPATCH_PROPERTYPUT','%TB_DISPATCH_PROPERTYPUTREF','%TB_ENDTRACK','%TB_E_INVALIDARG',
- '%TB_E_NOINTERFACE','%TB_E_OUTOFMEMORY','%TB_IMGCTX_ACTUALSIZE','%TB_IMGCTX_AUTOSIZE','%TB_IMGCTX_FITTOHEIGHT','%TB_IMGCTX_FITTOWIDTH','%TB_IMGCTX_STRETCH','%TB_LINEDOWN',
- '%TB_LINEUP','%TB_MK_E_CONNECTMANUALLY','%TB_MK_E_EXCEEDEDDEADLINE','%TB_MK_E_INTERMEDIATEINTERFACENOTSUPPORTED','%TB_MK_E_NOOBJECT','%TB_MK_E_SYNTAX','%TB_PAGEDOWN','%TB_PAGEUP',
- '%TB_REGDB_E_CLASSNOTREG','%TB_REGDB_E_WRITEREGDB','%TB_SIZEOF_TBVARIANT','%TB_S_FALSE','%TB_S_OK','%TB_THUMBPOSITION','%TB_THUMBTRACK','%TB_TOP',
- '%TCM_FIRST','%TCM_GETCURSEL','%TCN_FOCUSCHANGE','%TCN_GETOBJECT','%TCN_SELCHANGE','%TCN_SELCHANGING','%TCS_BOTTOM','%TCS_BUTTONS',
- '%TCS_EX_FLATSEPARATORS','%TCS_EX_REGISTERDROP','%TCS_FIXEDWIDTH','%TCS_FLATBUTTONS','%TCS_FOCUSNEVER','%TCS_FOCUSONBUTTONDOWN','%TCS_FORCEICONLEFT','%TCS_FORCELABELLEFT',
- '%TCS_HOTTRACK','%TCS_MULTILINE','%TCS_MULTISELECT','%TCS_OWNERDRAWFIXED','%TCS_RAGGEDRIGHT','%TCS_RIGHT','%TCS_RIGHTJUSTIFY','%TCS_SCROLLOPPOSITE',
- '%TCS_SINGLELINE','%TCS_TABS','%TCS_TOOLTIPS','%TCS_VERTICAL','%TM_PLAINTEXT','%TM_RICHTEXT','%TOKENIZER_DEFAULT_ALPHA','%TOKENIZER_DEFAULT_DELIM',
- '%TOKENIZER_DEFAULT_DQUOTE','%TOKENIZER_DEFAULT_NEWLINE','%TOKENIZER_DEFAULT_NUMERIC','%TOKENIZER_DEFAULT_SPACE','%TOKENIZER_DELIMITER','%TOKENIZER_EOL','%TOKENIZER_ERROR','%TOKENIZER_FINISHED',
- '%TOKENIZER_NUMBER','%TOKENIZER_QUOTE','%TOKENIZER_STRING','%TOKENIZER_UNDEFTOK','%TRUE','%TV_FIRST','%UDM_GETACCEL','%UDM_GETBASE',
- '%UDM_GETBUDDY','%UDM_GETPOS','%UDM_GETPOS32','%UDM_GETRANGE','%UDM_GETRANGE32','%UDM_GETUNICODEFORMAT','%UDM_SETACCEL','%UDM_SETBASE',
- '%UDM_SETBUDDY','%UDM_SETPOS','%UDM_SETPOS32','%UDM_SETRANGE','%UDM_SETRANGE32','%UDM_SETUNICODEFORMAT','%UDS_ALIGNLEFT','%UDS_ALIGNRIGHT',
- '%UDS_ARROWKEYS','%UDS_AUTOBUDDY','%UDS_HORZ','%UDS_HOTTRACK','%UDS_NOTHOUSANDS','%UDS_SETBUDDYINT','%UDS_WRAP','%UD_MAXVAL',
- '%UD_MINVAL','%VK_0','%VK_1','%VK_2','%VK_3','%VK_4','%VK_5','%VK_6',
- '%VK_7','%VK_8','%VK_9','%VK_A','%VK_ACCEPT','%VK_ADD','%VK_APPS','%VK_B',
- '%VK_BACK','%VK_C','%VK_CANCEL','%VK_CAPITAL','%VK_CLEAR','%VK_CONTROL','%VK_CONVERT','%VK_D',
- '%VK_DECIMAL','%VK_DELETE','%VK_DIVIDE','%VK_DOWN','%VK_E','%VK_END','%VK_ESCAPE','%VK_EXECUTE',
- '%VK_F','%VK_F1','%VK_F10','%VK_F11','%VK_F12','%VK_F13','%VK_F14','%VK_F15',
- '%VK_F16','%VK_F17','%VK_F18','%VK_F19','%VK_F2','%VK_F20','%VK_F21','%VK_F22',
- '%VK_F23','%VK_F24','%VK_F3','%VK_F4','%VK_F5','%VK_F6','%VK_F7','%VK_F8',
- '%VK_F9','%VK_FINAL','%VK_G','%VK_H','%VK_HANGEUL','%VK_HANGUL','%VK_HANJA','%VK_HELP',
- '%VK_HOME','%VK_I','%VK_INSERT','%VK_J','%VK_JUNJA','%VK_K','%VK_KANA','%VK_KANJI',
- '%VK_L','%VK_LBUTTON','%VK_LEFT','%VK_LINEFEED','%VK_LWIN','%VK_M','%VK_MBUTTON','%VK_MENU',
- '%VK_MODECHANGE','%VK_MULTIPLY','%VK_N','%VK_NEXT','%VK_NONCONVERT','%VK_NUMLOCK','%VK_NUMPAD0','%VK_NUMPAD1',
- '%VK_NUMPAD2','%VK_NUMPAD3','%VK_NUMPAD4','%VK_NUMPAD5','%VK_NUMPAD6','%VK_NUMPAD7','%VK_NUMPAD8','%VK_NUMPAD9',
- '%VK_O','%VK_P','%VK_PAUSE','%VK_PGDN','%VK_PGUP','%VK_PRINT','%VK_PRIOR','%VK_Q',
- '%VK_R','%VK_RBUTTON','%VK_RETURN','%VK_RIGHT','%VK_RWIN','%VK_S','%VK_SCROLL','%VK_SELECT',
- '%VK_SEPARATOR','%VK_SHIFT','%VK_SLEEP','%VK_SNAPSHOT','%VK_SPACE','%VK_SUBTRACT','%VK_T','%VK_TAB',
- '%VK_U','%VK_UP','%VK_V','%VK_W','%VK_X','%VK_XBUTTON1','%VK_XBUTTON2','%VK_Y',
- '%VK_Z','%VT_ARRAY','%VT_BLOB','%VT_BLOB_OBJECT','%VT_BOOL','%VT_BSTR','%VT_BYREF','%VT_CARRAY',
- '%VT_CF','%VT_CLSID','%VT_CY','%VT_DATE','%VT_DISPATCH','%VT_EMPTY','%VT_ERROR','%VT_FILETIME',
- '%VT_HRESULT','%VT_I1','%VT_I2','%VT_I4','%VT_I8','%VT_INT','%VT_LPSTR','%VT_LPWSTR',
- '%VT_NULL','%VT_PTR','%VT_R4','%VT_R8','%VT_RECORD','%VT_RESERVED','%VT_SAFEARRAY','%VT_STORAGE',
- '%VT_STORED_OBJECT','%VT_STREAM','%VT_STREAMED_OBJECT','%VT_UI1','%VT_UI2','%VT_UI4','%VT_UI8','%VT_UINT',
- '%VT_UNKNOWN','%VT_USERDEFINED','%VT_VARIANT','%VT_VECTOR','%VT_VOID','%WAVE_FORMAT_1M08','%WAVE_FORMAT_1M16','%WAVE_FORMAT_1S08',
- '%WAVE_FORMAT_1S16','%WAVE_FORMAT_2M08','%WAVE_FORMAT_2M16','%WAVE_FORMAT_2S08','%WAVE_FORMAT_2S16','%WAVE_FORMAT_4M08','%WAVE_FORMAT_4M16','%WAVE_FORMAT_4S08',
- '%WAVE_FORMAT_4S16','%WBF_CUSTOM','%WBF_LEVEL1','%WBF_LEVEL2','%WBF_OVERFLOW','%WBF_WORDBREAK','%WBF_WORDWRAP','%WHITE',
- '%WIN_FINDTITLECONTAIN','%WIN_FINDTITLEEND','%WIN_FINDTITLEEQUAL','%WIN_FINDTITLESTART','%WM_ACTIVATE','%WM_ACTIVATEAPP','%WM_CAPTURECHANGED','%WM_CHAR',
- '%WM_CLOSE','%WM_COMMAND','%WM_DESTROY','%WM_DROPFILES','%WM_ERASEBKGND','%WM_GETTEXTLENGTH','%WM_HOTKEY','%WM_HSCROLL',
- '%WM_IDLE','%WM_INITDIALOG','%WM_KEYDOWN','%WM_KEYUP','%WM_KILLFOCUS','%WM_LBUTTONDBLCLK','%WM_LBUTTONDOWN','%WM_LBUTTONUP',
- '%WM_MBUTTONDBLCLK','%WM_MBUTTONDOWN','%WM_MBUTTONUP','%WM_MOUSEFIRST','%WM_MOUSEMOVE','%WM_MOUSEWHEEL','%WM_MOVE','%WM_MOVING',
- '%WM_NCLBUTTONDOWN','%WM_NCRBUTTONDOWN','%WM_NEXTDLGCTL','%WM_NOTIFY','%WM_PAINT','%WM_QUIT','%WM_RBUTTONDBLCLK','%WM_RBUTTONDOWN',
- '%WM_RBUTTONUP','%WM_SETFOCUS','%WM_SETFONT','%WM_SETTEXT','%WM_SIZE','%WM_SIZING','%WM_SYSCOMMAND','%WM_TIMER',
- '%WM_USER','%WM_VSCROLL','%WS_BORDER','%WS_CAPTION','%WS_CHILD','%WS_CLIPCHILDREN','%WS_CLIPSIBLINGS','%WS_DISABLED',
- '%WS_DLGFRAME','%WS_EX_ACCEPTFILES','%WS_EX_APPWINDOW','%WS_EX_CLIENTEDGE','%WS_EX_CONTEXTHELP','%WS_EX_CONTROLPARENT','%WS_EX_LAYERED','%WS_EX_LEFT',
- '%WS_EX_LEFTSCROLLBAR','%WS_EX_LTRREADING','%WS_EX_MDICHILD','%WS_EX_NOPARENTNOTIFY','%WS_EX_OVERLAPPEDWINDOW','%WS_EX_PALETTEWINDOW','%WS_EX_RIGHT','%WS_EX_RIGHTSCROLLBAR',
- '%WS_EX_RTLREADING','%WS_EX_STATICEDGE','%WS_EX_TOOLWINDOW','%WS_EX_TOPMOST','%WS_EX_TRANSPARENT','%WS_EX_WINDOWEDGE','%WS_GROUP','%WS_HSCROLL',
- '%WS_ICONIC','%WS_MAXIMIZE','%WS_MAXIMIZEBOX','%WS_MINIMIZE','%WS_MINIMIZEBOX','%WS_OVERLAPPEDWINDOW','%WS_POPUP','%WS_POPUPWINDOW',
- '%WS_SYSMENU','%WS_TABSTOP','%WS_THICKFRAME','%WS_VISIBLE','%WS_VSCROLL','%YELLOW','%ZERO','CRLF',
- 'FALSE','M_E','M_PI','NULL','TAB','TRUE'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000FF; font-weight: bold;',
- 2 => 'color: #993333; font-style: italic; font-weight: bold;',
- 3 => 'color: #000066;',
- 4 => 'color: #993333;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008000;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #333333;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #800080;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #CC0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #66cc66;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #333333;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- 1 => '_'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * thinbasic.php
+ * ------
+ * Author: Eros Olmi (eros.olmi at thinbasic.com)
+ * Copyright: (c) 2006 Eros Olmi (http://www.thinbasic.com), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/05/12
+ *
+ * thinBasic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/05/12 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/05/12)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+ $language_data = array (
+ 'LANG_NAME' => 'thinBasic',
+ 'COMMENT_SINGLE' => array(1 => "'"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'XOR','XML_TREETOSTRING','XML_PARSEFILE','XML_PARSE','XML_PARENT','XML_NODETYPE','XML_NODETOSTRING','XML_NEXTSIBLING',
+ 'XML_LASTERROR','XML_GETTAG','XML_FREE','XML_FINDNODE','XML_DECODEPARAM','XML_CHILDDATA','XML_CHILD','XML_ATTRIBVALUE',
+ 'XML_ATTRIBNAME','XML_ATTRIBCOUNT','WORD','WITH','WIN_SHOW','WIN_SETTITLE','WIN_SETFOREGROUND','WIN_ISZOOMED',
+ 'WIN_ISVISIBLE','WIN_ISICONIC','WIN_GETTITLE','WIN_GETFOREGROUND','WIN_GETCLASS','WIN_GETACTIVE','WIN_FLASH','WIN_FINDBYTITLE',
+ 'WIN_FINDBYCLASS','WHILE','WEND','VERIFY','VARPTR','VARIANTVT$','VARIANTVT','VARIANT',
+ 'VARIABLE_GETINFO','VARIABLE_EXISTS','VARIABLE_EXIST','VALUE','VAL','USING$','USING','USES',
+ 'USER','UNTIL','UNITS','UNION','UNICODE2ASCII','UDP_SEND','UDP_RECV','UDP_OPENSERVER',
+ 'UDP_OPEN','UDP_FREEFILE','UDP_CLOSE','UCODE$','UCASE$','UBOUND','TYPE','TRIMFULL$',
+ 'TRIM$','TOOLTIP','TOKENIZER_MOVETOEOL','TOKENIZER_KEYSETUSERSTRING','TOKENIZER_KEYSETUSERNUMBER','TOKENIZER_KEYGETUSERSTRING','TOKENIZER_KEYGETUSERNUMBER','TOKENIZER_KEYGETSUBTYPE',
+ 'TOKENIZER_KEYGETNAME','TOKENIZER_KEYGETMAINTYPE','TOKENIZER_KEYFIND','TOKENIZER_KEYADD','TOKENIZER_GETNEXTTOKEN','TOKENIZER_DEFAULT_SET','TOKENIZER_DEFAULT_GET','TOKENIZER_DEFAULT_CODE',
+ 'TOKENIZER_DEFAULT_CHAR','TO','TIMER','TIME$','THEN','TEXTBOX','TEXT','TCP_SEND',
+ 'TCP_RECV','TCP_PRINT','TCP_OPEN','TCP_LINEINPUT','TCP_FREEFILE','TCP_CLOSE','TB_IMGCTX_SETIMAGEADJUSTMENT','TB_IMGCTX_LOADIMAGE',
+ 'TB_IMGCTX_GETIMAGEADJUSTMENT','TBGL_VIEWPORT','TBGL_VERTEX','TBGL_USETEXTUREFLAG','TBGL_USETEXTURE','TBGL_USELINESTIPPLEFLAG','TBGL_USELINESTIPPLE','TBGL_USELIGHTSOURCEFLAG',
+ 'TBGL_USELIGHTSOURCE','TBGL_USELIGHTINGFLAG','TBGL_USELIGHTING','TBGL_USEFOGFLAG','TBGL_USEFOG','TBGL_USEDEPTHMASK','TBGL_USEDEPTHFLAG','TBGL_USEDEPTH',
+ 'TBGL_USECLIPPLANEFLAG','TBGL_USECLIPPLANE','TBGL_USEBLENDFLAG','TBGL_USEBLEND','TBGL_USEALPHATEST','TBGL_TRANSLATE','TBGL_TORUS','TBGL_TEXCOORD2D',
+ 'TBGL_SPHERE','TBGL_SHOWWINDOW','TBGL_SHOWCURSOR','TBGL_SETWINDOWTITLE','TBGL_SETUPLIGHTSOURCE','TBGL_SETUPFOG','TBGL_SETUPCLIPPLANE','TBGL_SETPRIMITIVEQUALITY',
+ 'TBGL_SETLIGHTPARAMETER','TBGL_SETDRAWDISTANCE','TBGL_SCALE','TBGL_SAVESCREENSHOT','TBGL_ROTATEXYZ','TBGL_ROTATE','TBGL_RESETMATRIX','TBGL_RENDERTOTEXTURE',
+ 'TBGL_RENDERMATRIX3D','TBGL_RENDERMATRIX2D','TBGL_PUSHMATRIX','TBGL_PRINTFONT','TBGL_PRINTBMP','TBGL_PRINT','TBGL_POS3DTOPOS2D','TBGL_POPMATRIX',
+ 'TBGL_POLYGONLOOK','TBGL_POINTSIZE','TBGL_POINTINSIDE3D','TBGL_NORMAL','TBGL_NEWLIST','TBGL_MOUSEGETWHEELDELTA','TBGL_MOUSEGETRBUTTON','TBGL_MOUSEGETPOSY',
+ 'TBGL_MOUSEGETPOSX','TBGL_MOUSEGETMBUTTON','TBGL_MOUSEGETLBUTTON','TBGL_M15SETVERTEXZ','TBGL_M15SETVERTEXY','TBGL_M15SETVERTEXXYZ','TBGL_M15SETVERTEXX','TBGL_M15SETVERTEXTEXY',
+ 'TBGL_M15SETVERTEXTEXXY','TBGL_M15SETVERTEXTEXX','TBGL_M15SETVERTEXTEXN','TBGL_M15SETVERTEXRGB','TBGL_M15SETVERTEXR','TBGL_M15SETVERTEXPSTOP','TBGL_M15SETVERTEXPARAM','TBGL_M15SETVERTEXLAYER',
+ 'TBGL_M15SETVERTEXG','TBGL_M15SETVERTEXB','TBGL_M15SETMODELVERTEXCOUNT','TBGL_M15SETBONECHILD','TBGL_M15ROTBONEZ','TBGL_M15ROTBONEY','TBGL_M15ROTBONEX','TBGL_M15ROTBONE',
+ 'TBGL_M15RESETBONES','TBGL_M15RECALCNORMALS','TBGL_M15LOADMODEL','TBGL_M15INITMODELBUFFERS','TBGL_M15GETVERTEXZ','TBGL_M15GETVERTEXY','TBGL_M15GETVERTEXXYZ','TBGL_M15GETVERTEXX',
+ 'TBGL_M15GETVERTEXTEXY','TBGL_M15GETVERTEXTEXXY','TBGL_M15GETVERTEXTEXX','TBGL_M15GETVERTEXTEXN','TBGL_M15GETVERTEXRGB','TBGL_M15GETVERTEXR','TBGL_M15GETVERTEXPSTOP','TBGL_M15GETVERTEXPARAM',
+ 'TBGL_M15GETVERTEXLAYER','TBGL_M15GETVERTEXG','TBGL_M15GETVERTEXB','TBGL_M15GETMODELVERTEXCOUNT','TBGL_M15GETMODELPOLYCOUNT','TBGL_M15ERASECHILDBONES','TBGL_M15DRAWMODEL','TBGL_M15DEFBONERESET',
+ 'TBGL_M15DEFBONELAYER','TBGL_M15DEFBONEBOX','TBGL_M15DEFBONEANCHOR','TBGL_M15DEFBONEADDVERTEX','TBGL_M15CLEARMODEL','TBGL_M15APPLYBONES','TBGL_M15ADDBONETREEITEM','TBGL_LOADTEXTURE',
+ 'TBGL_LOADFONT','TBGL_LOADBMPFONT','TBGL_LINEWIDTH','TBGL_LINESTIPPLE','TBGL_KILLFONT','TBGL_ISWINDOW','TBGL_ISPOINTVISIBLE','TBGL_ISPOINTBEHINDVIEW',
+ 'TBGL_GETWINDOWMULTIKEYSTATE','TBGL_GETWINDOWKEYSTATE','TBGL_GETWINDOWKEYONCE','TBGL_GETWINDOWCLIENT','TBGL_GETTEXTURENAME','TBGL_GETTEXTURELIST','TBGL_GETPIXELINFO','TBGL_GETMULTIASYNCKEYSTATE',
+ 'TBGL_GETLASTGLERROR','TBGL_GETFRAMERATE','TBGL_GETDESKTOPINFO','TBGL_GETASYNCKEYSTATE','TBGL_ERRORMESSAGES','TBGL_ENDPOLY','TBGL_ENDLIST','TBGL_DRAWFRAME',
+ 'TBGL_DESTROYWINDOW','TBGL_DELETELIST','TBGL_CYLINDER','TBGL_CREATEWINDOWEX','TBGL_CREATEWINDOW','TBGL_COLORALPHA','TBGL_COLOR','TBGL_CLEARFRAME',
+ 'TBGL_CAMERA','TBGL_CALLLIST','TBGL_BUILDFONT','TBGL_BOX','TBGL_BLENDFUNC','TBGL_BINDTEXTURE','TBGL_BEGINPOLY','TBGL_BACKCOLOR',
+ 'TBGL_ALPHAFUNC','TBDI_JOYZ','TBDI_JOYY','TBDI_JOYX','TBDI_JOYSTOPEFFECT','TBDI_JOYSLIDER','TBDI_JOYSETRANGEZ','TBDI_JOYSETRANGEY',
+ 'TBDI_JOYSETRANGEXYZ','TBDI_JOYSETRANGEX','TBDI_JOYSETDEADZONEZ','TBDI_JOYSETDEADZONEY','TBDI_JOYSETDEADZONEXYZ','TBDI_JOYSETDEADZONEX','TBDI_JOYSETAUTOCENTER','TBDI_JOYRZ',
+ 'TBDI_JOYRY','TBDI_JOYRX','TBDI_JOYPOV','TBDI_JOYPLAYEFFECT','TBDI_JOYLOADEFFECT','TBDI_JOYHASFF','TBDI_JOYHASEFFECT','TBDI_JOYGETEFFECTNAME',
+ 'TBDI_JOYGETEFFECTGUID','TBDI_JOYCREATEEFFECT','TBDI_JOYCOUNTPOV','TBDI_JOYCOUNTEFFECTS','TBDI_JOYCOUNTBTN','TBDI_JOYCOUNTAXES','TBDI_JOYBUTTON','TBDI_JOYAVAIL',
+ 'TBDI_INIT','TBASS_STREAMFREE','TBASS_STREAMCREATEFILE','TBASS_SETVOLUME','TBASS_SETEAXPRESET','TBASS_SETEAXPARAMETERS','TBASS_SETCONFIG','TBASS_SET3DPOSITION',
+ 'TBASS_SET3DFACTORS','TBASS_SAMPLELOAD','TBASS_SAMPLEGETCHANNEL','TBASS_MUSICLOAD','TBASS_MUSICFREE','TBASS_INIT','TBASS_GETVOLUME','TBASS_GETVERSION',
+ 'TBASS_GETCONFIG','TBASS_FREE','TBASS_ERRORGETCODE','TBASS_CHANNELSTOP','TBASS_CHANNELSETPOSITION','TBASS_CHANNELSETATTRIBUTES','TBASS_CHANNELSET3DPOSITION','TBASS_CHANNELPLAY',
+ 'TBASS_CHANNELPAUSE','TBASS_CHANNELISACTIVE','TBASS_CHANNELGETPOSITION','TBASS_CHANNELGETLENGTH','TBASS_CHANNELGETATTRIBUTES','TBASS_APPLY3D','TANH','TANGENT',
+ 'TAN','TALLY','TABCTRL_ONNOTIFY','TABCTRL_INSERTITEM','TABCTRL_GETCURSEL','SWAP','SUB','STRZIP$',
+ 'STRUNZIP$','STRREVERSE$','STRPTRLEN','STRPTR','STRINSERT$','STRING$','STRING','STRDELETE$',
+ 'STR$','STOP','STEP','STDOUT','STDIN','STAT_SUM','STAT_STDERROR','STAT_STDDEVIATION',
+ 'STAT_RANDOM','STAT_PRODUCT','STAT_MIN','STAT_MEDIAN','STAT_MEANHARMONIC','STAT_MEANGEOMETRIC','STAT_MEANARITHMETIC','STAT_MAX',
+ 'STAT_INVERSESUM','STAT_HISTOGRAM','STAT_FILLARRAY','STAT_COUNT','STAT_COPYARRAY','STAT_CLONEARRAY','STAT_CHISQUARE','STATIC',
+ 'STATE','SQR','SPLIT','SORT','SMTP_STATISTICS','SMTP_SETOPTION','SMTP_SETLOGFILE','SMTP_SENDHTML',
+ 'SMTP_SENDEMAIL','SMTP_GETERROR','SMTP_FINISHED','SMTP_DEBUG','SMTP_CONNECT','SMTP_CLOSE','SLEEP','SIZEOF',
+ 'SIZE','SINH','SINGLE','SIN','SIGNED','SHOW','SHIFT','SHAPETOBMP',
+ 'SGN','SETAT','SET','SENDMESSAGE','SENDKEYSBULK','SENDKEYS','SEND','SELECTEXPRESSION',
+ 'SELECT','SECH','SEC','SCAN','SAPI_SPEAK','SAPI_SETVOLUME','SAPI_SETRATE','SAPI_MODULELOADED',
+ 'SAPI_GETVOLUME','SAPI_GETRATE','RTRIM$','RTF_SETTEXT','RTF_SETFONTSIZE','RTF_SETFONTNAME','RTF_SETFGCOLOR','RTF_SETEFFECT',
+ 'RTF_SETBGCOLOR','RTF_SETALIGN','RTF_SAVETOFILE','RTF_LOADFROMFILE','RTF_GETTEXT','RTF_GETFONTSIZE','RTF_GETFONTNAME','RTF_GETEFFECT',
+ 'RTF_GETCLASS','RTF_APPENDTEXT','RSET$','ROUND','RNDF','RND','RIGHT$','RIGHT',
+ 'RGB','RESOURCE','RESIZE','RESET','REPLACE$','REPEAT$','REMOVE$','REM',
+ 'REGISTRY_SETVALUE','REGISTRY_SETTXTNUM','REGISTRY_SETTXTBOOL','REGISTRY_SETDWORD','REGISTRY_GETVALUE','REGISTRY_GETTXTNUM','REGISTRY_GETTXTBOOL','REGISTRY_GETDWORD',
+ 'REGISTRY_GETALLKEYS','REGISTRY_DELVALUE','REGISTRY_DELKEY','REFERENCE','REF','REDRAW','REDIM','RAS_SETPARAMS',
+ 'RAS_OPENDIALUPDIALOG','RAS_LOADENTRIES','RAS_HANGUPALL','RAS_HANGUP','RAS_GETENTRY','RAS_BEGINDIAL','RANDOMIZE','RADTODEG',
+ 'QUERYPERFORMANCEFREQUENCY','QUERYPERFORMANCECOUNTER','QUAD','PTR','PRESERVE','POST','POPUP','POKE$',
+ 'POKE','PIXELS','PI','PERMUTATIONS','PEEKMESSAGE','PEEK$','PEEK','PC_SYSTEMUPFROM',
+ 'PC_SUSPENDSTATE','PC_SHUTDOWN','PC_SHOWCARET','PC_SETCARETBLINKTIME','PC_RESTARTDIALOG','PC_PREVENTSHUTDOWN','PC_LOCK','PC_INSERTCD',
+ 'PC_HIDECARET','PC_GETSTATEONOFF','PC_GETSCROLLLOCKKEYSTATE','PC_GETNUMLOCKKEYSTATE','PC_GETCARETBLINKTIME','PC_GETCAPSLOCKKEYSTATE','PC_EMPTYBIN','PC_EJECTCD',
+ 'PC_DECODECDERROR','PCT','PARSESET$','PARSECOUNT','PARSE$','PARSE','PARAMETERS','OUTSIDE',
+ 'OS_WINVERSIONTEXT','OS_WINGETVERSIONTIMELINE','OS_SHELLEXECUTE','OS_SHELLABOUT','OS_SHELL','OS_SETLASTCALLDLLERROR','OS_SERVICESTOP','OS_SERVICESTATUSDESCRIPTION',
+ 'OS_SERVICESTARTTYPEDESCRIPTION','OS_SERVICESTART','OS_SERVICESETSTARTTYPE','OS_SERVICEQUERY','OS_SERVICEGETSTARTTYPE','OS_SERVICEGETLIST','OS_PROCESSKILLBYNAME','OS_PROCESSKILLBYID',
+ 'OS_PROCESSISRUNNING','OS_PROCESSGETLIST','OS_PROCESSGETID','OS_PROCESSARERUNNING','OS_MESSAGEBEEP','OS_ISWOW64','OS_ISFEATUREPRESENT','OS_IEVERSION',
+ 'OS_GETWINDOWSDIR','OS_GETUSERNAME','OS_GETTEMPDIR','OS_GETSYSTEMDIR','OS_GETSPECIALFOLDER','OS_GETLASTCALLDLLSTATUS','OS_GETLASTCALLDLLERROR','OS_GETCURRENTTHREADID',
+ 'OS_GETCURRENTPROCESSID','OS_GETCOMPUTERNAME','OS_GETCOMMANDS','OS_GETCOMMAND','OS_FLASHWINDOW','OS_FATALAPPEXIT','OS_ENVIRON','OS_CALLDLL',
+ 'OR','OPTIONAL','OPTION','OPT','ONCE','ON','OFF','NUMBER',
+ 'NOT','NEXT','NEW','MSGBOX','MOUSEPTR','MODULE','MODELESS','MODAL',
+ 'MOD','MKWRD$','MKS$','MKQ$','MKL$','MKI$','MKE$','MKDWD$',
+ 'MKD$','MKCUX$','MKCUR$','MKBYT$','MIN$','MIN','MID$','MENU',
+ 'MDI_CREATE','MCASE$','MAX$','MAX','MAKWRD','MAKLNG','MAKINT','MAKDWR',
+ 'LTRIM$','LSET$','LOWRD','LOOP','LONG','LOINT','LOG_WRITE','LOGB',
+ 'LOG2','LOG10','LOG','LOCAL','LOC','LL_UPDATEBYNAME','LL_UPDATE','LL_TOSTRING',
+ 'LL_TOFILE','LL_NAME','LL_GETITEM','LL_GETBYNUMBER','LL_FROMFILE','LL_FREE','LL_FINDLAST','LL_FINDBYNAME',
+ 'LL_FINDBYDATA','LL_DELETELIKE','LL_DELETEBYNAME','LL_DELETE','LL_DATABYNAME','LL_DATA','LL_COUNT','LL_ADD',
+ 'LISTBOX','LINE','LIBRARY_EXISTS','LIB','LEN','LEFT$','LEFT','LCASE$',
+ 'LBOUND','LABEL','KILL','JOIN$','ITERATE','ISWINDOW','ISUNICODE','ISTRUE',
+ 'ISODD','ISLIKE','ISFALSE','ISEVEN','IP_TOSTRING','IP_ADDR','INTERNALINFO','INTEGER',
+ 'INT','INSTR','INSIDE','INPUTBOX$','INI_SETKEY','INI_GETSECTIONSLIST','INI_GETSECTIONKEYLIST','INI_GETKEY',
+ 'INET_URLDOWNLOAD','INET_PING','INET_OPENDIALUPDIALOG','INET_GETSTATE','INET_GETREMOTEMACADDRESS','INET_GETIP','INET_GETCONNECTIONMODE','INCR',
+ 'IN','IMAGE','IIF$','IIF','IF','ICRYPTO_TESTSHA1','ICRYPTO_TESTMD5','ICRYPTO_TESTCRC32',
+ 'ICRYPTO_TESTCRC16','ICRYPTO_STRING2ASCII','ICRYPTO_SHA1','ICRYPTO_MD5','ICRYPTO_ENCRYPTRIJNDAEL','ICRYPTO_ENCRYPTRC4','ICRYPTO_DECRYPTRIJNDAEL','ICRYPTO_DECRYPTRC4',
+ 'ICRYPTO_CRC32','ICRYPTO_CRC16','ICRYPTO_BYTEXOR','ICRYPTO_BIN2ASCII','ICRYPTO_ASCII2STRING','ICRYPTO_ASCII2BIN','HOST_ADDR','HOSTNAME_TOIP',
+ 'HOSTIP_TONAME','HIWRD','HIINT','HEX$','HASH','HANDLE','GUIDTXT$','GUID$',
+ 'GRAPHIC','GLVOID','GLUSHORT','GLUINT','GLUBYTE','GLSIZEI','GLSHORT','GLOBAL',
+ 'GLINT','GLFLOAT','GLENUM','GLDOUBLE','GLCLAMPF','GLCLAMPD','GLBYTE','GLBOOLEAN',
+ 'GLBITFIELD','GETWINDOWMULTIKEYSTATE','GETWINDOWKEYSTATE','GETTICKCOUNT','GETS','GETMULTIASYNCKEYSTATE','GETMESSAGE','GETCURRENTINSTANCE',
+ 'GETAT','GETASYNCKEYSTATE','GET','FUNCTION_NPARAMS','FUNCTION_EXISTS','FUNCTION_CPARAMS','FUNCTION','FTP_SETSTRING',
+ 'FTP_SETSERVERDIR','FTP_SETNUMBER','FTP_SETMODE','FTP_SETLOGFILE','FTP_SETLOCALDIR','FTP_QUIT','FTP_PUTFILE','FTP_GETSTRING',
+ 'FTP_GETSERVERDIR','FTP_GETNUMBER','FTP_GETLOCALDIR','FTP_GETLIST','FTP_GETFILE','FTP_GETERRORSTRING','FTP_GETERRORNUMBER','FTP_FINISHED',
+ 'FTP_EXTRACT','FTP_DELFILE','FTP_CONNECT','FTP_COMMAND','FRAME','FRAC','FORMAT$','FOR',
+ 'FONT_LIST','FONT_CREATE','FONT','FOCUS','FLUSH','FIX','FILE_SIZE','FILE_SHELLDELETE',
+ 'FILE_SHELLCOPY','FILE_SETDATETIME','FILE_SEEK','FILE_SAVE','FILE_RENAME','FILE_PUT','FILE_PATHSPLIT','FILE_OPEN',
+ 'FILE_LOF','FILE_LOAD','FILE_LINEPRINT','FILE_LINEINPUT','FILE_KILL','FILE_GETVERSIONSTRING','FILE_GETVERSION','FILE_GETTIME',
+ 'FILE_GETDATETIMESTAMP','FILE_GETDATETIME','FILE_GETDATE','FILE_GET','FILE_EXISTS','FILE_EOF','FILE_COPY','FILE_CLOSE',
+ 'FILE_CHANGED','FILE_APPEND','FACTORIAL','EXTRACT$','EXT','EXPORT','EXP2','EXP10',
+ 'EXP','EXIT','EVAL_STRING','EVAL_SETSTRING','EVAL_SETNUMBER','EVAL_MATH','EVAL_LINKEXT','EVAL_GETSTRING',
+ 'EVAL_GETNUMBER','EVAL_ERRORGETTOKEN','EVAL_ERRORDESCRIPTION','EVAL_ERRORCLEAR','EVAL','ERRCLEAR','ERR','ENGINE_GETCURRENTTOKEN',
+ 'ENDIF','END','ENABLE','ELSEIF','ELSE','ECHO','DWORD','DT_YEAR',
+ 'DT_TIMETOSEC','DT_TIMESUBSECONDS','DT_TIMEFORMAT','DT_TIMEADDSECONDS','DT_SETTIMESEPARATOR','DT_SETDATESEPARATOR','DT_SETDATECENTURY','DT_SECTOTIME',
+ 'DT_SECTODATE','DT_SECOND','DT_MONTH','DT_MINUTE','DT_LASTDAYOFMONTH','DT_ISVALIDDATE','DT_ISLEAPYEAR','DT_HOUR',
+ 'DT_GETWEEKDAYNAME','DT_GETWEEKDAY','DT_GETTIMESTAMP','DT_GETTIMESEPARATOR','DT_GETMONTHNAME','DT_GETDATESEPARATOR','DT_GETDATECENTURY','DT_DAY',
+ 'DT_DATETOSEC','DT_DATETIMESUBSECONDS','DT_DATETIMEADDSECONDS','DT_DATESUBDAYS','DT_DATEFORMAT','DT_DATEDIFF','DT_DATEADDDAYS','DT_COOKIEDATE',
+ 'DRAW','DOUBLE','DOEVENTS','DO','DISABLE','DIR_REMOVE','DIR_MAKEALL','DIR_MAKE',
+ 'DIR_LISTARRAY','DIR_LIST','DIR_ISEMPTY','DIR_ISDIR','DIR_GETCURRENT','DIR_EXISTS','DIR_CHANGEDRIVE','DIR_CHANGE',
+ 'DIM','DICTIONARY_MEMINFO','DICTIONARY_LISTKEYS','DICTIONARY_FREE','DICTIONARY_FIND','DICTIONARY_EXISTS','DICTIONARY_CREATE','DICTIONARY_COUNT',
+ 'DICTIONARY_ADD','DIALOG_STOPEVENTS','DIALOG_SAVEFILE','DIALOG_OPENFILE','DIALOG_GETCONTROL','DIALOG_CHOOSECOLOR','DIALOG_BROWSEFORFOLDER','DIALOG',
+ 'DESKTOP','DESCENDING','DESCEND','DELETEOBJECT','DELETE','DEGTORAD','DECR','DECLARE',
+ 'DATE$','CVWRD','CVS','CVQ','CVL','CVI','CVE','CVDWD',
+ 'CVD','CVCUX','CVCUR','CVBYT','CURRENCY','CUR','CSET$','CSCH',
+ 'CSC','CRYPTO_GETPROVIDERTYPESCOUNT','CRYPTO_GETPROVIDERSCOUNT','CRYPTO_GETDEFAULTPROVIDER','CRYPTO_GENRANDOMSTRING','CRYPTO_ENUMPROVIDERTYPES','CRYPTO_ENUMPROVIDERS','CRYPTO_ENCRYPT',
+ 'CRYPTO_DECRYPT','CREATEFONT','COTH','COTAN','COSH','COS','CONTROL_SETTEXT','CONTROL_GETTEXT',
+ 'CONTROL_GETNUMBER','CONTROL','CONST','CONSOLE_WRITELINE','CONSOLE_WRITE','CONSOLE_WAITKEY','CONSOLE_SHOWWINDOW','CONSOLE_SHOWCURSOR',
+ 'CONSOLE_SETTITLE','CONSOLE_SETTEXTATTRIBUTE','CONSOLE_SETSTDHANDLE','CONSOLE_SETSCREENBUFFERSIZE','CONSOLE_SETPROGRESSBARCHAR','CONSOLE_SETOUTPUTMODE','CONSOLE_SETOUTPUTCP','CONSOLE_SETINPUTMODE',
+ 'CONSOLE_SETFILEAPISTOOEM','CONSOLE_SETFILEAPISTOANSI','CONSOLE_SETCURSORSIZE','CONSOLE_SETCURSORPOSITION','CONSOLE_SETCP','CONSOLE_SETACTIVESCREENBUFFER','CONSOLE_SCROLLWINDOW','CONSOLE_SCROLLBUFFERONEROW',
+ 'CONSOLE_SCROLLBUFFER','CONSOLE_SAVESCREEN','CONSOLE_RESTORESCREEN','CONSOLE_READLINE','CONSOLE_READ','CONSOLE_PROGRESSBAR','CONSOLE_PRINTLINE','CONSOLE_PRINTAT',
+ 'CONSOLE_PRINT','CONSOLE_NORMALSCREEN','CONSOLE_LINE','CONSOLE_INKEYB','CONSOLE_INKEY','CONSOLE_HIDECURSOR','CONSOLE_GETTITLE','CONSOLE_GETTEXTATTRIBUTE',
+ 'CONSOLE_GETSTDHANDLE','CONSOLE_GETSIZEY','CONSOLE_GETSIZEX','CONSOLE_GETPROGRESSBARCHAR','CONSOLE_GETOUTPUTMODE','CONSOLE_GETOUTPUTCP','CONSOLE_GETNUMBEROFMOUSEBUTTONS','CONSOLE_GETINPUTMODE',
+ 'CONSOLE_GETCURSORY','CONSOLE_GETCURSORX','CONSOLE_GETCURSORSIZE','CONSOLE_GETCURRENTFONTINDEX','CONSOLE_GETCP','CONSOLE_GENERATECTRLEVENT','CONSOLE_FULLSCREEN','CONSOLE_FREE',
+ 'CONSOLE_FOREGROUNDRGB','CONSOLE_ENABLECTRLC','CONSOLE_DISABLECTRLC','CONSOLE_CREATESCREENBUFFER','CONSOLE_COLORAT','CONSOLE_CLS','CONSOLE_BOX','CONSOLE_BACKGROUNDRGB',
+ 'CONSOLE_ATTACH','CONSOLE_AREFILEAPISANSI','CONSOLE_ALLOC','COM_VARIANTINIT','COM_VARIANTCOPY','COM_VARIANTCLEAR','COM_SUCCEEDED','COM_STRINGFROMCLSID',
+ 'COM_RELEASE','COM_QUERYINTERFACE','COM_PROGIDFROMCLSID','COM_ISEQUALIID','COM_ISEQUALGUID','COM_ISEQUALCLSID','COM_GETOBJECT','COM_GETENGINEGUID',
+ 'COM_EXECUTE','COM_DISPLAYERROR','COM_CREATEOBJECT','COM_CLSIDFROMSTRING','COM_CLSIDFROMPROGID','COM_BUILDVARIANT','COMBOBOX','COMBINATIONS',
+ 'COLOR','CLIPBOARD_SETTEXT','CLIPBOARD_GETTEXT','CLIENT','CLEARMESSAGES','CHR$','CHOOSE$','CHOOSE',
+ 'CHECKBOX','CHECK3STATE','CHECK','CGI_WRITELOGFILE','CGI_WRITE','CGI_URLDECODESTRING','CGI_UPLOADFILESTIME','CGI_UPLOADFILESNUMBER',
+ 'CGI_UPLOADFILESIZE','CGI_STARTSESSION','CGI_SETSESSIONVARIABLE','CGI_RESETDEFAULTSETTINGS','CGI_REMOVESPECIALCHARSPREFIX','CGI_REMOVEQUOTE','CGI_READ','CGI_LOADCONFIGFILE',
+ 'CGI_HEADER','CGI_GETSESSIONVARIABLE','CGI_GETREQUESTMETHOD','CGI_GETQUERYVALUE','CGI_GETCURRENTSESSION','CGI_GETCURRENTGUID','CGI_ENVIRON','CGI_CFGSETOPTION',
+ 'CGI_CFGGETOPTION','CGI_ADDSPECIALCHARSPREFIX','CGI_ADDQUOTE','CEIL','CASE','CALL','BYVAL','BYTE',
+ 'BYREF','BYCMD','BUTTON','BUNDLE_SETSCRIPTPARAMETERS','BUNDLE_SETSCRIPTNAME','BUNDLE_SETFLAGOBFUSCATEMAINSCRIPT','BUNDLE_SETFLAGDELETEAFTERRUN','BUNDLE_SETFLAGCOMPRESSALLFILES',
+ 'BUNDLE_SETFLAGASKBEFOREEXTRACT','BUNDLE_SETEXTRACTIONFOLDER','BUNDLE_SETCREATIONFOLDER','BUNDLE_SETBUNDLENAME','BUNDLE_RESET','BUNDLE_MAKE','BUNDLE_BUILDER','BUNDLE_ADDFOLDER',
+ 'BUNDLE_ADDFILE','BOUNDCHECK','BIN$','BIFF_WRITETEXT','BIFF_WRITENUMBER','BIFF_WRITEDATE','BIFF_SETROWHEIGHT','BIFF_SETCOLWIDTH',
+ 'BIFF_SETBUFFER','BIFF_CREATEFILE','BIFF_CLOSEFILE','BETWEEN','BEEP','BAR','ATTACH','ATN',
+ 'AT','ASSIGN','ASCIZ','ASCIIZ','ASCII2UNICODE','ASCENDING','ASCEND','ASC',
+ 'AS','ARRAY','ARCTANH','ARCSINH','ARCSIN','ARCSECH','ARCSEC','ARCCSCH',
+ 'ARCCSC','ARCCOTH','ARCCOT','ARCCOSH','ARCCOS','APP_TIMER','APP_SOURCEPATH','APP_SOURCENAME',
+ 'APP_SOURCEFULLNAME','APP_PATH','APP_NAME','APP_LISTVARIABLES','APP_LISTKEYWORDS','APP_LISTFUNCTIONS','APP_LISTEQUATES','APP_INCLUDEPATH',
+ 'APP_GETMODULEFULLPATH','APP_COUNTER','APPEND','ANY','ANIMATE_STOP','ANIMATE_PLAY','ANIMATE_OPEN','AND',
+ 'ALIAS','ALERT','ADD','ACODE$','ABS','%DEF','#MINVERSION','#IF',
+ '#ENDIF','#ELSEIF','#ELSE','#DEFAULT','#DEF','SQLWRITEPRIVATEPROFILESTRING','SQLWRITEFILEDSN','SQLWRITEDSNTOINI',
+ 'SQLVALIDDSN','SQLTRANSACT','SQLTABLES','SQLTABLEPRIVILEGES','SQLSTATISTICS','SQLSPECIALCOLUMNS','SQLSETSTMTOPTION','SQLSETSTMTATTR',
+ 'SQLSETSCROLLOPTIONS','SQLSETPOS','SQLSETPARAM','SQLSETENVATTR','SQLSETDESCREC','SQLSETDESCFIELD','SQLSETCURSORNAME','SQLSETCONNECTOPTION',
+ 'SQLSETCONNECTATTR','SQLSETCONFIGMODE','SQLROWCOUNT','SQLREMOVETRANSLATOR','SQLREMOVEDSNFROMINI','SQLREMOVEDRIVERMANAGER','SQLREMOVEDRIVER','SQLREADFILEDSN',
+ 'SQLPUTDATA','SQLPROCEDURES','SQLPROCEDURECOLUMNS','SQLPRIMARYKEYS','SQLPREPARE','SQLPOSTINSTALLERERROR','SQLPARAMOPTIONS','SQLPARAMDATA',
+ 'SQLNUMRESULTCOLS','SQLNUMPARAMS','SQLNATIVESQL','SQLMORERESULTS','SQLMANAGEDATASOURCES','SQLINSTALLTRANSLATOREX','SQLINSTALLERERROR','SQLINSTALLDRIVERMANAGER',
+ 'SQLINSTALLDRIVEREX','SQLGETTYPEINFO','SQLGETTRANSLATOR','SQLGETSTMTOPTION','SQLGETSTMTATTR','SQLGETPRIVATEPROFILESTRING','SQLGETINSTALLEDDRIVERS','SQLGETINFO',
+ 'SQLGETFUNCTIONS','SQLGETENVATTR','SQLGETDIAGREC','SQLGETDIAGFIELD','SQLGETDESCREC','SQLGETDESCFIELD','SQLGETDATA','SQLGETCURSORNAME',
+ 'SQLGETCONNECTOPTION','SQLGETCONNECTATTR','SQLGETCONFIGMODE','SQLFREESTMT','SQLFREEHANDLE','SQLFREEENV','SQLFREECONNECT','SQLFOREIGNKEYS',
+ 'SQLFETCHSCROLL','SQLFETCH','SQLEXTENDEDFETCH','SQLEXECUTE','SQLEXECDIRECT','SQLERROR','SQLENDTRAN','SQLDRIVERS',
+ 'SQLDRIVERCONNECT','SQLDISCONNECT','SQLDESCRIBEPARAM','SQLDESCRIBECOL','SQLDATASOURCES','SQLCREATEDATASOURCE','SQLCOPYDESC','SQLCONNECT',
+ 'SQLCONFIGDRIVER','SQLCONFIGDATASOURCE','SQLCOLUMNS','SQLCOLUMNPRIVILEGES','SQLCOLATTRIBUTES','SQLCOLATTRIBUTE','SQLCLOSECURSOR','SQLCANCEL',
+ 'SQLBULKOPERATIONS','SQLBROWSECONNECT','SQLBINDPARAMETER','SQLBINDPARAM','SQLBINDCOL','SQLALLOCSTMT','SQLALLOCHANDLE','SQLALLOCENV',
+ 'SQLALLOCCONNECT','ODBCWRONGDRIVER','ODBCWRITEPRIVATEPROFILESTRING','ODBCWRITEFILEDSN','ODBCWRITEDSNTOINI','ODBCVALIDDSN','ODBCUPDATERECORD','ODBCUPDATEBYBOOKMARK',
+ 'ODBCUNLOCKRECORD','ODBCUNBINDCOLUMNS','ODBCUNBINDCOL','ODBCTABLESCOUNT','ODBCTABLES','ODBCTABLEPRIVILEGESCOUNT','ODBCTABLEPRIVILEGES','ODBCSUPPORTS',
+ 'ODBCSTATTABLESCHEMANAME','ODBCSTATTABLEPAGES','ODBCSTATTABLECATALOGNAME','ODBCSTATTABLECARDINALITY','ODBCSTATISTICSCOUNT','ODBCSTATISTICS','ODBCSTATINDEXSORTSEQUENCE','ODBCSTATINDEXSCHEMANAME',
+ 'ODBCSTATINDEXQUALIFIER','ODBCSTATINDEXPAGES','ODBCSTATINDEXFILTERCONDITION','ODBCSTATINDEXCOLUMNORDINALPOSITION','ODBCSTATINDEXCOLUMNNAME','ODBCSTATINDEXCATALOGNAME','ODBCSTATINDEXCARDINALITY','ODBCSTATINDEXALLOWDUPLICATES',
+ 'ODBCSPECIALCOLUMNSCOUNT','ODBCSPECIALCOLUMNS','ODBCSETTXNISOLATION','ODBCSETTRANSLATELIB','ODBCSETTRACEFILE','ODBCSETTRACE','ODBCSETSTMTUSEBOOKMARKS','ODBCSETSTMTSIMULATECURSOR',
+ 'ODBCSETSTMTROWSTATUSPTR','ODBCSETSTMTROWSFETCHEDPTR','ODBCSETSTMTROWOPERATIONPTR','ODBCSETSTMTROWBINDTYPE','ODBCSETSTMTROWBINDOFFSETPTR','ODBCSETSTMTROWARRAYSIZE','ODBCSETSTMTRETRIEVEDATA','ODBCSETSTMTQUERYTIMEOUT',
+ 'ODBCSETSTMTPARAMSTATUSPTR','ODBCSETSTMTPARAMSPROCESSEDPTR','ODBCSETSTMTPARAMSETSIZE','ODBCSETSTMTPARAMOPERATIONPTR','ODBCSETSTMTPARAMBINDTYPE','ODBCSETSTMTPARAMBINDOFFSETPTR','ODBCSETSTMTNOSCAN','ODBCSETSTMTMETADATAID',
+ 'ODBCSETSTMTMAXROWS','ODBCSETSTMTMAXLENGTH','ODBCSETSTMTKEYSETSIZE','ODBCSETSTMTFETCHBOOKMARKPTR','ODBCSETSTMTENABLEAUTOIPD','ODBCSETSTMTCURSORTYPE','ODBCSETSTMTCURSORSENSITIVITY','ODBCSETSTMTCURSORSCROLLABLE',
+ 'ODBCSETSTMTCONCURRENCY','ODBCSETSTMTATTR','ODBCSETSTMTASYNCENABLE','ODBCSETSTMTAPPROWDESC','ODBCSETSTMTAPPPARAMDESC','ODBCSETSTATICCURSOR','ODBCSETROWVERCONCURRENCY','ODBCSETRESULT',
+ 'ODBCSETRELATIVEPOSITION','ODBCSETREADONLYCONCURRENCY','ODBCSETQUIETMODE','ODBCSETPOSITION','ODBCSETPOS','ODBCSETPACKETMODE','ODBCSETOPTIMISTICCONCURRENCY','ODBCSETODBCCURSORS',
+ 'ODBCSETMULTIUSERKEYSETCURSOR','ODBCSETMETADATAID','ODBCSETLOGINTIMEOUT','ODBCSETLOCKCONCURRENCY','ODBCSETKEYSETDRIVENCURSOR','ODBCSETFORWARDONLYCURSOR','ODBCSETENVOUTPUTNTS','ODBCSETENVODBCVERSION',
+ 'ODBCSETENVCPMATCH','ODBCSETENVCONNECTIONPOOLING','ODBCSETENVATTR','ODBCSETDYNAMICCURSOR','ODBCSETDESCREC','ODBCSETDESCFIELD','ODBCSETCURSORTYPE','ODBCSETCURSORSENSITIVITY',
+ 'ODBCSETCURSORSCROLLABILITY','ODBCSETCURSORNAME','ODBCSETCURSORLOCKTYPE','ODBCSETCURSORKEYSETSIZE','ODBCSETCURSORCONCURRENCY','ODBCSETCURRENTCATALOG','ODBCSETCONNECTIONTIMEOUT','ODBCSETCONNECTATTR',
+ 'ODBCSETCONFIGMODE','ODBCSETCONCURVALUESCONCURRENCY','ODBCSETAUTOCOMMITON','ODBCSETAUTOCOMMITOFF','ODBCSETAUTOCOMMIT','ODBCSETASYNCENABLE','ODBCSETACCESSMODE','ODBCSETABSOLUTEPOSITION',
+ 'ODBCROWCOUNT','ODBCROLLBACKTRAN','ODBCROLLBACKENVTRAN','ODBCROLLBACKDBCTRAN','ODBCRESULT','ODBCRESETPARAMS','ODBCREMOVETRANSLATOR','ODBCREMOVEDSNFROMINI',
+ 'ODBCREMOVEDRIVERMANAGER','ODBCREMOVEDRIVER','ODBCREFRESHRECORD','ODBCRECORDCOUNT','ODBCREADFILEDSN','ODBCQUOTEDIDENTIFIERCASE','ODBCPUTDATA','ODBCPROCEDURESCOUNT',
+ 'ODBCPROCEDURES','ODBCPROCEDURECOLUMNSCOUNT','ODBCPROCEDURECOLUMNS','ODBCPRIMARYKEYSCOUNT','ODBCPRIMARYKEYS','ODBCPREPARE','ODBCPOSTINSTALLERERROR','ODBCPARAMDATA',
+ 'ODBCOPENSTMT','ODBCOPENCONNECTION','ODBCNUMRESULTCOLS','ODBCNUMPARAMS','ODBCNATIVESQL','ODBCMOVEPREVIOUS','ODBCMOVENEXT','ODBCMOVELAST',
+ 'ODBCMOVEFIRST','ODBCMOVE','ODBCMORERESULTS','ODBCMANAGEDATASOURCES','ODBCLOCKRECORD','ODBCINSTALLTRANSLATOREX','ODBCINSTALLERERROR','ODBCINSTALLDRIVERMANAGER',
+ 'ODBCINSTALLDRIVEREX','ODBCGETXOPENCLIYEAR','ODBCGETUSERNAME','ODBCGETUNION','ODBCGETTYPEINFOCOUNT','ODBCGETTYPEINFO','ODBCGETTXNISOLATIONOPTION','ODBCGETTXNISOLATION',
+ 'ODBCGETTXNCAPABLE','ODBCGETTRANSLATOR','ODBCGETTRANSLATELIB','ODBCGETTRACEFILE','ODBCGETTRACE','ODBCGETTIMEDATEFUNCTIONS','ODBCGETTIMEDATEDIFFINTERVALS','ODBCGETTIMEDATEADDINTERVALS',
+ 'ODBCGETTABLETERM','ODBCGETSYSTEMFUNCTIONS','ODBCGETSUBQUERIES','ODBCGETSTRINGFUNCTIONS','ODBCGETSTMTUSEBOOKMARKS','ODBCGETSTMTSQLSTATE','ODBCGETSTMTSIMULATECURSOR','ODBCGETSTMTROWSTATUSPTR',
+ 'ODBCGETSTMTROWSFETCHEDPTR','ODBCGETSTMTROWOPERATIONPTR','ODBCGETSTMTROWNUMBER','ODBCGETSTMTROWBINDTYPE','ODBCGETSTMTROWBINDOFFSETPTR','ODBCGETSTMTROWARRAYSIZE','ODBCGETSTMTRETRIEVEDATA','ODBCGETSTMTQUERYTIMEOUT',
+ 'ODBCGETSTMTPARAMSTATUSPTR','ODBCGETSTMTPARAMSPROCESSEDPTR','ODBCGETSTMTPARAMSETSIZE','ODBCGETSTMTPARAMOPERATIONPTR','ODBCGETSTMTPARAMBINDTYPE','ODBCGETSTMTPARAMBINDOFFSETPTR','ODBCGETSTMTNOSCAN','ODBCGETSTMTMETADATAID',
+ 'ODBCGETSTMTMAXROWS','ODBCGETSTMTMAXLENGTH','ODBCGETSTMTKEYSETSIZE','ODBCGETSTMTIMPROWDESC','ODBCGETSTMTIMPPARAMDESC','ODBCGETSTMTFETCHBOOKMARKPTR','ODBCGETSTMTERRORINFO','ODBCGETSTMTENABLEAUTOIPD',
+ 'ODBCGETSTMTCURSORTYPE','ODBCGETSTMTCURSORSENSITIVITY','ODBCGETSTMTCURSORSCROLLABLE','ODBCGETSTMTCONCURRENCY','ODBCGETSTMTATTR','ODBCGETSTMTASYNCENABLE','ODBCGETSTMTAPPROWDESC','ODBCGETSTMTAPPPARAMDESC',
+ 'ODBCGETSTATICCURSORATTRIBUTES2','ODBCGETSTATICCURSORATTRIBUTES1','ODBCGETSTATEMENTSQLSTATE','ODBCGETSTATEMENTERRORINFO','ODBCGETSTANDARDCLICONFORMANCE','ODBCGETSQLSTATE','ODBCGETSQLCONFORMANCE','ODBCGETSQL92VALUEEXPRESSIONS',
+ 'ODBCGETSQL92STRINGFUNCTIONS','ODBCGETSQL92ROWVALUECONSTRUCTOR','ODBCGETSQL92REVOKE','ODBCGETSQL92RELATIONALJOINOPERATORS','ODBCGETSQL92PREDICATES','ODBCGETSQL92NUMERICVALUEFUNCTIONS','ODBCGETSQL92GRANT','ODBCGETSQL92FOREIGNKEYUPDATERULE',
+ 'ODBCGETSQL92FOREIGNKEYDELETERULE','ODBCGETSQL92DATETIMEFUNCTIONS','ODBCGETSPECIALCHARACTERS','ODBCGETSERVERNAME','ODBCGETSEARCHPATTERNESCAPE','ODBCGETSCROLLOPTIONS','ODBCGETSCHEMAUSAGE','ODBCGETSCHEMATERM',
+ 'ODBCGETROWUPDATES','ODBCGETQUIETMODE','ODBCGETPROCEDURETERM','ODBCGETPROCEDURESSUPPORT','ODBCGETPRIVATEPROFILESTRING','ODBCGETPOSOPERATIONS','ODBCGETPARAMARRAYSELECTS','ODBCGETPARAMARRAYROWCOUNTS',
+ 'ODBCGETPACKETMODE','ODBCGETOUTERJOINS','ODBCGETORDERBYCOLUMNSINSELECT','ODBCGETOJCAPABILITIES','ODBCGETODBCVER','ODBCGETODBCINTERFACECONFORMANCE','ODBCGETODBCCURSORS','ODBCGETNUMERICFUNCTIONS',
+ 'ODBCGETNULLCOLLATION','ODBCGETNONNULLABLECOLUMNS','ODBCGETNEEDLONGDATALEN','ODBCGETMULTRESULTSETS','ODBCGETMULTIPLEACTIVETXN','ODBCGETMETADATAID','ODBCGETMAXUSERNAMELEN','ODBCGETMAXTABLESINSELECT',
+ 'ODBCGETMAXTABLENAMELEN','ODBCGETMAXSTATEMENTLEN','ODBCGETMAXSCHEMANAMELEN','ODBCGETMAXROWSIZEINCLUDESLONG','ODBCGETMAXROWSIZE','ODBCGETMAXPROCEDURENAMELEN','ODBCGETMAXINDEXSIZE','ODBCGETMAXIDENTIFIERLEN',
+ 'ODBCGETMAXDRIVERCONNECTIONS','ODBCGETMAXCURSORNAMELEN','ODBCGETMAXCONCURRENTACTIVITIES','ODBCGETMAXCOLUMNSINTABLE','ODBCGETMAXCOLUMNSINSELECT','ODBCGETMAXCOLUMNSINORDERBY','ODBCGETMAXCOLUMNSININDEX','ODBCGETMAXCOLUMNSINGROUPBY',
+ 'ODBCGETMAXCOLUMNNAMELEN','ODBCGETMAXCHARLITERALLEN','ODBCGETMAXCATALOGNAMELEN','ODBCGETMAXBINARYLITERALLEN','ODBCGETMAXASYNCCONCURRENTSTATEMENTS','ODBCGETLONGVARCHARDATABYCOLNAME','ODBCGETLONGVARCHARDATA','ODBCGETLOGINTIMEOUT',
+ 'ODBCGETLIKEESCAPECLAUSE','ODBCGETKEYWORDS','ODBCGETKEYSETCURSORATTRIBUTES2','ODBCGETKEYSETCURSORATTRIBUTES1','ODBCGETINTEGRITY','ODBCGETINSTALLERERRORMESSAGE','ODBCGETINSTALLERERRORCODE','ODBCGETINSTALLEDDRIVERS',
+ 'ODBCGETINSERTSTATEMENT','ODBCGETINFOSTR','ODBCGETINFOSCHEMAVIEWS','ODBCGETINFOLONG','ODBCGETINFOINT','ODBCGETINFO','ODBCGETINDEXKEYWORDS','ODBCGETIMPROWDESCREC',
+ 'ODBCGETIMPROWDESCFIELDTYPE','ODBCGETIMPROWDESCFIELDSCALE','ODBCGETIMPROWDESCFIELDPRECISION','ODBCGETIMPROWDESCFIELDOCTETLENGTH','ODBCGETIMPROWDESCFIELDNULLABLE','ODBCGETIMPROWDESCFIELDNAME','ODBCGETIMPROWDESCFIELD','ODBCGETIMPPARAMDESCREC',
+ 'ODBCGETIMPPARAMDESCFIELDTYPE','ODBCGETIMPPARAMDESCFIELDSCALE','ODBCGETIMPPARAMDESCFIELDPRECISION','ODBCGETIMPPARAMDESCFIELDOCTETLENGTH','ODBCGETIMPPARAMDESCFIELDNULLABLE','ODBCGETIMPPARAMDESCFIELDNAME','ODBCGETIMPPARAMDESCFIELD','ODBCGETIDENTIFIERQUOTECHAR',
+ 'ODBCGETIDENTIFIERCASE','ODBCGETGROUPBY','ODBCGETFUNCTIONS','ODBCGETFORWARDONLYCURSORATTRIBUTES2','ODBCGETFORWARDONLYCURSORATTRIBUTES1','ODBCGETFILEUSAGE','ODBCGETEXPRESSIONSINORDERBY','ODBCGETERRORINFO',
+ 'ODBCGETENVSQLSTATE','ODBCGETENVOUTPUTNTS','ODBCGETENVODBCVERSION','ODBCGETENVIRONMENTSQLSTATE','ODBCGETENVIRONMENTERRORINFO','ODBCGETENVERRORINFO','ODBCGETENVCPMATCH','ODBCGETENVCONNECTIONPOOLING',
+ 'ODBCGETENVATTR','ODBCGETDYNAMICCURSORATTRIBUTES2','ODBCGETDYNAMICCURSORATTRIBUTES1','ODBCGETDROPVIEW','ODBCGETDROPTRANSLATION','ODBCGETDROPTABLE','ODBCGETDROPSCHEMA','ODBCGETDROPDOMAIN',
+ 'ODBCGETDROPCOLLATION','ODBCGETDROPCHARACTERSET','ODBCGETDROPASSERTION','ODBCGETDRIVERVER','ODBCGETDRIVERODBCVER','ODBCGETDRIVERNAME','ODBCGETDRIVERMANAGERINSTALLPATH','ODBCGETDRIVERHLIB',
+ 'ODBCGETDRIVERHENV','ODBCGETDRIVERHDBC','ODBCGETDMVERMINOR','ODBCGETDMVERMAJOR','ODBCGETDMVER','ODBCGETDIAGREC','ODBCGETDIAGFIELD','ODBCGETDESCSQLSTATE',
+ 'ODBCGETDESCRIPTORSQLSTATE','ODBCGETDESCRIPTORERRORINFO','ODBCGETDESCRIBEPARAMETER','ODBCGETDESCREC','ODBCGETDESCFIELD','ODBCGETDESCERRORINFO','ODBCGETDEFAULTTXNISOLATION','ODBCGETDDLINDEX',
+ 'ODBCGETDBMSVER','ODBCGETDBMSNAME','ODBCGETDBCSQLSTATE','ODBCGETDBCERRORINFO','ODBCGETDATETIMELITERALS','ODBCGETDATASTRINGBYCOLNAME','ODBCGETDATASTRING','ODBCGETDATASOURCEREADONLY',
+ 'ODBCGETDATASOURCENAME','ODBCGETDATAEXTENSIONS','ODBCGETDATABASENAME','ODBCGETDATA','ODBCGETCURSORTYPE','ODBCGETCURSORSENSITIVITYSUPPORT','ODBCGETCURSORSENSITIVITY','ODBCGETCURSORSCROLLABILITY',
+ 'ODBCGETCURSORROLLBACKBEHAVIOR','ODBCGETCURSORNAME','ODBCGETCURSORLOCKTYPE','ODBCGETCURSORKEYSETSIZE','ODBCGETCURSORCONCURRENCY','ODBCGETCURSORCOMMITBEHAVIOR','ODBCGETCURRENTCATALOG','ODBCGETCREATEVIEW',
+ 'ODBCGETCREATETRANSLATION','ODBCGETCREATETABLE','ODBCGETCREATESCHEMA','ODBCGETCREATEDOMAIN','ODBCGETCREATECOLLATION','ODBCGETCREATECHARACTERSET','ODBCGETCREATEASSERTION','ODBCGETCORRELATIONNAME',
+ 'ODBCGETCONVERTVARCHAR','ODBCGETCONVERTVARBINARY','ODBCGETCONVERTTINYINT','ODBCGETCONVERTTIMESTAMP','ODBCGETCONVERTTIME','ODBCGETCONVERTSMALLINT','ODBCGETCONVERTREAL','ODBCGETCONVERTNUMERIC',
+ 'ODBCGETCONVERTLONGVARCHAR','ODBCGETCONVERTLONGVARBINARY','ODBCGETCONVERTINTERVALYEARMONTH','ODBCGETCONVERTINTERVALDAYTIME','ODBCGETCONVERTINTEGER','ODBCGETCONVERTFUNCTIONS','ODBCGETCONVERTFLOAT','ODBCGETCONVERTDOUBLE',
+ 'ODBCGETCONVERTDECIMAL','ODBCGETCONVERTDATE','ODBCGETCONVERTCHAR','ODBCGETCONVERTBIT','ODBCGETCONVERTBINARY','ODBCGETCONVERTBIGINT','ODBCGETCONNECTIONTIMEOUT','ODBCGETCONNECTIONSQLSTATE',
+ 'ODBCGETCONNECTIONERRORINFO','ODBCGETCONNECTIONDEAD','ODBCGETCONNECTATTR','ODBCGETCONFIGMODE','ODBCGETCONCATNULLBEHAVIOR','ODBCGETCOLUMNALIAS','ODBCGETCOLLATIONSEQ','ODBCGETCATALOGUSAGE',
+ 'ODBCGETCATALOGTERM','ODBCGETCATALOGNAMESEPARATOR','ODBCGETCATALOGNAME','ODBCGETCATALOGLOCATION','ODBCGETBOOKMARKPERSISTENCE','ODBCGETBATCHSUPPORT','ODBCGETBATCHROWCOUNT','ODBCGETAUTOIPD',
+ 'ODBCGETAUTOCOMMIT','ODBCGETASYNCMODE','ODBCGETASYNCENABLE','ODBCGETALTERTABLE','ODBCGETALTERDOMAIN','ODBCGETAGGREGATEFUNCTIONS','ODBCGETACTIVEENVIRONMENTS','ODBCGETACCESSMODE',
+ 'ODBCGETACCESSIBLETABLES','ODBCGETACCESSIBLEPROCEDURES','ODBCFREESTMT','ODBCFREEHANDLE','ODBCFREEENV','ODBCFREEDESC','ODBCFREEDBC','ODBCFREECONNECT',
+ 'ODBCFOREIGNKEYSCOUNT','ODBCFOREIGNKEYS','ODBCFETCHSCROLL','ODBCFETCHBYBOOKMARK','ODBCFETCH','ODBCEXTENDEDFETCH','ODBCEXECUTE','ODBCEXECDIRECT',
+ 'ODBCERROR','ODBCEOF','ODBCENDTRAN','ODBCDRIVERSCOUNT','ODBCDRIVERS','ODBCDRIVERCONNECT','ODBCDISCONNECT','ODBCDESCRIBEPARAM',
+ 'ODBCDESCRIBECOL','ODBCDELETERECORD','ODBCDELETEBYBOOKMARK','ODBCDATASOURCES','ODBCCREATEDATASOURCE','ODBCCOPYDESC','ODBCCONNECTIONISDEAD','ODBCCONNECTIONISALIVE',
+ 'ODBCCONNECT','ODBCCONFIGDRIVER','ODBCCONFIGDATASOURCE','ODBCCOMMITTRAN','ODBCCOMMITENVTRAN','ODBCCOMMITDBCTRAN','ODBCCOLUPDATABLE','ODBCCOLUNSIGNED',
+ 'ODBCCOLUNNAMED','ODBCCOLUMNSCOUNT','ODBCCOLUMNS','ODBCCOLUMNPRIVILEGESCOUNT','ODBCCOLUMNPRIVILEGES','ODBCCOLUMN','ODBCCOLTYPENAME','ODBCCOLTYPE',
+ 'ODBCCOLTABLENAME','ODBCCOLSEARCHABLE','ODBCCOLSCHEMANAME','ODBCCOLSCALE','ODBCCOLPRECISION','ODBCCOLOCTETLENGTH','ODBCCOLNUMPRECRADIX','ODBCCOLNULLABLE',
+ 'ODBCCOLNAME','ODBCCOLLOCALTYPENAME','ODBCCOLLITERALSUFFIX','ODBCCOLLITERALPREFIX','ODBCCOLLENGTH','ODBCCOLLABEL','ODBCCOLISNULL','ODBCCOLFIXEDPRECSCALE',
+ 'ODBCCOLDISPLAYSIZE','ODBCCOLCOUNT','ODBCCOLCONCISETYPE','ODBCCOLCATALOGNAME','ODBCCOLCASESENSITIVE','ODBCCOLBASETABLENAME','ODBCCOLBASECOLUMNNAME','ODBCCOLAUTOUNIQUEVALUE',
+ 'ODBCCOLATTRIBUTE','ODBCCLOSESTMTCURSOR','ODBCCLOSESTMT','ODBCCLOSECURSOR','ODBCCLOSECONNECTION','ODBCCLEARRESULT','ODBCCANCEL','ODBCBULKOPERATIONS',
+ 'ODBCBROWSECONNECT','ODBCBINDPARAMETER','ODBCBINDCOLTOWORD','ODBCBINDCOLTOTIMESTAMP','ODBCBINDCOLTOTIME','ODBCBINDCOLTOSTRING','ODBCBINDCOLTOSINGLE','ODBCBINDCOLTOQUAD',
+ 'ODBCBINDCOLTONUMERIC','ODBCBINDCOLTOLONG','ODBCBINDCOLTOINTEGER','ODBCBINDCOLTODWORD','ODBCBINDCOLTODOUBLE','ODBCBINDCOLTODECIMAL','ODBCBINDCOLTODATE','ODBCBINDCOLTOCURRENCY',
+ 'ODBCBINDCOLTOBYTE','ODBCBINDCOLTOBIT','ODBCBINDCOLTOBINARY','ODBCBINDCOL','ODBCALLOCSTMT','ODBCALLOCHANDLE','ODBCALLOCENV','ODBCALLOCDESC',
+ 'ODBCALLOCDBC','ODBCALLOCCONNECT','ODBCADDRECORD','GLVIEWPORT','GLVERTEXPOINTER','GLVERTEX4SV','GLVERTEX4S','GLVERTEX4IV',
+ 'GLVERTEX4I','GLVERTEX4FV','GLVERTEX4F','GLVERTEX4DV','GLVERTEX4D','GLVERTEX3SV','GLVERTEX3S','GLVERTEX3IV',
+ 'GLVERTEX3I','GLVERTEX3FV','GLVERTEX3F','GLVERTEX3DV','GLVERTEX3D','GLVERTEX2SV','GLVERTEX2S','GLVERTEX2IV',
+ 'GLVERTEX2I','GLVERTEX2FV','GLVERTEX2F','GLVERTEX2DV','GLVERTEX2D','GLUUNPROJECT','GLUTESSVERTEX','GLUTESSPROPERTY',
+ 'GLUTESSNORMAL','GLUTESSENDPOLYGON','GLUTESSENDCONTOUR','GLUTESSCALLBACK','GLUTESSBEGINPOLYGON','GLUTESSBEGINCONTOUR','GLUSPHERE','GLUSCALEIMAGE',
+ 'GLUQUADRICTEXTURE','GLUQUADRICORIENTATION','GLUQUADRICNORMALS','GLUQUADRICDRAWSTYLE','GLUQUADRICCALLBACK','GLUPWLCURVE','GLUPROJECT','GLUPICKMATRIX',
+ 'GLUPERSPECTIVE','GLUPARTIALDISK','GLUORTHO2D','GLUNURBSSURFACE','GLUNURBSPROPERTY','GLUNURBSCURVE','GLUNURBSCALLBACK','GLUNEXTCONTOUR',
+ 'GLUNEWTESS','GLUNEWQUADRIC','GLUNEWNURBSRENDERER','GLULOOKAT','GLULOADSAMPLINGMATRICES','GLUGETTESSPROPERTY','GLUGETSTRING','GLUGETNURBSPROPERTY',
+ 'GLUERRORSTRING','GLUENDTRIM','GLUENDSURFACE','GLUENDPOLYGON','GLUENDCURVE','GLUDISK','GLUDELETETESS','GLUDELETEQUADRIC',
+ 'GLUDELETENURBSRENDERER','GLUCYLINDER','GLUBUILD2DMIPMAPS','GLUBUILD1DMIPMAPS','GLUBEGINTRIM','GLUBEGINSURFACE','GLUBEGINPOLYGON','GLUBEGINCURVE',
+ 'GLTRANSLATEF','GLTRANSLATED','GLTEXSUBIMAGE2D','GLTEXSUBIMAGE1D','GLTEXPARAMETERIV','GLTEXPARAMETERI','GLTEXPARAMETERFV','GLTEXPARAMETERF',
+ 'GLTEXIMAGE2D','GLTEXIMAGE1D','GLTEXGENIV','GLTEXGENI','GLTEXGENFV','GLTEXGENF','GLTEXGENDV','GLTEXGEND',
+ 'GLTEXENVIV','GLTEXENVI','GLTEXENVFV','GLTEXENVF','GLTEXCOORDPOINTER','GLTEXCOORD4SV','GLTEXCOORD4S','GLTEXCOORD4IV',
+ 'GLTEXCOORD4I','GLTEXCOORD4FV','GLTEXCOORD4F','GLTEXCOORD4DV','GLTEXCOORD4D','GLTEXCOORD3SV','GLTEXCOORD3S','GLTEXCOORD3IV',
+ 'GLTEXCOORD3I','GLTEXCOORD3FV','GLTEXCOORD3F','GLTEXCOORD3DV','GLTEXCOORD3D','GLTEXCOORD2SV','GLTEXCOORD2S','GLTEXCOORD2IV',
+ 'GLTEXCOORD2I','GLTEXCOORD2FV','GLTEXCOORD2F','GLTEXCOORD2DV','GLTEXCOORD2D','GLTEXCOORD1SV','GLTEXCOORD1S','GLTEXCOORD1IV',
+ 'GLTEXCOORD1I','GLTEXCOORD1FV','GLTEXCOORD1F','GLTEXCOORD1DV','GLTEXCOORD1D','GLSTENCILOP','GLSTENCILMASK','GLSTENCILFUNC',
+ 'GLSHADEMODEL','GLSELECTBUFFER','GLSCISSOR','GLSCALEF','GLSCALED','GLROTATEF','GLROTATED','GLRENDERMODE',
+ 'GLRECTSV','GLRECTS','GLRECTIV','GLRECTI','GLRECTFV','GLRECTF','GLRECTDV','GLRECTD',
+ 'GLREADPIXELS','GLREADBUFFER','GLRASTERPOS4SV','GLRASTERPOS4S','GLRASTERPOS4IV','GLRASTERPOS4I','GLRASTERPOS4FV','GLRASTERPOS4F',
+ 'GLRASTERPOS4DV','GLRASTERPOS4D','GLRASTERPOS3SV','GLRASTERPOS3S','GLRASTERPOS3IV','GLRASTERPOS3I','GLRASTERPOS3FV','GLRASTERPOS3F',
+ 'GLRASTERPOS3DV','GLRASTERPOS3D','GLRASTERPOS2SV','GLRASTERPOS2S','GLRASTERPOS2IV','GLRASTERPOS2I','GLRASTERPOS2FV','GLRASTERPOS2F',
+ 'GLRASTERPOS2DV','GLRASTERPOS2D','GLPUSHNAME','GLPUSHMATRIX','GLPUSHCLIENTATTRIB','GLPUSHATTRIB','GLPRIORITIZETEXTURES','GLPOPNAME',
+ 'GLPOPMATRIX','GLPOPCLIENTATTRIB','GLPOPATTRIB','GLPOLYGONSTIPPLE','GLPOLYGONOFFSET','GLPOLYGONMODE','GLPOINTSIZE','GLPIXELZOOM',
+ 'GLPIXELTRANSFERI','GLPIXELTRANSFERF','GLPIXELSTOREI','GLPIXELSTOREF','GLPIXELMAPUSV','GLPIXELMAPUIV','GLPIXELMAPFV','GLPASSTHROUGH',
+ 'GLORTHO','GLNORMALPOINTER','GLNORMAL3SV','GLNORMAL3S','GLNORMAL3IV','GLNORMAL3I','GLNORMAL3FV','GLNORMAL3F',
+ 'GLNORMAL3DV','GLNORMAL3D','GLNORMAL3BV','GLNORMAL3B','GLNEWLIST','GLMULTMATRIXF','GLMULTMATRIXD','GLMATRIXMODE',
+ 'GLMATERIALIV','GLMATERIALI','GLMATERIALFV','GLMATERIALF','GLMAPGRID2F','GLMAPGRID2D','GLMAPGRID1F','GLMAPGRID1D',
+ 'GLMAP2F','GLMAP2D','GLMAP1F','GLMAP1D','GLLOGICOP','GLLOADNAME','GLLOADMATRIXF','GLLOADMATRIXD',
+ 'GLLOADIDENTITY','GLLISTBASE','GLLINEWIDTH','GLLINESTIPPLE','GLLIGHTMODELIV','GLLIGHTMODELI','GLLIGHTMODELFV','GLLIGHTMODELF',
+ 'GLLIGHTIV','GLLIGHTI','GLLIGHTFV','GLLIGHTF','GLISTEXTURE','GLISLIST','GLISENABLED','GLINTERLEAVEDARRAYS',
+ 'GLINITNAMES','GLINDEXUBV','GLINDEXUB','GLINDEXSV','GLINDEXS','GLINDEXPOINTER','GLINDEXMASK','GLINDEXIV',
+ 'GLINDEXI','GLINDEXFV','GLINDEXF','GLINDEXDV','GLINDEXD','GLHINT','GLGETTEXPARAMETERIV','GLGETTEXPARAMETERFV',
+ 'GLGETTEXLEVELPARAMETERIV','GLGETTEXLEVELPARAMETERFV','GLGETTEXIMAGE','GLGETTEXGENIV','GLGETTEXGENFV','GLGETTEXGENDV','GLGETTEXENVIV','GLGETTEXENVFV',
+ 'GLGETSTRING','GLGETPOLYGONSTIPPLE','GLGETPOINTERV','GLGETPIXELMAPUSV','GLGETPIXELMAPUIV','GLGETPIXELMAPFV','GLGETMATERIALIV','GLGETMATERIALFV',
+ 'GLGETMAPIV','GLGETMAPFV','GLGETMAPDV','GLGETLIGHTIV','GLGETLIGHTFV','GLGETINTEGERV','GLGETFLOATV','GLGETERROR',
+ 'GLGETDOUBLEV','GLGETCLIPPLANE','GLGETBOOLEANV','GLGENTEXTURES','GLGENLISTS','GLFRUSTUM','GLFRONTFACE','GLFOGIV',
+ 'GLFOGI','GLFOGFV','GLFOGF','GLFLUSH','GLFINISH','GLFEEDBACKBUFFER','GLEVALPOINT2','GLEVALPOINT1',
+ 'GLEVALMESH2','GLEVALMESH1','GLEVALCOORD2FV','GLEVALCOORD2F','GLEVALCOORD2DV','GLEVALCOORD2D','GLEVALCOORD1FV','GLEVALCOORD1F',
+ 'GLEVALCOORD1DV','GLEVALCOORD1D','GLENDLIST','GLEND','GLENABLECLIENTSTATE','GLENABLE','GLEDGEFLAGV','GLEDGEFLAGPOINTER',
+ 'GLEDGEFLAG','GLDRAWPIXELS','GLDRAWELEMENTS','GLDRAWBUFFER','GLDRAWARRAYS','GLDISABLECLIENTSTATE','GLDISABLE','GLDEPTHRANGE',
+ 'GLDEPTHMASK','GLDEPTHFUNC','GLDELETETEXTURES','GLDELETELISTS','GLCULLFACE','GLCOPYTEXSUBIMAGE2D','GLCOPYTEXSUBIMAGE1D','GLCOPYTEXIMAGE2D',
+ 'GLCOPYTEXIMAGE1D','GLCOPYPIXELS','GLCOLORPOINTER','GLCOLORMATERIAL','GLCOLORMASK','GLCOLOR4USV','GLCOLOR4US','GLCOLOR4UIV',
+ 'GLCOLOR4UI','GLCOLOR4UBV','GLCOLOR4UB','GLCOLOR4SV','GLCOLOR4S','GLCOLOR4IV','GLCOLOR4I','GLCOLOR4FV',
+ 'GLCOLOR4F','GLCOLOR4DV','GLCOLOR4D','GLCOLOR4BV','GLCOLOR4B','GLCOLOR3USV','GLCOLOR3US','GLCOLOR3UIV',
+ 'GLCOLOR3UI','GLCOLOR3UBV','GLCOLOR3UB','GLCOLOR3SV','GLCOLOR3S','GLCOLOR3IV','GLCOLOR3I','GLCOLOR3FV',
+ 'GLCOLOR3F','GLCOLOR3DV','GLCOLOR3D','GLCOLOR3BV','GLCOLOR3B','GLCLIPPLANE','GLCLEARSTENCIL','GLCLEARINDEX',
+ 'GLCLEARDEPTH','GLCLEARCOLOR','GLCLEARACCUM','GLCLEAR','GLCALLLISTS','GLCALLLIST','GLBLENDFUNC','GLBITMAP',
+ 'GLBINDTEXTURE','GLBEGIN','GLARRAYELEMENT','GLARETEXTURESRESIDENT','GLALPHAFUNC','GLACCUM'),
+ 2 => array(
+ '$BEL','$BS','$CR','$CRLF','$DQ','$DT_DATE_SEPARATOR','$DT_LANGUAGE','$DT_TIME_SEPARATOR',
+ '$ESC','$FF','$LF','$NUL','$PC_SD_MY_PC','$SPC','$SQL_OPT_TRACE_FILE_DEFAULT','$SQL_SPEC_STRING',
+ '$TAB','$TRACKBAR_CLASS','$VT','%ACM_OPEN','%ACM_OPENW','%ACM_PLAY','%ACM_STOP','%ACN_START',
+ '%ACN_STOP','%ACS_AUTOPLAY','%ACS_CENTER','%ACS_TIMER','%ACS_TRANSPARENT','%APP_COUNTER_FUNLOOKUP','%APP_COUNTER_KEYLOOKUP','%APP_COUNTER_LOOKUP',
+ '%APP_COUNTER_TESTALPHA','%APP_COUNTER_UDTLOOKUP','%APP_COUNTER_VARLOOKUP','%APP_TIMER_EXECTOTAL','%APP_TIMER_INIT','%APP_TIMER_LOAD','%APP_TIMER_PREPROCESSOR','%AW_ACTIVATE',
+ '%AW_BLEND','%AW_CENTER','%AW_HIDE','%AW_HOR_NEGATIVE','%AW_HOR_POSITIVE','%AW_SLIDE','%AW_VER_NEGATIVE','%AW_VER_POSITIVE',
+ '%BCM_FIRST','%BLACK','%BLUE','%BM_GETCHECK','%BM_SETCHECK','%BST_CHECKED','%BST_UNCHECKED','%BS_AUTOCHECKBOX',
+ '%BS_BOTTOM','%BS_CENTER','%BS_DEFAULT','%BS_DEFPUSHBUTTON','%BS_FLAT','%BS_LEFT','%BS_LEFTTEXT','%BS_MULTILINE',
+ '%BS_NOTIFY','%BS_OWNERDRAW','%BS_PUSHLIKE','%BS_RIGHT','%BS_TOP','%BS_VCENTER','%BUNDLE_BUILDER_CANCELLED','%CBM_FIRST',
+ '%CBN_CLOSEUP','%CBN_DBLCLK','%CBN_DROPDOWN','%CBN_EDITCHANGE','%CBN_EDITUPDATE','%CBN_ERRSPACE','%CBN_KILLFOCUS','%CBN_SELCANCEL',
+ '%CBN_SELCHANGE','%CBN_SELENDCANCEL','%CBN_SELENDOK','%CBN_SETFOCUS','%CBS_AUTOHSCROLL','%CBS_DISABLENOSCROLL','%CBS_DROPDOWN','%CBS_DROPDOWNLIST',
+ '%CBS_HASSTRINGS','%CBS_LOWERCASE','%CBS_NOINTEGRALHEIGHT','%CBS_SIMPLE','%CBS_SORT','%CBS_UPPERCASE','%CB_SELECTSTRING','%CCM_FIRST',
+ '%CC_ANYCOLOR','%CC_ENABLEHOOK','%CC_ENABLETEMPLATE','%CC_ENABLETEMPLATEHANDLE','%CC_FULLOPEN','%CC_PREVENTFULLOPEN','%CC_RGBINIT','%CC_SHOWHELP',
+ '%CC_SOLIDCOLOR','%CFE_BOLD','%CFE_ITALIC','%CFE_LINK','%CFE_PROTECTED','%CFE_STRIKEOUT','%CFE_UNDERLINE','%CFM_ANIMATION',
+ '%CFM_BACKCOLOR','%CFM_BOLD','%CFM_CHARSET','%CFM_COLOR','%CFM_FACE','%CFM_ITALIC','%CFM_KERNING','%CFM_LCID',
+ '%CFM_LINK','%CFM_OFFSET','%CFM_PROTECTED','%CFM_REVAUTHOR','%CFM_SIZE','%CFM_SPACING','%CFM_STRIKEOUT','%CFM_STYLE',
+ '%CFM_UNDERLINE','%CFM_UNDERLINETYPE','%CFM_WEIGHT','%CGI_ACCEPT_FILE_UPLOAD','%CGI_AUTO_ADD_SPECIAL_CHARS_PREFIX','%CGI_AUTO_CREATE_VARS','%CGI_BUFFERIZE_OUTPUT','%CGI_DOUBLE_QUOTE',
+ '%CGI_FILE_UPLOAD_BASEPATH','%CGI_FORCE_SESSION_VALIDATION','%CGI_MAX_BYTE_FROM_STD_IN','%CGI_REQUEST_METHOD_GET','%CGI_REQUEST_METHOD_POST','%CGI_SESSION_FILE_BASEPATH','%CGI_SINGLE_QUOTE','%CGI_SPECIAL_CHARS_PREFIX',
+ '%CGI_TEMPORARY_UPLOAD_PATH','%CGI_UPLOAD_CAN_OVERWRITE','%CGI_WRITE_LOG_FILE','%CGI_WRITE_VARS_INTO_LOG_FILE','%CONOLE_ATTACH_PARENT_PROCESS','%CONSOLE_BACKGROUND_BLUE','%CONSOLE_BACKGROUND_GREEN','%CONSOLE_BACKGROUND_INTENSITY',
+ '%CONSOLE_BACKGROUND_RED','%CONSOLE_BOX_FLAG_3DOFF','%CONSOLE_BOX_FLAG_3DON','%CONSOLE_BOX_FLAG_SHADOW','%CONSOLE_COMMON_LVB_GRID_HORIZONTAL','%CONSOLE_COMMON_LVB_GRID_LVERTICAL','%CONSOLE_COMMON_LVB_GRID_RVERTICAL','%CONSOLE_COMMON_LVB_LEADING_BYTE',
+ '%CONSOLE_COMMON_LVB_REVERSE_VIDEO','%CONSOLE_COMMON_LVB_TRAILING_BYTE','%CONSOLE_COMMON_LVB_UNDERSCORE','%CONSOLE_CTRL_BREAK_EVENT','%CONSOLE_CTRL_C_EVENT','%CONSOLE_DOUBLE_CLICK','%CONSOLE_ENABLE_AUTO_POSITION','%CONSOLE_ENABLE_ECHO_INPUT',
+ '%CONSOLE_ENABLE_EXTENDED_FLAGS','%CONSOLE_ENABLE_INSERT_MODE','%CONSOLE_ENABLE_LINE_INPUT','%CONSOLE_ENABLE_MOUSE_INPUT','%CONSOLE_ENABLE_PROCESSED_INPUT','%CONSOLE_ENABLE_PROCESSED_OUTPUT','%CONSOLE_ENABLE_QUICK_EDIT_MODE','%CONSOLE_ENABLE_WINDOW_INPUT',
+ '%CONSOLE_ENABLE_WRAP_AT_EOL_OUTPUT','%CONSOLE_FOREGROUND_BLUE','%CONSOLE_FOREGROUND_GREEN','%CONSOLE_FOREGROUND_INTENSITY','%CONSOLE_FOREGROUND_RED','%CONSOLE_LBUTTON','%CONSOLE_LINE_HORIZONTAL','%CONSOLE_LINE_VERTICAL',
+ '%CONSOLE_MBUTTON','%CONSOLE_MOUSE_MOVED','%CONSOLE_MOUSE_WHEELED','%CONSOLE_RBUTTON','%CONSOLE_SCROLLBUF_DOWN','%CONSOLE_SCROLLBUF_UP','%CONSOLE_SCROLLWND_ABSOLUTE','%CONSOLE_SCROLLWND_RELATIVE',
+ '%CONSOLE_STD_ERROR_HANDLE','%CONSOLE_STD_INPUT_HANDLE','%CONSOLE_STD_OUTPUT_HANDLE','%CONSOLE_SW_FORCEMINIMIZE','%CONSOLE_SW_HIDE','%CONSOLE_SW_MAXIMIZE','%CONSOLE_SW_MINIMIZE','%CONSOLE_SW_RESTORE',
+ '%CONSOLE_SW_SHOW','%CONSOLE_SW_SHOWDEFAULT','%CONSOLE_SW_SHOWMAXIMIZED','%CONSOLE_SW_SHOWMINIMIZED','%CONSOLE_SW_SHOWMINNOACTIVE','%CONSOLE_SW_SHOWNA','%CONSOLE_SW_SHOWNOACTIVATE','%CONSOLE_SW_SHOWNORMAL',
+ '%CONSOLE_UNAVAILABLE','%CRYPTO_CALG_DES','%CRYPTO_CALG_RC2','%CRYPTO_CALG_RC4','%CRYPTO_PROV_DH_SCHANNEL','%CRYPTO_PROV_DSS','%CRYPTO_PROV_DSS_DH','%CRYPTO_PROV_FORTEZZA',
+ '%CRYPTO_PROV_MS_EXCHANGE','%CRYPTO_PROV_RSA_FULL','%CRYPTO_PROV_RSA_SCHANNEL','%CRYPTO_PROV_RSA_SIG','%CRYPTO_PROV_SSL','%CSIDL_ADMINTOOLS','%CSIDL_ALTSTARTUP','%CSIDL_APPDATA',
+ '%CSIDL_BITBUCKET','%CSIDL_CDBURN_AREA','%CSIDL_COMMON_ADMINTOOLS','%CSIDL_COMMON_ALTSTARTUP','%CSIDL_COMMON_APPDATA','%CSIDL_COMMON_DESKTOPDIRECTORY','%CSIDL_COMMON_DOCUMENTS','%CSIDL_COMMON_FAVORITES',
+ '%CSIDL_COMMON_MUSIC','%CSIDL_COMMON_PICTURES','%CSIDL_COMMON_PROGRAMS','%CSIDL_COMMON_STARTMENU','%CSIDL_COMMON_STARTUP','%CSIDL_COMMON_TEMPLATES','%CSIDL_COMMON_VIDEO','%CSIDL_CONTROLS',
+ '%CSIDL_COOKIES','%CSIDL_DESKTOP','%CSIDL_DESKTOPDIRECTORY','%CSIDL_DRIVES','%CSIDL_FAVORITES','%CSIDL_FLAG_CREATE','%CSIDL_FONTS','%CSIDL_HISTORY',
+ '%CSIDL_INTERNET','%CSIDL_INTERNET_CACHE','%CSIDL_LOCAL_APPDATA','%CSIDL_MYDOCUMENTS','%CSIDL_MYMUSIC','%CSIDL_MYPICTURES','%CSIDL_MYVIDEO','%CSIDL_NETHOOD',
+ '%CSIDL_NETWORK','%CSIDL_PERSONAL','%CSIDL_PRINTERS','%CSIDL_PRINTHOOD','%CSIDL_PROFILE','%CSIDL_PROGRAMS','%CSIDL_PROGRAM_FILES','%CSIDL_PROGRAM_FILES_COMMON',
+ '%CSIDL_RECENT','%CSIDL_SENDTO','%CSIDL_STARTMENU','%CSIDL_STARTUP','%CSIDL_SYSTEM','%CSIDL_TEMPLATES','%CSIDL_WINDOWS','%CW_USEDEFAULT',
+ '%CYAN','%DATE_TIME_FILE_CREATION','%DATE_TIME_LAST_FILE_ACCESS','%DATE_TIME_LAST_FILE_WRITE','%DICTIONARY_MEMINFO_DATA','%DICTIONARY_MEMINFO_KEYS','%DICTIONARY_MEMINFO_TOTAL','%DICTIONARY_SORTDESCENDING',
+ '%DICTIONARY_SORTKEYS','%DSCAPS_CERTIFIED','%DSCAPS_CONTINUOUSRATE','%DSCAPS_EMULDRIVER','%DSCAPS_SECONDARY16BIT','%DSCAPS_SECONDARY8BIT','%DSCAPS_SECONDARYMONO','%DSCAPS_SECONDARYSTEREO',
+ '%DSCCAPS_CERTIFIED','%DSCCAPS_EMULDRIVER','%DS_3DLOOK','%DS_ABSALIGN','%DS_CENTER','%DS_CENTERMOUSE','%DS_CONTEXTHELP','%DS_CONTROL',
+ '%DS_MODALFRAME','%DS_NOFAILCREATE','%DS_SETFONT','%DS_SETFOREGROUND','%DS_SYSMODAL','%DTM_FIRST','%DTM_GETMCCOLOR','%DTM_GETMCFONT',
+ '%DTM_GETMONTHCAL','%DTM_GETRANGE','%DTM_GETSYSTEMTIME','%DTM_SETFORMAT','%DTM_SETFORMATW','%DTM_SETMCCOLOR','%DTM_SETMCFONT','%DTM_SETRANGE',
+ '%DTM_SETSYSTEMTIME','%DTN_CLOSEUP','%DTN_DATETIMECHANGE','%DTN_DROPDOWN','%DTN_FORMAT','%DTN_FORMATQUERY','%DTN_FORMATQUERYW','%DTN_FORMATW',
+ '%DTN_USERSTRING','%DTN_USERSTRINGW','%DTN_WMKEYDOWN','%DTN_WMKEYDOWNW','%DTS_APPCANPARSE','%DTS_LONGDATEFORMAT','%DTS_RIGHTALIGN','%DTS_SHORTDATECENTURYFORMAT',
+ '%DTS_SHORTDATEFORMAT','%DTS_SHOWNONE','%DTS_TIMEFORMAT','%DTS_UPDOWN','%DT_DATE_CENTURY','%DT_DATE_OK','%DT_DAY_IN_YEAR','%DT_DIFF_IN_DAYS',
+ '%DT_DIFF_IN_HOURS','%DT_DIFF_IN_MINUTES','%DT_DIFF_IN_SECONDS','%DT_HOURS_IN_DAY','%DT_MINUTES_IN_HOUR','%DT_SECONDS_IN_DAY','%DT_SECONDS_IN_HOUR','%DT_SECONDS_IN_MINUTE',
+ '%DT_SECONDS_IN_YEAR','%DT_USE_LONG_FORM','%DT_USE_SHORT_FORM','%DT_WRONG_DATE','%DT_WRONG_DAY','%DT_WRONG_MONTH','%ECM_FIRST','%ECOOP_AND',
+ '%ECOOP_OR','%ECOOP_SET','%ECOOP_XOR','%ECO_AUTOHSCROLL','%ECO_AUTOVSCROLL','%ECO_AUTOWORDSELECTION','%ECO_NOHIDESEL','%ECO_READONLY',
+ '%ECO_SELECTIONBAR','%ECO_WANTRETURN','%EM_AUTOURLDETECT','%EM_CANPASTE','%EM_CANREDO','%EM_CANUNDO','%EM_CHARFROMPOS','%EM_DISPLAYBAND',
+ '%EM_EMPTYUNDOBUFFER','%EM_EXGETSEL','%EM_EXLIMITTEXT','%EM_EXLINEFROMCHAR','%EM_EXSETSEL','%EM_FINDTEXT','%EM_FINDTEXTEX','%EM_FINDWORDBREAK',
+ '%EM_FMTLINES','%EM_FORMATRANGE','%EM_GETAUTOURLDETECT','%EM_GETCHARFORMAT','%EM_GETEDITSTYLE','%EM_GETEVENTMASK','%EM_GETFIRSTVISIBLELINE','%EM_GETHANDLE',
+ '%EM_GETIMESTATUS','%EM_GETLIMITTEXT','%EM_GETLINE','%EM_GETLINECOUNT','%EM_GETMARGINS','%EM_GETMODIFY','%EM_GETOLEINTERFACE','%EM_GETOPTIONS',
+ '%EM_GETPARAFORMAT','%EM_GETPASSWORDCHAR','%EM_GETRECT','%EM_GETREDONAME','%EM_GETSCROLLPOS','%EM_GETSEL','%EM_GETSELTEXT','%EM_GETTEXTMODE',
+ '%EM_GETTEXTRANGE','%EM_GETTHUMB','%EM_GETUNDONAME','%EM_GETWORDBREAKPROC','%EM_GETWORDBREAKPROCEX','%EM_HIDESELECTION','%EM_LIMITTEXT','%EM_LINEFROMCHAR',
+ '%EM_LINEINDEX','%EM_LINELENGTH','%EM_LINESCROLL','%EM_PASTESPECIAL','%EM_POSFROMCHAR','%EM_REDO','%EM_REPLACESEL','%EM_REQUESTRESIZE',
+ '%EM_SCROLL','%EM_SCROLLCARET','%EM_SELECTIONTYPE','%EM_SETBKGNDCOLOR','%EM_SETCHARFORMAT','%EM_SETEDITSTYLE','%EM_SETEVENTMASK','%EM_SETHANDLE',
+ '%EM_SETIMESTATUS','%EM_SETLIMITTEXT','%EM_SETMARGINS','%EM_SETMODIFY','%EM_SETOLECALLBACK','%EM_SETOPTIONS','%EM_SETPARAFORMAT','%EM_SETPASSWORDCHAR',
+ '%EM_SETREADONLY','%EM_SETRECT','%EM_SETRECTNP','%EM_SETSCROLLPOS','%EM_SETSEL','%EM_SETTABSTOPS','%EM_SETTARGETDEVICE','%EM_SETTEXTMODE',
+ '%EM_SETUNDOLIMIT','%EM_SETWORDBREAKPROC','%EM_SETWORDBREAKPROCEX','%EM_SETWORDWRAPMODE','%EM_SETZOOM','%EM_STOPGROUPTYPING','%EM_STREAMIN','%EM_STREAMOUT',
+ '%EM_UNDO','%ENM_CHANGE','%ENM_CORRECTTEXT','%ENM_DRAGDROPDONE','%ENM_DROPFILES','%ENM_KEYEVENTS','%ENM_MOUSEEVENTS','%ENM_NONE',
+ '%ENM_PARAGRAPHEXPANDED','%ENM_PROTECTED','%ENM_REQUESTRESIZE','%ENM_SCROLL','%ENM_SCROLLEVENTS','%ENM_SELCHANGE','%ENM_UPDATE','%EN_CHANGE',
+ '%EN_MSGFILTER','%EN_SELCHANGE','%EN_UPDATE','%ES_AUTOHSCROLL','%ES_AUTOVSCROLL','%ES_CENTER','%ES_DISABLENOSCROLL','%ES_EX_NOCALLOLEINIT',
+ '%ES_LEFT','%ES_LOWERCASE','%ES_MULTILINE','%ES_NOHIDESEL','%ES_NOOLEDRAGDROP','%ES_NUMBER','%ES_OEMCONVERT','%ES_PASSWORD',
+ '%ES_READONLY','%ES_RIGHT','%ES_SAVESEL','%ES_SELECTIONBAR','%ES_SUNKEN','%ES_UPPERCASE','%ES_WANTRETURN','%EVAL_EXEC_STRING',
+ '%FALSE','%FILE_ADDPATH','%FILE_ARCHIVE','%FILE_BUILDVERSION','%FILE_HIDDEN','%FILE_MAJORVERSION','%FILE_MINORVERSION','%FILE_NORMAL',
+ '%FILE_READONLY','%FILE_REVISIONVERSION','%FILE_SUBDIR','%FILE_SYSTEM','%FILE_VLABEL','%FTP_GET_CONNECT_STATUS','%FTP_GET_FILE_BYTES_RCVD','%FTP_GET_FILE_BYTES_SENT',
+ '%FTP_GET_LAST_RESPONSE','%FTP_GET_LOCAL_IP','%FTP_GET_SERVER_IP','%FTP_GET_TOTAL_BYTES_RCVD','%FTP_GET_TOTAL_BYTES_SENT','%FTP_LIST_FULLLIST','%FTP_LIST_FULLLISTDIR','%FTP_LIST_FULLLISTFILE',
+ '%FTP_SET_ASYNC','%FTP_SET_CONNECT_WAIT','%FTP_SET_MAX_LISTEN_WAIT','%FTP_SET_MAX_RESPONSE_WAIT','%FTP_SET_PASSIVE','%FTP_SET_SYNC','%FW_BLACK','%FW_BOLD',
+ '%FW_DEMIBOLD','%FW_DONTCARE','%FW_EXTRABOLD','%FW_EXTRALIGHT','%FW_HEAVY','%FW_LIGHT','%FW_MEDIUM','%FW_NORMAL',
+ '%FW_REGULAR','%FW_SEMIBOLD','%FW_THIN','%FW_ULTRABOLD','%FW_ULTRALIGHT','%GDTR_MAX','%GDTR_MIN','%GLU_AUTO_LOAD_MATRIX',
+ '%GLU_BEGIN','%GLU_CCW','%GLU_CULLING','%GLU_CW','%GLU_DISPLAY_MODE','%GLU_DOMAIN_DISTANCE','%GLU_EDGE_FLAG','%GLU_END',
+ '%GLU_ERROR','%GLU_EXTENSIONS','%GLU_EXTERIOR','%GLU_FALSE','%GLU_FILL','%GLU_FLAT','%GLU_INCOMPATIBLE_GL_VERSION','%GLU_INSIDE',
+ '%GLU_INTERIOR','%GLU_INVALID_ENUM','%GLU_INVALID_VALUE','%GLU_LINE','%GLU_MAP1_TRIM_2','%GLU_MAP1_TRIM_3','%GLU_NONE','%GLU_NURBS_ERROR1',
+ '%GLU_NURBS_ERROR10','%GLU_NURBS_ERROR11','%GLU_NURBS_ERROR12','%GLU_NURBS_ERROR13','%GLU_NURBS_ERROR14','%GLU_NURBS_ERROR15','%GLU_NURBS_ERROR16','%GLU_NURBS_ERROR17',
+ '%GLU_NURBS_ERROR18','%GLU_NURBS_ERROR19','%GLU_NURBS_ERROR2','%GLU_NURBS_ERROR20','%GLU_NURBS_ERROR21','%GLU_NURBS_ERROR22','%GLU_NURBS_ERROR23','%GLU_NURBS_ERROR24',
+ '%GLU_NURBS_ERROR25','%GLU_NURBS_ERROR26','%GLU_NURBS_ERROR27','%GLU_NURBS_ERROR28','%GLU_NURBS_ERROR29','%GLU_NURBS_ERROR3','%GLU_NURBS_ERROR30','%GLU_NURBS_ERROR31',
+ '%GLU_NURBS_ERROR32','%GLU_NURBS_ERROR33','%GLU_NURBS_ERROR34','%GLU_NURBS_ERROR35','%GLU_NURBS_ERROR36','%GLU_NURBS_ERROR37','%GLU_NURBS_ERROR4','%GLU_NURBS_ERROR5',
+ '%GLU_NURBS_ERROR6','%GLU_NURBS_ERROR7','%GLU_NURBS_ERROR8','%GLU_NURBS_ERROR9','%GLU_OUTLINE_PATCH','%GLU_OUTLINE_POLYGON','%GLU_OUTSIDE','%GLU_OUT_OF_MEMORY',
+ '%GLU_PARAMETRIC_ERROR','%GLU_PARAMETRIC_TOLERANCE','%GLU_PATH_LENGTH','%GLU_POINT','%GLU_SAMPLING_METHOD','%GLU_SAMPLING_TOLERANCE','%GLU_SILHOUETTE','%GLU_SMOOTH',
+ '%GLU_TESS_BEGIN','%GLU_TESS_BEGIN_DATA','%GLU_TESS_BOUNDARY_ONLY','%GLU_TESS_COMBINE','%GLU_TESS_COMBINE_DATA','%GLU_TESS_COORD_TOO_LARGE','%GLU_TESS_EDGE_FLAG','%GLU_TESS_EDGE_FLAG_DATA',
+ '%GLU_TESS_END','%GLU_TESS_END_DATA','%GLU_TESS_ERROR','%GLU_TESS_ERROR1','%GLU_TESS_ERROR2','%GLU_TESS_ERROR3','%GLU_TESS_ERROR4','%GLU_TESS_ERROR5',
+ '%GLU_TESS_ERROR6','%GLU_TESS_ERROR7','%GLU_TESS_ERROR8','%GLU_TESS_ERROR_DATA','%GLU_TESS_MISSING_BEGIN_CONTOUR','%GLU_TESS_MISSING_BEGIN_POLYGON','%GLU_TESS_MISSING_END_CONTOUR','%GLU_TESS_MISSING_END_POLYGON',
+ '%GLU_TESS_NEED_COMBINE_CALLBACK','%GLU_TESS_TOLERANCE','%GLU_TESS_VERTEX','%GLU_TESS_VERTEX_DATA','%GLU_TESS_WINDING_ABS_GEQ_TWO','%GLU_TESS_WINDING_NEGATIVE','%GLU_TESS_WINDING_NONZERO','%GLU_TESS_WINDING_ODD',
+ '%GLU_TESS_WINDING_POSITIVE','%GLU_TESS_WINDING_RULE','%GLU_TRUE','%GLU_UNKNOWN','%GLU_U_STEP','%GLU_VERSION','%GLU_VERSION_1_1','%GLU_VERSION_1_2',
+ '%GLU_VERTEX','%GLU_V_STEP','%GL_2D','%GL_2_BYTES','%GL_3D','%GL_3D_COLOR','%GL_3D_COLOR_TEXTURE','%GL_3_BYTES',
+ '%GL_4D_COLOR_TEXTURE','%GL_4_BYTES','%GL_ABGR_EXT','%GL_ACCUM','%GL_ACCUM_ALPHA_BITS','%GL_ACCUM_BLUE_BITS','%GL_ACCUM_BUFFER_BIT','%GL_ACCUM_CLEAR_VALUE',
+ '%GL_ACCUM_GREEN_BITS','%GL_ACCUM_RED_BITS','%GL_ADD','%GL_ALL_ATTRIB_BITS','%GL_ALPHA','%GL_ALPHA12','%GL_ALPHA16','%GL_ALPHA4',
+ '%GL_ALPHA8','%GL_ALPHA_BIAS','%GL_ALPHA_BITS','%GL_ALPHA_SCALE','%GL_ALPHA_TEST','%GL_ALPHA_TEST_FUNC','%GL_ALPHA_TEST_REF','%GL_ALWAYS',
+ '%GL_AMBIENT','%GL_AMBIENT_AND_DIFFUSE','%GL_AND','%GL_AND_INVERTED','%GL_AND_REVERSE','%GL_ARRAY_ELEMENT_LOCK_COUNT_EXT','%GL_ARRAY_ELEMENT_LOCK_FIRST_EXT','%GL_ATTRIB_STACK_DEPTH',
+ '%GL_AUTO_NORMAL','%GL_AUX0','%GL_AUX1','%GL_AUX2','%GL_AUX3','%GL_AUX_BUFFERS','%GL_BACK','%GL_BACK_LEFT',
+ '%GL_BACK_RIGHT','%GL_BGRA_EXT','%GL_BGR_EXT','%GL_BITMAP','%GL_BITMAP_TOKEN','%GL_BLEND','%GL_BLEND_COLOR_EXT','%GL_BLEND_DST',
+ '%GL_BLEND_EQUATION_EXT','%GL_BLEND_SRC','%GL_BLUE','%GL_BLUE_BIAS','%GL_BLUE_BITS','%GL_BLUE_SCALE','%GL_BYTE','%GL_C3F_V3F',
+ '%GL_C4F_N3F_V3F','%GL_C4UB_V2F','%GL_C4UB_V3F','%GL_CCW','%GL_CLAMP','%GL_CLEAR','%GL_CLIENT_ALL_ATTRIB_BITS','%GL_CLIENT_ATTRIB_STACK_DEPTH',
+ '%GL_CLIENT_PIXEL_STORE_BIT','%GL_CLIENT_VERTEX_ARRAY_BIT','%GL_CLIP_PLANE0','%GL_CLIP_PLANE1','%GL_CLIP_PLANE2','%GL_CLIP_PLANE3','%GL_CLIP_PLANE4','%GL_CLIP_PLANE5',
+ '%GL_CLIP_VOLUME_CLIPPING_HINT_EXT','%GL_COEFF','%GL_COLOR','%GL_COLOR_ARRAY','%GL_COLOR_ARRAY_COUNT_EXT','%GL_COLOR_ARRAY_EXT','%GL_COLOR_ARRAY_POINTER','%GL_COLOR_ARRAY_POINTER_EXT',
+ '%GL_COLOR_ARRAY_SIZE','%GL_COLOR_ARRAY_SIZE_EXT','%GL_COLOR_ARRAY_STRIDE','%GL_COLOR_ARRAY_STRIDE_EXT','%GL_COLOR_ARRAY_TYPE','%GL_COLOR_ARRAY_TYPE_EXT','%GL_COLOR_BUFFER_BIT','%GL_COLOR_CLEAR_VALUE',
+ '%GL_COLOR_INDEX','%GL_COLOR_INDEX12_EXT','%GL_COLOR_INDEX16_EXT','%GL_COLOR_INDEX1_EXT','%GL_COLOR_INDEX2_EXT','%GL_COLOR_INDEX4_EXT','%GL_COLOR_INDEX8_EXT','%GL_COLOR_INDEXES',
+ '%GL_COLOR_LOGIC_OP','%GL_COLOR_MATERIAL','%GL_COLOR_MATERIAL_FACE','%GL_COLOR_MATERIAL_PARAMETER','%GL_COLOR_SUM_EXT','%GL_COLOR_TABLE_ALPHA_SIZE_EXT','%GL_COLOR_TABLE_BIAS_EXT','%GL_COLOR_TABLE_BLUE_SIZE_EXT',
+ '%GL_COLOR_TABLE_EXT','%GL_COLOR_TABLE_FORMAT_EXT','%GL_COLOR_TABLE_GREEN_SIZE_EXT','%GL_COLOR_TABLE_INTENSITY_SIZE_EXT','%GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','%GL_COLOR_TABLE_RED_SIZE_EXT','%GL_COLOR_TABLE_SCALE_EXT','%GL_COLOR_TABLE_WIDTH_EXT',
+ '%GL_COLOR_WRITEMASK','%GL_COMPILE','%GL_COMPILE_AND_EXECUTE','%GL_CONSTANT_ALPHA_EXT','%GL_CONSTANT_ATTENUATION','%GL_CONSTANT_COLOR_EXT','%GL_CONVOLUTION_1D_EXT','%GL_CONVOLUTION_2D_EXT',
+ '%GL_CONVOLUTION_BORDER_MODE_EXT','%GL_CONVOLUTION_FILTER_BIAS_EXT','%GL_CONVOLUTION_FILTER_SCALE_EXT','%GL_CONVOLUTION_FORMAT_EXT','%GL_CONVOLUTION_HEIGHT_EXT','%GL_CONVOLUTION_WIDTH_EXT','%GL_COPY','%GL_COPY_INVERTED',
+ '%GL_COPY_PIXEL_TOKEN','%GL_CULL_FACE','%GL_CULL_FACE_MODE','%GL_CULL_VERTEX_EXT','%GL_CULL_VERTEX_EYE_POSITION_EXT','%GL_CULL_VERTEX_OBJECT_POSITION_EXT','%GL_CURRENT_BIT','%GL_CURRENT_COLOR',
+ '%GL_CURRENT_INDEX','%GL_CURRENT_NORMAL','%GL_CURRENT_RASTER_COLOR','%GL_CURRENT_RASTER_DISTANCE','%GL_CURRENT_RASTER_INDEX','%GL_CURRENT_RASTER_POSITION','%GL_CURRENT_RASTER_POSITION_VALID','%GL_CURRENT_RASTER_TEXTURE_COORDS',
+ '%GL_CURRENT_SECONDARY_COLOR_EXT','%GL_CURRENT_TEXTURE_COORDS','%GL_CW','%GL_DECAL','%GL_DECR','%GL_DEPTH','%GL_DEPTH_BIAS','%GL_DEPTH_BITS',
+ '%GL_DEPTH_BUFFER_BIT','%GL_DEPTH_CLEAR_VALUE','%GL_DEPTH_COMPONENT','%GL_DEPTH_FUNC','%GL_DEPTH_RANGE','%GL_DEPTH_SCALE','%GL_DEPTH_TEST','%GL_DEPTH_WRITEMASK',
+ '%GL_DIFFUSE','%GL_DITHER','%GL_DOMAIN','%GL_DONT_CARE','%GL_DOUBLE','%GL_DOUBLEBUFFER','%GL_DOUBLE_EXT','%GL_DRAW_BUFFER',
+ '%GL_DRAW_PIXEL_TOKEN','%GL_DST_ALPHA','%GL_DST_COLOR','%GL_EDGE_FLAG','%GL_EDGE_FLAG_ARRAY','%GL_EDGE_FLAG_ARRAY_COUNT_EXT','%GL_EDGE_FLAG_ARRAY_EXT','%GL_EDGE_FLAG_ARRAY_POINTER',
+ '%GL_EDGE_FLAG_ARRAY_POINTER_EXT','%GL_EDGE_FLAG_ARRAY_STRIDE','%GL_EDGE_FLAG_ARRAY_STRIDE_EXT','%GL_EMISSION','%GL_ENABLE_BIT','%GL_EQUAL','%GL_EQUIV','%GL_EVAL_BIT',
+ '%GL_EXP','%GL_EXP2','%GL_EXTENSIONS','%GL_EXT_ABGR','%GL_EXT_BGRA','%GL_EXT_BLEND_COLOR','%GL_EXT_BLEND_MINMAX','%GL_EXT_BLEND_SUBTRACT',
+ '%GL_EXT_CLIP_VOLUME_HINT','%GL_EXT_COLOR_TABLE','%GL_EXT_COMPILED_VERTEX_ARRAY','%GL_EXT_CONVOLUTION','%GL_EXT_CULL_VERTEX','%GL_EXT_HISTOGRAM','%GL_EXT_PACKED_PIXELS','%GL_EXT_PALETTED_TEXTURE',
+ '%GL_EXT_POLYGON_OFFSET','%GL_EXT_SECONDARY_COLOR','%GL_EXT_SEPARATE_SPECULAR_COLOR','%GL_EXT_VERTEX_ARRAY','%GL_EYE_LINEAR','%GL_EYE_PLANE','%GL_FALSE','%GL_FASTEST',
+ '%GL_FEEDBACK','%GL_FEEDBACK_BUFFER_POINTER','%GL_FEEDBACK_BUFFER_SIZE','%GL_FEEDBACK_BUFFER_TYPE','%GL_FILL','%GL_FLAT','%GL_FLOAT','%GL_FOG',
+ '%GL_FOG_BIT','%GL_FOG_COLOR','%GL_FOG_DENSITY','%GL_FOG_END','%GL_FOG_HINT','%GL_FOG_INDEX','%GL_FOG_MODE','%GL_FOG_START',
+ '%GL_FRONT','%GL_FRONT_AND_BACK','%GL_FRONT_FACE','%GL_FRONT_LEFT','%GL_FRONT_RIGHT','%GL_FUNC_ADD_EXT','%GL_FUNC_REVERSE_SUBTRACT_EXT','%GL_FUNC_SUBTRACT_EXT',
+ '%GL_GEQUAL','%GL_GREATER','%GL_GREEN','%GL_GREEN_BIAS','%GL_GREEN_BITS','%GL_GREEN_SCALE','%GL_HINT_BIT','%GL_HISTOGRAM_ALPHA_SIZE_EXT',
+ '%GL_HISTOGRAM_BLUE_SIZE_EXT','%GL_HISTOGRAM_EXT','%GL_HISTOGRAM_FORMAT_EXT','%GL_HISTOGRAM_GREEN_SIZE_EXT','%GL_HISTOGRAM_LUMINANCE_SIZE_EXT','%GL_HISTOGRAM_RED_SIZE_EXT','%GL_HISTOGRAM_SINK_EXT','%GL_HISTOGRAM_WIDTH_EXT',
+ '%GL_INCR','%GL_INDEX_ARRAY','%GL_INDEX_ARRAY_COUNT_EXT','%GL_INDEX_ARRAY_EXT','%GL_INDEX_ARRAY_POINTER','%GL_INDEX_ARRAY_POINTER_EXT','%GL_INDEX_ARRAY_STRIDE','%GL_INDEX_ARRAY_STRIDE_EXT',
+ '%GL_INDEX_ARRAY_TYPE','%GL_INDEX_ARRAY_TYPE_EXT','%GL_INDEX_BITS','%GL_INDEX_CLEAR_VALUE','%GL_INDEX_LOGIC_OP','%GL_INDEX_MODE','%GL_INDEX_OFFSET','%GL_INDEX_SHIFT',
+ '%GL_INDEX_WRITEMASK','%GL_INT','%GL_INTENSITY','%GL_INTENSITY12','%GL_INTENSITY16','%GL_INTENSITY4','%GL_INTENSITY8','%GL_INVALID_ENUM',
+ '%GL_INVALID_OPERATION','%GL_INVALID_VALUE','%GL_INVERT','%GL_KEEP','%GL_LEFT','%GL_LEQUAL','%GL_LESS','%GL_LIGHT0',
+ '%GL_LIGHT1','%GL_LIGHT2','%GL_LIGHT3','%GL_LIGHT4','%GL_LIGHT5','%GL_LIGHT6','%GL_LIGHT7','%GL_LIGHTING',
+ '%GL_LIGHTING_BIT','%GL_LIGHT_MODEL_AMBIENT','%GL_LIGHT_MODEL_COLOR_CONTROL_EXT','%GL_LIGHT_MODEL_LOCAL_VIEWER','%GL_LIGHT_MODEL_TWO_SIDE','%GL_LINE','%GL_LINEAR','%GL_LINEAR_ATTENUATION',
+ '%GL_LINEAR_MIPMAP_LINEAR','%GL_LINEAR_MIPMAP_NEAREST','%GL_LINES','%GL_LINE_BIT','%GL_LINE_LOOP','%GL_LINE_RESET_TOKEN','%GL_LINE_SMOOTH','%GL_LINE_SMOOTH_HINT',
+ '%GL_LINE_STIPPLE','%GL_LINE_STIPPLE_PATTERN','%GL_LINE_STIPPLE_REPEAT','%GL_LINE_STRIP','%GL_LINE_TOKEN','%GL_LINE_WIDTH','%GL_LINE_WIDTH_GRANULARITY','%GL_LINE_WIDTH_RANGE',
+ '%GL_LIST_BASE','%GL_LIST_BIT','%GL_LIST_INDEX','%GL_LIST_MODE','%GL_LOAD','%GL_LOGIC_OP','%GL_LOGIC_OP_MODE','%GL_LUMINANCE',
+ '%GL_LUMINANCE12','%GL_LUMINANCE12_ALPHA12','%GL_LUMINANCE12_ALPHA4','%GL_LUMINANCE16','%GL_LUMINANCE16_ALPHA16','%GL_LUMINANCE4','%GL_LUMINANCE4_ALPHA4','%GL_LUMINANCE6_ALPHA2',
+ '%GL_LUMINANCE8','%GL_LUMINANCE8_ALPHA8','%GL_LUMINANCE_ALPHA','%GL_MAP1_COLOR_4','%GL_MAP1_GRID_DOMAIN','%GL_MAP1_GRID_SEGMENTS','%GL_MAP1_INDEX','%GL_MAP1_NORMAL',
+ '%GL_MAP1_TEXTURE_COORD_1','%GL_MAP1_TEXTURE_COORD_2','%GL_MAP1_TEXTURE_COORD_3','%GL_MAP1_TEXTURE_COORD_4','%GL_MAP1_VERTEX_3','%GL_MAP1_VERTEX_4','%GL_MAP2_COLOR_4','%GL_MAP2_GRID_DOMAIN',
+ '%GL_MAP2_GRID_SEGMENTS','%GL_MAP2_INDEX','%GL_MAP2_NORMAL','%GL_MAP2_TEXTURE_COORD_1','%GL_MAP2_TEXTURE_COORD_2','%GL_MAP2_TEXTURE_COORD_3','%GL_MAP2_TEXTURE_COORD_4','%GL_MAP2_VERTEX_3',
+ '%GL_MAP2_VERTEX_4','%GL_MAP_COLOR','%GL_MAP_STENCIL','%GL_MATRIX_MODE','%GL_MAX_ATTRIB_STACK_DEPTH','%GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','%GL_MAX_CLIP_PLANES','%GL_MAX_CONVOLUTION_HEIGHT_EXT',
+ '%GL_MAX_CONVOLUTION_WIDTH_EXT','%GL_MAX_EVAL_ORDER','%GL_MAX_EXT','%GL_MAX_LIGHTS','%GL_MAX_LIST_NESTING','%GL_MAX_MODELVIEW_STACK_DEPTH','%GL_MAX_NAME_STACK_DEPTH','%GL_MAX_PIXEL_MAP_TABLE',
+ '%GL_MAX_PROJECTION_STACK_DEPTH','%GL_MAX_TEXTURE_SIZE','%GL_MAX_TEXTURE_STACK_DEPTH','%GL_MAX_VIEWPORT_DIMS','%GL_MINMAX_EXT','%GL_MINMAX_FORMAT_EXT','%GL_MINMAX_SINK_EXT','%GL_MIN_EXT',
+ '%GL_MODELVIEW','%GL_MODELVIEW_MATRIX','%GL_MODELVIEW_STACK_DEPTH','%GL_MODULATE','%GL_MULT','%GL_N3F_V3F','%GL_NAME_STACK_DEPTH','%GL_NAND',
+ '%GL_NEAREST','%GL_NEAREST_MIPMAP_LINEAR','%GL_NEAREST_MIPMAP_NEAREST','%GL_NEVER','%GL_NICEST','%GL_NONE','%GL_NOOP','%GL_NOR',
+ '%GL_NORMALIZE','%GL_NORMAL_ARRAY','%GL_NORMAL_ARRAY_COUNT_EXT','%GL_NORMAL_ARRAY_EXT','%GL_NORMAL_ARRAY_POINTER','%GL_NORMAL_ARRAY_POINTER_EXT','%GL_NORMAL_ARRAY_STRIDE','%GL_NORMAL_ARRAY_STRIDE_EXT',
+ '%GL_NORMAL_ARRAY_TYPE','%GL_NORMAL_ARRAY_TYPE_EXT','%GL_NOTEQUAL','%GL_NO_ERROR','%GL_OBJECT_LINEAR','%GL_OBJECT_PLANE','%GL_ONE','%GL_ONE_MINUS_CONSTANT_ALPHA_EXT',
+ '%GL_ONE_MINUS_CONSTANT_COLOR_EXT','%GL_ONE_MINUS_DST_ALPHA','%GL_ONE_MINUS_DST_COLOR','%GL_ONE_MINUS_SRC_ALPHA','%GL_ONE_MINUS_SRC_COLOR','%GL_OR','%GL_ORDER','%GL_OR_INVERTED',
+ '%GL_OR_REVERSE','%GL_OUT_OF_MEMORY','%GL_PACK_ALIGNMENT','%GL_PACK_LSB_FIRST','%GL_PACK_ROW_LENGTH','%GL_PACK_SKIP_PIXELS','%GL_PACK_SKIP_ROWS','%GL_PACK_SWAP_BYTES',
+ '%GL_PASS_THROUGH_TOKEN','%GL_PERSPECTIVE_CORRECTION_HINT','%GL_PIXEL_MAP_A_TO_A','%GL_PIXEL_MAP_A_TO_A_SIZE','%GL_PIXEL_MAP_B_TO_B','%GL_PIXEL_MAP_B_TO_B_SIZE','%GL_PIXEL_MAP_G_TO_G','%GL_PIXEL_MAP_G_TO_G_SIZE',
+ '%GL_PIXEL_MAP_I_TO_A','%GL_PIXEL_MAP_I_TO_A_SIZE','%GL_PIXEL_MAP_I_TO_B','%GL_PIXEL_MAP_I_TO_B_SIZE','%GL_PIXEL_MAP_I_TO_G','%GL_PIXEL_MAP_I_TO_G_SIZE','%GL_PIXEL_MAP_I_TO_I','%GL_PIXEL_MAP_I_TO_I_SIZE',
+ '%GL_PIXEL_MAP_I_TO_R','%GL_PIXEL_MAP_I_TO_R_SIZE','%GL_PIXEL_MAP_R_TO_R','%GL_PIXEL_MAP_R_TO_R_SIZE','%GL_PIXEL_MAP_S_TO_S','%GL_PIXEL_MAP_S_TO_S_SIZE','%GL_PIXEL_MODE_BIT','%GL_POINT',
+ '%GL_POINTS','%GL_POINT_BIT','%GL_POINT_SIZE','%GL_POINT_SIZE_GRANULARITY','%GL_POINT_SIZE_RANGE','%GL_POINT_SMOOTH','%GL_POINT_SMOOTH_HINT','%GL_POINT_TOKEN',
+ '%GL_POLYGON','%GL_POLYGON_BIT','%GL_POLYGON_MODE','%GL_POLYGON_OFFSET_BIAS_EXT','%GL_POLYGON_OFFSET_EXT','%GL_POLYGON_OFFSET_FACTOR','%GL_POLYGON_OFFSET_FACTOR_EXT','%GL_POLYGON_OFFSET_FILL',
+ '%GL_POLYGON_OFFSET_LINE','%GL_POLYGON_OFFSET_POINT','%GL_POLYGON_OFFSET_UNITS','%GL_POLYGON_SMOOTH','%GL_POLYGON_SMOOTH_HINT','%GL_POLYGON_STIPPLE','%GL_POLYGON_STIPPLE_BIT','%GL_POLYGON_TOKEN',
+ '%GL_POSITION','%GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_ALPHA_BIAS_EXT','%GL_POST_CONVOLUTION_ALPHA_SCALE_EXT','%GL_POST_CONVOLUTION_BLUE_BIAS_EXT','%GL_POST_CONVOLUTION_BLUE_SCALE_EXT','%GL_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_GREEN_BIAS_EXT',
+ '%GL_POST_CONVOLUTION_GREEN_SCALE_EXT','%GL_POST_CONVOLUTION_RED_BIAS_EXT','%GL_POST_CONVOLUTION_RED_SCALE_EXT','%GL_PROJECTION','%GL_PROJECTION_MATRIX','%GL_PROJECTION_STACK_DEPTH','%GL_PROXY_COLOR_TABLE_EXT','%GL_PROXY_HISTOGRAM_EXT',
+ '%GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_PROXY_TEXTURE_1D','%GL_PROXY_TEXTURE_2D','%GL_Q','%GL_QUADRATIC_ATTENUATION','%GL_QUADS','%GL_QUAD_STRIP',
+ '%GL_R','%GL_R3_G3_B2','%GL_READ_BUFFER','%GL_RED','%GL_REDUCE_EXT','%GL_RED_BIAS','%GL_RED_BITS','%GL_RED_SCALE',
+ '%GL_RENDER','%GL_RENDERER','%GL_RENDER_MODE','%GL_REPEAT','%GL_REPLACE','%GL_RETURN','%GL_RGB','%GL_RGB10',
+ '%GL_RGB10_A2','%GL_RGB12','%GL_RGB16','%GL_RGB4','%GL_RGB5','%GL_RGB5_A1','%GL_RGB8','%GL_RGBA',
+ '%GL_RGBA12','%GL_RGBA16','%GL_RGBA2','%GL_RGBA4','%GL_RGBA8','%GL_RGBA_MODE','%GL_RIGHT','%GL_S',
+ '%GL_SCISSOR_BIT','%GL_SCISSOR_BOX','%GL_SCISSOR_TEST','%GL_SECONDARY_COLOR_ARRAY_EXT','%GL_SECONDARY_COLOR_ARRAY_POINTER_EXT','%GL_SECONDARY_COLOR_ARRAY_SIZE_EXT','%GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT','%GL_SECONDARY_COLOR_ARRAY_TYPE_EXT',
+ '%GL_SELECT','%GL_SELECTION_BUFFER_POINTER','%GL_SELECTION_BUFFER_SIZE','%GL_SEPARABLE_2D_EXT','%GL_SEPARATE_SPECULAR_COLOR_EXT','%GL_SET','%GL_SHADE_MODEL','%GL_SHININESS',
+ '%GL_SHORT','%GL_SINGLE_COLOR_EXT','%GL_SMOOTH','%GL_SPECULAR','%GL_SPHERE_MAP','%GL_SPOT_CUTOFF','%GL_SPOT_DIRECTION','%GL_SPOT_EXPONENT',
+ '%GL_SRC_ALPHA','%GL_SRC_ALPHA_SATURATE','%GL_SRC_COLOR','%GL_STACK_OVERFLOW','%GL_STACK_UNDERFLOW','%GL_STENCIL','%GL_STENCIL_BITS','%GL_STENCIL_BUFFER_BIT',
+ '%GL_STENCIL_CLEAR_VALUE','%GL_STENCIL_FAIL','%GL_STENCIL_FUNC','%GL_STENCIL_INDEX','%GL_STENCIL_PASS_DEPTH_FAIL','%GL_STENCIL_PASS_DEPTH_PASS','%GL_STENCIL_REF','%GL_STENCIL_TEST',
+ '%GL_STENCIL_VALUE_MASK','%GL_STENCIL_WRITEMASK','%GL_STEREO','%GL_SUBPIXEL_BITS','%GL_T','%GL_T2F_C3F_V3F','%GL_T2F_C4F_N3F_V3F','%GL_T2F_C4UB_V3F',
+ '%GL_T2F_N3F_V3F','%GL_T2F_V3F','%GL_T4F_C4F_N3F_V4F','%GL_T4F_V4F','%GL_TABLE_TOO_LARGE_EXT','%GL_TEXTURE','%GL_TEXTURE_1D','%GL_TEXTURE_2D',
+ '%GL_TEXTURE_ALPHA_SIZE','%GL_TEXTURE_BINDING_1D','%GL_TEXTURE_BINDING_2D','%GL_TEXTURE_BIT','%GL_TEXTURE_BLUE_SIZE','%GL_TEXTURE_BORDER','%GL_TEXTURE_BORDER_COLOR','%GL_TEXTURE_COMPONENTS',
+ '%GL_TEXTURE_COORD_ARRAY','%GL_TEXTURE_COORD_ARRAY_COUNT_EXT','%GL_TEXTURE_COORD_ARRAY_EXT','%GL_TEXTURE_COORD_ARRAY_POINTER','%GL_TEXTURE_COORD_ARRAY_POINTER_EXT','%GL_TEXTURE_COORD_ARRAY_SIZE','%GL_TEXTURE_COORD_ARRAY_SIZE_EXT','%GL_TEXTURE_COORD_ARRAY_STRIDE',
+ '%GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','%GL_TEXTURE_COORD_ARRAY_TYPE','%GL_TEXTURE_COORD_ARRAY_TYPE_EXT','%GL_TEXTURE_ENV','%GL_TEXTURE_ENV_COLOR','%GL_TEXTURE_ENV_MODE','%GL_TEXTURE_GEN_MODE','%GL_TEXTURE_GEN_Q',
+ '%GL_TEXTURE_GEN_R','%GL_TEXTURE_GEN_S','%GL_TEXTURE_GEN_T','%GL_TEXTURE_GREEN_SIZE','%GL_TEXTURE_HEIGHT','%GL_TEXTURE_INTENSITY_SIZE','%GL_TEXTURE_INTERNAL_FORMAT','%GL_TEXTURE_LUMINANCE_SIZE',
+ '%GL_TEXTURE_MAG_FILTER','%GL_TEXTURE_MATRIX','%GL_TEXTURE_MIN_FILTER','%GL_TEXTURE_PRIORITY','%GL_TEXTURE_RED_SIZE','%GL_TEXTURE_RESIDENT','%GL_TEXTURE_STACK_DEPTH','%GL_TEXTURE_WIDTH',
+ '%GL_TEXTURE_WRAP_S','%GL_TEXTURE_WRAP_T','%GL_TRANSFORM_BIT','%GL_TRIANGLES','%GL_TRIANGLE_FAN','%GL_TRIANGLE_STRIP','%GL_TRUE','%GL_UNPACK_ALIGNMENT',
+ '%GL_UNPACK_LSB_FIRST','%GL_UNPACK_ROW_LENGTH','%GL_UNPACK_SKIP_PIXELS','%GL_UNPACK_SKIP_ROWS','%GL_UNPACK_SWAP_BYTES','%GL_UNSIGNED_BYTE','%GL_UNSIGNED_BYTE_3_3_2_EXT','%GL_UNSIGNED_INT',
+ '%GL_UNSIGNED_INT_10_10_10_2_EXT','%GL_UNSIGNED_INT_8_8_8_8_EXT','%GL_UNSIGNED_SHORT','%GL_UNSIGNED_SHORT_4_4_4_4_EXT','%GL_UNSIGNED_SHORT_5_5_5_1_EXT','%GL_V2F','%GL_V3F','%GL_VENDOR',
+ '%GL_VERSION','%GL_VERSION_1_1','%GL_VERTEX_ARRAY','%GL_VERTEX_ARRAY_COUNT_EXT','%GL_VERTEX_ARRAY_EXT','%GL_VERTEX_ARRAY_POINTER','%GL_VERTEX_ARRAY_POINTER_EXT','%GL_VERTEX_ARRAY_SIZE',
+ '%GL_VERTEX_ARRAY_SIZE_EXT','%GL_VERTEX_ARRAY_STRIDE','%GL_VERTEX_ARRAY_STRIDE_EXT','%GL_VERTEX_ARRAY_TYPE','%GL_VERTEX_ARRAY_TYPE_EXT','%GL_VIEWPORT','%GL_VIEWPORT_BIT','%GL_WIN_SWAP_HINT',
+ '%GL_XOR','%GL_ZERO','%GL_ZOOM_X','%GL_ZOOM_Y','%GRAY','%GREEN','%GWLP_HINSTANCE','%GWLP_HWNDPARENT',
+ '%GWLP_ID','%GWLP_USERDATA','%GWLP_WNDPROC','%GWL_EXSTYLE','%GWL_HINSTANCE','%GWL_HWNDPARENT','%GWL_ID','%GWL_STYLE',
+ '%GWL_USERDATA','%GWL_WNDPROC','%HDM_FIRST','%HTCAPTION','%HWND_BOTTOM','%HWND_DESKTOP','%HWND_MESSAGE','%HWND_NOTOPMOST',
+ '%HWND_TOP','%HWND_TOPMOST','%ICRYPTO_XOR_DECREASE','%ICRYPTO_XOR_INCREASE','%ICRYPTO_XOR_NORMAL','%IDABORT','%IDCANCEL','%IDCONTINUE',
+ '%IDIGNORE','%IDNO','%IDOK','%IDRETRY','%IDTIMEOUT','%IDTRYAGAIN','%IDYES','%INTERNET_CONNECTION_CONFIGURED',
+ '%INTERNET_CONNECTION_LAN','%INTERNET_CONNECTION_MODEM','%INTERNET_CONNECTION_MODEM_BUSY','%INTERNET_CONNECTION_OFFLINE','%INTERNET_CONNECTION_PROXY','%INTERNET_RAS_INSTALLED','%LBN_DBLCLK','%LBN_KILLFOCUS',
+ '%LBN_SELCANCEL','%LBN_SELCHANGE','%LBN_SETFOCUS','%LBS_DISABLENOSCROLL','%LBS_EXTENDEDSEL','%LBS_MULTICOLUMN','%LBS_MULTIPLESEL','%LBS_NOINTEGRALHEIGHT',
+ '%LBS_NOSEL','%LBS_NOTIFY','%LBS_SORT','%LBS_STANDARD','%LBS_USETABSTOPS','%LB_ADDFILE','%LB_ADDSTRING','%LB_DELETESTRING',
+ '%LB_DIR','%LB_FINDSTRING','%LB_FINDSTRINGEXACT','%LB_GETANCHORINDEX','%LB_GETCARETINDEX','%LB_GETCOUNT','%LB_GETCURSEL','%LB_GETHORIZONTALEXTENT',
+ '%LB_GETITEMDATA','%LB_GETITEMHEIGHT','%LB_GETITEMRECT','%LB_GETLISTBOXINFO','%LB_GETLOCALE','%LB_GETSEL','%LB_GETSELCOUNT','%LB_GETSELITEMS',
+ '%LB_GETTEXT','%LB_GETTEXTLEN','%LB_GETTOPINDEX','%LB_INITSTORAGE','%LB_INSERTSTRING','%LB_ITEMFROMPOINT','%LB_MULTIPLEADDSTRING','%LB_RESETCONTENT',
+ '%LB_SELECTSTRING','%LB_SELITEMRANGE','%LB_SELITEMRANGEEX','%LB_SETANCHORINDEX','%LB_SETCARETINDEX','%LB_SETCOLUMNWIDTH','%LB_SETCOUNT','%LB_SETCURSEL',
+ '%LB_SETHORIZONTALEXTENT','%LB_SETITEMDATA','%LB_SETITEMHEIGHT','%LB_SETLOCALE','%LB_SETSEL','%LB_SETTABSTOPS','%LB_SETTOPINDEX','%LF_FACESIZE',
+ '%LTGRAY','%LVM_FIRST','%LWA_ALPHA','%LWA_COLORKEY','%MAGENTA','%MAXBYTE','%MAXCHAR','%MAXDWORD',
+ '%MAXSHORT','%MAXWORD','%MAX_PATH','%MB_ABORTRETRYIGNORE','%MB_APPLMODAL','%MB_CANCELTRYCONTINUE','%MB_DEFBUTTON1','%MB_DEFBUTTON2',
+ '%MB_DEFBUTTON3','%MB_HELP','%MB_ICONASTERISK','%MB_ICONERROR','%MB_ICONEXCLAMATION','%MB_ICONHAND','%MB_ICONINFORMATION','%MB_ICONQUESTION',
+ '%MB_ICONSTOP','%MB_ICONWARNING','%MB_OK','%MB_OKCANCEL','%MB_RETRYCANCEL','%MB_SIMPLE','%MB_SYSTEMMODAL','%MB_TOPMOST',
+ '%MB_YESNO','%MB_YESNOCANCEL','%MF_CHECKED','%MF_DISABLED','%MF_ENABLED','%MF_GRAYED','%MF_SEPARATOR','%MF_UNCHECKED',
+ '%MINCHAR','%MINLONG','%MINSHORT','%NULL','%ODBC352_INC','%ODBCVER','%ODBC_ADD_DSN','%ODBC_ADD_SYS_DSN',
+ '%ODBC_BOTH_DSN','%ODBC_CONFIG_DRIVER','%ODBC_CONFIG_DRIVER_MAX','%ODBC_CONFIG_DSN','%ODBC_CONFIG_SYS_DSN','%ODBC_DRIVER_VERSION','%ODBC_ERROR_COMPONENT_NOT_FOUND','%ODBC_ERROR_CREATE_DSN_FAILED',
+ '%ODBC_ERROR_GENERAL_ERR','%ODBC_ERROR_INVALID_BUFF_LEN','%ODBC_ERROR_INVALID_DSN','%ODBC_ERROR_INVALID_HWND','%ODBC_ERROR_INVALID_INF','%ODBC_ERROR_INVALID_KEYWORD_VALUE','%ODBC_ERROR_INVALID_LOG_FILE','%ODBC_ERROR_INVALID_NAME',
+ '%ODBC_ERROR_INVALID_PARAM_SEQUENCE','%ODBC_ERROR_INVALID_PATH','%ODBC_ERROR_INVALID_REQUEST_TYPE','%ODBC_ERROR_INVALID_STR','%ODBC_ERROR_LOAD_LIB_FAILED','%ODBC_ERROR_OUTPUT_STRING_TRUNCATED','%ODBC_ERROR_OUT_OF_MEM','%ODBC_ERROR_REMOVE_DSN_FAILED',
+ '%ODBC_ERROR_REQUEST_FAILED','%ODBC_ERROR_USAGE_UPDATE_FAILED','%ODBC_ERROR_USER_CANCELED','%ODBC_ERROR_WRITING_SYSINFO_FAILED','%ODBC_INSTALL_COMPLETE','%ODBC_INSTALL_DRIVER','%ODBC_INSTALL_INQUIRY','%ODBC_REMOVE_DEFAULT_DSN',
+ '%ODBC_REMOVE_DRIVER','%ODBC_REMOVE_DSN','%ODBC_REMOVE_SYS_DSN','%ODBC_SYSTEM_DSN','%ODBC_USER_DSN','%OFN_ALLOWMULTISELECT','%OFN_CREATEPROMPT','%OFN_ENABLEHOOK',
+ '%OFN_ENABLEINCLUDENOTIFY','%OFN_ENABLESIZING','%OFN_ENABLETEMPLATE','%OFN_ENABLETEMPLATEHANDLE','%OFN_EXPLORER','%OFN_EXTENSIONDIFFERENT','%OFN_FILEMUSTEXIST','%OFN_HIDEREADONLY',
+ '%OFN_LONGNAMES','%OFN_NOCHANGEDIR','%OFN_NODEREFERENCELINKS','%OFN_NOLONGNAMES','%OFN_NONETWORKBUTTON','%OFN_NOREADONLYRETURN','%OFN_NOTESTFILECREATE','%OFN_NOVALIDATE',
+ '%OFN_OVERWRITEPROMPT','%OFN_PATHMUSTEXIST','%OFN_READONLY','%OFN_SHAREAWARE','%OFN_SHOWHELP','%OS_ERROR_CALLFUNCTION','%OS_ERROR_EMPTYSTRING','%OS_ERROR_LOADLIBRARY',
+ '%OS_ERROR_SUCCESS','%OS_ERROR_WRONGPARAMETER','%OS_SHELL_ASYNC','%OS_SHELL_SYNC','%OS_WINDOWS_2K','%OS_WINDOWS_95','%OS_WINDOWS_95_OSR2','%OS_WINDOWS_98',
+ '%OS_WINDOWS_98_SE','%OS_WINDOWS_ME','%OS_WINDOWS_NT','%OS_WINDOWS_SERVER_2003','%OS_WINDOWS_SERVER_LONGHORN','%OS_WINDOWS_SERVER_LONGHORN_DC','%OS_WINDOWS_VISTA','%OS_WINDOWS_XP',
+ '%OS_WNDSTYLE_HIDE','%OS_WNDSTYLE_MAXIMIZED','%OS_WNDSTYLE_MINIMIZED','%OS_WNDSTYLE_MINIMIZEDNOFOCUS','%OS_WNDSTYLE_NORMAL','%OS_WNDSTYLE_NORMALNOFOCUS','%PATH_EXT','%PATH_FILE',
+ '%PATH_FILEEXT','%PATH_ROOT','%PATH_ROOTPATH','%PATH_ROOTPATHPROG','%PATH_ROOTPATHPROGEXT','%PBM_DELTAPOS','%PBM_GETPOS','%PBM_GETRANGE',
+ '%PBM_SETBARCOLOR','%PBM_SETBKCOLOR','%PBM_SETPOS','%PBM_SETRANGE','%PBM_SETRANGE32','%PBM_SETSTEP','%PBM_STEPIT','%PBS_SMOOTH',
+ '%PBS_VERTICAL','%PC_DISABLEWAKEEVENT_OFF','%PC_DISABLEWAKEEVENT_ON','%PC_EB_NOCONFIRMATION','%PC_EB_NOPROGRESSUI','%PC_EB_NORMAL','%PC_EB_NOSOUND','%PC_FORCECRITICAL_OFF',
+ '%PC_FORCECRITICAL_ON','%PC_HIBERNATE_OFF','%PC_HIBERNATE_ON','%PC_RD_FORCE','%PC_RD_FORCEIFHUNG','%PC_RD_LOGOFF','%PC_RD_POWEROFF','%PC_RD_REBOOT',
+ '%PC_RD_SHUTDOWN','%PC_SD_DONOT_FORCE','%PC_SD_DONOT_REBOOT','%PC_SD_FORCE','%PC_SD_REBOOT','%PFA_CENTER','%PFA_LEFT','%PFA_RIGHT',
+ '%PF_3DNOW_INSTRUCTIONS_AVAILABLE','%PF_CHANNELS_ENABLED','%PF_COMPARE64_EXCHANGE128','%PF_COMPARE_EXCHANGE128','%PF_COMPARE_EXCHANGE_DOUBLE','%PF_FLOATING_POINT_EMULATED','%PF_FLOATING_POINT_PRECISION_ERRATA','%PF_MMX_INSTRUCTIONS_AVAILABLE',
+ '%PF_NX_ENABLED','%PF_PAE_ENABLED','%PF_RDTSC_INSTRUCTION_AVAILABLE','%PF_SSE3_INSTRUCTIONS_AVAILABLE','%PF_XMMI64_INSTRUCTIONS_AVAILABLE','%PF_XMMI_INSTRUCTIONS_AVAILABLE','%PGM_FIRST','%RED',
+ '%RTF_UBB','%SAPI_SVSFDEFAULT','%SAPI_SVSFISFILENAME','%SAPI_SVSFISNOTXML','%SAPI_SVSFISXML','%SAPI_SVSFLAGSASYNC','%SAPI_SVSFNLPMASK','%SAPI_SVSFNLPSPEAKPUNC',
+ '%SAPI_SVSFPERSISTXML','%SAPI_SVSFPURGEBEFORESPEAK','%SAPI_SVSFUNUSEDFLAGS','%SAPI_SVSFVOICEMASK','%SBS_SIZEGRIP','%SB_BOTTOM','%SB_ENDSCROLL','%SB_LEFT',
+ '%SB_LINEDOWN','%SB_LINELEFT','%SB_LINERIGHT','%SB_LINEUP','%SB_PAGEDOWN','%SB_PAGELEFT','%SB_PAGERIGHT','%SB_PAGEUP',
+ '%SB_RIGHT','%SB_SETPARTS','%SB_SETTEXT','%SB_THUMBPOSITION','%SB_THUMBTRACK','%SB_TOP','%SCF_ALL','%SCF_ASSOCIATEFONT',
+ '%SCF_DEFAULT','%SCF_NOKBUPDATE','%SCF_SELECTION','%SCF_USEUIRULES','%SCF_WORD','%SC_CLOSE','%SC_CONTEXTHELP','%SC_HOTKEY',
+ '%SC_HSCROLL','%SC_KEYMENU','%SC_MAXIMIZE','%SC_MINIMIZE','%SC_MONITORPOWER','%SC_MOUSEMENU','%SC_MOVE','%SC_NEXTWINDOW',
+ '%SC_PREVWINDOW','%SC_RESTORE','%SC_SCREENSAVE','%SC_SIZE','%SC_TASKLIST','%SC_VSCROLL','%SERVICE_ACTIVE','%SERVICE_AUTO_START',
+ '%SERVICE_BOOT_START','%SERVICE_CONTINUE_PENDING','%SERVICE_DEMAND_START','%SERVICE_DISABLED','%SERVICE_DRIVER','%SERVICE_INACTIVE','%SERVICE_INFO_DISPLAY_NAME','%SERVICE_INFO_NAME',
+ '%SERVICE_PAUSED','%SERVICE_PAUSE_PENDING','%SERVICE_RUNNING','%SERVICE_START_PENDING','%SERVICE_STATE_ALL','%SERVICE_STOPPED','%SERVICE_STOP_PENDING','%SERVICE_SYSTEM_START',
+ '%SERVICE_TYPE_ALL','%SERVICE_WIN32','%SES_ALLOWBEEPS','%SES_BEEPONMAXTEXT','%SES_BIDI','%SES_EMULATE10','%SES_EMULATESYSEDIT','%SES_EXTENDBACKCOLOR',
+ '%SES_LOWERCASE','%SES_MAPCPS','%SES_NOIME','%SES_NOINPUTSEQUENCECHK','%SES_SCROLLONKILLFOCUS','%SES_UPPERCASE','%SES_USEAIMM','%SES_USECRLF',
+ '%SES_XLTCRCRLFTOCR','%SF_RTF','%SF_TEXT','%SMTP_SET_ATTACH_CONTENT_TYPE','%SMTP_SET_CONTENT_TYPE_PREFIX','%SQL_AA_FALSE','%SQL_AA_TRUE','%SQL_ACCESSIBLE_PROCEDURES',
+ '%SQL_ACCESSIBLE_TABLES','%SQL_ACCESS_MODE','%SQL_ACTIVE_CONNECTIONS','%SQL_ACTIVE_ENVIRONMENTS','%SQL_ACTIVE_STATEMENTS','%SQL_ADD','%SQL_AD_ADD_CONSTRAINT_DEFERRABLE','%SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED',
+ '%SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE','%SQL_AD_ADD_DOMAIN_CONSTRAINT','%SQL_AD_ADD_DOMAIN_DEFAULT','%SQL_AD_CONSTRAINT_NAME_DEFINITION','%SQL_AD_DROP_DOMAIN_CONSTRAINT','%SQL_AD_DROP_DOMAIN_DEFAULT','%SQL_AF_ALL',
+ '%SQL_AF_AVG','%SQL_AF_COUNT','%SQL_AF_DISTINCT','%SQL_AF_MAX','%SQL_AF_MIN','%SQL_AF_SUM','%SQL_AGGREGATE_FUNCTIONS','%SQL_ALL_EXCEPT_LIKE',
+ '%SQL_ALL_TYPES','%SQL_ALTER_DOMAIN','%SQL_ALTER_TABLE','%SQL_AM_CONNECTION','%SQL_AM_NONE','%SQL_AM_STATEMENT','%SQL_API_ALL_FUNCTIONS','%SQL_API_LOADBYORDINAL',
+ '%SQL_API_ODBC3_ALL_FUNCTIONS','%SQL_API_ODBC3_ALL_FUNCTIONS_SIZE','%SQL_API_SQLALLOCCONNECT','%SQL_API_SQLALLOCENV','%SQL_API_SQLALLOCHANDLE','%SQL_API_SQLALLOCHANDLESTD','%SQL_API_SQLALLOCSTMT','%SQL_API_SQLBINDCOL',
+ '%SQL_API_SQLBINDPARAM','%SQL_API_SQLBINDPARAMETER','%SQL_API_SQLBROWSECONNECT','%SQL_API_SQLBULKOPERATIONS','%SQL_API_SQLCANCEL','%SQL_API_SQLCLOSECURSOR','%SQL_API_SQLCOLATTRIBUTE','%SQL_API_SQLCOLATTRIBUTES',
+ '%SQL_API_SQLCOLUMNPRIVILEGES','%SQL_API_SQLCOLUMNS','%SQL_API_SQLCONNECT','%SQL_API_SQLCOPYDESC','%SQL_API_SQLDATASOURCES','%SQL_API_SQLDESCRIBECOL','%SQL_API_SQLDESCRIBEPARAM','%SQL_API_SQLDISCONNECT',
+ '%SQL_API_SQLDRIVERCONNECT','%SQL_API_SQLDRIVERS','%SQL_API_SQLENDTRAN','%SQL_API_SQLERROR','%SQL_API_SQLEXECDIRECT','%SQL_API_SQLEXECUTE','%SQL_API_SQLEXTENDEDFETCH','%SQL_API_SQLFETCH',
+ '%SQL_API_SQLFETCHSCROLL','%SQL_API_SQLFOREIGNKEYS','%SQL_API_SQLFREECONNECT','%SQL_API_SQLFREEENV','%SQL_API_SQLFREEHANDLE','%SQL_API_SQLFREESTMT','%SQL_API_SQLGETCONNECTATTR','%SQL_API_SQLGETCONNECTOPTION',
+ '%SQL_API_SQLGETCURSORNAME','%SQL_API_SQLGETDATA','%SQL_API_SQLGETDESCFIELD','%SQL_API_SQLGETDESCREC','%SQL_API_SQLGETDIAGFIELD','%SQL_API_SQLGETDIAGREC','%SQL_API_SQLGETENVATTR','%SQL_API_SQLGETFUNCTIONS',
+ '%SQL_API_SQLGETINFO','%SQL_API_SQLGETSTMTATTR','%SQL_API_SQLGETSTMTOPTION','%SQL_API_SQLGETTYPEINFO','%SQL_API_SQLMORERESULTS','%SQL_API_SQLNATIVESQL','%SQL_API_SQLNUMPARAMS','%SQL_API_SQLNUMRESULTCOLS',
+ '%SQL_API_SQLPARAMDATA','%SQL_API_SQLPARAMOPTIONS','%SQL_API_SQLPREPARE','%SQL_API_SQLPRIMARYKEYS','%SQL_API_SQLPROCEDURECOLUMNS','%SQL_API_SQLPROCEDURES','%SQL_API_SQLPUTDATA','%SQL_API_SQLROWCOUNT',
+ '%SQL_API_SQLSETCONNECTATTR','%SQL_API_SQLSETCONNECTOPTION','%SQL_API_SQLSETCURSORNAME','%SQL_API_SQLSETDESCFIELD','%SQL_API_SQLSETDESCREC','%SQL_API_SQLSETENVATTR','%SQL_API_SQLSETPARAM','%SQL_API_SQLSETPOS',
+ '%SQL_API_SQLSETSCROLLOPTIONS','%SQL_API_SQLSETSTMTATTR','%SQL_API_SQLSETSTMTOPTION','%SQL_API_SQLSPECIALCOLUMNS','%SQL_API_SQLSTATISTICS','%SQL_API_SQLTABLEPRIVILEGES','%SQL_API_SQLTABLES','%SQL_API_SQLTRANSACT',
+ '%SQL_ARD_TYPE','%SQL_ASYNC_ENABLE','%SQL_ASYNC_ENABLE_DEFAULT','%SQL_ASYNC_ENABLE_OFF','%SQL_ASYNC_ENABLE_ON','%SQL_ASYNC_MODE','%SQL_ATTR_ACCESS_MODE','%SQL_ATTR_ANSI_APP',
+ '%SQL_ATTR_APP_PARAM_DESC','%SQL_ATTR_APP_ROW_DESC','%SQL_ATTR_ASYNC_ENABLE','%SQL_ATTR_AUTOCOMMIT','%SQL_ATTR_AUTO_IPD','%SQL_ATTR_CONCURRENCY','%SQL_ATTR_CONNECTION_DEAD','%SQL_ATTR_CONNECTION_POOLING',
+ '%SQL_ATTR_CONNECTION_TIMEOUT','%SQL_ATTR_CP_MATCH','%SQL_ATTR_CURRENT_CATALOG','%SQL_ATTR_CURSOR_SCROLLABLE','%SQL_ATTR_CURSOR_SENSITIVITY','%SQL_ATTR_CURSOR_TYPE','%SQL_ATTR_DISCONNECT_BEHAVIOR','%SQL_ATTR_ENABLE_AUTO_IPD',
+ '%SQL_ATTR_ENLIST_IN_DTC','%SQL_ATTR_ENLIST_IN_XA','%SQL_ATTR_FETCH_BOOKMARK_PTR','%SQL_ATTR_IMP_PARAM_DESC','%SQL_ATTR_IMP_ROW_DESC','%SQL_ATTR_KEYSET_SIZE','%SQL_ATTR_LOGIN_TIMEOUT','%SQL_ATTR_MAX_LENGTH',
+ '%SQL_ATTR_MAX_ROWS','%SQL_ATTR_METADATA_ID','%SQL_ATTR_NOSCAN','%SQL_ATTR_ODBC_CURSORS','%SQL_ATTR_ODBC_VERSION','%SQL_ATTR_OUTPUT_NTS','%SQL_ATTR_PACKET_SIZE','%SQL_ATTR_PARAMSET_SIZE',
+ '%SQL_ATTR_PARAMS_PROCESSED_PTR','%SQL_ATTR_PARAM_BIND_OFFSET_PTR','%SQL_ATTR_PARAM_BIND_TYPE','%SQL_ATTR_PARAM_OPERATION_PTR','%SQL_ATTR_PARAM_STATUS_PTR','%SQL_ATTR_QUERY_TIMEOUT','%SQL_ATTR_QUIET_MODE','%SQL_ATTR_READONLY',
+ '%SQL_ATTR_READWRITE_UNKNOWN','%SQL_ATTR_RETRIEVE_DATA','%SQL_ATTR_ROWS_FETCHED_PTR','%SQL_ATTR_ROW_ARRAY_SIZE','%SQL_ATTR_ROW_BIND_OFFSET_PTR','%SQL_ATTR_ROW_BIND_TYPE','%SQL_ATTR_ROW_NUMBER','%SQL_ATTR_ROW_OPERATION_PTR',
+ '%SQL_ATTR_ROW_STATUS_PTR','%SQL_ATTR_SIMULATE_CURSOR','%SQL_ATTR_TRACE','%SQL_ATTR_TRACEFILE','%SQL_ATTR_TRANSLATE_LIB','%SQL_ATTR_TRANSLATE_OPTION','%SQL_ATTR_TXN_ISOLATION','%SQL_ATTR_USE_BOOKMARKS',
+ '%SQL_ATTR_WRITE','%SQL_AT_ADD_COLUMN','%SQL_AT_ADD_COLUMN_COLLATION','%SQL_AT_ADD_COLUMN_DEFAULT','%SQL_AT_ADD_COLUMN_SINGLE','%SQL_AT_ADD_CONSTRAINT','%SQL_AT_ADD_TABLE_CONSTRAINT','%SQL_AT_CONSTRAINT_DEFERRABLE',
+ '%SQL_AT_CONSTRAINT_INITIALLY_DEFERRED','%SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AT_CONSTRAINT_NAME_DEFINITION','%SQL_AT_CONSTRAINT_NON_DEFERRABLE','%SQL_AT_DROP_COLUMN','%SQL_AT_DROP_COLUMN_CASCADE','%SQL_AT_DROP_COLUMN_DEFAULT','%SQL_AT_DROP_COLUMN_RESTRICT',
+ '%SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE','%SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT','%SQL_AT_SET_COLUMN_DEFAULT','%SQL_AUTOCOMMIT','%SQL_AUTOCOMMIT_DEFAULT','%SQL_AUTOCOMMIT_OFF','%SQL_AUTOCOMMIT_ON','%SQL_BATCH_ROW_COUNT',
+ '%SQL_BATCH_SUPPORT','%SQL_BEST_ROWID','%SQL_BIGINT','%SQL_BINARY','%SQL_BIND_BY_COLUMN','%SQL_BIND_TYPE','%SQL_BIND_TYPE_DEFAULT','%SQL_BIT',
+ '%SQL_BOOKMARK_PERSISTENCE','%SQL_BP_CLOSE','%SQL_BP_DELETE','%SQL_BP_DROP','%SQL_BP_OTHER_HSTMT','%SQL_BP_SCROLL','%SQL_BP_TRANSACTION','%SQL_BP_UPDATE',
+ '%SQL_BRC_EXPLICIT','%SQL_BRC_PROCEDURES','%SQL_BRC_ROLLED_UP','%SQL_BS_ROW_COUNT_EXPLICIT','%SQL_BS_ROW_COUNT_PROC','%SQL_BS_SELECT_EXPLICIT','%SQL_BS_SELECT_PROC','%SQL_CA1_ABSOLUTE',
+ '%SQL_CA1_BOOKMARK','%SQL_CA1_BULK_ADD','%SQL_CA1_BULK_DELETE_BY_BOOKMARK','%SQL_CA1_BULK_FETCH_BY_BOOKMARK','%SQL_CA1_BULK_UPDATE_BY_BOOKMARK','%SQL_CA1_LOCK_EXCLUSIVE','%SQL_CA1_LOCK_NO_CHANGE','%SQL_CA1_LOCK_UNLOCK',
+ '%SQL_CA1_NEXT','%SQL_CA1_POSITIONED_DELETE','%SQL_CA1_POSITIONED_UPDATE','%SQL_CA1_POS_DELETE','%SQL_CA1_POS_POSITION','%SQL_CA1_POS_REFRESH','%SQL_CA1_POS_UPDATE','%SQL_CA1_RELATIVE',
+ '%SQL_CA1_SELECT_FOR_UPDATE','%SQL_CA2_CRC_APPROXIMATE','%SQL_CA2_CRC_EXACT','%SQL_CA2_LOCK_CONCURRENCY','%SQL_CA2_MAX_ROWS_AFFECTS_ALL','%SQL_CA2_MAX_ROWS_CATALOG','%SQL_CA2_MAX_ROWS_DELETE','%SQL_CA2_MAX_ROWS_INSERT',
+ '%SQL_CA2_MAX_ROWS_SELECT','%SQL_CA2_MAX_ROWS_UPDATE','%SQL_CA2_OPT_ROWVER_CONCURRENCY','%SQL_CA2_OPT_VALUES_CONCURRENCY','%SQL_CA2_READ_ONLY_CONCURRENCY','%SQL_CA2_SENSITIVITY_ADDITIONS','%SQL_CA2_SENSITIVITY_DELETIONS','%SQL_CA2_SENSITIVITY_UPDATES',
+ '%SQL_CA2_SIMULATE_NON_UNIQUE','%SQL_CA2_SIMULATE_TRY_UNIQUE','%SQL_CA2_SIMULATE_UNIQUE','%SQL_CASCADE','%SQL_CATALOG_LOCATION','%SQL_CATALOG_NAME','%SQL_CATALOG_NAME_SEPARATOR','%SQL_CATALOG_TERM',
+ '%SQL_CATALOG_USAGE','%SQL_CA_CONSTRAINT_DEFERRABLE','%SQL_CA_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CA_CONSTRAINT_NON_DEFERRABLE','%SQL_CA_CREATE_ASSERTION','%SQL_CB_CLOSE','%SQL_CB_DELETE',
+ '%SQL_CB_NON_NULL','%SQL_CB_NULL','%SQL_CB_PRESERVE','%SQL_CCOL_CREATE_COLLATION','%SQL_CCS_COLLATE_CLAUSE','%SQL_CCS_CREATE_CHARACTER_SET','%SQL_CCS_LIMITED_COLLATION','%SQL_CC_CLOSE',
+ '%SQL_CC_DELETE','%SQL_CC_PRESERVE','%SQL_CDO_COLLATION','%SQL_CDO_CONSTRAINT','%SQL_CDO_CONSTRAINT_DEFERRABLE','%SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CDO_CONSTRAINT_NAME_DEFINITION',
+ '%SQL_CDO_CONSTRAINT_NON_DEFERRABLE','%SQL_CDO_CREATE_DOMAIN','%SQL_CDO_DEFAULT','%SQL_CD_FALSE','%SQL_CD_TRUE','%SQL_CHAR','%SQL_CLOSE','%SQL_CL_END',
+ '%SQL_CL_START','%SQL_CN_ANY','%SQL_CN_DIFFERENT','%SQL_CN_NONE','%SQL_CODE_DATE','%SQL_CODE_DAY','%SQL_CODE_DAY_TO_HOUR','%SQL_CODE_DAY_TO_MINUTE',
+ '%SQL_CODE_DAY_TO_SECOND','%SQL_CODE_HOUR','%SQL_CODE_HOUR_TO_MINUTE','%SQL_CODE_HOUR_TO_SECOND','%SQL_CODE_MINUTE','%SQL_CODE_MINUTE_TO_SECOND','%SQL_CODE_MONTH','%SQL_CODE_SECOND',
+ '%SQL_CODE_TIME','%SQL_CODE_TIMESTAMP','%SQL_CODE_YEAR','%SQL_CODE_YEAR_TO_MONTH','%SQL_COLATT_OPT_MAX','%SQL_COLATT_OPT_MIN','%SQL_COLLATION_SEQ','%SQL_COLUMN_ALIAS',
+ '%SQL_COLUMN_AUTO_INCREMENT','%SQL_COLUMN_CASE_SENSITIVE','%SQL_COLUMN_COUNT','%SQL_COLUMN_DISPLAY_SIZE','%SQL_COLUMN_IGNORE','%SQL_COLUMN_LABEL','%SQL_COLUMN_LENGTH','%SQL_COLUMN_MONEY',
+ '%SQL_COLUMN_NAME','%SQL_COLUMN_NULLABLE','%SQL_COLUMN_NUMBER_UNKNOWN','%SQL_COLUMN_OWNER_NAME','%SQL_COLUMN_PRECISION','%SQL_COLUMN_QUALIFIER_NAME','%SQL_COLUMN_SCALE','%SQL_COLUMN_SEARCHABLE',
+ '%SQL_COLUMN_TABLE_NAME','%SQL_COLUMN_TYPE','%SQL_COLUMN_TYPE_NAME','%SQL_COLUMN_UNSIGNED','%SQL_COLUMN_UPDATABLE','%SQL_COL_PRED_BASIC','%SQL_COL_PRED_CHAR','%SQL_COMMIT',
+ '%SQL_CONCAT_NULL_BEHAVIOR','%SQL_CONCURRENCY','%SQL_CONCUR_DEFAULT','%SQL_CONCUR_LOCK','%SQL_CONCUR_READ_ONLY','%SQL_CONCUR_ROWVER','%SQL_CONCUR_TIMESTAMP','%SQL_CONCUR_VALUES',
+ '%SQL_CONVERT_BIGINT','%SQL_CONVERT_BINARY','%SQL_CONVERT_BIT','%SQL_CONVERT_CHAR','%SQL_CONVERT_DATE','%SQL_CONVERT_DECIMAL','%SQL_CONVERT_DOUBLE','%SQL_CONVERT_FLOAT',
+ '%SQL_CONVERT_FUNCTIONS','%SQL_CONVERT_GUID','%SQL_CONVERT_INTEGER','%SQL_CONVERT_INTERVAL_DAY_TIME','%SQL_CONVERT_INTERVAL_YEAR_MONTH','%SQL_CONVERT_LONGVARBINARY','%SQL_CONVERT_LONGVARCHAR','%SQL_CONVERT_NUMERIC',
+ '%SQL_CONVERT_REAL','%SQL_CONVERT_SMALLINT','%SQL_CONVERT_TIME','%SQL_CONVERT_TIMESTAMP','%SQL_CONVERT_TINYINT','%SQL_CONVERT_VARBINARY','%SQL_CONVERT_VARCHAR','%SQL_CONVERT_WCHAR',
+ '%SQL_CONVERT_WLONGVARCHAR','%SQL_CONVERT_WVARCHAR','%SQL_CORRELATION_NAME','%SQL_CP_DEFAULT','%SQL_CP_MATCH_DEFAULT','%SQL_CP_OFF','%SQL_CP_ONE_PER_DRIVER','%SQL_CP_ONE_PER_HENV',
+ '%SQL_CP_RELAXED_MATCH','%SQL_CP_STRICT_MATCH','%SQL_CREATE_ASSERTION','%SQL_CREATE_CHARACTER_SET','%SQL_CREATE_COLLATION','%SQL_CREATE_DOMAIN','%SQL_CREATE_SCHEMA','%SQL_CREATE_TABLE',
+ '%SQL_CREATE_TRANSLATION','%SQL_CREATE_VIEW','%SQL_CR_CLOSE','%SQL_CR_DELETE','%SQL_CR_PRESERVE','%SQL_CS_AUTHORIZATION','%SQL_CS_CREATE_SCHEMA','%SQL_CS_DEFAULT_CHARACTER_SET',
+ '%SQL_CTR_CREATE_TRANSLATION','%SQL_CT_COLUMN_COLLATION','%SQL_CT_COLUMN_CONSTRAINT','%SQL_CT_COLUMN_DEFAULT','%SQL_CT_COMMIT_DELETE','%SQL_CT_COMMIT_PRESERVE','%SQL_CT_CONSTRAINT_DEFERRABLE','%SQL_CT_CONSTRAINT_INITIALLY_DEFERRED',
+ '%SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CT_CONSTRAINT_NAME_DEFINITION','%SQL_CT_CONSTRAINT_NON_DEFERRABLE','%SQL_CT_CREATE_TABLE','%SQL_CT_GLOBAL_TEMPORARY','%SQL_CT_LOCAL_TEMPORARY','%SQL_CT_TABLE_CONSTRAINT','%SQL_CURRENT_QUALIFIER',
+ '%SQL_CURSOR_COMMIT_BEHAVIOR','%SQL_CURSOR_DYNAMIC','%SQL_CURSOR_FORWARD_ONLY','%SQL_CURSOR_KEYSET_DRIVEN','%SQL_CURSOR_ROLLBACK_BEHAVIOR','%SQL_CURSOR_SENSITIVITY','%SQL_CURSOR_STATIC','%SQL_CURSOR_TYPE',
+ '%SQL_CURSOR_TYPE_DEFAULT','%SQL_CUR_DEFAULT','%SQL_CUR_USE_DRIVER','%SQL_CUR_USE_IF_NEEDED','%SQL_CUR_USE_ODBC','%SQL_CU_DML_STATEMENTS','%SQL_CU_INDEX_DEFINITION','%SQL_CU_PRIVILEGE_DEFINITION',
+ '%SQL_CU_PROCEDURE_INVOCATION','%SQL_CU_TABLE_DEFINITION','%SQL_CVT_BIGINT','%SQL_CVT_BINARY','%SQL_CVT_BIT','%SQL_CVT_CHAR','%SQL_CVT_DATE','%SQL_CVT_DECIMAL',
+ '%SQL_CVT_DOUBLE','%SQL_CVT_FLOAT','%SQL_CVT_GUID','%SQL_CVT_INTEGER','%SQL_CVT_INTERVAL_DAY_TIME','%SQL_CVT_INTERVAL_YEAR_MONTH','%SQL_CVT_LONGVARBINARY','%SQL_CVT_LONGVARCHAR',
+ '%SQL_CVT_NUMERIC','%SQL_CVT_REAL','%SQL_CVT_SMALLINT','%SQL_CVT_TIME','%SQL_CVT_TIMESTAMP','%SQL_CVT_TINYINT','%SQL_CVT_VARBINARY','%SQL_CVT_VARCHAR',
+ '%SQL_CVT_WCHAR','%SQL_CVT_WLONGVARCHAR','%SQL_CVT_WVARCHAR','%SQL_CV_CASCADED','%SQL_CV_CHECK_OPTION','%SQL_CV_CREATE_VIEW','%SQL_CV_LOCAL','%SQL_C_BINARY',
+ '%SQL_C_BIT','%SQL_C_BOOKMARK','%SQL_C_CHAR','%SQL_C_DATE','%SQL_C_DEFAULT','%SQL_C_DOUBLE','%SQL_C_FLOAT','%SQL_C_GUID',
+ '%SQL_C_INTERVAL_DAY','%SQL_C_INTERVAL_DAY_TO_HOUR','%SQL_C_INTERVAL_DAY_TO_MINUTE','%SQL_C_INTERVAL_DAY_TO_SECOND','%SQL_C_INTERVAL_HOUR','%SQL_C_INTERVAL_HOUR_TO_MINUTE','%SQL_C_INTERVAL_HOUR_TO_SECOND','%SQL_C_INTERVAL_MINUTE',
+ '%SQL_C_INTERVAL_MINUTE_TO_SECOND','%SQL_C_INTERVAL_MONTH','%SQL_C_INTERVAL_SECOND','%SQL_C_INTERVAL_YEAR','%SQL_C_INTERVAL_YEAR_TO_MONTH','%SQL_C_LONG','%SQL_C_NUMERIC','%SQL_C_SBIGINT',
+ '%SQL_C_SHORT','%SQL_C_SLONG','%SQL_C_SSHORT','%SQL_C_STINYINT','%SQL_C_TIME','%SQL_C_TIMESTAMP','%SQL_C_TINYINT','%SQL_C_TYPE_DATE',
+ '%SQL_C_TYPE_TIME','%SQL_C_TYPE_TIMESTAMP','%SQL_C_UBIGINT','%SQL_C_ULONG','%SQL_C_USHORT','%SQL_C_UTINYINT','%SQL_C_VARBOOKMARK','%SQL_DATABASE_NAME',
+ '%SQL_DATA_AT_EXEC','%SQL_DATA_SOURCE_NAME','%SQL_DATA_SOURCE_READ_ONLY','%SQL_DATE','%SQL_DATETIME','%SQL_DATETIME_LITERALS','%SQL_DATE_LEN','%SQL_DAY',
+ '%SQL_DAY_TO_HOUR','%SQL_DAY_TO_MINUTE','%SQL_DAY_TO_SECOND','%SQL_DA_DROP_ASSERTION','%SQL_DBMS_NAME','%SQL_DBMS_VER','%SQL_DB_DEFAULT','%SQL_DB_DISCONNECT',
+ '%SQL_DB_RETURN_TO_POOL','%SQL_DCS_DROP_CHARACTER_SET','%SQL_DC_DROP_COLLATION','%SQL_DDL_INDEX','%SQL_DD_CASCADE','%SQL_DD_DROP_DOMAIN','%SQL_DD_RESTRICT','%SQL_DECIMAL',
+ '%SQL_DEFAULT','%SQL_DEFAULT_PARAM','%SQL_DEFAULT_TXN_ISOLATION','%SQL_DELETE','%SQL_DELETE_BY_BOOKMARK','%SQL_DESCRIBE_PARAMETER','%SQL_DESC_ALLOC_AUTO','%SQL_DESC_ALLOC_TYPE',
+ '%SQL_DESC_ALLOC_USER','%SQL_DESC_ARRAY_SIZE','%SQL_DESC_ARRAY_STATUS_PTR','%SQL_DESC_AUTO_UNIQUE_VALUE','%SQL_DESC_BASE_COLUMN_NAME','%SQL_DESC_BASE_TABLE_NAME','%SQL_DESC_BIND_OFFSET_PTR','%SQL_DESC_BIND_TYPE',
+ '%SQL_DESC_CASE_SENSITIVE','%SQL_DESC_CATALOG_NAME','%SQL_DESC_CONCISE_TYPE','%SQL_DESC_COUNT','%SQL_DESC_DATA_PTR','%SQL_DESC_DATETIME_INTERVAL_CODE','%SQL_DESC_DATETIME_INTERVAL_PRECISION','%SQL_DESC_DISPLAY_SIZE',
+ '%SQL_DESC_FIXED_PREC_SCALE','%SQL_DESC_INDICATOR_PTR','%SQL_DESC_LABEL','%SQL_DESC_LENGTH','%SQL_DESC_LITERAL_PREFIX','%SQL_DESC_LITERAL_SUFFIX','%SQL_DESC_LOCAL_TYPE_NAME','%SQL_DESC_MAXIMUM_SCALE',
+ '%SQL_DESC_MINIMUM_SCALE','%SQL_DESC_NAME','%SQL_DESC_NULLABLE','%SQL_DESC_NUM_PREC_RADIX','%SQL_DESC_OCTET_LENGTH','%SQL_DESC_OCTET_LENGTH_PTR','%SQL_DESC_PARAMETER_TYPE','%SQL_DESC_PRECISION',
+ '%SQL_DESC_ROWS_PROCESSED_PTR','%SQL_DESC_SCALE','%SQL_DESC_SCHEMA_NAME','%SQL_DESC_SEARCHABLE','%SQL_DESC_TABLE_NAME','%SQL_DESC_TYPE','%SQL_DESC_TYPE_NAME','%SQL_DESC_UNNAMED',
+ '%SQL_DESC_UNSIGNED','%SQL_DESC_UPDATABLE','%SQL_DIAG_ALTER_TABLE','%SQL_DIAG_CALL','%SQL_DIAG_CLASS_ORIGIN','%SQL_DIAG_COLUMN_NUMBER','%SQL_DIAG_CONNECTION_NAME','%SQL_DIAG_CREATE_INDEX',
+ '%SQL_DIAG_CREATE_TABLE','%SQL_DIAG_CREATE_VIEW','%SQL_DIAG_CURSOR_ROW_COUNT','%SQL_DIAG_DELETE_WHERE','%SQL_DIAG_DROP_INDEX','%SQL_DIAG_DROP_TABLE','%SQL_DIAG_DROP_VIEW','%SQL_DIAG_DYNAMIC_DELETE_CURSOR',
+ '%SQL_DIAG_DYNAMIC_FUNCTION','%SQL_DIAG_DYNAMIC_FUNCTION_CODE','%SQL_DIAG_DYNAMIC_UPDATE_CURSOR','%SQL_DIAG_GRANT','%SQL_DIAG_INSERT','%SQL_DIAG_MESSAGE_TEXT','%SQL_DIAG_NATIVE','%SQL_DIAG_NUMBER',
+ '%SQL_DIAG_RETURNCODE','%SQL_DIAG_REVOKE','%SQL_DIAG_ROW_COUNT','%SQL_DIAG_ROW_NUMBER','%SQL_DIAG_SELECT_CURSOR','%SQL_DIAG_SERVER_NAME','%SQL_DIAG_SQLSTATE','%SQL_DIAG_SUBCLASS_ORIGIN',
+ '%SQL_DIAG_UNKNOWN_STATEMENT','%SQL_DIAG_UPDATE_WHERE','%SQL_DI_CREATE_INDEX','%SQL_DI_DROP_INDEX','%SQL_DL_SQL92_DATE','%SQL_DL_SQL92_INTERVAL_DAY','%SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR','%SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE',
+ '%SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND','%SQL_DL_SQL92_INTERVAL_HOUR','%SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE','%SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MINUTE','%SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MONTH','%SQL_DL_SQL92_INTERVAL_SECOND',
+ '%SQL_DL_SQL92_INTERVAL_YEAR','%SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH','%SQL_DL_SQL92_TIME','%SQL_DL_SQL92_TIMESTAMP','%SQL_DM_VER','%SQL_DOUBLE','%SQL_DRIVER_COMPLETE','%SQL_DRIVER_COMPLETE_REQUIRED',
+ '%SQL_DRIVER_HDBC','%SQL_DRIVER_HDESC','%SQL_DRIVER_HENV','%SQL_DRIVER_HLIB','%SQL_DRIVER_HSTMT','%SQL_DRIVER_NAME','%SQL_DRIVER_NOPROMPT','%SQL_DRIVER_ODBC_VER',
+ '%SQL_DRIVER_PROMPT','%SQL_DRIVER_VER','%SQL_DROP','%SQL_DROP_ASSERTION','%SQL_DROP_CHARACTER_SET','%SQL_DROP_COLLATION','%SQL_DROP_DOMAIN','%SQL_DROP_SCHEMA',
+ '%SQL_DROP_TABLE','%SQL_DROP_TRANSLATION','%SQL_DROP_VIEW','%SQL_DS_CASCADE','%SQL_DS_DROP_SCHEMA','%SQL_DS_RESTRICT','%SQL_DTC_DONE','%SQL_DTC_ENLIST_EXPENSIVE',
+ '%SQL_DTC_TRANSITION_COST','%SQL_DTC_UNENLIST_EXPENSIVE','%SQL_DTR_DROP_TRANSLATION','%SQL_DT_CASCADE','%SQL_DT_DROP_TABLE','%SQL_DT_RESTRICT','%SQL_DV_CASCADE','%SQL_DV_DROP_VIEW',
+ '%SQL_DV_RESTRICT','%SQL_DYNAMIC_CURSOR_ATTRIBUTES1','%SQL_DYNAMIC_CURSOR_ATTRIBUTES2','%SQL_ENSURE','%SQL_ENTIRE_ROWSET','%SQL_ERROR','%SQL_EXPRESSIONS_IN_ORDERBY','%SQL_FALSE',
+ '%SQL_FD_FETCH_ABSOLUTE','%SQL_FD_FETCH_BOOKMARK','%SQL_FD_FETCH_FIRST','%SQL_FD_FETCH_LAST','%SQL_FD_FETCH_NEXT','%SQL_FD_FETCH_PREV','%SQL_FD_FETCH_PRIOR','%SQL_FD_FETCH_RELATIVE',
+ '%SQL_FETCH_ABSOLUTE','%SQL_FETCH_BOOKMARK','%SQL_FETCH_BY_BOOKMARK','%SQL_FETCH_DIRECTION','%SQL_FETCH_FIRST','%SQL_FETCH_FIRST_SYSTEM','%SQL_FETCH_FIRST_USER','%SQL_FETCH_LAST',
+ '%SQL_FETCH_NEXT','%SQL_FETCH_PREV','%SQL_FETCH_PRIOR','%SQL_FETCH_RELATIVE','%SQL_FILE_CATALOG','%SQL_FILE_NOT_SUPPORTED','%SQL_FILE_QUALIFIER','%SQL_FILE_TABLE',
+ '%SQL_FILE_USAGE','%SQL_FLOAT','%SQL_FN_CVT_CAST','%SQL_FN_CVT_CONVERT','%SQL_FN_NUM_ABS','%SQL_FN_NUM_ACOS','%SQL_FN_NUM_ASIN','%SQL_FN_NUM_ATAN',
+ '%SQL_FN_NUM_ATAN2','%SQL_FN_NUM_CEILING','%SQL_FN_NUM_COS','%SQL_FN_NUM_COT','%SQL_FN_NUM_DEGREES','%SQL_FN_NUM_EXP','%SQL_FN_NUM_FLOOR','%SQL_FN_NUM_LOG',
+ '%SQL_FN_NUM_LOG10','%SQL_FN_NUM_MOD','%SQL_FN_NUM_PI','%SQL_FN_NUM_POWER','%SQL_FN_NUM_RADIANS','%SQL_FN_NUM_RAND','%SQL_FN_NUM_ROUND','%SQL_FN_NUM_SIGN',
+ '%SQL_FN_NUM_SIN','%SQL_FN_NUM_SQRT','%SQL_FN_NUM_TAN','%SQL_FN_NUM_TRUNCATE','%SQL_FN_STR_ASCII','%SQL_FN_STR_BIT_LENGTH','%SQL_FN_STR_CHAR','%SQL_FN_STR_CHARACTER_LENGTH',
+ '%SQL_FN_STR_CHAR_LENGTH','%SQL_FN_STR_CONCAT','%SQL_FN_STR_DIFFERENCE','%SQL_FN_STR_INSERT','%SQL_FN_STR_LCASE','%SQL_FN_STR_LEFT','%SQL_FN_STR_LENGTH','%SQL_FN_STR_LOCATE',
+ '%SQL_FN_STR_LOCATE_2','%SQL_FN_STR_LTRIM','%SQL_FN_STR_OCTET_LENGTH','%SQL_FN_STR_POSITION','%SQL_FN_STR_REPEAT','%SQL_FN_STR_REPLACE','%SQL_FN_STR_RIGHT','%SQL_FN_STR_RTRIM',
+ '%SQL_FN_STR_SOUNDEX','%SQL_FN_STR_SPACE','%SQL_FN_STR_SUBSTRING','%SQL_FN_STR_UCASE','%SQL_FN_SYS_DBNAME','%SQL_FN_SYS_IFNULL','%SQL_FN_SYS_USERNAME','%SQL_FN_TD_CURDATE',
+ '%SQL_FN_TD_CURRENT_DATE','%SQL_FN_TD_CURRENT_TIME','%SQL_FN_TD_CURRENT_TIMESTAMP','%SQL_FN_TD_CURTIME','%SQL_FN_TD_DAYNAME','%SQL_FN_TD_DAYOFMONTH','%SQL_FN_TD_DAYOFWEEK','%SQL_FN_TD_DAYOFYEAR',
+ '%SQL_FN_TD_EXTRACT','%SQL_FN_TD_HOUR','%SQL_FN_TD_MINUTE','%SQL_FN_TD_MONTH','%SQL_FN_TD_MONTHNAME','%SQL_FN_TD_NOW','%SQL_FN_TD_QUARTER','%SQL_FN_TD_SECOND',
+ '%SQL_FN_TD_TIMESTAMPADD','%SQL_FN_TD_TIMESTAMPDIFF','%SQL_FN_TD_WEEK','%SQL_FN_TD_YEAR','%SQL_FN_TSI_DAY','%SQL_FN_TSI_FRAC_SECOND','%SQL_FN_TSI_HOUR','%SQL_FN_TSI_MINUTE',
+ '%SQL_FN_TSI_MONTH','%SQL_FN_TSI_QUARTER','%SQL_FN_TSI_SECOND','%SQL_FN_TSI_WEEK','%SQL_FN_TSI_YEAR','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2','%SQL_GB_COLLATE',
+ '%SQL_GB_GROUP_BY_CONTAINS_SELECT','%SQL_GB_GROUP_BY_EQUALS_SELECT','%SQL_GB_NOT_SUPPORTED','%SQL_GB_NO_RELATION','%SQL_GD_ANY_COLUMN','%SQL_GD_ANY_ORDER','%SQL_GD_BLOCK','%SQL_GD_BOUND',
+ '%SQL_GETDATA_EXTENSIONS','%SQL_GET_BOOKMARK','%SQL_GROUP_BY','%SQL_GUID','%SQL_HANDLE_DBC','%SQL_HANDLE_DESC','%SQL_HANDLE_ENV','%SQL_HANDLE_SENV',
+ '%SQL_HANDLE_STMT','%SQL_HOUR','%SQL_HOUR_TO_MINUTE','%SQL_HOUR_TO_SECOND','%SQL_IC_LOWER','%SQL_IC_MIXED','%SQL_IC_SENSITIVE','%SQL_IC_UPPER',
+ '%SQL_IDENTIFIER_CASE','%SQL_IDENTIFIER_QUOTE_CHAR','%SQL_IGNORE','%SQL_IK_ALL','%SQL_IK_ASC','%SQL_IK_DESC','%SQL_IK_NONE','%SQL_INDEX_ALL',
+ '%SQL_INDEX_CLUSTERED','%SQL_INDEX_HASHED','%SQL_INDEX_KEYWORDS','%SQL_INDEX_OTHER','%SQL_INDEX_UNIQUE','%SQL_INFO_FIRST','%SQL_INFO_SCHEMA_VIEWS','%SQL_INITIALLY_DEFERRED',
+ '%SQL_INITIALLY_IMMEDIATE','%SQL_INSENSITIVE','%SQL_INSERT_STATEMENT','%SQL_INTEGER','%SQL_INTEGRITY','%SQL_INTERVAL','%SQL_INTERVAL_DAY','%SQL_INTERVAL_DAY_TO_HOUR',
+ '%SQL_INTERVAL_DAY_TO_MINUTE','%SQL_INTERVAL_DAY_TO_SECOND','%SQL_INTERVAL_HOUR','%SQL_INTERVAL_HOUR_TO_MINUTE','%SQL_INTERVAL_HOUR_TO_SECOND','%SQL_INTERVAL_MINUTE','%SQL_INTERVAL_MINUTE_TO_SECOND','%SQL_INTERVAL_MONTH',
+ '%SQL_INTERVAL_SECOND','%SQL_INTERVAL_YEAR','%SQL_INTERVAL_YEAR_TO_MONTH','%SQL_INVALID_HANDLE','%SQL_ISV_ASSERTIONS','%SQL_ISV_CHARACTER_SETS','%SQL_ISV_CHECK_CONSTRAINTS','%SQL_ISV_COLLATIONS',
+ '%SQL_ISV_COLUMNS','%SQL_ISV_COLUMN_DOMAIN_USAGE','%SQL_ISV_COLUMN_PRIVILEGES','%SQL_ISV_CONSTRAINT_COLUMN_USAGE','%SQL_ISV_CONSTRAINT_TABLE_USAGE','%SQL_ISV_DOMAINS','%SQL_ISV_DOMAIN_CONSTRAINTS','%SQL_ISV_KEY_COLUMN_USAGE',
+ '%SQL_ISV_REFERENTIAL_CONSTRAINTS','%SQL_ISV_SCHEMATA','%SQL_ISV_SQL_LANGUAGES','%SQL_ISV_TABLES','%SQL_ISV_TABLE_CONSTRAINTS','%SQL_ISV_TABLE_PRIVILEGES','%SQL_ISV_TRANSLATIONS','%SQL_ISV_USAGE_PRIVILEGES',
+ '%SQL_ISV_VIEWS','%SQL_ISV_VIEW_COLUMN_USAGE','%SQL_ISV_VIEW_TABLE_USAGE','%SQL_IS_DAY','%SQL_IS_DAY_TO_HOUR','%SQL_IS_DAY_TO_MINUTE','%SQL_IS_DAY_TO_SECOND','%SQL_IS_HOUR',
+ '%SQL_IS_HOUR_TO_MINUTE','%SQL_IS_HOUR_TO_SECOND','%SQL_IS_INSERT_LITERALS','%SQL_IS_INSERT_SEARCHED','%SQL_IS_INTEGER','%SQL_IS_MINUTE','%SQL_IS_MINUTE_TO_SECOND','%SQL_IS_MONTH',
+ '%SQL_IS_POINTER','%SQL_IS_SECOND','%SQL_IS_SELECT_INTO','%SQL_IS_SMALLINT','%SQL_IS_UINTEGER','%SQL_IS_USMALLINT','%SQL_IS_YEAR','%SQL_IS_YEAR_TO_MONTH',
+ '%SQL_KEYSET_CURSOR_ATTRIBUTES1','%SQL_KEYSET_CURSOR_ATTRIBUTES2','%SQL_KEYSET_SIZE','%SQL_KEYSET_SIZE_DEFAULT','%SQL_KEYWORDS','%SQL_LCK_EXCLUSIVE','%SQL_LCK_NO_CHANGE','%SQL_LCK_UNLOCK',
+ '%SQL_LEN_BINARY_ATTR_OFFSET','%SQL_LEN_DATA_AT_EXEC_OFFSET','%SQL_LIKE_ESCAPE_CLAUSE','%SQL_LIKE_ONLY','%SQL_LOCK_EXCLUSIVE','%SQL_LOCK_NO_CHANGE','%SQL_LOCK_TYPES','%SQL_LOCK_UNLOCK',
+ '%SQL_LOGIN_TIMEOUT','%SQL_LOGIN_TIMEOUT_DEFAULT','%SQL_LONGVARBINARY','%SQL_LONGVARCHAR','%SQL_MAXIMUM_CATALOG_NAME_LENGTH','%SQL_MAXIMUM_COLUMNS_IN_GROUP_BY','%SQL_MAXIMUM_COLUMNS_IN_INDEX','%SQL_MAXIMUM_COLUMNS_IN_ORDER_BY',
+ '%SQL_MAXIMUM_COLUMNS_IN_SELECT','%SQL_MAXIMUM_COLUMN_NAME_LENGTH','%SQL_MAXIMUM_CONCURRENT_ACTIVITIES','%SQL_MAXIMUM_CURSOR_NAME_LENGTH','%SQL_MAXIMUM_DRIVER_CONNECTIONS','%SQL_MAXIMUM_IDENTIFIER_LENGTH','%SQL_MAXIMUM_INDEX_SIZE','%SQL_MAXIMUM_ROW_SIZE',
+ '%SQL_MAXIMUM_SCHEMA_NAME_LENGTH','%SQL_MAXIMUM_STATEMENT_LENGTH','%SQL_MAXIMUM_TABLES_IN_SELECT','%SQL_MAXIMUM_USER_NAME_LENGTH','%SQL_MAX_ASYNC_CONCURRENT_STATEMENTS','%SQL_MAX_BINARY_LITERAL_LEN','%SQL_MAX_CATALOG_NAME_LEN','%SQL_MAX_CHAR_LITERAL_LEN',
+ '%SQL_MAX_COLUMNS_IN_GROUP_BY','%SQL_MAX_COLUMNS_IN_INDEX','%SQL_MAX_COLUMNS_IN_ORDER_BY','%SQL_MAX_COLUMNS_IN_SELECT','%SQL_MAX_COLUMNS_IN_TABLE','%SQL_MAX_COLUMN_NAME_LEN','%SQL_MAX_CONCURRENT_ACTIVITIES','%SQL_MAX_CURSOR_NAME_LEN',
+ '%SQL_MAX_DRIVER_CONNECTIONS','%SQL_MAX_DSN_LENGTH','%SQL_MAX_IDENTIFIER_LEN','%SQL_MAX_INDEX_SIZE','%SQL_MAX_LENGTH','%SQL_MAX_LENGTH_DEFAULT','%SQL_MAX_MESSAGE_LENGTH','%SQL_MAX_NUMERIC_LEN',
+ '%SQL_MAX_OPTION_STRING_LENGTH','%SQL_MAX_OWNER_NAME_LEN','%SQL_MAX_PROCEDURE_NAME_LEN','%SQL_MAX_QUALIFIER_NAME_LEN','%SQL_MAX_ROWS','%SQL_MAX_ROWS_DEFAULT','%SQL_MAX_ROW_SIZE','%SQL_MAX_ROW_SIZE_INCLUDES_LONG',
+ '%SQL_MAX_SCHEMA_NAME_LEN','%SQL_MAX_STATEMENT_LEN','%SQL_MAX_TABLES_IN_SELECT','%SQL_MAX_TABLE_NAME_LEN','%SQL_MAX_USER_NAME_LEN','%SQL_MINUTE','%SQL_MINUTE_TO_SECOND','%SQL_MODE_DEFAULT',
+ '%SQL_MODE_READ_ONLY','%SQL_MODE_READ_WRITE','%SQL_MONTH','%SQL_MULTIPLE_ACTIVE_TXN','%SQL_MULT_RESULT_SETS','%SQL_NAMED','%SQL_NC_END','%SQL_NC_HIGH',
+ '%SQL_NC_LOW','%SQL_NC_START','%SQL_NEED_DATA','%SQL_NEED_LONG_DATA_LEN','%SQL_NNC_NON_NULL','%SQL_NNC_NULL','%SQL_NONSCROLLABLE','%SQL_NON_NULLABLE_COLUMNS',
+ '%SQL_NOSCAN','%SQL_NOSCAN_DEFAULT','%SQL_NOSCAN_OFF','%SQL_NOSCAN_ON','%SQL_NOT_DEFERRABLE','%SQL_NO_ACTION','%SQL_NO_COLUMN_NUMBER','%SQL_NO_DATA',
+ '%SQL_NO_DATA_FOUND','%SQL_NO_NULLS','%SQL_NO_ROW_NUMBER','%SQL_NO_TOTAL','%SQL_NTS','%SQL_NTSL','%SQL_NULLABLE','%SQL_NULLABLE_UNKNOWN',
+ '%SQL_NULL_COLLATION','%SQL_NULL_DATA','%SQL_NULL_HANDLE','%SQL_NULL_HDBC','%SQL_NULL_HDESC','%SQL_NULL_HENV','%SQL_NULL_HSTMT','%SQL_NUMERIC',
+ '%SQL_NUMERIC_FUNCTIONS','%SQL_OAC_LEVEL1','%SQL_OAC_LEVEL2','%SQL_OAC_NONE','%SQL_ODBC_API_CONFORMANCE','%SQL_ODBC_CURSORS','%SQL_ODBC_INTERFACE_CONFORMANCE','%SQL_ODBC_SAG_CLI_CONFORMANCE',
+ '%SQL_ODBC_SQL_CONFORMANCE','%SQL_ODBC_SQL_OPT_IEF','%SQL_ODBC_VER','%SQL_OIC_CORE','%SQL_OIC_LEVEL1','%SQL_OIC_LEVEL2','%SQL_OJ_ALL_COMPARISON_OPS','%SQL_OJ_CAPABILITIES',
+ '%SQL_OJ_FULL','%SQL_OJ_INNER','%SQL_OJ_LEFT','%SQL_OJ_NESTED','%SQL_OJ_NOT_ORDERED','%SQL_OJ_RIGHT','%SQL_OPT_TRACE','%SQL_OPT_TRACEFILE',
+ '%SQL_OPT_TRACE_DEFAULT','%SQL_OPT_TRACE_OFF','%SQL_OPT_TRACE_ON','%SQL_ORDER_BY_COLUMNS_IN_SELECT','%SQL_OSCC_COMPLIANT','%SQL_OSCC_NOT_COMPLIANT','%SQL_OSC_CORE','%SQL_OSC_EXTENDED',
+ '%SQL_OSC_MINIMUM','%SQL_OUTER_JOINS','%SQL_OUTER_JOIN_CAPABILITIES','%SQL_OU_DML_STATEMENTS','%SQL_OU_INDEX_DEFINITION','%SQL_OU_PRIVILEGE_DEFINITION','%SQL_OU_PROCEDURE_INVOCATION','%SQL_OU_TABLE_DEFINITION',
+ '%SQL_OV_ODBC2','%SQL_OV_ODBC3','%SQL_OWNER_TERM','%SQL_OWNER_USAGE','%SQL_PACKET_SIZE','%SQL_PARAM_ARRAY_ROW_COUNTS','%SQL_PARAM_ARRAY_SELECTS','%SQL_PARAM_BIND_BY_COLUMN',
+ '%SQL_PARAM_BIND_TYPE_DEFAULT','%SQL_PARAM_DIAG_UNAVAILABLE','%SQL_PARAM_ERROR','%SQL_PARAM_IGNORE','%SQL_PARAM_INPUT','%SQL_PARAM_INPUT_OUTPUT','%SQL_PARAM_OUTPUT','%SQL_PARAM_PROCEED',
+ '%SQL_PARAM_SUCCESS','%SQL_PARAM_SUCCESS_WITH_INFO','%SQL_PARAM_TYPE_DEFAULT','%SQL_PARAM_TYPE_UNKNOWN','%SQL_PARAM_UNUSED','%SQL_PARC_BATCH','%SQL_PARC_NO_BATCH','%SQL_PAS_BATCH',
+ '%SQL_PAS_NO_BATCH','%SQL_PAS_NO_SELECT','%SQL_PC_NON_PSEUDO','%SQL_PC_NOT_PSEUDO','%SQL_PC_PSEUDO','%SQL_PC_UNKNOWN','%SQL_POSITION','%SQL_POSITIONED_STATEMENTS',
+ '%SQL_POS_ADD','%SQL_POS_DELETE','%SQL_POS_OPERATIONS','%SQL_POS_POSITION','%SQL_POS_REFRESH','%SQL_POS_UPDATE','%SQL_PRED_BASIC','%SQL_PRED_CHAR',
+ '%SQL_PRED_NONE','%SQL_PRED_SEARCHABLE','%SQL_PROCEDURES','%SQL_PROCEDURE_TERM','%SQL_PS_POSITIONED_DELETE','%SQL_PS_POSITIONED_UPDATE','%SQL_PS_SELECT_FOR_UPDATE','%SQL_PT_FUNCTION',
+ '%SQL_PT_PROCEDURE','%SQL_PT_UNKNOWN','%SQL_QL_END','%SQL_QL_START','%SQL_QUALIFIER_LOCATION','%SQL_QUALIFIER_NAME_SEPARATOR','%SQL_QUALIFIER_TERM','%SQL_QUALIFIER_USAGE',
+ '%SQL_QUERY_TIMEOUT','%SQL_QUERY_TIMEOUT_DEFAULT','%SQL_QUICK','%SQL_QUIET_MODE','%SQL_QUOTED_IDENTIFIER_CASE','%SQL_QU_DML_STATEMENTS','%SQL_QU_INDEX_DEFINITION','%SQL_QU_PRIVILEGE_DEFINITION',
+ '%SQL_QU_PROCEDURE_INVOCATION','%SQL_QU_TABLE_DEFINITION','%SQL_RD_DEFAULT','%SQL_RD_OFF','%SQL_RD_ON','%SQL_REAL','%SQL_REFRESH','%SQL_RESET_PARAMS',
+ '%SQL_RESTRICT','%SQL_RESULT_COL','%SQL_RETRIEVE_DATA','%SQL_RETURN_VALUE','%SQL_ROLLBACK','%SQL_ROWSET_SIZE','%SQL_ROWSET_SIZE_DEFAULT','%SQL_ROWVER',
+ '%SQL_ROW_ADDED','%SQL_ROW_DELETED','%SQL_ROW_ERROR','%SQL_ROW_IDENTIFIER','%SQL_ROW_IGNORE','%SQL_ROW_NOROW','%SQL_ROW_NUMBER','%SQL_ROW_NUMBER_UNKNOWN',
+ '%SQL_ROW_PROCEED','%SQL_ROW_SUCCESS','%SQL_ROW_SUCCESS_WITH_INFO','%SQL_ROW_UPDATED','%SQL_ROW_UPDATES','%SQL_SCCO_LOCK','%SQL_SCCO_OPT_ROWVER','%SQL_SCCO_OPT_TIMESTAMP',
+ '%SQL_SCCO_OPT_VALUES','%SQL_SCCO_READ_ONLY','%SQL_SCC_ISO92_CLI','%SQL_SCC_XOPEN_CLI_VERSION1','%SQL_SCHEMA_TERM','%SQL_SCHEMA_USAGE','%SQL_SCOPE_CURROW','%SQL_SCOPE_SESSION',
+ '%SQL_SCOPE_TRANSACTION','%SQL_SCROLLABLE','%SQL_SCROLL_CONCURRENCY','%SQL_SCROLL_DYNAMIC','%SQL_SCROLL_FORWARD_ONLY','%SQL_SCROLL_KEYSET_DRIVEN','%SQL_SCROLL_OPTIONS','%SQL_SCROLL_STATIC',
+ '%SQL_SC_FIPS127_2_TRANSITIONAL','%SQL_SC_NON_UNIQUE','%SQL_SC_SQL92_ENTRY','%SQL_SC_SQL92_FULL','%SQL_SC_SQL92_INTERMEDIATE','%SQL_SC_TRY_UNIQUE','%SQL_SC_UNIQUE','%SQL_SDF_CURRENT_DATE',
+ '%SQL_SDF_CURRENT_TIME','%SQL_SDF_CURRENT_TIMESTAMP','%SQL_SEARCHABLE','%SQL_SEARCH_PATTERN_ESCAPE','%SQL_SECOND','%SQL_SENSITIVE','%SQL_SERVER_NAME','%SQL_SETPARAM_VALUE_MAX',
+ '%SQL_SETPOS_MAX_LOCK_VALUE','%SQL_SETPOS_MAX_OPTION_VALUE','%SQL_SET_DEFAULT','%SQL_SET_NULL','%SQL_SFKD_CASCADE','%SQL_SFKD_NO_ACTION','%SQL_SFKD_SET_DEFAULT','%SQL_SFKD_SET_NULL',
+ '%SQL_SFKU_CASCADE','%SQL_SFKU_NO_ACTION','%SQL_SFKU_SET_DEFAULT','%SQL_SFKU_SET_NULL','%SQL_SG_DELETE_TABLE','%SQL_SG_INSERT_COLUMN','%SQL_SG_INSERT_TABLE','%SQL_SG_REFERENCES_COLUMN',
+ '%SQL_SG_REFERENCES_TABLE','%SQL_SG_SELECT_TABLE','%SQL_SG_UPDATE_COLUMN','%SQL_SG_UPDATE_TABLE','%SQL_SG_USAGE_ON_CHARACTER_SET','%SQL_SG_USAGE_ON_COLLATION','%SQL_SG_USAGE_ON_DOMAIN','%SQL_SG_USAGE_ON_TRANSLATION',
+ '%SQL_SG_WITH_GRANT_OPTION','%SQL_SIGNED_OFFSET','%SQL_SIMULATE_CURSOR','%SQL_SMALLINT','%SQL_SNVF_BIT_LENGTH','%SQL_SNVF_CHARACTER_LENGTH','%SQL_SNVF_CHAR_LENGTH','%SQL_SNVF_EXTRACT',
+ '%SQL_SNVF_OCTET_LENGTH','%SQL_SNVF_POSITION','%SQL_SO_DYNAMIC','%SQL_SO_FORWARD_ONLY','%SQL_SO_KEYSET_DRIVEN','%SQL_SO_MIXED','%SQL_SO_STATIC','%SQL_SPECIAL_CHARACTERS',
+ '%SQL_SPEC_MAJOR','%SQL_SPEC_MINOR','%SQL_SP_BETWEEN','%SQL_SP_COMPARISON','%SQL_SP_EXISTS','%SQL_SP_IN','%SQL_SP_ISNOTNULL','%SQL_SP_ISNULL',
+ '%SQL_SP_LIKE','%SQL_SP_MATCH_FULL','%SQL_SP_MATCH_PARTIAL','%SQL_SP_MATCH_UNIQUE_FULL','%SQL_SP_MATCH_UNIQUE_PARTIAL','%SQL_SP_OVERLAPS','%SQL_SP_QUANTIFIED_COMPARISON','%SQL_SP_UNIQUE',
+ '%SQL_SQL92_DATETIME_FUNCTIONS','%SQL_SQL92_FOREIGN_KEY_DELETE_RULE','%SQL_SQL92_FOREIGN_KEY_UPDATE_RULE','%SQL_SQL92_GRANT','%SQL_SQL92_NUMERIC_VALUE_FUNCTIONS','%SQL_SQL92_PREDICATES','%SQL_SQL92_RELATIONAL_JOIN_OPERATORS','%SQL_SQL92_REVOKE',
+ '%SQL_SQL92_ROW_VALUE_CONSTRUCTOR','%SQL_SQL92_STRING_FUNCTIONS','%SQL_SQL92_VALUE_EXPRESSIONS','%SQL_SQLSTATE_SIZE','%SQL_SQL_CONFORMANCE','%SQL_SQ_COMPARISON','%SQL_SQ_CORRELATED_SUBQUERIES','%SQL_SQ_EXISTS',
+ '%SQL_SQ_IN','%SQL_SQ_QUANTIFIED','%SQL_SRJO_CORRESPONDING_CLAUSE','%SQL_SRJO_CROSS_JOIN','%SQL_SRJO_EXCEPT_JOIN','%SQL_SRJO_FULL_OUTER_JOIN','%SQL_SRJO_INNER_JOIN','%SQL_SRJO_INTERSECT_JOIN',
+ '%SQL_SRJO_LEFT_OUTER_JOIN','%SQL_SRJO_NATURAL_JOIN','%SQL_SRJO_RIGHT_OUTER_JOIN','%SQL_SRJO_UNION_JOIN','%SQL_SRVC_DEFAULT','%SQL_SRVC_NULL','%SQL_SRVC_ROW_SUBQUERY','%SQL_SRVC_VALUE_EXPRESSION',
+ '%SQL_SR_CASCADE','%SQL_SR_DELETE_TABLE','%SQL_SR_GRANT_OPTION_FOR','%SQL_SR_INSERT_COLUMN','%SQL_SR_INSERT_TABLE','%SQL_SR_REFERENCES_COLUMN','%SQL_SR_REFERENCES_TABLE','%SQL_SR_RESTRICT',
+ '%SQL_SR_SELECT_TABLE','%SQL_SR_UPDATE_COLUMN','%SQL_SR_UPDATE_TABLE','%SQL_SR_USAGE_ON_CHARACTER_SET','%SQL_SR_USAGE_ON_COLLATION','%SQL_SR_USAGE_ON_DOMAIN','%SQL_SR_USAGE_ON_TRANSLATION','%SQL_SSF_CONVERT',
+ '%SQL_SSF_LOWER','%SQL_SSF_SUBSTRING','%SQL_SSF_TRANSLATE','%SQL_SSF_TRIM_BOTH','%SQL_SSF_TRIM_LEADING','%SQL_SSF_TRIM_TRAILING','%SQL_SSF_UPPER','%SQL_SS_ADDITIONS',
+ '%SQL_SS_DELETIONS','%SQL_SS_UPDATES','%SQL_STANDARD_CLI_CONFORMANCE','%SQL_STATIC_CURSOR_ATTRIBUTES1','%SQL_STATIC_CURSOR_ATTRIBUTES2','%SQL_STATIC_SENSITIVITY','%SQL_STILL_EXECUTING','%SQL_STRING_FUNCTIONS',
+ '%SQL_SUBQUERIES','%SQL_SUCCESS','%SQL_SUCCESS_WITH_INFO','%SQL_SU_DML_STATEMENTS','%SQL_SU_INDEX_DEFINITION','%SQL_SU_PRIVILEGE_DEFINITION','%SQL_SU_PROCEDURE_INVOCATION','%SQL_SU_TABLE_DEFINITION',
+ '%SQL_SVE_CASE','%SQL_SVE_CAST','%SQL_SVE_COALESCE','%SQL_SVE_NULLIF','%SQL_SYSTEM_FUNCTIONS','%SQL_TABLE_STAT','%SQL_TABLE_TERM','%SQL_TC_ALL',
+ '%SQL_TC_DDL_COMMIT','%SQL_TC_DDL_IGNORE','%SQL_TC_DML','%SQL_TC_NONE','%SQL_TIME','%SQL_TIMEDATE_ADD_INTERVALS','%SQL_TIMEDATE_DIFF_INTERVALS','%SQL_TIMEDATE_FUNCTIONS',
+ '%SQL_TIMESTAMP','%SQL_TIMESTAMP_LEN','%SQL_TIME_LEN','%SQL_TINYINT','%SQL_TRANSACTION_CAPABLE','%SQL_TRANSACTION_ISOLATION_OPTION','%SQL_TRANSACTION_READ_COMMITTED','%SQL_TRANSACTION_READ_UNCOMMITTED',
+ '%SQL_TRANSACTION_REPEATABLE_READ','%SQL_TRANSACTION_SERIALIZABLE','%SQL_TRANSLATE_DLL','%SQL_TRANSLATE_OPTION','%SQL_TRUE','%SQL_TXN_CAPABLE','%SQL_TXN_ISOLATION','%SQL_TXN_ISOLATION_OPTION',
+ '%SQL_TXN_READ_COMMITTED','%SQL_TXN_READ_UNCOMMITTED','%SQL_TXN_REPEATABLE_READ','%SQL_TXN_SERIALIZABLE','%SQL_TYPE_DATE','%SQL_TYPE_NULL','%SQL_TYPE_TIME','%SQL_TYPE_TIMESTAMP',
+ '%SQL_UB_DEFAULT','%SQL_UB_FIXED','%SQL_UB_OFF','%SQL_UB_ON','%SQL_UB_VARIABLE','%SQL_UNBIND','%SQL_UNICODE','%SQL_UNICODE_CHAR',
+ '%SQL_UNICODE_LONGVARCHAR','%SQL_UNICODE_VARCHAR','%SQL_UNION','%SQL_UNION_STATEMENT','%SQL_UNKNOWN_TYPE','%SQL_UNNAMED','%SQL_UNSEARCHABLE','%SQL_UNSIGNED_OFFSET',
+ '%SQL_UNSPECIFIED','%SQL_UPDATE','%SQL_UPDATE_BY_BOOKMARK','%SQL_USER_NAME','%SQL_USE_BOOKMARKS','%SQL_US_UNION','%SQL_US_UNION_ALL','%SQL_U_UNION',
+ '%SQL_U_UNION_ALL','%SQL_VARBINARY','%SQL_VARCHAR','%SQL_XOPEN_CLI_YEAR','%SQL_YEAR','%SQL_YEAR_TO_MONTH','%SRCCOPY','%SS_BITMAP',
+ '%SS_BLACKFRAME','%SS_BLACKRECT','%SS_CENTER','%SS_CENTERIMAGE','%SS_ENDELLIPSIS','%SS_ETCHEDFRAME','%SS_ETCHEDHORZ','%SS_ETCHEDVERT',
+ '%SS_GRAYFRAME','%SS_GRAYRECT','%SS_LEFT','%SS_NOPREFIX','%SS_NOTIFY','%SS_NOWORDWRAP','%SS_PATHELLIPSIS','%SS_RIGHT',
+ '%SS_RIGHTJUST','%SS_SIMPLE','%SS_SUNKEN','%SS_WHITEFRAME','%SS_WHITERECT','%SS_WORDELLIPSIS','%STAT_FILL_FROM_MEMORY','%STAT_FILL_NATURAL',
+ '%STAT_FILL_NATURAL_ERASTONE','%STAT_FILL_NATURAL_EVEN','%STAT_FILL_NATURAL_FIBONACCI','%STAT_FILL_NATURAL_ODD','%STAT_FILL_WITH_NUMBER','%STAT_MINMAX_INDEX','%STAT_MINMAX_VALUE','%STAT_TYPE_BYTE',
+ '%STAT_TYPE_CURRENCY','%STAT_TYPE_DOUBLE','%STAT_TYPE_DWORD','%STAT_TYPE_EXT','%STAT_TYPE_INTEGER','%STAT_TYPE_LONG','%STAT_TYPE_QUAD','%STAT_TYPE_SINGLE',
+ '%STAT_TYPE_WORD','%SWP_ASYNCWINDOWPOS','%SWP_DEFERERASE','%SWP_DRAWFRAME','%SWP_FRAMECHANGED','%SWP_HIDEWINDOW','%SWP_NOACTIVATE','%SWP_NOCOPYBITS',
+ '%SWP_NOMOVE','%SWP_NOOWNERZORDER','%SWP_NOREDRAW','%SWP_NOREPOSITION','%SWP_NOSENDCHANGING','%SWP_NOSIZE','%SWP_NOZORDER','%SWP_SHOWWINDOW',
+ '%SW_FORCEMINIMIZE','%SW_HIDE','%SW_MAXIMIZE','%SW_MINIMIZE','%SW_NORMAL','%SW_RESTORE','%SW_SHOW','%SW_SHOWDEFAULT',
+ '%SW_SHOWMAXIMIZED','%SW_SHOWMINIMIZED','%SW_SHOWMINNOACTIVE','%SW_SHOWNA','%SW_SHOWNOACTIVATE','%SW_SHOWNORMAL','%TBASS_3DALG_DEFAULT','%TBASS_3DALG_FULL',
+ '%TBASS_3DALG_LIGHT','%TBASS_3DALG_OFF','%TBASS_3DMODE_NORMAL','%TBASS_3DMODE_OFF','%TBASS_3DMODE_RELATIVE','%TBASS_ACTIVE_PAUSED','%TBASS_ACTIVE_PLAYING','%TBASS_ACTIVE_STALLED',
+ '%TBASS_ACTIVE_STOPPED','%TBASS_CONFIG_3DALGORITHM','%TBASS_CONFIG_BUFFER','%TBASS_CONFIG_CURVE_PAN','%TBASS_CONFIG_CURVE_VOL','%TBASS_CONFIG_FLOATDSP','%TBASS_CONFIG_GVOL_MUSIC','%TBASS_CONFIG_GVOL_SAMPLE',
+ '%TBASS_CONFIG_GVOL_STREAM','%TBASS_CONFIG_MAXVOL','%TBASS_CONFIG_MP3_CODEC','%TBASS_CONFIG_NET_AGENT','%TBASS_CONFIG_NET_BUFFER','%TBASS_CONFIG_NET_PASSIVE','%TBASS_CONFIG_NET_PREBUF','%TBASS_CONFIG_NET_PROXY',
+ '%TBASS_CONFIG_NET_TIMEOUT','%TBASS_CONFIG_PAUSE_NOPLAY','%TBASS_CONFIG_UPDATEPERIOD','%TBASS_CTYPE_MUSIC_IT','%TBASS_CTYPE_MUSIC_MO3','%TBASS_CTYPE_MUSIC_MOD','%TBASS_CTYPE_MUSIC_MTM','%TBASS_CTYPE_MUSIC_S3M',
+ '%TBASS_CTYPE_MUSIC_XM','%TBASS_CTYPE_RECORD','%TBASS_CTYPE_SAMPLE','%TBASS_CTYPE_STREAM','%TBASS_CTYPE_STREAM_AIFF','%TBASS_CTYPE_STREAM_MP1','%TBASS_CTYPE_STREAM_MP2','%TBASS_CTYPE_STREAM_MP3',
+ '%TBASS_CTYPE_STREAM_OGG','%TBASS_CTYPE_STREAM_WAV','%TBASS_CTYPE_STREAM_WAV_FLOAT','%TBASS_CTYPE_STREAM_WAV_PCM','%TBASS_DATA_AVAILABLE','%TBASS_DATA_FFT1024','%TBASS_DATA_FFT2048','%TBASS_DATA_FFT4096',
+ '%TBASS_DATA_FFT512','%TBASS_DATA_FFT_INDIVIDUAL','%TBASS_DATA_FFT_NOWINDOW','%TBASS_DATA_FLOAT','%TBASS_DEVICE_3D','%TBASS_DEVICE_8BITS','%TBASS_DEVICE_LATENCY','%TBASS_DEVICE_MONO',
+ '%TBASS_DEVICE_NOSPEAKER','%TBASS_DEVICE_SPEAKERS','%TBASS_EAX_ENVIRONMENT_ALLEY','%TBASS_EAX_ENVIRONMENT_ARENA','%TBASS_EAX_ENVIRONMENT_AUDITORIUM','%TBASS_EAX_ENVIRONMENT_BATHROOM','%TBASS_EAX_ENVIRONMENT_CARPETEDHALLWAY','%TBASS_EAX_ENVIRONMENT_CAVE',
+ '%TBASS_EAX_ENVIRONMENT_CITY','%TBASS_EAX_ENVIRONMENT_CONCERTHALL','%TBASS_EAX_ENVIRONMENT_COUNT','%TBASS_EAX_ENVIRONMENT_DIZZY','%TBASS_EAX_ENVIRONMENT_DRUGGED','%TBASS_EAX_ENVIRONMENT_FOREST','%TBASS_EAX_ENVIRONMENT_GENERIC','%TBASS_EAX_ENVIRONMENT_HALLWAY',
+ '%TBASS_EAX_ENVIRONMENT_HANGAR','%TBASS_EAX_ENVIRONMENT_LIVINGROOM','%TBASS_EAX_ENVIRONMENT_MOUNTAINS','%TBASS_EAX_ENVIRONMENT_PADDEDCELL','%TBASS_EAX_ENVIRONMENT_PARKINGLOT','%TBASS_EAX_ENVIRONMENT_PLAIN','%TBASS_EAX_ENVIRONMENT_PSYCHOTIC','%TBASS_EAX_ENVIRONMENT_QUARRY',
+ '%TBASS_EAX_ENVIRONMENT_ROOM','%TBASS_EAX_ENVIRONMENT_SEWERPIPE','%TBASS_EAX_ENVIRONMENT_STONECORRIDOR','%TBASS_EAX_ENVIRONMENT_STONEROOM','%TBASS_EAX_ENVIRONMENT_UNDERWATER','%TBASS_ERROR_ALREADY','%TBASS_ERROR_BUFLOST','%TBASS_ERROR_CODEC',
+ '%TBASS_ERROR_CREATE','%TBASS_ERROR_DECODE','%TBASS_ERROR_DEVICE','%TBASS_ERROR_DRIVER','%TBASS_ERROR_DX','%TBASS_ERROR_EMPTY','%TBASS_ERROR_FILEFORM','%TBASS_ERROR_FILEOPEN',
+ '%TBASS_ERROR_FORMAT','%TBASS_ERROR_FREQ','%TBASS_ERROR_HANDLE','%TBASS_ERROR_ILLPARAM','%TBASS_ERROR_ILLTYPE','%TBASS_ERROR_INIT','%TBASS_ERROR_MEM','%TBASS_ERROR_NO3D',
+ '%TBASS_ERROR_NOCHAN','%TBASS_ERROR_NOEAX','%TBASS_ERROR_NOFX','%TBASS_ERROR_NOHW','%TBASS_ERROR_NONET','%TBASS_ERROR_NOPAUSE','%TBASS_ERROR_NOPLAY','%TBASS_ERROR_NOTAVAIL',
+ '%TBASS_ERROR_NOTFILE','%TBASS_ERROR_PLAYING','%TBASS_ERROR_POSITION','%TBASS_ERROR_SPEAKER','%TBASS_ERROR_START','%TBASS_ERROR_TIMEOUT','%TBASS_ERROR_UNKNOWN','%TBASS_ERROR_VERSION',
+ '%TBASS_FALSE','%TBASS_FILEPOS_CURRENT','%TBASS_FILEPOS_DECODE','%TBASS_FILEPOS_DOWNLOAD','%TBASS_FILEPOS_END','%TBASS_FILEPOS_START','%TBASS_FILE_CLOSE','%TBASS_FILE_LEN',
+ '%TBASS_FILE_READ','%TBASS_FILE_SEEK','%TBASS_FX_CHORUS','%TBASS_FX_COMPRESSOR','%TBASS_FX_DISTORTION','%TBASS_FX_ECHO','%TBASS_FX_FLANGER','%TBASS_FX_GARGLE',
+ '%TBASS_FX_I3DL2REVERB','%TBASS_FX_PARAMEQ','%TBASS_FX_PHASE_180','%TBASS_FX_PHASE_90','%TBASS_FX_PHASE_NEG_180','%TBASS_FX_PHASE_NEG_90','%TBASS_FX_PHASE_ZERO','%TBASS_FX_REVERB',
+ '%TBASS_INPUT_LEVEL','%TBASS_INPUT_OFF','%TBASS_INPUT_ON','%TBASS_INPUT_TYPE_ANALOG','%TBASS_INPUT_TYPE_AUX','%TBASS_INPUT_TYPE_CD','%TBASS_INPUT_TYPE_DIGITAL','%TBASS_INPUT_TYPE_LINE',
+ '%TBASS_INPUT_TYPE_MASK','%TBASS_INPUT_TYPE_MIC','%TBASS_INPUT_TYPE_PHONE','%TBASS_INPUT_TYPE_SPEAKER','%TBASS_INPUT_TYPE_SYNTH','%TBASS_INPUT_TYPE_UNDEF','%TBASS_INPUT_TYPE_WAVE','%TBASS_MP3_SETPOS',
+ '%TBASS_MUSIC_3D','%TBASS_MUSIC_ATTRIB_AMPLIFY','%TBASS_MUSIC_ATTRIB_BPM','%TBASS_MUSIC_ATTRIB_PANSEP','%TBASS_MUSIC_ATTRIB_PSCALER','%TBASS_MUSIC_ATTRIB_SPEED','%TBASS_MUSIC_ATTRIB_VOL_CHAN','%TBASS_MUSIC_ATTRIB_VOL_GLOBAL',
+ '%TBASS_MUSIC_ATTRIB_VOL_INST','%TBASS_MUSIC_AUTOFREE','%TBASS_MUSIC_CALCLEN','%TBASS_MUSIC_DECODE','%TBASS_MUSIC_FLOAT','%TBASS_MUSIC_FT2MOD','%TBASS_MUSIC_FX','%TBASS_MUSIC_LOOP',
+ '%TBASS_MUSIC_MONO','%TBASS_MUSIC_NONINTER','%TBASS_MUSIC_NOSAMPLE','%TBASS_MUSIC_POSRESET','%TBASS_MUSIC_POSRESETEX','%TBASS_MUSIC_PRESCAN','%TBASS_MUSIC_PT1MOD','%TBASS_MUSIC_RAMP',
+ '%TBASS_MUSIC_RAMPS','%TBASS_MUSIC_STOPBACK','%TBASS_MUSIC_SURROUND','%TBASS_MUSIC_SURROUND2','%TBASS_OBJECT_DS','%TBASS_OBJECT_DS3DL','%TBASS_OK','%TBASS_RECORD_PAUSE',
+ '%TBASS_SAMPLE_3D','%TBASS_SAMPLE_8BITS','%TBASS_SAMPLE_FLOAT','%TBASS_SAMPLE_FX','%TBASS_SAMPLE_LOOP','%TBASS_SAMPLE_MONO','%TBASS_SAMPLE_MUTEMAX','%TBASS_SAMPLE_OVER_DIST',
+ '%TBASS_SAMPLE_OVER_POS','%TBASS_SAMPLE_OVER_VOL','%TBASS_SAMPLE_SOFTWARE','%TBASS_SAMPLE_VAM','%TBASS_SLIDE_FREQ','%TBASS_SLIDE_PAN','%TBASS_SLIDE_VOL','%TBASS_SPEAKER_CENLFE',
+ '%TBASS_SPEAKER_CENTER','%TBASS_SPEAKER_FRONT','%TBASS_SPEAKER_FRONTLEFT','%TBASS_SPEAKER_FRONTRIGHT','%TBASS_SPEAKER_LEFT','%TBASS_SPEAKER_LFE','%TBASS_SPEAKER_REAR','%TBASS_SPEAKER_REAR2',
+ '%TBASS_SPEAKER_REAR2LEFT','%TBASS_SPEAKER_REAR2RIGHT','%TBASS_SPEAKER_REARLEFT','%TBASS_SPEAKER_REARRIGHT','%TBASS_SPEAKER_RIGHT','%TBASS_STREAMPROC_END','%TBASS_STREAM_AUTOFREE','%TBASS_STREAM_BLOCK',
+ '%TBASS_STREAM_DECODE','%TBASS_STREAM_PRESCAN','%TBASS_STREAM_RESTRATE','%TBASS_STREAM_STATUS','%TBASS_SYNC_DOWNLOAD','%TBASS_SYNC_END','%TBASS_SYNC_FREE','%TBASS_SYNC_MESSAGE',
+ '%TBASS_SYNC_META','%TBASS_SYNC_MIXTIME','%TBASS_SYNC_MUSICFX','%TBASS_SYNC_MUSICINST','%TBASS_SYNC_MUSICPOS','%TBASS_SYNC_ONETIME','%TBASS_SYNC_POS','%TBASS_SYNC_SLIDE',
+ '%TBASS_SYNC_STALL','%TBASS_TAG_HTTP','%TBASS_TAG_ICY','%TBASS_TAG_ID3','%TBASS_TAG_ID3V2','%TBASS_TAG_META','%TBASS_TAG_MUSIC_INST','%TBASS_TAG_MUSIC_MESSAGE',
+ '%TBASS_TAG_MUSIC_NAME','%TBASS_TAG_MUSIC_SAMPLE','%TBASS_TAG_OGG','%TBASS_TAG_RIFF_INFO','%TBASS_TAG_VENDOR','%TBASS_TRUE','%TBASS_UNICODE','%TBASS_VAM_HARDWARE',
+ '%TBASS_VAM_SOFTWARE','%TBASS_VAM_TERM_DIST','%TBASS_VAM_TERM_PRIO','%TBASS_VAM_TERM_TIME','%TBASS_VERSION','%TBCD_CHANNEL','%TBCD_THUMB','%TBCD_TICS',
+ '%TBGL_ALIGN_CENTER','%TBGL_ALIGN_CENTER_CENTER','%TBGL_ALIGN_CENTER_DOWN','%TBGL_ALIGN_CENTER_UP','%TBGL_ALIGN_LEFT','%TBGL_ALIGN_LEFT_CENTER','%TBGL_ALIGN_LEFT_DOWN','%TBGL_ALIGN_LEFT_UP',
+ '%TBGL_ALIGN_RIGHT','%TBGL_ALIGN_RIGHT_CENTER','%TBGL_ALIGN_RIGHT_DOWN','%TBGL_ALIGN_RIGHT_UP','%TBGL_ALWAYS','%TBGL_EQUAL','%TBGL_ERROR_FILE','%TBGL_ERROR_MSGBOX',
+ '%TBGL_ERROR_NONE','%TBGL_GEQUAL','%TBGL_GREATER','%TBGL_LEQUAL','%TBGL_LESS','%TBGL_LIGHT_AMBIENT','%TBGL_LIGHT_CONSTANT_ATTENUATION','%TBGL_LIGHT_DIFFUSE',
+ '%TBGL_LIGHT_LINEAR_ATTENUATION','%TBGL_LIGHT_POSITION','%TBGL_LIGHT_QUADRATIC_ATTENUATION','%TBGL_LIGHT_SPECULAR','%TBGL_LIGHT_SPOT_CUTOFF','%TBGL_LIGHT_SPOT_DIRECTION','%TBGL_LIGHT_SPOT_EXPONENT','%TBGL_M15B',
+ '%TBGL_M15G','%TBGL_M15LAYER','%TBGL_M15PSTOP','%TBGL_M15R','%TBGL_M15TEXN','%TBGL_M15TEXX','%TBGL_M15TEXY','%TBGL_M15X',
+ '%TBGL_M15Y','%TBGL_M15Z','%TBGL_NEVER','%TBGL_NORMAL_NONE','%TBGL_NORMAL_PRECISE','%TBGL_NORMAL_SMOOTH','%TBGL_NOTEQUAL','%TBGL_OBJ_CUBE',
+ '%TBGL_OBJ_CUBE3','%TBGL_OBJ_CYLINDER','%TBGL_OBJ_SPHERE','%TBGL_PINFO_RGB','%TBGL_PINFO_XYZ','%TBGL_TEX_LINEAR','%TBGL_TEX_MIPMAP','%TBGL_TEX_NEAREST',
+ '%TBM_CLEARSEL','%TBM_CLEARTICS','%TBM_GETBUDDY','%TBM_GETCHANNELRECT','%TBM_GETLINESIZE','%TBM_GETNUMTICS','%TBM_GETPAGESIZE','%TBM_GETPOS',
+ '%TBM_GETPTICS','%TBM_GETRANGEMAX','%TBM_GETRANGEMIN','%TBM_GETSELEND','%TBM_GETSELSTART','%TBM_GETTHUMBLENGTH','%TBM_GETTHUMBRECT','%TBM_GETTIC',
+ '%TBM_GETTICPOS','%TBM_GETTOOLTIPS','%TBM_GETUNICODEFORMAT','%TBM_SETBUDDY','%TBM_SETLINESIZE','%TBM_SETPAGESIZE','%TBM_SETPOS','%TBM_SETRANGE',
+ '%TBM_SETRANGEMAX','%TBM_SETRANGEMIN','%TBM_SETSEL','%TBM_SETSELEND','%TBM_SETSELSTART','%TBM_SETTHUMBLENGTH','%TBM_SETTIC','%TBM_SETTICFREQ',
+ '%TBM_SETTIPSIDE','%TBM_SETTOOLTIPS','%TBM_SETUNICODEFORMAT','%TBS_AUTOTICKS','%TBS_BOTH','%TBS_BOTTOM','%TBS_DOWNISLEFT','%TBS_ENABLESELRANGE',
+ '%TBS_FIXEDLENGTH','%TBS_HORZ','%TBS_LEFT','%TBS_NOTHUMB','%TBS_NOTICKS','%TBS_REVERSED','%TBS_RIGHT','%TBS_TOOLTIPS',
+ '%TBS_TOP','%TBS_VERT','%TBTS_BOTTOM','%TBTS_LEFT','%TBTS_RIGHT','%TBTS_TOP','%TB_%VT_BSTR','%TB_%VT_CY',
+ '%TB_%VT_DATE','%TB_%VT_EMPTY','%TB_%VT_I2','%TB_%VT_I4','%TB_%VT_NULL','%TB_%VT_R4','%TB_%VT_R8','%TB_BOTTOM',
+ '%TB_CLASS_E_NOAGGREGATION','%TB_CO_E_CLASSSTRING','%TB_DISPATCH_METHOD','%TB_DISPATCH_PROPERTYGET','%TB_DISPATCH_PROPERTYPUT','%TB_DISPATCH_PROPERTYPUTREF','%TB_ENDTRACK','%TB_E_INVALIDARG',
+ '%TB_E_NOINTERFACE','%TB_E_OUTOFMEMORY','%TB_IMGCTX_ACTUALSIZE','%TB_IMGCTX_AUTOSIZE','%TB_IMGCTX_FITTOHEIGHT','%TB_IMGCTX_FITTOWIDTH','%TB_IMGCTX_STRETCH','%TB_LINEDOWN',
+ '%TB_LINEUP','%TB_MK_E_CONNECTMANUALLY','%TB_MK_E_EXCEEDEDDEADLINE','%TB_MK_E_INTERMEDIATEINTERFACENOTSUPPORTED','%TB_MK_E_NOOBJECT','%TB_MK_E_SYNTAX','%TB_PAGEDOWN','%TB_PAGEUP',
+ '%TB_REGDB_E_CLASSNOTREG','%TB_REGDB_E_WRITEREGDB','%TB_SIZEOF_TBVARIANT','%TB_S_FALSE','%TB_S_OK','%TB_THUMBPOSITION','%TB_THUMBTRACK','%TB_TOP',
+ '%TCM_FIRST','%TCM_GETCURSEL','%TCN_FOCUSCHANGE','%TCN_GETOBJECT','%TCN_SELCHANGE','%TCN_SELCHANGING','%TCS_BOTTOM','%TCS_BUTTONS',
+ '%TCS_EX_FLATSEPARATORS','%TCS_EX_REGISTERDROP','%TCS_FIXEDWIDTH','%TCS_FLATBUTTONS','%TCS_FOCUSNEVER','%TCS_FOCUSONBUTTONDOWN','%TCS_FORCEICONLEFT','%TCS_FORCELABELLEFT',
+ '%TCS_HOTTRACK','%TCS_MULTILINE','%TCS_MULTISELECT','%TCS_OWNERDRAWFIXED','%TCS_RAGGEDRIGHT','%TCS_RIGHT','%TCS_RIGHTJUSTIFY','%TCS_SCROLLOPPOSITE',
+ '%TCS_SINGLELINE','%TCS_TABS','%TCS_TOOLTIPS','%TCS_VERTICAL','%TM_PLAINTEXT','%TM_RICHTEXT','%TOKENIZER_DEFAULT_ALPHA','%TOKENIZER_DEFAULT_DELIM',
+ '%TOKENIZER_DEFAULT_DQUOTE','%TOKENIZER_DEFAULT_NEWLINE','%TOKENIZER_DEFAULT_NUMERIC','%TOKENIZER_DEFAULT_SPACE','%TOKENIZER_DELIMITER','%TOKENIZER_EOL','%TOKENIZER_ERROR','%TOKENIZER_FINISHED',
+ '%TOKENIZER_NUMBER','%TOKENIZER_QUOTE','%TOKENIZER_STRING','%TOKENIZER_UNDEFTOK','%TRUE','%TV_FIRST','%UDM_GETACCEL','%UDM_GETBASE',
+ '%UDM_GETBUDDY','%UDM_GETPOS','%UDM_GETPOS32','%UDM_GETRANGE','%UDM_GETRANGE32','%UDM_GETUNICODEFORMAT','%UDM_SETACCEL','%UDM_SETBASE',
+ '%UDM_SETBUDDY','%UDM_SETPOS','%UDM_SETPOS32','%UDM_SETRANGE','%UDM_SETRANGE32','%UDM_SETUNICODEFORMAT','%UDS_ALIGNLEFT','%UDS_ALIGNRIGHT',
+ '%UDS_ARROWKEYS','%UDS_AUTOBUDDY','%UDS_HORZ','%UDS_HOTTRACK','%UDS_NOTHOUSANDS','%UDS_SETBUDDYINT','%UDS_WRAP','%UD_MAXVAL',
+ '%UD_MINVAL','%VK_0','%VK_1','%VK_2','%VK_3','%VK_4','%VK_5','%VK_6',
+ '%VK_7','%VK_8','%VK_9','%VK_A','%VK_ACCEPT','%VK_ADD','%VK_APPS','%VK_B',
+ '%VK_BACK','%VK_C','%VK_CANCEL','%VK_CAPITAL','%VK_CLEAR','%VK_CONTROL','%VK_CONVERT','%VK_D',
+ '%VK_DECIMAL','%VK_DELETE','%VK_DIVIDE','%VK_DOWN','%VK_E','%VK_END','%VK_ESCAPE','%VK_EXECUTE',
+ '%VK_F','%VK_F1','%VK_F10','%VK_F11','%VK_F12','%VK_F13','%VK_F14','%VK_F15',
+ '%VK_F16','%VK_F17','%VK_F18','%VK_F19','%VK_F2','%VK_F20','%VK_F21','%VK_F22',
+ '%VK_F23','%VK_F24','%VK_F3','%VK_F4','%VK_F5','%VK_F6','%VK_F7','%VK_F8',
+ '%VK_F9','%VK_FINAL','%VK_G','%VK_H','%VK_HANGEUL','%VK_HANGUL','%VK_HANJA','%VK_HELP',
+ '%VK_HOME','%VK_I','%VK_INSERT','%VK_J','%VK_JUNJA','%VK_K','%VK_KANA','%VK_KANJI',
+ '%VK_L','%VK_LBUTTON','%VK_LEFT','%VK_LINEFEED','%VK_LWIN','%VK_M','%VK_MBUTTON','%VK_MENU',
+ '%VK_MODECHANGE','%VK_MULTIPLY','%VK_N','%VK_NEXT','%VK_NONCONVERT','%VK_NUMLOCK','%VK_NUMPAD0','%VK_NUMPAD1',
+ '%VK_NUMPAD2','%VK_NUMPAD3','%VK_NUMPAD4','%VK_NUMPAD5','%VK_NUMPAD6','%VK_NUMPAD7','%VK_NUMPAD8','%VK_NUMPAD9',
+ '%VK_O','%VK_P','%VK_PAUSE','%VK_PGDN','%VK_PGUP','%VK_PRINT','%VK_PRIOR','%VK_Q',
+ '%VK_R','%VK_RBUTTON','%VK_RETURN','%VK_RIGHT','%VK_RWIN','%VK_S','%VK_SCROLL','%VK_SELECT',
+ '%VK_SEPARATOR','%VK_SHIFT','%VK_SLEEP','%VK_SNAPSHOT','%VK_SPACE','%VK_SUBTRACT','%VK_T','%VK_TAB',
+ '%VK_U','%VK_UP','%VK_V','%VK_W','%VK_X','%VK_XBUTTON1','%VK_XBUTTON2','%VK_Y',
+ '%VK_Z','%VT_ARRAY','%VT_BLOB','%VT_BLOB_OBJECT','%VT_BOOL','%VT_BSTR','%VT_BYREF','%VT_CARRAY',
+ '%VT_CF','%VT_CLSID','%VT_CY','%VT_DATE','%VT_DISPATCH','%VT_EMPTY','%VT_ERROR','%VT_FILETIME',
+ '%VT_HRESULT','%VT_I1','%VT_I2','%VT_I4','%VT_I8','%VT_INT','%VT_LPSTR','%VT_LPWSTR',
+ '%VT_NULL','%VT_PTR','%VT_R4','%VT_R8','%VT_RECORD','%VT_RESERVED','%VT_SAFEARRAY','%VT_STORAGE',
+ '%VT_STORED_OBJECT','%VT_STREAM','%VT_STREAMED_OBJECT','%VT_UI1','%VT_UI2','%VT_UI4','%VT_UI8','%VT_UINT',
+ '%VT_UNKNOWN','%VT_USERDEFINED','%VT_VARIANT','%VT_VECTOR','%VT_VOID','%WAVE_FORMAT_1M08','%WAVE_FORMAT_1M16','%WAVE_FORMAT_1S08',
+ '%WAVE_FORMAT_1S16','%WAVE_FORMAT_2M08','%WAVE_FORMAT_2M16','%WAVE_FORMAT_2S08','%WAVE_FORMAT_2S16','%WAVE_FORMAT_4M08','%WAVE_FORMAT_4M16','%WAVE_FORMAT_4S08',
+ '%WAVE_FORMAT_4S16','%WBF_CUSTOM','%WBF_LEVEL1','%WBF_LEVEL2','%WBF_OVERFLOW','%WBF_WORDBREAK','%WBF_WORDWRAP','%WHITE',
+ '%WIN_FINDTITLECONTAIN','%WIN_FINDTITLEEND','%WIN_FINDTITLEEQUAL','%WIN_FINDTITLESTART','%WM_ACTIVATE','%WM_ACTIVATEAPP','%WM_CAPTURECHANGED','%WM_CHAR',
+ '%WM_CLOSE','%WM_COMMAND','%WM_DESTROY','%WM_DROPFILES','%WM_ERASEBKGND','%WM_GETTEXTLENGTH','%WM_HOTKEY','%WM_HSCROLL',
+ '%WM_IDLE','%WM_INITDIALOG','%WM_KEYDOWN','%WM_KEYUP','%WM_KILLFOCUS','%WM_LBUTTONDBLCLK','%WM_LBUTTONDOWN','%WM_LBUTTONUP',
+ '%WM_MBUTTONDBLCLK','%WM_MBUTTONDOWN','%WM_MBUTTONUP','%WM_MOUSEFIRST','%WM_MOUSEMOVE','%WM_MOUSEWHEEL','%WM_MOVE','%WM_MOVING',
+ '%WM_NCLBUTTONDOWN','%WM_NCRBUTTONDOWN','%WM_NEXTDLGCTL','%WM_NOTIFY','%WM_PAINT','%WM_QUIT','%WM_RBUTTONDBLCLK','%WM_RBUTTONDOWN',
+ '%WM_RBUTTONUP','%WM_SETFOCUS','%WM_SETFONT','%WM_SETTEXT','%WM_SIZE','%WM_SIZING','%WM_SYSCOMMAND','%WM_TIMER',
+ '%WM_USER','%WM_VSCROLL','%WS_BORDER','%WS_CAPTION','%WS_CHILD','%WS_CLIPCHILDREN','%WS_CLIPSIBLINGS','%WS_DISABLED',
+ '%WS_DLGFRAME','%WS_EX_ACCEPTFILES','%WS_EX_APPWINDOW','%WS_EX_CLIENTEDGE','%WS_EX_CONTEXTHELP','%WS_EX_CONTROLPARENT','%WS_EX_LAYERED','%WS_EX_LEFT',
+ '%WS_EX_LEFTSCROLLBAR','%WS_EX_LTRREADING','%WS_EX_MDICHILD','%WS_EX_NOPARENTNOTIFY','%WS_EX_OVERLAPPEDWINDOW','%WS_EX_PALETTEWINDOW','%WS_EX_RIGHT','%WS_EX_RIGHTSCROLLBAR',
+ '%WS_EX_RTLREADING','%WS_EX_STATICEDGE','%WS_EX_TOOLWINDOW','%WS_EX_TOPMOST','%WS_EX_TRANSPARENT','%WS_EX_WINDOWEDGE','%WS_GROUP','%WS_HSCROLL',
+ '%WS_ICONIC','%WS_MAXIMIZE','%WS_MAXIMIZEBOX','%WS_MINIMIZE','%WS_MINIMIZEBOX','%WS_OVERLAPPEDWINDOW','%WS_POPUP','%WS_POPUPWINDOW',
+ '%WS_SYSMENU','%WS_TABSTOP','%WS_THICKFRAME','%WS_VISIBLE','%WS_VSCROLL','%YELLOW','%ZERO','CRLF',
+ 'FALSE','M_E','M_PI','NULL','TAB','TRUE'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000FF; font-weight: bold;',
+ 2 => 'color: #993333; font-style: italic; font-weight: bold;',
+ 3 => 'color: #000066;',
+ 4 => 'color: #993333;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008000;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #333333;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #800080;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #CC0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #66cc66;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #333333;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '_'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/tsql.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/tsql.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/tsql.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,382 +1,382 @@
-<?php
-/*************************************************************************************
- * tsql.php
- * --------
- * Author: Duncan Lock (dunc at dflock.co.uk)
- * Copyright: (c) 2006 Duncan Lock (http://dflock.co.uk/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2005/11/22
- *
- * T-SQL language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/01/23 (1.0.0)
- * - First Release
- *
- * TODO (updated 2006/01/23)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'T-SQL',
- 'COMMENT_SINGLE' => array(1 => '--'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array(
- /*
- This will be highlighted in blue
- */
-
- // Datatypes
- 'bigint', 'int', 'smallint', 'tinyint', 'bit', 'decimal', 'numeric', 'money',
- 'smallmoney', 'float', 'real', 'datetime', 'smalldatetime', 'char', 'varchar',
- 'text', 'nchar', 'nvarchar', 'ntext', 'binary', 'varbinary', 'image', 'cursor',
- 'sql_variant', 'table', 'timestamp', 'uniqueidentifier',
-
- // Keywords
- 'ABSOLUTE', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 'AGGREGATE', 'ALIAS', 'ALLOCATE', 'ALTER', 'ARE', 'ARRAY', 'AS',
- 'ASC', 'ASSERTION', 'AT', 'AUTHORIZATION', 'BACKUP', 'BEFORE', 'BEGIN', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'BOTH', 'BREADTH',
- 'BREAK', 'BROWSE', 'BULK', 'BY', 'CALL', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CHAR', 'CHARACTER', 'CHECK', 'CHECKPOINT',
- 'CLASS', 'CLOB', 'CLOSE', 'CLUSTERED', 'COALESCE', 'COLLATE', 'COLLATION', 'COLUMN', 'COMMIT', 'COMPLETION', 'COMPUTE', 'CONNECT',
- 'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 'CONSTRUCTOR', 'CONTAINS', 'CONTAINSTABLE', 'CONTINUE', 'CONVERT', 'CORRESPONDING', 'CREATE',
- 'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH', 'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
- 'CURSOR', 'CYCLE', 'DATA', 'DATABASE', 'DATE', 'DAY', 'DBCC', 'DEALLOCATE', 'DEC', 'DECIMAL', 'DECLARE', 'DEFAULT', 'DEFERRABLE',
- 'DEFERRED', 'DELETE', 'DENY', 'DEPTH', 'DEREF', 'DESC', 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR', 'DETERMINISTIC',
- 'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISK', 'DISTINCT', 'DISTRIBUTED', 'DOMAIN', 'DOUBLE', 'DROP', 'DUMMY', 'DUMP', 'DYNAMIC',
- 'EACH', 'ELSE', 'END', 'END-EXEC', 'EQUALS', 'ERRLVL', 'ESCAPE', 'EVERY', 'EXCEPT', 'EXCEPTION', 'EXEC', 'EXECUTE', 'EXIT',
- 'EXTERNAL', 'FALSE', 'FETCH', 'FILE', 'FILLFACTOR', 'FIRST', 'FLOAT', 'FOR', 'FOREIGN', 'FOUND', 'FREE', 'FREETEXT', 'FREETEXTTABLE',
- 'FROM', 'FULL', 'FUNCTION', 'GENERAL', 'GET', 'GLOBAL', 'GOTO', 'GRANT', 'GROUP', 'GROUPING', 'HAVING', 'HOLDLOCK', 'HOST', 'HOUR',
- 'IDENTITY', 'IDENTITY_INSERT', 'IDENTITYCOL', 'IF', 'IGNORE', 'IMMEDIATE', 'INDEX', 'INDICATOR', 'INITIALIZE', 'INITIALLY',
- 'INNER', 'INOUT', 'INPUT', 'INSERT', 'INT', 'INTEGER', 'INTERSECT', 'INTERVAL', 'INTO', 'IS', 'ISOLATION', 'ITERATE', 'KEY',
- 'KILL', 'LANGUAGE', 'LARGE', 'LAST', 'LATERAL', 'LEADING', 'LEFT', 'LESS', 'LEVEL', 'LIMIT', 'LINENO', 'LOAD', 'LOCAL',
- 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATOR', 'MAP', 'MATCH', 'MINUTE', 'MODIFIES', 'MODIFY', 'MODULE', 'MONTH', 'NAMES', 'NATIONAL',
- 'NATURAL', 'NCHAR', 'NCLOB', 'NEW', 'NEXT', 'NO', 'NOCHECK', 'NONCLUSTERED', 'NONE', 'NULLIF', 'NUMERIC', 'OBJECT', 'OF',
- 'OFF', 'OFFSETS', 'OLD', 'ON', 'ONLY', 'OPEN', 'OPENDATASOURCE', 'OPENQUERY', 'OPENROWSET', 'OPENXML', 'OPERATION', 'OPTION',
- 'ORDER', 'ORDINALITY', 'OUT', 'OUTPUT', 'OVER', 'PAD', 'PARAMETER', 'PARAMETERS', 'PARTIAL', 'PATH', 'PERCENT', 'PLAN',
- 'POSTFIX', 'PRECISION', 'PREFIX', 'PREORDER', 'PREPARE', 'PRESERVE', 'PRIMARY', 'PRINT', 'PRIOR', 'PRIVILEGES', 'PROC', 'PROCEDURE',
- 'PUBLIC', 'RAISERROR', 'READ', 'READS', 'READTEXT', 'REAL', 'RECONFIGURE', 'RECURSIVE', 'REF', 'REFERENCES', 'REFERENCING', 'RELATIVE',
- 'REPLICATION', 'RESTORE', 'RESTRICT', 'RESULT', 'RETURN', 'RETURNS', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUTINE', 'ROW',
- 'ROWGUIDCOL', 'ROWS', 'RULE', 'SAVE', 'SAVEPOINT', 'SCHEMA', 'SCOPE', 'SCROLL', 'SEARCH', 'SECOND', 'SECTION', 'SELECT',
- 'SEQUENCE', 'SESSION', 'SESSION_USER', 'SET', 'SETS', 'SETUSER', 'SHUTDOWN', 'SIZE', 'SMALLINT', 'SPACE', 'SPECIFIC',
- 'SPECIFICTYPE', 'SQL', 'SQLEXCEPTION', 'SQLSTATE', 'SQLWARNING', 'START', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 'STRUCTURE',
- 'SYSTEM_USER', 'TABLE', 'TEMPORARY', 'TERMINATE', 'TEXTSIZE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR', 'TIMEZONE_MINUTE',
- 'TO', 'TOP', 'TRAILING', 'TRAN', 'TRANSACTION', 'TRANSLATION', 'TREAT', 'TRIGGER', 'TRUE', 'TRUNCATE', 'TSEQUAL', 'UNDER', 'UNION',
- 'UNIQUE', 'UNKNOWN', 'UNNEST', 'UPDATE', 'UPDATETEXT', 'USAGE', 'USE', 'USER', 'USING', 'VALUE', 'VALUES', 'VARCHAR', 'VARIABLE',
- 'VARYING', 'VIEW', 'WAITFOR', 'WHEN', 'WHENEVER', 'WHERE', 'WHILE', 'WITH', 'WITHOUT', 'WORK', 'WRITE', 'WRITETEXT', 'YEAR', 'ZONE',
- 'UNCOMMITTED', 'NOCOUNT',
- ),
- 2 => array(
- /*
- Built-in functions
- Highlighted in pink.
- */
-
- //Configuration Functions
- '@@DATEFIRST','@@OPTIONS','@@DBTS','@@REMSERVER','@@LANGID','@@SERVERNAME',
- '@@LANGUAGE','@@SERVICENAME','@@LOCK_TIMEOUT','@@SPID','@@MAX_CONNECTIONS','@@TEXTSIZE',
- '@@MAX_PRECISION','@@VERSION','@@NESTLEVEL',
-
- //Cursor Functions
- '@@CURSOR_ROWS','@@FETCH_STATUS',
-
- //Date and Time Functions
- 'DATEADD','DATEDIFF','DATENAME','DATEPART','DAY','GETDATE','GETUTCDATE','MONTH','YEAR',
-
- //Mathematical Functions
- 'ABS','DEGREES','RAND','ACOS','EXP','ROUND','ASIN','FLOOR','SIGN',
- 'ATAN','LOG','SIN','ATN2','LOG10','SQUARE','CEILING','PI','SQRT','COS',
- 'POWER','TAN','COT','RADIANS',
-
- //Meta Data Functions
- 'COL_LENGTH','fn_listextendedproperty','COL_NAME','FULLTEXTCATALOGPROPERTY',
- 'COLUMNPROPERTY','FULLTEXTSERVICEPROPERTY','DATABASEPROPERTY','INDEX_COL',
- 'DATABASEPROPERTYEX','INDEXKEY_PROPERTY','DB_ID','INDEXPROPERTY','DB_NAME',
- 'OBJECT_ID','FILE_ID','OBJECT_NAME','FILE_NAME','OBJECTPROPERTY','FILEGROUP_ID',
- '@@PROCID','FILEGROUP_NAME','SQL_VARIANT_PROPERTY','FILEGROUPPROPERTY',
- 'TYPEPROPERTY','FILEPROPERTY',
-
- //Security Functions
- 'fn_trace_geteventinfo','IS_SRVROLEMEMBER','fn_trace_getfilterinfo','SUSER_SID',
- 'fn_trace_getinfo','SUSER_SNAME','fn_trace_gettable','USER_ID','HAS_DBACCESS',
- 'IS_MEMBER',
-
- //String Functions
- 'ASCII','NCHAR','SOUNDEX','CHAR','PATINDEX','SPACE','CHARINDEX',
- 'REPLACE','STR','DIFFERENCE','QUOTENAME','STUFF','LEFT','REPLICATE',
- 'SUBSTRING','LEN','REVERSE','UNICODE','LOWER','RIGHT','UPPER','LTRIM',
- 'RTRIM',
-
- //System Functions
- 'APP_NAME','COLLATIONPROPERTY','@@ERROR','fn_helpcollations',
- 'fn_servershareddrives','fn_virtualfilestats','FORMATMESSAGE',
- 'GETANSINULL','HOST_ID','HOST_NAME','IDENT_CURRENT','IDENT_INCR',
- 'IDENT_SEED','@@IDENTITY','ISDATE','ISNUMERIC','PARSENAME','PERMISSIONS',
- '@@ROWCOUNT','ROWCOUNT_BIG','SCOPE_IDENTITY','SERVERPROPERTY','SESSIONPROPERTY',
- 'STATS_DATE','@@TRANCOUNT','USER_NAME',
-
- //System Statistical Functions
- '@@CONNECTIONS','@@PACK_RECEIVED','@@CPU_BUSY','@@PACK_SENT',
- 'fn_virtualfilestats','@@TIMETICKS','@@IDLE','@@TOTAL_ERRORS','@@IO_BUSY',
- '@@TOTAL_READ','@@PACKET_ERRORS','@@TOTAL_WRITE',
-
- //Text and Image Functions
- 'TEXTPTR','TEXTVALID',
-
- //Aggregate functions
- 'AVG', 'MAX', 'BINARY_CHECKSUM', 'MIN', 'CHECKSUM', 'SUM', 'CHECKSUM_AGG',
- 'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 'GROUPING', 'VARP'
- ),
- 3 => array(
- /*
- System stored procedures
- Higlighted dark brown
- */
-
- //Active Directory Procedures
- 'sp_ActiveDirectory_Obj', 'sp_ActiveDirectory_SCP',
-
- //Catalog Procedures
- 'sp_column_privileges', 'sp_special_columns', 'sp_columns', 'sp_sproc_columns',
- 'sp_databases', 'sp_statistics', 'sp_fkeys', 'sp_stored_procedures', 'sp_pkeys',
- 'sp_table_privileges', 'sp_server_info', 'sp_tables',
-
- //Cursor Procedures
- 'sp_cursor_list', 'sp_describe_cursor_columns', 'sp_describe_cursor', 'sp_describe_cursor_tables',
-
- //Database Maintenance Plan Procedures
- 'sp_add_maintenance_plan', 'sp_delete_maintenance_plan_db', 'sp_add_maintenance_plan_db',
- 'sp_delete_maintenance_plan_job', 'sp_add_maintenance_plan_job', 'sp_help_maintenance_plan',
- 'sp_delete_maintenance_plan',
-
- //Distributed Queries Procedures
- 'sp_addlinkedserver', 'sp_indexes', 'sp_addlinkedsrvlogin', 'sp_linkedservers', 'sp_catalogs',
- 'sp_primarykeys', 'sp_column_privileges_ex', 'sp_serveroption', 'sp_columns_ex',
- 'sp_table_privileges_ex', 'sp_droplinkedsrvlogin', 'sp_tables_ex', 'sp_foreignkeys',
-
- //Full-Text Search Procedures
- 'sp_fulltext_catalog', 'sp_help_fulltext_catalogs_cursor', 'sp_fulltext_column',
- 'sp_help_fulltext_columns', 'sp_fulltext_database', 'sp_help_fulltext_columns_cursor',
- 'sp_fulltext_service', 'sp_help_fulltext_tables', 'sp_fulltext_table',
- 'sp_help_fulltext_tables_cursor', 'sp_help_fulltext_catalogs',
-
- //Log Shipping Procedures
- 'sp_add_log_shipping_database', 'sp_delete_log_shipping_database', 'sp_add_log_shipping_plan',
- 'sp_delete_log_shipping_plan', 'sp_add_log_shipping_plan_database',
- 'sp_delete_log_shipping_plan_database', 'sp_add_log_shipping_primary',
- 'sp_delete_log_shipping_primary', 'sp_add_log_shipping_secondary',
- 'sp_delete_log_shipping_secondary', 'sp_can_tlog_be_applied', 'sp_get_log_shipping_monitor_info',
- 'sp_change_monitor_role', 'sp_remove_log_shipping_monitor', 'sp_change_primary_role',
- 'sp_resolve_logins', 'sp_change_secondary_role', 'sp_update_log_shipping_monitor_info',
- 'sp_create_log_shipping_monitor_account', 'sp_update_log_shipping_plan',
- 'sp_define_log_shipping_monitor', 'sp_update_log_shipping_plan_database',
-
- //OLE Automation Extended Stored Procedures
- 'sp_OACreate', 'sp_OAMethod', 'sp_OADestroy', 'sp_OASetProperty', 'sp_OAGetErrorInfo',
- 'sp_OAStop', 'sp_OAGetProperty',
-
- //Replication Procedures
- 'sp_add_agent_parameter', 'sp_enableagentoffload', 'sp_add_agent_profile',
- 'sp_enumcustomresolvers', 'sp_addarticle', 'sp_enumdsn', 'sp_adddistpublisher',
- 'sp_enumfullsubscribers', 'sp_adddistributiondb', 'sp_expired_subscription_cleanup',
- 'sp_adddistributor', 'sp_generatefilters', 'sp_addmergealternatepublisher',
- 'sp_getagentoffloadinfo', 'sp_addmergearticle', 'sp_getmergedeletetype', 'sp_addmergefilter',
- 'sp_get_distributor', 'sp_addmergepublication', 'sp_getqueuedrows', 'sp_addmergepullsubscription',
- 'sp_getsubscriptiondtspackagename', 'sp_addmergepullsubscription_agent', 'sp_grant_publication_access',
- 'sp_addmergesubscription', 'sp_help_agent_default', 'sp_addpublication', 'sp_help_agent_parameter',
- 'sp_addpublication_snapshot', 'sp_help_agent_profile', 'sp_addpublisher70', 'sp_helparticle',
- 'sp_addpullsubscription', 'sp_helparticlecolumns', 'sp_addpullsubscription_agent', 'sp_helparticledts',
- 'sp_addscriptexec', 'sp_helpdistpublisher', 'sp_addsubscriber', 'sp_helpdistributiondb',
- 'sp_addsubscriber_schedule', 'sp_helpdistributor', 'sp_addsubscription', 'sp_helpmergealternatepublisher',
- 'sp_addsynctriggers', 'sp_helpmergearticle', 'sp_addtabletocontents', 'sp_helpmergearticlecolumn',
- 'sp_adjustpublisheridentityrange', 'sp_helpmergearticleconflicts', 'sp_article_validation',
- 'sp_helpmergeconflictrows', 'sp_articlecolumn', 'sp_helpmergedeleteconflictrows', 'sp_articlefilter',
- 'sp_helpmergefilter', 'sp_articlesynctranprocs', 'sp_helpmergepublication', 'sp_articleview',
- 'sp_helpmergepullsubscription', 'sp_attachsubscription', 'sp_helpmergesubscription', 'sp_browsesnapshotfolder',
- 'sp_helppublication', 'sp_browsemergesnapshotfolder', 'sp_help_publication_access', 'sp_browsereplcmds',
- 'sp_helppullsubscription', 'sp_change_agent_parameter', 'sp_helpreplfailovermode', 'sp_change_agent_profile',
- 'sp_helpreplicationdboption', 'sp_changearticle', 'sp_helpreplicationoption', 'sp_changedistpublisher',
- 'sp_helpsubscriberinfo', 'sp_changedistributiondb', 'sp_helpsubscription', 'sp_changedistributor_password',
- 'sp_ivindexhasnullcols', 'sp_changedistributor_property', 'sp_helpsubscription_properties', 'sp_changemergearticle',
- 'sp_link_publication', 'sp_changemergefilter', 'sp_marksubscriptionvalidation', 'sp_changemergepublication',
- 'sp_mergearticlecolumn', 'sp_changemergepullsubscription', 'sp_mergecleanupmetadata', 'sp_changemergesubscription',
- 'sp_mergedummyupdate', 'sp_changepublication', 'sp_mergesubscription_cleanup', 'sp_changesubscriber',
- 'sp_publication_validation', 'sp_changesubscriber_schedule', 'sp_refreshsubscriptions', 'sp_changesubscriptiondtsinfo',
- 'sp_reinitmergepullsubscription', 'sp_changesubstatus', 'sp_reinitmergesubscription', 'sp_change_subscription_properties',
- 'sp_reinitpullsubscription', 'sp_check_for_sync_trigger', 'sp_reinitsubscription', 'sp_copymergesnapshot',
- 'sp_removedbreplication', 'sp_copysnapshot', 'sp_repladdcolumn', 'sp_copysubscription', 'sp_replcmds',
- 'sp_deletemergeconflictrow', 'sp_replcounters', 'sp_disableagentoffload', 'sp_repldone', 'sp_drop_agent_parameter',
- 'sp_repldropcolumn', 'sp_drop_agent_profile', 'sp_replflush', 'sp_droparticle', 'sp_replicationdboption',
- 'sp_dropanonymouseagent', 'sp_replication_agent_checkup', 'sp_dropdistpublisher', 'sp_replqueuemonitor',
- 'sp_dropdistributiondb', 'sp_replsetoriginator', 'sp_dropmergealternatepublisher', 'sp_replshowcmds',
- 'sp_dropdistributor', 'sp_repltrans', 'sp_dropmergearticle', 'sp_restoredbreplication', 'sp_dropmergefilter',
- 'sp_revoke_publication_access', 'sp_scriptsubconflicttable', 'sp_dropmergepublication', 'sp_script_synctran_commands',
- 'sp_dropmergepullsubscription', 'sp_setreplfailovermode', 'sp_showrowreplicainfo', 'sp_dropmergesubscription',
- 'sp_subscription_cleanup', 'sp_droppublication', 'sp_table_validation', 'sp_droppullsubscription',
- 'sp_update_agent_profile', 'sp_dropsubscriber', 'sp_validatemergepublication', 'sp_dropsubscription',
- 'sp_validatemergesubscription', 'sp_dsninfo', 'sp_vupgrade_replication', 'sp_dumpparamcmd',
-
- //Security Procedures
- 'sp_addalias', 'sp_droprolemember', 'sp_addapprole', 'sp_dropserver', 'sp_addgroup', 'sp_dropsrvrolemember',
- 'sp_addlinkedsrvlogin', 'sp_dropuser', 'sp_addlogin', 'sp_grantdbaccess', 'sp_addremotelogin',
- 'sp_grantlogin', 'sp_addrole', 'sp_helpdbfixedrole', 'sp_addrolemember', 'sp_helpgroup',
- 'sp_addserver', 'sp_helplinkedsrvlogin', 'sp_addsrvrolemember', 'sp_helplogins', 'sp_adduser',
- 'sp_helpntgroup', 'sp_approlepassword', 'sp_helpremotelogin', 'sp_changedbowner', 'sp_helprole',
- 'sp_changegroup', 'sp_helprolemember', 'sp_changeobjectowner', 'sp_helprotect', 'sp_change_users_login',
- 'sp_helpsrvrole', 'sp_dbfixedrolepermission', 'sp_helpsrvrolemember', 'sp_defaultdb', 'sp_helpuser',
- 'sp_defaultlanguage', 'sp_MShasdbaccess', 'sp_denylogin', 'sp_password', 'sp_dropalias', 'sp_remoteoption',
- 'sp_dropapprole', 'sp_revokedbaccess', 'sp_dropgroup', 'sp_revokelogin', 'sp_droplinkedsrvlogin',
- 'sp_setapprole', 'sp_droplogin', 'sp_srvrolepermission', 'sp_dropremotelogin', 'sp_validatelogins', 'sp_droprole',
-
- //SQL Mail Procedures
- 'sp_processmail', 'xp_sendmail', 'xp_deletemail', 'xp_startmail', 'xp_findnextmsg', 'xp_stopmail', 'xp_readmail',
-
- //SQL Profiler Procedures
- 'sp_trace_create', 'sp_trace_setfilter', 'sp_trace_generateevent', 'sp_trace_setstatus', 'sp_trace_setevent',
-
- //SQL Server Agent Procedures
- 'sp_add_alert', 'sp_help_jobhistory', 'sp_add_category', 'sp_help_jobschedule', 'sp_add_job',
- 'sp_help_jobserver', 'sp_add_jobschedule', 'sp_help_jobstep', 'sp_add_jobserver', 'sp_help_notification',
- 'sp_add_jobstep', 'sp_help_operator', 'sp_add_notification', 'sp_help_targetserver',
- 'sp_add_operator', 'sp_help_targetservergroup', 'sp_add_targetservergroup', 'sp_helptask',
- 'sp_add_targetsvrgrp_member', 'sp_manage_jobs_by_login', 'sp_addtask', 'sp_msx_defect',
- 'sp_apply_job_to_targets', 'sp_msx_enlist', 'sp_delete_alert', 'sp_post_msx_operation',
- 'sp_delete_category', 'sp_purgehistory', 'sp_delete_job', 'sp_purge_jobhistory', 'sp_delete_jobschedule',
- 'sp_reassigntask', 'sp_delete_jobserver', 'sp_remove_job_from_targets', 'sp_delete_jobstep',
- 'sp_resync_targetserver', 'sp_delete_notification', 'sp_start_job', 'sp_delete_operator',
- 'sp_stop_job', 'sp_delete_targetserver', 'sp_update_alert', 'sp_delete_targetservergroup',
- 'sp_update_category', 'sp_delete_targetsvrgrp_member', 'sp_update_job', 'sp_droptask',
- 'sp_update_jobschedule', 'sp_help_alert', 'sp_update_jobstep', 'sp_help_category',
- 'sp_update_notification', 'sp_help_downloadlist', 'sp_update_operator', 'sp_helphistory',
- 'sp_update_targetservergroup', 'sp_help_job', 'sp_updatetask', 'xp_sqlagent_proxy_account',
-
- //System Procedures
- 'sp_add_data_file_recover_suspect_db', 'sp_helpconstraint', 'sp_addextendedproc',
- 'sp_helpdb', 'sp_addextendedproperty', 'sp_helpdevice', 'sp_add_log_file_recover_suspect_db',
- 'sp_helpextendedproc', 'sp_addmessage', 'sp_helpfile', 'sp_addtype', 'sp_helpfilegroup',
- 'sp_addumpdevice', 'sp_helpindex', 'sp_altermessage', 'sp_helplanguage', 'sp_autostats',
- 'sp_helpserver', 'sp_attach_db', 'sp_helpsort', 'sp_attach_single_file_db', 'sp_helpstats',
- 'sp_bindefault', 'sp_helptext', 'sp_bindrule', 'sp_helptrigger', 'sp_bindsession',
- 'sp_indexoption', 'sp_certify_removable', 'sp_invalidate_textptr', 'sp_configure',
- 'sp_lock', 'sp_create_removable', 'sp_monitor', 'sp_createstats', 'sp_procoption',
- 'sp_cycle_errorlog', 'sp_recompile', 'sp_datatype_info', 'sp_refreshview', 'sp_dbcmptlevel',
- 'sp_releaseapplock', 'sp_dboption', 'sp_rename', 'sp_dbremove', 'sp_renamedb',
- 'sp_delete_backuphistory', 'sp_resetstatus', 'sp_depends', 'sp_serveroption', 'sp_detach_db',
- 'sp_setnetname', 'sp_dropdevice', 'sp_settriggerorder', 'sp_dropextendedproc', 'sp_spaceused',
- 'sp_dropextendedproperty', 'sp_tableoption', 'sp_dropmessage', 'sp_unbindefault', 'sp_droptype',
- 'sp_unbindrule', 'sp_executesql', 'sp_updateextendedproperty', 'sp_getapplock', 'sp_updatestats',
- 'sp_getbindtoken', 'sp_validname', 'sp_help', 'sp_who',
-
- //Web Assistant Procedures
- 'sp_dropwebtask', 'sp_makewebtask', 'sp_enumcodepages', 'sp_runwebtask',
-
- //XML Procedures
- 'sp_xml_preparedocument', 'sp_xml_removedocument',
-
- //General Extended Procedures
- 'xp_cmdshellxp_logininfo', 'xp_enumgroups', 'xp_msver', 'xp_findnextmsgxp_revokelogin',
- 'xp_grantlogin', 'xp_sprintf', 'xp_logevent', 'xp_sqlmaint', 'xp_loginconfig', 'xp_sscanf',
-
- //API System Stored Procedures
- 'sp_cursor', 'sp_cursorclose', 'sp_cursorexecute', 'sp_cursorfetch', 'sp_cursoropen',
- 'sp_cursoroption', 'sp_cursorprepare', 'sp_cursorunprepare', 'sp_execute', 'sp_prepare', 'sp_unprepare',
-
- //Misc
- 'sp_createorphan', 'sp_droporphans', 'sp_reset_connection', 'sp_sdidebug'
- ),
- 4 => array(
- //Function/sp's higlighted brown.
- 'fn_helpcollations', 'fn_listextendedproperty ', 'fn_servershareddrives',
- 'fn_trace_geteventinfo', 'fn_trace_getfilterinfo', 'fn_trace_getinfo',
- 'fn_trace_gettable', 'fn_virtualfilestats',
- ),
- ),
- 'SYMBOLS' => array(
- '!', '!=', '%', '&', '&&', '(', ')', '*', '+', '-', '/', '<', '<<', '<=',
- '<=>', '<>', '=', '>', '>=', '>>', '^', 'ALL', 'AND', 'ANY', 'BETWEEN', 'CROSS',
- 'EXISTS', 'IN', 'JOIN', 'LIKE', 'NOT', 'NULL', 'OR', 'OUTER', 'SOME', '|', '||', '~'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000FF;',
- 2 => 'color: #FF00FF;',
- 3 => 'color: #AF0000;',
- 4 => 'color: #AF0000;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008080;',
- 'MULTI' => 'color: #008080;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #808080;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #202020;',
- 2 => 'color: #202020;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #808080;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * tsql.php
+ * --------
+ * Author: Duncan Lock (dunc at dflock.co.uk)
+ * Copyright: (c) 2006 Duncan Lock (http://dflock.co.uk/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/11/22
+ *
+ * T-SQL language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/01/23 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2006/01/23)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'T-SQL',
+ 'COMMENT_SINGLE' => array(1 => '--'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array(
+ /*
+ This will be highlighted in blue
+ */
+
+ // Datatypes
+ 'bigint', 'int', 'smallint', 'tinyint', 'bit', 'decimal', 'numeric', 'money',
+ 'smallmoney', 'float', 'real', 'datetime', 'smalldatetime', 'char', 'varchar',
+ 'text', 'nchar', 'nvarchar', 'ntext', 'binary', 'varbinary', 'image', 'cursor',
+ 'sql_variant', 'table', 'timestamp', 'uniqueidentifier',
+
+ // Keywords
+ 'ABSOLUTE', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 'AGGREGATE', 'ALIAS', 'ALLOCATE', 'ALTER', 'ARE', 'ARRAY', 'AS',
+ 'ASC', 'ASSERTION', 'AT', 'AUTHORIZATION', 'BACKUP', 'BEFORE', 'BEGIN', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'BOTH', 'BREADTH',
+ 'BREAK', 'BROWSE', 'BULK', 'BY', 'CALL', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CHAR', 'CHARACTER', 'CHECK', 'CHECKPOINT',
+ 'CLASS', 'CLOB', 'CLOSE', 'CLUSTERED', 'COALESCE', 'COLLATE', 'COLLATION', 'COLUMN', 'COMMIT', 'COMPLETION', 'COMPUTE', 'CONNECT',
+ 'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 'CONSTRUCTOR', 'CONTAINS', 'CONTAINSTABLE', 'CONTINUE', 'CONVERT', 'CORRESPONDING', 'CREATE',
+ 'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH', 'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
+ 'CURSOR', 'CYCLE', 'DATA', 'DATABASE', 'DATE', 'DAY', 'DBCC', 'DEALLOCATE', 'DEC', 'DECIMAL', 'DECLARE', 'DEFAULT', 'DEFERRABLE',
+ 'DEFERRED', 'DELETE', 'DENY', 'DEPTH', 'DEREF', 'DESC', 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR', 'DETERMINISTIC',
+ 'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISK', 'DISTINCT', 'DISTRIBUTED', 'DOMAIN', 'DOUBLE', 'DROP', 'DUMMY', 'DUMP', 'DYNAMIC',
+ 'EACH', 'ELSE', 'END', 'END-EXEC', 'EQUALS', 'ERRLVL', 'ESCAPE', 'EVERY', 'EXCEPT', 'EXCEPTION', 'EXEC', 'EXECUTE', 'EXIT',
+ 'EXTERNAL', 'FALSE', 'FETCH', 'FILE', 'FILLFACTOR', 'FIRST', 'FLOAT', 'FOR', 'FOREIGN', 'FOUND', 'FREE', 'FREETEXT', 'FREETEXTTABLE',
+ 'FROM', 'FULL', 'FUNCTION', 'GENERAL', 'GET', 'GLOBAL', 'GOTO', 'GRANT', 'GROUP', 'GROUPING', 'HAVING', 'HOLDLOCK', 'HOST', 'HOUR',
+ 'IDENTITY', 'IDENTITY_INSERT', 'IDENTITYCOL', 'IF', 'IGNORE', 'IMMEDIATE', 'INDEX', 'INDICATOR', 'INITIALIZE', 'INITIALLY',
+ 'INNER', 'INOUT', 'INPUT', 'INSERT', 'INT', 'INTEGER', 'INTERSECT', 'INTERVAL', 'INTO', 'IS', 'ISOLATION', 'ITERATE', 'KEY',
+ 'KILL', 'LANGUAGE', 'LARGE', 'LAST', 'LATERAL', 'LEADING', 'LEFT', 'LESS', 'LEVEL', 'LIMIT', 'LINENO', 'LOAD', 'LOCAL',
+ 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATOR', 'MAP', 'MATCH', 'MINUTE', 'MODIFIES', 'MODIFY', 'MODULE', 'MONTH', 'NAMES', 'NATIONAL',
+ 'NATURAL', 'NCHAR', 'NCLOB', 'NEW', 'NEXT', 'NO', 'NOCHECK', 'NONCLUSTERED', 'NONE', 'NULLIF', 'NUMERIC', 'OBJECT', 'OF',
+ 'OFF', 'OFFSETS', 'OLD', 'ON', 'ONLY', 'OPEN', 'OPENDATASOURCE', 'OPENQUERY', 'OPENROWSET', 'OPENXML', 'OPERATION', 'OPTION',
+ 'ORDER', 'ORDINALITY', 'OUT', 'OUTPUT', 'OVER', 'PAD', 'PARAMETER', 'PARAMETERS', 'PARTIAL', 'PATH', 'PERCENT', 'PLAN',
+ 'POSTFIX', 'PRECISION', 'PREFIX', 'PREORDER', 'PREPARE', 'PRESERVE', 'PRIMARY', 'PRINT', 'PRIOR', 'PRIVILEGES', 'PROC', 'PROCEDURE',
+ 'PUBLIC', 'RAISERROR', 'READ', 'READS', 'READTEXT', 'REAL', 'RECONFIGURE', 'RECURSIVE', 'REF', 'REFERENCES', 'REFERENCING', 'RELATIVE',
+ 'REPLICATION', 'RESTORE', 'RESTRICT', 'RESULT', 'RETURN', 'RETURNS', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUTINE', 'ROW',
+ 'ROWGUIDCOL', 'ROWS', 'RULE', 'SAVE', 'SAVEPOINT', 'SCHEMA', 'SCOPE', 'SCROLL', 'SEARCH', 'SECOND', 'SECTION', 'SELECT',
+ 'SEQUENCE', 'SESSION', 'SESSION_USER', 'SET', 'SETS', 'SETUSER', 'SHUTDOWN', 'SIZE', 'SMALLINT', 'SPACE', 'SPECIFIC',
+ 'SPECIFICTYPE', 'SQL', 'SQLEXCEPTION', 'SQLSTATE', 'SQLWARNING', 'START', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 'STRUCTURE',
+ 'SYSTEM_USER', 'TABLE', 'TEMPORARY', 'TERMINATE', 'TEXTSIZE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR', 'TIMEZONE_MINUTE',
+ 'TO', 'TOP', 'TRAILING', 'TRAN', 'TRANSACTION', 'TRANSLATION', 'TREAT', 'TRIGGER', 'TRUE', 'TRUNCATE', 'TSEQUAL', 'UNDER', 'UNION',
+ 'UNIQUE', 'UNKNOWN', 'UNNEST', 'UPDATE', 'UPDATETEXT', 'USAGE', 'USE', 'USER', 'USING', 'VALUE', 'VALUES', 'VARCHAR', 'VARIABLE',
+ 'VARYING', 'VIEW', 'WAITFOR', 'WHEN', 'WHENEVER', 'WHERE', 'WHILE', 'WITH', 'WITHOUT', 'WORK', 'WRITE', 'WRITETEXT', 'YEAR', 'ZONE',
+ 'UNCOMMITTED', 'NOCOUNT',
+ ),
+ 2 => array(
+ /*
+ Built-in functions
+ Highlighted in pink.
+ */
+
+ //Configuration Functions
+ '@@DATEFIRST','@@OPTIONS','@@DBTS','@@REMSERVER','@@LANGID','@@SERVERNAME',
+ '@@LANGUAGE','@@SERVICENAME','@@LOCK_TIMEOUT','@@SPID','@@MAX_CONNECTIONS','@@TEXTSIZE',
+ '@@MAX_PRECISION','@@VERSION','@@NESTLEVEL',
+
+ //Cursor Functions
+ '@@CURSOR_ROWS','@@FETCH_STATUS',
+
+ //Date and Time Functions
+ 'DATEADD','DATEDIFF','DATENAME','DATEPART','DAY','GETDATE','GETUTCDATE','MONTH','YEAR',
+
+ //Mathematical Functions
+ 'ABS','DEGREES','RAND','ACOS','EXP','ROUND','ASIN','FLOOR','SIGN',
+ 'ATAN','LOG','SIN','ATN2','LOG10','SQUARE','CEILING','PI','SQRT','COS',
+ 'POWER','TAN','COT','RADIANS',
+
+ //Meta Data Functions
+ 'COL_LENGTH','fn_listextendedproperty','COL_NAME','FULLTEXTCATALOGPROPERTY',
+ 'COLUMNPROPERTY','FULLTEXTSERVICEPROPERTY','DATABASEPROPERTY','INDEX_COL',
+ 'DATABASEPROPERTYEX','INDEXKEY_PROPERTY','DB_ID','INDEXPROPERTY','DB_NAME',
+ 'OBJECT_ID','FILE_ID','OBJECT_NAME','FILE_NAME','OBJECTPROPERTY','FILEGROUP_ID',
+ '@@PROCID','FILEGROUP_NAME','SQL_VARIANT_PROPERTY','FILEGROUPPROPERTY',
+ 'TYPEPROPERTY','FILEPROPERTY',
+
+ //Security Functions
+ 'fn_trace_geteventinfo','IS_SRVROLEMEMBER','fn_trace_getfilterinfo','SUSER_SID',
+ 'fn_trace_getinfo','SUSER_SNAME','fn_trace_gettable','USER_ID','HAS_DBACCESS',
+ 'IS_MEMBER',
+
+ //String Functions
+ 'ASCII','NCHAR','SOUNDEX','CHAR','PATINDEX','SPACE','CHARINDEX',
+ 'REPLACE','STR','DIFFERENCE','QUOTENAME','STUFF','LEFT','REPLICATE',
+ 'SUBSTRING','LEN','REVERSE','UNICODE','LOWER','RIGHT','UPPER','LTRIM',
+ 'RTRIM',
+
+ //System Functions
+ 'APP_NAME','COLLATIONPROPERTY','@@ERROR','fn_helpcollations',
+ 'fn_servershareddrives','fn_virtualfilestats','FORMATMESSAGE',
+ 'GETANSINULL','HOST_ID','HOST_NAME','IDENT_CURRENT','IDENT_INCR',
+ 'IDENT_SEED','@@IDENTITY','ISDATE','ISNUMERIC','PARSENAME','PERMISSIONS',
+ '@@ROWCOUNT','ROWCOUNT_BIG','SCOPE_IDENTITY','SERVERPROPERTY','SESSIONPROPERTY',
+ 'STATS_DATE','@@TRANCOUNT','USER_NAME',
+
+ //System Statistical Functions
+ '@@CONNECTIONS','@@PACK_RECEIVED','@@CPU_BUSY','@@PACK_SENT',
+ 'fn_virtualfilestats','@@TIMETICKS','@@IDLE','@@TOTAL_ERRORS','@@IO_BUSY',
+ '@@TOTAL_READ','@@PACKET_ERRORS','@@TOTAL_WRITE',
+
+ //Text and Image Functions
+ 'TEXTPTR','TEXTVALID',
+
+ //Aggregate functions
+ 'AVG', 'MAX', 'BINARY_CHECKSUM', 'MIN', 'CHECKSUM', 'SUM', 'CHECKSUM_AGG',
+ 'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 'GROUPING', 'VARP'
+ ),
+ 3 => array(
+ /*
+ System stored procedures
+ Higlighted dark brown
+ */
+
+ //Active Directory Procedures
+ 'sp_ActiveDirectory_Obj', 'sp_ActiveDirectory_SCP',
+
+ //Catalog Procedures
+ 'sp_column_privileges', 'sp_special_columns', 'sp_columns', 'sp_sproc_columns',
+ 'sp_databases', 'sp_statistics', 'sp_fkeys', 'sp_stored_procedures', 'sp_pkeys',
+ 'sp_table_privileges', 'sp_server_info', 'sp_tables',
+
+ //Cursor Procedures
+ 'sp_cursor_list', 'sp_describe_cursor_columns', 'sp_describe_cursor', 'sp_describe_cursor_tables',
+
+ //Database Maintenance Plan Procedures
+ 'sp_add_maintenance_plan', 'sp_delete_maintenance_plan_db', 'sp_add_maintenance_plan_db',
+ 'sp_delete_maintenance_plan_job', 'sp_add_maintenance_plan_job', 'sp_help_maintenance_plan',
+ 'sp_delete_maintenance_plan',
+
+ //Distributed Queries Procedures
+ 'sp_addlinkedserver', 'sp_indexes', 'sp_addlinkedsrvlogin', 'sp_linkedservers', 'sp_catalogs',
+ 'sp_primarykeys', 'sp_column_privileges_ex', 'sp_serveroption', 'sp_columns_ex',
+ 'sp_table_privileges_ex', 'sp_droplinkedsrvlogin', 'sp_tables_ex', 'sp_foreignkeys',
+
+ //Full-Text Search Procedures
+ 'sp_fulltext_catalog', 'sp_help_fulltext_catalogs_cursor', 'sp_fulltext_column',
+ 'sp_help_fulltext_columns', 'sp_fulltext_database', 'sp_help_fulltext_columns_cursor',
+ 'sp_fulltext_service', 'sp_help_fulltext_tables', 'sp_fulltext_table',
+ 'sp_help_fulltext_tables_cursor', 'sp_help_fulltext_catalogs',
+
+ //Log Shipping Procedures
+ 'sp_add_log_shipping_database', 'sp_delete_log_shipping_database', 'sp_add_log_shipping_plan',
+ 'sp_delete_log_shipping_plan', 'sp_add_log_shipping_plan_database',
+ 'sp_delete_log_shipping_plan_database', 'sp_add_log_shipping_primary',
+ 'sp_delete_log_shipping_primary', 'sp_add_log_shipping_secondary',
+ 'sp_delete_log_shipping_secondary', 'sp_can_tlog_be_applied', 'sp_get_log_shipping_monitor_info',
+ 'sp_change_monitor_role', 'sp_remove_log_shipping_monitor', 'sp_change_primary_role',
+ 'sp_resolve_logins', 'sp_change_secondary_role', 'sp_update_log_shipping_monitor_info',
+ 'sp_create_log_shipping_monitor_account', 'sp_update_log_shipping_plan',
+ 'sp_define_log_shipping_monitor', 'sp_update_log_shipping_plan_database',
+
+ //OLE Automation Extended Stored Procedures
+ 'sp_OACreate', 'sp_OAMethod', 'sp_OADestroy', 'sp_OASetProperty', 'sp_OAGetErrorInfo',
+ 'sp_OAStop', 'sp_OAGetProperty',
+
+ //Replication Procedures
+ 'sp_add_agent_parameter', 'sp_enableagentoffload', 'sp_add_agent_profile',
+ 'sp_enumcustomresolvers', 'sp_addarticle', 'sp_enumdsn', 'sp_adddistpublisher',
+ 'sp_enumfullsubscribers', 'sp_adddistributiondb', 'sp_expired_subscription_cleanup',
+ 'sp_adddistributor', 'sp_generatefilters', 'sp_addmergealternatepublisher',
+ 'sp_getagentoffloadinfo', 'sp_addmergearticle', 'sp_getmergedeletetype', 'sp_addmergefilter',
+ 'sp_get_distributor', 'sp_addmergepublication', 'sp_getqueuedrows', 'sp_addmergepullsubscription',
+ 'sp_getsubscriptiondtspackagename', 'sp_addmergepullsubscription_agent', 'sp_grant_publication_access',
+ 'sp_addmergesubscription', 'sp_help_agent_default', 'sp_addpublication', 'sp_help_agent_parameter',
+ 'sp_addpublication_snapshot', 'sp_help_agent_profile', 'sp_addpublisher70', 'sp_helparticle',
+ 'sp_addpullsubscription', 'sp_helparticlecolumns', 'sp_addpullsubscription_agent', 'sp_helparticledts',
+ 'sp_addscriptexec', 'sp_helpdistpublisher', 'sp_addsubscriber', 'sp_helpdistributiondb',
+ 'sp_addsubscriber_schedule', 'sp_helpdistributor', 'sp_addsubscription', 'sp_helpmergealternatepublisher',
+ 'sp_addsynctriggers', 'sp_helpmergearticle', 'sp_addtabletocontents', 'sp_helpmergearticlecolumn',
+ 'sp_adjustpublisheridentityrange', 'sp_helpmergearticleconflicts', 'sp_article_validation',
+ 'sp_helpmergeconflictrows', 'sp_articlecolumn', 'sp_helpmergedeleteconflictrows', 'sp_articlefilter',
+ 'sp_helpmergefilter', 'sp_articlesynctranprocs', 'sp_helpmergepublication', 'sp_articleview',
+ 'sp_helpmergepullsubscription', 'sp_attachsubscription', 'sp_helpmergesubscription', 'sp_browsesnapshotfolder',
+ 'sp_helppublication', 'sp_browsemergesnapshotfolder', 'sp_help_publication_access', 'sp_browsereplcmds',
+ 'sp_helppullsubscription', 'sp_change_agent_parameter', 'sp_helpreplfailovermode', 'sp_change_agent_profile',
+ 'sp_helpreplicationdboption', 'sp_changearticle', 'sp_helpreplicationoption', 'sp_changedistpublisher',
+ 'sp_helpsubscriberinfo', 'sp_changedistributiondb', 'sp_helpsubscription', 'sp_changedistributor_password',
+ 'sp_ivindexhasnullcols', 'sp_changedistributor_property', 'sp_helpsubscription_properties', 'sp_changemergearticle',
+ 'sp_link_publication', 'sp_changemergefilter', 'sp_marksubscriptionvalidation', 'sp_changemergepublication',
+ 'sp_mergearticlecolumn', 'sp_changemergepullsubscription', 'sp_mergecleanupmetadata', 'sp_changemergesubscription',
+ 'sp_mergedummyupdate', 'sp_changepublication', 'sp_mergesubscription_cleanup', 'sp_changesubscriber',
+ 'sp_publication_validation', 'sp_changesubscriber_schedule', 'sp_refreshsubscriptions', 'sp_changesubscriptiondtsinfo',
+ 'sp_reinitmergepullsubscription', 'sp_changesubstatus', 'sp_reinitmergesubscription', 'sp_change_subscription_properties',
+ 'sp_reinitpullsubscription', 'sp_check_for_sync_trigger', 'sp_reinitsubscription', 'sp_copymergesnapshot',
+ 'sp_removedbreplication', 'sp_copysnapshot', 'sp_repladdcolumn', 'sp_copysubscription', 'sp_replcmds',
+ 'sp_deletemergeconflictrow', 'sp_replcounters', 'sp_disableagentoffload', 'sp_repldone', 'sp_drop_agent_parameter',
+ 'sp_repldropcolumn', 'sp_drop_agent_profile', 'sp_replflush', 'sp_droparticle', 'sp_replicationdboption',
+ 'sp_dropanonymouseagent', 'sp_replication_agent_checkup', 'sp_dropdistpublisher', 'sp_replqueuemonitor',
+ 'sp_dropdistributiondb', 'sp_replsetoriginator', 'sp_dropmergealternatepublisher', 'sp_replshowcmds',
+ 'sp_dropdistributor', 'sp_repltrans', 'sp_dropmergearticle', 'sp_restoredbreplication', 'sp_dropmergefilter',
+ 'sp_revoke_publication_access', 'sp_scriptsubconflicttable', 'sp_dropmergepublication', 'sp_script_synctran_commands',
+ 'sp_dropmergepullsubscription', 'sp_setreplfailovermode', 'sp_showrowreplicainfo', 'sp_dropmergesubscription',
+ 'sp_subscription_cleanup', 'sp_droppublication', 'sp_table_validation', 'sp_droppullsubscription',
+ 'sp_update_agent_profile', 'sp_dropsubscriber', 'sp_validatemergepublication', 'sp_dropsubscription',
+ 'sp_validatemergesubscription', 'sp_dsninfo', 'sp_vupgrade_replication', 'sp_dumpparamcmd',
+
+ //Security Procedures
+ 'sp_addalias', 'sp_droprolemember', 'sp_addapprole', 'sp_dropserver', 'sp_addgroup', 'sp_dropsrvrolemember',
+ 'sp_addlinkedsrvlogin', 'sp_dropuser', 'sp_addlogin', 'sp_grantdbaccess', 'sp_addremotelogin',
+ 'sp_grantlogin', 'sp_addrole', 'sp_helpdbfixedrole', 'sp_addrolemember', 'sp_helpgroup',
+ 'sp_addserver', 'sp_helplinkedsrvlogin', 'sp_addsrvrolemember', 'sp_helplogins', 'sp_adduser',
+ 'sp_helpntgroup', 'sp_approlepassword', 'sp_helpremotelogin', 'sp_changedbowner', 'sp_helprole',
+ 'sp_changegroup', 'sp_helprolemember', 'sp_changeobjectowner', 'sp_helprotect', 'sp_change_users_login',
+ 'sp_helpsrvrole', 'sp_dbfixedrolepermission', 'sp_helpsrvrolemember', 'sp_defaultdb', 'sp_helpuser',
+ 'sp_defaultlanguage', 'sp_MShasdbaccess', 'sp_denylogin', 'sp_password', 'sp_dropalias', 'sp_remoteoption',
+ 'sp_dropapprole', 'sp_revokedbaccess', 'sp_dropgroup', 'sp_revokelogin', 'sp_droplinkedsrvlogin',
+ 'sp_setapprole', 'sp_droplogin', 'sp_srvrolepermission', 'sp_dropremotelogin', 'sp_validatelogins', 'sp_droprole',
+
+ //SQL Mail Procedures
+ 'sp_processmail', 'xp_sendmail', 'xp_deletemail', 'xp_startmail', 'xp_findnextmsg', 'xp_stopmail', 'xp_readmail',
+
+ //SQL Profiler Procedures
+ 'sp_trace_create', 'sp_trace_setfilter', 'sp_trace_generateevent', 'sp_trace_setstatus', 'sp_trace_setevent',
+
+ //SQL Server Agent Procedures
+ 'sp_add_alert', 'sp_help_jobhistory', 'sp_add_category', 'sp_help_jobschedule', 'sp_add_job',
+ 'sp_help_jobserver', 'sp_add_jobschedule', 'sp_help_jobstep', 'sp_add_jobserver', 'sp_help_notification',
+ 'sp_add_jobstep', 'sp_help_operator', 'sp_add_notification', 'sp_help_targetserver',
+ 'sp_add_operator', 'sp_help_targetservergroup', 'sp_add_targetservergroup', 'sp_helptask',
+ 'sp_add_targetsvrgrp_member', 'sp_manage_jobs_by_login', 'sp_addtask', 'sp_msx_defect',
+ 'sp_apply_job_to_targets', 'sp_msx_enlist', 'sp_delete_alert', 'sp_post_msx_operation',
+ 'sp_delete_category', 'sp_purgehistory', 'sp_delete_job', 'sp_purge_jobhistory', 'sp_delete_jobschedule',
+ 'sp_reassigntask', 'sp_delete_jobserver', 'sp_remove_job_from_targets', 'sp_delete_jobstep',
+ 'sp_resync_targetserver', 'sp_delete_notification', 'sp_start_job', 'sp_delete_operator',
+ 'sp_stop_job', 'sp_delete_targetserver', 'sp_update_alert', 'sp_delete_targetservergroup',
+ 'sp_update_category', 'sp_delete_targetsvrgrp_member', 'sp_update_job', 'sp_droptask',
+ 'sp_update_jobschedule', 'sp_help_alert', 'sp_update_jobstep', 'sp_help_category',
+ 'sp_update_notification', 'sp_help_downloadlist', 'sp_update_operator', 'sp_helphistory',
+ 'sp_update_targetservergroup', 'sp_help_job', 'sp_updatetask', 'xp_sqlagent_proxy_account',
+
+ //System Procedures
+ 'sp_add_data_file_recover_suspect_db', 'sp_helpconstraint', 'sp_addextendedproc',
+ 'sp_helpdb', 'sp_addextendedproperty', 'sp_helpdevice', 'sp_add_log_file_recover_suspect_db',
+ 'sp_helpextendedproc', 'sp_addmessage', 'sp_helpfile', 'sp_addtype', 'sp_helpfilegroup',
+ 'sp_addumpdevice', 'sp_helpindex', 'sp_altermessage', 'sp_helplanguage', 'sp_autostats',
+ 'sp_helpserver', 'sp_attach_db', 'sp_helpsort', 'sp_attach_single_file_db', 'sp_helpstats',
+ 'sp_bindefault', 'sp_helptext', 'sp_bindrule', 'sp_helptrigger', 'sp_bindsession',
+ 'sp_indexoption', 'sp_certify_removable', 'sp_invalidate_textptr', 'sp_configure',
+ 'sp_lock', 'sp_create_removable', 'sp_monitor', 'sp_createstats', 'sp_procoption',
+ 'sp_cycle_errorlog', 'sp_recompile', 'sp_datatype_info', 'sp_refreshview', 'sp_dbcmptlevel',
+ 'sp_releaseapplock', 'sp_dboption', 'sp_rename', 'sp_dbremove', 'sp_renamedb',
+ 'sp_delete_backuphistory', 'sp_resetstatus', 'sp_depends', 'sp_serveroption', 'sp_detach_db',
+ 'sp_setnetname', 'sp_dropdevice', 'sp_settriggerorder', 'sp_dropextendedproc', 'sp_spaceused',
+ 'sp_dropextendedproperty', 'sp_tableoption', 'sp_dropmessage', 'sp_unbindefault', 'sp_droptype',
+ 'sp_unbindrule', 'sp_executesql', 'sp_updateextendedproperty', 'sp_getapplock', 'sp_updatestats',
+ 'sp_getbindtoken', 'sp_validname', 'sp_help', 'sp_who',
+
+ //Web Assistant Procedures
+ 'sp_dropwebtask', 'sp_makewebtask', 'sp_enumcodepages', 'sp_runwebtask',
+
+ //XML Procedures
+ 'sp_xml_preparedocument', 'sp_xml_removedocument',
+
+ //General Extended Procedures
+ 'xp_cmdshellxp_logininfo', 'xp_enumgroups', 'xp_msver', 'xp_findnextmsgxp_revokelogin',
+ 'xp_grantlogin', 'xp_sprintf', 'xp_logevent', 'xp_sqlmaint', 'xp_loginconfig', 'xp_sscanf',
+
+ //API System Stored Procedures
+ 'sp_cursor', 'sp_cursorclose', 'sp_cursorexecute', 'sp_cursorfetch', 'sp_cursoropen',
+ 'sp_cursoroption', 'sp_cursorprepare', 'sp_cursorunprepare', 'sp_execute', 'sp_prepare', 'sp_unprepare',
+
+ //Misc
+ 'sp_createorphan', 'sp_droporphans', 'sp_reset_connection', 'sp_sdidebug'
+ ),
+ 4 => array(
+ //Function/sp's higlighted brown.
+ 'fn_helpcollations', 'fn_listextendedproperty ', 'fn_servershareddrives',
+ 'fn_trace_geteventinfo', 'fn_trace_getfilterinfo', 'fn_trace_getinfo',
+ 'fn_trace_gettable', 'fn_virtualfilestats',
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '!', '!=', '%', '&', '&&', '(', ')', '*', '+', '-', '/', '<', '<<', '<=',
+ '<=>', '<>', '=', '>', '>=', '>>', '^', 'ALL', 'AND', 'ANY', 'BETWEEN', 'CROSS',
+ 'EXISTS', 'IN', 'JOIN', 'LIKE', 'NOT', 'NULL', 'OR', 'OUTER', 'SOME', '|', '||', '~'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000FF;',
+ 2 => 'color: #FF00FF;',
+ 3 => 'color: #AF0000;',
+ 4 => 'color: #AF0000;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008080;',
+ 'MULTI' => 'color: #008080;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #808080;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #202020;',
+ 2 => 'color: #202020;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #808080;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/vb.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/vb.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/vb.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,148 +1,148 @@
-<?php
-/*************************************************************************************
- * vb.php
- * ------
- * Author: Roberto Rossi (rsoftware at altervista.org)
- * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/08/30
- *
- * Visual Basic language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/08/30 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
- $language_data = array (
- 'LANG_NAME' => 'Visual Basic',
- 'COMMENT_SINGLE' => array(1 => "'"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'as', 'err', 'boolean', 'and', 'or', 'recordset', 'unload', 'to',
- 'integer','long','single','new','database','nothing','set','close',
- 'open','print','split','line','field','querydef','instrrev',
- 'abs','array','asc','ascb','ascw','atn','avg','me',
- 'cbool','cbyte','ccur','cdate','cdbl','cdec','choose','chr','chrb','chrw','cint','clng',
- 'command','cos','count','createobject','csng','cstr','curdir','cvar','cvdate','cverr',
- 'date','dateadd','datediff','datepart','dateserial','datevalue','day','ddb','dir','doevents',
- 'environ','eof','error','exp',
- 'fileattr','filedatetime','filelen','fix','format','freefile','fv',
- 'getallstrings','getattr','getautoserversettings','getobject','getsetting',
- 'hex','hour','iif','imestatus','input','inputb','inputbox','instr','instb','int','ipmt',
- 'isarray','isdate','isempty','iserror','ismissing','isnull','isnumeric','isobject',
- 'lbound','lcase','left','leftb','len','lenb','loadpicture','loc','lof','log','ltrim',
- 'max','mid','midb','min','minute','mirr','month','msgbox',
- 'now','nper','npv','oct','partition','pmt','ppmt','pv','qbcolor',
- 'rate','rgb','right','rightb','rnd','rtrim',
- 'second','seek','sgn','shell','sin','sln','space','spc','sqr','stdev','stdevp','str',
- 'strcomp','strconv','string','switch','sum','syd',
- 'tab','tan','time','timer','timeserial','timevalue','trim','typename',
- 'ubound','ucase','val','var','varp','vartype','weekday','year',
- 'appactivate','base','beep','call','case','chdir','chdrive','const',
- 'declare','defbool','defbyte','defcur','defdate','defdbl','defdec','defint',
- 'deflng','defobj','defsng','defstr','deftype','defvar','deletesetting','dim','do',
- 'else','elseif','end','enum','erase','event','exit','explicit',
- 'false','filecopy','for','foreach','friend','function','get','gosub','goto',
- 'if','implements','kill','let','lineinput','lock','loop','lset','mkdir','name','next','not',
- 'onerror','on','option','private','property','public','put','raiseevent','randomize',
- 'redim','rem','reset','resume','return','rmdir','rset',
- 'savepicture','savesetting','sendkeys','setattr','static','sub',
- 'then','true','type','unlock','wend','while','width','with','write',
- 'vbabort','vbabortretryignore','vbapplicationmodal','vbarray',
- 'vbbinarycompare','vbblack','vbblue','vbboolean','vbbyte','vbcancel',
- 'vbcr','vbcritical','vbcrlf','vbcurrency','vbcyan','vbdataobject',
- 'vbdate','vbdecimal','vbdefaultbutton1','vbdefaultbutton2',
- 'vbdefaultbutton3','vbdefaultbutton4','vbdouble','vbempty',
- 'vberror','vbexclamation','vbfirstfourdays','vbfirstfullweek',
- 'vbfirstjan1','vbformfeed','vbfriday','vbgeneraldate','vbgreen',
- 'vbignore','vbinformation','vbinteger','vblf','vblong','vblongdate',
- 'vblongtime','vbmagenta','vbmonday','vbnewline','vbno','vbnull',
- 'vbnullchar','vbnullstring','vbobject','vbobjecterror','vbok','vbokcancel',
- 'vbokonly','vbquestion','vbred','vbretry','vbretrycancel','vbsaturday',
- 'vbshortdate','vbshorttime','vbsingle','vbstring','vbsunday',
- 'vbsystemmodal','vbtab','vbtextcompare','vbthursday','vbtuesday',
- 'vbusesystem','vbusesystemdayofweek','vbvariant','vbverticaltab',
- 'vbwednesday','vbwhite','vbyellow','vbyes','vbyesno','vbyesnocancel',
- 'vbnormal','vbdirectory'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #808080;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #66cc66;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099;'
- ),
- 'SCRIPT' => array(
- ),
- 'REGEXPS' => array(
- )
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * vb.php
+ * ------
+ * Author: Roberto Rossi (rsoftware at altervista.org)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/08/30
+ *
+ * Visual Basic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+ $language_data = array (
+ 'LANG_NAME' => 'Visual Basic',
+ 'COMMENT_SINGLE' => array(1 => "'"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'as', 'err', 'boolean', 'and', 'or', 'recordset', 'unload', 'to',
+ 'integer','long','single','new','database','nothing','set','close',
+ 'open','print','split','line','field','querydef','instrrev',
+ 'abs','array','asc','ascb','ascw','atn','avg','me',
+ 'cbool','cbyte','ccur','cdate','cdbl','cdec','choose','chr','chrb','chrw','cint','clng',
+ 'command','cos','count','createobject','csng','cstr','curdir','cvar','cvdate','cverr',
+ 'date','dateadd','datediff','datepart','dateserial','datevalue','day','ddb','dir','doevents',
+ 'environ','eof','error','exp',
+ 'fileattr','filedatetime','filelen','fix','format','freefile','fv',
+ 'getallstrings','getattr','getautoserversettings','getobject','getsetting',
+ 'hex','hour','iif','imestatus','input','inputb','inputbox','instr','instb','int','ipmt',
+ 'isarray','isdate','isempty','iserror','ismissing','isnull','isnumeric','isobject',
+ 'lbound','lcase','left','leftb','len','lenb','loadpicture','loc','lof','log','ltrim',
+ 'max','mid','midb','min','minute','mirr','month','msgbox',
+ 'now','nper','npv','oct','partition','pmt','ppmt','pv','qbcolor',
+ 'rate','rgb','right','rightb','rnd','rtrim',
+ 'second','seek','sgn','shell','sin','sln','space','spc','sqr','stdev','stdevp','str',
+ 'strcomp','strconv','string','switch','sum','syd',
+ 'tab','tan','time','timer','timeserial','timevalue','trim','typename',
+ 'ubound','ucase','val','var','varp','vartype','weekday','year',
+ 'appactivate','base','beep','call','case','chdir','chdrive','const',
+ 'declare','defbool','defbyte','defcur','defdate','defdbl','defdec','defint',
+ 'deflng','defobj','defsng','defstr','deftype','defvar','deletesetting','dim','do',
+ 'else','elseif','end','enum','erase','event','exit','explicit',
+ 'false','filecopy','for','foreach','friend','function','get','gosub','goto',
+ 'if','implements','kill','let','lineinput','lock','loop','lset','mkdir','name','next','not',
+ 'onerror','on','option','private','property','public','put','raiseevent','randomize',
+ 'redim','rem','reset','resume','return','rmdir','rset',
+ 'savepicture','savesetting','sendkeys','setattr','static','sub',
+ 'then','true','type','unlock','wend','while','width','with','write',
+ 'vbabort','vbabortretryignore','vbapplicationmodal','vbarray',
+ 'vbbinarycompare','vbblack','vbblue','vbboolean','vbbyte','vbcancel',
+ 'vbcr','vbcritical','vbcrlf','vbcurrency','vbcyan','vbdataobject',
+ 'vbdate','vbdecimal','vbdefaultbutton1','vbdefaultbutton2',
+ 'vbdefaultbutton3','vbdefaultbutton4','vbdouble','vbempty',
+ 'vberror','vbexclamation','vbfirstfourdays','vbfirstfullweek',
+ 'vbfirstjan1','vbformfeed','vbfriday','vbgeneraldate','vbgreen',
+ 'vbignore','vbinformation','vbinteger','vblf','vblong','vblongdate',
+ 'vblongtime','vbmagenta','vbmonday','vbnewline','vbno','vbnull',
+ 'vbnullchar','vbnullstring','vbobject','vbobjecterror','vbok','vbokcancel',
+ 'vbokonly','vbquestion','vbred','vbretry','vbretrycancel','vbsaturday',
+ 'vbshortdate','vbshorttime','vbsingle','vbstring','vbsunday',
+ 'vbsystemmodal','vbtab','vbtextcompare','vbthursday','vbtuesday',
+ 'vbusesystem','vbusesystemdayofweek','vbvariant','vbverticaltab',
+ 'vbwednesday','vbwhite','vbyellow','vbyes','vbyesno','vbyesnocancel',
+ 'vbnormal','vbdirectory'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #808080;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #66cc66;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099;'
+ ),
+ 'SCRIPT' => array(
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/vbnet.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/vbnet.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/vbnet.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,197 +1,197 @@
-<?php
-/*************************************************************************************
- * vbnet.php
- * ---------
- * Author: Alan Juden (alan at judenware.org)
- * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2004/06/04
- *
- * VB.NET language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.0)
- * - Initial release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
- $language_data = array (
- 'LANG_NAME' => 'vb.net',
- 'COMMENT_SINGLE' => array(1 => "'"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- '3DDKSHADOW', '3DHIGHLIGHT', '3DLIGHT', 'ABORT', 'ABORTRETRYIGNORE', 'ACTIVEBORDER',
- 'ACTIVETITLEBAR', 'ALIAS', 'APPLICATIONMODAL', 'APPLICATIONWORKSPACE', 'ARCHIVE',
- 'BACK', 'BINARYCOMPARE', 'BLACK', 'BLUE', 'BUTTONFACE', 'BUTTONSHADOW', 'BUTTONTEXT',
- 'CANCEL', 'CDROM', 'CR', 'CRITICAL', 'CRLF', 'CYAN', 'DEFAULT', 'DEFAULTBUTTON1',
- 'DEFAULTBUTTON2', 'DEFAULTBUTTON3', 'DESKTOP', 'DIRECTORY', 'EXCLAMATION', 'FALSE',
- 'FIXED', 'FORAPPENDING', 'FORMFEED', 'FORREADING', 'FORWRITING', 'FROMUNICODE',
- 'GRAYTEXT', 'GREEN', 'HIDDEN', 'HIDE', 'HIGHLIGHT', 'HIGHLIGHTTEXT', 'HIRAGANA',
- 'IGNORE', 'INACTIVEBORDER', 'INACTIVECAPTIONTEXT', 'INACTIVETITLEBAR', 'INFOBACKGROUND',
- 'INFORMATION', 'INFOTEXT', 'KATAKANALF', 'LOWERCASE', 'MAGENTA', 'MAXIMIZEDFOCUS',
- 'MENUBAR', 'MENUTEXT', 'METHOD', 'MINIMIZEDFOCUS', 'MINIMIZEDNOFOCUS', 'MSGBOXRIGHT',
- 'MSGBOXRTLREADING', 'MSGBOXSETFOREGROUND', 'NARROW', 'NEWLINE', 'NO', 'NORMAL',
- 'NORMALFOCUS', 'NORMALNOFOCUS', 'NULLSTRING', 'OBJECTERROR', 'OK', 'OKCANCEL', 'OKONLY',
- 'PROPERCASE', 'QUESTION', 'RAMDISK', 'READONLY', 'RED', 'REMOTE', 'REMOVABLE', 'RETRY',
- 'RETRYCANCEL', 'SCROLLBARS', 'SYSTEMFOLDER', 'SYSTEMMODAL', 'TAB', 'TEMPORARYFOLDER',
- 'TEXTCOMPARE', 'TITLEBARTEXT', 'TRUE', 'UNICODE', 'UNKNOWN', 'UPPERCASE', 'VERTICALTAB',
- 'VOLUME', 'WHITE', 'WIDE', 'WIN16', 'WIN32', 'WINDOWBACKGROUND', 'WINDOWFRAME',
- 'WINDOWSFOLDER', 'WINDOWTEXT', 'YELLOW', 'YES', 'YESNO', 'YESNOCANCEL'
- ),
- 2 => array(
- 'AndAlso', 'As', 'ADDHANDLER', 'ASSEMBLY', 'AUTO', 'Binary', 'ByRef', 'ByVal', 'BEGINEPILOGUE',
- 'Else', 'ElseIf', 'Empty', 'Error', 'ENDPROLOGUE', 'EXTERNALSOURCE', 'ENVIRON', 'For',
- 'Friend', 'GET', 'HANDLES', 'Input', 'Is', 'IsNot', 'Len', 'Lock', 'Me', 'Mid', 'MUSTINHERIT',
- 'MYBASE', 'MYCLASS', 'New', 'Next', 'Nothing', 'Null', 'NOTINHERITABLE',
- 'NOTOVERRIDABLE', 'OFF', 'On', 'Option', 'Optional', 'Overloads', 'OVERRIDABLE', 'ParamArray',
- 'Print', 'Private', 'Property', 'Public', 'Resume', 'Return', 'Seek', 'Static', 'Step',
- 'String', 'SHELL', 'SENDKEYS', 'SET', 'Shared', 'Then', 'Time', 'To', 'THROW', 'WithEvents'
- ),
- 3 => array(
- 'COLLECTION', 'DEBUG', 'DICTIONARY', 'DRIVE', 'DRIVES', 'ERR', 'FILE', 'FILES',
- 'FILESYSTEMOBJECT', 'FOLDER', 'FOLDERS', 'TEXTSTREAM'
- ),
- 4 => array(
- 'BOOLEAN', 'BYTE', 'DATE', 'DECIMIAL', 'DOUBLE', 'INTEGER', 'LONG', 'OBJECT',
- 'SINGLE STRING'
- ),
- 5 => array(
- 'ADDRESSOF', 'AND', 'BITAND', 'BITNOT', 'BITOR', 'BITXOR',
- 'GETTYPE', 'LIKE', 'MOD', 'NOT', 'ORXOR'
- ),
- 6 => array(
- 'APPACTIVATE', 'BEEP', 'CALL', 'CHDIR', 'CHDRIVE', 'CLASS', 'CASE', 'CATCH', 'CONST',
- 'DECLARE', 'DELEGATE', 'DELETESETTING', 'DIM', 'DO', 'DOEVENTS', 'END', 'ENUM',
- 'EVENT', 'EXIT', 'EACH', 'FUNCTION', 'FINALLY', 'IF', 'IMPORTS', 'INHERITS',
- 'INTERFACE', 'IMPLEMENTS', 'KILL', 'LOOP', 'MIDB', 'NAMESPACE', 'OPEN', 'PUT',
- 'RAISEEVENT', 'RANDOMIZE', 'REDIM', 'REM', 'RESET', 'SAVESETTING', 'SELECT',
- 'SETATTR', 'STOP', 'SUB', 'SYNCLOCK', 'STRUCTURE', 'SHADOWS', 'SWITCH',
- 'TIMEOFDAY', 'TODAY', 'TRY', 'WIDTH', 'WITH', 'WRITE', 'WHILE'
- ),
- 7 => array(
- 'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 'CBOOL', 'CBYTE', 'CCHAR',
- 'CCHR', 'CDATE', 'CDBL', 'CDEC', 'CHOOSE', 'CHR', 'CHR$', 'CHRB', 'CHRB$', 'CHRW',
- 'CINT', 'CLNG', 'CLNG8', 'CLOSE', 'COBJ', 'COMMAND', 'COMMAND$', 'CONVERSION',
- 'COS', 'CREATEOBJECT', 'CSHORT', 'CSTR', 'CURDIR', 'CTYPE', 'CVDATE', 'DATEADD',
- 'DATEDIFF', 'DATEPART', 'DATESERIAL', 'DATEVALUE', 'DAY', 'DDB', 'DIR', 'DIR$',
- 'EOF', 'ERROR$', 'EXP', 'FILEATTR', 'FILECOPY', 'FILEDATATIME', 'FILELEN', 'FILTER',
- 'FIX', 'FORMAT', 'FORMAT$', 'FORMATCURRENCY', 'FORMATDATETIME', 'FORMATNUMBER',
- 'FORMATPERCENT', 'FREEFILE', 'FV', 'GETALLSETTINGS', 'GETATTRGETOBJECT', 'GETSETTING',
- 'HEX', 'HEX$', 'HOUR', 'IIF', 'IMESTATUS', 'INPUT$', 'INPUTB', 'INPUTB$', 'INPUTBOX',
- 'INSTR', 'INSTRB', 'INSTRREV', 'INT', 'IPMT', 'IRR', 'ISARRAY', 'ISDATE', 'ISEMPTY',
- 'ISERROR', 'ISNULL', 'ISNUMERIC', 'ISOBJECT', 'JOIN', 'LBOUND', 'LCASE', 'LCASE$',
- 'LEFT', 'LEFT$', 'LEFTB', 'LEFTB$', 'LENB', 'LINEINPUT', 'LOC', 'LOF', 'LOG', 'LTRIM',
- 'LTRIM$', 'MID$', 'MIDB', 'MIDB$', 'MINUTE', 'MIRR', 'MKDIR', 'MONTH', 'MONTHNAME',
- 'MSGBOX', 'NOW', 'NPER', 'NPV', 'OCT', 'OCT$', 'PARTITION', 'PMT', 'PPMT', 'PV',
- 'RATE', 'REPLACE', 'RIGHT', 'RIGHT$', 'RIGHTB', 'RIGHTB$', 'RMDIR', 'RND', 'RTRIM',
- 'RTRIM$', 'SECOND', 'SIN', 'SLN', 'SPACE', 'SPACE$', 'SPC', 'SPLIT', 'SQRT', 'STR', 'STR$',
- 'STRCOMP', 'STRCONV', 'STRING$', 'STRREVERSE', 'SYD', 'TAB', 'TAN', 'TIMEOFDAY',
- 'TIMER', 'TIMESERIAL', 'TIMEVALUE', 'TODAY', 'TRIM', 'TRIM$', 'TYPENAME', 'UBOUND',
- 'UCASE', 'UCASE$', 'VAL', 'WEEKDAY', 'WEEKDAYNAME', 'YEAR'
- ),
- 8 => array(
- 'ANY', 'ATN', 'CALENDAR', 'CIRCLE', 'CURRENCY', 'DEFBOOL', 'DEFBYTE', 'DEFCUR',
- 'DEFDATE', 'DEFDBL', 'DEFDEC', 'DEFINT', 'DEFLNG', 'DEFOBJ', 'DEFSNG', 'DEFSTR',
- 'DEFVAR', 'EQV', 'GOSUB', 'IMP', 'INITIALIZE', 'ISMISSING', 'LET', 'LINE', 'LSET',
- 'RSET', 'SGN', 'SQR', 'TERMINATE', 'VARIANT', 'VARTYPE', 'WEND'
- ),
- ),
- 'SYMBOLS' => array(
- '&', '&=', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', '=', '\\', '\\=',
- '^', '^='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false,
- 6 => false,
- 7 => false,
- 8 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0600FF;', //Constants
- 2 => 'color: #FF8000;', //Keywords
- 3 => 'color: #008000;', //Data Types
- 4 => 'color: #FF0000;', //Objects
- 5 => 'color: #804040;', //Operators
- 6 => 'color: #0600FF;', //Statements
- 7 => 'color: #0600FF;', //Functions
- 8 => 'color: #0600FF;' //Deprecated
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008080; font-style: italic;',
- 'MULTI' => 'color: #008080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #008080; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #808080;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #FF0000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #0000FF;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #008000;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => 'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
- 4 => ''
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 =>'.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * vbnet.php
+ * ---------
+ * Author: Alan Juden (alan at judenware.org)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/06/04
+ *
+ * VB.NET language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ * - Initial release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+ $language_data = array (
+ 'LANG_NAME' => 'vb.net',
+ 'COMMENT_SINGLE' => array(1 => "'"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ '3DDKSHADOW', '3DHIGHLIGHT', '3DLIGHT', 'ABORT', 'ABORTRETRYIGNORE', 'ACTIVEBORDER',
+ 'ACTIVETITLEBAR', 'ALIAS', 'APPLICATIONMODAL', 'APPLICATIONWORKSPACE', 'ARCHIVE',
+ 'BACK', 'BINARYCOMPARE', 'BLACK', 'BLUE', 'BUTTONFACE', 'BUTTONSHADOW', 'BUTTONTEXT',
+ 'CANCEL', 'CDROM', 'CR', 'CRITICAL', 'CRLF', 'CYAN', 'DEFAULT', 'DEFAULTBUTTON1',
+ 'DEFAULTBUTTON2', 'DEFAULTBUTTON3', 'DESKTOP', 'DIRECTORY', 'EXCLAMATION', 'FALSE',
+ 'FIXED', 'FORAPPENDING', 'FORMFEED', 'FORREADING', 'FORWRITING', 'FROMUNICODE',
+ 'GRAYTEXT', 'GREEN', 'HIDDEN', 'HIDE', 'HIGHLIGHT', 'HIGHLIGHTTEXT', 'HIRAGANA',
+ 'IGNORE', 'INACTIVEBORDER', 'INACTIVECAPTIONTEXT', 'INACTIVETITLEBAR', 'INFOBACKGROUND',
+ 'INFORMATION', 'INFOTEXT', 'KATAKANALF', 'LOWERCASE', 'MAGENTA', 'MAXIMIZEDFOCUS',
+ 'MENUBAR', 'MENUTEXT', 'METHOD', 'MINIMIZEDFOCUS', 'MINIMIZEDNOFOCUS', 'MSGBOXRIGHT',
+ 'MSGBOXRTLREADING', 'MSGBOXSETFOREGROUND', 'NARROW', 'NEWLINE', 'NO', 'NORMAL',
+ 'NORMALFOCUS', 'NORMALNOFOCUS', 'NULLSTRING', 'OBJECTERROR', 'OK', 'OKCANCEL', 'OKONLY',
+ 'PROPERCASE', 'QUESTION', 'RAMDISK', 'READONLY', 'RED', 'REMOTE', 'REMOVABLE', 'RETRY',
+ 'RETRYCANCEL', 'SCROLLBARS', 'SYSTEMFOLDER', 'SYSTEMMODAL', 'TAB', 'TEMPORARYFOLDER',
+ 'TEXTCOMPARE', 'TITLEBARTEXT', 'TRUE', 'UNICODE', 'UNKNOWN', 'UPPERCASE', 'VERTICALTAB',
+ 'VOLUME', 'WHITE', 'WIDE', 'WIN16', 'WIN32', 'WINDOWBACKGROUND', 'WINDOWFRAME',
+ 'WINDOWSFOLDER', 'WINDOWTEXT', 'YELLOW', 'YES', 'YESNO', 'YESNOCANCEL'
+ ),
+ 2 => array(
+ 'AndAlso', 'As', 'ADDHANDLER', 'ASSEMBLY', 'AUTO', 'Binary', 'ByRef', 'ByVal', 'BEGINEPILOGUE',
+ 'Else', 'ElseIf', 'Empty', 'Error', 'ENDPROLOGUE', 'EXTERNALSOURCE', 'ENVIRON', 'For',
+ 'Friend', 'GET', 'HANDLES', 'Input', 'Is', 'IsNot', 'Len', 'Lock', 'Me', 'Mid', 'MUSTINHERIT',
+ 'MYBASE', 'MYCLASS', 'New', 'Next', 'Nothing', 'Null', 'NOTINHERITABLE',
+ 'NOTOVERRIDABLE', 'OFF', 'On', 'Option', 'Optional', 'Overloads', 'OVERRIDABLE', 'ParamArray',
+ 'Print', 'Private', 'Property', 'Public', 'Resume', 'Return', 'Seek', 'Static', 'Step',
+ 'String', 'SHELL', 'SENDKEYS', 'SET', 'Shared', 'Then', 'Time', 'To', 'THROW', 'WithEvents'
+ ),
+ 3 => array(
+ 'COLLECTION', 'DEBUG', 'DICTIONARY', 'DRIVE', 'DRIVES', 'ERR', 'FILE', 'FILES',
+ 'FILESYSTEMOBJECT', 'FOLDER', 'FOLDERS', 'TEXTSTREAM'
+ ),
+ 4 => array(
+ 'BOOLEAN', 'BYTE', 'DATE', 'DECIMIAL', 'DOUBLE', 'INTEGER', 'LONG', 'OBJECT',
+ 'SINGLE STRING'
+ ),
+ 5 => array(
+ 'ADDRESSOF', 'AND', 'BITAND', 'BITNOT', 'BITOR', 'BITXOR',
+ 'GETTYPE', 'LIKE', 'MOD', 'NOT', 'ORXOR'
+ ),
+ 6 => array(
+ 'APPACTIVATE', 'BEEP', 'CALL', 'CHDIR', 'CHDRIVE', 'CLASS', 'CASE', 'CATCH', 'CONST',
+ 'DECLARE', 'DELEGATE', 'DELETESETTING', 'DIM', 'DO', 'DOEVENTS', 'END', 'ENUM',
+ 'EVENT', 'EXIT', 'EACH', 'FUNCTION', 'FINALLY', 'IF', 'IMPORTS', 'INHERITS',
+ 'INTERFACE', 'IMPLEMENTS', 'KILL', 'LOOP', 'MIDB', 'NAMESPACE', 'OPEN', 'PUT',
+ 'RAISEEVENT', 'RANDOMIZE', 'REDIM', 'REM', 'RESET', 'SAVESETTING', 'SELECT',
+ 'SETATTR', 'STOP', 'SUB', 'SYNCLOCK', 'STRUCTURE', 'SHADOWS', 'SWITCH',
+ 'TIMEOFDAY', 'TODAY', 'TRY', 'WIDTH', 'WITH', 'WRITE', 'WHILE'
+ ),
+ 7 => array(
+ 'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 'CBOOL', 'CBYTE', 'CCHAR',
+ 'CCHR', 'CDATE', 'CDBL', 'CDEC', 'CHOOSE', 'CHR', 'CHR$', 'CHRB', 'CHRB$', 'CHRW',
+ 'CINT', 'CLNG', 'CLNG8', 'CLOSE', 'COBJ', 'COMMAND', 'COMMAND$', 'CONVERSION',
+ 'COS', 'CREATEOBJECT', 'CSHORT', 'CSTR', 'CURDIR', 'CTYPE', 'CVDATE', 'DATEADD',
+ 'DATEDIFF', 'DATEPART', 'DATESERIAL', 'DATEVALUE', 'DAY', 'DDB', 'DIR', 'DIR$',
+ 'EOF', 'ERROR$', 'EXP', 'FILEATTR', 'FILECOPY', 'FILEDATATIME', 'FILELEN', 'FILTER',
+ 'FIX', 'FORMAT', 'FORMAT$', 'FORMATCURRENCY', 'FORMATDATETIME', 'FORMATNUMBER',
+ 'FORMATPERCENT', 'FREEFILE', 'FV', 'GETALLSETTINGS', 'GETATTRGETOBJECT', 'GETSETTING',
+ 'HEX', 'HEX$', 'HOUR', 'IIF', 'IMESTATUS', 'INPUT$', 'INPUTB', 'INPUTB$', 'INPUTBOX',
+ 'INSTR', 'INSTRB', 'INSTRREV', 'INT', 'IPMT', 'IRR', 'ISARRAY', 'ISDATE', 'ISEMPTY',
+ 'ISERROR', 'ISNULL', 'ISNUMERIC', 'ISOBJECT', 'JOIN', 'LBOUND', 'LCASE', 'LCASE$',
+ 'LEFT', 'LEFT$', 'LEFTB', 'LEFTB$', 'LENB', 'LINEINPUT', 'LOC', 'LOF', 'LOG', 'LTRIM',
+ 'LTRIM$', 'MID$', 'MIDB', 'MIDB$', 'MINUTE', 'MIRR', 'MKDIR', 'MONTH', 'MONTHNAME',
+ 'MSGBOX', 'NOW', 'NPER', 'NPV', 'OCT', 'OCT$', 'PARTITION', 'PMT', 'PPMT', 'PV',
+ 'RATE', 'REPLACE', 'RIGHT', 'RIGHT$', 'RIGHTB', 'RIGHTB$', 'RMDIR', 'RND', 'RTRIM',
+ 'RTRIM$', 'SECOND', 'SIN', 'SLN', 'SPACE', 'SPACE$', 'SPC', 'SPLIT', 'SQRT', 'STR', 'STR$',
+ 'STRCOMP', 'STRCONV', 'STRING$', 'STRREVERSE', 'SYD', 'TAB', 'TAN', 'TIMEOFDAY',
+ 'TIMER', 'TIMESERIAL', 'TIMEVALUE', 'TODAY', 'TRIM', 'TRIM$', 'TYPENAME', 'UBOUND',
+ 'UCASE', 'UCASE$', 'VAL', 'WEEKDAY', 'WEEKDAYNAME', 'YEAR'
+ ),
+ 8 => array(
+ 'ANY', 'ATN', 'CALENDAR', 'CIRCLE', 'CURRENCY', 'DEFBOOL', 'DEFBYTE', 'DEFCUR',
+ 'DEFDATE', 'DEFDBL', 'DEFDEC', 'DEFINT', 'DEFLNG', 'DEFOBJ', 'DEFSNG', 'DEFSTR',
+ 'DEFVAR', 'EQV', 'GOSUB', 'IMP', 'INITIALIZE', 'ISMISSING', 'LET', 'LINE', 'LSET',
+ 'RSET', 'SGN', 'SQR', 'TERMINATE', 'VARIANT', 'VARTYPE', 'WEND'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '&', '&=', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', '=', '\\', '\\=',
+ '^', '^='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0600FF;', //Constants
+ 2 => 'color: #FF8000;', //Keywords
+ 3 => 'color: #008000;', //Data Types
+ 4 => 'color: #FF0000;', //Objects
+ 5 => 'color: #804040;', //Operators
+ 6 => 'color: #0600FF;', //Statements
+ 7 => 'color: #0600FF;', //Functions
+ 8 => 'color: #0600FF;' //Deprecated
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008080; font-style: italic;',
+ 'MULTI' => 'color: #008080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #008080; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #808080;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #FF0000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #0000FF;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => 'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
+ 4 => ''
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 =>'.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/vhdl.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/vhdl.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/vhdl.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,138 +1,138 @@
-<?php
-/*************************************************************************************
- * vhdl.php
- * --------
- * Author: Alexander 'E-Razor' Krause (admin at erazor-zone.de)
- * Copyright: (c) 2005 Alexander Krause
- * Release Version: 1.0.7.21
- * Date Started: 2005/06/15
- *
- * VHDL (VHSICADL, very high speed integrated circuit HDL) language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2006/06/15 (1.0.0)
- * - First Release
- *
- * TODO
- * ----
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'VHDL',
- 'COMMENT_SINGLE' => array(1 => '--'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- /*keywords*/
- 1 => array(
- 'access','after','alias','all','assert','architecture','begin',
- 'block','body','buffer','bus','case','component','configuration','constant',
- 'disconnect','downto','else','elsif','end','entity','exit','file','for',
- 'function','generate','generic','group','guarded','if','impure','in',
- 'inertial','inout','is','label','library','linkage','literal','loop',
- 'map','new','next','null','of','on','open','others','out','package',
- 'port','postponed','procedure','process','pure','range','record','register',
- 'reject','report','return','select','severity','signal','shared','subtype',
- 'then','to','transport','type','unaffected','units','until','use','variable',
- 'wait','when','while','with','note','warning','error','failure','and',
- 'or','xor','not','nor'
- ),
- /*types*/
- 2 => array(
- 'bit','bit_vector','character','boolean','integer','real','time','string',
- 'severity_level','positive','natural','signed','unsigned','line','text',
- 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state',
- 'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength',
- 'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector'
- ),
- /*operators*/
- 3 => array(
- '=','<=',':=','=>','=='
- )
- ),
- 'SYMBOLS' => array(
- '[', ']', '(', ')',';','<','>',':'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #000000; font-weight: bold;',
- 2 => 'color: #aa0000;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #adadad; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f007f;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #ff0000;',
- 1 => 'color: #ff0000;',
- 2 => 'color: #ff0000;',
- 3 => 'color: #ff0000;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '(\b(0x)[0-9a-fA-F]{2,}[hH]?|\b(0x)?[0-9a-fA-F]{2,}[hH])|'.
- '(\b[0-9]{1,}((\.){1}[0-9]{1,}){0,1}(E)[\-]{0,1}[0-9]{1,})|'.
- '(\b(ns))|'.
- "('[0-9a-zA-Z]+)",
- 1 => "\b(''[0-9]'')"
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * vhdl.php
+ * --------
+ * Author: Alexander 'E-Razor' Krause (admin at erazor-zone.de)
+ * Copyright: (c) 2005 Alexander Krause
+ * Release Version: 1.0.7.21
+ * Date Started: 2005/06/15
+ *
+ * VHDL (VHSICADL, very high speed integrated circuit HDL) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/06/15 (1.0.0)
+ * - First Release
+ *
+ * TODO
+ * ----
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'VHDL',
+ 'COMMENT_SINGLE' => array(1 => '--'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ /*keywords*/
+ 1 => array(
+ 'access','after','alias','all','assert','architecture','begin',
+ 'block','body','buffer','bus','case','component','configuration','constant',
+ 'disconnect','downto','else','elsif','end','entity','exit','file','for',
+ 'function','generate','generic','group','guarded','if','impure','in',
+ 'inertial','inout','is','label','library','linkage','literal','loop',
+ 'map','new','next','null','of','on','open','others','out','package',
+ 'port','postponed','procedure','process','pure','range','record','register',
+ 'reject','report','return','select','severity','signal','shared','subtype',
+ 'then','to','transport','type','unaffected','units','until','use','variable',
+ 'wait','when','while','with','note','warning','error','failure','and',
+ 'or','xor','not','nor'
+ ),
+ /*types*/
+ 2 => array(
+ 'bit','bit_vector','character','boolean','integer','real','time','string',
+ 'severity_level','positive','natural','signed','unsigned','line','text',
+ 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state',
+ 'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength',
+ 'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector'
+ ),
+ /*operators*/
+ 3 => array(
+ '=','<=',':=','=>','=='
+ )
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '(', ')',';','<','>',':'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #000000; font-weight: bold;',
+ 2 => 'color: #aa0000;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #adadad; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f007f;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #ff0000;',
+ 1 => 'color: #ff0000;',
+ 2 => 'color: #ff0000;',
+ 3 => 'color: #ff0000;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '(\b(0x)[0-9a-fA-F]{2,}[hH]?|\b(0x)?[0-9a-fA-F]{2,}[hH])|'.
+ '(\b[0-9]{1,}((\.){1}[0-9]{1,}){0,1}(E)[\-]{0,1}[0-9]{1,})|'.
+ '(\b(ns))|'.
+ "('[0-9a-zA-Z]+)",
+ 1 => "\b(''[0-9]'')"
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/visualfoxpro.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/visualfoxpro.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/visualfoxpro.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,442 +1,442 @@
-<?php
-/*************************************************************************************
- * visualfoxpro.php
- * ----------------
- * Author: Roberto Armellin (r.armellin at tin.it)
- * Copyright: (c) 2004 Roberto Armellin, Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/09/17
- *
- * Visual FoxPro language file for GeSHi.
- *
- * CHANGES
- * -------
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/10/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Visual Fox Pro',
- 'COMMENT_SINGLE' => array(1 => "//", 2 => "\n*"),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array('"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array('Case', 'Else', '#Else', 'Then',
- 'Endcase', 'Enddefine', 'Enddo', 'Endfor', 'Endfunc', 'Endif', 'Endprintjob',
- 'Endproc', 'Endscan', 'Endtext', 'Endwith', '#Endif',
- '#Elif','#Else','#Endif','#Define','#If','#Include',
- '#Itsexpression','#Readclauses','#Region','#Section','#Undef','#Wname',
- 'Case','Define','Do','Else','Endcase','Enddefine',
- 'Enddo','Endfor','Endfunc','Endif','Endprintjob','Endproc',
- 'Endscan','Endtext','Endwith','For','Function','Hidden',
- 'If','Local','Lparameter','Lparameters','Next','Otherwise',
- 'Parameters','Printjob','Procedure','Protected','Public','Scan',
- 'Text','Then','While','With','?','??',
- '???','Abs','Accept','Access','Aclass','Acopy',
- 'Acos','Adatabases','Adbobjects','Addbs','Addrelationtoenv','Addtabletoenv',
- 'Adel','Adir','Aelement','Aerror','Afields','Afont',
- 'Agetclass','Agetfileversion','Ains','Ainstance','Alen','Align',
- 'Alines','Alltrim','Alter','Amembers','Amouseobj','Anetresources',
- 'Ansitooem','Append','Aprinters','Ascan','Aselobj','Asin',
- 'Asort','Assert','Asserts','Assist','Asubscript','Asynchronous',
- 'At_c','Atan','Atc','Atcc','Atcline','Atline',
- 'Atn2','Aused','Autoform','Autoreport','Avcxclasses','Average',
- 'BarCount','BarPrompt','BatchMode','BatchUpdateCount','Begin','BellSound',
- 'BinToC','Bintoc','Bitand','Bitclear','Bitlshift','Bitnot',
- 'Bitor','Bitrshift','Bitset','Bittest','Bitxor','Bof',
- 'Browse','BrowseRefresh','Buffering','BuilderLock','COMArray','COMReturnError',
- 'CToBin','Calculate','Call','Capslock','Cd','Cdow',
- 'Ceiling','Central','Change','Char','Chdir','Chr',
- 'Chrsaw','Chrtran','Chrtranc','Close','Cmonth','Cntbar',
- 'Cntpad','Col','Comclassinfo','CommandTargetQuery','Compile','Completed',
- 'Compobj','Compute','Concat','ConnectBusy','ConnectHandle','ConnectName',
- 'ConnectString','ConnectTimeOut','ContainerReleaseType','Continue','Copy','Cos',
- 'Cot','Count','Coverage','Cpconvert','Cpcurrent','Cpdbf',
- 'Cpnotrans','Create','CreateBinary','Createobject','Createobjectex','Createoffline',
- 'CrsBuffering','CrsFetchMemo','CrsFetchSize','CrsMaxRows','CrsMethodUsed','CrsNumBatch',
- 'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctobin','Ctod','Ctot',
- 'Curdate','Curdir','CurrLeft','CurrSymbol','CursorGetProp','CursorSetProp',
- 'Curtime','Curval','DBGetProp','DBSetProp','DB_BufLockRow','DB_BufLockTable',
- 'DB_BufOff','DB_BufOptRow','DB_BufOptTable','DB_Complette','DB_DeleteInsert','DB_KeyAndModified',
- 'DB_KeyAndTimestamp','DB_KeyAndUpdatable','DB_LocalSQL','DB_NoPrompt','DB_Prompt','DB_RemoteSQL',
- 'DB_TransAuto','DB_TransManual','DB_TransNone','DB_Update','Datetime','Day',
- 'Dayname','Dayofmonth','Dayofweek','Dayofyear','Dbalias','Dbused',
- 'Ddeaborttrans','Ddeadvise','Ddeenabled','Ddeexecute','Ddeinitiate','Ddelasterror',
- 'Ddepoke','Dderequest','Ddesetoption','Ddesetservice','Ddesettopic','Ddeterminate',
- 'Debugout','Declare','DefOLELCid','DefaultValue','Defaultext','Degrees',
- 'DeleteTrigger','Desc','Description','Difference','Dimension','Dir',
- 'Directory','Diskspace','DispLogin','DispWarnings','Display','Dll',
- 'Dmy','DoDefault','DoEvents','Doc','Doevents','Dow',
- 'Drivetype','Drop','Dropoffline','Dtoc','Dtor','Dtos',
- 'Dtot','DynamicInputMask','Each','Edit','Eject','Elif',
- 'End','Eof','Erase','Evaluate','Event','Eventtracking',
- 'Exclude','Exclusive','Exit','Exp','Export','External',
- 'FDate','FTime','Fchsize','Fclose','Fcount','Fcreate',
- 'Feof','Ferror','FetchMemo','FetchSize','Fflush','Fgets',
- 'Filer','Filetostr','Find','Fklabel','Fkmax','Fldlist',
- 'Flock','Floor','Flush','Fontmetric','Fopen','Forceext',
- 'Forcepath','FormSetClass','FormSetLib','FormsClass','FormsLib','Found',
- 'FoxPro','Foxcode','Foxdoc','Foxgen','Foxgraph','Foxview',
- 'Fputs','Fread','French','Fseek','Fsize','Fv',
- 'Fwrite','Gather','German','GetPem','Getbar','Getcolor',
- 'Getcp','Getdir','Getenv','Getexpr','Getfile','Getfldstate',
- 'Getfont','Gethost','Getnextmodified','Getobject','Getpad','Getpict',
- 'Getprinter','Go','Gomonth','Goto','Graph','GridHorz',
- 'GridShow','GridShowPos','GridSnap','GridVert','Help','HelpOn',
- 'HelpTo','HighLightRow','Home','Hour','IMEStatus','IdleTimeOut',
- 'Idxcollate','Ifdef','Ifndef','Iif','Import','Include',
- 'Indbc','Index','Indexseek','Inkey','Inlist','Input',
- 'Insert','InsertTrigger','Insmode','IsBlank','IsFLocked','IsLeadByte',
- 'IsMouse','IsNull','IsRLocked','Isalpha','Iscolor','Isdigit',
- 'Isexclusive','Isflocked','Ishosted','Islower','Isreadonly','Isrlocked',
- 'Isupper','Italian','Japan','Join','Justdrive','Justext',
- 'Justfname','Justpath','Juststem','KeyField','KeyFieldList','Keyboard'
- ),
- 2 => array('Keymatch','LastProject','Lastkey','Lcase','Leftc','Len',
- 'Lenc','Length','Likec','Lineno','LoadPicture','Loadpicture',
- 'Locate','Locfile','Log','Log10','Logout','Lookup',
- 'Loop','Lower','Ltrim','Lupdate','Mail','MaxRecords',
- 'Mcol','Md','Mdown','Mdx','Mdy','Memlines',
- 'Menu','Messagebox','Minute','Mkdir','Mline','Modify',
- 'Month','Monthname','Mouse','Mrkbar','Mrkpad','Mrow',
- 'Mtdll','Mton','Mwindow','Native','Ndx','Network',
- 'NoFilter','Nodefault','Normalize','Note','Now','Ntom',
- 'NullString','Numlock','Nvl','ODBChdbc','ODBChstmt','OLEDropTextInsertion',
- 'OLELCid','Objnum','Objref','Objtoclient','Objvar','Occurs',
- 'Oemtoansi','Oldval','OlePublic','Olereturnerror','On','Open',
- 'Oracle','Order','Os','Outer','PCount','Pack',
- 'PacketSize','Padc','Padl','Padr','Payment','Pcol',
- 'PemStatus','Pi','Pivot','Play','Pop','Popup',
- 'Power','PrimaryKey','Printstatus','Private','Prmbar','Prmpad',
- 'ProjectClick','Proper','Prow','Prtinfo','Push','Putfile',
- 'Pv','Qpr','Quater','QueryTimeOut','Quit','Radians',
- 'Rand','Rat','Ratc','Ratline','Rd','Rdlevel',
- 'Read','Readkey','Recall','Reccount','RecentlyUsedFiles','Recno',
- 'Recsize','Regional','Reindex','RelatedChild','RelatedTable','RelatedTag',
- 'Remove','Rename','Repeat','Replace','Replicate','Report',
- 'ResHeight','ResWidth','ResourceOn','ResourceTo','Resources','Restore',
- 'Resume','Retry','Return','Revertoffline','Rgbscheme','Rightc',
- 'Rlock','Rmdir','Rollback','Round','Rtod','Rtrim',
- 'RuleExpression','RuleText','Run','Runscript','Rview','SQLAsynchronous',
- 'SQLBatchMode','SQLCancel','SQLColumns','SQLConnect','SQLConnectTimeOut','SQLDisconnect',
- 'SQLDispLogin','SQLDispWarnings','SQLExec','SQLGetProp','SQLIdleTimeOut','SQLMoreResults',
- 'SQLPrepare','SQLQueryTimeOut','SQLSetProp','SQLTables','SQLTransactions','SQLWaitTime',
- 'Save','SavePicture','Savepicture','ScaleUnits','Scatter','Scols',
- 'Scroll','Sec','Second','Seek','Select','SendUpdates',
- 'Set','SetDefault','Setfldstate','Setup','ShareConnection','ShowOLEControls',
- 'ShowOLEInsertable','ShowVCXs','Sign','Sin','Size','SizeBox',
- 'Skpbar','Skppad','Sort','Soundex','SourceName','Sqlcommit',
- 'Sqll','Sqlrollback','Sqlstringconnect','Sqrt','Srows','StatusBar',
- 'Store','Str','Strconv','Strtofile','Strtran','Stuff',
- 'Stuffc','Substr','Substrc','Substring','Sum','Suspend',
- 'Sys','Sysmetric','TabOrdering','Table','TableRefresh','Tablerevert',
- 'Tableupdate','TagCount','TagNo','Tan','Target','This',
- 'Thisform','Thisformset','Timestamp','Timestampdiff','Total','Transactions',
- 'Transform','Trim','Truncate','Ttoc','Ttod','Txnlevel',
- 'Txtwidth','Type','Ucase','Undefine','Unlock','Unpack',
- 'Updatable','UpdatableFieldList','Update','UpdateName','UpdateNameList','UpdateTrigger',
- 'UpdateType','Updated','Upper','Upsizing','Usa','Use',
- 'UseMemoSize','Used','Val','Validate','Varread','Vartype',
- 'Version','VersionLanguage','Wait','WaitTime','Wborder','Wchild',
- 'Wcols','Week','Wexist','Wfont','WhereType','Windcmd',
- 'Windhelp','Windmemo','Windmenu','Windmodify','Windquery','Windscreen',
- 'Windsnip','Windstproc','WizardPrompt','Wlast','Wlcol','Wlrow',
- 'Wmaximum','Wminimum','Wontop','Woutput','Wparent','Wread',
- 'Wrows','Wtitle','Wvisible','Year','Zap','_Alignment',
- '_Asciicols','_Asciirows','_Assist','_Beautify','_Box','_Browser',
- '_Builder','_Calcmem','_Calcvalue','_Cliptext','_Converter','_Coverage',
- '_Curobj','_Dblclick','_Diarydate','_Dos','_Foxdoc','_Foxgraph',
- '_Gallery','_Gengraph','_Genhtml','_Genmenu','_Genpd','_Genscrn',
- '_Genxtab','_Getexpr','_Include','_Indent','_Lmargin','_Mac',
- '_Mbr_appnd','_Mbr_cpart','_Mbr_delet','_Mbr_font','_Mbr_goto','_Mbr_grid',
- '_Mbr_link','_Mbr_mode','_Mbr_mvfld','_Mbr_mvprt','_Mbr_seek','_Mbr_sp100',
- '_Mbr_sp200','_Mbr_szfld','_Mbrowse','_Mda_appnd','_Mda_avg','_Mda_brow',
- '_Mda_calc','_Mda_copy','_Mda_count','_Mda_label','_Mda_pack','_Mda_reprt',
- '_Mda_rindx','_Mda_setup','_Mda_sort','_Mda_sp100','_Mda_sp200','_Mda_sp300',
- '_Mda_sum','_Mda_total','_Mdata','_Mdiary','_Med_clear','_Med_copy',
- '_Med_cut','_Med_cvtst','_Med_find','_Med_finda','_Med_goto','_Med_insob',
- '_Med_link','_Med_obj','_Med_paste','_Med_pref','_Med_pstlk','_Med_redo',
- '_Med_repl','_Med_repla','_Med_slcta','_Med_sp100','_Med_sp200','_Med_sp300',
- '_Med_sp400','_Med_sp500','_Med_undo','_Medit','_Mfi_clall','_Mfi_close',
- '_Mfi_export','_Mfi_import','_Mfi_new','_Mfi_open','_Mfi_pgset','_Mfi_prevu',
- '_Mfi_print','_Mfi_quit','_Mfi_revrt','_Mfi_savas','_Mfi_save','_Mfi_send',
- '_Mfi_setup','_Mfi_sp100','_Mfi_sp200','_Mfi_sp300','_Mfi_sp400','_Mfile',
- '_Mfiler','_Mfirst','_Mlabel','_Mlast','_Mline','_Mmacro',
- '_Mmbldr','_Mpr_beaut','_Mpr_cancl','_Mpr_compl','_Mpr_do','_Mpr_docum',
- '_Mpr_formwz','_Mpr_gener','_Mpr_graph','_Mpr_resum','_Mpr_sp100','_Mpr_sp200',
- '_Mpr_sp300','_Mpr_suspend','_Mprog','_Mproj','_Mrc_appnd','_Mrc_chnge',
- '_Mrc_cont','_Mrc_delet','_Mrc_goto','_Mrc_locat','_Mrc_recal','_Mrc_repl',
- '_Mrc_seek','_Mrc_sp100','_Mrc_sp200','_Mrecord','_Mreport','_Mrqbe',
- '_Mscreen','_Msm_data','_Msm_edit','_Msm_file','_Msm_format','_Msm_prog',
- '_Msm_recrd','_Msm_systm','_Msm_text','_Msm_tools','_Msm_view','_Msm_windo',
- '_Mst_about','_Mst_ascii','_Mst_calcu','_Mst_captr','_Mst_dbase','_Mst_diary',
- '_Mst_filer','_Mst_help','_Mst_hphow','_Mst_hpsch','_Mst_macro','_Mst_office',
- '_Mst_puzzl','_Mst_sp100','_Mst_sp200','_Mst_sp300','_Mst_specl','_Msysmenu',
- '_Msystem','_Mtable','_Mtb_appnd','_Mtb_cpart','_Mtb_delet','_Mtb_delrc',
- '_Mtb_goto','_Mtb_link','_Mtb_mvfld','_Mtb_mvprt','_Mtb_props','_Mtb_recal',
- '_Mtb_sp100','_Mtb_sp200','_Mtb_sp300','_Mtb_sp400','_Mtb_szfld','_Mwi_arran',
- '_Mwi_clear','_Mwi_cmd','_Mwi_color','_Mwi_debug','_Mwi_hide','_Mwi_hidea',
- '_Mwi_min','_Mwi_move','_Mwi_rotat','_Mwi_showa','_Mwi_size','_Mwi_sp100',
- '_Mwi_sp200','_Mwi_toolb','_Mwi_trace','_Mwi_view','_Mwi_zoom','_Mwindow',
- '_Mwizards','_Mwz_all','_Mwz_form','_Mwz_foxdoc','_Mwz_import','_Mwz_label',
- '_Mwz_mail','_Mwz_pivot','_Mwz_query','_Mwz_reprt','_Mwz_setup','_Mwz_table',
- '_Mwz_upsizing','_Netware','_Oracle','_Padvance','_Pageno','_Pbpage',
- '_Pcolno','_Pcopies','_Pdparms','_Pdriver','_Pdsetup','_Pecode',
- '_Peject','_Pepage','_Pform','_Plength','_Plineno','_Ploffset',
- '_Ppitch','_Pquality','_Pretext','_Pscode','_Pspacing','_Pwait',
- '_Rmargin','_Runactivedoc','_Samples','_Screen','_Shell','_Spellchk',
- '_Sqlserver','_Startup','_Tabs','_Tally','_Text','_Throttle',
- '_Transport','_Triggerlevel','_Unix','_WebDevOnly','_WebMenu','_WebMsftHomePage',
- '_WebVFPHomePage','_WebVfpOnlineSupport','_Windows','_Wizard','_Wrap','_scctext',
- '_vfp','Additive','After','Again','Aindent','Alignright',
- 'All','Alt','Alternate','And','Ansi','Any',
- 'Aplabout','App','Array','As','Asc','Ascending',
- 'Ascii','At','Attributes','Automatic','Autosave','Avg',
- 'Bar','Before','Bell','Between','Bitmap','Blank',
- 'Blink','Blocksize','Border','Bottom','Brstatus','Bucket',
- 'Buffers','By','Candidate','Carry','Cascade','Catalog',
- 'Cdx','Center','Century','Cga','Character','Check',
- 'Classlib','Clock','Cnt','Codepage','Collate','Color',
- 'Com1','Com2','Command','Compact','Compatible','Compress',
- 'Confirm','Connection','Connections','Connstring','Console','Copies',
- 'Cpcompile','Cpdialog','Csv','Currency','Cycle','Databases',
- 'Datasource','Date','Db4','Dbc','Dbf','Dbmemo3',
- 'Debug','Decimals','Defaultsource','Deletetables','Delimited','Delimiters',
- 'Descending','Design','Development','Device','Dif','Disabled',
- 'Distinct','Dlls','Dohistory','Dos','Dosmem','Double',
- 'Driver','Duplex','Echo','Editwork','Ega25','Ega43',
- 'Ems','Ems64','Encrypt','Encryption','Environment','Escape',
- 'Events','Exact','Except','Exe','Exists','Expression',
- 'Extended','F','Fdow','Fetch','Field','Fields',
- 'File','Files','Fill','Fixed','Float','Foldconst',
- 'Font','Footer','Force','Foreign','Fox2x','Foxplus',
- 'Free','Freeze','From','Fullpath','Fw2','Fweek',
- 'Get','Gets','Global','Group','Grow','Halfheight',
- 'Having','Heading','Headings','Helpfilter','History','Hmemory',
- 'Hours','Id','In','Indexes','Information','Instruct',
- 'Int','Integer','Intensity','Intersect','Into','Is',
- 'Isometric','Key','Keycolumns','Keycomp','Keyset','Last',
- 'Ledit','Level','Library','Like','Linked','Lock',
- 'Logerrors','Long','Lpartition','Mac','Macdesktop','Machelp',
- 'Mackey','Macros','Mark','Master','Max','Maxmem',
- 'Mdi','Memlimit','Memory','Memos','Memowidth','Memvar',
- 'Menus','Messages','Middle','Min','Minimize','Minus',
- 'Mod','Modal','Module','Mono43','Movers','Multilocks',
- 'Mvarsiz','Mvcount','N','Near','Negotiate','Noalias',
- 'Noappend','Noclear','Noclose','Noconsole','Nocptrans','Nodata',
- 'Nodebug','Nodelete','Nodup','Noedit','Noeject','Noenvironment',
- 'Nofloat','Nofollow','Nogrow','Noinit','Nolgrid','Nolink',
- 'Nolock','Nomargin','Nomdi','Nomenu','Nominimize','Nomodify'
- ),
- 3 => array('Nomouse','None','Nooptimize','Nooverwrite','Noprojecthook','Noprompt',
- 'Noread','Norefresh','Norequery','Norgrid','Norm','Normal',
- 'Nosave','Noshadow','Noshow','Nospace','Not','Notab',
- 'Notify','Noupdate','Novalidate','Noverify','Nowait','Nowindow',
- 'Nowrap','Nozoom','Npv','Null','Number','Objects',
- 'Odometer','Of','Off','Oleobjects','Only','Optimize',
- 'Or','Orientation','Output','Outshow','Overlay','Overwrite',
- 'Pad','Palette','Paperlength','Papersize','Paperwidth','Password',
- 'Path','Pattern','Pause','Pdox','Pdsetup','Pen',
- 'Pfs','Pixels','Plain','Popups','Precision','Preference',
- 'Preview','Primary','Printer','Printquality','Procedures','Production',
- 'Program','Progwork','Project','Prompt','Query','Random',
- 'Range','Readborder','Readerror','Record','Recover','Redit',
- 'Reference','References','Relative','Remote','Reprocess','Resource',
- 'Rest','Restrict','Rgb','Right','Row','Rowset',
- 'Rpd','Runtime','Safety','Same','Sample','Say',
- 'Scale','Scheme','Scoreboard','Screen','Sdf','Seconds',
- 'Selection','Shadows','Shared','Sheet','Shell','Shift',
- 'Shutdown','Single','Some','Sortwork','Space','Sql',
- 'Standalone','Status','Std','Step','Sticky','String',
- 'Structure','Subclass','Summary','Sylk','Sysformats','Sysmenus',
- 'System','T','Tab','Tables','Talk','Tedit',
- 'Textmerge','Time','Timeout','Titles','Tmpfiles','To',
- 'Topic','Transaction','Trap','Trbetween','Trigger','Ttoption',
- 'Typeahead','Udfparms','Union','Unique','Userid','Users',
- 'Values','Var','Verb','Vga25','Vga50','Views',
- 'Volume','Where','Windows','Wk1','Wk3','Wks',
- 'Workarea','Wp','Wr1','Wrap','Wrk','Xcmdfile',
- 'Xl5','Xl8','Xls','Y','Yresolution','Zoom',
- 'Activate','ActivateCell','Add','AddColumn','AddItem','AddListItem',
- 'AddObject','AddProperty','AddToSCC','AfterBuild','AfterCloseTables','AfterDock',
- 'AfterRowColChange','BeforeBuild','BeforeDock','BeforeOpenTables','BeforeRowColChange','Box',
- 'Build','CheckIn','CheckOut','Circle','Clear','ClearData',
- 'Cleanup','Click','CloneObject','CloseEditor','CloseTables','Cls',
- 'CommandTargetExec','CommandTargetQueryStas','ContainerRelease','DataToClip','DblClick','Deactivate',
- 'Delete','DeleteColumn','Deleted','Destroy','DoCmd','Dock',
- 'DoScroll','DoVerb','DownClick','Drag','DragDrop','DragOver',
- 'DropDown','Draw','EnterFocus','Error','ErrorMessage','Eval',
- 'ExitFocus','FormatChange','GetData','GetFormat','GetLatestVersion','GoBack',
- 'GotFocus','GoForward','GridHitTest','Hide','HideDoc','IndexToItemId',
- 'Init','InteractiveChange','Item','ItemIdToIndex','KeyPress','Line',
- 'Load','LostFocus','Message','MiddleClick','MouseDown','MouseMove',
- 'MouseUp','MouseWheel','Move','Moved','NavigateTo','Newobject',
- 'OLECompleteDrag','OLEDrag','OLEDragDrop','OLEDragOver','OLEGiveFeedback','OLESetData',
- 'OLEStartDrag','OpenEditor','OpenTables','Paint','Point','Print',
- 'ProgrammaticChange','PSet','QueryAddFile','QueryModifyFile','QueryRemoveFile','QueryRunFile',
- 'QueryUnload','RangeHigh','RangeLow','ReadActivate','ReadExpression','ReadDeactivate',
- 'ReadMethod','ReadShow','ReadValid','ReadWhen','Refresh','Release',
- 'RemoveFromSCC','RemoveItem','RemoveListItem','RemoveObject','Requery','RequestData',
- 'Reset','ResetToDefault','Resize','RightClick','SaveAs','SaveAsClass',
- 'Scrolled','SetAll','SetData','SetFocus','SetFormat','SetMain',
- 'SetVar','SetViewPort','ShowDoc','ShowWhatsThis','TextHeight','TextWidth',
- 'Timer','UIEnable','UnDock','UndoCheckOut','Unload','UpClick',
- 'Valid','WhatsThisMode','When','WriteExpression','WriteMethod','ZOrder',
- 'ATGetColors','ATListColors','Accelerate','ActiveColumn','ActiveControl','ActiveForm',
- 'ActiveObjectId','ActivePage','ActiveProject','ActiveRow','AddLineFeeds','Alias',
- 'Alignment','AllowAddNew','AllowHeaderSizing','AllowResize','AllowRowSizing','AllowTabs',
- 'AlwaysOnTop','Application','AutoActivate','AutoCenter','AutoCloseTables','AutoIncrement',
- 'AutoOpenTables','AutoRelease','AutoSize','AutoVerbMenu','AutoYield','AvailNum',
- 'BackColor','BackStyle','BaseClass','BorderColor','BorderStyle','BorderWidth',
- 'Bound','BoundColumn','BoundTo','BrowseAlignment','BrowseCellMarg','BrowseDestWidth',
- 'BufferMode','BufferModeOverride','BuildDateTime','ButtonCount','ButtonIndex','Buttons',
- 'CLSID','CanAccelerate','CanGetFocus','CanLoseFocus','Cancel','Caption',
- 'ChildAlias','ChildOrder','Class','ClassLibrary','ClipControls','ClipRect',
- 'Closable','ColorScheme','ColorSource','ColumnCount','ColumnHeaders','ColumnLines',
- 'ColumnOrder','ColumnWidths','Columns','Comment','ContinuousScroll','ControlBox',
- 'ControlCount','ControlIndex','ControlSource','Controls','CurrentControl','CurrentX',
- 'CurrentY','CursorSource','Curvature','DataSession','DataSessionId','DataSourceObj',
- 'DataType','Database','DateFormat','DateMark','DefButton','DefButtonOrig',
- 'DefHeight','DefLeft','DefTop','DefWidth','Default','DefaultFilePath',
- 'DefineWindows','DeleteMark','Desktop','Dirty','DisabledBackColor','DisabledByEOF',
- 'DisabledForeColor','DisabledItemBackColor','DisabledItemForeColor','DisabledPicture','DispPageHeight','DispPageWidth',
- 'DisplayCount','DisplayValue','DoCreate','DockPosition','Docked','DocumentFile',
- 'DownPicture','DragIcon','DragMode','DragState','DrawMode','DrawStyle',
- 'DrawWidth','DynamicAlignment','DynamicBackColor','DynamicCurrentControl','DynamicFontBold','DynamicFontItalic',
- 'DynamicFontName','DynamicFontOutline','DynamicFontShadow','DynamicFontSize','DynamicFontStrikethru','DynamicFontUnderline',
- 'DynamicForeColor','EditFlags','Enabled','EnabledByReadLock','Encrypted','EnvLevel',
- 'ErasePage','FileClass','FileClassLibrary','FillColor','FillStyle','Filter',
- 'FirstElement','FontBold','FontItalic','FontName','FontOutline','FontShadow',
- 'FontSize','FontStrikethru','FontUnderline','ForceFocus','ForeColor','FormCount',
- 'FormIndex','FormPageCount','FormPageIndex','Format','Forms','FoxFont',
- 'FullName','GoFirst','GoLast','GridLineColor','GridLineWidth','GridLines'
- ),
- 4 => array('HPROJ','HWnd','HalfHeightCaption','HasClip','HeaderGap','HeaderHeight',
- 'Height','HelpContextID','HideSelection','Highlight','HomeDir','HostName',
- 'HotKey','HscrollSmallChange','IMEMode','Icon','IgnoreInsert','InResize',
- 'Increment','IncrementalSearch','InitialSelectedAlias','InputMask','Instancing','IntegralHeight',
- 'Interval','ItemBackColor','ItemData','ItemForeColor','ItemIDData','ItemTips',
- 'JustReadLocked','KeyPreview','KeyboardHighValue','KeyboardLowValue','LastModified','Left',
- 'LeftColumn','LineSlant','LinkMaster','List','ListCount','ListIndex',
- 'ListItem','ListItemId','LockDataSource','LockScreen','MDIForm','MainClass',
- 'MainFile','Margin','MaxButton','MaxHeight','MaxLeft','MaxLength',
- 'MaxTop','MaxWidth','MemoWindow','MinButton','MinHeight','MinWidth',
- 'MouseIcon','MousePointer','Movable','MoverBars','MultiSelect','Name',
- 'NapTime','NewIndex','NewItemId','NoDataOnLoad','NoDefine','NotifyContainer',
- 'NullDisplay','NumberOfElements','OLEDragMode','OLEDragPicture','OLEDropEffects','OLEDropHasData',
- 'OLEDropMode','OLERequestPendingTimeOut','OLEServerBusyRaiseError','OLEServerBusyTimeOut','OLETypeAllowed','OleClass',
- 'OleClassId','OleControlContainer','OleIDispInValue','OleIDispOutValue','OleIDispatchIncoming','OleIDispatchOutgoing',
- 'OnResize','OneToMany','OpenViews','OpenWindow','PageCount','PageHeight',
- 'PageOrder','PageWidth','Pages','Panel','PanelLink','Parent',
- 'ParentAlias','ParentClass','Partition','PasswordChar','Picture','ProcessID',
- 'ProgID','ProjectHookClass','ProjectHookLibrary','Projects','ReadColors','ReadCycle',
- 'ReadFiller','ReadLock','ReadMouse','ReadOnly','ReadSave','ReadSize',
- 'ReadTimeout','RecordMark','RecordSource','RecordSourceType','Rect','RelationalExpr',
- 'RelativeColumn','RelativeRow','ReleaseErase','ReleaseType','ReleaseWindows','Resizable',
- 'RightToLeft','RowHeight','RowSource','RowSourceType','SCCProvider','SCCStatus',
- 'SDIForm','ScaleMode','ScrollBars','SelLength','SelStart','SelText',
- 'SelectOnEntry','Selected','SelectedBackColor','SelectedForeColor','SelectedID','SelectedItemBackColor',
- 'SelectedItemForeColor','SelfEdit','ServerClass','ServerClassLibrary','ServerHelpFile','ServerName',
- 'ServerProject','ShowTips','ShowWindow','Sizable','Size<height>','Size<maxlength>',
- 'Size<width>','Skip','SkipForm','Sorted','SourceType','Sparse',
- 'SpecialEffect','SpinnerHighValue','SpinnerLowValue','SplitBar','StartMode','StatusBarText',
- 'Stretch','StrictDateEntry','Style','SystemRefCount','TabIndex','TabStop',
- 'TabStretch','TabStyle','Tabhit','Tabs','Tag','TerminateRead',
- 'ThreadID','TitleBar','ToolTipText','Top','TopIndex','TopItemId',
- 'TypeLibCLSID','TypeLibDesc','TypeLibName','UnlockDataSource','Value','ValueDirty',
- 'VersionComments','VersionCompany','VersionCopyright','VersionDescription','VersionNumber','VersionProduct',
- 'VersionTrademarks','View','ViewPortHeight','ViewPortLeft','ViewPortTop','ViewPortWidth',
- 'Visible','VscrollSmallChange','WasActive','WasOpen','WhatsThisButton','WhatsThisHelp',
- 'WhatsThisHelpID','Width','WindowList','WindowNTIList','WindowState','WindowType',
- 'WordWrap','ZOrderSet','ActiveDoc','Checkbox','Column','ComboBox',
- 'CommandButton','CommandGroup','Container','Control','Cursor','Custom',
- 'DataEnvironment','EditBox','Empty','FontClass','Form','Formset',
- 'General','Grid','Header','HyperLink','Image','Label',
- 'ListBox','Memo','OleBaseControl','OleBoundControl','OleClassIDispOut','OleControl',
- 'OptionButton','OptionGroup','Page','PageFrame','ProjectHook','RectClass',
- 'Relation','Session','Shape','Spinner','TextBox' ,'Toolbar'
- ),
- ),
- 'SYMBOLS' => array("!", "@", "$", "%", "(", ")", "-", "+", "=", "/", "{", "}", "[", "]", ":", ";", ",", " ", ".", "*", "&"),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: blue;',
- 2 => 'color: blue;',
- 3 => 'color: blue;',
- 4 => 'color: blue;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: green; font-style: italic;',
- 2 => 'color: green; font-style: italic;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: blue;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 1 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: blue;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * visualfoxpro.php
+ * ----------------
+ * Author: Roberto Armellin (r.armellin at tin.it)
+ * Copyright: (c) 2004 Roberto Armellin, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/09/17
+ *
+ * Visual FoxPro language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/10/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Visual Fox Pro',
+ 'COMMENT_SINGLE' => array(1 => "//", 2 => "\n*"),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array('"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array('Case', 'Else', '#Else', 'Then',
+ 'Endcase', 'Enddefine', 'Enddo', 'Endfor', 'Endfunc', 'Endif', 'Endprintjob',
+ 'Endproc', 'Endscan', 'Endtext', 'Endwith', '#Endif',
+ '#Elif','#Else','#Endif','#Define','#If','#Include',
+ '#Itsexpression','#Readclauses','#Region','#Section','#Undef','#Wname',
+ 'Case','Define','Do','Else','Endcase','Enddefine',
+ 'Enddo','Endfor','Endfunc','Endif','Endprintjob','Endproc',
+ 'Endscan','Endtext','Endwith','For','Function','Hidden',
+ 'If','Local','Lparameter','Lparameters','Next','Otherwise',
+ 'Parameters','Printjob','Procedure','Protected','Public','Scan',
+ 'Text','Then','While','With','?','??',
+ '???','Abs','Accept','Access','Aclass','Acopy',
+ 'Acos','Adatabases','Adbobjects','Addbs','Addrelationtoenv','Addtabletoenv',
+ 'Adel','Adir','Aelement','Aerror','Afields','Afont',
+ 'Agetclass','Agetfileversion','Ains','Ainstance','Alen','Align',
+ 'Alines','Alltrim','Alter','Amembers','Amouseobj','Anetresources',
+ 'Ansitooem','Append','Aprinters','Ascan','Aselobj','Asin',
+ 'Asort','Assert','Asserts','Assist','Asubscript','Asynchronous',
+ 'At_c','Atan','Atc','Atcc','Atcline','Atline',
+ 'Atn2','Aused','Autoform','Autoreport','Avcxclasses','Average',
+ 'BarCount','BarPrompt','BatchMode','BatchUpdateCount','Begin','BellSound',
+ 'BinToC','Bintoc','Bitand','Bitclear','Bitlshift','Bitnot',
+ 'Bitor','Bitrshift','Bitset','Bittest','Bitxor','Bof',
+ 'Browse','BrowseRefresh','Buffering','BuilderLock','COMArray','COMReturnError',
+ 'CToBin','Calculate','Call','Capslock','Cd','Cdow',
+ 'Ceiling','Central','Change','Char','Chdir','Chr',
+ 'Chrsaw','Chrtran','Chrtranc','Close','Cmonth','Cntbar',
+ 'Cntpad','Col','Comclassinfo','CommandTargetQuery','Compile','Completed',
+ 'Compobj','Compute','Concat','ConnectBusy','ConnectHandle','ConnectName',
+ 'ConnectString','ConnectTimeOut','ContainerReleaseType','Continue','Copy','Cos',
+ 'Cot','Count','Coverage','Cpconvert','Cpcurrent','Cpdbf',
+ 'Cpnotrans','Create','CreateBinary','Createobject','Createobjectex','Createoffline',
+ 'CrsBuffering','CrsFetchMemo','CrsFetchSize','CrsMaxRows','CrsMethodUsed','CrsNumBatch',
+ 'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctobin','Ctod','Ctot',
+ 'Curdate','Curdir','CurrLeft','CurrSymbol','CursorGetProp','CursorSetProp',
+ 'Curtime','Curval','DBGetProp','DBSetProp','DB_BufLockRow','DB_BufLockTable',
+ 'DB_BufOff','DB_BufOptRow','DB_BufOptTable','DB_Complette','DB_DeleteInsert','DB_KeyAndModified',
+ 'DB_KeyAndTimestamp','DB_KeyAndUpdatable','DB_LocalSQL','DB_NoPrompt','DB_Prompt','DB_RemoteSQL',
+ 'DB_TransAuto','DB_TransManual','DB_TransNone','DB_Update','Datetime','Day',
+ 'Dayname','Dayofmonth','Dayofweek','Dayofyear','Dbalias','Dbused',
+ 'Ddeaborttrans','Ddeadvise','Ddeenabled','Ddeexecute','Ddeinitiate','Ddelasterror',
+ 'Ddepoke','Dderequest','Ddesetoption','Ddesetservice','Ddesettopic','Ddeterminate',
+ 'Debugout','Declare','DefOLELCid','DefaultValue','Defaultext','Degrees',
+ 'DeleteTrigger','Desc','Description','Difference','Dimension','Dir',
+ 'Directory','Diskspace','DispLogin','DispWarnings','Display','Dll',
+ 'Dmy','DoDefault','DoEvents','Doc','Doevents','Dow',
+ 'Drivetype','Drop','Dropoffline','Dtoc','Dtor','Dtos',
+ 'Dtot','DynamicInputMask','Each','Edit','Eject','Elif',
+ 'End','Eof','Erase','Evaluate','Event','Eventtracking',
+ 'Exclude','Exclusive','Exit','Exp','Export','External',
+ 'FDate','FTime','Fchsize','Fclose','Fcount','Fcreate',
+ 'Feof','Ferror','FetchMemo','FetchSize','Fflush','Fgets',
+ 'Filer','Filetostr','Find','Fklabel','Fkmax','Fldlist',
+ 'Flock','Floor','Flush','Fontmetric','Fopen','Forceext',
+ 'Forcepath','FormSetClass','FormSetLib','FormsClass','FormsLib','Found',
+ 'FoxPro','Foxcode','Foxdoc','Foxgen','Foxgraph','Foxview',
+ 'Fputs','Fread','French','Fseek','Fsize','Fv',
+ 'Fwrite','Gather','German','GetPem','Getbar','Getcolor',
+ 'Getcp','Getdir','Getenv','Getexpr','Getfile','Getfldstate',
+ 'Getfont','Gethost','Getnextmodified','Getobject','Getpad','Getpict',
+ 'Getprinter','Go','Gomonth','Goto','Graph','GridHorz',
+ 'GridShow','GridShowPos','GridSnap','GridVert','Help','HelpOn',
+ 'HelpTo','HighLightRow','Home','Hour','IMEStatus','IdleTimeOut',
+ 'Idxcollate','Ifdef','Ifndef','Iif','Import','Include',
+ 'Indbc','Index','Indexseek','Inkey','Inlist','Input',
+ 'Insert','InsertTrigger','Insmode','IsBlank','IsFLocked','IsLeadByte',
+ 'IsMouse','IsNull','IsRLocked','Isalpha','Iscolor','Isdigit',
+ 'Isexclusive','Isflocked','Ishosted','Islower','Isreadonly','Isrlocked',
+ 'Isupper','Italian','Japan','Join','Justdrive','Justext',
+ 'Justfname','Justpath','Juststem','KeyField','KeyFieldList','Keyboard'
+ ),
+ 2 => array('Keymatch','LastProject','Lastkey','Lcase','Leftc','Len',
+ 'Lenc','Length','Likec','Lineno','LoadPicture','Loadpicture',
+ 'Locate','Locfile','Log','Log10','Logout','Lookup',
+ 'Loop','Lower','Ltrim','Lupdate','Mail','MaxRecords',
+ 'Mcol','Md','Mdown','Mdx','Mdy','Memlines',
+ 'Menu','Messagebox','Minute','Mkdir','Mline','Modify',
+ 'Month','Monthname','Mouse','Mrkbar','Mrkpad','Mrow',
+ 'Mtdll','Mton','Mwindow','Native','Ndx','Network',
+ 'NoFilter','Nodefault','Normalize','Note','Now','Ntom',
+ 'NullString','Numlock','Nvl','ODBChdbc','ODBChstmt','OLEDropTextInsertion',
+ 'OLELCid','Objnum','Objref','Objtoclient','Objvar','Occurs',
+ 'Oemtoansi','Oldval','OlePublic','Olereturnerror','On','Open',
+ 'Oracle','Order','Os','Outer','PCount','Pack',
+ 'PacketSize','Padc','Padl','Padr','Payment','Pcol',
+ 'PemStatus','Pi','Pivot','Play','Pop','Popup',
+ 'Power','PrimaryKey','Printstatus','Private','Prmbar','Prmpad',
+ 'ProjectClick','Proper','Prow','Prtinfo','Push','Putfile',
+ 'Pv','Qpr','Quater','QueryTimeOut','Quit','Radians',
+ 'Rand','Rat','Ratc','Ratline','Rd','Rdlevel',
+ 'Read','Readkey','Recall','Reccount','RecentlyUsedFiles','Recno',
+ 'Recsize','Regional','Reindex','RelatedChild','RelatedTable','RelatedTag',
+ 'Remove','Rename','Repeat','Replace','Replicate','Report',
+ 'ResHeight','ResWidth','ResourceOn','ResourceTo','Resources','Restore',
+ 'Resume','Retry','Return','Revertoffline','Rgbscheme','Rightc',
+ 'Rlock','Rmdir','Rollback','Round','Rtod','Rtrim',
+ 'RuleExpression','RuleText','Run','Runscript','Rview','SQLAsynchronous',
+ 'SQLBatchMode','SQLCancel','SQLColumns','SQLConnect','SQLConnectTimeOut','SQLDisconnect',
+ 'SQLDispLogin','SQLDispWarnings','SQLExec','SQLGetProp','SQLIdleTimeOut','SQLMoreResults',
+ 'SQLPrepare','SQLQueryTimeOut','SQLSetProp','SQLTables','SQLTransactions','SQLWaitTime',
+ 'Save','SavePicture','Savepicture','ScaleUnits','Scatter','Scols',
+ 'Scroll','Sec','Second','Seek','Select','SendUpdates',
+ 'Set','SetDefault','Setfldstate','Setup','ShareConnection','ShowOLEControls',
+ 'ShowOLEInsertable','ShowVCXs','Sign','Sin','Size','SizeBox',
+ 'Skpbar','Skppad','Sort','Soundex','SourceName','Sqlcommit',
+ 'Sqll','Sqlrollback','Sqlstringconnect','Sqrt','Srows','StatusBar',
+ 'Store','Str','Strconv','Strtofile','Strtran','Stuff',
+ 'Stuffc','Substr','Substrc','Substring','Sum','Suspend',
+ 'Sys','Sysmetric','TabOrdering','Table','TableRefresh','Tablerevert',
+ 'Tableupdate','TagCount','TagNo','Tan','Target','This',
+ 'Thisform','Thisformset','Timestamp','Timestampdiff','Total','Transactions',
+ 'Transform','Trim','Truncate','Ttoc','Ttod','Txnlevel',
+ 'Txtwidth','Type','Ucase','Undefine','Unlock','Unpack',
+ 'Updatable','UpdatableFieldList','Update','UpdateName','UpdateNameList','UpdateTrigger',
+ 'UpdateType','Updated','Upper','Upsizing','Usa','Use',
+ 'UseMemoSize','Used','Val','Validate','Varread','Vartype',
+ 'Version','VersionLanguage','Wait','WaitTime','Wborder','Wchild',
+ 'Wcols','Week','Wexist','Wfont','WhereType','Windcmd',
+ 'Windhelp','Windmemo','Windmenu','Windmodify','Windquery','Windscreen',
+ 'Windsnip','Windstproc','WizardPrompt','Wlast','Wlcol','Wlrow',
+ 'Wmaximum','Wminimum','Wontop','Woutput','Wparent','Wread',
+ 'Wrows','Wtitle','Wvisible','Year','Zap','_Alignment',
+ '_Asciicols','_Asciirows','_Assist','_Beautify','_Box','_Browser',
+ '_Builder','_Calcmem','_Calcvalue','_Cliptext','_Converter','_Coverage',
+ '_Curobj','_Dblclick','_Diarydate','_Dos','_Foxdoc','_Foxgraph',
+ '_Gallery','_Gengraph','_Genhtml','_Genmenu','_Genpd','_Genscrn',
+ '_Genxtab','_Getexpr','_Include','_Indent','_Lmargin','_Mac',
+ '_Mbr_appnd','_Mbr_cpart','_Mbr_delet','_Mbr_font','_Mbr_goto','_Mbr_grid',
+ '_Mbr_link','_Mbr_mode','_Mbr_mvfld','_Mbr_mvprt','_Mbr_seek','_Mbr_sp100',
+ '_Mbr_sp200','_Mbr_szfld','_Mbrowse','_Mda_appnd','_Mda_avg','_Mda_brow',
+ '_Mda_calc','_Mda_copy','_Mda_count','_Mda_label','_Mda_pack','_Mda_reprt',
+ '_Mda_rindx','_Mda_setup','_Mda_sort','_Mda_sp100','_Mda_sp200','_Mda_sp300',
+ '_Mda_sum','_Mda_total','_Mdata','_Mdiary','_Med_clear','_Med_copy',
+ '_Med_cut','_Med_cvtst','_Med_find','_Med_finda','_Med_goto','_Med_insob',
+ '_Med_link','_Med_obj','_Med_paste','_Med_pref','_Med_pstlk','_Med_redo',
+ '_Med_repl','_Med_repla','_Med_slcta','_Med_sp100','_Med_sp200','_Med_sp300',
+ '_Med_sp400','_Med_sp500','_Med_undo','_Medit','_Mfi_clall','_Mfi_close',
+ '_Mfi_export','_Mfi_import','_Mfi_new','_Mfi_open','_Mfi_pgset','_Mfi_prevu',
+ '_Mfi_print','_Mfi_quit','_Mfi_revrt','_Mfi_savas','_Mfi_save','_Mfi_send',
+ '_Mfi_setup','_Mfi_sp100','_Mfi_sp200','_Mfi_sp300','_Mfi_sp400','_Mfile',
+ '_Mfiler','_Mfirst','_Mlabel','_Mlast','_Mline','_Mmacro',
+ '_Mmbldr','_Mpr_beaut','_Mpr_cancl','_Mpr_compl','_Mpr_do','_Mpr_docum',
+ '_Mpr_formwz','_Mpr_gener','_Mpr_graph','_Mpr_resum','_Mpr_sp100','_Mpr_sp200',
+ '_Mpr_sp300','_Mpr_suspend','_Mprog','_Mproj','_Mrc_appnd','_Mrc_chnge',
+ '_Mrc_cont','_Mrc_delet','_Mrc_goto','_Mrc_locat','_Mrc_recal','_Mrc_repl',
+ '_Mrc_seek','_Mrc_sp100','_Mrc_sp200','_Mrecord','_Mreport','_Mrqbe',
+ '_Mscreen','_Msm_data','_Msm_edit','_Msm_file','_Msm_format','_Msm_prog',
+ '_Msm_recrd','_Msm_systm','_Msm_text','_Msm_tools','_Msm_view','_Msm_windo',
+ '_Mst_about','_Mst_ascii','_Mst_calcu','_Mst_captr','_Mst_dbase','_Mst_diary',
+ '_Mst_filer','_Mst_help','_Mst_hphow','_Mst_hpsch','_Mst_macro','_Mst_office',
+ '_Mst_puzzl','_Mst_sp100','_Mst_sp200','_Mst_sp300','_Mst_specl','_Msysmenu',
+ '_Msystem','_Mtable','_Mtb_appnd','_Mtb_cpart','_Mtb_delet','_Mtb_delrc',
+ '_Mtb_goto','_Mtb_link','_Mtb_mvfld','_Mtb_mvprt','_Mtb_props','_Mtb_recal',
+ '_Mtb_sp100','_Mtb_sp200','_Mtb_sp300','_Mtb_sp400','_Mtb_szfld','_Mwi_arran',
+ '_Mwi_clear','_Mwi_cmd','_Mwi_color','_Mwi_debug','_Mwi_hide','_Mwi_hidea',
+ '_Mwi_min','_Mwi_move','_Mwi_rotat','_Mwi_showa','_Mwi_size','_Mwi_sp100',
+ '_Mwi_sp200','_Mwi_toolb','_Mwi_trace','_Mwi_view','_Mwi_zoom','_Mwindow',
+ '_Mwizards','_Mwz_all','_Mwz_form','_Mwz_foxdoc','_Mwz_import','_Mwz_label',
+ '_Mwz_mail','_Mwz_pivot','_Mwz_query','_Mwz_reprt','_Mwz_setup','_Mwz_table',
+ '_Mwz_upsizing','_Netware','_Oracle','_Padvance','_Pageno','_Pbpage',
+ '_Pcolno','_Pcopies','_Pdparms','_Pdriver','_Pdsetup','_Pecode',
+ '_Peject','_Pepage','_Pform','_Plength','_Plineno','_Ploffset',
+ '_Ppitch','_Pquality','_Pretext','_Pscode','_Pspacing','_Pwait',
+ '_Rmargin','_Runactivedoc','_Samples','_Screen','_Shell','_Spellchk',
+ '_Sqlserver','_Startup','_Tabs','_Tally','_Text','_Throttle',
+ '_Transport','_Triggerlevel','_Unix','_WebDevOnly','_WebMenu','_WebMsftHomePage',
+ '_WebVFPHomePage','_WebVfpOnlineSupport','_Windows','_Wizard','_Wrap','_scctext',
+ '_vfp','Additive','After','Again','Aindent','Alignright',
+ 'All','Alt','Alternate','And','Ansi','Any',
+ 'Aplabout','App','Array','As','Asc','Ascending',
+ 'Ascii','At','Attributes','Automatic','Autosave','Avg',
+ 'Bar','Before','Bell','Between','Bitmap','Blank',
+ 'Blink','Blocksize','Border','Bottom','Brstatus','Bucket',
+ 'Buffers','By','Candidate','Carry','Cascade','Catalog',
+ 'Cdx','Center','Century','Cga','Character','Check',
+ 'Classlib','Clock','Cnt','Codepage','Collate','Color',
+ 'Com1','Com2','Command','Compact','Compatible','Compress',
+ 'Confirm','Connection','Connections','Connstring','Console','Copies',
+ 'Cpcompile','Cpdialog','Csv','Currency','Cycle','Databases',
+ 'Datasource','Date','Db4','Dbc','Dbf','Dbmemo3',
+ 'Debug','Decimals','Defaultsource','Deletetables','Delimited','Delimiters',
+ 'Descending','Design','Development','Device','Dif','Disabled',
+ 'Distinct','Dlls','Dohistory','Dos','Dosmem','Double',
+ 'Driver','Duplex','Echo','Editwork','Ega25','Ega43',
+ 'Ems','Ems64','Encrypt','Encryption','Environment','Escape',
+ 'Events','Exact','Except','Exe','Exists','Expression',
+ 'Extended','F','Fdow','Fetch','Field','Fields',
+ 'File','Files','Fill','Fixed','Float','Foldconst',
+ 'Font','Footer','Force','Foreign','Fox2x','Foxplus',
+ 'Free','Freeze','From','Fullpath','Fw2','Fweek',
+ 'Get','Gets','Global','Group','Grow','Halfheight',
+ 'Having','Heading','Headings','Helpfilter','History','Hmemory',
+ 'Hours','Id','In','Indexes','Information','Instruct',
+ 'Int','Integer','Intensity','Intersect','Into','Is',
+ 'Isometric','Key','Keycolumns','Keycomp','Keyset','Last',
+ 'Ledit','Level','Library','Like','Linked','Lock',
+ 'Logerrors','Long','Lpartition','Mac','Macdesktop','Machelp',
+ 'Mackey','Macros','Mark','Master','Max','Maxmem',
+ 'Mdi','Memlimit','Memory','Memos','Memowidth','Memvar',
+ 'Menus','Messages','Middle','Min','Minimize','Minus',
+ 'Mod','Modal','Module','Mono43','Movers','Multilocks',
+ 'Mvarsiz','Mvcount','N','Near','Negotiate','Noalias',
+ 'Noappend','Noclear','Noclose','Noconsole','Nocptrans','Nodata',
+ 'Nodebug','Nodelete','Nodup','Noedit','Noeject','Noenvironment',
+ 'Nofloat','Nofollow','Nogrow','Noinit','Nolgrid','Nolink',
+ 'Nolock','Nomargin','Nomdi','Nomenu','Nominimize','Nomodify'
+ ),
+ 3 => array('Nomouse','None','Nooptimize','Nooverwrite','Noprojecthook','Noprompt',
+ 'Noread','Norefresh','Norequery','Norgrid','Norm','Normal',
+ 'Nosave','Noshadow','Noshow','Nospace','Not','Notab',
+ 'Notify','Noupdate','Novalidate','Noverify','Nowait','Nowindow',
+ 'Nowrap','Nozoom','Npv','Null','Number','Objects',
+ 'Odometer','Of','Off','Oleobjects','Only','Optimize',
+ 'Or','Orientation','Output','Outshow','Overlay','Overwrite',
+ 'Pad','Palette','Paperlength','Papersize','Paperwidth','Password',
+ 'Path','Pattern','Pause','Pdox','Pdsetup','Pen',
+ 'Pfs','Pixels','Plain','Popups','Precision','Preference',
+ 'Preview','Primary','Printer','Printquality','Procedures','Production',
+ 'Program','Progwork','Project','Prompt','Query','Random',
+ 'Range','Readborder','Readerror','Record','Recover','Redit',
+ 'Reference','References','Relative','Remote','Reprocess','Resource',
+ 'Rest','Restrict','Rgb','Right','Row','Rowset',
+ 'Rpd','Runtime','Safety','Same','Sample','Say',
+ 'Scale','Scheme','Scoreboard','Screen','Sdf','Seconds',
+ 'Selection','Shadows','Shared','Sheet','Shell','Shift',
+ 'Shutdown','Single','Some','Sortwork','Space','Sql',
+ 'Standalone','Status','Std','Step','Sticky','String',
+ 'Structure','Subclass','Summary','Sylk','Sysformats','Sysmenus',
+ 'System','T','Tab','Tables','Talk','Tedit',
+ 'Textmerge','Time','Timeout','Titles','Tmpfiles','To',
+ 'Topic','Transaction','Trap','Trbetween','Trigger','Ttoption',
+ 'Typeahead','Udfparms','Union','Unique','Userid','Users',
+ 'Values','Var','Verb','Vga25','Vga50','Views',
+ 'Volume','Where','Windows','Wk1','Wk3','Wks',
+ 'Workarea','Wp','Wr1','Wrap','Wrk','Xcmdfile',
+ 'Xl5','Xl8','Xls','Y','Yresolution','Zoom',
+ 'Activate','ActivateCell','Add','AddColumn','AddItem','AddListItem',
+ 'AddObject','AddProperty','AddToSCC','AfterBuild','AfterCloseTables','AfterDock',
+ 'AfterRowColChange','BeforeBuild','BeforeDock','BeforeOpenTables','BeforeRowColChange','Box',
+ 'Build','CheckIn','CheckOut','Circle','Clear','ClearData',
+ 'Cleanup','Click','CloneObject','CloseEditor','CloseTables','Cls',
+ 'CommandTargetExec','CommandTargetQueryStas','ContainerRelease','DataToClip','DblClick','Deactivate',
+ 'Delete','DeleteColumn','Deleted','Destroy','DoCmd','Dock',
+ 'DoScroll','DoVerb','DownClick','Drag','DragDrop','DragOver',
+ 'DropDown','Draw','EnterFocus','Error','ErrorMessage','Eval',
+ 'ExitFocus','FormatChange','GetData','GetFormat','GetLatestVersion','GoBack',
+ 'GotFocus','GoForward','GridHitTest','Hide','HideDoc','IndexToItemId',
+ 'Init','InteractiveChange','Item','ItemIdToIndex','KeyPress','Line',
+ 'Load','LostFocus','Message','MiddleClick','MouseDown','MouseMove',
+ 'MouseUp','MouseWheel','Move','Moved','NavigateTo','Newobject',
+ 'OLECompleteDrag','OLEDrag','OLEDragDrop','OLEDragOver','OLEGiveFeedback','OLESetData',
+ 'OLEStartDrag','OpenEditor','OpenTables','Paint','Point','Print',
+ 'ProgrammaticChange','PSet','QueryAddFile','QueryModifyFile','QueryRemoveFile','QueryRunFile',
+ 'QueryUnload','RangeHigh','RangeLow','ReadActivate','ReadExpression','ReadDeactivate',
+ 'ReadMethod','ReadShow','ReadValid','ReadWhen','Refresh','Release',
+ 'RemoveFromSCC','RemoveItem','RemoveListItem','RemoveObject','Requery','RequestData',
+ 'Reset','ResetToDefault','Resize','RightClick','SaveAs','SaveAsClass',
+ 'Scrolled','SetAll','SetData','SetFocus','SetFormat','SetMain',
+ 'SetVar','SetViewPort','ShowDoc','ShowWhatsThis','TextHeight','TextWidth',
+ 'Timer','UIEnable','UnDock','UndoCheckOut','Unload','UpClick',
+ 'Valid','WhatsThisMode','When','WriteExpression','WriteMethod','ZOrder',
+ 'ATGetColors','ATListColors','Accelerate','ActiveColumn','ActiveControl','ActiveForm',
+ 'ActiveObjectId','ActivePage','ActiveProject','ActiveRow','AddLineFeeds','Alias',
+ 'Alignment','AllowAddNew','AllowHeaderSizing','AllowResize','AllowRowSizing','AllowTabs',
+ 'AlwaysOnTop','Application','AutoActivate','AutoCenter','AutoCloseTables','AutoIncrement',
+ 'AutoOpenTables','AutoRelease','AutoSize','AutoVerbMenu','AutoYield','AvailNum',
+ 'BackColor','BackStyle','BaseClass','BorderColor','BorderStyle','BorderWidth',
+ 'Bound','BoundColumn','BoundTo','BrowseAlignment','BrowseCellMarg','BrowseDestWidth',
+ 'BufferMode','BufferModeOverride','BuildDateTime','ButtonCount','ButtonIndex','Buttons',
+ 'CLSID','CanAccelerate','CanGetFocus','CanLoseFocus','Cancel','Caption',
+ 'ChildAlias','ChildOrder','Class','ClassLibrary','ClipControls','ClipRect',
+ 'Closable','ColorScheme','ColorSource','ColumnCount','ColumnHeaders','ColumnLines',
+ 'ColumnOrder','ColumnWidths','Columns','Comment','ContinuousScroll','ControlBox',
+ 'ControlCount','ControlIndex','ControlSource','Controls','CurrentControl','CurrentX',
+ 'CurrentY','CursorSource','Curvature','DataSession','DataSessionId','DataSourceObj',
+ 'DataType','Database','DateFormat','DateMark','DefButton','DefButtonOrig',
+ 'DefHeight','DefLeft','DefTop','DefWidth','Default','DefaultFilePath',
+ 'DefineWindows','DeleteMark','Desktop','Dirty','DisabledBackColor','DisabledByEOF',
+ 'DisabledForeColor','DisabledItemBackColor','DisabledItemForeColor','DisabledPicture','DispPageHeight','DispPageWidth',
+ 'DisplayCount','DisplayValue','DoCreate','DockPosition','Docked','DocumentFile',
+ 'DownPicture','DragIcon','DragMode','DragState','DrawMode','DrawStyle',
+ 'DrawWidth','DynamicAlignment','DynamicBackColor','DynamicCurrentControl','DynamicFontBold','DynamicFontItalic',
+ 'DynamicFontName','DynamicFontOutline','DynamicFontShadow','DynamicFontSize','DynamicFontStrikethru','DynamicFontUnderline',
+ 'DynamicForeColor','EditFlags','Enabled','EnabledByReadLock','Encrypted','EnvLevel',
+ 'ErasePage','FileClass','FileClassLibrary','FillColor','FillStyle','Filter',
+ 'FirstElement','FontBold','FontItalic','FontName','FontOutline','FontShadow',
+ 'FontSize','FontStrikethru','FontUnderline','ForceFocus','ForeColor','FormCount',
+ 'FormIndex','FormPageCount','FormPageIndex','Format','Forms','FoxFont',
+ 'FullName','GoFirst','GoLast','GridLineColor','GridLineWidth','GridLines'
+ ),
+ 4 => array('HPROJ','HWnd','HalfHeightCaption','HasClip','HeaderGap','HeaderHeight',
+ 'Height','HelpContextID','HideSelection','Highlight','HomeDir','HostName',
+ 'HotKey','HscrollSmallChange','IMEMode','Icon','IgnoreInsert','InResize',
+ 'Increment','IncrementalSearch','InitialSelectedAlias','InputMask','Instancing','IntegralHeight',
+ 'Interval','ItemBackColor','ItemData','ItemForeColor','ItemIDData','ItemTips',
+ 'JustReadLocked','KeyPreview','KeyboardHighValue','KeyboardLowValue','LastModified','Left',
+ 'LeftColumn','LineSlant','LinkMaster','List','ListCount','ListIndex',
+ 'ListItem','ListItemId','LockDataSource','LockScreen','MDIForm','MainClass',
+ 'MainFile','Margin','MaxButton','MaxHeight','MaxLeft','MaxLength',
+ 'MaxTop','MaxWidth','MemoWindow','MinButton','MinHeight','MinWidth',
+ 'MouseIcon','MousePointer','Movable','MoverBars','MultiSelect','Name',
+ 'NapTime','NewIndex','NewItemId','NoDataOnLoad','NoDefine','NotifyContainer',
+ 'NullDisplay','NumberOfElements','OLEDragMode','OLEDragPicture','OLEDropEffects','OLEDropHasData',
+ 'OLEDropMode','OLERequestPendingTimeOut','OLEServerBusyRaiseError','OLEServerBusyTimeOut','OLETypeAllowed','OleClass',
+ 'OleClassId','OleControlContainer','OleIDispInValue','OleIDispOutValue','OleIDispatchIncoming','OleIDispatchOutgoing',
+ 'OnResize','OneToMany','OpenViews','OpenWindow','PageCount','PageHeight',
+ 'PageOrder','PageWidth','Pages','Panel','PanelLink','Parent',
+ 'ParentAlias','ParentClass','Partition','PasswordChar','Picture','ProcessID',
+ 'ProgID','ProjectHookClass','ProjectHookLibrary','Projects','ReadColors','ReadCycle',
+ 'ReadFiller','ReadLock','ReadMouse','ReadOnly','ReadSave','ReadSize',
+ 'ReadTimeout','RecordMark','RecordSource','RecordSourceType','Rect','RelationalExpr',
+ 'RelativeColumn','RelativeRow','ReleaseErase','ReleaseType','ReleaseWindows','Resizable',
+ 'RightToLeft','RowHeight','RowSource','RowSourceType','SCCProvider','SCCStatus',
+ 'SDIForm','ScaleMode','ScrollBars','SelLength','SelStart','SelText',
+ 'SelectOnEntry','Selected','SelectedBackColor','SelectedForeColor','SelectedID','SelectedItemBackColor',
+ 'SelectedItemForeColor','SelfEdit','ServerClass','ServerClassLibrary','ServerHelpFile','ServerName',
+ 'ServerProject','ShowTips','ShowWindow','Sizable','Size<height>','Size<maxlength>',
+ 'Size<width>','Skip','SkipForm','Sorted','SourceType','Sparse',
+ 'SpecialEffect','SpinnerHighValue','SpinnerLowValue','SplitBar','StartMode','StatusBarText',
+ 'Stretch','StrictDateEntry','Style','SystemRefCount','TabIndex','TabStop',
+ 'TabStretch','TabStyle','Tabhit','Tabs','Tag','TerminateRead',
+ 'ThreadID','TitleBar','ToolTipText','Top','TopIndex','TopItemId',
+ 'TypeLibCLSID','TypeLibDesc','TypeLibName','UnlockDataSource','Value','ValueDirty',
+ 'VersionComments','VersionCompany','VersionCopyright','VersionDescription','VersionNumber','VersionProduct',
+ 'VersionTrademarks','View','ViewPortHeight','ViewPortLeft','ViewPortTop','ViewPortWidth',
+ 'Visible','VscrollSmallChange','WasActive','WasOpen','WhatsThisButton','WhatsThisHelp',
+ 'WhatsThisHelpID','Width','WindowList','WindowNTIList','WindowState','WindowType',
+ 'WordWrap','ZOrderSet','ActiveDoc','Checkbox','Column','ComboBox',
+ 'CommandButton','CommandGroup','Container','Control','Cursor','Custom',
+ 'DataEnvironment','EditBox','Empty','FontClass','Form','Formset',
+ 'General','Grid','Header','HyperLink','Image','Label',
+ 'ListBox','Memo','OleBaseControl','OleBoundControl','OleClassIDispOut','OleControl',
+ 'OptionButton','OptionGroup','Page','PageFrame','ProjectHook','RectClass',
+ 'Relation','Session','Shape','Spinner','TextBox' ,'Toolbar'
+ ),
+ ),
+ 'SYMBOLS' => array("!", "@", "$", "%", "(", ")", "-", "+", "=", "/", "{", "}", "[", "]", ":", ";", ",", " ", ".", "*", "&"),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: blue;',
+ 2 => 'color: blue;',
+ 3 => 'color: blue;',
+ 4 => 'color: blue;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: green; font-style: italic;',
+ 2 => 'color: green; font-style: italic;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: blue;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: blue;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/winbatch.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/winbatch.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/winbatch.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,367 +1,367 @@
-<?php
-/*************************************************************************************
- * winbatch.php
- * ------------
- * Author: Craig Storey (storey.craig at gmail.com)
- * Copyright: (c) 2004 Craig Storey (craig.xcottawa.ca)
- * Release Version: 1.0.7.21
- * Date Started: 2006/05/19
- *
- * WinBatch language file for GeSHi.
- *
- * WinBatch is a Windows scripting language - www.winbatch.com.
- * The keywords were pulled from the winbatch/system/WIL.clr file for v2005G.
- * Not all extender functions are added, but a very large set of the most common.
- *
- * CHANGES
- * -------
- * 2006/05/05 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/07/14)
- * -------------------------
- * - Right now any ':Subroutine' is treated as a comment. This highlights the
- * Subroutine's name, but it's not a perfect fix. I should use a RegEx in
- * GeSHI_Search&Replace features..
- * - Update the list of extender functions.
- * - Use a regular expression to comment UDFs that start with 'udf_'.
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'Winbatch',
- 'COMMENT_SINGLE' => array(1 => ';', 2 => ':'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"', '`'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- 'While', 'To', 'Then', 'Switch', 'Select', 'Return', 'Next', 'IntControl', 'Include', 'In', 'If',
- 'Goto', 'GoSub', 'ForEach', 'For', 'Exit', 'Execute', 'ErrorMode', 'EndWhile', 'EndSwitch', '#EndSubRoutine',
- 'EndSelect', 'EndIf', '#EEndFunction', 'EndFor', 'End', 'Else', 'DropWild', 'Drop', '#DefineSubRoutine',
- '#DefineFunction', 'Debug', 'Continue', 'Case', 'CallExt', 'Call', 'By', 'BreakPoint', 'Break'
- ),
- 2 => array(
- 'ZOOMED', 'YES', 'WORD4', 'WORD2', 'WORD1', 'WHOLESECTION', 'WAIT', 'UNSORTED', 'UNCHECK', 'TRUE', 'TILE',
- 'TAB', 'STRING', 'STACK', 'SPC2NET', 'SORTED', 'SOK', 'SNET2PC', 'SINGLE', 'SHIFT', 'SERVER', 'SERRWINSOCK',
- 'SERRVOICE', 'SERRSOCKET', 'SERRSERVICE', 'SERRSELECT', 'SERRPARAM', 'SERROUTOFMEM', 'SERRNOTFOUND', 'SERRNOCONN',
- 'SERRNOANSWER', 'SERRMUSTWAIT', 'SERRIPADDR', 'SERRHOSTNAME', 'SERRFAILURE', 'SERRBUSY', 'SCROLLLOCK', 'SCANCEL',
- 'SAVE', 'SALREADY', 'ROWS', 'REGUSERS', 'REGROOT', 'REGMACHINE', 'REGCURRENT', 'REGCLASSES', 'RDBLCLICK', 'RCLICK',
- 'RBUTTON', 'RAD2DEG', 'QSUCCESSINFO', 'QSUCCESS', 'QSTILLEX', 'QROLLBACK', 'QNULL', 'QNODATA', 'QNEXT', 'QNEEDDATA',
- 'QFIRST', 'QCOMMIT', 'QBADHANDLE', 'PRINTER', 'PLANCKJOULES', 'PLANCKERGS', 'PI', 'PARSEONLY', 'PARSEC', 'P3ERRREPLY',
- 'OPEN', 'ON', 'OFF', 'NUMLOCK', 'NOWAIT', 'NOTIFY', 'NORMAL', 'NORESIZE', 'NONE', 'NO', 'NCSAFORMAT', 'MULTIPLE',
- 'MSFORMAT', 'MPLAYRDBLCK', 'MPLAYRCLK', 'MPLAYRBUTTON', 'MPLAYMDBLCK', 'MPLAYMCLK', 'MPLAYMBUTTON', 'MPLAYLDBLCK',
- 'MPLAYLCLK', 'MPLAYLBUTTON', 'MINOR', 'MDBLCLICK', 'MCLICK', 'MBYESNO', 'MBUTTON', 'MBOKCANCEL', 'MAJOR', 'MAGFIELD',
- 'LOCALGROUP', 'LIGHTMTPS', 'LIGHTMPS', 'LF', 'LDBLCLICK', 'LCLICK', 'LBUTTON', 'LAFFDBERROR', 'ICON', 'HTTPS', 'HTTP',
- 'HNOHEADER', 'HMETHODPOST', 'HMETHODGET', 'HIDDEN', 'HHEADERONLY', 'HHEADER', 'GRAVITATION', 'GOPHER', 'GOLDENRATIO',
- 'GMTSEC', 'GLOBALGROUP', 'GFTSEC', 'GETPROCID', 'GETEXITCODE', 'FWDSCAN', 'FTPPASSIVE', 'FTP', 'FLOAT8', 'FARADAY',
- 'FALSE', 'EXTENDED', 'EULERS', 'ENABLE', 'ELECTRIC', 'DRIVE', 'DISABLE', 'DESCENDING', 'DEG2RAD', 'DEFAULT', 'CTRL',
- 'CRLF', 'CR', 'COMMONFORMAT', 'COLUMNS', 'CHECK', 'CAPSLOCK', 'CANCEL', 'BOLTZMANN', 'BACKSCAN', 'AVOGADRO', 'ATTR_X',
- 'ATTR_T', 'ATTR_SY', 'ATTR_SH', 'ATTR_RO', 'ATTR_RI', 'ATTR_P', 'ATTR_IC', 'ATTR_H', 'ATTR_DM', 'ATTR_DI', 'ATTR_DC',
- 'ATTR_CI', 'ATTR_A', 'ASCENDING', 'ARRANGE', 'AMC', 'ACC_WRITE', 'ACC_READ_NT', 'ACC_READ_95', 'ACC_READ', 'ACC_PRINT_NT',
- 'ACC_PMANG_NT', 'ACC_PFULL_NT', 'ACC_LIST', 'ACC_FULL_NT', 'ACC_FULL_95', 'ACC_DELETE', 'ACC_CREATE', 'ACC_CONTROL',
- 'ACC_CHNG_NT', 'ACC_ATTRIB', 'ABOVEICONS'
- ),
- 3 => array(
- 'Yields', 'Yield', 'WinZoom', 'WinWaitExist', 'WinWaitClose', 'WinWaitChild', 'WinVersion', 'WinTitle', 'WinSysInfo',
- 'WinState', 'WinShow', 'WinResources', 'WinPositionChild', 'WinPosition', 'WinPlaceSet', 'WinPlaceGet', 'WinPlaceChild',
- 'WinPlace', 'WinParmSet', 'WinParmGet', 'WinName', 'WinMetrics', 'WinItemProcId', 'WinItemNameId', 'WinItemizeEx',
- 'WinItemize', 'WinItemChild', 'WinIsDos', 'WinIdGet', 'WinIconize', 'WinHide', 'WinHelp', 'WinGetactive', 'WinExistchild',
- 'WinExist', 'WinExename', 'WinConfig', 'WinClosenot', 'WinClose', 'WinArrange', 'WinActivechild', 'WinActivchild',
- 'WinActivate', 'WebVerifyCard', 'WebSetTimeout', 'WebParamSize', 'WebParamNames', 'WebParamFile', 'WebParamData',
- 'WebParamBuf', 'WebOutFile', 'WebOutBinary', 'WebOut', 'WebDumpError', 'WebDatData', 'WebCounter', 'WebConSize', 'WebConData',
- 'WebConBuf', 'WebCmdData', 'WebBaseConv', 'Wallpaper', 'WaitForKeyEX', 'WaitForKey', 'VersionDLL', 'Version', 'VarType',
- 'TimeYmdHms', 'TimeWait', 'TimeSubtract', 'TimeJulToYmd', 'TimeJulianDay', 'TimeDiffSecs', 'TimeDiffDays', 'TimeDiff', 'TimeDelay',
- 'TimeDate', 'TimeAdd', 'TextSelect', 'TextBoxSort', 'TextBox', 'Terminate', 'Tanh', 'Tan', 'SysParamInfo', 'SvcWaitForCmd',
- 'SvcSetState', 'SvcSetAccept', 'StrUpper', 'StrTrim', 'StrSubWild', 'StrSub', 'StrScan', 'StrReplace', 'StrLower', 'StrLenWild',
- 'StrLen', 'StrIndexWild', 'StrIndexNC', 'StrIndex', 'StriCmp', 'StrFixLeft', 'StrFixCharsL', 'StrFixChars', 'StrFix', 'StrFill',
- 'StrCnt', 'StrCmp', 'StrClean', 'StrCharCount', 'StrCat', 'StrByteCount', 'Sqrt', 'SoundVolume', 'Sounds', 'Snapshot', 'Sinh', 'Sin',
- 'ShortCutMake', 'ShortCutInfo', 'ShortCutExtra', 'ShortCutEdit', 'ShortCutDir', 'ShellExecute', 'SendMenusToEx', 'SendMenusTo',
- 'SendKeysTo', 'SendKeysChild', 'SendKey', 'RunZoomWait', 'RunZoom', 'RunWithLogon', 'RunWait', 'RunShell', 'RunIconWait',
- 'RunIcon', 'RunHideWait', 'RunHide', 'RunExit', 'RunEnviron', 'Run', 'RtStatus', 'Reload', 'RegUnloadHive', 'RegSetValue',
- 'RegSetQword', 'RegSetMulSz', 'RegSetExpSz', 'RegSetEx', 'RegSetDword', 'RegSetBin', 'RegQueryValue', 'RegQueryStr',
- 'RegQueryQword', 'RegQueryMulSz', 'RegQueryKeys', 'RegQueryKeyLastWriteTime', 'RegQueryKey', 'RegQueryItem', 'RegQueryExpSz',
- 'RegQueryEx', 'RegQueryDword', 'RegQueryBin', 'RegOpenKeyEx', 'RegOpenKey', 'RegOpenFlags', 'RegLoadHive', 'RegExistValue',
- 'RegExistKey', 'RegEntryType', 'RegDelValue', 'RegDeleteKey', 'RegCreateKey', 'RegConnect', 'RegCloseKey', 'RegApp', 'Random',
- 'PtrPersistent', 'PtrGlobalDefine', 'PtrGlobal', 'Print', 'PlayWaveform', 'PlayMidi', 'PlayMedia', 'PipeServerWrite', 'PipeServerRead',
- 'PipeServerCreate', 'PipeServerClose', 'PipeInfo', 'PipeClientSendRecvData', 'PipeClientOpen', 'PipeClientClose', 'Pause',
- 'ParseData', 'ObjectTypeGet', 'ObjectType', 'ObjectOpen', 'ObjectGet', 'ObjectEventRemove', 'objecteventremove', 'ObjectEventAdd',
- 'objecteventadd', 'ObjectCreate', 'ObjectConstToArray', 'ObjectConstantsGet', 'ObjectCollectionOpen', 'ObjectCollectionNext',
- 'ObjectCollectionClose', 'ObjectClose', 'ObjectAccess', 'Num2Char', 'NetInfo', 'MsgTextGet', 'MousePlay', 'MouseMove', 'MouseInfo',
- 'MouseDrag', 'MouseCoords', 'MouseClickBtn', 'MouseClick', 'mod', 'Min', 'Message', 'Max', 'Loge', 'LogDisk', 'Log10', 'LastError',
- 'KeyToggleSet', 'KeyToggleGet', 'ItemSortNc', 'ItemSort', 'ItemSelect', 'ItemReplace', 'ItemRemove', 'ItemLocate', 'ItemInsert',
- 'ItemExtractCSV', 'ItemExtract', 'ItemCountCSV', 'ItemCount', 'IsNumber', 'IsLicensed', 'IsKeyDown', 'IsInt', 'IsFloat', 'IsDefined',
- 'Int', 'InstallFile', 'IniWritePvt', 'IniWrite', 'IniReadPvt', 'IniRead', 'IniItemizePvt', 'IniItemize', 'IniDeletePvt', 'IniDelete',
- 'IgnoreInput', 'IconReplace', 'IconInfo', 'IconExtract', 'IconArrange', 'GetTickCount', 'GetObject', 'GetExactTime', 'Floor',
- 'FindWindow', 'FileYmdHms', 'FileWrite', 'FileVerInfo', 'FileTimeTouch', 'FileTimeSetEx', 'FileTimeSet', 'FileTimeGetEx',
- 'FileTimeGet', 'FileTimeCode', 'FileSizeEx', 'FileSize', 'FileRoot', 'FileRename', 'FileRead', 'FilePutW', 'FilePut', 'FilePath',
- 'FileOpen', 'FileNameShort', 'FileNameLong', 'FileNameEval2', 'FileNameEval1', 'FileMoveAttr', 'FileMove', 'FileMapName',
- 'FileLocate', 'FileItemPath', 'FileItemize', 'FileInfoToArray', 'FileGetW', 'FileGet', 'FileFullname', 'FileExtension', 'FileExist',
- 'FileDelete', 'FileCreateTemp', 'FileCopyAttr', 'FileCopy', 'FileCompare', 'FileClose', 'FileBaseName', 'FileAttrSetEx',
- 'FileAttrSet', 'FileAttrGetEx', 'FileAttrGet', 'FileAppend', 'Fabs', 'ExtractAttachedFile', 'Exp', 'ExeTypeInfo', 'Exclusive',
- 'EnvItemize', 'EnvironSet', 'Environment', 'EndSession', 'DosVersion', 'DllLoad', 'DllLastError', 'DllHwnd', 'DllHinst',
- 'DllFree', 'DllCallCDecl', 'DllCall', 'Display', 'DiskVolinfo', 'DiskSize', 'DiskScan', 'DiskInfo', 'DiskFree', 'DiskExist',
- 'DirWindows', 'DirSize', 'DirScript', 'DirRename', 'DirRemove', 'DirMake', 'DirItemize', 'DirInfoToArray', 'DirHome', 'DirGet',
- 'DirExist', 'DirChange', 'DirAttrSetEx', 'DirAttrSet', 'DirAttrGetEx', 'DirAttrGet', 'DialogProcOptions', 'DialogObject',
- 'DialogControlState', 'DialogControlSet', 'DialogControlGet', 'DialogBox', 'Dialog', 'Delay', 'Decimals', 'DebugTrace',
- 'DebugData', 'DDETimeout', 'DDETerminate', 'DDERequest', 'DDEPoke', 'DDEInitiate', 'DDEExecute', 'DateTime', 'CurrFilepath',
- 'CurrentPath', 'CurrentFile', 'CreateObject', 'Cosh', 'Cos', 'ClipPut', 'ClipHasFormat', 'ClipGetEx', 'ClipGet', 'ClipAppend',
- 'ChrUnicodeToString', 'ChrUnicodeToHex', 'ChrStringToUnicode', 'ChrSetCodepage', 'ChrHexToUnicode', 'ChrGetCodepage',
- 'Char2Num', 'Ceiling', 'ButtonNames', 'BoxUpdates', 'BoxTitle', 'BoxTextFont', 'BoxTextColor', 'BoxText', 'BoxShut', 'BoxPen',
- 'BoxOpen', 'BoxNew', 'BoxMapmode', 'BoxesUp', 'BoxDrawText', 'BoxDrawRect', 'BoxDrawLine', 'BoxDrawCircle', 'BoxDestroy',
- 'BoxDataTag', 'BoxDataClear', 'BoxColor', 'BoxCaption', 'BoxButtonWait', 'BoxButtonStat', 'BoxButtonKill', 'BoxButtonDraw',
- 'BoxBitMap', 'BinaryXor', 'BinaryXlate', 'BinaryWriteEx', 'BinaryWrite', 'BinaryTagRepl', 'BinaryTagLen', 'BinaryTagInit',
- 'BinaryTagIndex', 'BinaryTagFind', 'BinaryTagExtr', 'BinaryStrCnt', 'BinarySort', 'BinaryReplace', 'BinaryReadEx',
- 'BinaryRead', 'BinaryPokeStrW', 'BinaryPokeStr', 'BinaryPokeHex', 'BinaryPokeFlt', 'BinaryPoke4', 'BinaryPoke2', 'BinaryPoke',
- 'BinaryPeekStrW', 'BinaryPeekStr', 'BinaryPeekHex', 'BinaryPeekFlt', 'BinaryPeek4', 'BinaryPeek2', 'BinaryPeek', 'BinaryOr',
- 'BinaryOleType', 'BinaryIndexNc', 'BinaryIndexEx', 'BinaryIndexBin', 'BinaryIndex', 'BinaryIncrFlt', 'BinaryIncr4',
- 'BinaryIncr2', 'BinaryIncr', 'BinaryHashRec', 'BinaryFree', 'BinaryEodSet', 'BinaryEodGet', 'BinaryCopy', 'BinaryConvert',
- 'BinaryCompare', 'BinaryClipPut', 'BinaryClipGet', 'BinaryChecksum', 'BinaryBufInfo', 'BinaryAnd', 'BinaryAllocArray',
- 'BinaryAlloc', 'Beep', 'Average', 'Atan', 'AskYesNo', 'AskTextbox', 'AskPassword', 'AskLine', 'AskItemlist', 'AskFont',
- 'AskFiletext', 'AskFilename', 'AskDirectory', 'AskColor', 'Asin', 'ArrInitialize', 'ArrInfo', 'ArrDimension',
- 'Arrayize', 'ArrayFilePutCSV', 'ArrayFilePut', 'ArrayFileGetCSV', 'ArrayFileGet', 'AppWaitClose', 'AppExist', 'AddExtender',
- 'Acos', 'Abs', 'About'
- ),
- 4 => array(
- 'zZipFiles', 'zVersionInfo', 'zVersion', 'zUnZipFiles', 'zSetPortBit', 'zRPortShift', 'zPortOut', 'zPortIn', 'zNotPortBit',
- 'zLPortShift', 'zGetPortBit', 'zClrPortBit', 'xVerifyCCard', 'xSendMessage', 'xMessageBox', 'xMemCompact', 'xHex', 'xGetElapsed',
- 'xGetChildHwnd', 'xExtenderInfo', 'xEnumStreams', 'xEjectMedia', 'xDriveReady', 'xDiskLabelGet', 'xCursorSet', 'xBaseConvert',
- 'wxPing', 'wxParmSet', 'wxParmGet', 'wxMsgSetHdr', 'wxMsgGetHdr', 'wxMsgGetBody', 'wxHost2Addr', 'wxGetLastErr', 'wxGetInfo',
- 'wxGetErrDesc', 'wxAddr2Host', 'wtsWaitSystemEvent', 'wtsVersion', 'wtsTerminateProcess', 'wtsShutdownSystem', 'wtsSendMessage',
- 'wtsQuerySessionInfo', 'wtsProcIdToSessId', 'wtsLogoffSession', 'wtsLastErrMsg', 'wtsIsTSEnabled', 'wtsIsCitrixEnabled',
- 'wtsGetActiveConsoleSessId', 'wtsEnumSessions', 'wtsEnumProcesses', 'wtsDisconnectSession', 'wnWrkGroups', 'wnVersion', 'wntWtsUserSet',
- 'wntWtsUserGet', 'wntVersion', 'wntUserSidChk', 'wntUserSetDat', 'wntUserRename', 'wntUserProps', 'wntUserList', 'wntUserInfo',
- 'wntUserGetDat', 'wntUserFiles', 'wntUserExist', 'wntUserDel', 'wntUserAddDat', 'wntUserAdd', 'wntSvcStatus', 'wntSvcStart',
- 'wntSvcList', 'wntSvcDelete', 'wntSvcCreate', 'wntSvcControl', 'wntSvcCfgSet', 'wntSvcCfgGet', 'wntShutdown', 'wntShareUsers',
- 'wntShareSet', 'wntShareList', 'wntShareInfo', 'wntShareDel', 'wntShareAdd', 'wntServiceInf', 'wntServiceAt', 'wntServerType',
- 'wntServerList', 'wntServerInfo', 'wntSecurityGet', 'wntRunAsUser', 'wntResources2', 'wntResources', 'wntRemoteTime', 'wntRasUserSet',
- 'wntRasUserGet', 'wntProfileInfo', 'wntProfileDel', 'wntPrivUsers', 'wntPrivList', 'wntPrivGet', 'wntPrivDel', 'wntPrivAdd',
- 'wntOwnerSet', 'wntOwnerGet', 'wntMemberSet', 'wntMemberLst2', 'wntMemberList', 'wntMemberGrps', 'wntMemberGet', 'wntMemberDel',
- 'wntLsaPolSet', 'wntLsaPolGet', 'wntListGroups', 'wntLastErrMsg', 'wntGroupRen', 'wntGroupInfo', 'wntGroupEdit', 'wntGroupDel',
- 'wntGroupAdd', 'wntGetUser', 'wntGetDrive', 'wntGetDc', 'wntGetCon', 'wntFileUsers', 'wntFilesOpen', 'wntFileClose', 'wntEventWrite',
- 'wntEventLog', 'wntDomainSync', 'wntDirDialog', 'wntDfsList', 'wntDfsGetInfo', 'wntCurrUsers', 'wntChgPswd', 'wntCancelCon',
- 'wntAuditMod', 'wntAuditList', 'wntAuditGet', 'wntAuditDel', 'wntAuditAdd2', 'wntAuditAdd', 'wntAddPrinter', 'wntAddDrive',
- 'wntAcctPolSet', 'wntAcctPolGet', 'wntAcctList', 'wntAcctInfo', 'wntAccessMod', 'wntAccessList', 'wntAccessGet', 'wntAccessDel',
- 'wntaccessadd2', 'wntAccessAdd', 'wnShares', 'wnSharePath', 'wnShareName', 'wnShareCnt', 'wnServers', 'wnRestore', 'wnNetNames',
- 'wnGetUser', 'wnGetCon', 'wnGetCaps', 'wnDlgShare', 'wnDlgNoShare', 'wnDlgDiscon', 'wnDlgCon4', 'wnDlgCon3', 'wnDlgCon2', 'wnDlgCon',
- 'wnDlgBrowse', 'wnDialog', 'wnCmptrInfo', 'wnCancelCon', 'wnAddCon', 'WaitSRQ', 'w9xVersion', 'w9xUserSetDat', 'w9xUserRename',
- 'w9xUserprops', 'w9xUserList', 'w9xUserinfo', 'w9xUserGetDat', 'w9xUserExist', 'w9xUserDel', 'w9xUserAddDat', 'w9xUserAdd', 'w9xShareSet',
- 'w9xShareInfo', 'w9xShareDel', 'w9xShareAdd', 'w9xServiceAt', 'w9xServerList', 'w9xRemoteTime', 'w9xOwnerGet', 'w9xMemberSet',
- 'w9xMemberList', 'w9xMemberGrps', 'w9xMemberGet', 'w9xMemberDel', 'w9xListGroups', 'w9xGroupInfo', 'w9xGroupDel', 'w9xGroupAdd',
- 'w9xGetDC', 'w9xFileUsers', 'w9xAccessList', 'w9xAccessGet', 'w9xAccessDel', 'w9xAccessAdd', 'w95Version', 'w95ShareUsers',
- 'w95ShareSet', 'w95ShareList', 'w95ShareInfo', 'w95ShareDel', 'w95ShareAdd', 'w95ServiceInf', 'w95ServiceAt', 'w95ServerType',
- 'w95ServerInfo', 'w95Resources', 'w95GetUser', 'w95GetDrive', 'w95GetCon', 'w95FileUsers', 'w95FileClose', 'w95DirDialog',
- 'w95CancelCon', 'w95AddPrinter', 'w95AddDrive', 'w95AccessDel', 'w95AccessAdd', 'w3Version', 'w3PrtBrowse', 'w3NetGetUser',
- 'w3NetDialog', 'w3GetCon', 'w3GetCaps', 'w3DirBrowse', 'w3CancelCon', 'w3AddCon', 'urlGetScheme', 'urlEncode', 'urlDecode',
- 'tVersion', 'tSetPriority', 'TriggerList', 'Trigger', 'tRemoteConn', 'tOpenProc', 'tListProc', 'tListMod', 'tKillProc', 'tGetProcInfo',
- 'tGetPriority', 'tGetModInfo', 'tGetLastError', 'tGetData', 'TestSys', 'TestSRQ', 'tCountProc', 'tCompatible', 'tCloseProc',
- 'tBrowseCntrs', 'sSendString', 'sSendNum', 'sSendLine', 'sSendBinary', 'sRecvNum', 'sRecvLine', 'sRecvBinary', 'SrchVersion',
- 'SrchNext', 'SrchInit', 'SrchFree', 'sOpen', 'sOK2Send', 'sOK2Recv', 'smtpSendText', 'smtpSendFile', 'sListen', 'SetRWLS',
- 'SendSetup', 'SendLLO', 'SendList', 'SendIFC', 'SendDataBytes', 'SendCmds', 'Send', 'sConnect', 'sClose', 'SByteOrder32',
- 'sByteOrder16', 'sAccept', 'rRegVersion', 'rRegSearch', 'ResetSys', 'ReceiveSetup', 'Receive', 'ReadStsByte', 'RcvRespMsg',
- 'RasVersion', 'RasTypeSize', 'RasRename', 'RasNumCons', 'RasNameValid', 'RasListActCon', 'RasItemize', 'RasHangUp', 'RasGetLastErr',
- 'RasGetConStat', 'RasEntrySet', 'RasEntryInfo', 'RasEntryExist', 'RasEntryDel', 'RasEntryAdd', 'RasDialInfo', 'RasDial',
- 'RasCopy', 'RasConStatus', 'qVersionInfo', 'qTransact', 'qTables', 'qSpecial', 'qSetConnOpt', 'qNumRsltCol', 'qNativeSql', 'qLastCode',
- 'qGetData', 'qFreeStmt', 'qFreeEnv', 'qFreeConnect', 'qFetch', 'qExecDirect', 'qError', 'qDriverList', 'qDriverCon', 'qDisconnect',
- 'qDataSources', 'qConnect', 'qConfigError', 'qConfigData', 'qColumns', 'qBindCol', 'qAllocStmt', 'qAllocEnv', 'qAllocConnect',
- 'pWaitFor', 'pVersionInfo', 'pTimeout', 'pSetPublish', 'pSetPrtInfo', 'pSetPrtAttrib', 'pSetDefPrtEx', 'pSetDefPrt', 'pSendFile',
- 'pRecvFile', 'pPutString', 'pPutLine', 'pPutChar', 'pPutByte', 'pPutBinary', 'PPollUnconfig', 'PPollConfig', 'PPoll', 'pPeekChar',
- 'pPeekByte', 'pPaperSizes', 'pPaperBins', 'pModemSReg', 'pModemParams', 'pModemInit', 'pModemHangUp', 'pModemDial', 'pModemControl',
- 'pModemConnect', 'pModemCommand', 'pModemAnsRing', 'pModemAnsCall', 'pMediaTypes', 'pGetString', 'pGetPublish', 'pGetPrtList',
- 'pGetPrtInfo', 'pGetPrtAttrib', 'pGetLine', 'pGetLastError', 'pGetErrorMsg', 'pGetErrorCode', 'pGetDefPrtInf', 'pGetChar',
- 'pGetByte', 'pGetBinary', 'pDelPrtConn', 'pDelPrinter', 'pComOpen', 'pComModify', 'pComInfo', 'pComControl', 'pComClose',
- 'pCheckSum', 'pCheckBinary', 'pCaptureOn', 'pCaptureOff', 'pCaptureLog', 'PassControl', 'pAddPrtConn', 'pAddPrinter', 'p3RecvText',
- 'p3RecvFile', 'p3Peek', 'p3Open', 'p3GetReply', 'p3Delete', 'p3Count', 'p3Close', 'nwWhoAmI', 'nwVfyPassword', 'nwVersion',
- 'nwSrvShutdown', 'nwSrvNLMMgr', 'nwSrvGenGUID', 'nwSrvExecNCF', 'nwSetVolLimit', 'nwSetSrvParam', 'nwSetSrvInfo', 'nwSetPrimServ',
- 'nwSetPassword', 'nwSetOptions', 'nwSetFileInfo', 'nwSetDirLimit', 'nwSetDirInfo', 'nwSetContext', 'nwSetBcastMode', 'nwServerList',
- 'nwSendBcastMsg', 'nwSearchObjects', 'nwSearchFilter', 'nwRenameObject', 'nwRemoveObject', 'nwReceiveBcastMsg', 'nwNameConvert',
- 'nwMutateObject', 'nwMoveObject', 'nwModifyObject', 'nwMapDelete', 'nwMap', 'nwLogout', 'nwLogin', 'nwListUserGroups',
- 'nwListObjects', 'nwListGroupMembers', 'nwLastErrMsg', 'nwIsUserInGroup', 'nwGetVolLimit', 'nwGetSrvStats', 'nwGetSrvParam',
- 'nwGetSrvInfo', 'nwGetSrvCfg', 'nwGetOptions', 'nwGetObjValue', 'nwGetObjInfo', 'nwGetNLMInfo', 'nwGetMapped', 'nwGetFileInfo',
- 'nwGetDirLimit', 'nwGetDirInfo', 'nwGetContext', 'nwGetConnInfo', 'nwGetCapture', 'nwGetBcastMode', 'nwGetAttrInfo',
- 'nwDriveStatus', 'nwDrivePath', 'nwDetachFromServer', 'nwDelUserFromGroup', 'nwDelConnNum', 'nwCompareObject', 'nwClientInfo',
- 'nwChgPassword', 'nwAttachToServer', 'nwAddUserToGroup', 'nwAddObject', 'netVersion', 'netResources', 'netGetUser', 'netGetCon',
- 'netDirDialog', 'netCancelCon', 'netAddPrinter', 'netAddDrive', 'n4Version', 'n4UserGroups', 'n4UserGroupEx', 'n4SetPrimServ',
- 'n4SetOptions', 'n4SetContextG', 'n4SetContext', 'n4ServerList', 'n4ServerInfo', 'n4ObjSearch', 'n4ObjRename', 'n4ObjOptions',
- 'n4ObjMove', 'n4ObjGetVal', 'n4ObjectProps', 'n4ObjectList', 'n4ObjectInfo', 'n4ObjDelete', 'n4NameConvert', 'n4MsgsEndAll',
- 'n4MsgsEnd', 'n4MemberSet', 'n4MemberGet', 'n4MemberDel', 'n4MapRoot', 'n4MapDir', 'n4MapDelete', 'n4Map', 'n4LogoutTree',
- 'n4Logout', 'n4Login', 'n4GetUserName', 'n4GetUserId', 'n4GetUser', 'n4GetNetAddr', 'n4GetMapped', 'n4GetContext',
- 'n4GetConnNum', 'n4FileUsers', 'n4FileTimeGet', 'n4FileAttrSet', 'n4FileAttrGet', 'n4DriveStatus', 'n4DrivePath', 'n4DirTimeGet',
- 'n4DirAttrSet', 'n4DirAttrGet', 'n4Detach', 'n4ChgPassword', 'n4CapturePrt', 'n4CaptureGet', 'n4CaptureEnd', 'n4Attach',
- 'n3Version', 'n3UserGroups', 'n3ServerList', 'n3ServerInfo', 'n3MsgsEndAll', 'n3MsgsEnd', 'n3MemberSet', 'n3MemberGet',
- 'n3MemberDel', 'n3Maproot', 'n3Mapdir', 'n3Mapdelete', 'n3Map', 'n3Logout', 'n3GetUserId', 'n3GetUser', 'n3GetNetAddr',
- 'n3GetMapped', 'n3GetConnNum', 'n3FileTimeGet', 'n3FileAttrSet', 'n3FileAttrGet', 'n3DriveStatus', 'n3DrivePath',
- 'n3DirTimeGet', 'n3DirAttrSet', 'n3DirAttrGet', 'n3Detach', 'n3ChgPassword', 'n3CapturePrt', 'n3CaptureGet',
- 'n3CaptureEnd', 'n3Attach', 'mVersion', 'mSyncMail', 'mSendMailEx', 'mSendMail', 'mrecvmail', 'mReadNextMsg', 'mLogOn',
- 'mLogOff', 'mFindNext', 'mError', 'mCompatible', 'kVerInfo', 'kStatusInfo', 'kSendText', 'kSendFile', 'kManageImap4',
- 'kInit', 'kGetMail', 'kExtra', 'kDest', 'kDeletePop3', 'iWriteDataBuf', 'iWriteData', 'iVersion', 'IUrlOpen', 'iUrlEncode',
- 'iUrlDecode', 'iReadDataBuf', 'iReadData', 'ipVersion', 'ipPing', 'iPing', 'ipHost2Addr', 'ipGetLastErr', 'ipGetAddress',
- 'iParseURL', 'ipAddr2Host', 'iOptionSet', 'iOptionGet', 'ImgWave', 'ImgVersion', 'ImgUnsharpMask', 'ImgThreshold', 'ImgSwirl',
- 'ImgSpread', 'ImgSolarize', 'ImgShear', 'ImgSharpen', 'ImgShade', 'ImgScale', 'ImgSample', 'ImgRotate', 'ImgResize',
- 'ImgReduceNoise', 'ImgRaise', 'ImgOilPaint', 'ImgNormalize', 'ImgNegate', 'ImgMotionBlur', 'ImgModulate', 'ImgMinify',
- 'ImgMedianFilter', 'ImgMagnify', 'ImgLevel', 'ImgIsValid', 'ImgIsPalette', 'ImgIsMono', 'ImgIsGray', 'ImgInfo', 'ImgImplode',
- 'ImgGetImageType', 'ImgGetColorCount', 'ImgGaussianBlur', 'ImgGamma', 'ImgFrame', 'ImgFlop', 'ImgFlip', 'ImgEqualize',
- 'ImgEnhance', 'ImgEmboss', 'ImgCrop', 'ImgConvert', 'ImgContrast', 'ImgCompare', 'ImgColorize', 'ImgChop', 'ImgCharcoal',
- 'ImgBorder', 'ImgBlur', 'ImgAddNoise', 'iLocFindNext', 'iLocFindInit', 'iHttpOpen', 'iHttpInit', 'iHttpHeaders', 'iHttpAccept',
- 'iHostConnect', 'iHost2Addr', 'iGetResponse', 'iGetLastError', 'iGetIEVer', 'iGetConStatEx', 'iGetConState', 'iFtpRename',
- 'iFtpPut', 'iFtpOpen', 'iFtpGet', 'iFtpFindNext', 'iFtpFindInit', 'iFtpDirRemove', 'iFtpDirMake', 'iFtpDirGet', 'iFtpDirChange',
- 'iFtpDialog', 'iFtpDelete', 'iFtpCmd', 'iErrorDialog', 'iDialItemize', 'iDialHangUp', 'iDial', 'iCookieSet', 'iCookieGet',
- 'iContentURL', 'iContentFile', 'iContentData', 'iClose', 'ibWrtf', 'ibWrt', 'ibWait', 'ibVersion', 'ibUnlock', 'ibTrg',
- 'ibTmo', 'ibStop', 'ibStatus', 'ibSta', 'ibSre', 'ibSic', 'ibSad', 'ibRsv', 'ibRsp', 'ibRsc', 'ibRpp', 'ibRdf', 'ibRd',
- 'ibPpc', 'ibPoke', 'ibPct', 'ibPad', 'ibOnl', 'ibMakeAddr', 'ibLock', 'ibLoc', 'ibLn', 'ibLines', 'ibIst', 'ibInit',
- 'ibGts', 'ibGetSad', 'ibGetPad', 'ibFind', 'ibEvent', 'ibErr', 'ibEot', 'ibEos', 'iBegin', 'ibDma', 'ibDev', 'ibConfig',
- 'ibCntl', 'ibCnt', 'ibCmda', 'ibCmd', 'ibClr', 'ibCac', 'ibBna', 'ibAsk', 'iAddr2Host', 'huge_Thousands', 'huge_Subtract',
- 'huge_SetOptions', 'huge_Multiply', 'huge_GetLastError', 'huge_ExtenderInfo', 'huge_Divide', 'huge_Decimal', 'huge_Add',
- 'httpStripHTML', 'httpRecvTextF', 'httpRecvText', 'httpRecvQuery', 'httpRecvQryF', 'httpRecvFile', 'httpGetServer',
- 'httpGetQuery', 'httpGetPath', 'httpGetFile', 'httpGetDir', 'httpGetAnchor', 'httpFullPath', 'httpFirewall', 'httpAuth',
- 'ftpRename', 'ftpQuote', 'ftpPut', 'ftpOpen', 'ftpList', 'ftpGet', 'ftpFirewall', 'ftpDelete', 'ftpClose', 'ftpChDir',
- 'FindRQS', 'FindLstn', 'EnvSetVar', 'EnvPathDel', 'EnvPathChk', 'EnvPathAdd', 'EnvListVars', 'EnvGetVar', 'EnvGetInfo',
- 'EnableRemote', 'EnableLocal', 'ehllapiWait', 'ehllapiVersion', 'ehllapiUninit', 'ehllapiStopKeyIntercept', 'ehllapiStopHostNotify',
- 'ehllapiStopCloseIntercept', 'ehllapiStartKeyIntercept', 'ehllapiStartHostNotify', 'ehllapiStartCloseIntercept',
- 'ehllapiSetWindowStatus', 'ehllapiSetSessionParams', 'ehllapiSetPSWindowName', 'ehllapiSetCursorLoc', 'ehllapiSendKey',
- 'ehllapiSendFile', 'ehllapiSearchPS', 'ehllapiSearchField', 'ehllapiRunProfile', 'ehllapiResetSystem', 'ehllapiReserve',
- 'ehllapiRelease', 'ehllapiReceiveFile', 'ehllapiQuerySystem', 'ehllapiQueryPSStatus', 'ehllapiQueryHostNotify',
- 'ehllapiQueryFieldAttr', 'ehllapiQueryCursorLoc', 'ehllapiQueryCloseIntercept', 'ehllapiPostInterceptStatus',
- 'ehllapiPause', 'ehllapiLastErrMsg', 'ehllapiInit', 'ehllapiGetWindowStatus', 'ehllapiGetPSHWND', 'ehllapiGetKey',
- 'ehllapiFindFieldPos', 'ehllapiFindFieldLen', 'ehllapiDisconnectPS', 'ehllapiCvtRCToPos', 'ehllapiCvtPosToRC',
- 'ehllapiCopyTextToPS', 'ehllapiCopyTextToField', 'ehllapiCopyTextFromPS', 'ehllapiCopyTextFromField', 'ehllapiCopyOIA',
- 'ehllapiConnectPS', 'dunItemize', 'dunDisconnect', 'dunConnectEx', 'dunConnect', 'dsTestParam', 'dsSIDtoHexStr', 'dsSetSecProp',
- 'dsSetProperty', 'dsSetPassword', 'dsSetObj', 'dsSetCredentX', 'dsSetCredent', 'dsRemFromGrp', 'dsRelSecObj', 'dsMoveObj',
- 'dsIsObject', 'dsIsMemberGrp', 'dsIsContainer', 'dsGetUsersGrps', 'dsGetSecProp', 'dsGetPropName', 'dsGetProperty',
- 'dsGetPrntPath', 'dsGetPrimGrp', 'dsGetMemGrp', 'dsGetInfo', 'dsGetClass', 'dsGetChldPath', 'dsFindPath', 'dsDeleteObj',
- 'dsCreatSecObj', 'dsCreateObj', 'dsCopySecObj', 'dsAddToGrp', 'dsAclRemAce', 'dsAclOrderAce', 'dsAclGetAces', 'dsAclAddAce',
- 'DevClearList', 'DevClear', 'dbTest', 'dbSwapColumns', 'dbSort', 'dbSetRecordField', 'dbSetOptions', 'dbSetErrorReporting',
- 'dbSetEntireRecord', 'dbSetDelimiter', 'dbSave', 'dbOpen', 'dbNameColumn', 'dbMakeNewItem', 'dbInsertColumn', 'dbGetVersion',
- 'dbGetSaveStatus', 'dbGetRecordField', 'dbGetRecordCount', 'dbGetNextItem', 'dbGetLastError', 'dbGetEntireRecord',
- 'dbGetColumnType', 'dbGetColumnNumber', 'dbGetColumnName', 'dbGetColumnCount', 'dbFindRecord', 'dbExist', 'dbEasterEgg',
- 'dbDeleteRecord', 'dbDeleteColumn', 'dbDebug', 'dbCookDatabases', 'dbClose', 'dbCloneRecord', 'dbBindCol', 'cWndState',
- 'cWndinfo', 'cWndGetWndSpecName', 'cWndGetWndSpec', 'cWndexist', 'cWndByWndSpecName', 'cWndByWndSpec', 'cWndbyseq',
- 'cWndbyname', 'cWndbyid', 'cWndbyclass', 'cWinIDConvert', 'cVersionInfo', 'cVendorId', 'cSetWndText', 'cSetUpDownPos',
- 'cSetTvItem', 'cSetTrackPos', 'cSetTabItem', 'cSetLvItem', 'cSetLbItemEx', 'cSetLbItem', 'cSetIpAddr', 'cSetFocus',
- 'cSetEditText', 'cSetDtpDate', 'cSetCbItem', 'cSetCalDate', 'cSendMessage', 'cRadioButton', 'cPostMessage', 'cPostButton',
- 'cMemStat', 'cGetWndCursor', 'cGetUpDownPos', 'cGetUpDownMin', 'cGetUpDownMax', 'cGetTVItem', 'cGetTrackPos', 'cGetTrackMin',
- 'cGetTrackMax', 'cGetTbText', 'cGetSbText', 'cGetLvText', 'cGetLvSelText', 'cGetLvFocText', 'cGetLvDdtText', 'cGetLvColText',
- 'cGetLbText', 'cGetLbSelText', 'cGetLbCount', 'cGetIpAddr', 'cGetInfo', 'cGetHrText', 'cGetFocus', 'cGetEditText', 'cGetDtpDate',
- 'cGetControlImageCRC', 'cGetCBText', 'cGetCbCount', 'cGetCalDate', 'cFindByName', 'cFindByClass', 'cEnablestate', 'cDblClickItem',
- 'cCpuSupt', 'cCpuSpeed', 'cCpuIdExt', 'cCpuId', 'cCpuFeat', 'cCpuBenchmark', 'cCloneCheck', 'cClickToolbar', 'cClickButton',
- 'cClearTvItem', 'cClearLvItem', 'cClearLbAll', 'cCheckbox', 'aVersion', 'aStatusbar', 'aShellFolder', 'aMsgTimeout', 'AllSPoll',
- 'aGetLastError', 'aFileRename', 'aFileMove', 'aFileDelete', 'aFileCopy'
- ),
- 5 => array(
- 'wWordRight', 'wWordLeft', 'wWinTile', 'wWinRestore', 'wWinNext', 'wWinMinimize', 'wWinMaximize', 'wWinCloseAll', 'wWinClose',
- 'wWinCascade', 'wWinArricons', 'wViewOutput', 'wViewOptions', 'wViewHtml', 'wUpperCase', 'wUpline', 'wUndo', 'wTopOfFile', 'wToggleIns',
- 'wTab', 'wStatusMsg', 'wStartSel', 'wSpellcheck', 'wSetProject', 'wSetPrefs', 'wSetColblk', 'wSetBookmark', 'wSelWordRight',
- 'wSelWordLeft', 'wSelUp', 'wSelTop', 'wSelRight', 'wSelPgUp', 'wSelPgDn', 'wSelLeft', 'wSelInfo', 'wSelHome', 'wSelEnd', 'wSelectAll',
- 'wSelDown', 'wSelBottom', 'wRunRebuild', 'wRunMake', 'wRunExecute', 'wRunDebug', 'wRunConfig', 'wRunCompile', 'wRunCommand', 'wRight',
- 'wRepeat', 'wRedo', 'wRecord', 'wProperties', 'wPrintDirect', 'wPrinSetup', 'wPrevError', 'wPaste', 'wPageUp', 'wPageDown', 'wNextError',
- 'wNewLine', 'wLowerCase', 'wLineCount', 'wLeft', 'wInvertCase', 'wInsString', 'wInsLine', 'wHome', 'wHelpKeyword', 'wHelpKeybrd',
- 'wHelpIndex', 'wHelpHelp', 'wHelpCmds', 'wHelpAbout', 'wGotoLine', 'wGotoCol', 'wGetWrap', 'wGetWord', 'wGetUndo', 'wGetSelstate',
- 'wGetRedo', 'wGetOutput', 'wGetModified', 'wGetLineNo', 'wGetIns', 'wGetFilename', 'wGetColNo', 'wGetChar', 'wFtpOpen', 'wFindNext',
- 'wFindInFiles', 'wFind', 'wFileSaveAs', 'wFileSave', 'wFileRevert', 'wFilePrint', 'wFilePgSetup', 'wFileOpen', 'wFileNew', 'wFileMerge',
- 'wFileList', 'wFileExit', 'wEndSel', 'wEndOfFile', 'wEnd', 'wEdWrap', 'wEdWordRight', 'wEdWordLeft', 'wEdUpLine', 'wEdUndo', 'wEdTopOfFile',
- 'wEdToggleIns', 'wEdTab', 'wEdStartSel', 'wEdSetColBlk', 'wEdSelectAll', 'wEdRight', 'wEdRedo', 'wEdPaste', 'wEdPageUp', 'wEdPageDown',
- 'wEdNewLine', 'wEdLeft', 'wEdInsString', 'wEdHome', 'wEdGoToLine', 'wEdGoToCol', 'wEdGetWord', 'wEdEndSel', 'wEdEndOfFile', 'wEdEnd',
- 'wEdDownLine', 'wEdDelete', 'wEdCutLine', 'wEdCut', 'wEdCopyLine', 'wEdCopy', 'wEdClearSel', 'wEdBackTab', 'wEdBackspace', 'wDownLine',
- 'wDelete', 'wDelButton', 'wCutMarked', 'wCutLine', 'wCutAppend', 'wCut', 'wCopyMarked', 'wCopyLine', 'wCopyAppend', 'wCopy', 'wCompile',
- 'wClearSel', 'wChange', 'wCallMacro', 'wBackTab', 'wBackspace', 'wAutoIndent', 'wAddButton', 'edWindowTile', 'edWindowRestore',
- 'edWindowNext', 'edWindowMinimize', 'edWindowMaximize', 'edWindowCloseall', 'edWindowClose', 'edWindowCascade', 'edWindowArrangeIcons',
- 'edStatusMsg', 'edSearchViewOutput', 'edSearchRepeat', 'edSearchPrevError', 'edSearchNextError', 'edSearchFind', 'edSearchChange',
- 'edRunRebuild', 'edRunMake', 'edRunExecute', 'edRunDebug', 'edRunConfigure', 'edRunCompile', 'edRunCommand', 'edRecord', 'edHelpProcedures',
- 'edHelpKeyword', 'edHelpKeyboard', 'edHelpIndex', 'edHelpHelp', 'edHelpCommands', 'edHelpAbout', 'edGetWordWrapState', 'edGetWindowName',
- 'edGetUndoState', 'edGetSelectionState', 'edGetRedoState', 'edGetModifiedStatus', 'edGetLineNumber', 'edGetInsertState', 'edGetColumnNumber',
- 'edGetChar', 'edFileSetPreferences', 'edFileSaveAs', 'edFileSave', 'edFilePrinterSetup', 'edFilePrint', 'edFilePageSetup', 'edFileOpen',
- 'edFileNew', 'edFileMerge', 'edFileList', 'edFileExit', 'edEditWrap', 'edEditWordRight', 'edEditWordLeft', 'edEditUpLine', 'edEditUndo',
- 'edEditToggleIns', 'edEditTab', 'edEditStartSelection', 'edEditSetColumnBlock', 'edEditSetBookmark', 'edEditSelectAll', 'edEditRight',
- 'edEditRedo', 'edEditPaste', 'edEditPageUp', 'edEditPageDown', 'edEditLeft', 'edEditInsertString', 'edEditGoToLine', 'edEditGoToColumn',
- 'edEditGoToBookmark', 'edEditGetCurrentWord', 'edEditEndSelection', 'edEditEndOfLine', 'edEditEndOfFile', 'edEditDownline', 'edEditDelete',
- 'edEditCutline', 'edEditCut', 'edEditCopyline', 'edEditCopy', 'edEditClearSelection', 'edEditBeginningOfLine', 'edEditBeginningOfFile',
- 'edEditBackTab', 'edEditBackspace', 'edDeleteButton', 'edAddButton'
- )
- ),
- 'SYMBOLS' => array(
- '(', ')', '[', ']', '{', '}', '!', '+', '-', '~', '$', '^', '?', '@', '%', '#', '&', '*', '|', '/', '<', '>'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false,
- 5 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #800080;',
- 2 => 'color: #0080FF; font-weight: bold;',
- 3 => 'color: #0000FF;',
- 4 => 'color: #FF00FF;',
- 5 => 'color: #008000;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #008000; font-style: italic;',
- 2 => 'color: #FF1010; font-weight: bold;',
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- 0 => 'color: #006600;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #0000ff;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => '',
- 3 => '',
- 4 => '',
- 5 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTER' => '',
- 'REGEXPS' => array(
- 0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
- ),
- 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * winbatch.php
+ * ------------
+ * Author: Craig Storey (storey.craig at gmail.com)
+ * Copyright: (c) 2004 Craig Storey (craig.xcottawa.ca)
+ * Release Version: 1.0.7.21
+ * Date Started: 2006/05/19
+ *
+ * WinBatch language file for GeSHi.
+ *
+ * WinBatch is a Windows scripting language - www.winbatch.com.
+ * The keywords were pulled from the winbatch/system/WIL.clr file for v2005G.
+ * Not all extender functions are added, but a very large set of the most common.
+ *
+ * CHANGES
+ * -------
+ * 2006/05/05 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * - Right now any ':Subroutine' is treated as a comment. This highlights the
+ * Subroutine's name, but it's not a perfect fix. I should use a RegEx in
+ * GeSHI_Search&Replace features..
+ * - Update the list of extender functions.
+ * - Use a regular expression to comment UDFs that start with 'udf_'.
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'Winbatch',
+ 'COMMENT_SINGLE' => array(1 => ';', 2 => ':'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"', '`'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ 'While', 'To', 'Then', 'Switch', 'Select', 'Return', 'Next', 'IntControl', 'Include', 'In', 'If',
+ 'Goto', 'GoSub', 'ForEach', 'For', 'Exit', 'Execute', 'ErrorMode', 'EndWhile', 'EndSwitch', '#EndSubRoutine',
+ 'EndSelect', 'EndIf', '#EEndFunction', 'EndFor', 'End', 'Else', 'DropWild', 'Drop', '#DefineSubRoutine',
+ '#DefineFunction', 'Debug', 'Continue', 'Case', 'CallExt', 'Call', 'By', 'BreakPoint', 'Break'
+ ),
+ 2 => array(
+ 'ZOOMED', 'YES', 'WORD4', 'WORD2', 'WORD1', 'WHOLESECTION', 'WAIT', 'UNSORTED', 'UNCHECK', 'TRUE', 'TILE',
+ 'TAB', 'STRING', 'STACK', 'SPC2NET', 'SORTED', 'SOK', 'SNET2PC', 'SINGLE', 'SHIFT', 'SERVER', 'SERRWINSOCK',
+ 'SERRVOICE', 'SERRSOCKET', 'SERRSERVICE', 'SERRSELECT', 'SERRPARAM', 'SERROUTOFMEM', 'SERRNOTFOUND', 'SERRNOCONN',
+ 'SERRNOANSWER', 'SERRMUSTWAIT', 'SERRIPADDR', 'SERRHOSTNAME', 'SERRFAILURE', 'SERRBUSY', 'SCROLLLOCK', 'SCANCEL',
+ 'SAVE', 'SALREADY', 'ROWS', 'REGUSERS', 'REGROOT', 'REGMACHINE', 'REGCURRENT', 'REGCLASSES', 'RDBLCLICK', 'RCLICK',
+ 'RBUTTON', 'RAD2DEG', 'QSUCCESSINFO', 'QSUCCESS', 'QSTILLEX', 'QROLLBACK', 'QNULL', 'QNODATA', 'QNEXT', 'QNEEDDATA',
+ 'QFIRST', 'QCOMMIT', 'QBADHANDLE', 'PRINTER', 'PLANCKJOULES', 'PLANCKERGS', 'PI', 'PARSEONLY', 'PARSEC', 'P3ERRREPLY',
+ 'OPEN', 'ON', 'OFF', 'NUMLOCK', 'NOWAIT', 'NOTIFY', 'NORMAL', 'NORESIZE', 'NONE', 'NO', 'NCSAFORMAT', 'MULTIPLE',
+ 'MSFORMAT', 'MPLAYRDBLCK', 'MPLAYRCLK', 'MPLAYRBUTTON', 'MPLAYMDBLCK', 'MPLAYMCLK', 'MPLAYMBUTTON', 'MPLAYLDBLCK',
+ 'MPLAYLCLK', 'MPLAYLBUTTON', 'MINOR', 'MDBLCLICK', 'MCLICK', 'MBYESNO', 'MBUTTON', 'MBOKCANCEL', 'MAJOR', 'MAGFIELD',
+ 'LOCALGROUP', 'LIGHTMTPS', 'LIGHTMPS', 'LF', 'LDBLCLICK', 'LCLICK', 'LBUTTON', 'LAFFDBERROR', 'ICON', 'HTTPS', 'HTTP',
+ 'HNOHEADER', 'HMETHODPOST', 'HMETHODGET', 'HIDDEN', 'HHEADERONLY', 'HHEADER', 'GRAVITATION', 'GOPHER', 'GOLDENRATIO',
+ 'GMTSEC', 'GLOBALGROUP', 'GFTSEC', 'GETPROCID', 'GETEXITCODE', 'FWDSCAN', 'FTPPASSIVE', 'FTP', 'FLOAT8', 'FARADAY',
+ 'FALSE', 'EXTENDED', 'EULERS', 'ENABLE', 'ELECTRIC', 'DRIVE', 'DISABLE', 'DESCENDING', 'DEG2RAD', 'DEFAULT', 'CTRL',
+ 'CRLF', 'CR', 'COMMONFORMAT', 'COLUMNS', 'CHECK', 'CAPSLOCK', 'CANCEL', 'BOLTZMANN', 'BACKSCAN', 'AVOGADRO', 'ATTR_X',
+ 'ATTR_T', 'ATTR_SY', 'ATTR_SH', 'ATTR_RO', 'ATTR_RI', 'ATTR_P', 'ATTR_IC', 'ATTR_H', 'ATTR_DM', 'ATTR_DI', 'ATTR_DC',
+ 'ATTR_CI', 'ATTR_A', 'ASCENDING', 'ARRANGE', 'AMC', 'ACC_WRITE', 'ACC_READ_NT', 'ACC_READ_95', 'ACC_READ', 'ACC_PRINT_NT',
+ 'ACC_PMANG_NT', 'ACC_PFULL_NT', 'ACC_LIST', 'ACC_FULL_NT', 'ACC_FULL_95', 'ACC_DELETE', 'ACC_CREATE', 'ACC_CONTROL',
+ 'ACC_CHNG_NT', 'ACC_ATTRIB', 'ABOVEICONS'
+ ),
+ 3 => array(
+ 'Yields', 'Yield', 'WinZoom', 'WinWaitExist', 'WinWaitClose', 'WinWaitChild', 'WinVersion', 'WinTitle', 'WinSysInfo',
+ 'WinState', 'WinShow', 'WinResources', 'WinPositionChild', 'WinPosition', 'WinPlaceSet', 'WinPlaceGet', 'WinPlaceChild',
+ 'WinPlace', 'WinParmSet', 'WinParmGet', 'WinName', 'WinMetrics', 'WinItemProcId', 'WinItemNameId', 'WinItemizeEx',
+ 'WinItemize', 'WinItemChild', 'WinIsDos', 'WinIdGet', 'WinIconize', 'WinHide', 'WinHelp', 'WinGetactive', 'WinExistchild',
+ 'WinExist', 'WinExename', 'WinConfig', 'WinClosenot', 'WinClose', 'WinArrange', 'WinActivechild', 'WinActivchild',
+ 'WinActivate', 'WebVerifyCard', 'WebSetTimeout', 'WebParamSize', 'WebParamNames', 'WebParamFile', 'WebParamData',
+ 'WebParamBuf', 'WebOutFile', 'WebOutBinary', 'WebOut', 'WebDumpError', 'WebDatData', 'WebCounter', 'WebConSize', 'WebConData',
+ 'WebConBuf', 'WebCmdData', 'WebBaseConv', 'Wallpaper', 'WaitForKeyEX', 'WaitForKey', 'VersionDLL', 'Version', 'VarType',
+ 'TimeYmdHms', 'TimeWait', 'TimeSubtract', 'TimeJulToYmd', 'TimeJulianDay', 'TimeDiffSecs', 'TimeDiffDays', 'TimeDiff', 'TimeDelay',
+ 'TimeDate', 'TimeAdd', 'TextSelect', 'TextBoxSort', 'TextBox', 'Terminate', 'Tanh', 'Tan', 'SysParamInfo', 'SvcWaitForCmd',
+ 'SvcSetState', 'SvcSetAccept', 'StrUpper', 'StrTrim', 'StrSubWild', 'StrSub', 'StrScan', 'StrReplace', 'StrLower', 'StrLenWild',
+ 'StrLen', 'StrIndexWild', 'StrIndexNC', 'StrIndex', 'StriCmp', 'StrFixLeft', 'StrFixCharsL', 'StrFixChars', 'StrFix', 'StrFill',
+ 'StrCnt', 'StrCmp', 'StrClean', 'StrCharCount', 'StrCat', 'StrByteCount', 'Sqrt', 'SoundVolume', 'Sounds', 'Snapshot', 'Sinh', 'Sin',
+ 'ShortCutMake', 'ShortCutInfo', 'ShortCutExtra', 'ShortCutEdit', 'ShortCutDir', 'ShellExecute', 'SendMenusToEx', 'SendMenusTo',
+ 'SendKeysTo', 'SendKeysChild', 'SendKey', 'RunZoomWait', 'RunZoom', 'RunWithLogon', 'RunWait', 'RunShell', 'RunIconWait',
+ 'RunIcon', 'RunHideWait', 'RunHide', 'RunExit', 'RunEnviron', 'Run', 'RtStatus', 'Reload', 'RegUnloadHive', 'RegSetValue',
+ 'RegSetQword', 'RegSetMulSz', 'RegSetExpSz', 'RegSetEx', 'RegSetDword', 'RegSetBin', 'RegQueryValue', 'RegQueryStr',
+ 'RegQueryQword', 'RegQueryMulSz', 'RegQueryKeys', 'RegQueryKeyLastWriteTime', 'RegQueryKey', 'RegQueryItem', 'RegQueryExpSz',
+ 'RegQueryEx', 'RegQueryDword', 'RegQueryBin', 'RegOpenKeyEx', 'RegOpenKey', 'RegOpenFlags', 'RegLoadHive', 'RegExistValue',
+ 'RegExistKey', 'RegEntryType', 'RegDelValue', 'RegDeleteKey', 'RegCreateKey', 'RegConnect', 'RegCloseKey', 'RegApp', 'Random',
+ 'PtrPersistent', 'PtrGlobalDefine', 'PtrGlobal', 'Print', 'PlayWaveform', 'PlayMidi', 'PlayMedia', 'PipeServerWrite', 'PipeServerRead',
+ 'PipeServerCreate', 'PipeServerClose', 'PipeInfo', 'PipeClientSendRecvData', 'PipeClientOpen', 'PipeClientClose', 'Pause',
+ 'ParseData', 'ObjectTypeGet', 'ObjectType', 'ObjectOpen', 'ObjectGet', 'ObjectEventRemove', 'objecteventremove', 'ObjectEventAdd',
+ 'objecteventadd', 'ObjectCreate', 'ObjectConstToArray', 'ObjectConstantsGet', 'ObjectCollectionOpen', 'ObjectCollectionNext',
+ 'ObjectCollectionClose', 'ObjectClose', 'ObjectAccess', 'Num2Char', 'NetInfo', 'MsgTextGet', 'MousePlay', 'MouseMove', 'MouseInfo',
+ 'MouseDrag', 'MouseCoords', 'MouseClickBtn', 'MouseClick', 'mod', 'Min', 'Message', 'Max', 'Loge', 'LogDisk', 'Log10', 'LastError',
+ 'KeyToggleSet', 'KeyToggleGet', 'ItemSortNc', 'ItemSort', 'ItemSelect', 'ItemReplace', 'ItemRemove', 'ItemLocate', 'ItemInsert',
+ 'ItemExtractCSV', 'ItemExtract', 'ItemCountCSV', 'ItemCount', 'IsNumber', 'IsLicensed', 'IsKeyDown', 'IsInt', 'IsFloat', 'IsDefined',
+ 'Int', 'InstallFile', 'IniWritePvt', 'IniWrite', 'IniReadPvt', 'IniRead', 'IniItemizePvt', 'IniItemize', 'IniDeletePvt', 'IniDelete',
+ 'IgnoreInput', 'IconReplace', 'IconInfo', 'IconExtract', 'IconArrange', 'GetTickCount', 'GetObject', 'GetExactTime', 'Floor',
+ 'FindWindow', 'FileYmdHms', 'FileWrite', 'FileVerInfo', 'FileTimeTouch', 'FileTimeSetEx', 'FileTimeSet', 'FileTimeGetEx',
+ 'FileTimeGet', 'FileTimeCode', 'FileSizeEx', 'FileSize', 'FileRoot', 'FileRename', 'FileRead', 'FilePutW', 'FilePut', 'FilePath',
+ 'FileOpen', 'FileNameShort', 'FileNameLong', 'FileNameEval2', 'FileNameEval1', 'FileMoveAttr', 'FileMove', 'FileMapName',
+ 'FileLocate', 'FileItemPath', 'FileItemize', 'FileInfoToArray', 'FileGetW', 'FileGet', 'FileFullname', 'FileExtension', 'FileExist',
+ 'FileDelete', 'FileCreateTemp', 'FileCopyAttr', 'FileCopy', 'FileCompare', 'FileClose', 'FileBaseName', 'FileAttrSetEx',
+ 'FileAttrSet', 'FileAttrGetEx', 'FileAttrGet', 'FileAppend', 'Fabs', 'ExtractAttachedFile', 'Exp', 'ExeTypeInfo', 'Exclusive',
+ 'EnvItemize', 'EnvironSet', 'Environment', 'EndSession', 'DosVersion', 'DllLoad', 'DllLastError', 'DllHwnd', 'DllHinst',
+ 'DllFree', 'DllCallCDecl', 'DllCall', 'Display', 'DiskVolinfo', 'DiskSize', 'DiskScan', 'DiskInfo', 'DiskFree', 'DiskExist',
+ 'DirWindows', 'DirSize', 'DirScript', 'DirRename', 'DirRemove', 'DirMake', 'DirItemize', 'DirInfoToArray', 'DirHome', 'DirGet',
+ 'DirExist', 'DirChange', 'DirAttrSetEx', 'DirAttrSet', 'DirAttrGetEx', 'DirAttrGet', 'DialogProcOptions', 'DialogObject',
+ 'DialogControlState', 'DialogControlSet', 'DialogControlGet', 'DialogBox', 'Dialog', 'Delay', 'Decimals', 'DebugTrace',
+ 'DebugData', 'DDETimeout', 'DDETerminate', 'DDERequest', 'DDEPoke', 'DDEInitiate', 'DDEExecute', 'DateTime', 'CurrFilepath',
+ 'CurrentPath', 'CurrentFile', 'CreateObject', 'Cosh', 'Cos', 'ClipPut', 'ClipHasFormat', 'ClipGetEx', 'ClipGet', 'ClipAppend',
+ 'ChrUnicodeToString', 'ChrUnicodeToHex', 'ChrStringToUnicode', 'ChrSetCodepage', 'ChrHexToUnicode', 'ChrGetCodepage',
+ 'Char2Num', 'Ceiling', 'ButtonNames', 'BoxUpdates', 'BoxTitle', 'BoxTextFont', 'BoxTextColor', 'BoxText', 'BoxShut', 'BoxPen',
+ 'BoxOpen', 'BoxNew', 'BoxMapmode', 'BoxesUp', 'BoxDrawText', 'BoxDrawRect', 'BoxDrawLine', 'BoxDrawCircle', 'BoxDestroy',
+ 'BoxDataTag', 'BoxDataClear', 'BoxColor', 'BoxCaption', 'BoxButtonWait', 'BoxButtonStat', 'BoxButtonKill', 'BoxButtonDraw',
+ 'BoxBitMap', 'BinaryXor', 'BinaryXlate', 'BinaryWriteEx', 'BinaryWrite', 'BinaryTagRepl', 'BinaryTagLen', 'BinaryTagInit',
+ 'BinaryTagIndex', 'BinaryTagFind', 'BinaryTagExtr', 'BinaryStrCnt', 'BinarySort', 'BinaryReplace', 'BinaryReadEx',
+ 'BinaryRead', 'BinaryPokeStrW', 'BinaryPokeStr', 'BinaryPokeHex', 'BinaryPokeFlt', 'BinaryPoke4', 'BinaryPoke2', 'BinaryPoke',
+ 'BinaryPeekStrW', 'BinaryPeekStr', 'BinaryPeekHex', 'BinaryPeekFlt', 'BinaryPeek4', 'BinaryPeek2', 'BinaryPeek', 'BinaryOr',
+ 'BinaryOleType', 'BinaryIndexNc', 'BinaryIndexEx', 'BinaryIndexBin', 'BinaryIndex', 'BinaryIncrFlt', 'BinaryIncr4',
+ 'BinaryIncr2', 'BinaryIncr', 'BinaryHashRec', 'BinaryFree', 'BinaryEodSet', 'BinaryEodGet', 'BinaryCopy', 'BinaryConvert',
+ 'BinaryCompare', 'BinaryClipPut', 'BinaryClipGet', 'BinaryChecksum', 'BinaryBufInfo', 'BinaryAnd', 'BinaryAllocArray',
+ 'BinaryAlloc', 'Beep', 'Average', 'Atan', 'AskYesNo', 'AskTextbox', 'AskPassword', 'AskLine', 'AskItemlist', 'AskFont',
+ 'AskFiletext', 'AskFilename', 'AskDirectory', 'AskColor', 'Asin', 'ArrInitialize', 'ArrInfo', 'ArrDimension',
+ 'Arrayize', 'ArrayFilePutCSV', 'ArrayFilePut', 'ArrayFileGetCSV', 'ArrayFileGet', 'AppWaitClose', 'AppExist', 'AddExtender',
+ 'Acos', 'Abs', 'About'
+ ),
+ 4 => array(
+ 'zZipFiles', 'zVersionInfo', 'zVersion', 'zUnZipFiles', 'zSetPortBit', 'zRPortShift', 'zPortOut', 'zPortIn', 'zNotPortBit',
+ 'zLPortShift', 'zGetPortBit', 'zClrPortBit', 'xVerifyCCard', 'xSendMessage', 'xMessageBox', 'xMemCompact', 'xHex', 'xGetElapsed',
+ 'xGetChildHwnd', 'xExtenderInfo', 'xEnumStreams', 'xEjectMedia', 'xDriveReady', 'xDiskLabelGet', 'xCursorSet', 'xBaseConvert',
+ 'wxPing', 'wxParmSet', 'wxParmGet', 'wxMsgSetHdr', 'wxMsgGetHdr', 'wxMsgGetBody', 'wxHost2Addr', 'wxGetLastErr', 'wxGetInfo',
+ 'wxGetErrDesc', 'wxAddr2Host', 'wtsWaitSystemEvent', 'wtsVersion', 'wtsTerminateProcess', 'wtsShutdownSystem', 'wtsSendMessage',
+ 'wtsQuerySessionInfo', 'wtsProcIdToSessId', 'wtsLogoffSession', 'wtsLastErrMsg', 'wtsIsTSEnabled', 'wtsIsCitrixEnabled',
+ 'wtsGetActiveConsoleSessId', 'wtsEnumSessions', 'wtsEnumProcesses', 'wtsDisconnectSession', 'wnWrkGroups', 'wnVersion', 'wntWtsUserSet',
+ 'wntWtsUserGet', 'wntVersion', 'wntUserSidChk', 'wntUserSetDat', 'wntUserRename', 'wntUserProps', 'wntUserList', 'wntUserInfo',
+ 'wntUserGetDat', 'wntUserFiles', 'wntUserExist', 'wntUserDel', 'wntUserAddDat', 'wntUserAdd', 'wntSvcStatus', 'wntSvcStart',
+ 'wntSvcList', 'wntSvcDelete', 'wntSvcCreate', 'wntSvcControl', 'wntSvcCfgSet', 'wntSvcCfgGet', 'wntShutdown', 'wntShareUsers',
+ 'wntShareSet', 'wntShareList', 'wntShareInfo', 'wntShareDel', 'wntShareAdd', 'wntServiceInf', 'wntServiceAt', 'wntServerType',
+ 'wntServerList', 'wntServerInfo', 'wntSecurityGet', 'wntRunAsUser', 'wntResources2', 'wntResources', 'wntRemoteTime', 'wntRasUserSet',
+ 'wntRasUserGet', 'wntProfileInfo', 'wntProfileDel', 'wntPrivUsers', 'wntPrivList', 'wntPrivGet', 'wntPrivDel', 'wntPrivAdd',
+ 'wntOwnerSet', 'wntOwnerGet', 'wntMemberSet', 'wntMemberLst2', 'wntMemberList', 'wntMemberGrps', 'wntMemberGet', 'wntMemberDel',
+ 'wntLsaPolSet', 'wntLsaPolGet', 'wntListGroups', 'wntLastErrMsg', 'wntGroupRen', 'wntGroupInfo', 'wntGroupEdit', 'wntGroupDel',
+ 'wntGroupAdd', 'wntGetUser', 'wntGetDrive', 'wntGetDc', 'wntGetCon', 'wntFileUsers', 'wntFilesOpen', 'wntFileClose', 'wntEventWrite',
+ 'wntEventLog', 'wntDomainSync', 'wntDirDialog', 'wntDfsList', 'wntDfsGetInfo', 'wntCurrUsers', 'wntChgPswd', 'wntCancelCon',
+ 'wntAuditMod', 'wntAuditList', 'wntAuditGet', 'wntAuditDel', 'wntAuditAdd2', 'wntAuditAdd', 'wntAddPrinter', 'wntAddDrive',
+ 'wntAcctPolSet', 'wntAcctPolGet', 'wntAcctList', 'wntAcctInfo', 'wntAccessMod', 'wntAccessList', 'wntAccessGet', 'wntAccessDel',
+ 'wntaccessadd2', 'wntAccessAdd', 'wnShares', 'wnSharePath', 'wnShareName', 'wnShareCnt', 'wnServers', 'wnRestore', 'wnNetNames',
+ 'wnGetUser', 'wnGetCon', 'wnGetCaps', 'wnDlgShare', 'wnDlgNoShare', 'wnDlgDiscon', 'wnDlgCon4', 'wnDlgCon3', 'wnDlgCon2', 'wnDlgCon',
+ 'wnDlgBrowse', 'wnDialog', 'wnCmptrInfo', 'wnCancelCon', 'wnAddCon', 'WaitSRQ', 'w9xVersion', 'w9xUserSetDat', 'w9xUserRename',
+ 'w9xUserprops', 'w9xUserList', 'w9xUserinfo', 'w9xUserGetDat', 'w9xUserExist', 'w9xUserDel', 'w9xUserAddDat', 'w9xUserAdd', 'w9xShareSet',
+ 'w9xShareInfo', 'w9xShareDel', 'w9xShareAdd', 'w9xServiceAt', 'w9xServerList', 'w9xRemoteTime', 'w9xOwnerGet', 'w9xMemberSet',
+ 'w9xMemberList', 'w9xMemberGrps', 'w9xMemberGet', 'w9xMemberDel', 'w9xListGroups', 'w9xGroupInfo', 'w9xGroupDel', 'w9xGroupAdd',
+ 'w9xGetDC', 'w9xFileUsers', 'w9xAccessList', 'w9xAccessGet', 'w9xAccessDel', 'w9xAccessAdd', 'w95Version', 'w95ShareUsers',
+ 'w95ShareSet', 'w95ShareList', 'w95ShareInfo', 'w95ShareDel', 'w95ShareAdd', 'w95ServiceInf', 'w95ServiceAt', 'w95ServerType',
+ 'w95ServerInfo', 'w95Resources', 'w95GetUser', 'w95GetDrive', 'w95GetCon', 'w95FileUsers', 'w95FileClose', 'w95DirDialog',
+ 'w95CancelCon', 'w95AddPrinter', 'w95AddDrive', 'w95AccessDel', 'w95AccessAdd', 'w3Version', 'w3PrtBrowse', 'w3NetGetUser',
+ 'w3NetDialog', 'w3GetCon', 'w3GetCaps', 'w3DirBrowse', 'w3CancelCon', 'w3AddCon', 'urlGetScheme', 'urlEncode', 'urlDecode',
+ 'tVersion', 'tSetPriority', 'TriggerList', 'Trigger', 'tRemoteConn', 'tOpenProc', 'tListProc', 'tListMod', 'tKillProc', 'tGetProcInfo',
+ 'tGetPriority', 'tGetModInfo', 'tGetLastError', 'tGetData', 'TestSys', 'TestSRQ', 'tCountProc', 'tCompatible', 'tCloseProc',
+ 'tBrowseCntrs', 'sSendString', 'sSendNum', 'sSendLine', 'sSendBinary', 'sRecvNum', 'sRecvLine', 'sRecvBinary', 'SrchVersion',
+ 'SrchNext', 'SrchInit', 'SrchFree', 'sOpen', 'sOK2Send', 'sOK2Recv', 'smtpSendText', 'smtpSendFile', 'sListen', 'SetRWLS',
+ 'SendSetup', 'SendLLO', 'SendList', 'SendIFC', 'SendDataBytes', 'SendCmds', 'Send', 'sConnect', 'sClose', 'SByteOrder32',
+ 'sByteOrder16', 'sAccept', 'rRegVersion', 'rRegSearch', 'ResetSys', 'ReceiveSetup', 'Receive', 'ReadStsByte', 'RcvRespMsg',
+ 'RasVersion', 'RasTypeSize', 'RasRename', 'RasNumCons', 'RasNameValid', 'RasListActCon', 'RasItemize', 'RasHangUp', 'RasGetLastErr',
+ 'RasGetConStat', 'RasEntrySet', 'RasEntryInfo', 'RasEntryExist', 'RasEntryDel', 'RasEntryAdd', 'RasDialInfo', 'RasDial',
+ 'RasCopy', 'RasConStatus', 'qVersionInfo', 'qTransact', 'qTables', 'qSpecial', 'qSetConnOpt', 'qNumRsltCol', 'qNativeSql', 'qLastCode',
+ 'qGetData', 'qFreeStmt', 'qFreeEnv', 'qFreeConnect', 'qFetch', 'qExecDirect', 'qError', 'qDriverList', 'qDriverCon', 'qDisconnect',
+ 'qDataSources', 'qConnect', 'qConfigError', 'qConfigData', 'qColumns', 'qBindCol', 'qAllocStmt', 'qAllocEnv', 'qAllocConnect',
+ 'pWaitFor', 'pVersionInfo', 'pTimeout', 'pSetPublish', 'pSetPrtInfo', 'pSetPrtAttrib', 'pSetDefPrtEx', 'pSetDefPrt', 'pSendFile',
+ 'pRecvFile', 'pPutString', 'pPutLine', 'pPutChar', 'pPutByte', 'pPutBinary', 'PPollUnconfig', 'PPollConfig', 'PPoll', 'pPeekChar',
+ 'pPeekByte', 'pPaperSizes', 'pPaperBins', 'pModemSReg', 'pModemParams', 'pModemInit', 'pModemHangUp', 'pModemDial', 'pModemControl',
+ 'pModemConnect', 'pModemCommand', 'pModemAnsRing', 'pModemAnsCall', 'pMediaTypes', 'pGetString', 'pGetPublish', 'pGetPrtList',
+ 'pGetPrtInfo', 'pGetPrtAttrib', 'pGetLine', 'pGetLastError', 'pGetErrorMsg', 'pGetErrorCode', 'pGetDefPrtInf', 'pGetChar',
+ 'pGetByte', 'pGetBinary', 'pDelPrtConn', 'pDelPrinter', 'pComOpen', 'pComModify', 'pComInfo', 'pComControl', 'pComClose',
+ 'pCheckSum', 'pCheckBinary', 'pCaptureOn', 'pCaptureOff', 'pCaptureLog', 'PassControl', 'pAddPrtConn', 'pAddPrinter', 'p3RecvText',
+ 'p3RecvFile', 'p3Peek', 'p3Open', 'p3GetReply', 'p3Delete', 'p3Count', 'p3Close', 'nwWhoAmI', 'nwVfyPassword', 'nwVersion',
+ 'nwSrvShutdown', 'nwSrvNLMMgr', 'nwSrvGenGUID', 'nwSrvExecNCF', 'nwSetVolLimit', 'nwSetSrvParam', 'nwSetSrvInfo', 'nwSetPrimServ',
+ 'nwSetPassword', 'nwSetOptions', 'nwSetFileInfo', 'nwSetDirLimit', 'nwSetDirInfo', 'nwSetContext', 'nwSetBcastMode', 'nwServerList',
+ 'nwSendBcastMsg', 'nwSearchObjects', 'nwSearchFilter', 'nwRenameObject', 'nwRemoveObject', 'nwReceiveBcastMsg', 'nwNameConvert',
+ 'nwMutateObject', 'nwMoveObject', 'nwModifyObject', 'nwMapDelete', 'nwMap', 'nwLogout', 'nwLogin', 'nwListUserGroups',
+ 'nwListObjects', 'nwListGroupMembers', 'nwLastErrMsg', 'nwIsUserInGroup', 'nwGetVolLimit', 'nwGetSrvStats', 'nwGetSrvParam',
+ 'nwGetSrvInfo', 'nwGetSrvCfg', 'nwGetOptions', 'nwGetObjValue', 'nwGetObjInfo', 'nwGetNLMInfo', 'nwGetMapped', 'nwGetFileInfo',
+ 'nwGetDirLimit', 'nwGetDirInfo', 'nwGetContext', 'nwGetConnInfo', 'nwGetCapture', 'nwGetBcastMode', 'nwGetAttrInfo',
+ 'nwDriveStatus', 'nwDrivePath', 'nwDetachFromServer', 'nwDelUserFromGroup', 'nwDelConnNum', 'nwCompareObject', 'nwClientInfo',
+ 'nwChgPassword', 'nwAttachToServer', 'nwAddUserToGroup', 'nwAddObject', 'netVersion', 'netResources', 'netGetUser', 'netGetCon',
+ 'netDirDialog', 'netCancelCon', 'netAddPrinter', 'netAddDrive', 'n4Version', 'n4UserGroups', 'n4UserGroupEx', 'n4SetPrimServ',
+ 'n4SetOptions', 'n4SetContextG', 'n4SetContext', 'n4ServerList', 'n4ServerInfo', 'n4ObjSearch', 'n4ObjRename', 'n4ObjOptions',
+ 'n4ObjMove', 'n4ObjGetVal', 'n4ObjectProps', 'n4ObjectList', 'n4ObjectInfo', 'n4ObjDelete', 'n4NameConvert', 'n4MsgsEndAll',
+ 'n4MsgsEnd', 'n4MemberSet', 'n4MemberGet', 'n4MemberDel', 'n4MapRoot', 'n4MapDir', 'n4MapDelete', 'n4Map', 'n4LogoutTree',
+ 'n4Logout', 'n4Login', 'n4GetUserName', 'n4GetUserId', 'n4GetUser', 'n4GetNetAddr', 'n4GetMapped', 'n4GetContext',
+ 'n4GetConnNum', 'n4FileUsers', 'n4FileTimeGet', 'n4FileAttrSet', 'n4FileAttrGet', 'n4DriveStatus', 'n4DrivePath', 'n4DirTimeGet',
+ 'n4DirAttrSet', 'n4DirAttrGet', 'n4Detach', 'n4ChgPassword', 'n4CapturePrt', 'n4CaptureGet', 'n4CaptureEnd', 'n4Attach',
+ 'n3Version', 'n3UserGroups', 'n3ServerList', 'n3ServerInfo', 'n3MsgsEndAll', 'n3MsgsEnd', 'n3MemberSet', 'n3MemberGet',
+ 'n3MemberDel', 'n3Maproot', 'n3Mapdir', 'n3Mapdelete', 'n3Map', 'n3Logout', 'n3GetUserId', 'n3GetUser', 'n3GetNetAddr',
+ 'n3GetMapped', 'n3GetConnNum', 'n3FileTimeGet', 'n3FileAttrSet', 'n3FileAttrGet', 'n3DriveStatus', 'n3DrivePath',
+ 'n3DirTimeGet', 'n3DirAttrSet', 'n3DirAttrGet', 'n3Detach', 'n3ChgPassword', 'n3CapturePrt', 'n3CaptureGet',
+ 'n3CaptureEnd', 'n3Attach', 'mVersion', 'mSyncMail', 'mSendMailEx', 'mSendMail', 'mrecvmail', 'mReadNextMsg', 'mLogOn',
+ 'mLogOff', 'mFindNext', 'mError', 'mCompatible', 'kVerInfo', 'kStatusInfo', 'kSendText', 'kSendFile', 'kManageImap4',
+ 'kInit', 'kGetMail', 'kExtra', 'kDest', 'kDeletePop3', 'iWriteDataBuf', 'iWriteData', 'iVersion', 'IUrlOpen', 'iUrlEncode',
+ 'iUrlDecode', 'iReadDataBuf', 'iReadData', 'ipVersion', 'ipPing', 'iPing', 'ipHost2Addr', 'ipGetLastErr', 'ipGetAddress',
+ 'iParseURL', 'ipAddr2Host', 'iOptionSet', 'iOptionGet', 'ImgWave', 'ImgVersion', 'ImgUnsharpMask', 'ImgThreshold', 'ImgSwirl',
+ 'ImgSpread', 'ImgSolarize', 'ImgShear', 'ImgSharpen', 'ImgShade', 'ImgScale', 'ImgSample', 'ImgRotate', 'ImgResize',
+ 'ImgReduceNoise', 'ImgRaise', 'ImgOilPaint', 'ImgNormalize', 'ImgNegate', 'ImgMotionBlur', 'ImgModulate', 'ImgMinify',
+ 'ImgMedianFilter', 'ImgMagnify', 'ImgLevel', 'ImgIsValid', 'ImgIsPalette', 'ImgIsMono', 'ImgIsGray', 'ImgInfo', 'ImgImplode',
+ 'ImgGetImageType', 'ImgGetColorCount', 'ImgGaussianBlur', 'ImgGamma', 'ImgFrame', 'ImgFlop', 'ImgFlip', 'ImgEqualize',
+ 'ImgEnhance', 'ImgEmboss', 'ImgCrop', 'ImgConvert', 'ImgContrast', 'ImgCompare', 'ImgColorize', 'ImgChop', 'ImgCharcoal',
+ 'ImgBorder', 'ImgBlur', 'ImgAddNoise', 'iLocFindNext', 'iLocFindInit', 'iHttpOpen', 'iHttpInit', 'iHttpHeaders', 'iHttpAccept',
+ 'iHostConnect', 'iHost2Addr', 'iGetResponse', 'iGetLastError', 'iGetIEVer', 'iGetConStatEx', 'iGetConState', 'iFtpRename',
+ 'iFtpPut', 'iFtpOpen', 'iFtpGet', 'iFtpFindNext', 'iFtpFindInit', 'iFtpDirRemove', 'iFtpDirMake', 'iFtpDirGet', 'iFtpDirChange',
+ 'iFtpDialog', 'iFtpDelete', 'iFtpCmd', 'iErrorDialog', 'iDialItemize', 'iDialHangUp', 'iDial', 'iCookieSet', 'iCookieGet',
+ 'iContentURL', 'iContentFile', 'iContentData', 'iClose', 'ibWrtf', 'ibWrt', 'ibWait', 'ibVersion', 'ibUnlock', 'ibTrg',
+ 'ibTmo', 'ibStop', 'ibStatus', 'ibSta', 'ibSre', 'ibSic', 'ibSad', 'ibRsv', 'ibRsp', 'ibRsc', 'ibRpp', 'ibRdf', 'ibRd',
+ 'ibPpc', 'ibPoke', 'ibPct', 'ibPad', 'ibOnl', 'ibMakeAddr', 'ibLock', 'ibLoc', 'ibLn', 'ibLines', 'ibIst', 'ibInit',
+ 'ibGts', 'ibGetSad', 'ibGetPad', 'ibFind', 'ibEvent', 'ibErr', 'ibEot', 'ibEos', 'iBegin', 'ibDma', 'ibDev', 'ibConfig',
+ 'ibCntl', 'ibCnt', 'ibCmda', 'ibCmd', 'ibClr', 'ibCac', 'ibBna', 'ibAsk', 'iAddr2Host', 'huge_Thousands', 'huge_Subtract',
+ 'huge_SetOptions', 'huge_Multiply', 'huge_GetLastError', 'huge_ExtenderInfo', 'huge_Divide', 'huge_Decimal', 'huge_Add',
+ 'httpStripHTML', 'httpRecvTextF', 'httpRecvText', 'httpRecvQuery', 'httpRecvQryF', 'httpRecvFile', 'httpGetServer',
+ 'httpGetQuery', 'httpGetPath', 'httpGetFile', 'httpGetDir', 'httpGetAnchor', 'httpFullPath', 'httpFirewall', 'httpAuth',
+ 'ftpRename', 'ftpQuote', 'ftpPut', 'ftpOpen', 'ftpList', 'ftpGet', 'ftpFirewall', 'ftpDelete', 'ftpClose', 'ftpChDir',
+ 'FindRQS', 'FindLstn', 'EnvSetVar', 'EnvPathDel', 'EnvPathChk', 'EnvPathAdd', 'EnvListVars', 'EnvGetVar', 'EnvGetInfo',
+ 'EnableRemote', 'EnableLocal', 'ehllapiWait', 'ehllapiVersion', 'ehllapiUninit', 'ehllapiStopKeyIntercept', 'ehllapiStopHostNotify',
+ 'ehllapiStopCloseIntercept', 'ehllapiStartKeyIntercept', 'ehllapiStartHostNotify', 'ehllapiStartCloseIntercept',
+ 'ehllapiSetWindowStatus', 'ehllapiSetSessionParams', 'ehllapiSetPSWindowName', 'ehllapiSetCursorLoc', 'ehllapiSendKey',
+ 'ehllapiSendFile', 'ehllapiSearchPS', 'ehllapiSearchField', 'ehllapiRunProfile', 'ehllapiResetSystem', 'ehllapiReserve',
+ 'ehllapiRelease', 'ehllapiReceiveFile', 'ehllapiQuerySystem', 'ehllapiQueryPSStatus', 'ehllapiQueryHostNotify',
+ 'ehllapiQueryFieldAttr', 'ehllapiQueryCursorLoc', 'ehllapiQueryCloseIntercept', 'ehllapiPostInterceptStatus',
+ 'ehllapiPause', 'ehllapiLastErrMsg', 'ehllapiInit', 'ehllapiGetWindowStatus', 'ehllapiGetPSHWND', 'ehllapiGetKey',
+ 'ehllapiFindFieldPos', 'ehllapiFindFieldLen', 'ehllapiDisconnectPS', 'ehllapiCvtRCToPos', 'ehllapiCvtPosToRC',
+ 'ehllapiCopyTextToPS', 'ehllapiCopyTextToField', 'ehllapiCopyTextFromPS', 'ehllapiCopyTextFromField', 'ehllapiCopyOIA',
+ 'ehllapiConnectPS', 'dunItemize', 'dunDisconnect', 'dunConnectEx', 'dunConnect', 'dsTestParam', 'dsSIDtoHexStr', 'dsSetSecProp',
+ 'dsSetProperty', 'dsSetPassword', 'dsSetObj', 'dsSetCredentX', 'dsSetCredent', 'dsRemFromGrp', 'dsRelSecObj', 'dsMoveObj',
+ 'dsIsObject', 'dsIsMemberGrp', 'dsIsContainer', 'dsGetUsersGrps', 'dsGetSecProp', 'dsGetPropName', 'dsGetProperty',
+ 'dsGetPrntPath', 'dsGetPrimGrp', 'dsGetMemGrp', 'dsGetInfo', 'dsGetClass', 'dsGetChldPath', 'dsFindPath', 'dsDeleteObj',
+ 'dsCreatSecObj', 'dsCreateObj', 'dsCopySecObj', 'dsAddToGrp', 'dsAclRemAce', 'dsAclOrderAce', 'dsAclGetAces', 'dsAclAddAce',
+ 'DevClearList', 'DevClear', 'dbTest', 'dbSwapColumns', 'dbSort', 'dbSetRecordField', 'dbSetOptions', 'dbSetErrorReporting',
+ 'dbSetEntireRecord', 'dbSetDelimiter', 'dbSave', 'dbOpen', 'dbNameColumn', 'dbMakeNewItem', 'dbInsertColumn', 'dbGetVersion',
+ 'dbGetSaveStatus', 'dbGetRecordField', 'dbGetRecordCount', 'dbGetNextItem', 'dbGetLastError', 'dbGetEntireRecord',
+ 'dbGetColumnType', 'dbGetColumnNumber', 'dbGetColumnName', 'dbGetColumnCount', 'dbFindRecord', 'dbExist', 'dbEasterEgg',
+ 'dbDeleteRecord', 'dbDeleteColumn', 'dbDebug', 'dbCookDatabases', 'dbClose', 'dbCloneRecord', 'dbBindCol', 'cWndState',
+ 'cWndinfo', 'cWndGetWndSpecName', 'cWndGetWndSpec', 'cWndexist', 'cWndByWndSpecName', 'cWndByWndSpec', 'cWndbyseq',
+ 'cWndbyname', 'cWndbyid', 'cWndbyclass', 'cWinIDConvert', 'cVersionInfo', 'cVendorId', 'cSetWndText', 'cSetUpDownPos',
+ 'cSetTvItem', 'cSetTrackPos', 'cSetTabItem', 'cSetLvItem', 'cSetLbItemEx', 'cSetLbItem', 'cSetIpAddr', 'cSetFocus',
+ 'cSetEditText', 'cSetDtpDate', 'cSetCbItem', 'cSetCalDate', 'cSendMessage', 'cRadioButton', 'cPostMessage', 'cPostButton',
+ 'cMemStat', 'cGetWndCursor', 'cGetUpDownPos', 'cGetUpDownMin', 'cGetUpDownMax', 'cGetTVItem', 'cGetTrackPos', 'cGetTrackMin',
+ 'cGetTrackMax', 'cGetTbText', 'cGetSbText', 'cGetLvText', 'cGetLvSelText', 'cGetLvFocText', 'cGetLvDdtText', 'cGetLvColText',
+ 'cGetLbText', 'cGetLbSelText', 'cGetLbCount', 'cGetIpAddr', 'cGetInfo', 'cGetHrText', 'cGetFocus', 'cGetEditText', 'cGetDtpDate',
+ 'cGetControlImageCRC', 'cGetCBText', 'cGetCbCount', 'cGetCalDate', 'cFindByName', 'cFindByClass', 'cEnablestate', 'cDblClickItem',
+ 'cCpuSupt', 'cCpuSpeed', 'cCpuIdExt', 'cCpuId', 'cCpuFeat', 'cCpuBenchmark', 'cCloneCheck', 'cClickToolbar', 'cClickButton',
+ 'cClearTvItem', 'cClearLvItem', 'cClearLbAll', 'cCheckbox', 'aVersion', 'aStatusbar', 'aShellFolder', 'aMsgTimeout', 'AllSPoll',
+ 'aGetLastError', 'aFileRename', 'aFileMove', 'aFileDelete', 'aFileCopy'
+ ),
+ 5 => array(
+ 'wWordRight', 'wWordLeft', 'wWinTile', 'wWinRestore', 'wWinNext', 'wWinMinimize', 'wWinMaximize', 'wWinCloseAll', 'wWinClose',
+ 'wWinCascade', 'wWinArricons', 'wViewOutput', 'wViewOptions', 'wViewHtml', 'wUpperCase', 'wUpline', 'wUndo', 'wTopOfFile', 'wToggleIns',
+ 'wTab', 'wStatusMsg', 'wStartSel', 'wSpellcheck', 'wSetProject', 'wSetPrefs', 'wSetColblk', 'wSetBookmark', 'wSelWordRight',
+ 'wSelWordLeft', 'wSelUp', 'wSelTop', 'wSelRight', 'wSelPgUp', 'wSelPgDn', 'wSelLeft', 'wSelInfo', 'wSelHome', 'wSelEnd', 'wSelectAll',
+ 'wSelDown', 'wSelBottom', 'wRunRebuild', 'wRunMake', 'wRunExecute', 'wRunDebug', 'wRunConfig', 'wRunCompile', 'wRunCommand', 'wRight',
+ 'wRepeat', 'wRedo', 'wRecord', 'wProperties', 'wPrintDirect', 'wPrinSetup', 'wPrevError', 'wPaste', 'wPageUp', 'wPageDown', 'wNextError',
+ 'wNewLine', 'wLowerCase', 'wLineCount', 'wLeft', 'wInvertCase', 'wInsString', 'wInsLine', 'wHome', 'wHelpKeyword', 'wHelpKeybrd',
+ 'wHelpIndex', 'wHelpHelp', 'wHelpCmds', 'wHelpAbout', 'wGotoLine', 'wGotoCol', 'wGetWrap', 'wGetWord', 'wGetUndo', 'wGetSelstate',
+ 'wGetRedo', 'wGetOutput', 'wGetModified', 'wGetLineNo', 'wGetIns', 'wGetFilename', 'wGetColNo', 'wGetChar', 'wFtpOpen', 'wFindNext',
+ 'wFindInFiles', 'wFind', 'wFileSaveAs', 'wFileSave', 'wFileRevert', 'wFilePrint', 'wFilePgSetup', 'wFileOpen', 'wFileNew', 'wFileMerge',
+ 'wFileList', 'wFileExit', 'wEndSel', 'wEndOfFile', 'wEnd', 'wEdWrap', 'wEdWordRight', 'wEdWordLeft', 'wEdUpLine', 'wEdUndo', 'wEdTopOfFile',
+ 'wEdToggleIns', 'wEdTab', 'wEdStartSel', 'wEdSetColBlk', 'wEdSelectAll', 'wEdRight', 'wEdRedo', 'wEdPaste', 'wEdPageUp', 'wEdPageDown',
+ 'wEdNewLine', 'wEdLeft', 'wEdInsString', 'wEdHome', 'wEdGoToLine', 'wEdGoToCol', 'wEdGetWord', 'wEdEndSel', 'wEdEndOfFile', 'wEdEnd',
+ 'wEdDownLine', 'wEdDelete', 'wEdCutLine', 'wEdCut', 'wEdCopyLine', 'wEdCopy', 'wEdClearSel', 'wEdBackTab', 'wEdBackspace', 'wDownLine',
+ 'wDelete', 'wDelButton', 'wCutMarked', 'wCutLine', 'wCutAppend', 'wCut', 'wCopyMarked', 'wCopyLine', 'wCopyAppend', 'wCopy', 'wCompile',
+ 'wClearSel', 'wChange', 'wCallMacro', 'wBackTab', 'wBackspace', 'wAutoIndent', 'wAddButton', 'edWindowTile', 'edWindowRestore',
+ 'edWindowNext', 'edWindowMinimize', 'edWindowMaximize', 'edWindowCloseall', 'edWindowClose', 'edWindowCascade', 'edWindowArrangeIcons',
+ 'edStatusMsg', 'edSearchViewOutput', 'edSearchRepeat', 'edSearchPrevError', 'edSearchNextError', 'edSearchFind', 'edSearchChange',
+ 'edRunRebuild', 'edRunMake', 'edRunExecute', 'edRunDebug', 'edRunConfigure', 'edRunCompile', 'edRunCommand', 'edRecord', 'edHelpProcedures',
+ 'edHelpKeyword', 'edHelpKeyboard', 'edHelpIndex', 'edHelpHelp', 'edHelpCommands', 'edHelpAbout', 'edGetWordWrapState', 'edGetWindowName',
+ 'edGetUndoState', 'edGetSelectionState', 'edGetRedoState', 'edGetModifiedStatus', 'edGetLineNumber', 'edGetInsertState', 'edGetColumnNumber',
+ 'edGetChar', 'edFileSetPreferences', 'edFileSaveAs', 'edFileSave', 'edFilePrinterSetup', 'edFilePrint', 'edFilePageSetup', 'edFileOpen',
+ 'edFileNew', 'edFileMerge', 'edFileList', 'edFileExit', 'edEditWrap', 'edEditWordRight', 'edEditWordLeft', 'edEditUpLine', 'edEditUndo',
+ 'edEditToggleIns', 'edEditTab', 'edEditStartSelection', 'edEditSetColumnBlock', 'edEditSetBookmark', 'edEditSelectAll', 'edEditRight',
+ 'edEditRedo', 'edEditPaste', 'edEditPageUp', 'edEditPageDown', 'edEditLeft', 'edEditInsertString', 'edEditGoToLine', 'edEditGoToColumn',
+ 'edEditGoToBookmark', 'edEditGetCurrentWord', 'edEditEndSelection', 'edEditEndOfLine', 'edEditEndOfFile', 'edEditDownline', 'edEditDelete',
+ 'edEditCutline', 'edEditCut', 'edEditCopyline', 'edEditCopy', 'edEditClearSelection', 'edEditBeginningOfLine', 'edEditBeginningOfFile',
+ 'edEditBackTab', 'edEditBackspace', 'edDeleteButton', 'edAddButton'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '(', ')', '[', ']', '{', '}', '!', '+', '-', '~', '$', '^', '?', '@', '%', '#', '&', '*', '|', '/', '<', '>'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #800080;',
+ 2 => 'color: #0080FF; font-weight: bold;',
+ 3 => 'color: #0000FF;',
+ 4 => 'color: #FF00FF;',
+ 5 => 'color: #008000;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #008000; font-style: italic;',
+ 2 => 'color: #FF1010; font-weight: bold;',
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ 0 => 'color: #006600;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #0000ff;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTER' => '',
+ 'REGEXPS' => array(
+ 0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/xml.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/xml.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/xml.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,146 +1,146 @@
-<?php
-/*************************************************************************************
- * xml.php
- * -------
- * Author: Nigel McNie (nigel at geshi.org)
- * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
- * Release Version: 1.0.7.21
- * Date Started: 2004/09/01
- *
- * XML language file for GeSHi. Based on the idea/file by Christian Weiske
- *
- * CHANGES
- * -------
- * 2005/12/28 (1.0.2)
- * - Removed escape character for strings
- * 2004/11/27 (1.0.1)
- * - Added support for multiple object splitters
- * 2004/10/27 (1.0.0)
- * - First Release
- *
- * TODO (updated 2004/11/27)
- * -------------------------
- * * Check regexps work and correctly highlight XML stuff and nothing else
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'XML',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array('<!--' => '-->'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- ),
- 'SYMBOLS' => array(
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- 0 => 'color: #00bbdd;',
- 1 => 'color: #ddbb00;',
- 2 => 'color: #339933;',
- 3 => 'color: #009900;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #000066;',
- 1 => 'font-weight: bold; color: black;',
- 2 => 'font-weight: bold; color: black;',
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => array(
- GESHI_SEARCH => '([a-z_\-:]+)(=)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => 'i',
- GESHI_BEFORE => '',
- GESHI_AFTER => '\\2'
- ),
- 1 => array(
- GESHI_SEARCH => '(<[/?|(\?xml)]?[a-z0-9_\-:]*(\??>)?)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => 'i',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- ),
- 2 => array(
- GESHI_SEARCH => '(([/|\?])?>)',
- GESHI_REPLACE => '\\1',
- GESHI_MODIFIERS => 'i',
- GESHI_BEFORE => '',
- GESHI_AFTER => ''
- )
- ),
- 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- '<!DOCTYPE' => '>'
- ),
- 1 => array(
- '&' => ';'
- ),
- 2 => array(
- '<![CDATA[' => ']]>'
- ),
- 3 => array(
- '<' => '>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => false,
- 1 => false,
- 2 => false,
- 3 => true
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>
+<?php
+/*************************************************************************************
+ * xml.php
+ * -------
+ * Author: Nigel McNie (nigel at geshi.org)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2004/09/01
+ *
+ * XML language file for GeSHi. Based on the idea/file by Christian Weiske
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.2)
+ * - Removed escape character for strings
+ * 2004/11/27 (1.0.1)
+ * - Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Check regexps work and correctly highlight XML stuff and nothing else
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'XML',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array('<!--' => '-->'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ ),
+ 'SYMBOLS' => array(
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ 0 => 'color: #00bbdd;',
+ 1 => 'color: #ddbb00;',
+ 2 => 'color: #339933;',
+ 3 => 'color: #009900;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #000066;',
+ 1 => 'font-weight: bold; color: black;',
+ 2 => 'font-weight: bold; color: black;',
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => array(
+ GESHI_SEARCH => '([a-z_\-:]+)(=)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => 'i',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => '\\2'
+ ),
+ 1 => array(
+ GESHI_SEARCH => '(<[/?|(\?xml)]?[a-z0-9_\-:]*(\??>)?)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => 'i',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ ),
+ 2 => array(
+ GESHI_SEARCH => '(([/|\?])?>)',
+ GESHI_REPLACE => '\\1',
+ GESHI_MODIFIERS => 'i',
+ GESHI_BEFORE => '',
+ GESHI_AFTER => ''
+ )
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ '<!DOCTYPE' => '>'
+ ),
+ 1 => array(
+ '&' => ';'
+ ),
+ 2 => array(
+ '<![CDATA[' => ']]>'
+ ),
+ 3 => array(
+ '<' => '>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => true
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/xpp.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/xpp.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/xpp.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,433 +1,433 @@
-<?php
-/*************************************************************************************
- * xpp.php
- * -------
- * Author: Simon Butcher (simon at butcher.name)
- * Copyright: (c) 2007 Simon Butcher (http://simon.butcher.name/)
- * Release Version: 1.0.7.21
- * Date Started: 2007/02/27
- *
- * Axapta/Dynamics Ax X++ language file for GeSHi.
- * For details, see <http://msdn.microsoft.com/en-us/library/aa867122.aspx>
- *
- * CHANGES
- * -------
- * 2007/02/28 (1.0.0)
- * - First Release
- *
- * TODO (updated 2007/02/27)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'X++',
- 'COMMENT_SINGLE' => array(1 => '//'),
- 'COMMENT_MULTI' => array('/*' => '*/'),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '\\',
- 'KEYWORDS' => array(
- 1 => array( // Primitive types
- 'void',
- 'str',
- 'real',
- 'int64',
- 'int',
- 'date',
- 'container',
- 'boolean',
- 'anytype'
- ),
- 2 => array( // Keywords
- 'window',
- 'while',
- 'try',
- 'true',
- 'throw',
- 'switch',
- 'super',
- 'static',
- 'server',
- 'right',
- 'return',
- 'retry',
- 'public',
- 'protected',
- 'private',
- 'print',
- 'pause',
- 'null',
- 'new',
- 'mod',
- 'left',
- 'interface',
- 'implements',
- 'if',
- 'for',
- 'final',
- 'false',
- 'extends',
- 'else',
- 'edit',
- 'do',
- 'div',
- 'display',
- 'default',
- 'continue',
- 'client',
- 'class',
- 'changeCompany',
- 'case',
- 'breakpoint',
- 'break',
- 'at',
- 'abstract'
- ),
- 3 => array( // Functions within the Axapta kernel
- 'year',
- 'wkofyr',
- 'webwebpartstr',
- 'webstaticfilestr',
- 'websitetempstr',
- 'websitedefstr',
- 'webreportstr',
- 'webpagedefstr',
- 'weboutputcontentitemstr',
- 'webmenustr',
- 'webletitemstr',
- 'webformstr',
- 'webdisplaycontentitemstr',
- 'webactionitemstr',
- 'varstr',
- 'utilmoyr',
- 'uint2str',
- 'typeof',
- 'typeid',
- 'trunc',
- 'today',
- 'timenow',
- 'time2str',
- 'term',
- 'tanh',
- 'tan',
- 'tablestr',
- 'tablestaticmethodstr',
- 'tablepname',
- 'tablenum',
- 'tablename2id',
- 'tablemethodstr',
- 'tableid2pname',
- 'tableid2name',
- 'tablefieldgroupstr',
- 'tablecollectionstr',
- 'systemdateset',
- 'systemdateget',
- 'syd',
- 'substr',
- 'strupr',
- 'strscan',
- 'strrtrim',
- 'strrep',
- 'strrem',
- 'strprompt',
- 'strpoke',
- 'strnfind',
- 'strlwr',
- 'strltrim',
- 'strline',
- 'strlen',
- 'strkeep',
- 'strins',
- 'strfmt',
- 'strfind',
- 'strdel',
- 'strcolseq',
- 'strcmp',
- 'stralpha',
- 'str2time',
- 'str2num',
- 'str2int64',
- 'str2int',
- 'str2guid',
- 'str2enum',
- 'str2date',
- 'staticmethodstr',
- 'sln',
- 'sleep',
- 'sinh',
- 'sin',
- 'setprefix',
- 'sessionid',
- 'securitykeystr',
- 'securitykeynum',
- 'runbuf',
- 'runas',
- 'round',
- 'resourcestr',
- 'reportstr',
- 'refprintall',
- 'rate',
- 'querystr',
- 'pv',
- 'pt',
- 'prmisdefault',
- 'primoyr',
- 'prevyr',
- 'prevqtr',
- 'prevmth',
- 'power',
- 'pmt',
- 'num2str',
- 'num2date',
- 'num2char',
- 'nextyr',
- 'nextqtr',
- 'nextmth',
- 'newguid',
- 'mthofyr',
- 'mthname',
- 'mkdate',
- 'minint',
- 'min',
- 'methodstr',
- 'menustr',
- 'menuitemoutputstr',
- 'menuitemdisplaystr',
- 'menuitemactionstr',
- 'maxint',
- 'maxdate',
- 'max',
- 'match',
- 'logn',
- 'log10',
- 'literalstr',
- 'licensecodestr',
- 'licensecodenum',
- 'intvnorm',
- 'intvno',
- 'intvname',
- 'intvmax',
- 'int64str',
- 'int64str',
- 'indexstr',
- 'indexnum',
- 'indexname2id',
- 'indexid2name',
- 'idg',
- 'identifierstr',
- 'helpfilestr',
- 'helpdevstr',
- 'helpapplstr',
- 'guid2str',
- 'getprefix',
- 'getCurrentUTCTime',
- 'fv',
- 'funcname',
- 'frac',
- 'formstr',
- 'fieldstr',
- 'fieldpname',
- 'fieldnum',
- 'fieldname2id',
- 'fieldid2pname',
- 'fieldid2name',
- 'extendedTypeStr',
- 'extendedTypeNum',
- 'exp10',
- 'exp',
- 'evalbuf',
- 'enumstr',
- 'enumnum',
- 'enumcnt',
- 'enum2str',
- 'endmth',
- 'dimof',
- 'dg',
- 'decround',
- 'ddb',
- 'dayofyr',
- 'dayofwk',
- 'dayofmth',
- 'dayname',
- 'date2str',
- 'date2num',
- 'curuserid',
- 'curext',
- 'cterm',
- 'cosh',
- 'cos',
- 'corrflagset',
- 'corrflagget',
- 'convertUTCTimeToLocalTime',
- 'convertUTCDateToLocalDate',
- 'conpoke',
- 'conpeek',
- 'connull',
- 'conlen',
- 'conins',
- 'confind',
- 'configurationkeystr',
- 'configurationkeynum',
- 'condel',
- 'classstr',
- 'classnum',
- 'classidget',
- 'char2num',
- 'beep',
- 'atan',
- 'asin',
- 'ascii2ansi',
- 'any2str',
- 'any2real',
- 'any2int64',
- 'any2int',
- 'any2guid',
- 'any2enum',
- 'any2date',
- 'ansi2ascii',
- 'acos',
- 'abs'
- ),
- 4 => array( // X++ SQL stuff
- 'where',
- 'update_recordset',
- 'ttsCommit',
- 'ttsBegin',
- 'ttsAbort',
- 'sum',
- 'setting',
- 'select',
- 'reverse',
- 'pessimisticLock',
- 'outer',
- 'order by',
- 'optimisticLock',
- 'notExists',
- 'noFetch',
- 'next',
- 'minof',
- 'maxof',
- 'like',
- 'join',
- 'insert_recordset',
- 'index hint',
- 'index',
- 'group by',
- 'from',
- 'forUpdate',
- 'forceSelectOrder',
- 'forcePlaceholders',
- 'forceNestedLoop',
- 'forceLiterals',
- 'flush',
- 'firstOnly',
- 'firstFast',
- 'exists',
- 'desc',
- 'delete_from',
- 'count',
- 'avg',
- 'asc'
- )
- ),
- 'SYMBOLS' => array( // X++ symbols
- '!',
- '&',
- '(',
- ')',
- '*',
- '^',
- '|',
- '~',
- '+',
- ',',
- '-',
- '/',
- ':',
- '<',
- '=',
- '>',
- '?',
- '[',
- ']',
- '{',
- '}'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- 4 => false
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #0000ff;',
- 4 => 'color: #0000ff;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #007f00;',
- 'MULTI' => 'color: #007f00; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000000;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #000000;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #000000;'
- ),
- 'METHODS' => array(
- 1 => 'color: #000000;',
- 2 => 'color: #000000;'
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #00007f;'
- ),
- 'REGEXPS' => array(
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => true,
- 'OBJECT_SPLITTERS' => array(
- 1 => '.',
- 2 => '::'
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- )
-);
-
-?>
+<?php
+/*************************************************************************************
+ * xpp.php
+ * -------
+ * Author: Simon Butcher (simon at butcher.name)
+ * Copyright: (c) 2007 Simon Butcher (http://simon.butcher.name/)
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/02/27
+ *
+ * Axapta/Dynamics Ax X++ language file for GeSHi.
+ * For details, see <http://msdn.microsoft.com/en-us/library/aa867122.aspx>
+ *
+ * CHANGES
+ * -------
+ * 2007/02/28 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2007/02/27)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'X++',
+ 'COMMENT_SINGLE' => array(1 => '//'),
+ 'COMMENT_MULTI' => array('/*' => '*/'),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '\\',
+ 'KEYWORDS' => array(
+ 1 => array( // Primitive types
+ 'void',
+ 'str',
+ 'real',
+ 'int64',
+ 'int',
+ 'date',
+ 'container',
+ 'boolean',
+ 'anytype'
+ ),
+ 2 => array( // Keywords
+ 'window',
+ 'while',
+ 'try',
+ 'true',
+ 'throw',
+ 'switch',
+ 'super',
+ 'static',
+ 'server',
+ 'right',
+ 'return',
+ 'retry',
+ 'public',
+ 'protected',
+ 'private',
+ 'print',
+ 'pause',
+ 'null',
+ 'new',
+ 'mod',
+ 'left',
+ 'interface',
+ 'implements',
+ 'if',
+ 'for',
+ 'final',
+ 'false',
+ 'extends',
+ 'else',
+ 'edit',
+ 'do',
+ 'div',
+ 'display',
+ 'default',
+ 'continue',
+ 'client',
+ 'class',
+ 'changeCompany',
+ 'case',
+ 'breakpoint',
+ 'break',
+ 'at',
+ 'abstract'
+ ),
+ 3 => array( // Functions within the Axapta kernel
+ 'year',
+ 'wkofyr',
+ 'webwebpartstr',
+ 'webstaticfilestr',
+ 'websitetempstr',
+ 'websitedefstr',
+ 'webreportstr',
+ 'webpagedefstr',
+ 'weboutputcontentitemstr',
+ 'webmenustr',
+ 'webletitemstr',
+ 'webformstr',
+ 'webdisplaycontentitemstr',
+ 'webactionitemstr',
+ 'varstr',
+ 'utilmoyr',
+ 'uint2str',
+ 'typeof',
+ 'typeid',
+ 'trunc',
+ 'today',
+ 'timenow',
+ 'time2str',
+ 'term',
+ 'tanh',
+ 'tan',
+ 'tablestr',
+ 'tablestaticmethodstr',
+ 'tablepname',
+ 'tablenum',
+ 'tablename2id',
+ 'tablemethodstr',
+ 'tableid2pname',
+ 'tableid2name',
+ 'tablefieldgroupstr',
+ 'tablecollectionstr',
+ 'systemdateset',
+ 'systemdateget',
+ 'syd',
+ 'substr',
+ 'strupr',
+ 'strscan',
+ 'strrtrim',
+ 'strrep',
+ 'strrem',
+ 'strprompt',
+ 'strpoke',
+ 'strnfind',
+ 'strlwr',
+ 'strltrim',
+ 'strline',
+ 'strlen',
+ 'strkeep',
+ 'strins',
+ 'strfmt',
+ 'strfind',
+ 'strdel',
+ 'strcolseq',
+ 'strcmp',
+ 'stralpha',
+ 'str2time',
+ 'str2num',
+ 'str2int64',
+ 'str2int',
+ 'str2guid',
+ 'str2enum',
+ 'str2date',
+ 'staticmethodstr',
+ 'sln',
+ 'sleep',
+ 'sinh',
+ 'sin',
+ 'setprefix',
+ 'sessionid',
+ 'securitykeystr',
+ 'securitykeynum',
+ 'runbuf',
+ 'runas',
+ 'round',
+ 'resourcestr',
+ 'reportstr',
+ 'refprintall',
+ 'rate',
+ 'querystr',
+ 'pv',
+ 'pt',
+ 'prmisdefault',
+ 'primoyr',
+ 'prevyr',
+ 'prevqtr',
+ 'prevmth',
+ 'power',
+ 'pmt',
+ 'num2str',
+ 'num2date',
+ 'num2char',
+ 'nextyr',
+ 'nextqtr',
+ 'nextmth',
+ 'newguid',
+ 'mthofyr',
+ 'mthname',
+ 'mkdate',
+ 'minint',
+ 'min',
+ 'methodstr',
+ 'menustr',
+ 'menuitemoutputstr',
+ 'menuitemdisplaystr',
+ 'menuitemactionstr',
+ 'maxint',
+ 'maxdate',
+ 'max',
+ 'match',
+ 'logn',
+ 'log10',
+ 'literalstr',
+ 'licensecodestr',
+ 'licensecodenum',
+ 'intvnorm',
+ 'intvno',
+ 'intvname',
+ 'intvmax',
+ 'int64str',
+ 'int64str',
+ 'indexstr',
+ 'indexnum',
+ 'indexname2id',
+ 'indexid2name',
+ 'idg',
+ 'identifierstr',
+ 'helpfilestr',
+ 'helpdevstr',
+ 'helpapplstr',
+ 'guid2str',
+ 'getprefix',
+ 'getCurrentUTCTime',
+ 'fv',
+ 'funcname',
+ 'frac',
+ 'formstr',
+ 'fieldstr',
+ 'fieldpname',
+ 'fieldnum',
+ 'fieldname2id',
+ 'fieldid2pname',
+ 'fieldid2name',
+ 'extendedTypeStr',
+ 'extendedTypeNum',
+ 'exp10',
+ 'exp',
+ 'evalbuf',
+ 'enumstr',
+ 'enumnum',
+ 'enumcnt',
+ 'enum2str',
+ 'endmth',
+ 'dimof',
+ 'dg',
+ 'decround',
+ 'ddb',
+ 'dayofyr',
+ 'dayofwk',
+ 'dayofmth',
+ 'dayname',
+ 'date2str',
+ 'date2num',
+ 'curuserid',
+ 'curext',
+ 'cterm',
+ 'cosh',
+ 'cos',
+ 'corrflagset',
+ 'corrflagget',
+ 'convertUTCTimeToLocalTime',
+ 'convertUTCDateToLocalDate',
+ 'conpoke',
+ 'conpeek',
+ 'connull',
+ 'conlen',
+ 'conins',
+ 'confind',
+ 'configurationkeystr',
+ 'configurationkeynum',
+ 'condel',
+ 'classstr',
+ 'classnum',
+ 'classidget',
+ 'char2num',
+ 'beep',
+ 'atan',
+ 'asin',
+ 'ascii2ansi',
+ 'any2str',
+ 'any2real',
+ 'any2int64',
+ 'any2int',
+ 'any2guid',
+ 'any2enum',
+ 'any2date',
+ 'ansi2ascii',
+ 'acos',
+ 'abs'
+ ),
+ 4 => array( // X++ SQL stuff
+ 'where',
+ 'update_recordset',
+ 'ttsCommit',
+ 'ttsBegin',
+ 'ttsAbort',
+ 'sum',
+ 'setting',
+ 'select',
+ 'reverse',
+ 'pessimisticLock',
+ 'outer',
+ 'order by',
+ 'optimisticLock',
+ 'notExists',
+ 'noFetch',
+ 'next',
+ 'minof',
+ 'maxof',
+ 'like',
+ 'join',
+ 'insert_recordset',
+ 'index hint',
+ 'index',
+ 'group by',
+ 'from',
+ 'forUpdate',
+ 'forceSelectOrder',
+ 'forcePlaceholders',
+ 'forceNestedLoop',
+ 'forceLiterals',
+ 'flush',
+ 'firstOnly',
+ 'firstFast',
+ 'exists',
+ 'desc',
+ 'delete_from',
+ 'count',
+ 'avg',
+ 'asc'
+ )
+ ),
+ 'SYMBOLS' => array( // X++ symbols
+ '!',
+ '&',
+ '(',
+ ')',
+ '*',
+ '^',
+ '|',
+ '~',
+ '+',
+ ',',
+ '-',
+ '/',
+ ':',
+ '<',
+ '=',
+ '>',
+ '?',
+ '[',
+ ']',
+ '{',
+ '}'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #0000ff;',
+ 4 => 'color: #0000ff;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #007f00;',
+ 'MULTI' => 'color: #007f00; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #000000;'
+ ),
+ 'METHODS' => array(
+ 1 => 'color: #000000;',
+ 2 => 'color: #000000;'
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #00007f;'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => true,
+ 'OBJECT_SPLITTERS' => array(
+ 1 => '.',
+ 2 => '::'
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ )
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi/z80.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi/z80.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi/z80.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,136 +1,136 @@
-<?php
-/*************************************************************************************
- * z80.php
- * -------
- * Author: Benny Baumann (BenBE at omorphia.de)
- * Copyright: (c) 2007-2008 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter)
- * Release Version: 1.0.7.21
- * Date Started: 2007/02/06
- *
- * ZiLOG Z80 Assembler language file for GeSHi.
- * Syntax definition as commonly used with table assembler TASM32
- * This file will contain some undocumented opcodes.
- *
- * CHANGES
- * -------
- * 2007/06/03 (1.0.1)
- * - Fixed two typos in the language file
- * 2007/02/06 (1.0.0)
- * - First Release
- *
- * TODO (updated 2007/02/06)
- * -------------------------
- *
- *************************************************************************************
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- ************************************************************************************/
-
-$language_data = array (
- 'LANG_NAME' => 'ZiLOG Z80 Assembler',
- 'COMMENT_SINGLE' => array(1 => ';'),
- 'COMMENT_MULTI' => array(),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- /*CPU*/
- 1 => array(
- 'adc','add','and','bit','call','ccf','cp','cpd','cpdr','cpir','cpi',
- 'cpl','daa','dec','di','djnz','ei','ex','exx','halt','im','in',
- 'in0','inc','ind','indr','inir','ini','jp','jr','ld','ldd','lddr',
- 'ldir','ldi','mlt','neg','nop','or','otdm','otdmr','otdr','otim',
- 'otimr','otir','out','out0','outd','outi','pop','push','res','ret',
- 'reti','retn','rl','rla','rlc','rlca','rld','rr','rra','rrc','rrca',
- 'rrd','rst','sbc','scf','set','sla','sl1','sll','slp','sra','srl',
- 'sub','tst','tstio','xor'
- ),
- /*registers*/
- 2 => array(
- 'a','b','c','d','e','h','l',
- 'af','bc','de','hl','ix','iy','sp',
- 'af\'','ixh','ixl','iyh','iyl'
- ),
- /*Directive*/
- 3 => array(
- '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',
- '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'
- ),
- ),
- 'SYMBOLS' => array(
- '[', ']', '(', ')', '?', '+', '-', '*', '/', '%', '$'
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => true,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #0000ff; font-weight:bold;',
- 2 => 'color: #0000ff;',
- 3 => 'color: #46aa03; font-weight:bold;'
- ),
- 'COMMENTS' => array(
- 1 => 'color: #adadad; font-style: italic;',
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #0000ff;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #7f007f;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #dd22dd;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #008000;'
- ),
- 'REGEXPS' => array(
- 0 => 'color: #22bbff;',
- 1 => 'color: #22bbff;',
- 2 => 'color: #993333;'
- ),
- 'SCRIPT' => array(
- )
- ),
- 'URLS' => array(
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- 0 => '0[0-9a-fA-F]{1,32}[hH]',
- 1 => '\%[01]{1,64}[bB]',
- 2 => '^[_a-zA-Z][_a-zA-Z0-9]{0,50}\:'
- ),
- 'STRICT_MODE_APPLIES' => GESHI_NEVER,
- 'SCRIPT_DELIMITERS' => array(
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- ),
- 'TAB_WIDTH' => 8
-);
-
-?>
+<?php
+/*************************************************************************************
+ * z80.php
+ * -------
+ * Author: Benny Baumann (BenBE at omorphia.de)
+ * Copyright: (c) 2007-2008 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.21
+ * Date Started: 2007/02/06
+ *
+ * ZiLOG Z80 Assembler language file for GeSHi.
+ * Syntax definition as commonly used with table assembler TASM32
+ * This file will contain some undocumented opcodes.
+ *
+ * CHANGES
+ * -------
+ * 2007/06/03 (1.0.1)
+ * - Fixed two typos in the language file
+ * 2007/02/06 (1.0.0)
+ * - First Release
+ *
+ * TODO (updated 2007/02/06)
+ * -------------------------
+ *
+ *************************************************************************************
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ************************************************************************************/
+
+$language_data = array (
+ 'LANG_NAME' => 'ZiLOG Z80 Assembler',
+ 'COMMENT_SINGLE' => array(1 => ';'),
+ 'COMMENT_MULTI' => array(),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ /*CPU*/
+ 1 => array(
+ 'adc','add','and','bit','call','ccf','cp','cpd','cpdr','cpir','cpi',
+ 'cpl','daa','dec','di','djnz','ei','ex','exx','halt','im','in',
+ 'in0','inc','ind','indr','inir','ini','jp','jr','ld','ldd','lddr',
+ 'ldir','ldi','mlt','neg','nop','or','otdm','otdmr','otdr','otim',
+ 'otimr','otir','out','out0','outd','outi','pop','push','res','ret',
+ 'reti','retn','rl','rla','rlc','rlca','rld','rr','rra','rrc','rrca',
+ 'rrd','rst','sbc','scf','set','sla','sl1','sll','slp','sra','srl',
+ 'sub','tst','tstio','xor'
+ ),
+ /*registers*/
+ 2 => array(
+ 'a','b','c','d','e','h','l',
+ 'af','bc','de','hl','ix','iy','sp',
+ 'af\'','ixh','ixl','iyh','iyl'
+ ),
+ /*Directive*/
+ 3 => array(
+ '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',
+ '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'
+ ),
+ ),
+ 'SYMBOLS' => array(
+ '[', ']', '(', ')', '?', '+', '-', '*', '/', '%', '$'
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => true,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #0000ff; font-weight:bold;',
+ 2 => 'color: #0000ff;',
+ 3 => 'color: #46aa03; font-weight:bold;'
+ ),
+ 'COMMENTS' => array(
+ 1 => 'color: #adadad; font-style: italic;',
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #0000ff;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #7f007f;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #dd22dd;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #008000;'
+ ),
+ 'REGEXPS' => array(
+ 0 => 'color: #22bbff;',
+ 1 => 'color: #22bbff;',
+ 2 => 'color: #993333;'
+ ),
+ 'SCRIPT' => array(
+ )
+ ),
+ 'URLS' => array(
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ 0 => '0[0-9a-fA-F]{1,32}[hH]',
+ 1 => '\%[01]{1,64}[bB]',
+ 2 => '^[_a-zA-Z][_a-zA-Z0-9]{0,50}\:'
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_NEVER,
+ 'SCRIPT_DELIMITERS' => array(
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ ),
+ 'TAB_WIDTH' => 8
+);
+
+?>
Modified: site/trunk/www-root/wiki/inc/geshi.php
===================================================================
--- site/trunk/www-root/wiki/inc/geshi.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/geshi.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3098 +1,3098 @@
-<?php
-/**
- * GeSHi - Generic Syntax Highlighter
- *
- * The GeSHi class for Generic Syntax Highlighting. Please refer to the
- * documentation at http://qbnz.com/highlighter/documentation.php for more
- * information about how to use this class.
- *
- * For changes, release notes, TODOs etc, see the relevant files in the docs/
- * directory.
- *
- * This file is part of GeSHi.
- *
- * GeSHi is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GeSHi is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeSHi; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @package geshi
- * @subpackage core
- * @author Nigel McNie <nigel at geshi.org>, Benny Baumann <BenBE at omorphia.de>
- * @copyright (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2008 Benny Baumann
- * @license http://gnu.org/copyleft/gpl.html GNU GPL
- *
- */
-
-//
-// GeSHi Constants
-// You should use these constant names in your programs instead of
-// their values - you never know when a value may change in a future
-// version
-//
-
-/** The version of this GeSHi file */
-define('GESHI_VERSION', '1.0.7.21');
-
-// Define the root directory for the GeSHi code tree
-if (!defined('GESHI_ROOT')) {
- /** The root directory for GeSHi */
- define('GESHI_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
-}
-/** The language file directory for GeSHi
- @access private */
-define('GESHI_LANG_ROOT', GESHI_ROOT . 'geshi' . DIRECTORY_SEPARATOR);
-
-
-// Line numbers - use with enable_line_numbers()
-/** Use no line numbers when building the result */
-define('GESHI_NO_LINE_NUMBERS', 0);
-/** Use normal line numbers when building the result */
-define('GESHI_NORMAL_LINE_NUMBERS', 1);
-/** Use fancy line numbers when building the result */
-define('GESHI_FANCY_LINE_NUMBERS', 2);
-
-// Container HTML type
-/** Use nothing to surround the source */
-define('GESHI_HEADER_NONE', 0);
-/** Use a "div" to surround the source */
-define('GESHI_HEADER_DIV', 1);
-/** Use a "pre" to surround the source */
-define('GESHI_HEADER_PRE', 2);
-
-// Capatalisation constants
-/** Lowercase keywords found */
-define('GESHI_CAPS_NO_CHANGE', 0);
-/** Uppercase keywords found */
-define('GESHI_CAPS_UPPER', 1);
-/** Leave keywords found as the case that they are */
-define('GESHI_CAPS_LOWER', 2);
-
-// Link style constants
-/** Links in the source in the :link state */
-define('GESHI_LINK', 0);
-/** Links in the source in the :hover state */
-define('GESHI_HOVER', 1);
-/** Links in the source in the :active state */
-define('GESHI_ACTIVE', 2);
-/** Links in the source in the :visited state */
-define('GESHI_VISITED', 3);
-
-// Important string starter/finisher
-// Note that if you change these, they should be as-is: i.e., don't
-// write them as if they had been run through htmlentities()
-/** The starter for important parts of the source */
-define('GESHI_START_IMPORTANT', '<BEGIN GeSHi>');
-/** The ender for important parts of the source */
-define('GESHI_END_IMPORTANT', '<END GeSHi>');
-
-/**#@+
- * @access private
- */
-// When strict mode applies for a language
-/** Strict mode never applies (this is the most common) */
-define('GESHI_NEVER', 0);
-/** Strict mode *might* apply, and can be enabled or
- disabled by {@link GeSHi::enable_strict_mode()} */
-define('GESHI_MAYBE', 1);
-/** Strict mode always applies */
-define('GESHI_ALWAYS', 2);
-
-// Advanced regexp handling constants, used in language files
-/** The key of the regex array defining what to search for */
-define('GESHI_SEARCH', 0);
-/** The key of the regex array defining what bracket group in a
- matched search to use as a replacement */
-define('GESHI_REPLACE', 1);
-/** The key of the regex array defining any modifiers to the regular expression */
-define('GESHI_MODIFIERS', 2);
-/** The key of the regex array defining what bracket group in a
- matched search to put before the replacement */
-define('GESHI_BEFORE', 3);
-/** The key of the regex array defining what bracket group in a
- matched search to put after the replacement */
-define('GESHI_AFTER', 4);
-/** The key of the regex array defining a custom keyword to use
- for this regexp's html tag class */
-define('GESHI_CLASS', 5);
-
-/** Used in language files to mark comments */
-define('GESHI_COMMENTS', 0);
-
-// Error detection - use these to analyse faults
-/** No sourcecode to highlight was specified
- * @deprecated
- */
-define('GESHI_ERROR_NO_INPUT', 1);
-/** The language specified does not exist */
-define('GESHI_ERROR_NO_SUCH_LANG', 2);
-/** GeSHi could not open a file for reading (generally a language file) */
-define('GESHI_ERROR_FILE_NOT_READABLE', 3);
-/** The header type passed to {@link GeSHi::set_header_type()} was invalid */
-define('GESHI_ERROR_INVALID_HEADER_TYPE', 4);
-/** The line number type passed to {@link GeSHi::enable_line_numbers()} was invalid */
-define('GESHI_ERROR_INVALID_LINE_NUMBER_TYPE', 5);
-/**#@-*/
-
-
-/**
- * The GeSHi Class.
- *
- * Please refer to the documentation for GeSHi 1.0.X that is available
- * at http://qbnz.com/highlighter/documentation.php for more information
- * about how to use this class.
- *
- * @package geshi
- * @author Nigel McNie <nigel at geshi.org>, Benny Baumann <BenBE at omorphia.de>
- * @copyright (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2008 Benny Baumann
- */
-class GeSHi {
- /**#@+
- * @access private
- */
- /**
- * The source code to highlight
- * @var string
- */
- var $source = '';
-
- /**
- * The language to use when highlighting
- * @var string
- */
- var $language = '';
-
- /**
- * The data for the language used
- * @var array
- */
- var $language_data = array();
-
- /**
- * The path to the language files
- * @var string
- */
- var $language_path = GESHI_LANG_ROOT;
-
- /**
- * The error message associated with an error
- * @var string
- * @todo check err reporting works
- */
- var $error = false;
-
- /**
- * Possible error messages
- * @var array
- */
- var $error_messages = array(
- GESHI_ERROR_NO_SUCH_LANG => 'GeSHi could not find the language {LANGUAGE} (using path {PATH})',
- GESHI_ERROR_FILE_NOT_READABLE => 'The file specified for load_from_file was not readable',
- GESHI_ERROR_INVALID_HEADER_TYPE => 'The header type specified is invalid',
- GESHI_ERROR_INVALID_LINE_NUMBER_TYPE => 'The line number type specified is invalid'
- );
-
- /**
- * Whether highlighting is strict or not
- * @var boolean
- */
- var $strict_mode = false;
-
- /**
- * Whether to use CSS classes in output
- * @var boolean
- */
- var $use_classes = false;
-
- /**
- * The type of header to use. Can be one of the following
- * values:
- *
- * - GESHI_HEADER_PRE: Source is outputted in a "pre" HTML element.
- * - GESHI_HEADER_DIV: Source is outputted in a "div" HTML element.
- * - GESHI_HEADER_NONE: No header is outputted.
- *
- * @var int
- */
- var $header_type = GESHI_HEADER_PRE;
-
- /**
- * Array of permissions for which lexics should be highlighted
- * @var array
- */
- var $lexic_permissions = array(
- 'KEYWORDS' => array(),
- 'COMMENTS' => array('MULTI' => true),
- 'REGEXPS' => array(),
- 'ESCAPE_CHAR' => true,
- 'BRACKETS' => true,
- 'SYMBOLS' => false,
- 'STRINGS' => true,
- 'NUMBERS' => true,
- 'METHODS' => true,
- 'SCRIPT' => true
- );
-
- /**
- * The time it took to parse the code
- * @var double
- */
- var $time = 0;
-
- /**
- * The content of the header block
- * @var string
- */
- var $header_content = '';
-
- /**
- * The content of the footer block
- * @var string
- */
- var $footer_content = '';
-
- /**
- * The style of the header block
- * @var string
- */
- var $header_content_style = '';
-
- /**
- * The style of the footer block
- * @var string
- */
- var $footer_content_style = '';
-
- /**
- * Tells if a block around the highlighted source should be forced
- * if not using line numbering
- * @var boolean
- */
- var $force_code_block = false;
-
- /**
- * The styles for hyperlinks in the code
- * @var array
- */
- var $link_styles = array();
-
- /**
- * Whether important blocks should be recognised or not
- * @var boolean
- * @deprecated
- * @todo REMOVE THIS FUNCTIONALITY!
- */
- var $enable_important_blocks = false;
-
- /**
- * Styles for important parts of the code
- * @var string
- * @deprecated
- * @todo As above - rethink the whole idea of important blocks as it is buggy and
- * will be hard to implement in 1.2
- */
- var $important_styles = 'font-weight: bold; color: red;'; // Styles for important parts of the code
-
- /**
- * Whether CSS IDs should be added to the code
- * @var boolean
- */
- var $add_ids = false;
-
- /**
- * Lines that should be highlighted extra
- * @var array
- */
- var $highlight_extra_lines = array();
-
- /**
- * Styles of lines that should be highlighted extra
- * @var array
- */
- var $highlight_extra_lines_styles = array();
-
- /**
- * Styles of extra-highlighted lines
- * @var string
- */
- var $highlight_extra_lines_style = 'color: #cc0; background-color: #ffc;';
-
- /**
- * The line ending
- * If null, nl2br() will be used on the result string.
- * Otherwise, all instances of \n will be replaced with $line_ending
- * @var string
- */
- var $line_ending = null;
-
- /**
- * Number at which line numbers should start at
- * @var int
- */
- var $line_numbers_start = 1;
-
- /**
- * The overall style for this code block
- * @var string
- */
- var $overall_style = '';
-
- /**
- * The style for the actual code
- * @var string
- */
- var $code_style = 'font-family: \'Courier New\', Courier, monospace; font-weight: normal;';
-
- /**
- * The overall class for this code block
- * @var string
- */
- var $overall_class = '';
-
- /**
- * The overall ID for this code block
- * @var string
- */
- var $overall_id = '';
-
- /**
- * Line number styles
- * @var string
- */
- var $line_style1 = 'font-family: \'Courier New\', Courier, monospace; color: black; font-weight: normal; font-style: normal;';
-
- /**
- * Line number styles for fancy lines
- * @var string
- */
- var $line_style2 = 'font-weight: bold;';
-
- /**
- * Flag for how line nubmers are displayed
- * @var boolean
- */
- var $line_numbers = GESHI_NO_LINE_NUMBERS;
-
- /**
- * The "nth" value for fancy line highlighting
- * @var int
- */
- var $line_nth_row = 0;
-
- /**
- * The size of tab stops
- * @var int
- */
- var $tab_width = 8;
-
- /**
- * Should we use language-defined tab stop widths?
- * @var int
- */
- var $use_language_tab_width = false;
-
- /**
- * Default target for keyword links
- * @var string
- */
- var $link_target = '';
-
- /**
- * The encoding to use for entity encoding
- * NOTE: no longer used
- * @var string
- */
- var $encoding = 'ISO-8859-1';
-
- /**
- * Should keywords be linked?
- * @var boolean
- */
- var $keyword_links = true;
-
- /**#@-*/
-
- /**
- * Creates a new GeSHi object, with source and language
- *
- * @param string The source code to highlight
- * @param string The language to highlight the source with
- * @param string The path to the language file directory. <b>This
- * is deprecated!</b> I've backported the auto path
- * detection from the 1.1.X dev branch, so now it
- * should be automatically set correctly. If you have
- * renamed the language directory however, you will
- * still need to set the path using this parameter or
- * {@link GeSHi::set_language_path()}
- * @since 1.0.0
- */
- function GeSHi($source, $language, $path = '') {
- $this->set_source($source);
- $this->set_language_path($path);
- $this->set_language($language);
- }
-
- /**
- * Returns an error message associated with the last GeSHi operation,
- * or false if no error has occured
- *
- * @return string|false An error message if there has been an error, else false
- * @since 1.0.0
- */
- function error() {
- if ($this->error) {
- $msg = $this->error_messages[$this->error];
- $debug_tpl_vars = array(
- '{LANGUAGE}' => $this->language,
- '{PATH}' => $this->language_path
- );
- foreach ($debug_tpl_vars as $tpl => $var) {
- $msg = str_replace($tpl, $var, $msg);
- }
- return "<br /><strong>GeSHi Error:</strong> $msg (code $this->error)<br />";
- }
- return false;
- }
-
- /**
- * Gets a human-readable language name (thanks to Simon Patterson
- * for the idea :))
- *
- * @return string The name for the current language
- * @since 1.0.2
- */
- function get_language_name() {
- if (GESHI_ERROR_NO_SUCH_LANG == $this->error) {
- return $this->language_data['LANG_NAME'] . ' (Unknown Language)';
- }
- return $this->language_data['LANG_NAME'];
- }
-
- /**
- * Sets the source code for this object
- *
- * @param string The source code to highlight
- * @since 1.0.0
- */
- function set_source($source) {
- $this->source = $source;
- $this->highlight_extra_lines = array();
- }
-
- /**
- * Sets the language for this object
- *
- * @param string The name of the language to use
- * @since 1.0.0
- */
- function set_language($language) {
- $this->error = false;
- $this->strict_mode = GESHI_NEVER;
-
- $language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language);
- $this->language = strtolower($language);
-
- $file_name = $this->language_path . $this->language . '.php';
- if (!is_readable($file_name)) {
- $this->error = GESHI_ERROR_NO_SUCH_LANG;
- return;
- }
- // Load the language for parsing
- $this->load_language($file_name);
- }
-
- /**
- * Sets the path to the directory containing the language files. Note
- * that this path is relative to the directory of the script that included
- * geshi.php, NOT geshi.php itself.
- *
- * @param string The path to the language directory
- * @since 1.0.0
- * @deprecated The path to the language files should now be automatically
- * detected, so this method should no longer be needed. The
- * 1.1.X branch handles manual setting of the path differently
- * so this method will disappear in 1.2.0.
- */
- function set_language_path($path) {
- if ($path) {
- $this->language_path = ('/' == substr($path, strlen($path) - 1, 1)) ? $path : $path . '/';
- $this->set_language($this->language); // otherwise set_language_path has no effect
- }
- }
-
- /**
- * Sets the type of header to be used.
- *
- * If GESHI_HEADER_DIV is used, the code is surrounded in a "div".This
- * means more source code but more control over tab width and line-wrapping.
- * GESHI_HEADER_PRE means that a "pre" is used - less source, but less
- * control. Default is GESHI_HEADER_PRE.
- *
- * From 1.0.7.2, you can use GESHI_HEADER_NONE to specify that no header code
- * should be outputted.
- *
- * @param int The type of header to be used
- * @since 1.0.0
- */
- function set_header_type($type) {
- if (GESHI_HEADER_DIV != $type && GESHI_HEADER_PRE != $type && GESHI_HEADER_NONE != $type) {
- $this->error = GESHI_ERROR_INVALID_HEADER_TYPE;
- return;
- }
- $this->header_type = $type;
- // Set a default overall style if the header is a <div>
- if (GESHI_HEADER_DIV == $type && !$this->overall_style) {
- $this->overall_style = 'font-family: monospace;';
- }
- }
-
- /**
- * Sets the styles for the code that will be outputted
- * when this object is parsed. The style should be a
- * string of valid stylesheet declarations
- *
- * @param string The overall style for the outputted code block
- * @param boolean Whether to merge the styles with the current styles or not
- * @since 1.0.0
- */
- function set_overall_style($style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->overall_style = $style;
- }
- else {
- $this->overall_style .= $style;
- }
- }
-
- /**
- * Sets the overall classname for this block of code. This
- * class can then be used in a stylesheet to style this object's
- * output
- *
- * @param string The class name to use for this block of code
- * @since 1.0.0
- */
- function set_overall_class($class) {
- $this->overall_class = $class;
- }
-
- /**
- * Sets the overall id for this block of code. This id can then
- * be used in a stylesheet to style this object's output
- *
- * @param string The ID to use for this block of code
- * @since 1.0.0
- */
- function set_overall_id($id) {
- $this->overall_id = $id;
- }
-
- /**
- * Sets whether CSS classes should be used to highlight the source. Default
- * is off, calling this method with no arguments will turn it on
- *
- * @param boolean Whether to turn classes on or not
- * @since 1.0.0
- */
- function enable_classes($flag = true) {
- $this->use_classes = ($flag) ? true : false;
- }
-
- /**
- * Sets the style for the actual code. This should be a string
- * containing valid stylesheet declarations. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * Note: Use this method to override any style changes you made to
- * the line numbers if you are using line numbers, else the line of
- * code will have the same style as the line number! Consult the
- * GeSHi documentation for more information about this.
- *
- * @param string The style to use for actual code
- * @param boolean Whether to merge the current styles with the new styles
- * @since 1.0.2
- */
- function set_code_style($style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->code_style = $style;
- }
- else {
- $this->code_style .= $style;
- }
- }
-
- /**
- * Sets the styles for the line numbers.
- *
- * @param string The style for the line numbers that are "normal"
- * @param string|boolean If a string, this is the style of the line
- * numbers that are "fancy", otherwise if boolean then this
- * defines whether the normal styles should be merged with the
- * new normal styles or not
- * @param boolean If set, is the flag for whether to merge the "fancy"
- * styles with the current styles or not
- * @since 1.0.2
- */
- function set_line_style($style1, $style2 = '', $preserve_defaults = false) {
- if (is_bool($style2)) {
- $preserve_defaults = $style2;
- $style2 = '';
- }
- if (!$preserve_defaults) {
- $this->line_style1 = $style1;
- $this->line_style2 = $style2;
- }
- else {
- $this->line_style1 .= $style1;
- $this->line_style2 .= $style2;
- }
- }
-
- /**
- * Sets whether line numbers should be displayed.
- *
- * Valid values for the first parameter are:
- *
- * - GESHI_NO_LINE_NUMBERS: Line numbers will not be displayed
- * - GESHI_NORMAL_LINE_NUMBERS: Line numbers will be displayed
- * - GESHI_FANCY_LINE_NUMBERS: Fancy line numbers will be displayed
- *
- * For fancy line numbers, the second parameter is used to signal which lines
- * are to be fancy. For example, if the value of this parameter is 5 then every
- * 5th line will be fancy.
- *
- * @param int How line numbers should be displayed
- * @param int Defines which lines are fancy
- * @since 1.0.0
- */
- function enable_line_numbers($flag, $nth_row = 5) {
- if (GESHI_NO_LINE_NUMBERS != $flag && GESHI_NORMAL_LINE_NUMBERS != $flag
- && GESHI_FANCY_LINE_NUMBERS != $flag) {
- $this->error = GESHI_ERROR_INVALID_LINE_NUMBER_TYPE;
- }
- $this->line_numbers = $flag;
- $this->line_nth_row = $nth_row;
- }
-
- /**
- * Sets the style for a keyword group. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param int The key of the keyword group to change the styles of
- * @param string The style to make the keywords
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- */
- function set_keyword_group_style($key, $style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['KEYWORDS'][$key] = $style;
- }
- else {
- $this->language_data['STYLES']['KEYWORDS'][$key] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for a keyword group
- *
- * @param int The key of the keyword group to turn on or off
- * @param boolean Whether to turn highlighting for that group on or off
- * @since 1.0.0
- */
- function set_keyword_group_highlighting($key, $flag = true) {
- $this->lexic_permissions['KEYWORDS'][$key] = ($flag) ? true : false;
- }
-
- /**
- * Sets the styles for comment groups. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param int The key of the comment group to change the styles of
- * @param string The style to make the comments
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- */
- function set_comments_style($key, $style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['COMMENTS'][$key] = $style;
- }
- else {
- $this->language_data['STYLES']['COMMENTS'][$key] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for comment groups
- *
- * @param int The key of the comment group to turn on or off
- * @param boolean Whether to turn highlighting for that group on or off
- * @since 1.0.0
- */
- function set_comments_highlighting($key, $flag = true) {
- $this->lexic_permissions['COMMENTS'][$key] = ($flag) ? true : false;
- }
-
- /**
- * Sets the styles for escaped characters. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param string The style to make the escape characters
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- */
- function set_escape_characters_style($style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['ESCAPE_CHAR'][0] = $style;
- }
- else {
- $this->language_data['STYLES']['ESCAPE_CHAR'][0] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for escaped characters
- *
- * @param boolean Whether to turn highlighting for escape characters on or off
- * @since 1.0.0
- */
- function set_escape_characters_highlighting($flag = true) {
- $this->lexic_permissions['ESCAPE_CHAR'] = ($flag) ? true : false;
- }
-
- /**
- * Sets the styles for brackets. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * This method is DEPRECATED: use set_symbols_style instead.
- * This method will be removed in 1.2.X
- *
- * @param string The style to make the brackets
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- * @deprecated In favour of set_symbols_style
- */
- function set_brackets_style($style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['BRACKETS'][0] = $style;
- }
- else {
- $this->language_data['STYLES']['BRACKETS'][0] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for brackets
- *
- * This method is DEPRECATED: use set_symbols_highlighting instead.
- * This method will be remove in 1.2.X
- *
- * @param boolean Whether to turn highlighting for brackets on or off
- * @since 1.0.0
- * @deprecated In favour of set_symbols_highlighting
- */
- function set_brackets_highlighting($flag) {
- $this->lexic_permissions['BRACKETS'] = ($flag) ? true : false;
- }
-
- /**
- * Sets the styles for symbols. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param string The style to make the symbols
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @param int Tells the group of symbols for which style should be set.
- * @since 1.0.1
- */
- function set_symbols_style($style, $preserve_defaults = false, $group = 0) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['SYMBOLS'][$group] = $style;
- }
- else {
- $this->language_data['STYLES']['SYMBOLS'][$group] .= $style;
- }
- // For backward compatibility
- if(0 == $group) {
- $this->set_brackets_style ($style, $preserve_defaults);
- }
- }
-
- /**
- * Turns highlighting on/off for symbols
- *
- * @param boolean Whether to turn highlighting for symbols on or off
- * @since 1.0.0
- */
- function set_symbols_highlighting($flag) {
- $this->lexic_permissions['SYMBOLS'] = ($flag) ? true : false;
- // For backward compatibility
- $this->set_brackets_highlighting ($flag);
- }
-
- /**
- * Sets the styles for strings. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param string The style to make the escape characters
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- */
- function set_strings_style($style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['STRINGS'][0] = $style;
- }
- else {
- $this->language_data['STYLES']['STRINGS'][0] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for strings
- *
- * @param boolean Whether to turn highlighting for strings on or off
- * @since 1.0.0
- */
- function set_strings_highlighting($flag) {
- $this->lexic_permissions['STRINGS'] = ($flag) ? true : false;
- }
-
- /**
- * Sets the styles for numbers. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param string The style to make the numbers
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- */
- function set_numbers_style($style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['NUMBERS'][0] = $style;
- }
- else {
- $this->language_data['STYLES']['NUMBERS'][0] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for numbers
- *
- * @param boolean Whether to turn highlighting for numbers on or off
- * @since 1.0.0
- */
- function set_numbers_highlighting($flag) {
- $this->lexic_permissions['NUMBERS'] = ($flag) ? true : false;
- }
-
- /**
- * Sets the styles for methods. $key is a number that references the
- * appropriate "object splitter" - see the language file for the language
- * you are highlighting to get this number. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param int The key of the object splitter to change the styles of
- * @param string The style to make the methods
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- */
- function set_methods_style($key, $style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['METHODS'][$key] = $style;
- }
- else {
- $this->language_data['STYLES']['METHODS'][$key] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for methods
- *
- * @param boolean Whether to turn highlighting for methods on or off
- * @since 1.0.0
- */
- function set_methods_highlighting($flag) {
- $this->lexic_permissions['METHODS'] = ($flag) ? true : false;
- }
-
- /**
- * Sets the styles for regexps. If $preserve_defaults is
- * true, then styles are merged with the default styles, with the
- * user defined styles having priority
- *
- * @param string The style to make the regular expression matches
- * @param boolean Whether to merge the new styles with the old or just
- * to overwrite them
- * @since 1.0.0
- */
- function set_regexps_style($key, $style, $preserve_defaults = false) {
- if (!$preserve_defaults) {
- $this->language_data['STYLES']['REGEXPS'][$key] = $style;
- }
- else {
- $this->language_data['STYLES']['REGEXPS'][$key] .= $style;
- }
- }
-
- /**
- * Turns highlighting on/off for regexps
- *
- * @param int The key of the regular expression group to turn on or off
- * @param boolean Whether to turn highlighting for the regular expression group on or off
- * @since 1.0.0
- */
- function set_regexps_highlighting($key, $flag) {
- $this->lexic_permissions['REGEXPS'][$key] = ($flag) ? true : false;
- }
-
- /**
- * Sets whether a set of keywords are checked for in a case sensitive manner
- *
- * @param int The key of the keyword group to change the case sensitivity of
- * @param boolean Whether to check in a case sensitive manner or not
- * @since 1.0.0
- */
- function set_case_sensitivity($key, $case) {
- $this->language_data['CASE_SENSITIVE'][$key] = ($case) ? true : false;
- }
-
- /**
- * Sets the case that keywords should use when found. Use the constants:
- *
- * - GESHI_CAPS_NO_CHANGE: leave keywords as-is
- * - GESHI_CAPS_UPPER: convert all keywords to uppercase where found
- * - GESHI_CAPS_LOWER: convert all keywords to lowercase where found
- *
- * @param int A constant specifying what to do with matched keywords
- * @since 1.0.1
- */
- function set_case_keywords($case) {
- if(in_array($case, array(
- GESHI_CAPS_NO_CHANGE, GESHI_CAPS_UPPER, GESHI_CAPS_LOWER))) {
- $this->language_data['CASE_KEYWORDS'] = $case;
- }
- }
-
- /**
- * Sets how many spaces a tab is substituted for
- *
- * Widths below zero are ignored
- *
- * @param int The tab width
- * @since 1.0.0
- */
- function set_tab_width($width) {
- $this->tab_width = intval($width);
- //Check if it fit's the constraints:
- if($this->tab_width < 1) {
- //Return it to the default
- $this->tab_width = 8;
- }
- }
-
- /**
- * Sets whether or not to use tab-stop width specifed by language
- *
- * @param boolean Whether to use language-specific tab-stop widths
- * @since 1.0.7.20
- */
- function set_use_language_tab_width($use) {
- $this->use_language_tab_width = (bool) $use;
- }
-
- /**
- * Returns the tab width to use, based on the current language and user
- * preference
- *
- * @return int Tab width
- * @since 1.0.7.20
- */
- function get_real_tab_width() {
- if (!$this->use_language_tab_width || !isset($this->language_data['TAB_WIDTH'])) {
- return $this->tab_width;
- } else {
- return $this->language_data['TAB_WIDTH'];
- }
- }
-
- /**
- * Enables/disables strict highlighting. Default is off, calling this
- * method without parameters will turn it on. See documentation
- * for more details on strict mode and where to use it.
- *
- * @param boolean Whether to enable strict mode or not
- * @since 1.0.0
- */
- function enable_strict_mode($mode = true) {
- if (GESHI_MAYBE == $this->language_data['STRICT_MODE_APPLIES']) {
- $this->strict_mode = ($mode) ? true : false;
- }
- }
-
- /**
- * Disables all highlighting
- *
- * @since 1.0.0
- * @todo Rewrite with array traversal
- * @deprecated In favour of enable_highlighting
- */
- function disable_highlighting() {
- $this->enable_highlighting(false);
- }
-
- /**
- * Enables all highlighting
- *
- * The optional flag parameter was added in version 1.0.7.21 and can be used
- * to enable (true) or disable (false) all highlighting.
- *
- * @since 1.0.0
- * @param boolean A flag specifying whether to enable or disable all highlighting
- * @todo Rewrite with array traversal
- */
- function enable_highlighting($flag = true) {
- $flag = $flag ? true : false;
- foreach ($this->lexic_permissions as $key => $value) {
- if (is_array($value)) {
- foreach ($value as $k => $v) {
- $this->lexic_permissions[$key][$k] = $flag;
- }
- }
- else {
- $this->lexic_permissions[$key] = $flag;
- }
- }
- // Context blocks
- $this->enable_important_blocks = $flag;
- }
-
- /**
- * Given a file extension, this method returns either a valid geshi language
- * name, or the empty string if it couldn't be found
- *
- * @param string The extension to get a language name for
- * @param array A lookup array to use instead of the default one
- * @since 1.0.5
- * @todo Re-think about how this method works (maybe make it private and/or make it
- * a extension->lang lookup?)
- * @todo static?
- */
- function get_language_name_from_extension( $extension, $lookup = array() ) {
- if ( !is_array($lookup) || !count($lookup)) {
- $lookup = array(
- 'actionscript' => array('as'),
- 'ada' => array('a', 'ada', 'adb', 'ads'),
- 'apache' => array('conf'),
- 'asm' => array('ash', 'asm'),
- 'asp' => array('asp'),
- 'bash' => array('sh'),
- 'c' => array('c', 'h'),
- 'c_mac' => array('c', 'h'),
- 'caddcl' => array(),
- 'cadlisp' => array(),
- 'cdfg' => array('cdfg'),
- 'cpp' => array('cpp', 'h', 'hpp'),
- 'csharp' => array(),
- 'css' => array('css'),
- 'delphi' => array('dpk', 'dpr', 'pp', 'pas'),
- 'dos' => array('bat', 'cmd'),
- 'html4strict' => array('html', 'htm'),
- 'java' => array('java'),
- 'javascript' => array('js'),
- 'lisp' => array('lisp'),
- 'lua' => array('lua'),
- 'mpasm' => array(),
- 'nsis' => array(),
- 'objc' => array(),
- 'oobas' => array(),
- 'oracle8' => array(),
- 'pascal' => array(),
- 'perl' => array('pl', 'pm'),
- 'php' => array('php', 'php5', 'phtml', 'phps'),
- 'python' => array('py'),
- 'qbasic' => array('bi'),
- 'sas' => array('sas'),
- 'smarty' => array(),
- 'vb' => array('bas'),
- 'vbnet' => array(),
- 'visualfoxpro' => array(),
- 'xml' => array('xml')
- );
- }
-
- foreach ($lookup as $lang => $extensions) {
- foreach ($extensions as $ext) {
- if ($ext == $extension) {
- return $lang;
- }
- }
- }
- return '';
- }
-
- /**
- * Given a file name, this method loads its contents in, and attempts
- * to set the language automatically. An optional lookup table can be
- * passed for looking up the language name. If not specified a default
- * table is used
- *
- * The language table is in the form
- * <pre>array(
- * 'lang_name' => array('extension', 'extension', ...),
- * 'lang_name' ...
- * );</pre>
- *
- * @param string The filename to load the source from
- * @param array A lookup array to use instead of the default one
- * @todo Complete rethink of this and above method
- * @since 1.0.5
- */
- function load_from_file($file_name, $lookup = array()) {
- if (is_readable($file_name)) {
- $this->set_source(implode('', file($file_name)));
- $this->set_language($this->get_language_name_from_extension(substr(strrchr($file_name, '.'), 1), $lookup));
- }
- else {
- $this->error = GESHI_ERROR_FILE_NOT_READABLE;
- }
- }
-
- /**
- * Adds a keyword to a keyword group for highlighting
- *
- * @param int The key of the keyword group to add the keyword to
- * @param string The word to add to the keyword group
- * @since 1.0.0
- */
- function add_keyword($key, $word) {
- $this->language_data['KEYWORDS'][$key][] = $word;
- }
-
- /**
- * Removes a keyword from a keyword group
- *
- * @param int The key of the keyword group to remove the keyword from
- * @param string The word to remove from the keyword group
- * @since 1.0.0
- */
- function remove_keyword($key, $word) {
- $this->language_data['KEYWORDS'][$key] =
- array_diff($this->language_data['KEYWORDS'][$key], array($word));
- }
-
- /**
- * Creates a new keyword group
- *
- * @param int The key of the keyword group to create
- * @param string The styles for the keyword group
- * @param boolean Whether the keyword group is case sensitive ornot
- * @param array The words to use for the keyword group
- * @since 1.0.0
- */
- function add_keyword_group($key, $styles, $case_sensitive = true, $words = array()) {
- $words = (array) $words;
- $this->language_data['KEYWORDS'][$key] = $words;
- $this->lexic_permissions['KEYWORDS'][$key] = true;
- $this->language_data['CASE_SENSITIVE'][$key] = $case_sensitive;
- $this->language_data['STYLES']['KEYWORDS'][$key] = $styles;
- }
-
- /**
- * Removes a keyword group
- *
- * @param int The key of the keyword group to remove
- * @since 1.0.0
- */
- function remove_keyword_group ($key) {
- unset($this->language_data['KEYWORDS'][$key]);
- unset($this->lexic_permissions['KEYWORDS'][$key]);
- unset($this->language_data['CASE_SENSITIVE'][$key]);
- unset($this->language_data['STYLES']['KEYWORDS'][$key]);
- }
-
- /**
- * Sets the content of the header block
- *
- * @param string The content of the header block
- * @since 1.0.2
- */
- function set_header_content($content) {
- $this->header_content = $content;
- }
-
- /**
- * Sets the content of the footer block
- *
- * @param string The content of the footer block
- * @since 1.0.2
- */
- function set_footer_content($content) {
- $this->footer_content = $content;
- }
-
- /**
- * Sets the style for the header content
- *
- * @param string The style for the header content
- * @since 1.0.2
- */
- function set_header_content_style($style) {
- $this->header_content_style = $style;
- }
-
- /**
- * Sets the style for the footer content
- *
- * @param string The style for the footer content
- * @since 1.0.2
- */
- function set_footer_content_style($style) {
- $this->footer_content_style = $style;
- }
-
- /**
- * Sets whether to force a surrounding block around
- * the highlighted code or not
- *
- * @param boolean Tells whether to enable or disable this feature
- * @since 1.0.7.20
- */
- function enable_inner_code_block($flag) {
- $this->force_code_block = (bool)$flag;
- }
-
- /**
- * Sets the base URL to be used for keywords
- *
- * @param int The key of the keyword group to set the URL for
- * @param string The URL to set for the group. If {FNAME} is in
- * the url somewhere, it is replaced by the keyword
- * that the URL is being made for
- * @since 1.0.2
- */
- function set_url_for_keyword_group($group, $url) {
- $this->language_data['URLS'][$group] = $url;
- }
-
- /**
- * Sets styles for links in code
- *
- * @param int A constant that specifies what state the style is being
- * set for - e.g. :hover or :visited
- * @param string The styles to use for that state
- * @since 1.0.2
- */
- function set_link_styles($type, $styles) {
- $this->link_styles[$type] = $styles;
- }
-
- /**
- * Sets the target for links in code
- *
- * @param string The target for links in the code, e.g. _blank
- * @since 1.0.3
- */
- function set_link_target($target) {
- if (!$target) {
- $this->link_target = '';
- }
- else {
- $this->link_target = ' target="' . $target . '" ';
- }
- }
-
- /**
- * Sets styles for important parts of the code
- *
- * @param string The styles to use on important parts of the code
- * @since 1.0.2
- */
- function set_important_styles($styles) {
- $this->important_styles = $styles;
- }
-
- /**
- * Sets whether context-important blocks are highlighted
- *
- * @param boolean Tells whether to enable or disable highlighting of important blocks
- * @todo REMOVE THIS SHIZ FROM GESHI!
- * @deprecated
- * @since 1.0.2
- */
- function enable_important_blocks($flag) {
- $this->enable_important_blocks = ( $flag ) ? true : false;
- }
-
- /**
- * Whether CSS IDs should be added to each line
- *
- * @param boolean If true, IDs will be added to each line.
- * @since 1.0.2
- */
- function enable_ids($flag = true) {
- $this->add_ids = ($flag) ? true : false;
- }
-
- /**
- * Specifies which lines to highlight extra
- *
- * The extra style parameter was added in 1.0.7.21.
- *
- * @param mixed An array of line numbers to highlight, or just a line
- * number on its own.
- * @param string A string specifying the style to use for this line
- * @since 1.0.2
- * @todo Some data replication here that could be cut down on
- */
- function highlight_lines_extra($lines, $style = null) {
- if (is_array($lines)) {
- foreach ($lines as $line) {
- $this->highlight_lines_extra(line, $style);
- }
- }
- else {
- $this->highlight_extra_lines[intval($lines)] = intval($lines);
- if ($style != null) {
- $this->highlight_extra_lines_styles[intval($lines)] = $style;
- } else {
- unset($this->highlight_extra_lines_styles[intval($lines)]);
- }
- }
- }
-
- /**
- * Sets the style for extra-highlighted lines
- *
- * @param string The style for extra-highlighted lines
- * @since 1.0.2
- */
- function set_highlight_lines_extra_style($styles) {
- $this->highlight_extra_lines_style = $styles;
- }
-
- /**
- * Sets the line-ending
- *
- * @param string The new line-ending
- * @since 1.0.2
- */
- function set_line_ending($line_ending) {
- $this->line_ending = (string)$line_ending;
- }
-
- /**
- * Sets what number line numbers should start at. Should
- * be a positive integer, and will be converted to one.
- *
- * <b>Warning:</b> Using this method will add the "start"
- * attribute to the <ol> that is used for line numbering.
- * This is <b>not</b> valid XHTML strict, so if that's what you
- * care about then don't use this method. Firefox is getting
- * support for the CSS method of doing this in 1.1 and Opera
- * has support for the CSS method, but (of course) IE doesn't
- * so it's not worth doing it the CSS way yet.
- *
- * @param int The number to start line numbers at
- * @since 1.0.2
- */
- function start_line_numbers_at($number) {
- $this->line_numbers_start = abs(intval($number));
- }
-
- /**
- * Sets the encoding used for htmlspecialchars(), for international
- * support.
- *
- * NOTE: This is not needed for now because htmlspecialchars() is not
- * being used (it has a security hole in PHP4 that has not been patched).
- * Maybe in a future version it may make a return for speed reasons, but
- * I doubt it.
- *
- * @param string The encoding to use for the source
- * @since 1.0.3
- */
- function set_encoding($encoding) {
- if ($encoding) {
- $this->encoding = $encoding;
- }
- }
-
- /**
- * Turns linking of keywords on or off.
- *
- * @param boolean If true, links will be added to keywords
- * @since 1.0.2
- */
- function enable_keyword_links($enable = true) {
- $this->keyword_links = ($enable) ? true : false;
- }
-
- /**
- * Returns the code in $this->source, highlighted and surrounded by the
- * nessecary HTML.
- *
- * This should only be called ONCE, cos it's SLOW! If you want to highlight
- * the same source multiple times, you're better off doing a whole lot of
- * str_replaces to replace the <span>s
- *
- * @since 1.0.0
- */
- function parse_code () {
- // Start the timer
- $start_time = microtime();
-
- // Firstly, if there is an error, we won't highlight
- if ($this->error) {
- $result = GeSHi::hsc($this->source);
- // Timing is irrelevant
- $this->set_time($start_time, $start_time);
- return $this->finalise($result);
- }
-
- // Replace all newlines to a common form.
- $code = str_replace("\r\n", "\n", $this->source);
- $code = str_replace("\r", "\n", $code);
- // Add spaces for regular expression matching and line numbers
- $code = "\n" . $code . "\n";
-
- // Initialise various stuff
- $length = strlen($code);
- $STRING_OPEN = '';
- $CLOSE_STRING = false;
- $ESCAPE_CHAR_OPEN = false;
- $COMMENT_MATCHED = false;
- // Turn highlighting on if strict mode doesn't apply to this language
- $HIGHLIGHTING_ON = ( !$this->strict_mode ) ? true : '';
- // Whether to highlight inside a block of code
- $HIGHLIGHT_INSIDE_STRICT = false;
- $HARDQUOTE_OPEN = false;
- $STRICTATTRS = '';
- $stuff_to_parse = '';
- $result = '';
-
- // "Important" selections are handled like multiline comments
- // @todo GET RID OF THIS SHIZ
- if ($this->enable_important_blocks) {
- $this->language_data['COMMENT_MULTI'][GESHI_START_IMPORTANT] = GESHI_END_IMPORTANT;
- }
-
- if ($this->strict_mode) {
- // Break the source into bits. Each bit will be a portion of the code
- // within script delimiters - for example, HTML between < and >
- $parts = array(0 => array(0 => ''));
- $k = 0;
- for ($i = 0; $i < $length; $i++) {
- $char = substr($code, $i, 1);
- if (!$HIGHLIGHTING_ON) {
- foreach ($this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters) {
- foreach ($delimiters as $open => $close) {
- // Get the next little bit for this opening string
- $check = substr($code, $i, strlen($open));
- // If it matches...
- if ($check == $open) {
- // We start a new block with the highlightable
- // code in it
- $HIGHLIGHTING_ON = $open;
- $i += strlen($open) - 1;
- $char = $open;
- $parts[++$k][0] = $char;
-
- // No point going around again...
- break(2);
- }
- }
- }
- }
- else {
- foreach ($this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters) {
- foreach ($delimiters as $open => $close) {
- if ($open == $HIGHLIGHTING_ON) {
- // Found the closing tag
- break(2);
- }
- }
- }
- // We check code from our current position BACKWARDS. This is so
- // the ending string for highlighting can be included in the block
- $check = substr($code, $i - strlen($close) + 1, strlen($close));
- if ($check == $close) {
- $HIGHLIGHTING_ON = '';
- // Add the string to the rest of the string for this part
- $parts[$k][1] = ( isset($parts[$k][1]) ) ? $parts[$k][1] . $char : $char;
- $parts[++$k][0] = '';
- $char = '';
- }
- }
- $parts[$k][1] = ( isset($parts[$k][1]) ) ? $parts[$k][1] . $char : $char;
- }
- $HIGHLIGHTING_ON = '';
- }
- else {
- // Not strict mode - simply dump the source into
- // the array at index 1 (the first highlightable block)
- $parts = array(
- 1 => array(
- 0 => '',
- 1 => $code
- )
- );
- }
-
- // Now we go through each part. We know that even-indexed parts are
- // code that shouldn't be highlighted, and odd-indexed parts should
- // be highlighted
- foreach ($parts as $key => $data) {
- $part = $data[1];
- // If this block should be highlighted...
- if ($key % 2) {
- if ($this->strict_mode) {
- // Find the class key for this block of code
- foreach ($this->language_data['SCRIPT_DELIMITERS'] as $script_key => $script_data) {
- foreach ($script_data as $open => $close) {
- if ($data[0] == $open) {
- break(2);
- }
- }
- }
-
- if ($this->language_data['STYLES']['SCRIPT'][$script_key] != '' &&
- $this->lexic_permissions['SCRIPT']) {
- // Add a span element around the source to
- // highlight the overall source block
- if (!$this->use_classes &&
- $this->language_data['STYLES']['SCRIPT'][$script_key] != '') {
- $attributes = ' style="' . $this->language_data['STYLES']['SCRIPT'][$script_key] . '"';
- }
- else {
- $attributes = ' class="sc' . $script_key . '"';
- }
- $result .= "<span$attributes>";
- $STRICTATTRS = $attributes;
- }
- }
-
- if (!$this->strict_mode || $this->language_data['HIGHLIGHT_STRICT_BLOCK'][$script_key]) {
- // Now, highlight the code in this block. This code
- // is really the engine of GeSHi (along with the method
- // parse_non_string_part).
- $length = strlen($part);
- for ($i = 0; $i < $length; $i++) {
- // Get the next char
- $char = substr($part, $i, 1);
- $hq = isset($this->language_data['HARDQUOTE']) ? $this->language_data['HARDQUOTE'][0] : false;
- // Is this char the newline and line numbers being used?
- if (($this->line_numbers != GESHI_NO_LINE_NUMBERS
- || count($this->highlight_extra_lines) > 0)
- && $char == "\n") {
- // If so, is there a string open? If there is, we should end it before
- // the newline and begin it again (so when <li>s are put in the source
- // remains XHTML compliant)
- // note to self: This opens up possibility of config files specifying
- // that languages can/cannot have multiline strings???
- if ($STRING_OPEN) {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
- }
- else {
- $attributes = ' class="st0"';
- }
- $char = '</span>' . $char . "<span$attributes>";
- }
- }
- else if ($char == $STRING_OPEN) {
- // A match of a string delimiter
- if (($this->lexic_permissions['ESCAPE_CHAR'] && $ESCAPE_CHAR_OPEN) ||
- ($this->lexic_permissions['STRINGS'] && !$ESCAPE_CHAR_OPEN)) {
- $char = GeSHi::hsc($char) . '</span>';
- }
- $escape_me = false;
- if ($HARDQUOTE_OPEN) {
- if ($ESCAPE_CHAR_OPEN) {
- $escape_me = true;
- }
- else {
- foreach ($this->language_data['HARDESCAPE'] as $hardesc) {
- if (substr($part, $i, strlen($hardesc)) == $hardesc) {
- $escape_me = true;
- break;
- }
- }
- }
- }
-
- if (!$ESCAPE_CHAR_OPEN) {
- $STRING_OPEN = '';
- $CLOSE_STRING = true;
- }
- if (!$escape_me) {
- $HARDQUOTE_OPEN = false;
- }
- $ESCAPE_CHAR_OPEN = false;
- }
- else if (in_array($char, $this->language_data['QUOTEMARKS']) &&
- ($STRING_OPEN == '') && $this->lexic_permissions['STRINGS']) {
- // The start of a new string
- $STRING_OPEN = $char;
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
- }
- else {
- $attributes = ' class="st0"';
- }
- $char = "<span$attributes>" . GeSHi::hsc($char);
-
- $result .= $this->parse_non_string_part( $stuff_to_parse );
- $stuff_to_parse = '';
- }
- else if ($hq && substr($part, $i, strlen($hq)) == $hq &&
- ($STRING_OPEN == '') && $this->lexic_permissions['STRINGS']) {
- // The start of a hard quoted string
- $STRING_OPEN = $this->language_data['HARDQUOTE'][1];
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
- }
- else {
- $attributes = ' class="st0"';
- }
- $char = "<span$attributes>" . $hq;
- $i += strlen($hq) - 1;
- $HARDQUOTE_OPEN = true;
- $result .= $this->parse_non_string_part($stuff_to_parse);
- $stuff_to_parse = '';
- }
- else if ($char == $this->language_data['ESCAPE_CHAR'] && $STRING_OPEN != '') {
- // An escape character
- if (!$ESCAPE_CHAR_OPEN) {
- $ESCAPE_CHAR_OPEN = !$HARDQUOTE_OPEN; // true unless $HARDQUOTE_OPEN
- if ($HARDQUOTE_OPEN) {
- foreach ($this->language_data['HARDESCAPE'] as $hard) {
- if (substr($part, $i, strlen($hard)) == $hard) {
- $ESCAPE_CHAR_OPEN = true;
- break;
- }
- }
- }
- if ($ESCAPE_CHAR_OPEN && $this->lexic_permissions['ESCAPE_CHAR']) {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['ESCAPE_CHAR'][0] . '"';
- }
- else {
- $attributes = ' class="es0"';
- }
- $char = "<span$attributes>" . $char;
- if (substr($code, $i + 1, 1) == "\n") {
- // escaping a newline, what's the point in putting the span around
- // the newline? It only causes hassles when inserting line numbers
- $char .= '</span>';
- $ESCAPE_CHAR_OPEN = false;
- }
- }
- }
- else {
- $ESCAPE_CHAR_OPEN = false;
- if ($this->lexic_permissions['ESCAPE_CHAR']) {
- $char .= '</span>';
- }
- }
- }
- else if ($ESCAPE_CHAR_OPEN) {
- if ($this->lexic_permissions['ESCAPE_CHAR']) {
- $char .= '</span>';
- }
- $ESCAPE_CHAR_OPEN = false;
- $test_str = $char;
- }
- else if ($STRING_OPEN == '') {
- // Is this a multiline comment?
- foreach ($this->language_data['COMMENT_MULTI'] as $open => $close) {
- $com_len = strlen($open);
- $test_str = substr( $part, $i, $com_len );
- $test_str_match = $test_str;
- if (strtolower($open) == strtolower($test_str)) {
- $COMMENT_MATCHED = true;
- //@todo If remove important do remove here
- if ($this->lexic_permissions['COMMENTS']['MULTI'] ||
- $test_str == GESHI_START_IMPORTANT) {
- if ($test_str != GESHI_START_IMPORTANT) {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['COMMENTS']['MULTI'] . '"';
- }
- else {
- $attributes = ' class="coMULTI"';
- }
- $test_str = "<span$attributes>" . GeSHi::hsc($test_str);
- }
- else {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->important_styles . '"';
- }
- else {
- $attributes = ' class="imp"';
- }
- // We don't include the start of the comment if it's an
- // "important" part
- $test_str = "<span$attributes>";
- }
- }
- else {
- $test_str = GeSHi::hsc($test_str);
- }
-
- $close_pos = strpos( $part, $close, $i + strlen($close) );
-
- $oops = false;
- if ($close_pos === false) {
- $close_pos = strlen($part);
- $oops = true;
- }
- else {
- $close_pos -= ($com_len - strlen($close));
- }
-
- // Short-cut through all the multiline code
- $rest_of_comment = GeSHi::hsc(substr($part, $i + $com_len, $close_pos - $i));
- if (($this->lexic_permissions['COMMENTS']['MULTI'] ||
- $test_str_match == GESHI_START_IMPORTANT) &&
- ($this->line_numbers != GESHI_NO_LINE_NUMBERS ||
- count($this->highlight_extra_lines) > 0)) {
- // strreplace to put close span and open span around multiline newlines
- $test_str .= str_replace(
- "\n", "</span>\n<span$attributes>",
- str_replace("\n ", "\n ", $rest_of_comment)
- );
- }
- else {
- $test_str .= $rest_of_comment;
- }
-
- if ($this->lexic_permissions['COMMENTS']['MULTI'] ||
- $test_str_match == GESHI_START_IMPORTANT) {
- $test_str .= '</span>';
- if ($oops) {
- $test_str .= "\n";
- }
- }
- $i = $close_pos + $com_len - 1;
- // parse the rest
- $result .= $this->parse_non_string_part($stuff_to_parse);
- $stuff_to_parse = '';
- break;
- }
- }
- // If we haven't matched a multiline comment, try single-line comments
- if (!$COMMENT_MATCHED) {
- foreach ($this->language_data['COMMENT_SINGLE'] as $comment_key => $comment_mark) {
- $com_len = strlen($comment_mark);
- $test_str = substr($part, $i, $com_len);
- if ($this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS]) {
- $match = ($comment_mark == $test_str);
- }
- else {
- $match = (strtolower($comment_mark) == strtolower($test_str));
- }
- //This check will find special variables like $# in bash or compiler directives of Delphi beginning {$
- if($match) {
- $disallowed_before = "";
- $disallowed_after = "";
-
- if(isset($this->language_data['PARSER_CONTROL'])) {
- if (isset($this->language_data['PARSER_CONTROL']['COMMENTS'])) {
- if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE'])) {
- $disallowed_before = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE'];
- }
- if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER'])) {
- $disallowed_after = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER'];
- }
- }
- }
-
- $match = $match && (!strlen($disallowed_before) || ((false === strpos($disallowed_before, substr($part, $i-1, 1))) && (0!=$i)));
- $match = $match && (!strlen($disallowed_after) || ((false === strpos($disallowed_after, substr($part, $i+1, 1))) && (strlen($part)-1>$i)));
- }
- if ($match) {
- $COMMENT_MATCHED = true;
- if ($this->lexic_permissions['COMMENTS'][$comment_key]) {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['COMMENTS'][$comment_key] . '"';
- }
- else {
- $attributes = ' class="co' . $comment_key . '"';
- }
- $test_str = "<span$attributes>" . GeSHi::hsc($this->change_case($test_str));
- }
- else {
- $test_str = GeSHi::hsc($test_str);
- }
- $close_pos = strpos($part, "\n", $i);
- $oops = false;
- if ($close_pos === false) {
- $close_pos = strlen($part);
- $oops = true;
- }
- $test_str .= GeSHi::hsc(substr($part, $i + $com_len, $close_pos - $i - $com_len));
- if ($this->lexic_permissions['COMMENTS'][$comment_key]) {
- $test_str .= "</span>";
- }
- // Take into account that the comment might be the last in the source
- if (!$oops) {
- $test_str .= "\n";
- }
- $i = $close_pos;
- // parse the rest
- $result .= $this->parse_non_string_part($stuff_to_parse);
- $stuff_to_parse = '';
- break;
- }
- }
- }
- }
- else if ($STRING_OPEN != '') {
- // Otherwise, convert it to HTML form
- if (strtolower($this->encoding) == 'utf-8') {
- //only escape <128 (we don't want to break multibyte chars)
- if (ord($char) < 128) {
- $char = GeSHi::hsc($char);
- }
- }
- else {
- //encode everthing
- $char = GeSHi::hsc($char);
- }
- }
- // Where are we adding this char?
- if (!$COMMENT_MATCHED) {
- if (($STRING_OPEN == '') && !$CLOSE_STRING) {
- $stuff_to_parse .= $char;
- }
- else {
- $result .= $char;
- $CLOSE_STRING = false;
- }
- }
- else {
- $result .= $test_str;
- $COMMENT_MATCHED = false;
- }
- }
- // Parse the last bit
- $result .= $this->parse_non_string_part($stuff_to_parse);
- $stuff_to_parse = '';
- }
- else {
- if ($STRICTATTRS != '') {
- $part = str_replace("\n", "</span>\n<span$STRICTATTRS>", GeSHi::hsc($part));
- $STRICTATTRS = '';
- }
- $result .= $part;
- }
- // Close the <span> that surrounds the block
- if ($this->strict_mode && $this->language_data['STYLES']['SCRIPT'][$script_key] != '' &&
- $this->lexic_permissions['SCRIPT']) {
- $result .= '</span>';
- }
- }
- else {
- // Else not a block to highlight
- $result .= GeSHi::hsc($part);
- }
- }
-
- // Parse the last stuff (redundant?)
- $result .= $this->parse_non_string_part($stuff_to_parse);
-
- // Lop off the very first and last spaces
- $result = substr($result, 1, -1);
-
- // Are we still in a string?
- if ($STRING_OPEN) {
- $result .= '</span>';
- }
-
- // We're finished: stop timing
- $this->set_time($start_time, microtime());
-
- return $this->finalise($result);
- }
-
- /**
- * Swaps out spaces and tabs for HTML indentation. Not needed if
- * the code is in a pre block...
- *
- * @param string The source to indent
- * @return string The source with HTML indenting applied
- * @since 1.0.0
- * @access private
- */
- function indent($result) {
- /// Replace tabs with the correct number of spaces
- if (false !== strpos($result, "\t")) {
- $lines = explode("\n", $result);
- $tab_width = $this->get_real_tab_width();
- foreach ($lines as $key => $line) {
- if (false === strpos($line, "\t")) {
- $lines[$key] = $line;
- continue;
- }
-
- $pos = 0;
- $length = strlen($line);
- $result_line = '';
-
- $IN_TAG = false;
- for ($i = 0; $i < $length; $i++) {
- $char = substr($line, $i, 1);
- // Simple engine to work out whether we're in a tag.
- // If we are we modify $pos. This is so we ignore HTML
- // in the line and only workout the tab replacement
- // via the actual content of the string
- // This test could be improved to include strings in the
- // html so that < or > would be allowed in user's styles
- // (e.g. quotes: '<' '>'; or similar)
- if ($IN_TAG && '>' == $char) {
- $IN_TAG = false;
- $result_line .= '>';
- ++$pos;
- }
- else if (!$IN_TAG && '<' == $char) {
- $IN_TAG = true;
- $result_line .= '<';
- ++$pos;
- }
- else if (!$IN_TAG && '&' == $char) {
- $substr = substr($line, $i + 3, 4);
- //$substr_5 = substr($line, 5, 1);
- $posi = strpos($substr, ';');
- if (false !== $posi) {
- $pos += $posi + 3;
- }
- $result_line .= '&';
- }
- else if (!$IN_TAG && "\t" == $char) {
- $str = '';
- // OPTIMISE - move $strs out. Make an array:
- // $tabs = array(
- // 1 => ' ',
- // 2 => ' ',
- // 3 => ' ' etc etc
- // to use instead of building a string every time
- $strs = array(0 => ' ', 1 => ' ');
- for ($k = 0; $k < ($tab_width - (($i - $pos) % $tab_width)); $k++) $str .= $strs[$k % 2];
- $result_line .= $str;
- $pos += ($i - $pos) % $tab_width + 1;
-
- if (false === strpos($line, "\t", $i + 1)) {
- $result_line .= substr($line, $i + 1);
- break;
- }
- }
- else if ($IN_TAG) {
- ++$pos;
- $result_line .= $char;
- }
- else {
- $result_line .= $char;
- //++$pos;
- }
- }
- $lines[$key] = $result_line;
- }
- $result = implode("\n", $lines);
- }
- // Other whitespace
- // BenBE: Fix to reduce the number of replacements to be done
- $result = preg_replace('/^ /m', ' ', $result);
- $result = str_replace(' ', ' ', $result);
-
- if ($this->line_numbers == GESHI_NO_LINE_NUMBERS) {
- if ($this->line_ending === null) {
- $result = nl2br($result);
- } else {
- $result = str_replace("\n", $this->line_ending, $result);
- }
- }
- return $result;
- }
-
- /**
- * Changes the case of a keyword for those languages where a change is asked for
- *
- * @param string The keyword to change the case of
- * @return string The keyword with its case changed
- * @since 1.0.0
- * @access private
- */
- function change_case($instr) {
- if ($this->language_data['CASE_KEYWORDS'] == GESHI_CAPS_UPPER) {
- return strtoupper($instr);
- }
- else if ($this->language_data['CASE_KEYWORDS'] == GESHI_CAPS_LOWER) {
- return strtolower($instr);
- }
- return $instr;
- }
-
- /**
- * Adds a url to a keyword where needed.
- *
- * @param string The keyword to add the URL HTML to
- * @param int What group the keyword is from
- * @param boolean Whether to get the HTML for the start or end
- * @return The HTML for either the start or end of the HTML <a> tag
- * @since 1.0.2
- * @access private
- * @todo Get rid of ender
- */
- function add_url_to_keyword($keyword, $group, $start_or_end) {
- if (!$this->keyword_links) {
- // Keyword links have been disabled
- return;
- }
-
- if (isset($this->language_data['URLS'][$group]) &&
- $this->language_data['URLS'][$group] != '' &&
- substr($keyword, 0, 5) != '</') {
- // There is a base group for this keyword
- if ($start_or_end == 'BEGIN') {
- // HTML workaround... not good form (tm) but should work for 1.0.X
- if ($keyword != '') {
- // Old system: strtolower
- //$keyword = ( $this->language_data['CASE_SENSITIVE'][$group] ) ? $keyword : strtolower($keyword);
- // New system: get keyword from language file to get correct case
- foreach ($this->language_data['KEYWORDS'][$group] as $word) {
- if (strtolower($word) == strtolower($keyword)) {
- break;
- }
- }
- $word = ( substr($word, 0, 4) == '<' ) ? substr($word, 4) : $word;
- $word = ( substr($word, -4) == '>' ) ? substr($word, 0, strlen($word) - 4) : $word;
- if (!$word) return '';
-
- return '<|UR1|"' .
- str_replace(
- array('{FNAME}', '{FNAMEL}', '{FNAMEU}', '.'),
- array(GeSHi::hsc($word), GeSHi::hsc(strtolower($word)),
- GeSHi::hsc(strtoupper($word)), '<DOT>'),
- $this->language_data['URLS'][$group]
- ) . '">';
- }
- return '';
- // HTML fix. Again, dirty hackage...
- }
- else if (!($this->language == 'html4strict' && ('>' == $keyword || '<' == $keyword))) {
- return '</a>';
- }
- }
- }
-
- /**
- * Takes a string that has no strings or comments in it, and highlights
- * stuff like keywords, numbers and methods.
- *
- * @param string The string to parse for keyword, numbers etc.
- * @since 1.0.0
- * @access private
- * @todo BUGGY! Why? Why not build string and return?
- */
- function parse_non_string_part(&$stuff_to_parse) {
- $stuff_to_parse = ' ' . GeSHi::hsc($stuff_to_parse);
- $stuff_to_parse_pregquote = preg_quote($stuff_to_parse, '/');
- $func = '$this->change_case';
- $func2 = '$this->add_url_to_keyword';
-
- //
- // Regular expressions
- //
- foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
- if ($this->lexic_permissions['REGEXPS'][$key]) {
- if (is_array($regexp)) {
- $stuff_to_parse = preg_replace(
- "/" .
- str_replace('/', '\/', $regexp[GESHI_SEARCH]) .
- "/{$regexp[GESHI_MODIFIERS]}",
- "{$regexp[GESHI_BEFORE]}<|!REG3XP$key!>{$regexp[GESHI_REPLACE]}|>{$regexp[GESHI_AFTER]}",
- $stuff_to_parse
- );
- }
- else {
- $stuff_to_parse = preg_replace( "/(" . str_replace('/', '\/', $regexp) . ")/", "<|!REG3XP$key!>\\1|>", $stuff_to_parse);
- }
- }
- }
-
- //
- // Highlight numbers. This regexp sucks... anyone with a regexp that WORKS
- // here wins a cookie if they send it to me. At the moment there's two doing
- // almost exactly the same thing, except the second one prevents a number
- // being highlighted twice (eg <span...><span...>5</span></span>)
- // Put /NUM!/ in for the styles, which gets replaced at the end.
- //
- // NEW ONE: Brice Bernard
- //
- if ($this->lexic_permissions['NUMBERS'] && preg_match('#[0-9]#', $stuff_to_parse )) {
- $stuff_to_parse = preg_replace('/([-+]?\\b(?:[0-9]*\\.)?[0-9]+\\b)/', '<|/NUM!/>\\1|>', $stuff_to_parse);
- }
-
- // Highlight keywords
- // if there is a couple of alpha symbols there *might* be a keyword
- if (preg_match('#[a-zA-Z]{2,}#', $stuff_to_parse)) {
- foreach ($this->language_data['KEYWORDS'] as $k => $keywordset) {
- if ($this->lexic_permissions['KEYWORDS'][$k]) {
- foreach ($keywordset as $keyword) {
- $keyword = preg_quote($keyword, '/');
- //
- // This replacement checks the word is on it's own (except if brackets etc
- // are next to it), then highlights it. We don't put the color=" for the span
- // in just yet - otherwise languages with the keywords "color" or "or" have
- // a fit.
- //
- if (false !== stristr($stuff_to_parse_pregquote, $keyword )) {
- $stuff_to_parse .= ' ';
- // Might make a more unique string for putting the number in soon
- // Basically, we don't put the styles in yet because then the styles themselves will
- // get highlighted if the language has a CSS keyword in it (like CSS, for example ;))
- $styles = "/$k/";
- $modifiers = ($this->language_data['CASE_SENSITIVE'][$k]) ? "e" : "ie";
-
- $disallowed_before = "a-zA-Z0-9\$_\|\#;>|^";
- $disallowed_after = "a-zA-Z0-9_<\|%\\-&";
- if(isset($this->language_data['PARSER_CONTROL'])) {
- if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'])) {
- if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'])) {
- $disallowed_before = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'];
- }
- if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'])) {
- $disallowed_after = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'];
- }
- }
- }
- $stuff_to_parse = preg_replace(
- "/([^$disallowed_before])($keyword)(?=[^$disallowed_after])/$modifiers",
- "'\\1' . $func2('\\2', '$k', 'BEGIN') . '<|$styles>' . $func('\\2') . '|>' . $func2('\\2', '$k', 'END')",
- $stuff_to_parse
- );
-
- $stuff_to_parse = substr($stuff_to_parse, 0, strlen($stuff_to_parse) - 1);
- }
- }
- }
- }
- }
-
- //
- // Now that's all done, replace /[number]/ with the correct styles
- //
- foreach ($this->language_data['KEYWORDS'] as $k => $kws) {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['KEYWORDS'][$k] . '"';
- }
- else {
- $attributes = ' class="kw' . $k . '"';
- }
- $stuff_to_parse = str_replace("/$k/", $attributes, $stuff_to_parse);
- }
-
- // Put number styles in
- if (!$this->use_classes && $this->lexic_permissions['NUMBERS']) {
- $attributes = ' style="' . $this->language_data['STYLES']['NUMBERS'][0] . '"';
- }
- else {
- $attributes = ' class="nu0"';
- }
- $stuff_to_parse = str_replace('/NUM!/', $attributes, $stuff_to_parse);
-
- //
- // Highlight methods and fields in objects
- //
- if ($this->lexic_permissions['METHODS'] && $this->language_data['OOLANG']) {
- foreach ($this->language_data['OBJECT_SPLITTERS'] as $key => $splitter) {
- if (false !== stristr($stuff_to_parse, $splitter)) {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['METHODS'][$key] . '"';
- }
- else {
- $attributes = ' class="me' . $key . '"';
- }
- $stuff_to_parse = preg_replace("/(" . preg_quote($this->language_data['OBJECT_SPLITTERS'][$key], 1) . "[\s]*)([a-zA-Z\*\(][a-zA-Z0-9_\*]*)/", "\\1<|$attributes>\\2|>", $stuff_to_parse);
- }
- }
- }
-
- //
- // Highlight brackets. Yes, I've tried adding a semi-colon to this list.
- // You try it, and see what happens ;)
- // TODO: Fix lexic permissions not converting entities if shouldn't
- // be highlighting regardless
- //
- if ($this->lexic_permissions['BRACKETS']) {
- $code_entities_match = array('[', ']', '(', ')', '{', '}');
- if (!$this->use_classes) {
- $code_entities_replace = array(
- '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">[|>',
- '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">]|>',
- '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">(|>',
- '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">)|>',
- '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">{|>',
- '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">}|>',
- );
- }
- else {
- $code_entities_replace = array(
- '<| class="br0">[|>',
- '<| class="br0">]|>',
- '<| class="br0">(|>',
- '<| class="br0">)|>',
- '<| class="br0">{|>',
- '<| class="br0">}|>',
- );
- }
- $stuff_to_parse = str_replace( $code_entities_match, $code_entities_replace, $stuff_to_parse );
- }
-
- //FIX for symbol highlighting ...
- if($this->lexic_permissions['SYMBOLS']) {
- //As this is a costy operation, we avoid doing it for multiple groups ...
- //Instead we perform it for all symbols at once.
- //
- //For this to work, we need to reorganize the data arrays.
- $symbol_data = $symbol_preg = array();
- foreach($this->language_data['SYMBOLS'] as $key => $symbols) {
- if(is_array($symbols)) {
- foreach($symbols as $sym) {
- if(!isset($symbol_data[$sym])) {
- $symbol_data[GeSHi::hsc($sym)] = $key;
- $symbol_preg[] = preg_quote(GeSHi::hsc($sym), '/');
- }
- }
- } else {
- if(!isset($symbol_data[$symbols])) {
- $symbol_data[GeSHi::hsc($symbols)] = 0;
- $symbol_preg[] = preg_quote(GESHI::hsc($symbols), '/');
- }
- }
- }
- //Now we have an array with each possible symbol as the key and the style as the actual data.
- //This way we can set the correct style just the moment we highlight ...
- //
- //Now we need to rewrite our array to get a search string that
- $sym_search = implode("|", $symbol_preg);
- //Get all matches and throw away those witin a block that is already highlighted... (i.e. matched by a regexp)
- preg_match_all("/(?:" . $sym_search . ")+/", $stuff_to_parse, $matches_in_stuff, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
- //Match anything that is a highlighted block ...
- preg_match_all("/<\|(?:<DOT>|[^>])+>(?:(?!\|>).*?)\|>|<\/a>/", $stuff_to_parse, $highlighted_in_stuff, PREG_OFFSET_CAPTURE);
- foreach($matches_in_stuff as $stuff_match_id => $stuff_match_data) {
- foreach($highlighted_in_stuff[0] as $highlight_id => $highlight_data) {
- //Do a range check of the found highlight identifier and the OOP match ...
- if(($highlight_data[1] <= $stuff_match_data[0][1]) &&
- ($highlight_data[1] + strlen($highlight_data[0]) >= $stuff_match_data[0][1] + strlen($stuff_match_data[0][0])))
- {
- //We found a match that was already highlighted ...
- unset($matches_in_stuff[$stuff_match_id]);
- break;
- }
- }
- }
- //Rebuild the matches array to be ordered by offset ...
- $symbol_offsets = array();
- foreach($matches_in_stuff as $stuff_match_data) {
- $symbol_offsets[$stuff_match_data[0][1]] = $stuff_match_data[0][0];
- }
- krsort($symbol_offsets);
- //Perform the actual replacements ...
- foreach($symbol_offsets as $symbol_offset => $symbol_match) {
- $symbol_hl = "";
- $old_sym = -1;
- //Split the current stuff to replace into its atomic symbols ...
- preg_match_all("/$sym_search/", $symbol_match, $sym_match_syms, PREG_PATTERN_ORDER);
- foreach($sym_match_syms[0] as $sym_ms) {
- //Check if consequtive symbols belong to the same group to save output ...
- if (isset($symbol_data[$sym_ms]) && ($symbol_data[$sym_ms] != $old_sym)) {
- if(-1 != $old_sym) {
- $symbol_hl .= "|>";
- }
- $old_sym = $symbol_data[$sym_ms];
- if (!$this->use_classes) {
- $symbol_hl .= '<| style="' . $this->language_data['STYLES']['SYMBOLS'][$old_sym] . '">';
- }
- else {
- $symbol_hl .= '<| class="sy' . $old_sym . '">';
- }
- }
- $symbol_hl .= $sym_ms;
- }
- //Close remaining tags and insert the replacement at the right position ...
- //Take caution if symbol_hl is empty to avoid doubled closing spans.
- if (-1 != $old_sym) {
- $symbol_hl .= "|>";
- }
- $stuff_to_parse = substr($stuff_to_parse, 0, $symbol_offset) . $symbol_hl . substr($stuff_to_parse, $symbol_offset + strlen($symbol_match));
- }
- }
- //FIX for symbol highlighting ...
-
- //
- // Add class/style for regexps
- //
- foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
- if ($this->lexic_permissions['REGEXPS'][$key]) {
- if (is_callable($this->language_data['STYLES']['REGEXPS'][$key])) {
- $func = $this->language_data['STYLES']['REGEXPS'][$key];
- $stuff_to_parse = preg_replace("/!REG3XP$key!(.*)\|>/eU",
- "' style=\"' . call_user_func(\"$func\", '\\1') . '\"\\1|>'", $stuff_to_parse);
- }
- else {
- if (!$this->use_classes) {
- $attributes = ' style="' . $this->language_data['STYLES']['REGEXPS'][$key] . '"';
- }
- else {
- if (is_array($this->language_data['REGEXPS'][$key]) &&
- array_key_exists(GESHI_CLASS, $this->language_data['REGEXPS'][$key])) {
- $attributes = ' class="' .
- $this->language_data['REGEXPS'][$key][GESHI_CLASS] . '"';
- }
- else {
- $attributes = ' class="re' . $key . '"';
- }
- }
- $stuff_to_parse = str_replace("!REG3XP$key!", "$attributes", $stuff_to_parse);
- }
- }
- }
-
- // Replace <DOT> with . for urls
- $stuff_to_parse = str_replace('<DOT>', '.', $stuff_to_parse);
- // Replace <|UR1| with <a href= for urls also
- if (isset($this->link_styles[GESHI_LINK])) {
- if ($this->use_classes) {
- $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);
- }
- else {
- $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' style="' . $this->link_styles[GESHI_LINK] . '" href=', $stuff_to_parse);
- }
- }
- else {
- $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);
- }
-
- //
- // NOW we add the span thingy ;)
- //
-
- $stuff_to_parse = str_replace('<|', '<span', $stuff_to_parse);
- $stuff_to_parse = str_replace ( '|>', '</span>', $stuff_to_parse );
-
- return substr($stuff_to_parse, 1);
- }
-
- /**
- * Sets the time taken to parse the code
- *
- * @param microtime The time when parsing started
- * @param microtime The time when parsing ended
- * @since 1.0.2
- * @access private
- */
- function set_time($start_time, $end_time) {
- $start = explode(' ', $start_time);
- $end = explode(' ', $end_time);
- $this->time = $end[0] + $end[1] - $start[0] - $start[1];
- }
-
- /**
- * Gets the time taken to parse the code
- *
- * @return double The time taken to parse the code
- * @since 1.0.2
- */
- function get_time() {
- return $this->time;
- }
-
- /**
- * Gets language information and stores it for later use
- *
- * @param string The filename of the language file you want to load
- * @since 1.0.0
- * @access private
- * @todo Needs to load keys for lexic permissions for keywords, regexps etc
- */
- function load_language($file_name) {
- $this->enable_highlighting();
- $language_data = array();
- require $file_name;
- // Perhaps some checking might be added here later to check that
- // $language data is a valid thing but maybe not
- $this->language_data = $language_data;
- // Set strict mode if should be set
- if ($this->language_data['STRICT_MODE_APPLIES'] == GESHI_ALWAYS) {
- $this->strict_mode = true;
- }
- // Set permissions for all lexics to true
- // so they'll be highlighted by default
- foreach ($this->language_data['KEYWORDS'] as $key => $words) {
- $this->lexic_permissions['KEYWORDS'][$key] = true;
- }
- foreach ($this->language_data['COMMENT_SINGLE'] as $key => $comment) {
- $this->lexic_permissions['COMMENTS'][$key] = true;
- }
- foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
- $this->lexic_permissions['REGEXPS'][$key] = true;
- }
- // Set default class for CSS
- $this->overall_class = $this->language;
- }
-
- /**
- * Takes the parsed code and various options, and creates the HTML
- * surrounding it to make it look nice.
- *
- * @param string The code already parsed
- * @return string The code nicely finalised
- * @since 1.0.0
- * @access private
- */
- function finalise($parsed_code) {
- // Remove end parts of important declarations
- // This is BUGGY!! My fault for bad code: fix coming in 1.2
- // @todo Remove this crap
- if ($this->enable_important_blocks &&
- (strstr($parsed_code, GeSHi::hsc(GESHI_START_IMPORTANT)) === false)) {
- $parsed_code = str_replace(GeSHi::hsc(GESHI_END_IMPORTANT), '', $parsed_code);
- }
-
- // Add HTML whitespace stuff if we're using the <div> header
- if ($this->header_type != GESHI_HEADER_PRE) {
- $parsed_code = $this->indent($parsed_code);
- }
-
- // purge some unnecessary stuff
- $parsed_code = preg_replace('#<span[^>]+>(\s*)</span>#', '\\1', $parsed_code);
- $parsed_code = preg_replace('#<div[^>]+>(\s*)</div>#', '\\1', $parsed_code);
-
- // If we are using IDs for line numbers, there needs to be an overall
- // ID set to prevent collisions.
- if ($this->add_ids && !$this->overall_id) {
- $this->overall_id = 'geshi-' . substr(md5(microtime()), 0, 4);
- }
-
- // If we're using line numbers, we insert <li>s and appropriate
- // markup to style them (otherwise we don't need to do anything)
- if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
- // If we're using the <pre> header, we shouldn't add newlines because
- // the <pre> will line-break them (and the <li>s already do this for us)
- $ls = ($this->header_type != GESHI_HEADER_PRE) ? "\n" : '';
- // Get code into lines
- $code = explode("\n", $parsed_code);
- // Set vars to defaults for following loop
- $parsed_code = '';
- $i = 0;
-
- // Foreach line...
- foreach ($code as $line) {
- //Reset the attributes for a new line ...
- $attrs = array();
-
- // Make lines have at least one space in them if they're empty
- // BenBE: Checking emptiness using trim instead of relying on blanks
- if ('' == trim($line)) {
- $line = ' ';
- }
- // If this is a "special line"...
- if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS &&
- $i % $this->line_nth_row == ($this->line_nth_row - 1)) {
- // Set the attributes to style the line
- if ($this->use_classes) {
- //$attr = ' class="li2"';
- $attrs['class'][] = 'li2';
- $def_attr = ' class="de2"';
- }
- else {
- //$attr = ' style="' . $this->line_style2 . '"';
- $attrs['style'][] = $this->line_style2;
- // This style "covers up" the special styles set for special lines
- // so that styles applied to special lines don't apply to the actual
- // code on that line
- $def_attr = ' style="' . $this->code_style . '"';
- }
- // Span or div?
- $start = "<div$def_attr>";
- $end = '</div>';
- }
- else {
- if ($this->use_classes) {
- //$attr = ' class="li1"';
- $attrs['class'][] = 'li1';
- $def_attr = ' class="de1"';
- }
- else {
- //$attr = ' style="' . $this->line_style1 . '"';
- $attrs['style'][] = $this->line_style1;
- $def_attr = ' style="' . $this->code_style . '"';
- }
- $start = "<div$def_attr>";
- $end = '</div>';
- }
-
- ++$i;
- // Are we supposed to use ids? If so, add them
- if ($this->add_ids) {
- $attrs['id'][] = "$this->overall_id-$i";
- }
- if (in_array($i, $this->highlight_extra_lines)) {
- if ($this->use_classes) {
- if(array_key_exists($i, $this->highlight_extra_lines_styles)) {
- $attrs['class'][] = "lx$i";
- } else {
- $attrs['class'][] = "ln-xtra";
- }
- } else {
- array_push($attrs['style'], $this->get_line_style($i));
- }
- }
-
- // Add in the line surrounded by appropriate list HTML
- $attr_string = '';
- foreach ($attrs as $key => $attr) {
- $attr_string .= ' ' . $key . '="' . implode(' ', $attr) . '"';
- }
- $parsed_code .= "<li$attr_string>$start$line$end</li>$ls";
- }
- }
- else {
- // No line numbers, but still need to handle highlighting lines extra.
- // Have to use divs so the full width of the code is highlighted
- $code = explode("\n", $parsed_code);
- $parsed_code = '';
- $i = 0;
- foreach ($code as $line) {
- // Make lines have at least one space in them if they're empty
- // BenBE: Checking emptiness using trim instead of relying on blanks
- if ('' == trim($line)) {
- $line = ' ';
- }
- if (in_array(++$i, $this->highlight_extra_lines)) {
- if ($this->use_classes) {
- if (array_key_exists($i, $this->highlight_extra_lines_styles)) {
- $parsed_code .= "<div class=\"lx$i\">";
- } else {
- $parsed_code .= "<div class=\"ln-xtra\">";
- }
- } else {
- $parsed_code .= "<div style=\"" . $this->get_line_style($i) . "\">";
- }
- // Remove \n because it stuffs up <pre> header
- $parsed_code .= $line . "</div>";
- } else {
- $parsed_code .= $line . "\n";
- }
- }
- }
-
- if ($this->header_type == GESHI_HEADER_PRE) {
- // enforce line numbers when using pre
- $parsed_code = str_replace('<li></li>', '<li> </li>', $parsed_code);
- }
-
- return $this->header() . chop($parsed_code) . $this->footer();
- }
-
- /**
- * Creates the header for the code block (with correct attributes)
- *
- * @return string The header for the code block
- * @since 1.0.0
- * @access private
- */
- function header() {
- // Get attributes needed
- $attributes = $this->get_attributes();
-
- $ol_attributes = '';
-
- if ($this->line_numbers_start != 1) {
- $ol_attributes .= ' start="' . $this->line_numbers_start . '"';
- }
-
- // Get the header HTML
- $header = $this->format_header_content();
-
- if (GESHI_HEADER_NONE == $this->header_type) {
- if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
- return "$header<ol$ol_attributes>";
- }
- return $header .
- ($this->force_code_block ? '<div>' : '');
- }
-
- // Work out what to return and do it
- if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
- if ($this->header_type == GESHI_HEADER_PRE) {
- return "<pre$attributes>$header<ol$ol_attributes>";
- }
- else if ($this->header_type == GESHI_HEADER_DIV) {
- return "<div$attributes>$header<ol$ol_attributes>";
- }
- }
- else {
- if ($this->header_type == GESHI_HEADER_PRE) {
- return "<pre$attributes>$header" .
- ($this->force_code_block ? '<div>' : '');
- }
- else if ($this->header_type == GESHI_HEADER_DIV) {
- return "<div$attributes>$header" .
- ($this->force_code_block ? '<div>' : '');
- }
- }
- }
-
- /**
- * Returns the header content, formatted for output
- *
- * @return string The header content, formatted for output
- * @since 1.0.2
- * @access private
- */
- function format_header_content() {
- $header = $this->header_content;
- if ($header) {
- if ($this->header_type == GESHI_HEADER_PRE) {
- $header = str_replace("\n", '', $header);
- }
- $header = $this->replace_keywords($header);
-
- if ($this->use_classes) {
- $attr = ' class="head"';
- }
- else {
- $attr = " style=\"{$this->header_content_style}\"";
- }
- return "<div$attr>$header</div>";
- }
- }
-
- /**
- * Returns the footer for the code block.
- *
- * @return string The footer for the code block
- * @since 1.0.0
- * @access private
- */
- function footer() {
- $footer_content = $this->format_footer_content();
-
- if (GESHI_HEADER_NONE == $this->header_type) {
- return ($this->line_numbers != GESHI_NO_LINE_NUMBERS) ? '</ol>' . $footer_content
- : $footer_content;
- }
-
- if ($this->header_type == GESHI_HEADER_DIV) {
- if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
- return "</ol>$footer_content</div>";
- }
- return ($this->force_code_block ? '</div>' : '') .
- "$footer_content</div>";
- }
- else {
- if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
- return "</ol>$footer_content</pre>";
- }
- return ($this->force_code_block ? '</div>' : '') .
- "$footer_content</pre>";
- }
- }
-
- /**
- * Returns the footer content, formatted for output
- *
- * @return string The footer content, formatted for output
- * @since 1.0.2
- * @access private
- */
- function format_footer_content() {
- $footer = $this->footer_content;
- if ($footer) {
- if ($this->header_type == GESHI_HEADER_PRE) {
- $footer = str_replace("\n", '', $footer);;
- }
- $footer = $this->replace_keywords($footer);
-
- if ($this->use_classes) {
- $attr = ' class="foot"';
- }
- else {
- $attr = " style=\"{$this->footer_content_style}\"";
- }
- return "<div$attr>$footer</div>";
- }
- }
-
- /**
- * Replaces certain keywords in the header and footer with
- * certain configuration values
- *
- * @param string The header or footer content to do replacement on
- * @return string The header or footer with replaced keywords
- * @since 1.0.2
- * @access private
- */
- function replace_keywords($instr) {
- $keywords = $replacements = array();
-
- $keywords[] = '<TIME>';
- $keywords[] = '{TIME}';
- $replacements[] = $replacements[] = number_format($this->get_time(), 3);
-
- $keywords[] = '<LANGUAGE>';
- $keywords[] = '{LANGUAGE}';
- $replacements[] = $replacements[] = $this->language;
-
- $keywords[] = '<VERSION>';
- $keywords[] = '{VERSION}';
- $replacements[] = $replacements[] = GESHI_VERSION;
-
- return str_replace($keywords, $replacements, $instr);
- }
-
- /**
- * Gets the CSS attributes for this code
- *
- * @return The CSS attributes for this code
- * @since 1.0.0
- * @access private
- * @todo Document behaviour change - class is outputted regardless of whether we're using classes or not.
- * Same with style
- */
- function get_attributes() {
- $attributes = '';
-
- if ($this->overall_class != '') {
- $attributes .= " class=\"{$this->overall_class}\"";
- }
- if ($this->overall_id != '') {
- $attributes .= " id=\"{$this->overall_id}\"";
- }
- if ($this->overall_style != '') {
- $attributes .= ' style="' . $this->overall_style . '"';
- }
- return $attributes;
- }
-
- /**
- * Secure replacement for PHP built-in function htmlspecialchars().
- *
- * See ticket #427 (http://wush.net/trac/wikka/ticket/427) for the rationale
- * for this replacement function.
- *
- * The INTERFACE for this function is almost the same as that for
- * htmlspecialchars(), with the same default for quote style; however, there
- * is no 'charset' parameter. The reason for this is as follows:
- *
- * The PHP docs say:
- * "The third argument charset defines character set used in conversion."
- *
- * I suspect PHP's htmlspecialchars() is working at the byte-value level and
- * thus _needs_ to know (or asssume) a character set because the special
- * characters to be replaced could exist at different code points in
- * different character sets. (If indeed htmlspecialchars() works at
- * byte-value level that goes some way towards explaining why the
- * vulnerability would exist in this function, too, and not only in
- * htmlentities() which certainly is working at byte-value level.)
- *
- * This replacement function however works at character level and should
- * therefore be "immune" to character set differences - so no charset
- * parameter is needed or provided. If a third parameter is passed, it will
- * be silently ignored.
- *
- * In the OUTPUT there is a minor difference in that we use ''' instead
- * of PHP's ''' for a single quote: this provides compatibility with
- * get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES)
- * (see comment by mikiwoz at yahoo dot co dot uk on
- * http://php.net/htmlspecialchars); it also matches the entity definition
- * for XML 1.0
- * (http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters).
- * Like PHP we use a numeric character reference instead of ''' for the
- * single quote. For the other special characters we use the named entity
- * references, as PHP is doing.
- *
- * @author {@link http://wikkawiki.org/JavaWoman Marjolein Katsma}
- *
- * @license http://www.gnu.org/copyleft/lgpl.html
- * GNU Lesser General Public License
- * @copyright Copyright 2007, {@link http://wikkawiki.org/CreditsPage
- * Wikka Development Team}
- *
- * @access private
- * @param string $string string to be converted
- * @param integer $quote_style
- * - ENT_COMPAT: escapes &, <, > and double quote (default)
- * - ENT_NOQUOTES: escapes only &, < and >
- * - ENT_QUOTES: escapes &, <, >, double and single quotes
- * @return string converted string
- * @since 1.0.7.18
- */
- function hsc($string, $quote_style=ENT_COMPAT) {
- // init
- $aTransSpecchar = array(
- '&' => '&',
- '"' => '"',
- '<' => '<',
- '>' => '>'
- ); // ENT_COMPAT set
-
- if (ENT_NOQUOTES == $quote_style) // don't convert double quotes
- {
- unset($aTransSpecchar['"']);
- }
- elseif (ENT_QUOTES == $quote_style) // convert single quotes as well
- {
- $aTransSpecchar["'"] = '''; // (apos) htmlspecialchars() uses '''
- }
-
- // return translated string
- return strtr($string,$aTransSpecchar);
- }
-
- /**
- * Returns a stylesheet for the highlighted code. If $economy mode
- * is true, we only return the stylesheet declarations that matter for
- * this code block instead of the whole thing
- *
- * @param boolean Whether to use economy mode or not
- * @return string A stylesheet built on the data for the current language
- * @since 1.0.0
- */
- function get_stylesheet($economy_mode = true) {
- // If there's an error, chances are that the language file
- // won't have populated the language data file, so we can't
- // risk getting a stylesheet...
- if ($this->error) {
- return '';
- }
- // First, work out what the selector should be. If there's an ID,
- // that should be used, the same for a class. Otherwise, a selector
- // of '' means that these styles will be applied anywhere
- $selector = ($this->overall_id != '') ? "#{$this->overall_id} " : '';
- $selector = ($selector == '' && $this->overall_class != '') ? ".{$this->overall_class} " : $selector;
-
- // Header of the stylesheet
- if (!$economy_mode) {
- $stylesheet = "/**\n".
- " * GeSHi Dynamically Generated Stylesheet\n".
- " * --------------------------------------\n".
- " * Dynamically generated stylesheet for {$this->language}\n".
- " * CSS class: {$this->overall_class}, CSS id: {$this->overall_id}\n".
- " * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n" .
- " * (http://qbnz.com/highlighter/ and http://geshi.org/)\n".
- " * --------------------------------------\n".
- " */\n";
- } else {
- $stylesheet = "/**\n".
- " * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n" .
- " * (http://qbnz.com/highlighter/ and http://geshi.org/)\n".
- " */\n";
- }
-
- // Set the <ol> to have no effect at all if there are line numbers
- // (<ol>s have margins that should be destroyed so all layout is
- // controlled by the set_overall_style method, which works on the
- // <pre> or <div> container). Additionally, set default styles for lines
- if (!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) {
- //$stylesheet .= "$selector, {$selector}ol, {$selector}ol li {margin: 0;}\n";
- $stylesheet .= "$selector.de1, $selector.de2 {{$this->code_style}}\n";
- }
-
- // Add overall styles
- if (!$economy_mode || $this->overall_style != '') {
- $stylesheet .= "$selector {{$this->overall_style}}\n";
- }
-
- // Add styles for links
- foreach ($this->link_styles as $key => $style) {
- if (!$economy_mode || $key == GESHI_LINK && $style != '') {
- $stylesheet .= "{$selector}a:link {{$style}}\n";
- }
- if (!$economy_mode || $key == GESHI_HOVER && $style != '') {
- $stylesheet .= "{$selector}a:hover {{$style}}\n";
- }
- if (!$economy_mode || $key == GESHI_ACTIVE && $style != '') {
- $stylesheet .= "{$selector}a:active {{$style}}\n";
- }
- if (!$economy_mode || $key == GESHI_VISITED && $style != '') {
- $stylesheet .= "{$selector}a:visited {{$style}}\n";
- }
- }
-
- // Header and footer
- if (!$economy_mode || $this->header_content_style != '') {
- $stylesheet .= "$selector.head {{$this->header_content_style}}\n";
- }
- if (!$economy_mode || $this->footer_content_style != '') {
- $stylesheet .= "$selector.foot {{$this->footer_content_style}}\n";
- }
-
- // Styles for important stuff
- if (!$economy_mode || $this->important_styles != '') {
- $stylesheet .= "$selector.imp {{$this->important_styles}}\n";
- }
-
- // Simple line number styles
- if (!$economy_mode || ($this->line_numbers != GESHI_NO_LINE_NUMBERS && $this->line_style1 != '')) {
- $stylesheet .= "{$selector}li, {$selector}li.li1 {{$this->line_style1}}\n";
- }
- // If there is a style set for fancy line numbers, echo it out
- if (!$economy_mode || ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS && $this->line_style2 != '')) {
- $stylesheet .= "{$selector}li.li2 {{$this->line_style2}}\n";
- }
-
- foreach ($this->language_data['STYLES']['KEYWORDS'] as $group => $styles) {
- if (!$economy_mode || ($economy_mode && $styles != '') &&
- (isset($this->lexic_permissions['KEYWORDS'][$group]) &&
- $this->lexic_permissions['KEYWORDS'][$group])) {
- $stylesheet .= "$selector.kw$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['COMMENTS'] as $group => $styles) {
- if (!$economy_mode || ($economy_mode && $styles != '') &&
- (isset($this->lexic_permissions['COMMENTS'][$group]) &&
- $this->lexic_permissions['COMMENTS'][$group])) {
- $stylesheet .= "$selector.co$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['ESCAPE_CHAR'] as $group => $styles) {
- if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
- !$this->lexic_permissions['ESCAPE_CHAR'])) {
- $stylesheet .= "$selector.es$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['BRACKETS'] as $group => $styles) {
- if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
- !$this->lexic_permissions['BRACKETS'])) {
- $stylesheet .= "$selector.br$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['SYMBOLS'] as $group => $styles) {
- if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
- !$this->lexic_permissions['SYMBOLS'])) {
- $stylesheet .= "$selector.sy$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['STRINGS'] as $group => $styles) {
- if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
- !$this->lexic_permissions['STRINGS'])) {
- $stylesheet .= "$selector.st$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['NUMBERS'] as $group => $styles) {
- if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
- !$this->lexic_permissions['NUMBERS'])) {
- $stylesheet .= "$selector.nu$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['METHODS'] as $group => $styles) {
- if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
- !$this->lexic_permissions['METHODS'])) {
- $stylesheet .= "$selector.me$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['SCRIPT'] as $group => $styles) {
- if (!$economy_mode || !($economy_mode && $styles == '')) {
- $stylesheet .= "$selector.sc$group {{$styles}}\n";
- }
- }
- foreach ($this->language_data['STYLES']['REGEXPS'] as $group => $styles) {
- if (!$economy_mode || ($economy_mode && $styles != '') &&
- (isset($this->lexic_permissions['REGEXPS'][$group]) &&
- $this->lexic_permissions['REGEXPS'][$group])) {
- if (is_array($this->language_data['REGEXPS'][$group]) &&
- array_key_exists(GESHI_CLASS,
- $this->language_data['REGEXPS'][$group])) {
- $stylesheet .= "$selector.";
- $stylesheet .= $this->language_data['REGEXPS'][$group][GESHI_CLASS];
- $stylesheet .= " {{$styles}}\n";
- }
- else {
- $stylesheet .= "$selector.re$group {{$styles}}\n";
- }
- }
- }
- // Styles for lines being highlighted extra
- if (!$economy_mode || (count($this->highlight_extra_lines)!=count($this->highlight_extra_lines_styles))) {
- $stylesheet .= "{$selector}.ln-xtra, {$selector}li.ln-xtra, {$selector}div.ln-xtra {{$this->highlight_extra_lines_style}}\n";
- }
- foreach ($this->highlight_extra_lines_styles as $lineid => $linestyle) {
- $stylesheet .= "{$selector}.lx$lineid, {$selector}li.lx$lineid, {$selector}div.lx$lineid {{$linestyle}}\n";
- }
-
- return $stylesheet;
- }
-
- /**
- * Get's the style that is used for the specified line
- *
- * @param int The line number information is requested for
- * @access private
- * @since 1.0.7.21
- */
- function get_line_style($line) {
- //$style = null;
- $style = null;
- if (array_key_exists($line, $this->highlight_extra_lines_styles)) {
- $style = $this->highlight_extra_lines_styles[$line];
- } else { // if no "extra" style assigned
- $style = $this->highlight_extra_lines_style;
- }
-
- return $style;
- }
-} // End Class GeSHi
-
-
-if (!function_exists('geshi_highlight')) {
- /**
- * Easy way to highlight stuff. Behaves just like highlight_string
- *
- * @param string The code to highlight
- * @param string The language to highlight the code in
- * @param string The path to the language files. You can leave this blank if you need
- * as from version 1.0.7 the path should be automatically detected
- * @param boolean Whether to return the result or to echo
- * @return string The code highlighted (if $return is true)
- * @since 1.0.2
- */
- function geshi_highlight($string, $language, $path = null, $return = false) {
- $geshi = new GeSHi($string, $language, $path);
- $geshi->set_header_type(GESHI_HEADER_NONE);
- if ($return) {
- return '<code>' . $geshi->parse_code() . '</code>';
- }
- echo '<code>' . $geshi->parse_code() . '</code>';
- if ($geshi->error()) {
- return false;
- }
- return true;
- }
-}
-
-?>
+<?php
+/**
+ * GeSHi - Generic Syntax Highlighter
+ *
+ * The GeSHi class for Generic Syntax Highlighting. Please refer to the
+ * documentation at http://qbnz.com/highlighter/documentation.php for more
+ * information about how to use this class.
+ *
+ * For changes, release notes, TODOs etc, see the relevant files in the docs/
+ * directory.
+ *
+ * This file is part of GeSHi.
+ *
+ * GeSHi is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GeSHi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GeSHi; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @package geshi
+ * @subpackage core
+ * @author Nigel McNie <nigel at geshi.org>, Benny Baumann <BenBE at omorphia.de>
+ * @copyright (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2008 Benny Baumann
+ * @license http://gnu.org/copyleft/gpl.html GNU GPL
+ *
+ */
+
+//
+// GeSHi Constants
+// You should use these constant names in your programs instead of
+// their values - you never know when a value may change in a future
+// version
+//
+
+/** The version of this GeSHi file */
+define('GESHI_VERSION', '1.0.7.21');
+
+// Define the root directory for the GeSHi code tree
+if (!defined('GESHI_ROOT')) {
+ /** The root directory for GeSHi */
+ define('GESHI_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+}
+/** The language file directory for GeSHi
+ @access private */
+define('GESHI_LANG_ROOT', GESHI_ROOT . 'geshi' . DIRECTORY_SEPARATOR);
+
+
+// Line numbers - use with enable_line_numbers()
+/** Use no line numbers when building the result */
+define('GESHI_NO_LINE_NUMBERS', 0);
+/** Use normal line numbers when building the result */
+define('GESHI_NORMAL_LINE_NUMBERS', 1);
+/** Use fancy line numbers when building the result */
+define('GESHI_FANCY_LINE_NUMBERS', 2);
+
+// Container HTML type
+/** Use nothing to surround the source */
+define('GESHI_HEADER_NONE', 0);
+/** Use a "div" to surround the source */
+define('GESHI_HEADER_DIV', 1);
+/** Use a "pre" to surround the source */
+define('GESHI_HEADER_PRE', 2);
+
+// Capatalisation constants
+/** Lowercase keywords found */
+define('GESHI_CAPS_NO_CHANGE', 0);
+/** Uppercase keywords found */
+define('GESHI_CAPS_UPPER', 1);
+/** Leave keywords found as the case that they are */
+define('GESHI_CAPS_LOWER', 2);
+
+// Link style constants
+/** Links in the source in the :link state */
+define('GESHI_LINK', 0);
+/** Links in the source in the :hover state */
+define('GESHI_HOVER', 1);
+/** Links in the source in the :active state */
+define('GESHI_ACTIVE', 2);
+/** Links in the source in the :visited state */
+define('GESHI_VISITED', 3);
+
+// Important string starter/finisher
+// Note that if you change these, they should be as-is: i.e., don't
+// write them as if they had been run through htmlentities()
+/** The starter for important parts of the source */
+define('GESHI_START_IMPORTANT', '<BEGIN GeSHi>');
+/** The ender for important parts of the source */
+define('GESHI_END_IMPORTANT', '<END GeSHi>');
+
+/**#@+
+ * @access private
+ */
+// When strict mode applies for a language
+/** Strict mode never applies (this is the most common) */
+define('GESHI_NEVER', 0);
+/** Strict mode *might* apply, and can be enabled or
+ disabled by {@link GeSHi::enable_strict_mode()} */
+define('GESHI_MAYBE', 1);
+/** Strict mode always applies */
+define('GESHI_ALWAYS', 2);
+
+// Advanced regexp handling constants, used in language files
+/** The key of the regex array defining what to search for */
+define('GESHI_SEARCH', 0);
+/** The key of the regex array defining what bracket group in a
+ matched search to use as a replacement */
+define('GESHI_REPLACE', 1);
+/** The key of the regex array defining any modifiers to the regular expression */
+define('GESHI_MODIFIERS', 2);
+/** The key of the regex array defining what bracket group in a
+ matched search to put before the replacement */
+define('GESHI_BEFORE', 3);
+/** The key of the regex array defining what bracket group in a
+ matched search to put after the replacement */
+define('GESHI_AFTER', 4);
+/** The key of the regex array defining a custom keyword to use
+ for this regexp's html tag class */
+define('GESHI_CLASS', 5);
+
+/** Used in language files to mark comments */
+define('GESHI_COMMENTS', 0);
+
+// Error detection - use these to analyse faults
+/** No sourcecode to highlight was specified
+ * @deprecated
+ */
+define('GESHI_ERROR_NO_INPUT', 1);
+/** The language specified does not exist */
+define('GESHI_ERROR_NO_SUCH_LANG', 2);
+/** GeSHi could not open a file for reading (generally a language file) */
+define('GESHI_ERROR_FILE_NOT_READABLE', 3);
+/** The header type passed to {@link GeSHi::set_header_type()} was invalid */
+define('GESHI_ERROR_INVALID_HEADER_TYPE', 4);
+/** The line number type passed to {@link GeSHi::enable_line_numbers()} was invalid */
+define('GESHI_ERROR_INVALID_LINE_NUMBER_TYPE', 5);
+/**#@-*/
+
+
+/**
+ * The GeSHi Class.
+ *
+ * Please refer to the documentation for GeSHi 1.0.X that is available
+ * at http://qbnz.com/highlighter/documentation.php for more information
+ * about how to use this class.
+ *
+ * @package geshi
+ * @author Nigel McNie <nigel at geshi.org>, Benny Baumann <BenBE at omorphia.de>
+ * @copyright (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2008 Benny Baumann
+ */
+class GeSHi {
+ /**#@+
+ * @access private
+ */
+ /**
+ * The source code to highlight
+ * @var string
+ */
+ var $source = '';
+
+ /**
+ * The language to use when highlighting
+ * @var string
+ */
+ var $language = '';
+
+ /**
+ * The data for the language used
+ * @var array
+ */
+ var $language_data = array();
+
+ /**
+ * The path to the language files
+ * @var string
+ */
+ var $language_path = GESHI_LANG_ROOT;
+
+ /**
+ * The error message associated with an error
+ * @var string
+ * @todo check err reporting works
+ */
+ var $error = false;
+
+ /**
+ * Possible error messages
+ * @var array
+ */
+ var $error_messages = array(
+ GESHI_ERROR_NO_SUCH_LANG => 'GeSHi could not find the language {LANGUAGE} (using path {PATH})',
+ GESHI_ERROR_FILE_NOT_READABLE => 'The file specified for load_from_file was not readable',
+ GESHI_ERROR_INVALID_HEADER_TYPE => 'The header type specified is invalid',
+ GESHI_ERROR_INVALID_LINE_NUMBER_TYPE => 'The line number type specified is invalid'
+ );
+
+ /**
+ * Whether highlighting is strict or not
+ * @var boolean
+ */
+ var $strict_mode = false;
+
+ /**
+ * Whether to use CSS classes in output
+ * @var boolean
+ */
+ var $use_classes = false;
+
+ /**
+ * The type of header to use. Can be one of the following
+ * values:
+ *
+ * - GESHI_HEADER_PRE: Source is outputted in a "pre" HTML element.
+ * - GESHI_HEADER_DIV: Source is outputted in a "div" HTML element.
+ * - GESHI_HEADER_NONE: No header is outputted.
+ *
+ * @var int
+ */
+ var $header_type = GESHI_HEADER_PRE;
+
+ /**
+ * Array of permissions for which lexics should be highlighted
+ * @var array
+ */
+ var $lexic_permissions = array(
+ 'KEYWORDS' => array(),
+ 'COMMENTS' => array('MULTI' => true),
+ 'REGEXPS' => array(),
+ 'ESCAPE_CHAR' => true,
+ 'BRACKETS' => true,
+ 'SYMBOLS' => false,
+ 'STRINGS' => true,
+ 'NUMBERS' => true,
+ 'METHODS' => true,
+ 'SCRIPT' => true
+ );
+
+ /**
+ * The time it took to parse the code
+ * @var double
+ */
+ var $time = 0;
+
+ /**
+ * The content of the header block
+ * @var string
+ */
+ var $header_content = '';
+
+ /**
+ * The content of the footer block
+ * @var string
+ */
+ var $footer_content = '';
+
+ /**
+ * The style of the header block
+ * @var string
+ */
+ var $header_content_style = '';
+
+ /**
+ * The style of the footer block
+ * @var string
+ */
+ var $footer_content_style = '';
+
+ /**
+ * Tells if a block around the highlighted source should be forced
+ * if not using line numbering
+ * @var boolean
+ */
+ var $force_code_block = false;
+
+ /**
+ * The styles for hyperlinks in the code
+ * @var array
+ */
+ var $link_styles = array();
+
+ /**
+ * Whether important blocks should be recognised or not
+ * @var boolean
+ * @deprecated
+ * @todo REMOVE THIS FUNCTIONALITY!
+ */
+ var $enable_important_blocks = false;
+
+ /**
+ * Styles for important parts of the code
+ * @var string
+ * @deprecated
+ * @todo As above - rethink the whole idea of important blocks as it is buggy and
+ * will be hard to implement in 1.2
+ */
+ var $important_styles = 'font-weight: bold; color: red;'; // Styles for important parts of the code
+
+ /**
+ * Whether CSS IDs should be added to the code
+ * @var boolean
+ */
+ var $add_ids = false;
+
+ /**
+ * Lines that should be highlighted extra
+ * @var array
+ */
+ var $highlight_extra_lines = array();
+
+ /**
+ * Styles of lines that should be highlighted extra
+ * @var array
+ */
+ var $highlight_extra_lines_styles = array();
+
+ /**
+ * Styles of extra-highlighted lines
+ * @var string
+ */
+ var $highlight_extra_lines_style = 'color: #cc0; background-color: #ffc;';
+
+ /**
+ * The line ending
+ * If null, nl2br() will be used on the result string.
+ * Otherwise, all instances of \n will be replaced with $line_ending
+ * @var string
+ */
+ var $line_ending = null;
+
+ /**
+ * Number at which line numbers should start at
+ * @var int
+ */
+ var $line_numbers_start = 1;
+
+ /**
+ * The overall style for this code block
+ * @var string
+ */
+ var $overall_style = '';
+
+ /**
+ * The style for the actual code
+ * @var string
+ */
+ var $code_style = 'font-family: \'Courier New\', Courier, monospace; font-weight: normal;';
+
+ /**
+ * The overall class for this code block
+ * @var string
+ */
+ var $overall_class = '';
+
+ /**
+ * The overall ID for this code block
+ * @var string
+ */
+ var $overall_id = '';
+
+ /**
+ * Line number styles
+ * @var string
+ */
+ var $line_style1 = 'font-family: \'Courier New\', Courier, monospace; color: black; font-weight: normal; font-style: normal;';
+
+ /**
+ * Line number styles for fancy lines
+ * @var string
+ */
+ var $line_style2 = 'font-weight: bold;';
+
+ /**
+ * Flag for how line nubmers are displayed
+ * @var boolean
+ */
+ var $line_numbers = GESHI_NO_LINE_NUMBERS;
+
+ /**
+ * The "nth" value for fancy line highlighting
+ * @var int
+ */
+ var $line_nth_row = 0;
+
+ /**
+ * The size of tab stops
+ * @var int
+ */
+ var $tab_width = 8;
+
+ /**
+ * Should we use language-defined tab stop widths?
+ * @var int
+ */
+ var $use_language_tab_width = false;
+
+ /**
+ * Default target for keyword links
+ * @var string
+ */
+ var $link_target = '';
+
+ /**
+ * The encoding to use for entity encoding
+ * NOTE: no longer used
+ * @var string
+ */
+ var $encoding = 'ISO-8859-1';
+
+ /**
+ * Should keywords be linked?
+ * @var boolean
+ */
+ var $keyword_links = true;
+
+ /**#@-*/
+
+ /**
+ * Creates a new GeSHi object, with source and language
+ *
+ * @param string The source code to highlight
+ * @param string The language to highlight the source with
+ * @param string The path to the language file directory. <b>This
+ * is deprecated!</b> I've backported the auto path
+ * detection from the 1.1.X dev branch, so now it
+ * should be automatically set correctly. If you have
+ * renamed the language directory however, you will
+ * still need to set the path using this parameter or
+ * {@link GeSHi::set_language_path()}
+ * @since 1.0.0
+ */
+ function GeSHi($source, $language, $path = '') {
+ $this->set_source($source);
+ $this->set_language_path($path);
+ $this->set_language($language);
+ }
+
+ /**
+ * Returns an error message associated with the last GeSHi operation,
+ * or false if no error has occured
+ *
+ * @return string|false An error message if there has been an error, else false
+ * @since 1.0.0
+ */
+ function error() {
+ if ($this->error) {
+ $msg = $this->error_messages[$this->error];
+ $debug_tpl_vars = array(
+ '{LANGUAGE}' => $this->language,
+ '{PATH}' => $this->language_path
+ );
+ foreach ($debug_tpl_vars as $tpl => $var) {
+ $msg = str_replace($tpl, $var, $msg);
+ }
+ return "<br /><strong>GeSHi Error:</strong> $msg (code $this->error)<br />";
+ }
+ return false;
+ }
+
+ /**
+ * Gets a human-readable language name (thanks to Simon Patterson
+ * for the idea :))
+ *
+ * @return string The name for the current language
+ * @since 1.0.2
+ */
+ function get_language_name() {
+ if (GESHI_ERROR_NO_SUCH_LANG == $this->error) {
+ return $this->language_data['LANG_NAME'] . ' (Unknown Language)';
+ }
+ return $this->language_data['LANG_NAME'];
+ }
+
+ /**
+ * Sets the source code for this object
+ *
+ * @param string The source code to highlight
+ * @since 1.0.0
+ */
+ function set_source($source) {
+ $this->source = $source;
+ $this->highlight_extra_lines = array();
+ }
+
+ /**
+ * Sets the language for this object
+ *
+ * @param string The name of the language to use
+ * @since 1.0.0
+ */
+ function set_language($language) {
+ $this->error = false;
+ $this->strict_mode = GESHI_NEVER;
+
+ $language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language);
+ $this->language = strtolower($language);
+
+ $file_name = $this->language_path . $this->language . '.php';
+ if (!is_readable($file_name)) {
+ $this->error = GESHI_ERROR_NO_SUCH_LANG;
+ return;
+ }
+ // Load the language for parsing
+ $this->load_language($file_name);
+ }
+
+ /**
+ * Sets the path to the directory containing the language files. Note
+ * that this path is relative to the directory of the script that included
+ * geshi.php, NOT geshi.php itself.
+ *
+ * @param string The path to the language directory
+ * @since 1.0.0
+ * @deprecated The path to the language files should now be automatically
+ * detected, so this method should no longer be needed. The
+ * 1.1.X branch handles manual setting of the path differently
+ * so this method will disappear in 1.2.0.
+ */
+ function set_language_path($path) {
+ if ($path) {
+ $this->language_path = ('/' == substr($path, strlen($path) - 1, 1)) ? $path : $path . '/';
+ $this->set_language($this->language); // otherwise set_language_path has no effect
+ }
+ }
+
+ /**
+ * Sets the type of header to be used.
+ *
+ * If GESHI_HEADER_DIV is used, the code is surrounded in a "div".This
+ * means more source code but more control over tab width and line-wrapping.
+ * GESHI_HEADER_PRE means that a "pre" is used - less source, but less
+ * control. Default is GESHI_HEADER_PRE.
+ *
+ * From 1.0.7.2, you can use GESHI_HEADER_NONE to specify that no header code
+ * should be outputted.
+ *
+ * @param int The type of header to be used
+ * @since 1.0.0
+ */
+ function set_header_type($type) {
+ if (GESHI_HEADER_DIV != $type && GESHI_HEADER_PRE != $type && GESHI_HEADER_NONE != $type) {
+ $this->error = GESHI_ERROR_INVALID_HEADER_TYPE;
+ return;
+ }
+ $this->header_type = $type;
+ // Set a default overall style if the header is a <div>
+ if (GESHI_HEADER_DIV == $type && !$this->overall_style) {
+ $this->overall_style = 'font-family: monospace;';
+ }
+ }
+
+ /**
+ * Sets the styles for the code that will be outputted
+ * when this object is parsed. The style should be a
+ * string of valid stylesheet declarations
+ *
+ * @param string The overall style for the outputted code block
+ * @param boolean Whether to merge the styles with the current styles or not
+ * @since 1.0.0
+ */
+ function set_overall_style($style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->overall_style = $style;
+ }
+ else {
+ $this->overall_style .= $style;
+ }
+ }
+
+ /**
+ * Sets the overall classname for this block of code. This
+ * class can then be used in a stylesheet to style this object's
+ * output
+ *
+ * @param string The class name to use for this block of code
+ * @since 1.0.0
+ */
+ function set_overall_class($class) {
+ $this->overall_class = $class;
+ }
+
+ /**
+ * Sets the overall id for this block of code. This id can then
+ * be used in a stylesheet to style this object's output
+ *
+ * @param string The ID to use for this block of code
+ * @since 1.0.0
+ */
+ function set_overall_id($id) {
+ $this->overall_id = $id;
+ }
+
+ /**
+ * Sets whether CSS classes should be used to highlight the source. Default
+ * is off, calling this method with no arguments will turn it on
+ *
+ * @param boolean Whether to turn classes on or not
+ * @since 1.0.0
+ */
+ function enable_classes($flag = true) {
+ $this->use_classes = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the style for the actual code. This should be a string
+ * containing valid stylesheet declarations. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * Note: Use this method to override any style changes you made to
+ * the line numbers if you are using line numbers, else the line of
+ * code will have the same style as the line number! Consult the
+ * GeSHi documentation for more information about this.
+ *
+ * @param string The style to use for actual code
+ * @param boolean Whether to merge the current styles with the new styles
+ * @since 1.0.2
+ */
+ function set_code_style($style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->code_style = $style;
+ }
+ else {
+ $this->code_style .= $style;
+ }
+ }
+
+ /**
+ * Sets the styles for the line numbers.
+ *
+ * @param string The style for the line numbers that are "normal"
+ * @param string|boolean If a string, this is the style of the line
+ * numbers that are "fancy", otherwise if boolean then this
+ * defines whether the normal styles should be merged with the
+ * new normal styles or not
+ * @param boolean If set, is the flag for whether to merge the "fancy"
+ * styles with the current styles or not
+ * @since 1.0.2
+ */
+ function set_line_style($style1, $style2 = '', $preserve_defaults = false) {
+ if (is_bool($style2)) {
+ $preserve_defaults = $style2;
+ $style2 = '';
+ }
+ if (!$preserve_defaults) {
+ $this->line_style1 = $style1;
+ $this->line_style2 = $style2;
+ }
+ else {
+ $this->line_style1 .= $style1;
+ $this->line_style2 .= $style2;
+ }
+ }
+
+ /**
+ * Sets whether line numbers should be displayed.
+ *
+ * Valid values for the first parameter are:
+ *
+ * - GESHI_NO_LINE_NUMBERS: Line numbers will not be displayed
+ * - GESHI_NORMAL_LINE_NUMBERS: Line numbers will be displayed
+ * - GESHI_FANCY_LINE_NUMBERS: Fancy line numbers will be displayed
+ *
+ * For fancy line numbers, the second parameter is used to signal which lines
+ * are to be fancy. For example, if the value of this parameter is 5 then every
+ * 5th line will be fancy.
+ *
+ * @param int How line numbers should be displayed
+ * @param int Defines which lines are fancy
+ * @since 1.0.0
+ */
+ function enable_line_numbers($flag, $nth_row = 5) {
+ if (GESHI_NO_LINE_NUMBERS != $flag && GESHI_NORMAL_LINE_NUMBERS != $flag
+ && GESHI_FANCY_LINE_NUMBERS != $flag) {
+ $this->error = GESHI_ERROR_INVALID_LINE_NUMBER_TYPE;
+ }
+ $this->line_numbers = $flag;
+ $this->line_nth_row = $nth_row;
+ }
+
+ /**
+ * Sets the style for a keyword group. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param int The key of the keyword group to change the styles of
+ * @param string The style to make the keywords
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ */
+ function set_keyword_group_style($key, $style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['KEYWORDS'][$key] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['KEYWORDS'][$key] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for a keyword group
+ *
+ * @param int The key of the keyword group to turn on or off
+ * @param boolean Whether to turn highlighting for that group on or off
+ * @since 1.0.0
+ */
+ function set_keyword_group_highlighting($key, $flag = true) {
+ $this->lexic_permissions['KEYWORDS'][$key] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the styles for comment groups. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param int The key of the comment group to change the styles of
+ * @param string The style to make the comments
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ */
+ function set_comments_style($key, $style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['COMMENTS'][$key] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['COMMENTS'][$key] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for comment groups
+ *
+ * @param int The key of the comment group to turn on or off
+ * @param boolean Whether to turn highlighting for that group on or off
+ * @since 1.0.0
+ */
+ function set_comments_highlighting($key, $flag = true) {
+ $this->lexic_permissions['COMMENTS'][$key] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the styles for escaped characters. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param string The style to make the escape characters
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ */
+ function set_escape_characters_style($style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['ESCAPE_CHAR'][0] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['ESCAPE_CHAR'][0] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for escaped characters
+ *
+ * @param boolean Whether to turn highlighting for escape characters on or off
+ * @since 1.0.0
+ */
+ function set_escape_characters_highlighting($flag = true) {
+ $this->lexic_permissions['ESCAPE_CHAR'] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the styles for brackets. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * This method is DEPRECATED: use set_symbols_style instead.
+ * This method will be removed in 1.2.X
+ *
+ * @param string The style to make the brackets
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ * @deprecated In favour of set_symbols_style
+ */
+ function set_brackets_style($style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['BRACKETS'][0] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['BRACKETS'][0] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for brackets
+ *
+ * This method is DEPRECATED: use set_symbols_highlighting instead.
+ * This method will be remove in 1.2.X
+ *
+ * @param boolean Whether to turn highlighting for brackets on or off
+ * @since 1.0.0
+ * @deprecated In favour of set_symbols_highlighting
+ */
+ function set_brackets_highlighting($flag) {
+ $this->lexic_permissions['BRACKETS'] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the styles for symbols. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param string The style to make the symbols
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @param int Tells the group of symbols for which style should be set.
+ * @since 1.0.1
+ */
+ function set_symbols_style($style, $preserve_defaults = false, $group = 0) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['SYMBOLS'][$group] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['SYMBOLS'][$group] .= $style;
+ }
+ // For backward compatibility
+ if(0 == $group) {
+ $this->set_brackets_style ($style, $preserve_defaults);
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for symbols
+ *
+ * @param boolean Whether to turn highlighting for symbols on or off
+ * @since 1.0.0
+ */
+ function set_symbols_highlighting($flag) {
+ $this->lexic_permissions['SYMBOLS'] = ($flag) ? true : false;
+ // For backward compatibility
+ $this->set_brackets_highlighting ($flag);
+ }
+
+ /**
+ * Sets the styles for strings. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param string The style to make the escape characters
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ */
+ function set_strings_style($style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['STRINGS'][0] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['STRINGS'][0] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for strings
+ *
+ * @param boolean Whether to turn highlighting for strings on or off
+ * @since 1.0.0
+ */
+ function set_strings_highlighting($flag) {
+ $this->lexic_permissions['STRINGS'] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the styles for numbers. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param string The style to make the numbers
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ */
+ function set_numbers_style($style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['NUMBERS'][0] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['NUMBERS'][0] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for numbers
+ *
+ * @param boolean Whether to turn highlighting for numbers on or off
+ * @since 1.0.0
+ */
+ function set_numbers_highlighting($flag) {
+ $this->lexic_permissions['NUMBERS'] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the styles for methods. $key is a number that references the
+ * appropriate "object splitter" - see the language file for the language
+ * you are highlighting to get this number. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param int The key of the object splitter to change the styles of
+ * @param string The style to make the methods
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ */
+ function set_methods_style($key, $style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['METHODS'][$key] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['METHODS'][$key] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for methods
+ *
+ * @param boolean Whether to turn highlighting for methods on or off
+ * @since 1.0.0
+ */
+ function set_methods_highlighting($flag) {
+ $this->lexic_permissions['METHODS'] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets the styles for regexps. If $preserve_defaults is
+ * true, then styles are merged with the default styles, with the
+ * user defined styles having priority
+ *
+ * @param string The style to make the regular expression matches
+ * @param boolean Whether to merge the new styles with the old or just
+ * to overwrite them
+ * @since 1.0.0
+ */
+ function set_regexps_style($key, $style, $preserve_defaults = false) {
+ if (!$preserve_defaults) {
+ $this->language_data['STYLES']['REGEXPS'][$key] = $style;
+ }
+ else {
+ $this->language_data['STYLES']['REGEXPS'][$key] .= $style;
+ }
+ }
+
+ /**
+ * Turns highlighting on/off for regexps
+ *
+ * @param int The key of the regular expression group to turn on or off
+ * @param boolean Whether to turn highlighting for the regular expression group on or off
+ * @since 1.0.0
+ */
+ function set_regexps_highlighting($key, $flag) {
+ $this->lexic_permissions['REGEXPS'][$key] = ($flag) ? true : false;
+ }
+
+ /**
+ * Sets whether a set of keywords are checked for in a case sensitive manner
+ *
+ * @param int The key of the keyword group to change the case sensitivity of
+ * @param boolean Whether to check in a case sensitive manner or not
+ * @since 1.0.0
+ */
+ function set_case_sensitivity($key, $case) {
+ $this->language_data['CASE_SENSITIVE'][$key] = ($case) ? true : false;
+ }
+
+ /**
+ * Sets the case that keywords should use when found. Use the constants:
+ *
+ * - GESHI_CAPS_NO_CHANGE: leave keywords as-is
+ * - GESHI_CAPS_UPPER: convert all keywords to uppercase where found
+ * - GESHI_CAPS_LOWER: convert all keywords to lowercase where found
+ *
+ * @param int A constant specifying what to do with matched keywords
+ * @since 1.0.1
+ */
+ function set_case_keywords($case) {
+ if(in_array($case, array(
+ GESHI_CAPS_NO_CHANGE, GESHI_CAPS_UPPER, GESHI_CAPS_LOWER))) {
+ $this->language_data['CASE_KEYWORDS'] = $case;
+ }
+ }
+
+ /**
+ * Sets how many spaces a tab is substituted for
+ *
+ * Widths below zero are ignored
+ *
+ * @param int The tab width
+ * @since 1.0.0
+ */
+ function set_tab_width($width) {
+ $this->tab_width = intval($width);
+ //Check if it fit's the constraints:
+ if($this->tab_width < 1) {
+ //Return it to the default
+ $this->tab_width = 8;
+ }
+ }
+
+ /**
+ * Sets whether or not to use tab-stop width specifed by language
+ *
+ * @param boolean Whether to use language-specific tab-stop widths
+ * @since 1.0.7.20
+ */
+ function set_use_language_tab_width($use) {
+ $this->use_language_tab_width = (bool) $use;
+ }
+
+ /**
+ * Returns the tab width to use, based on the current language and user
+ * preference
+ *
+ * @return int Tab width
+ * @since 1.0.7.20
+ */
+ function get_real_tab_width() {
+ if (!$this->use_language_tab_width || !isset($this->language_data['TAB_WIDTH'])) {
+ return $this->tab_width;
+ } else {
+ return $this->language_data['TAB_WIDTH'];
+ }
+ }
+
+ /**
+ * Enables/disables strict highlighting. Default is off, calling this
+ * method without parameters will turn it on. See documentation
+ * for more details on strict mode and where to use it.
+ *
+ * @param boolean Whether to enable strict mode or not
+ * @since 1.0.0
+ */
+ function enable_strict_mode($mode = true) {
+ if (GESHI_MAYBE == $this->language_data['STRICT_MODE_APPLIES']) {
+ $this->strict_mode = ($mode) ? true : false;
+ }
+ }
+
+ /**
+ * Disables all highlighting
+ *
+ * @since 1.0.0
+ * @todo Rewrite with array traversal
+ * @deprecated In favour of enable_highlighting
+ */
+ function disable_highlighting() {
+ $this->enable_highlighting(false);
+ }
+
+ /**
+ * Enables all highlighting
+ *
+ * The optional flag parameter was added in version 1.0.7.21 and can be used
+ * to enable (true) or disable (false) all highlighting.
+ *
+ * @since 1.0.0
+ * @param boolean A flag specifying whether to enable or disable all highlighting
+ * @todo Rewrite with array traversal
+ */
+ function enable_highlighting($flag = true) {
+ $flag = $flag ? true : false;
+ foreach ($this->lexic_permissions as $key => $value) {
+ if (is_array($value)) {
+ foreach ($value as $k => $v) {
+ $this->lexic_permissions[$key][$k] = $flag;
+ }
+ }
+ else {
+ $this->lexic_permissions[$key] = $flag;
+ }
+ }
+ // Context blocks
+ $this->enable_important_blocks = $flag;
+ }
+
+ /**
+ * Given a file extension, this method returns either a valid geshi language
+ * name, or the empty string if it couldn't be found
+ *
+ * @param string The extension to get a language name for
+ * @param array A lookup array to use instead of the default one
+ * @since 1.0.5
+ * @todo Re-think about how this method works (maybe make it private and/or make it
+ * a extension->lang lookup?)
+ * @todo static?
+ */
+ function get_language_name_from_extension( $extension, $lookup = array() ) {
+ if ( !is_array($lookup) || !count($lookup)) {
+ $lookup = array(
+ 'actionscript' => array('as'),
+ 'ada' => array('a', 'ada', 'adb', 'ads'),
+ 'apache' => array('conf'),
+ 'asm' => array('ash', 'asm'),
+ 'asp' => array('asp'),
+ 'bash' => array('sh'),
+ 'c' => array('c', 'h'),
+ 'c_mac' => array('c', 'h'),
+ 'caddcl' => array(),
+ 'cadlisp' => array(),
+ 'cdfg' => array('cdfg'),
+ 'cpp' => array('cpp', 'h', 'hpp'),
+ 'csharp' => array(),
+ 'css' => array('css'),
+ 'delphi' => array('dpk', 'dpr', 'pp', 'pas'),
+ 'dos' => array('bat', 'cmd'),
+ 'html4strict' => array('html', 'htm'),
+ 'java' => array('java'),
+ 'javascript' => array('js'),
+ 'lisp' => array('lisp'),
+ 'lua' => array('lua'),
+ 'mpasm' => array(),
+ 'nsis' => array(),
+ 'objc' => array(),
+ 'oobas' => array(),
+ 'oracle8' => array(),
+ 'pascal' => array(),
+ 'perl' => array('pl', 'pm'),
+ 'php' => array('php', 'php5', 'phtml', 'phps'),
+ 'python' => array('py'),
+ 'qbasic' => array('bi'),
+ 'sas' => array('sas'),
+ 'smarty' => array(),
+ 'vb' => array('bas'),
+ 'vbnet' => array(),
+ 'visualfoxpro' => array(),
+ 'xml' => array('xml')
+ );
+ }
+
+ foreach ($lookup as $lang => $extensions) {
+ foreach ($extensions as $ext) {
+ if ($ext == $extension) {
+ return $lang;
+ }
+ }
+ }
+ return '';
+ }
+
+ /**
+ * Given a file name, this method loads its contents in, and attempts
+ * to set the language automatically. An optional lookup table can be
+ * passed for looking up the language name. If not specified a default
+ * table is used
+ *
+ * The language table is in the form
+ * <pre>array(
+ * 'lang_name' => array('extension', 'extension', ...),
+ * 'lang_name' ...
+ * );</pre>
+ *
+ * @param string The filename to load the source from
+ * @param array A lookup array to use instead of the default one
+ * @todo Complete rethink of this and above method
+ * @since 1.0.5
+ */
+ function load_from_file($file_name, $lookup = array()) {
+ if (is_readable($file_name)) {
+ $this->set_source(implode('', file($file_name)));
+ $this->set_language($this->get_language_name_from_extension(substr(strrchr($file_name, '.'), 1), $lookup));
+ }
+ else {
+ $this->error = GESHI_ERROR_FILE_NOT_READABLE;
+ }
+ }
+
+ /**
+ * Adds a keyword to a keyword group for highlighting
+ *
+ * @param int The key of the keyword group to add the keyword to
+ * @param string The word to add to the keyword group
+ * @since 1.0.0
+ */
+ function add_keyword($key, $word) {
+ $this->language_data['KEYWORDS'][$key][] = $word;
+ }
+
+ /**
+ * Removes a keyword from a keyword group
+ *
+ * @param int The key of the keyword group to remove the keyword from
+ * @param string The word to remove from the keyword group
+ * @since 1.0.0
+ */
+ function remove_keyword($key, $word) {
+ $this->language_data['KEYWORDS'][$key] =
+ array_diff($this->language_data['KEYWORDS'][$key], array($word));
+ }
+
+ /**
+ * Creates a new keyword group
+ *
+ * @param int The key of the keyword group to create
+ * @param string The styles for the keyword group
+ * @param boolean Whether the keyword group is case sensitive ornot
+ * @param array The words to use for the keyword group
+ * @since 1.0.0
+ */
+ function add_keyword_group($key, $styles, $case_sensitive = true, $words = array()) {
+ $words = (array) $words;
+ $this->language_data['KEYWORDS'][$key] = $words;
+ $this->lexic_permissions['KEYWORDS'][$key] = true;
+ $this->language_data['CASE_SENSITIVE'][$key] = $case_sensitive;
+ $this->language_data['STYLES']['KEYWORDS'][$key] = $styles;
+ }
+
+ /**
+ * Removes a keyword group
+ *
+ * @param int The key of the keyword group to remove
+ * @since 1.0.0
+ */
+ function remove_keyword_group ($key) {
+ unset($this->language_data['KEYWORDS'][$key]);
+ unset($this->lexic_permissions['KEYWORDS'][$key]);
+ unset($this->language_data['CASE_SENSITIVE'][$key]);
+ unset($this->language_data['STYLES']['KEYWORDS'][$key]);
+ }
+
+ /**
+ * Sets the content of the header block
+ *
+ * @param string The content of the header block
+ * @since 1.0.2
+ */
+ function set_header_content($content) {
+ $this->header_content = $content;
+ }
+
+ /**
+ * Sets the content of the footer block
+ *
+ * @param string The content of the footer block
+ * @since 1.0.2
+ */
+ function set_footer_content($content) {
+ $this->footer_content = $content;
+ }
+
+ /**
+ * Sets the style for the header content
+ *
+ * @param string The style for the header content
+ * @since 1.0.2
+ */
+ function set_header_content_style($style) {
+ $this->header_content_style = $style;
+ }
+
+ /**
+ * Sets the style for the footer content
+ *
+ * @param string The style for the footer content
+ * @since 1.0.2
+ */
+ function set_footer_content_style($style) {
+ $this->footer_content_style = $style;
+ }
+
+ /**
+ * Sets whether to force a surrounding block around
+ * the highlighted code or not
+ *
+ * @param boolean Tells whether to enable or disable this feature
+ * @since 1.0.7.20
+ */
+ function enable_inner_code_block($flag) {
+ $this->force_code_block = (bool)$flag;
+ }
+
+ /**
+ * Sets the base URL to be used for keywords
+ *
+ * @param int The key of the keyword group to set the URL for
+ * @param string The URL to set for the group. If {FNAME} is in
+ * the url somewhere, it is replaced by the keyword
+ * that the URL is being made for
+ * @since 1.0.2
+ */
+ function set_url_for_keyword_group($group, $url) {
+ $this->language_data['URLS'][$group] = $url;
+ }
+
+ /**
+ * Sets styles for links in code
+ *
+ * @param int A constant that specifies what state the style is being
+ * set for - e.g. :hover or :visited
+ * @param string The styles to use for that state
+ * @since 1.0.2
+ */
+ function set_link_styles($type, $styles) {
+ $this->link_styles[$type] = $styles;
+ }
+
+ /**
+ * Sets the target for links in code
+ *
+ * @param string The target for links in the code, e.g. _blank
+ * @since 1.0.3
+ */
+ function set_link_target($target) {
+ if (!$target) {
+ $this->link_target = '';
+ }
+ else {
+ $this->link_target = ' target="' . $target . '" ';
+ }
+ }
+
+ /**
+ * Sets styles for important parts of the code
+ *
+ * @param string The styles to use on important parts of the code
+ * @since 1.0.2
+ */
+ function set_important_styles($styles) {
+ $this->important_styles = $styles;
+ }
+
+ /**
+ * Sets whether context-important blocks are highlighted
+ *
+ * @param boolean Tells whether to enable or disable highlighting of important blocks
+ * @todo REMOVE THIS SHIZ FROM GESHI!
+ * @deprecated
+ * @since 1.0.2
+ */
+ function enable_important_blocks($flag) {
+ $this->enable_important_blocks = ( $flag ) ? true : false;
+ }
+
+ /**
+ * Whether CSS IDs should be added to each line
+ *
+ * @param boolean If true, IDs will be added to each line.
+ * @since 1.0.2
+ */
+ function enable_ids($flag = true) {
+ $this->add_ids = ($flag) ? true : false;
+ }
+
+ /**
+ * Specifies which lines to highlight extra
+ *
+ * The extra style parameter was added in 1.0.7.21.
+ *
+ * @param mixed An array of line numbers to highlight, or just a line
+ * number on its own.
+ * @param string A string specifying the style to use for this line
+ * @since 1.0.2
+ * @todo Some data replication here that could be cut down on
+ */
+ function highlight_lines_extra($lines, $style = null) {
+ if (is_array($lines)) {
+ foreach ($lines as $line) {
+ $this->highlight_lines_extra(line, $style);
+ }
+ }
+ else {
+ $this->highlight_extra_lines[intval($lines)] = intval($lines);
+ if ($style != null) {
+ $this->highlight_extra_lines_styles[intval($lines)] = $style;
+ } else {
+ unset($this->highlight_extra_lines_styles[intval($lines)]);
+ }
+ }
+ }
+
+ /**
+ * Sets the style for extra-highlighted lines
+ *
+ * @param string The style for extra-highlighted lines
+ * @since 1.0.2
+ */
+ function set_highlight_lines_extra_style($styles) {
+ $this->highlight_extra_lines_style = $styles;
+ }
+
+ /**
+ * Sets the line-ending
+ *
+ * @param string The new line-ending
+ * @since 1.0.2
+ */
+ function set_line_ending($line_ending) {
+ $this->line_ending = (string)$line_ending;
+ }
+
+ /**
+ * Sets what number line numbers should start at. Should
+ * be a positive integer, and will be converted to one.
+ *
+ * <b>Warning:</b> Using this method will add the "start"
+ * attribute to the <ol> that is used for line numbering.
+ * This is <b>not</b> valid XHTML strict, so if that's what you
+ * care about then don't use this method. Firefox is getting
+ * support for the CSS method of doing this in 1.1 and Opera
+ * has support for the CSS method, but (of course) IE doesn't
+ * so it's not worth doing it the CSS way yet.
+ *
+ * @param int The number to start line numbers at
+ * @since 1.0.2
+ */
+ function start_line_numbers_at($number) {
+ $this->line_numbers_start = abs(intval($number));
+ }
+
+ /**
+ * Sets the encoding used for htmlspecialchars(), for international
+ * support.
+ *
+ * NOTE: This is not needed for now because htmlspecialchars() is not
+ * being used (it has a security hole in PHP4 that has not been patched).
+ * Maybe in a future version it may make a return for speed reasons, but
+ * I doubt it.
+ *
+ * @param string The encoding to use for the source
+ * @since 1.0.3
+ */
+ function set_encoding($encoding) {
+ if ($encoding) {
+ $this->encoding = $encoding;
+ }
+ }
+
+ /**
+ * Turns linking of keywords on or off.
+ *
+ * @param boolean If true, links will be added to keywords
+ * @since 1.0.2
+ */
+ function enable_keyword_links($enable = true) {
+ $this->keyword_links = ($enable) ? true : false;
+ }
+
+ /**
+ * Returns the code in $this->source, highlighted and surrounded by the
+ * nessecary HTML.
+ *
+ * This should only be called ONCE, cos it's SLOW! If you want to highlight
+ * the same source multiple times, you're better off doing a whole lot of
+ * str_replaces to replace the <span>s
+ *
+ * @since 1.0.0
+ */
+ function parse_code () {
+ // Start the timer
+ $start_time = microtime();
+
+ // Firstly, if there is an error, we won't highlight
+ if ($this->error) {
+ $result = GeSHi::hsc($this->source);
+ // Timing is irrelevant
+ $this->set_time($start_time, $start_time);
+ return $this->finalise($result);
+ }
+
+ // Replace all newlines to a common form.
+ $code = str_replace("\r\n", "\n", $this->source);
+ $code = str_replace("\r", "\n", $code);
+ // Add spaces for regular expression matching and line numbers
+ $code = "\n" . $code . "\n";
+
+ // Initialise various stuff
+ $length = strlen($code);
+ $STRING_OPEN = '';
+ $CLOSE_STRING = false;
+ $ESCAPE_CHAR_OPEN = false;
+ $COMMENT_MATCHED = false;
+ // Turn highlighting on if strict mode doesn't apply to this language
+ $HIGHLIGHTING_ON = ( !$this->strict_mode ) ? true : '';
+ // Whether to highlight inside a block of code
+ $HIGHLIGHT_INSIDE_STRICT = false;
+ $HARDQUOTE_OPEN = false;
+ $STRICTATTRS = '';
+ $stuff_to_parse = '';
+ $result = '';
+
+ // "Important" selections are handled like multiline comments
+ // @todo GET RID OF THIS SHIZ
+ if ($this->enable_important_blocks) {
+ $this->language_data['COMMENT_MULTI'][GESHI_START_IMPORTANT] = GESHI_END_IMPORTANT;
+ }
+
+ if ($this->strict_mode) {
+ // Break the source into bits. Each bit will be a portion of the code
+ // within script delimiters - for example, HTML between < and >
+ $parts = array(0 => array(0 => ''));
+ $k = 0;
+ for ($i = 0; $i < $length; $i++) {
+ $char = substr($code, $i, 1);
+ if (!$HIGHLIGHTING_ON) {
+ foreach ($this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters) {
+ foreach ($delimiters as $open => $close) {
+ // Get the next little bit for this opening string
+ $check = substr($code, $i, strlen($open));
+ // If it matches...
+ if ($check == $open) {
+ // We start a new block with the highlightable
+ // code in it
+ $HIGHLIGHTING_ON = $open;
+ $i += strlen($open) - 1;
+ $char = $open;
+ $parts[++$k][0] = $char;
+
+ // No point going around again...
+ break(2);
+ }
+ }
+ }
+ }
+ else {
+ foreach ($this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters) {
+ foreach ($delimiters as $open => $close) {
+ if ($open == $HIGHLIGHTING_ON) {
+ // Found the closing tag
+ break(2);
+ }
+ }
+ }
+ // We check code from our current position BACKWARDS. This is so
+ // the ending string for highlighting can be included in the block
+ $check = substr($code, $i - strlen($close) + 1, strlen($close));
+ if ($check == $close) {
+ $HIGHLIGHTING_ON = '';
+ // Add the string to the rest of the string for this part
+ $parts[$k][1] = ( isset($parts[$k][1]) ) ? $parts[$k][1] . $char : $char;
+ $parts[++$k][0] = '';
+ $char = '';
+ }
+ }
+ $parts[$k][1] = ( isset($parts[$k][1]) ) ? $parts[$k][1] . $char : $char;
+ }
+ $HIGHLIGHTING_ON = '';
+ }
+ else {
+ // Not strict mode - simply dump the source into
+ // the array at index 1 (the first highlightable block)
+ $parts = array(
+ 1 => array(
+ 0 => '',
+ 1 => $code
+ )
+ );
+ }
+
+ // Now we go through each part. We know that even-indexed parts are
+ // code that shouldn't be highlighted, and odd-indexed parts should
+ // be highlighted
+ foreach ($parts as $key => $data) {
+ $part = $data[1];
+ // If this block should be highlighted...
+ if ($key % 2) {
+ if ($this->strict_mode) {
+ // Find the class key for this block of code
+ foreach ($this->language_data['SCRIPT_DELIMITERS'] as $script_key => $script_data) {
+ foreach ($script_data as $open => $close) {
+ if ($data[0] == $open) {
+ break(2);
+ }
+ }
+ }
+
+ if ($this->language_data['STYLES']['SCRIPT'][$script_key] != '' &&
+ $this->lexic_permissions['SCRIPT']) {
+ // Add a span element around the source to
+ // highlight the overall source block
+ if (!$this->use_classes &&
+ $this->language_data['STYLES']['SCRIPT'][$script_key] != '') {
+ $attributes = ' style="' . $this->language_data['STYLES']['SCRIPT'][$script_key] . '"';
+ }
+ else {
+ $attributes = ' class="sc' . $script_key . '"';
+ }
+ $result .= "<span$attributes>";
+ $STRICTATTRS = $attributes;
+ }
+ }
+
+ if (!$this->strict_mode || $this->language_data['HIGHLIGHT_STRICT_BLOCK'][$script_key]) {
+ // Now, highlight the code in this block. This code
+ // is really the engine of GeSHi (along with the method
+ // parse_non_string_part).
+ $length = strlen($part);
+ for ($i = 0; $i < $length; $i++) {
+ // Get the next char
+ $char = substr($part, $i, 1);
+ $hq = isset($this->language_data['HARDQUOTE']) ? $this->language_data['HARDQUOTE'][0] : false;
+ // Is this char the newline and line numbers being used?
+ if (($this->line_numbers != GESHI_NO_LINE_NUMBERS
+ || count($this->highlight_extra_lines) > 0)
+ && $char == "\n") {
+ // If so, is there a string open? If there is, we should end it before
+ // the newline and begin it again (so when <li>s are put in the source
+ // remains XHTML compliant)
+ // note to self: This opens up possibility of config files specifying
+ // that languages can/cannot have multiline strings???
+ if ($STRING_OPEN) {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
+ }
+ else {
+ $attributes = ' class="st0"';
+ }
+ $char = '</span>' . $char . "<span$attributes>";
+ }
+ }
+ else if ($char == $STRING_OPEN) {
+ // A match of a string delimiter
+ if (($this->lexic_permissions['ESCAPE_CHAR'] && $ESCAPE_CHAR_OPEN) ||
+ ($this->lexic_permissions['STRINGS'] && !$ESCAPE_CHAR_OPEN)) {
+ $char = GeSHi::hsc($char) . '</span>';
+ }
+ $escape_me = false;
+ if ($HARDQUOTE_OPEN) {
+ if ($ESCAPE_CHAR_OPEN) {
+ $escape_me = true;
+ }
+ else {
+ foreach ($this->language_data['HARDESCAPE'] as $hardesc) {
+ if (substr($part, $i, strlen($hardesc)) == $hardesc) {
+ $escape_me = true;
+ break;
+ }
+ }
+ }
+ }
+
+ if (!$ESCAPE_CHAR_OPEN) {
+ $STRING_OPEN = '';
+ $CLOSE_STRING = true;
+ }
+ if (!$escape_me) {
+ $HARDQUOTE_OPEN = false;
+ }
+ $ESCAPE_CHAR_OPEN = false;
+ }
+ else if (in_array($char, $this->language_data['QUOTEMARKS']) &&
+ ($STRING_OPEN == '') && $this->lexic_permissions['STRINGS']) {
+ // The start of a new string
+ $STRING_OPEN = $char;
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
+ }
+ else {
+ $attributes = ' class="st0"';
+ }
+ $char = "<span$attributes>" . GeSHi::hsc($char);
+
+ $result .= $this->parse_non_string_part( $stuff_to_parse );
+ $stuff_to_parse = '';
+ }
+ else if ($hq && substr($part, $i, strlen($hq)) == $hq &&
+ ($STRING_OPEN == '') && $this->lexic_permissions['STRINGS']) {
+ // The start of a hard quoted string
+ $STRING_OPEN = $this->language_data['HARDQUOTE'][1];
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
+ }
+ else {
+ $attributes = ' class="st0"';
+ }
+ $char = "<span$attributes>" . $hq;
+ $i += strlen($hq) - 1;
+ $HARDQUOTE_OPEN = true;
+ $result .= $this->parse_non_string_part($stuff_to_parse);
+ $stuff_to_parse = '';
+ }
+ else if ($char == $this->language_data['ESCAPE_CHAR'] && $STRING_OPEN != '') {
+ // An escape character
+ if (!$ESCAPE_CHAR_OPEN) {
+ $ESCAPE_CHAR_OPEN = !$HARDQUOTE_OPEN; // true unless $HARDQUOTE_OPEN
+ if ($HARDQUOTE_OPEN) {
+ foreach ($this->language_data['HARDESCAPE'] as $hard) {
+ if (substr($part, $i, strlen($hard)) == $hard) {
+ $ESCAPE_CHAR_OPEN = true;
+ break;
+ }
+ }
+ }
+ if ($ESCAPE_CHAR_OPEN && $this->lexic_permissions['ESCAPE_CHAR']) {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['ESCAPE_CHAR'][0] . '"';
+ }
+ else {
+ $attributes = ' class="es0"';
+ }
+ $char = "<span$attributes>" . $char;
+ if (substr($code, $i + 1, 1) == "\n") {
+ // escaping a newline, what's the point in putting the span around
+ // the newline? It only causes hassles when inserting line numbers
+ $char .= '</span>';
+ $ESCAPE_CHAR_OPEN = false;
+ }
+ }
+ }
+ else {
+ $ESCAPE_CHAR_OPEN = false;
+ if ($this->lexic_permissions['ESCAPE_CHAR']) {
+ $char .= '</span>';
+ }
+ }
+ }
+ else if ($ESCAPE_CHAR_OPEN) {
+ if ($this->lexic_permissions['ESCAPE_CHAR']) {
+ $char .= '</span>';
+ }
+ $ESCAPE_CHAR_OPEN = false;
+ $test_str = $char;
+ }
+ else if ($STRING_OPEN == '') {
+ // Is this a multiline comment?
+ foreach ($this->language_data['COMMENT_MULTI'] as $open => $close) {
+ $com_len = strlen($open);
+ $test_str = substr( $part, $i, $com_len );
+ $test_str_match = $test_str;
+ if (strtolower($open) == strtolower($test_str)) {
+ $COMMENT_MATCHED = true;
+ //@todo If remove important do remove here
+ if ($this->lexic_permissions['COMMENTS']['MULTI'] ||
+ $test_str == GESHI_START_IMPORTANT) {
+ if ($test_str != GESHI_START_IMPORTANT) {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['COMMENTS']['MULTI'] . '"';
+ }
+ else {
+ $attributes = ' class="coMULTI"';
+ }
+ $test_str = "<span$attributes>" . GeSHi::hsc($test_str);
+ }
+ else {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->important_styles . '"';
+ }
+ else {
+ $attributes = ' class="imp"';
+ }
+ // We don't include the start of the comment if it's an
+ // "important" part
+ $test_str = "<span$attributes>";
+ }
+ }
+ else {
+ $test_str = GeSHi::hsc($test_str);
+ }
+
+ $close_pos = strpos( $part, $close, $i + strlen($close) );
+
+ $oops = false;
+ if ($close_pos === false) {
+ $close_pos = strlen($part);
+ $oops = true;
+ }
+ else {
+ $close_pos -= ($com_len - strlen($close));
+ }
+
+ // Short-cut through all the multiline code
+ $rest_of_comment = GeSHi::hsc(substr($part, $i + $com_len, $close_pos - $i));
+ if (($this->lexic_permissions['COMMENTS']['MULTI'] ||
+ $test_str_match == GESHI_START_IMPORTANT) &&
+ ($this->line_numbers != GESHI_NO_LINE_NUMBERS ||
+ count($this->highlight_extra_lines) > 0)) {
+ // strreplace to put close span and open span around multiline newlines
+ $test_str .= str_replace(
+ "\n", "</span>\n<span$attributes>",
+ str_replace("\n ", "\n ", $rest_of_comment)
+ );
+ }
+ else {
+ $test_str .= $rest_of_comment;
+ }
+
+ if ($this->lexic_permissions['COMMENTS']['MULTI'] ||
+ $test_str_match == GESHI_START_IMPORTANT) {
+ $test_str .= '</span>';
+ if ($oops) {
+ $test_str .= "\n";
+ }
+ }
+ $i = $close_pos + $com_len - 1;
+ // parse the rest
+ $result .= $this->parse_non_string_part($stuff_to_parse);
+ $stuff_to_parse = '';
+ break;
+ }
+ }
+ // If we haven't matched a multiline comment, try single-line comments
+ if (!$COMMENT_MATCHED) {
+ foreach ($this->language_data['COMMENT_SINGLE'] as $comment_key => $comment_mark) {
+ $com_len = strlen($comment_mark);
+ $test_str = substr($part, $i, $com_len);
+ if ($this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS]) {
+ $match = ($comment_mark == $test_str);
+ }
+ else {
+ $match = (strtolower($comment_mark) == strtolower($test_str));
+ }
+ //This check will find special variables like $# in bash or compiler directives of Delphi beginning {$
+ if($match) {
+ $disallowed_before = "";
+ $disallowed_after = "";
+
+ if(isset($this->language_data['PARSER_CONTROL'])) {
+ if (isset($this->language_data['PARSER_CONTROL']['COMMENTS'])) {
+ if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE'])) {
+ $disallowed_before = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE'];
+ }
+ if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER'])) {
+ $disallowed_after = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER'];
+ }
+ }
+ }
+
+ $match = $match && (!strlen($disallowed_before) || ((false === strpos($disallowed_before, substr($part, $i-1, 1))) && (0!=$i)));
+ $match = $match && (!strlen($disallowed_after) || ((false === strpos($disallowed_after, substr($part, $i+1, 1))) && (strlen($part)-1>$i)));
+ }
+ if ($match) {
+ $COMMENT_MATCHED = true;
+ if ($this->lexic_permissions['COMMENTS'][$comment_key]) {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['COMMENTS'][$comment_key] . '"';
+ }
+ else {
+ $attributes = ' class="co' . $comment_key . '"';
+ }
+ $test_str = "<span$attributes>" . GeSHi::hsc($this->change_case($test_str));
+ }
+ else {
+ $test_str = GeSHi::hsc($test_str);
+ }
+ $close_pos = strpos($part, "\n", $i);
+ $oops = false;
+ if ($close_pos === false) {
+ $close_pos = strlen($part);
+ $oops = true;
+ }
+ $test_str .= GeSHi::hsc(substr($part, $i + $com_len, $close_pos - $i - $com_len));
+ if ($this->lexic_permissions['COMMENTS'][$comment_key]) {
+ $test_str .= "</span>";
+ }
+ // Take into account that the comment might be the last in the source
+ if (!$oops) {
+ $test_str .= "\n";
+ }
+ $i = $close_pos;
+ // parse the rest
+ $result .= $this->parse_non_string_part($stuff_to_parse);
+ $stuff_to_parse = '';
+ break;
+ }
+ }
+ }
+ }
+ else if ($STRING_OPEN != '') {
+ // Otherwise, convert it to HTML form
+ if (strtolower($this->encoding) == 'utf-8') {
+ //only escape <128 (we don't want to break multibyte chars)
+ if (ord($char) < 128) {
+ $char = GeSHi::hsc($char);
+ }
+ }
+ else {
+ //encode everthing
+ $char = GeSHi::hsc($char);
+ }
+ }
+ // Where are we adding this char?
+ if (!$COMMENT_MATCHED) {
+ if (($STRING_OPEN == '') && !$CLOSE_STRING) {
+ $stuff_to_parse .= $char;
+ }
+ else {
+ $result .= $char;
+ $CLOSE_STRING = false;
+ }
+ }
+ else {
+ $result .= $test_str;
+ $COMMENT_MATCHED = false;
+ }
+ }
+ // Parse the last bit
+ $result .= $this->parse_non_string_part($stuff_to_parse);
+ $stuff_to_parse = '';
+ }
+ else {
+ if ($STRICTATTRS != '') {
+ $part = str_replace("\n", "</span>\n<span$STRICTATTRS>", GeSHi::hsc($part));
+ $STRICTATTRS = '';
+ }
+ $result .= $part;
+ }
+ // Close the <span> that surrounds the block
+ if ($this->strict_mode && $this->language_data['STYLES']['SCRIPT'][$script_key] != '' &&
+ $this->lexic_permissions['SCRIPT']) {
+ $result .= '</span>';
+ }
+ }
+ else {
+ // Else not a block to highlight
+ $result .= GeSHi::hsc($part);
+ }
+ }
+
+ // Parse the last stuff (redundant?)
+ $result .= $this->parse_non_string_part($stuff_to_parse);
+
+ // Lop off the very first and last spaces
+ $result = substr($result, 1, -1);
+
+ // Are we still in a string?
+ if ($STRING_OPEN) {
+ $result .= '</span>';
+ }
+
+ // We're finished: stop timing
+ $this->set_time($start_time, microtime());
+
+ return $this->finalise($result);
+ }
+
+ /**
+ * Swaps out spaces and tabs for HTML indentation. Not needed if
+ * the code is in a pre block...
+ *
+ * @param string The source to indent
+ * @return string The source with HTML indenting applied
+ * @since 1.0.0
+ * @access private
+ */
+ function indent($result) {
+ /// Replace tabs with the correct number of spaces
+ if (false !== strpos($result, "\t")) {
+ $lines = explode("\n", $result);
+ $tab_width = $this->get_real_tab_width();
+ foreach ($lines as $key => $line) {
+ if (false === strpos($line, "\t")) {
+ $lines[$key] = $line;
+ continue;
+ }
+
+ $pos = 0;
+ $length = strlen($line);
+ $result_line = '';
+
+ $IN_TAG = false;
+ for ($i = 0; $i < $length; $i++) {
+ $char = substr($line, $i, 1);
+ // Simple engine to work out whether we're in a tag.
+ // If we are we modify $pos. This is so we ignore HTML
+ // in the line and only workout the tab replacement
+ // via the actual content of the string
+ // This test could be improved to include strings in the
+ // html so that < or > would be allowed in user's styles
+ // (e.g. quotes: '<' '>'; or similar)
+ if ($IN_TAG && '>' == $char) {
+ $IN_TAG = false;
+ $result_line .= '>';
+ ++$pos;
+ }
+ else if (!$IN_TAG && '<' == $char) {
+ $IN_TAG = true;
+ $result_line .= '<';
+ ++$pos;
+ }
+ else if (!$IN_TAG && '&' == $char) {
+ $substr = substr($line, $i + 3, 4);
+ //$substr_5 = substr($line, 5, 1);
+ $posi = strpos($substr, ';');
+ if (false !== $posi) {
+ $pos += $posi + 3;
+ }
+ $result_line .= '&';
+ }
+ else if (!$IN_TAG && "\t" == $char) {
+ $str = '';
+ // OPTIMISE - move $strs out. Make an array:
+ // $tabs = array(
+ // 1 => ' ',
+ // 2 => ' ',
+ // 3 => ' ' etc etc
+ // to use instead of building a string every time
+ $strs = array(0 => ' ', 1 => ' ');
+ for ($k = 0; $k < ($tab_width - (($i - $pos) % $tab_width)); $k++) $str .= $strs[$k % 2];
+ $result_line .= $str;
+ $pos += ($i - $pos) % $tab_width + 1;
+
+ if (false === strpos($line, "\t", $i + 1)) {
+ $result_line .= substr($line, $i + 1);
+ break;
+ }
+ }
+ else if ($IN_TAG) {
+ ++$pos;
+ $result_line .= $char;
+ }
+ else {
+ $result_line .= $char;
+ //++$pos;
+ }
+ }
+ $lines[$key] = $result_line;
+ }
+ $result = implode("\n", $lines);
+ }
+ // Other whitespace
+ // BenBE: Fix to reduce the number of replacements to be done
+ $result = preg_replace('/^ /m', ' ', $result);
+ $result = str_replace(' ', ' ', $result);
+
+ if ($this->line_numbers == GESHI_NO_LINE_NUMBERS) {
+ if ($this->line_ending === null) {
+ $result = nl2br($result);
+ } else {
+ $result = str_replace("\n", $this->line_ending, $result);
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * Changes the case of a keyword for those languages where a change is asked for
+ *
+ * @param string The keyword to change the case of
+ * @return string The keyword with its case changed
+ * @since 1.0.0
+ * @access private
+ */
+ function change_case($instr) {
+ if ($this->language_data['CASE_KEYWORDS'] == GESHI_CAPS_UPPER) {
+ return strtoupper($instr);
+ }
+ else if ($this->language_data['CASE_KEYWORDS'] == GESHI_CAPS_LOWER) {
+ return strtolower($instr);
+ }
+ return $instr;
+ }
+
+ /**
+ * Adds a url to a keyword where needed.
+ *
+ * @param string The keyword to add the URL HTML to
+ * @param int What group the keyword is from
+ * @param boolean Whether to get the HTML for the start or end
+ * @return The HTML for either the start or end of the HTML <a> tag
+ * @since 1.0.2
+ * @access private
+ * @todo Get rid of ender
+ */
+ function add_url_to_keyword($keyword, $group, $start_or_end) {
+ if (!$this->keyword_links) {
+ // Keyword links have been disabled
+ return;
+ }
+
+ if (isset($this->language_data['URLS'][$group]) &&
+ $this->language_data['URLS'][$group] != '' &&
+ substr($keyword, 0, 5) != '</') {
+ // There is a base group for this keyword
+ if ($start_or_end == 'BEGIN') {
+ // HTML workaround... not good form (tm) but should work for 1.0.X
+ if ($keyword != '') {
+ // Old system: strtolower
+ //$keyword = ( $this->language_data['CASE_SENSITIVE'][$group] ) ? $keyword : strtolower($keyword);
+ // New system: get keyword from language file to get correct case
+ foreach ($this->language_data['KEYWORDS'][$group] as $word) {
+ if (strtolower($word) == strtolower($keyword)) {
+ break;
+ }
+ }
+ $word = ( substr($word, 0, 4) == '<' ) ? substr($word, 4) : $word;
+ $word = ( substr($word, -4) == '>' ) ? substr($word, 0, strlen($word) - 4) : $word;
+ if (!$word) return '';
+
+ return '<|UR1|"' .
+ str_replace(
+ array('{FNAME}', '{FNAMEL}', '{FNAMEU}', '.'),
+ array(GeSHi::hsc($word), GeSHi::hsc(strtolower($word)),
+ GeSHi::hsc(strtoupper($word)), '<DOT>'),
+ $this->language_data['URLS'][$group]
+ ) . '">';
+ }
+ return '';
+ // HTML fix. Again, dirty hackage...
+ }
+ else if (!($this->language == 'html4strict' && ('>' == $keyword || '<' == $keyword))) {
+ return '</a>';
+ }
+ }
+ }
+
+ /**
+ * Takes a string that has no strings or comments in it, and highlights
+ * stuff like keywords, numbers and methods.
+ *
+ * @param string The string to parse for keyword, numbers etc.
+ * @since 1.0.0
+ * @access private
+ * @todo BUGGY! Why? Why not build string and return?
+ */
+ function parse_non_string_part(&$stuff_to_parse) {
+ $stuff_to_parse = ' ' . GeSHi::hsc($stuff_to_parse);
+ $stuff_to_parse_pregquote = preg_quote($stuff_to_parse, '/');
+ $func = '$this->change_case';
+ $func2 = '$this->add_url_to_keyword';
+
+ //
+ // Regular expressions
+ //
+ foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
+ if ($this->lexic_permissions['REGEXPS'][$key]) {
+ if (is_array($regexp)) {
+ $stuff_to_parse = preg_replace(
+ "/" .
+ str_replace('/', '\/', $regexp[GESHI_SEARCH]) .
+ "/{$regexp[GESHI_MODIFIERS]}",
+ "{$regexp[GESHI_BEFORE]}<|!REG3XP$key!>{$regexp[GESHI_REPLACE]}|>{$regexp[GESHI_AFTER]}",
+ $stuff_to_parse
+ );
+ }
+ else {
+ $stuff_to_parse = preg_replace( "/(" . str_replace('/', '\/', $regexp) . ")/", "<|!REG3XP$key!>\\1|>", $stuff_to_parse);
+ }
+ }
+ }
+
+ //
+ // Highlight numbers. This regexp sucks... anyone with a regexp that WORKS
+ // here wins a cookie if they send it to me. At the moment there's two doing
+ // almost exactly the same thing, except the second one prevents a number
+ // being highlighted twice (eg <span...><span...>5</span></span>)
+ // Put /NUM!/ in for the styles, which gets replaced at the end.
+ //
+ // NEW ONE: Brice Bernard
+ //
+ if ($this->lexic_permissions['NUMBERS'] && preg_match('#[0-9]#', $stuff_to_parse )) {
+ $stuff_to_parse = preg_replace('/([-+]?\\b(?:[0-9]*\\.)?[0-9]+\\b)/', '<|/NUM!/>\\1|>', $stuff_to_parse);
+ }
+
+ // Highlight keywords
+ // if there is a couple of alpha symbols there *might* be a keyword
+ if (preg_match('#[a-zA-Z]{2,}#', $stuff_to_parse)) {
+ foreach ($this->language_data['KEYWORDS'] as $k => $keywordset) {
+ if ($this->lexic_permissions['KEYWORDS'][$k]) {
+ foreach ($keywordset as $keyword) {
+ $keyword = preg_quote($keyword, '/');
+ //
+ // This replacement checks the word is on it's own (except if brackets etc
+ // are next to it), then highlights it. We don't put the color=" for the span
+ // in just yet - otherwise languages with the keywords "color" or "or" have
+ // a fit.
+ //
+ if (false !== stristr($stuff_to_parse_pregquote, $keyword )) {
+ $stuff_to_parse .= ' ';
+ // Might make a more unique string for putting the number in soon
+ // Basically, we don't put the styles in yet because then the styles themselves will
+ // get highlighted if the language has a CSS keyword in it (like CSS, for example ;))
+ $styles = "/$k/";
+ $modifiers = ($this->language_data['CASE_SENSITIVE'][$k]) ? "e" : "ie";
+
+ $disallowed_before = "a-zA-Z0-9\$_\|\#;>|^";
+ $disallowed_after = "a-zA-Z0-9_<\|%\\-&";
+ if(isset($this->language_data['PARSER_CONTROL'])) {
+ if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'])) {
+ if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'])) {
+ $disallowed_before = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'];
+ }
+ if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'])) {
+ $disallowed_after = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'];
+ }
+ }
+ }
+ $stuff_to_parse = preg_replace(
+ "/([^$disallowed_before])($keyword)(?=[^$disallowed_after])/$modifiers",
+ "'\\1' . $func2('\\2', '$k', 'BEGIN') . '<|$styles>' . $func('\\2') . '|>' . $func2('\\2', '$k', 'END')",
+ $stuff_to_parse
+ );
+
+ $stuff_to_parse = substr($stuff_to_parse, 0, strlen($stuff_to_parse) - 1);
+ }
+ }
+ }
+ }
+ }
+
+ //
+ // Now that's all done, replace /[number]/ with the correct styles
+ //
+ foreach ($this->language_data['KEYWORDS'] as $k => $kws) {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['KEYWORDS'][$k] . '"';
+ }
+ else {
+ $attributes = ' class="kw' . $k . '"';
+ }
+ $stuff_to_parse = str_replace("/$k/", $attributes, $stuff_to_parse);
+ }
+
+ // Put number styles in
+ if (!$this->use_classes && $this->lexic_permissions['NUMBERS']) {
+ $attributes = ' style="' . $this->language_data['STYLES']['NUMBERS'][0] . '"';
+ }
+ else {
+ $attributes = ' class="nu0"';
+ }
+ $stuff_to_parse = str_replace('/NUM!/', $attributes, $stuff_to_parse);
+
+ //
+ // Highlight methods and fields in objects
+ //
+ if ($this->lexic_permissions['METHODS'] && $this->language_data['OOLANG']) {
+ foreach ($this->language_data['OBJECT_SPLITTERS'] as $key => $splitter) {
+ if (false !== stristr($stuff_to_parse, $splitter)) {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['METHODS'][$key] . '"';
+ }
+ else {
+ $attributes = ' class="me' . $key . '"';
+ }
+ $stuff_to_parse = preg_replace("/(" . preg_quote($this->language_data['OBJECT_SPLITTERS'][$key], 1) . "[\s]*)([a-zA-Z\*\(][a-zA-Z0-9_\*]*)/", "\\1<|$attributes>\\2|>", $stuff_to_parse);
+ }
+ }
+ }
+
+ //
+ // Highlight brackets. Yes, I've tried adding a semi-colon to this list.
+ // You try it, and see what happens ;)
+ // TODO: Fix lexic permissions not converting entities if shouldn't
+ // be highlighting regardless
+ //
+ if ($this->lexic_permissions['BRACKETS']) {
+ $code_entities_match = array('[', ']', '(', ')', '{', '}');
+ if (!$this->use_classes) {
+ $code_entities_replace = array(
+ '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">[|>',
+ '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">]|>',
+ '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">(|>',
+ '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">)|>',
+ '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">{|>',
+ '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">}|>',
+ );
+ }
+ else {
+ $code_entities_replace = array(
+ '<| class="br0">[|>',
+ '<| class="br0">]|>',
+ '<| class="br0">(|>',
+ '<| class="br0">)|>',
+ '<| class="br0">{|>',
+ '<| class="br0">}|>',
+ );
+ }
+ $stuff_to_parse = str_replace( $code_entities_match, $code_entities_replace, $stuff_to_parse );
+ }
+
+ //FIX for symbol highlighting ...
+ if($this->lexic_permissions['SYMBOLS']) {
+ //As this is a costy operation, we avoid doing it for multiple groups ...
+ //Instead we perform it for all symbols at once.
+ //
+ //For this to work, we need to reorganize the data arrays.
+ $symbol_data = $symbol_preg = array();
+ foreach($this->language_data['SYMBOLS'] as $key => $symbols) {
+ if(is_array($symbols)) {
+ foreach($symbols as $sym) {
+ if(!isset($symbol_data[$sym])) {
+ $symbol_data[GeSHi::hsc($sym)] = $key;
+ $symbol_preg[] = preg_quote(GeSHi::hsc($sym), '/');
+ }
+ }
+ } else {
+ if(!isset($symbol_data[$symbols])) {
+ $symbol_data[GeSHi::hsc($symbols)] = 0;
+ $symbol_preg[] = preg_quote(GESHI::hsc($symbols), '/');
+ }
+ }
+ }
+ //Now we have an array with each possible symbol as the key and the style as the actual data.
+ //This way we can set the correct style just the moment we highlight ...
+ //
+ //Now we need to rewrite our array to get a search string that
+ $sym_search = implode("|", $symbol_preg);
+ //Get all matches and throw away those witin a block that is already highlighted... (i.e. matched by a regexp)
+ preg_match_all("/(?:" . $sym_search . ")+/", $stuff_to_parse, $matches_in_stuff, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
+ //Match anything that is a highlighted block ...
+ preg_match_all("/<\|(?:<DOT>|[^>])+>(?:(?!\|>).*?)\|>|<\/a>/", $stuff_to_parse, $highlighted_in_stuff, PREG_OFFSET_CAPTURE);
+ foreach($matches_in_stuff as $stuff_match_id => $stuff_match_data) {
+ foreach($highlighted_in_stuff[0] as $highlight_id => $highlight_data) {
+ //Do a range check of the found highlight identifier and the OOP match ...
+ if(($highlight_data[1] <= $stuff_match_data[0][1]) &&
+ ($highlight_data[1] + strlen($highlight_data[0]) >= $stuff_match_data[0][1] + strlen($stuff_match_data[0][0])))
+ {
+ //We found a match that was already highlighted ...
+ unset($matches_in_stuff[$stuff_match_id]);
+ break;
+ }
+ }
+ }
+ //Rebuild the matches array to be ordered by offset ...
+ $symbol_offsets = array();
+ foreach($matches_in_stuff as $stuff_match_data) {
+ $symbol_offsets[$stuff_match_data[0][1]] = $stuff_match_data[0][0];
+ }
+ krsort($symbol_offsets);
+ //Perform the actual replacements ...
+ foreach($symbol_offsets as $symbol_offset => $symbol_match) {
+ $symbol_hl = "";
+ $old_sym = -1;
+ //Split the current stuff to replace into its atomic symbols ...
+ preg_match_all("/$sym_search/", $symbol_match, $sym_match_syms, PREG_PATTERN_ORDER);
+ foreach($sym_match_syms[0] as $sym_ms) {
+ //Check if consequtive symbols belong to the same group to save output ...
+ if (isset($symbol_data[$sym_ms]) && ($symbol_data[$sym_ms] != $old_sym)) {
+ if(-1 != $old_sym) {
+ $symbol_hl .= "|>";
+ }
+ $old_sym = $symbol_data[$sym_ms];
+ if (!$this->use_classes) {
+ $symbol_hl .= '<| style="' . $this->language_data['STYLES']['SYMBOLS'][$old_sym] . '">';
+ }
+ else {
+ $symbol_hl .= '<| class="sy' . $old_sym . '">';
+ }
+ }
+ $symbol_hl .= $sym_ms;
+ }
+ //Close remaining tags and insert the replacement at the right position ...
+ //Take caution if symbol_hl is empty to avoid doubled closing spans.
+ if (-1 != $old_sym) {
+ $symbol_hl .= "|>";
+ }
+ $stuff_to_parse = substr($stuff_to_parse, 0, $symbol_offset) . $symbol_hl . substr($stuff_to_parse, $symbol_offset + strlen($symbol_match));
+ }
+ }
+ //FIX for symbol highlighting ...
+
+ //
+ // Add class/style for regexps
+ //
+ foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
+ if ($this->lexic_permissions['REGEXPS'][$key]) {
+ if (is_callable($this->language_data['STYLES']['REGEXPS'][$key])) {
+ $func = $this->language_data['STYLES']['REGEXPS'][$key];
+ $stuff_to_parse = preg_replace("/!REG3XP$key!(.*)\|>/eU",
+ "' style=\"' . call_user_func(\"$func\", '\\1') . '\"\\1|>'", $stuff_to_parse);
+ }
+ else {
+ if (!$this->use_classes) {
+ $attributes = ' style="' . $this->language_data['STYLES']['REGEXPS'][$key] . '"';
+ }
+ else {
+ if (is_array($this->language_data['REGEXPS'][$key]) &&
+ array_key_exists(GESHI_CLASS, $this->language_data['REGEXPS'][$key])) {
+ $attributes = ' class="' .
+ $this->language_data['REGEXPS'][$key][GESHI_CLASS] . '"';
+ }
+ else {
+ $attributes = ' class="re' . $key . '"';
+ }
+ }
+ $stuff_to_parse = str_replace("!REG3XP$key!", "$attributes", $stuff_to_parse);
+ }
+ }
+ }
+
+ // Replace <DOT> with . for urls
+ $stuff_to_parse = str_replace('<DOT>', '.', $stuff_to_parse);
+ // Replace <|UR1| with <a href= for urls also
+ if (isset($this->link_styles[GESHI_LINK])) {
+ if ($this->use_classes) {
+ $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);
+ }
+ else {
+ $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' style="' . $this->link_styles[GESHI_LINK] . '" href=', $stuff_to_parse);
+ }
+ }
+ else {
+ $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);
+ }
+
+ //
+ // NOW we add the span thingy ;)
+ //
+
+ $stuff_to_parse = str_replace('<|', '<span', $stuff_to_parse);
+ $stuff_to_parse = str_replace ( '|>', '</span>', $stuff_to_parse );
+
+ return substr($stuff_to_parse, 1);
+ }
+
+ /**
+ * Sets the time taken to parse the code
+ *
+ * @param microtime The time when parsing started
+ * @param microtime The time when parsing ended
+ * @since 1.0.2
+ * @access private
+ */
+ function set_time($start_time, $end_time) {
+ $start = explode(' ', $start_time);
+ $end = explode(' ', $end_time);
+ $this->time = $end[0] + $end[1] - $start[0] - $start[1];
+ }
+
+ /**
+ * Gets the time taken to parse the code
+ *
+ * @return double The time taken to parse the code
+ * @since 1.0.2
+ */
+ function get_time() {
+ return $this->time;
+ }
+
+ /**
+ * Gets language information and stores it for later use
+ *
+ * @param string The filename of the language file you want to load
+ * @since 1.0.0
+ * @access private
+ * @todo Needs to load keys for lexic permissions for keywords, regexps etc
+ */
+ function load_language($file_name) {
+ $this->enable_highlighting();
+ $language_data = array();
+ require $file_name;
+ // Perhaps some checking might be added here later to check that
+ // $language data is a valid thing but maybe not
+ $this->language_data = $language_data;
+ // Set strict mode if should be set
+ if ($this->language_data['STRICT_MODE_APPLIES'] == GESHI_ALWAYS) {
+ $this->strict_mode = true;
+ }
+ // Set permissions for all lexics to true
+ // so they'll be highlighted by default
+ foreach ($this->language_data['KEYWORDS'] as $key => $words) {
+ $this->lexic_permissions['KEYWORDS'][$key] = true;
+ }
+ foreach ($this->language_data['COMMENT_SINGLE'] as $key => $comment) {
+ $this->lexic_permissions['COMMENTS'][$key] = true;
+ }
+ foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
+ $this->lexic_permissions['REGEXPS'][$key] = true;
+ }
+ // Set default class for CSS
+ $this->overall_class = $this->language;
+ }
+
+ /**
+ * Takes the parsed code and various options, and creates the HTML
+ * surrounding it to make it look nice.
+ *
+ * @param string The code already parsed
+ * @return string The code nicely finalised
+ * @since 1.0.0
+ * @access private
+ */
+ function finalise($parsed_code) {
+ // Remove end parts of important declarations
+ // This is BUGGY!! My fault for bad code: fix coming in 1.2
+ // @todo Remove this crap
+ if ($this->enable_important_blocks &&
+ (strstr($parsed_code, GeSHi::hsc(GESHI_START_IMPORTANT)) === false)) {
+ $parsed_code = str_replace(GeSHi::hsc(GESHI_END_IMPORTANT), '', $parsed_code);
+ }
+
+ // Add HTML whitespace stuff if we're using the <div> header
+ if ($this->header_type != GESHI_HEADER_PRE) {
+ $parsed_code = $this->indent($parsed_code);
+ }
+
+ // purge some unnecessary stuff
+ $parsed_code = preg_replace('#<span[^>]+>(\s*)</span>#', '\\1', $parsed_code);
+ $parsed_code = preg_replace('#<div[^>]+>(\s*)</div>#', '\\1', $parsed_code);
+
+ // If we are using IDs for line numbers, there needs to be an overall
+ // ID set to prevent collisions.
+ if ($this->add_ids && !$this->overall_id) {
+ $this->overall_id = 'geshi-' . substr(md5(microtime()), 0, 4);
+ }
+
+ // If we're using line numbers, we insert <li>s and appropriate
+ // markup to style them (otherwise we don't need to do anything)
+ if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+ // If we're using the <pre> header, we shouldn't add newlines because
+ // the <pre> will line-break them (and the <li>s already do this for us)
+ $ls = ($this->header_type != GESHI_HEADER_PRE) ? "\n" : '';
+ // Get code into lines
+ $code = explode("\n", $parsed_code);
+ // Set vars to defaults for following loop
+ $parsed_code = '';
+ $i = 0;
+
+ // Foreach line...
+ foreach ($code as $line) {
+ //Reset the attributes for a new line ...
+ $attrs = array();
+
+ // Make lines have at least one space in them if they're empty
+ // BenBE: Checking emptiness using trim instead of relying on blanks
+ if ('' == trim($line)) {
+ $line = ' ';
+ }
+ // If this is a "special line"...
+ if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS &&
+ $i % $this->line_nth_row == ($this->line_nth_row - 1)) {
+ // Set the attributes to style the line
+ if ($this->use_classes) {
+ //$attr = ' class="li2"';
+ $attrs['class'][] = 'li2';
+ $def_attr = ' class="de2"';
+ }
+ else {
+ //$attr = ' style="' . $this->line_style2 . '"';
+ $attrs['style'][] = $this->line_style2;
+ // This style "covers up" the special styles set for special lines
+ // so that styles applied to special lines don't apply to the actual
+ // code on that line
+ $def_attr = ' style="' . $this->code_style . '"';
+ }
+ // Span or div?
+ $start = "<div$def_attr>";
+ $end = '</div>';
+ }
+ else {
+ if ($this->use_classes) {
+ //$attr = ' class="li1"';
+ $attrs['class'][] = 'li1';
+ $def_attr = ' class="de1"';
+ }
+ else {
+ //$attr = ' style="' . $this->line_style1 . '"';
+ $attrs['style'][] = $this->line_style1;
+ $def_attr = ' style="' . $this->code_style . '"';
+ }
+ $start = "<div$def_attr>";
+ $end = '</div>';
+ }
+
+ ++$i;
+ // Are we supposed to use ids? If so, add them
+ if ($this->add_ids) {
+ $attrs['id'][] = "$this->overall_id-$i";
+ }
+ if (in_array($i, $this->highlight_extra_lines)) {
+ if ($this->use_classes) {
+ if(array_key_exists($i, $this->highlight_extra_lines_styles)) {
+ $attrs['class'][] = "lx$i";
+ } else {
+ $attrs['class'][] = "ln-xtra";
+ }
+ } else {
+ array_push($attrs['style'], $this->get_line_style($i));
+ }
+ }
+
+ // Add in the line surrounded by appropriate list HTML
+ $attr_string = '';
+ foreach ($attrs as $key => $attr) {
+ $attr_string .= ' ' . $key . '="' . implode(' ', $attr) . '"';
+ }
+ $parsed_code .= "<li$attr_string>$start$line$end</li>$ls";
+ }
+ }
+ else {
+ // No line numbers, but still need to handle highlighting lines extra.
+ // Have to use divs so the full width of the code is highlighted
+ $code = explode("\n", $parsed_code);
+ $parsed_code = '';
+ $i = 0;
+ foreach ($code as $line) {
+ // Make lines have at least one space in them if they're empty
+ // BenBE: Checking emptiness using trim instead of relying on blanks
+ if ('' == trim($line)) {
+ $line = ' ';
+ }
+ if (in_array(++$i, $this->highlight_extra_lines)) {
+ if ($this->use_classes) {
+ if (array_key_exists($i, $this->highlight_extra_lines_styles)) {
+ $parsed_code .= "<div class=\"lx$i\">";
+ } else {
+ $parsed_code .= "<div class=\"ln-xtra\">";
+ }
+ } else {
+ $parsed_code .= "<div style=\"" . $this->get_line_style($i) . "\">";
+ }
+ // Remove \n because it stuffs up <pre> header
+ $parsed_code .= $line . "</div>";
+ } else {
+ $parsed_code .= $line . "\n";
+ }
+ }
+ }
+
+ if ($this->header_type == GESHI_HEADER_PRE) {
+ // enforce line numbers when using pre
+ $parsed_code = str_replace('<li></li>', '<li> </li>', $parsed_code);
+ }
+
+ return $this->header() . chop($parsed_code) . $this->footer();
+ }
+
+ /**
+ * Creates the header for the code block (with correct attributes)
+ *
+ * @return string The header for the code block
+ * @since 1.0.0
+ * @access private
+ */
+ function header() {
+ // Get attributes needed
+ $attributes = $this->get_attributes();
+
+ $ol_attributes = '';
+
+ if ($this->line_numbers_start != 1) {
+ $ol_attributes .= ' start="' . $this->line_numbers_start . '"';
+ }
+
+ // Get the header HTML
+ $header = $this->format_header_content();
+
+ if (GESHI_HEADER_NONE == $this->header_type) {
+ if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+ return "$header<ol$ol_attributes>";
+ }
+ return $header .
+ ($this->force_code_block ? '<div>' : '');
+ }
+
+ // Work out what to return and do it
+ if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+ if ($this->header_type == GESHI_HEADER_PRE) {
+ return "<pre$attributes>$header<ol$ol_attributes>";
+ }
+ else if ($this->header_type == GESHI_HEADER_DIV) {
+ return "<div$attributes>$header<ol$ol_attributes>";
+ }
+ }
+ else {
+ if ($this->header_type == GESHI_HEADER_PRE) {
+ return "<pre$attributes>$header" .
+ ($this->force_code_block ? '<div>' : '');
+ }
+ else if ($this->header_type == GESHI_HEADER_DIV) {
+ return "<div$attributes>$header" .
+ ($this->force_code_block ? '<div>' : '');
+ }
+ }
+ }
+
+ /**
+ * Returns the header content, formatted for output
+ *
+ * @return string The header content, formatted for output
+ * @since 1.0.2
+ * @access private
+ */
+ function format_header_content() {
+ $header = $this->header_content;
+ if ($header) {
+ if ($this->header_type == GESHI_HEADER_PRE) {
+ $header = str_replace("\n", '', $header);
+ }
+ $header = $this->replace_keywords($header);
+
+ if ($this->use_classes) {
+ $attr = ' class="head"';
+ }
+ else {
+ $attr = " style=\"{$this->header_content_style}\"";
+ }
+ return "<div$attr>$header</div>";
+ }
+ }
+
+ /**
+ * Returns the footer for the code block.
+ *
+ * @return string The footer for the code block
+ * @since 1.0.0
+ * @access private
+ */
+ function footer() {
+ $footer_content = $this->format_footer_content();
+
+ if (GESHI_HEADER_NONE == $this->header_type) {
+ return ($this->line_numbers != GESHI_NO_LINE_NUMBERS) ? '</ol>' . $footer_content
+ : $footer_content;
+ }
+
+ if ($this->header_type == GESHI_HEADER_DIV) {
+ if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+ return "</ol>$footer_content</div>";
+ }
+ return ($this->force_code_block ? '</div>' : '') .
+ "$footer_content</div>";
+ }
+ else {
+ if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+ return "</ol>$footer_content</pre>";
+ }
+ return ($this->force_code_block ? '</div>' : '') .
+ "$footer_content</pre>";
+ }
+ }
+
+ /**
+ * Returns the footer content, formatted for output
+ *
+ * @return string The footer content, formatted for output
+ * @since 1.0.2
+ * @access private
+ */
+ function format_footer_content() {
+ $footer = $this->footer_content;
+ if ($footer) {
+ if ($this->header_type == GESHI_HEADER_PRE) {
+ $footer = str_replace("\n", '', $footer);;
+ }
+ $footer = $this->replace_keywords($footer);
+
+ if ($this->use_classes) {
+ $attr = ' class="foot"';
+ }
+ else {
+ $attr = " style=\"{$this->footer_content_style}\"";
+ }
+ return "<div$attr>$footer</div>";
+ }
+ }
+
+ /**
+ * Replaces certain keywords in the header and footer with
+ * certain configuration values
+ *
+ * @param string The header or footer content to do replacement on
+ * @return string The header or footer with replaced keywords
+ * @since 1.0.2
+ * @access private
+ */
+ function replace_keywords($instr) {
+ $keywords = $replacements = array();
+
+ $keywords[] = '<TIME>';
+ $keywords[] = '{TIME}';
+ $replacements[] = $replacements[] = number_format($this->get_time(), 3);
+
+ $keywords[] = '<LANGUAGE>';
+ $keywords[] = '{LANGUAGE}';
+ $replacements[] = $replacements[] = $this->language;
+
+ $keywords[] = '<VERSION>';
+ $keywords[] = '{VERSION}';
+ $replacements[] = $replacements[] = GESHI_VERSION;
+
+ return str_replace($keywords, $replacements, $instr);
+ }
+
+ /**
+ * Gets the CSS attributes for this code
+ *
+ * @return The CSS attributes for this code
+ * @since 1.0.0
+ * @access private
+ * @todo Document behaviour change - class is outputted regardless of whether we're using classes or not.
+ * Same with style
+ */
+ function get_attributes() {
+ $attributes = '';
+
+ if ($this->overall_class != '') {
+ $attributes .= " class=\"{$this->overall_class}\"";
+ }
+ if ($this->overall_id != '') {
+ $attributes .= " id=\"{$this->overall_id}\"";
+ }
+ if ($this->overall_style != '') {
+ $attributes .= ' style="' . $this->overall_style . '"';
+ }
+ return $attributes;
+ }
+
+ /**
+ * Secure replacement for PHP built-in function htmlspecialchars().
+ *
+ * See ticket #427 (http://wush.net/trac/wikka/ticket/427) for the rationale
+ * for this replacement function.
+ *
+ * The INTERFACE for this function is almost the same as that for
+ * htmlspecialchars(), with the same default for quote style; however, there
+ * is no 'charset' parameter. The reason for this is as follows:
+ *
+ * The PHP docs say:
+ * "The third argument charset defines character set used in conversion."
+ *
+ * I suspect PHP's htmlspecialchars() is working at the byte-value level and
+ * thus _needs_ to know (or asssume) a character set because the special
+ * characters to be replaced could exist at different code points in
+ * different character sets. (If indeed htmlspecialchars() works at
+ * byte-value level that goes some way towards explaining why the
+ * vulnerability would exist in this function, too, and not only in
+ * htmlentities() which certainly is working at byte-value level.)
+ *
+ * This replacement function however works at character level and should
+ * therefore be "immune" to character set differences - so no charset
+ * parameter is needed or provided. If a third parameter is passed, it will
+ * be silently ignored.
+ *
+ * In the OUTPUT there is a minor difference in that we use ''' instead
+ * of PHP's ''' for a single quote: this provides compatibility with
+ * get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES)
+ * (see comment by mikiwoz at yahoo dot co dot uk on
+ * http://php.net/htmlspecialchars); it also matches the entity definition
+ * for XML 1.0
+ * (http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters).
+ * Like PHP we use a numeric character reference instead of ''' for the
+ * single quote. For the other special characters we use the named entity
+ * references, as PHP is doing.
+ *
+ * @author {@link http://wikkawiki.org/JavaWoman Marjolein Katsma}
+ *
+ * @license http://www.gnu.org/copyleft/lgpl.html
+ * GNU Lesser General Public License
+ * @copyright Copyright 2007, {@link http://wikkawiki.org/CreditsPage
+ * Wikka Development Team}
+ *
+ * @access private
+ * @param string $string string to be converted
+ * @param integer $quote_style
+ * - ENT_COMPAT: escapes &, <, > and double quote (default)
+ * - ENT_NOQUOTES: escapes only &, < and >
+ * - ENT_QUOTES: escapes &, <, >, double and single quotes
+ * @return string converted string
+ * @since 1.0.7.18
+ */
+ function hsc($string, $quote_style=ENT_COMPAT) {
+ // init
+ $aTransSpecchar = array(
+ '&' => '&',
+ '"' => '"',
+ '<' => '<',
+ '>' => '>'
+ ); // ENT_COMPAT set
+
+ if (ENT_NOQUOTES == $quote_style) // don't convert double quotes
+ {
+ unset($aTransSpecchar['"']);
+ }
+ elseif (ENT_QUOTES == $quote_style) // convert single quotes as well
+ {
+ $aTransSpecchar["'"] = '''; // (apos) htmlspecialchars() uses '''
+ }
+
+ // return translated string
+ return strtr($string,$aTransSpecchar);
+ }
+
+ /**
+ * Returns a stylesheet for the highlighted code. If $economy mode
+ * is true, we only return the stylesheet declarations that matter for
+ * this code block instead of the whole thing
+ *
+ * @param boolean Whether to use economy mode or not
+ * @return string A stylesheet built on the data for the current language
+ * @since 1.0.0
+ */
+ function get_stylesheet($economy_mode = true) {
+ // If there's an error, chances are that the language file
+ // won't have populated the language data file, so we can't
+ // risk getting a stylesheet...
+ if ($this->error) {
+ return '';
+ }
+ // First, work out what the selector should be. If there's an ID,
+ // that should be used, the same for a class. Otherwise, a selector
+ // of '' means that these styles will be applied anywhere
+ $selector = ($this->overall_id != '') ? "#{$this->overall_id} " : '';
+ $selector = ($selector == '' && $this->overall_class != '') ? ".{$this->overall_class} " : $selector;
+
+ // Header of the stylesheet
+ if (!$economy_mode) {
+ $stylesheet = "/**\n".
+ " * GeSHi Dynamically Generated Stylesheet\n".
+ " * --------------------------------------\n".
+ " * Dynamically generated stylesheet for {$this->language}\n".
+ " * CSS class: {$this->overall_class}, CSS id: {$this->overall_id}\n".
+ " * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n" .
+ " * (http://qbnz.com/highlighter/ and http://geshi.org/)\n".
+ " * --------------------------------------\n".
+ " */\n";
+ } else {
+ $stylesheet = "/**\n".
+ " * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n" .
+ " * (http://qbnz.com/highlighter/ and http://geshi.org/)\n".
+ " */\n";
+ }
+
+ // Set the <ol> to have no effect at all if there are line numbers
+ // (<ol>s have margins that should be destroyed so all layout is
+ // controlled by the set_overall_style method, which works on the
+ // <pre> or <div> container). Additionally, set default styles for lines
+ if (!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+ //$stylesheet .= "$selector, {$selector}ol, {$selector}ol li {margin: 0;}\n";
+ $stylesheet .= "$selector.de1, $selector.de2 {{$this->code_style}}\n";
+ }
+
+ // Add overall styles
+ if (!$economy_mode || $this->overall_style != '') {
+ $stylesheet .= "$selector {{$this->overall_style}}\n";
+ }
+
+ // Add styles for links
+ foreach ($this->link_styles as $key => $style) {
+ if (!$economy_mode || $key == GESHI_LINK && $style != '') {
+ $stylesheet .= "{$selector}a:link {{$style}}\n";
+ }
+ if (!$economy_mode || $key == GESHI_HOVER && $style != '') {
+ $stylesheet .= "{$selector}a:hover {{$style}}\n";
+ }
+ if (!$economy_mode || $key == GESHI_ACTIVE && $style != '') {
+ $stylesheet .= "{$selector}a:active {{$style}}\n";
+ }
+ if (!$economy_mode || $key == GESHI_VISITED && $style != '') {
+ $stylesheet .= "{$selector}a:visited {{$style}}\n";
+ }
+ }
+
+ // Header and footer
+ if (!$economy_mode || $this->header_content_style != '') {
+ $stylesheet .= "$selector.head {{$this->header_content_style}}\n";
+ }
+ if (!$economy_mode || $this->footer_content_style != '') {
+ $stylesheet .= "$selector.foot {{$this->footer_content_style}}\n";
+ }
+
+ // Styles for important stuff
+ if (!$economy_mode || $this->important_styles != '') {
+ $stylesheet .= "$selector.imp {{$this->important_styles}}\n";
+ }
+
+ // Simple line number styles
+ if (!$economy_mode || ($this->line_numbers != GESHI_NO_LINE_NUMBERS && $this->line_style1 != '')) {
+ $stylesheet .= "{$selector}li, {$selector}li.li1 {{$this->line_style1}}\n";
+ }
+ // If there is a style set for fancy line numbers, echo it out
+ if (!$economy_mode || ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS && $this->line_style2 != '')) {
+ $stylesheet .= "{$selector}li.li2 {{$this->line_style2}}\n";
+ }
+
+ foreach ($this->language_data['STYLES']['KEYWORDS'] as $group => $styles) {
+ if (!$economy_mode || ($economy_mode && $styles != '') &&
+ (isset($this->lexic_permissions['KEYWORDS'][$group]) &&
+ $this->lexic_permissions['KEYWORDS'][$group])) {
+ $stylesheet .= "$selector.kw$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['COMMENTS'] as $group => $styles) {
+ if (!$economy_mode || ($economy_mode && $styles != '') &&
+ (isset($this->lexic_permissions['COMMENTS'][$group]) &&
+ $this->lexic_permissions['COMMENTS'][$group])) {
+ $stylesheet .= "$selector.co$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['ESCAPE_CHAR'] as $group => $styles) {
+ if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
+ !$this->lexic_permissions['ESCAPE_CHAR'])) {
+ $stylesheet .= "$selector.es$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['BRACKETS'] as $group => $styles) {
+ if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
+ !$this->lexic_permissions['BRACKETS'])) {
+ $stylesheet .= "$selector.br$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['SYMBOLS'] as $group => $styles) {
+ if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
+ !$this->lexic_permissions['SYMBOLS'])) {
+ $stylesheet .= "$selector.sy$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['STRINGS'] as $group => $styles) {
+ if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
+ !$this->lexic_permissions['STRINGS'])) {
+ $stylesheet .= "$selector.st$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['NUMBERS'] as $group => $styles) {
+ if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
+ !$this->lexic_permissions['NUMBERS'])) {
+ $stylesheet .= "$selector.nu$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['METHODS'] as $group => $styles) {
+ if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode &&
+ !$this->lexic_permissions['METHODS'])) {
+ $stylesheet .= "$selector.me$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['SCRIPT'] as $group => $styles) {
+ if (!$economy_mode || !($economy_mode && $styles == '')) {
+ $stylesheet .= "$selector.sc$group {{$styles}}\n";
+ }
+ }
+ foreach ($this->language_data['STYLES']['REGEXPS'] as $group => $styles) {
+ if (!$economy_mode || ($economy_mode && $styles != '') &&
+ (isset($this->lexic_permissions['REGEXPS'][$group]) &&
+ $this->lexic_permissions['REGEXPS'][$group])) {
+ if (is_array($this->language_data['REGEXPS'][$group]) &&
+ array_key_exists(GESHI_CLASS,
+ $this->language_data['REGEXPS'][$group])) {
+ $stylesheet .= "$selector.";
+ $stylesheet .= $this->language_data['REGEXPS'][$group][GESHI_CLASS];
+ $stylesheet .= " {{$styles}}\n";
+ }
+ else {
+ $stylesheet .= "$selector.re$group {{$styles}}\n";
+ }
+ }
+ }
+ // Styles for lines being highlighted extra
+ if (!$economy_mode || (count($this->highlight_extra_lines)!=count($this->highlight_extra_lines_styles))) {
+ $stylesheet .= "{$selector}.ln-xtra, {$selector}li.ln-xtra, {$selector}div.ln-xtra {{$this->highlight_extra_lines_style}}\n";
+ }
+ foreach ($this->highlight_extra_lines_styles as $lineid => $linestyle) {
+ $stylesheet .= "{$selector}.lx$lineid, {$selector}li.lx$lineid, {$selector}div.lx$lineid {{$linestyle}}\n";
+ }
+
+ return $stylesheet;
+ }
+
+ /**
+ * Get's the style that is used for the specified line
+ *
+ * @param int The line number information is requested for
+ * @access private
+ * @since 1.0.7.21
+ */
+ function get_line_style($line) {
+ //$style = null;
+ $style = null;
+ if (array_key_exists($line, $this->highlight_extra_lines_styles)) {
+ $style = $this->highlight_extra_lines_styles[$line];
+ } else { // if no "extra" style assigned
+ $style = $this->highlight_extra_lines_style;
+ }
+
+ return $style;
+ }
+} // End Class GeSHi
+
+
+if (!function_exists('geshi_highlight')) {
+ /**
+ * Easy way to highlight stuff. Behaves just like highlight_string
+ *
+ * @param string The code to highlight
+ * @param string The language to highlight the code in
+ * @param string The path to the language files. You can leave this blank if you need
+ * as from version 1.0.7 the path should be automatically detected
+ * @param boolean Whether to return the result or to echo
+ * @return string The code highlighted (if $return is true)
+ * @since 1.0.2
+ */
+ function geshi_highlight($string, $language, $path = null, $return = false) {
+ $geshi = new GeSHi($string, $language, $path);
+ $geshi->set_header_type(GESHI_HEADER_NONE);
+ if ($return) {
+ return '<code>' . $geshi->parse_code() . '</code>';
+ }
+ echo '<code>' . $geshi->parse_code() . '</code>';
+ if ($geshi->error()) {
+ return false;
+ }
+ return true;
+ }
+}
+
+?>
Modified: site/trunk/www-root/wiki/inc/html.php
===================================================================
--- site/trunk/www-root/wiki/inc/html.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/html.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1346 +1,1346 @@
-<?php
-/**
- * HTML output functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-if(!defined('NL')) define('NL',"\n");
-require_once(DOKU_INC.'inc/parserutils.php');
-require_once(DOKU_INC.'inc/form.php');
-
-/**
- * Convenience function to quickly build a wikilink
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_wikilink($id,$name=NULL,$search=''){
- static $xhtml_renderer = NULL;
- if(is_null($xhtml_renderer)){
- require_once(DOKU_INC.'inc/parser/xhtml.php');
- $xhtml_renderer = new Doku_Renderer_xhtml();
- }
-
- return $xhtml_renderer->internallink($id,$name,$search,true);
-}
-
-/**
- * Helps building long attribute lists
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_attbuild($attributes){
- $ret = '';
- foreach ( $attributes as $key => $value ) {
- $ret .= $key.'="'.formtext($value).'" ';
- }
- return trim($ret);
-}
-
-/**
- * The loginform
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_login(){
- global $lang;
- global $conf;
- global $ID;
- global $auth;
-
- print p_locale_xhtml('login');
- print '<div class="centeralign">'.NL;
- $form = new Doku_Form('dw__login');
- $form->startFieldset($lang['btn_login']);
- $form->addHidden('id', $ID);
- $form->addHidden('do', 'login');
- $form->addElement(form_makeTextField('u', $_REQUEST['u'], $lang['user'], 'focus__this', 'block'));
- $form->addElement(form_makePasswordField('p', $lang['pass'], '', 'block'));
- $form->addElement(form_makeCheckboxField('r', '1', $lang['remember'], 'remember__me', 'simple'));
- $form->addElement(form_makeButton('submit', '', $lang['btn_login']));
- $form->endFieldset();
- html_form('login', $form);
-
- if($auth && $auth->canDo('addUser') && actionOK('register')){
- print '<p>';
- print $lang['reghere'];
- print ': <a href="'.wl($ID,'do=register').'" rel="nofollow" class="wikilink1">'.$lang['register'].'</a>';
- print '</p>';
- }
-
- if ($auth && $auth->canDo('modPass') && actionOK('resendpwd')) {
- print '<p>';
- print $lang['pwdforget'];
- print ': <a href="'.wl($ID,'do=resendpwd').'" rel="nofollow" class="wikilink1">'.$lang['btn_resendpwd'].'</a>';
- print '</p>';
- }
- print '</div>'.NL;
-}
-
-/**
- * prints a section editing button
- * used as a callback in html_secedit
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_secedit_button($matches){
- global $ID;
- global $INFO;
-
- $section = $matches[2];
- $name = $matches[1];
-
- $secedit = '';
- $secedit .= '<div class="secedit">';
- $secedit .= html_btn('secedit',$ID,'',
- array('do' => 'edit',
- 'lines' => "$section",
- 'rev' => $INFO['lastmod']),
- 'post', $name);
- $secedit .= '</div>';
- return $secedit;
-}
-
-/**
- * inserts section edit buttons if wanted or removes the markers
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_secedit($text,$show=true){
- global $INFO;
-
- if($INFO['writable'] && $show && !$INFO['rev']){
- $text = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#',
- 'html_secedit_button', $text);
- }else{
- $text = preg_replace('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#','',$text);
- }
-
- return $text;
-}
-
-/**
- * Just the back to top button (in its own form)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_topbtn(){
- global $lang;
-
- $ret = '';
- $ret = '<a class="nolink" href="#dokuwiki__top"><input type="button" class="button" value="'.$lang['btn_top'].'" onclick="window.scrollTo(0, 0)" title="'.$lang['btn_top'].'" /></a>';
-
- return $ret;
-}
-
-/**
- * Displays a button (using its own form)
- * If tooltip exists, the access key tooltip is replaced.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_btn($name,$id,$akey,$params,$method='get',$tooltip=''){
- global $conf;
- global $lang;
-
- $label = $lang['btn_'.$name];
-
- $ret = '';
- $tip = '';
-
- //filter id (without urlencoding)
- $id = idfilter($id,false);
-
- //make nice URLs even for buttons
- if($conf['userewrite'] == 2){
- $script = DOKU_BASE.DOKU_SCRIPT.'/'.$id;
- }elseif($conf['userewrite']){
- $script = DOKU_BASE.$id;
- }else{
- $script = DOKU_BASE.DOKU_SCRIPT;
- $params['id'] = $id;
- }
-
- $ret .= '<form class="button btn_'.$name.'" method="'.$method.'" action="'.$script.'"><div class="no">';
-
- if(is_array($params)){
- reset($params);
- while (list($key, $val) = each($params)) {
- $ret .= '<input type="hidden" name="'.$key.'" ';
- $ret .= 'value="'.htmlspecialchars($val).'" />';
- }
- }
-
- if ($tooltip!='') {
- $tip = htmlspecialchars($tooltip);
- }else{
- $tip = htmlspecialchars($label);
- }
-
- $ret .= '<input type="submit" value="'.htmlspecialchars($label).'" class="button" ';
- if($akey){
- $tip .= ' [ALT+'.strtoupper($akey).']';
- $ret .= 'accesskey="'.$akey.'" ';
- }
- $ret .= 'title="'.$tip.'" ';
- $ret .= '/>';
- $ret .= '</div></form>';
-
- return $ret;
-}
-
-/**
- * show a wiki page
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_show($txt=''){
- global $ID;
- global $REV;
- global $HIGH;
- global $INFO;
- //disable section editing for old revisions or in preview
- if($txt || $REV){
- $secedit = false;
- }else{
- $secedit = true;
- }
-
- if ($txt){
- //PreviewHeader
- echo '<br id="scroll__here" />';
- echo p_locale_xhtml('preview');
- echo '<div class="preview">';
- $html = html_secedit(p_render('xhtml',p_get_instructions($txt),$info),$secedit);
- if($INFO['prependTOC']) $html = tpl_toc(true).$html;
- echo $html;
- echo '<div class="clearer"></div>';
- echo '</div>';
-
- }else{
- if ($REV) print p_locale_xhtml('showrev');
- $html = p_wiki_xhtml($ID,$REV,true);
- $html = html_secedit($html,$secedit);
- if($INFO['prependTOC']) $html = tpl_toc(true).$html;
- $html = html_hilight($html,$HIGH);
- echo $html;
- }
-}
-
-/**
- * ask the user about how to handle an exisiting draft
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_draft(){
- global $INFO;
- global $ID;
- global $lang;
- global $conf;
- $draft = unserialize(io_readFile($INFO['draft'],false));
- $text = cleanText(con($draft['prefix'],$draft['text'],$draft['suffix'],true));
-
- print p_locale_xhtml('draft');
- $form = new Doku_Form('dw__editform');
- $form->addHidden('id', $ID);
- $form->addHidden('date', $draft['date']);
- $form->addElement(form_makeWikiText($text, array('readonly'=>'readonly')));
- $form->addElement(form_makeOpenTag('div', array('id'=>'draft__status')));
- $form->addElement($lang['draftdate'].' '. strftime($conf['dformat'],filemtime($INFO['draft'])));
- $form->addElement(form_makeCloseTag('div'));
- $form->addElement(form_makeButton('submit', 'recover', $lang['btn_recover'], array('tabindex'=>'1')));
- $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_draftdel'], array('tabindex'=>'2')));
- $form->addElement(form_makeButton('submit', 'show', $lang['btn_cancel'], array('tabindex'=>'3')));
- html_form('draft', $form);
-}
-
-/**
- * Highlights searchqueries in HTML code
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-function html_hilight($html,$phrases){
- $regex = join('|',array_map('preg_quote_cb',array_filter((array) $phrases)));
-
- if ($regex === '') return $html;
- $html = preg_replace_callback("/((<[^>]*)|$regex)/ui",'html_hilight_callback',$html);
- return $html;
-}
-
-/**
- * Callback used by html_hilight()
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-function html_hilight_callback($m) {
- $hlight = unslash($m[0]);
- if ( !isset($m[2])) {
- $hlight = '<span class="search_hit">'.$hlight.'</span>';
- }
- return $hlight;
-}
-
-/**
- * Run a search and display the result
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_search(){
- require_once(DOKU_INC.'inc/search.php');
- require_once(DOKU_INC.'inc/fulltext.php');
- global $conf;
- global $QUERY;
- global $ID;
- global $lang;
-
- print p_locale_xhtml('searchpage');
- flush();
-
- //check if search is restricted to namespace
- if(preg_match('/([^@]*)@([^@]*)/',$QUERY,$match)) {
- $id = cleanID($match[1]);
- if(empty($id)) {
- print '<div class="nothing">'.$lang['nothingfound'].'</div>';
- flush();
- return;
- }
- } else {
- $id = cleanID($QUERY);
- }
-
- //show progressbar
- print '<div class="centeralign" id="dw__loading">'.NL;
- print '<script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--'.NL;
- print 'showLoadBar();'.NL;
- print '//--><!]]></script>'.NL;
- print '<br /></div>'.NL;
- flush();
-
- //do quick pagesearch
- $data = array();
-
- $data = ft_pageLookup($id);
- if(count($data)){
- sort($data);
- print '<div class="search_quickresult">';
- print '<h3>'.$lang['quickhits'].':</h3>';
- print '<ul class="search_quickhits">';
- foreach($data as $id){
- print '<li> ';
- print html_wikilink(':'.$id,noNS($id));
- print '</li> ';
- }
- print '</ul> ';
- //clear float (see http://www.complexspiral.com/publications/containing-floats/)
- print '<div class="clearer"> </div>';
- print '</div>';
- }
- flush();
-
- //do fulltext search
- $data = ft_pageSearch($QUERY,$regex);
- if(count($data)){
- $num = 1;
- foreach($data as $id => $cnt){
- print '<div class="search_result">';
- print html_wikilink(':'.$id,$conf['useheading']?NULL:$id,$regex);
- print ': <span class="search_cnt">'.$cnt.' '.$lang['hits'].'</span><br />';
- if($num < 15){ // create snippets for the first number of matches only #FIXME add to conf ?
- print '<div class="search_snippet">'.ft_snippet($id,$regex).'</div>';
- }
- print '</div>';
- flush();
- $num++;
- }
- }else{
- print '<div class="nothing">'.$lang['nothingfound'].'</div>';
- }
-
- //hide progressbar
- print '<script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--'.NL;
- print 'hideLoadBar("dw__loading");'.NL;
- print '//--><!]]></script>'.NL;
- flush();
-}
-
-/**
- * Display error on locked pages
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_locked(){
- global $ID;
- global $conf;
- global $lang;
- global $INFO;
-
- $locktime = filemtime(wikiLockFN($ID));
- $expire = @strftime($conf['dformat'], $locktime + $conf['locktime'] );
- $min = round(($conf['locktime'] - (time() - $locktime) )/60);
-
- print p_locale_xhtml('locked');
- print '<ul>';
- print '<li><div class="li"><strong>'.$lang['lockedby'].':</strong> '.$INFO['locked'].'</li>';
- print '<li><div class="li"><strong>'.$lang['lockexpire'].':</strong> '.$expire.' ('.$min.' min)</div></li>';
- print '</ul>';
-}
-
-/**
- * list old revisions
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function html_revisions($first=0){
- global $ID;
- global $INFO;
- global $conf;
- global $lang;
- /* we need to get one additionally log entry to be able to
- * decide if this is the last page or is there another one.
- * see html_recent()
- */
- $revisions = getRevisions($ID, $first, $conf['recent']+1);
- if(count($revisions)==0 && $first!=0){
- $first=0;
- $revisions = getRevisions($ID, $first, $conf['recent']+1);;
- }
- $hasNext = false;
- if (count($revisions)>$conf['recent']) {
- $hasNext = true;
- array_pop($revisions); // remove extra log entry
- }
-
- $date = @strftime($conf['dformat'],$INFO['lastmod']);
-
- print p_locale_xhtml('revisions');
- print '<form action="'.wl($ID).'" method="post" id="page__revisions">';
- print '<ul>';
- if($INFO['exists'] && $first==0){
- print (isset($INFO['meta']) && isset($INFO['meta']['last_change']) && $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) ? '<li class="minor">' : '<li>';
- print '<div class="li">';
- print '<input type="checkbox" name="rev2[]" value="current" /> ';
-
- print $date;
-
- print ' <img src="'.DOKU_BASE.'lib/images/blank.gif" width="15" height="11" alt="" /> ';
-
- print '<a class="wikilink1" href="'.wl($ID).'">'.$ID.'</a> ';
-
- print ' – ';
- print $INFO['sum'];
- print ' <span class="user">';
- print (empty($INFO['editor']))?('('.$lang['external_edit'].')'):$INFO['editor'];
- print '</span> ';
-
- print '('.$lang['current'].')';
- print '</div>';
- print '</li>';
- }
-
- foreach($revisions as $rev){
- $date = strftime($conf['dformat'],$rev);
- $info = getRevisionInfo($ID,$rev,true);
- $exists = page_exists($ID,$rev);
-
- print ($info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) ? '<li class="minor">' : '<li>';
- print '<div class="li">';
- if($exists){
- print '<input type="checkbox" name="rev2[]" value="'.$rev.'" /> ';
- }else{
- print '<img src="'.DOKU_BASE.'lib/images/blank.gif" width="14" height="11" alt="" /> ';
- }
- print $date;
-
- if($exists){
- print ' <a href="'.wl($ID,"rev=$rev,do=diff").'">';
- $p = array();
- $p['src'] = DOKU_BASE.'lib/images/diff.png';
- $p['width'] = 15;
- $p['height'] = 11;
- $p['title'] = $lang['diff'];
- $p['alt'] = $lang['diff'];
- $att = buildAttributes($p);
- print "<img $att />";
- print '</a> ';
-
- print '<a class="wikilink1" href="'.wl($ID,"rev=$rev").'">'.$ID.'</a>';
- }else{
- print ' <img src="'.DOKU_BASE.'lib/images/blank.gif" width="15" height="11" alt="" /> ';
- print $ID;
- }
-
- print ' – ';
- print htmlspecialchars($info['sum']);
- print ' <span class="user">';
- if($info['user']){
- print $info['user'];
- }else{
- print $info['ip'];
- }
- print '</span>';
-
- print '</div>';
- print '</li>';
- }
- print '</ul>';
- print '<input name="do[diff]" type="submit" value="'.$lang['diff2'].'" class="button" />';
- print '</form>';
-
- print '<div class="pagenav">';
- $last = $first + $conf['recent'];
- if ($first > 0) {
- $first -= $conf['recent'];
- if ($first < 0) $first = 0;
- print '<div class="pagenav-prev">';
- print html_btn('newer',$ID,"p",array('do' => 'revisions', 'first' => $first));
- print '</div>';
- }
- if ($hasNext) {
- print '<div class="pagenav-next">';
- print html_btn('older',$ID,"n",array('do' => 'revisions', 'first' => $last));
- print '</div>';
- }
- print '</div>';
-
-}
-
-/**
- * display recent changes
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function html_recent($first=0){
- global $conf;
- global $lang;
- global $ID;
- /* we need to get one additionally log entry to be able to
- * decide if this is the last page or is there another one.
- * This is the cheapest solution to get this information.
- */
- $recents = getRecents($first,$conf['recent'] + 1,getNS($ID));
- if(count($recents) == 0 && $first != 0){
- $first=0;
- $recents = getRecents($first,$conf['recent'] + 1,getNS($ID));
- }
- $hasNext = false;
- if (count($recents)>$conf['recent']) {
- $hasNext = true;
- array_pop($recents); // remove extra log entry
- }
-
- print p_locale_xhtml('recent');
- print '<ul>';
-
- foreach($recents as $recent){
- $date = strftime($conf['dformat'],$recent['date']);
- print ($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) ? '<li class="minor">' : '<li>';
- print '<div class="li">';
-
- print $date.' ';
-
- print '<a href="'.wl($recent['id'],"do=diff").'">';
- $p = array();
- $p['src'] = DOKU_BASE.'lib/images/diff.png';
- $p['width'] = 15;
- $p['height'] = 11;
- $p['title'] = $lang['diff'];
- $p['alt'] = $lang['diff'];
- $att = buildAttributes($p);
- print "<img $att />";
- print '</a> ';
-
- print '<a href="'.wl($recent['id'],"do=revisions").'">';
- $p = array();
- $p['src'] = DOKU_BASE.'lib/images/history.png';
- $p['width'] = 12;
- $p['height'] = 14;
- $p['title'] = $lang['btn_revs'];
- $p['alt'] = $lang['btn_revs'];
- $att = buildAttributes($p);
- print "<img $att />";
- print '</a> ';
-
- print html_wikilink(':'.$recent['id'],$conf['useheading']?NULL:$recent['id']);
- print ' – '.htmlspecialchars($recent['sum']);
-
- print ' <span class="user">';
- if($recent['user']){
- print $recent['user'];
- }else{
- print $recent['ip'];
- }
- print '</span>';
-
- print '</div>';
- print '</li>';
- }
- print '</ul>';
-
- print '<div class="pagenav">';
- $last = $first + $conf['recent'];
- if ($first > 0) {
- $first -= $conf['recent'];
- if ($first < 0) $first = 0;
- print '<div class="pagenav-prev">';
- print html_btn('newer','',"p",array('do' => 'recent', 'first' => $first));
- print '</div>';
- }
- if ($hasNext) {
- print '<div class="pagenav-next">';
- print html_btn('older','',"n",array('do' => 'recent', 'first' => $last));
- print '</div>';
- }
- print '</div>';
-}
-
-/**
- * Display page index
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_index($ns){
- require_once(DOKU_INC.'inc/search.php');
- global $conf;
- global $ID;
- $dir = $conf['datadir'];
- $ns = cleanID($ns);
- #fixme use appropriate function
- if(empty($ns)){
- $ns = dirname(str_replace(':','/',$ID));
- if($ns == '.') $ns ='';
- }
- $ns = utf8_encodeFN(str_replace(':','/',$ns));
-
- echo p_locale_xhtml('index');
- echo '<div id="index__tree">';
-
- $data = array();
- search($data,$conf['datadir'],'search_index',array('ns' => $ns));
- echo html_buildlist($data,'idx','html_list_index','html_li_index');
-
- echo '</div>';
-}
-
-/**
- * Index item formatter
- *
- * User function for html_buildlist()
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_list_index($item){
- global $ID;
- $ret = '';
- $base = ':'.$item['id'];
- $base = substr($base,strrpos($base,':')+1);
- if($item['type']=='d'){
- $ret .= '<a href="'.wl($ID,'idx='.rawurlencode($item['id'])).'" class="idx_dir"><strong>';
- $ret .= $base;
- $ret .= '</strong></a>';
- }else{
- $ret .= html_wikilink(':'.$item['id']);
- }
- return $ret;
-}
-
-/**
- * Index List item
- *
- * This user function is used in html_build_lidt to build the
- * <li> tags for namespaces when displaying the page index
- * it gives different classes to opened or closed "folders"
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_li_index($item){
- if($item['type'] == "f"){
- return '<li class="level'.$item['level'].'">';
- }elseif($item['open']){
- return '<li class="open">';
- }else{
- return '<li class="closed">';
- }
-}
-
-/**
- * Default List item
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_li_default($item){
- return '<li class="level'.$item['level'].'">';
-}
-
-/**
- * Build an unordered list
- *
- * Build an unordered list from the given $data array
- * Each item in the array has to have a 'level' property
- * the item itself gets printed by the given $func user
- * function. The second and optional function is used to
- * print the <li> tag. Both user function need to accept
- * a single item.
- *
- * Both user functions can be given as array to point to
- * a member of an object.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_buildlist($data,$class,$func,$lifunc='html_li_default'){
- $level = 0;
- $opens = 0;
- $ret = '';
-
- foreach ($data as $item){
-
- if( $item['level'] > $level ){
- //open new list
- for($i=0; $i<($item['level'] - $level); $i++){
- if ($i) $ret .= "<li class=\"clear\">\n";
- $ret .= "\n<ul class=\"$class\">\n";
- }
- }elseif( $item['level'] < $level ){
- //close last item
- $ret .= "</li>\n";
- for ($i=0; $i<($level - $item['level']); $i++){
- //close higher lists
- $ret .= "</ul>\n</li>\n";
- }
- }else{
- //close last item
- $ret .= "</li>\n";
- }
-
- //remember current level
- $level = $item['level'];
-
- //print item
- $ret .= call_user_func($lifunc,$item);
- $ret .= '<div class="li">';
-
- $ret .= call_user_func($func,$item);
- $ret .= '</div>';
- }
-
- //close remaining items and lists
- for ($i=0; $i < $level; $i++){
- $ret .= "</li></ul>\n";
- }
-
- return $ret;
-}
-
-/**
- * display backlinks
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Michael Klier <chi at chimeric.de>
- */
-function html_backlinks(){
- require_once(DOKU_INC.'inc/fulltext.php');
- global $ID;
- global $conf;
- global $lang;
-
- print p_locale_xhtml('backlinks');
-
- $data = ft_backlinks($ID);
-
- if(!empty($data)) {
- print '<ul class="idx">';
- foreach($data as $blink){
- print '<li><div class="li">';
- print html_wikilink(':'.$blink,$conf['useheading']?NULL:$blink);
- print '</div></li>';
- }
- print '</ul>';
- } else {
- print '<div class="level1"><p>' . $lang['nothingfound'] . '</p></div>';
- }
-}
-
-/**
- * show diff
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_diff($text='',$intro=true){
- require_once(DOKU_INC.'inc/DifferenceEngine.php');
- global $ID;
- global $REV;
- global $lang;
- global $conf;
-
- // we're trying to be clever here, revisions to compare can be either
- // given as rev and rev2 parameters, with rev2 being optional. Or in an
- // array in rev2.
- $rev1 = $REV;
-
- if(is_array($_REQUEST['rev2'])){
- $rev1 = (int) $_REQUEST['rev2'][0];
- $rev2 = (int) $_REQUEST['rev2'][1];
-
- if(!$rev1){
- $rev1 = $rev2;
- unset($rev2);
- }
- }else{
- $rev2 = (int) $_REQUEST['rev2'];
- }
-
- if($text){ // compare text to the most current revision
- $l_rev = '';
- $l_text = rawWiki($ID,'');
- $l_head = '<a class="wikilink1" href="'.wl($ID).'">'.
- $ID.' '.strftime($conf['dformat'], at filemtime(wikiFN($ID))).'</a> '.
- $lang['current'];
-
- $r_rev = '';
- $r_text = cleanText($text);
- $r_head = $lang['yours'];
- }else{
- if($rev1 && $rev2){ // two specific revisions wanted
- // make sure order is correct (older on the left)
- if($rev1 < $rev2){
- $l_rev = $rev1;
- $r_rev = $rev2;
- }else{
- $l_rev = $rev2;
- $r_rev = $rev1;
- }
- }elseif($rev1){ // single revision given, compare to current
- $r_rev = '';
- $l_rev = $rev1;
- }else{ // no revision was given, compare previous to current
- $r_rev = '';
- $revs = getRevisions($ID, 0, 1);
- $l_rev = $revs[0];
- }
-
- // when both revisions are empty then the page was created just now
- if(!$l_rev && !$r_rev){
- $l_text = '';
- }else{
- $l_text = rawWiki($ID,$l_rev);
- }
- $r_text = rawWiki($ID,$r_rev);
-
-
- if(!$l_rev){
- $l_head = '—';
- }else{
- $l_head = '<a class="wikilink1" href="'.wl($ID,"rev=$l_rev").'">'.
- $ID.' '.strftime($conf['dformat'],$l_rev).'</a>';
- }
-
- if($r_rev){
- $r_head = '<a class="wikilink1" href="'.wl($ID,"rev=$r_rev").'">'.
- $ID.' '.strftime($conf['dformat'],$r_rev).'</a>';
- }elseif($_rev = @filemtime(wikiFN($ID))){
- $r_head = '<a class="wikilink1" href="'.wl($ID).'">'.
- $ID.' '.strftime($conf['dformat'],$_rev).'</a> '.
- $lang['current'];
- }else{
- $r_head = '— '.$lang['current'];
- }
- }
-
- $df = new Diff(explode("\n",htmlspecialchars($l_text)),
- explode("\n",htmlspecialchars($r_text)));
-
- $tdf = new TableDiffFormatter();
- if($intro) print p_locale_xhtml('diff');
- ?>
- <table class="diff">
- <tr>
- <th colspan="2">
- <?php echo $l_head?>
- </th>
- <th colspan="2">
- <?php echo $r_head?>
- </th>
- </tr>
- <?php echo $tdf->format($df)?>
- </table>
- <?php
-}
-
-/**
- * show warning on conflict detection
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_conflict($text,$summary){
- global $ID;
- global $lang;
-
- print p_locale_xhtml('conflict');
- $form = new Doku_Form('dw__editform');
- $form->addHidden('id', $ID);
- $form->addHidden('wikitext', $text);
- $form->addHidden('summary', $summary);
- $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('accesskey'=>'s')));
- $form->addElement(form_makeButton('submit', 'cancel', $lang['btn_cancel']));
- html_form('conflict', $form);
- print '<br /><br /><br /><br />'.NL;
-}
-
-/**
- * Prints the global message array
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_msgarea(){
- global $MSG;
-
- if(!isset($MSG)) return;
-
- foreach($MSG as $msg){
- print '<div class="'.$msg['lvl'].'">';
- print $msg['msg'];
- print '</div>';
- }
-}
-
-/**
- * Prints the registration form
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_register(){
- global $lang;
- global $conf;
- global $ID;
-
- print p_locale_xhtml('register');
- print '<div class="centeralign">'.NL;
- $form = new Doku_Form('dw__register', wl($ID));
- $form->startFieldset($lang['register']);
- $form->addHidden('do', 'register');
- $form->addHidden('save', '1');
- $form->addElement(form_makeTextField('login', $_POST['login'], $lang['user'], null, 'block', array('size'=>'50')));
- if (!$conf['autopasswd']) {
- $form->addElement(form_makePasswordField('pass', $lang['pass'], '', 'block', array('size'=>'50')));
- $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50')));
- }
- $form->addElement(form_makeTextField('fullname', $_POST['fullname'], $lang['fullname'], '', 'block', array('size'=>'50')));
- $form->addElement(form_makeTextField('email', $_POST['email'], $lang['email'], '', 'block', array('size'=>'50')));
- $form->addElement(form_makeButton('submit', '', $lang['register']));
- $form->endFieldset();
- html_form('register', $form);
-
- print '</div>'.NL;
-}
-
-/**
- * Print the update profile form
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_updateprofile(){
- global $lang;
- global $conf;
- global $ID;
- global $INFO;
- global $auth;
-
- print p_locale_xhtml('updateprofile');
-
- if (empty($_POST['fullname'])) $_POST['fullname'] = $INFO['userinfo']['name'];
- if (empty($_POST['email'])) $_POST['email'] = $INFO['userinfo']['mail'];
- print '<div class="centeralign">'.NL;
- $form = new Doku_Form('dw__register', wl($ID));
- $form->startFieldset($lang['profile']);
- $form->addHidden('do', 'profile');
- $form->addHidden('save', '1');
- $form->addElement(form_makeTextField('fullname', $_SERVER['REMOTE_USER'], $lang['user'], '', 'block', array('size'=>'50', 'disabled'=>'disabled')));
- $attr = array('size'=>'50');
- if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
- $form->addElement(form_makeTextField('fullname', $_POST['fullname'], $lang['fullname'], '', 'block', $attr));
- $attr = array('size'=>'50');
- if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
- $form->addElement(form_makeTextField('email', $_POST['email'], $lang['email'], '', 'block', $attr));
- $form->addElement(form_makeTag('br'));
- if ($auth->canDo('modPass')) {
- $form->addElement(form_makePasswordField('newpass', $lang['newpass'], '', 'block', array('size'=>'50')));
- $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50')));
- }
- if ($conf['profileconfirm']) {
- $form->addElement(form_makeTag('br'));
- $form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50')));
- }
- $form->addElement(form_makeButton('submit', '', $lang['btn_save']));
- $form->addElement(form_makeButton('reset', '', $lang['btn_reset']));
- $form->endFieldset();
- html_form('updateprofile', $form);
- print '</div>'.NL;
-}
-
-/**
- * This displays the edit form (lots of logic included)
- *
- * @fixme this is a huge lump of code and should be modularized
- * @triggers HTML_PAGE_FROMTEMPLATE
- * @triggers HTML_EDITFORM_INJECTION
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_edit($text=null,$include='edit'){ //FIXME: include needed?
- global $ID;
- global $REV;
- global $DATE;
- global $RANGE;
- global $PRE;
- global $SUF;
- global $INFO;
- global $SUM;
- global $lang;
- global $conf;
-
- //set summary default
- if(!$SUM){
- if($REV){
- $SUM = $lang['restored'];
- }elseif(!$INFO['exists']){
- $SUM = $lang['created'];
- }
- }
-
- //no text? Load it!
- if(!isset($text)){
- $pr = false; //no preview mode
- if($INFO['exists']){
- if($RANGE){
- list($PRE,$text,$SUF) = rawWikiSlices($RANGE,$ID,$REV);
- }else{
- $text = rawWiki($ID,$REV);
- }
- $check = md5($text);
- $mod = false;
- }else{
- //try to load a pagetemplate
- $data = array($ID);
- $text = trigger_event('HTML_PAGE_FROMTEMPLATE',$data,'pageTemplate',true);
- $check = md5('');
- $mod = $text!=='';
- }
- }else{
- $pr = true; //preview mode
- if (isset($_REQUEST['changecheck'])) {
- $check = $_REQUEST['changecheck'];
- $mod = md5($text)!==$check;
- } else {
- // Why? Assume default text is unmodified.
- $check = md5($text);
- $mod = false;
- }
- }
-
- $wr = $INFO['writable'];
- if($wr){
- if ($REV) print p_locale_xhtml('editrev');
- print p_locale_xhtml($include);
- }else{
- // check pseudo action 'source'
- if(!actionOK('source')){
- msg('Command disabled: source',-1);
- return;
- }
- print p_locale_xhtml('read');
- }
- if(!$DATE) $DATE = $INFO['lastmod'];
-
-
-?>
- <div style="width:99%;">
-
- <div class="toolbar">
- <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.strftime($conf['dformat']);?></div>
- <div id="tool__bar"><?php if($wr){?><a href="<?php echo DOKU_BASE?>lib/exe/mediamanager.php?ns=<?php echo $INFO['namespace']?>"
- target="_blank"><?php echo $lang['mediaselect'] ?></a><?php }?></div>
-
- <?php if($wr){?>
- <script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--
- <?php /* sets changed to true when previewed */?>
- textChanged = <?php ($mod) ? print 'true' : print 'false' ?>;
- //--><!]]></script>
- <span id="spell__action"></span>
- <div id="spell__suggest"></div>
- <?php } ?>
- </div>
- <div id="spell__result"></div>
-<?php
- $form = new Doku_Form('dw__editform');
- $form->addHidden('id', $ID);
- $form->addHidden('rev', $REV);
- $form->addHidden('date', $DATE);
- $form->addHidden('prefix', $PRE);
- $form->addHidden('suffix', $SUF);
- $form->addHidden('changecheck', $check);
- $attr = array('tabindex'=>'1');
- if (!$wr) $attr['readonly'] = 'readonly';
- $form->addElement(form_makeWikiText($text, $attr));
- $form->addElement(form_makeOpenTag('div', array('id'=>'wiki__editbar')));
- $form->addElement(form_makeOpenTag('div', array('id'=>'size__ctl')));
- $form->addElement(form_makeCloseTag('div'));
- if ($wr) {
- $form->addElement(form_makeOpenTag('div', array('class'=>'editButtons')));
- $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('id'=>'edbtn__save', 'accesskey'=>'s', 'tabindex'=>'4')));
- $form->addElement(form_makeButton('submit', 'preview', $lang['btn_preview'], array('id'=>'edbtn__preview', 'accesskey'=>'p', 'tabindex'=>'5')));
- $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_cancel'], array('tabindex'=>'6')));
- $form->addElement(form_makeCloseTag('div'));
- $form->addElement(form_makeOpenTag('div', array('class'=>'summary')));
- $form->addElement(form_makeTextField('summary', $SUM, $lang['summary'], 'edit__summary', 'nowrap', array('size'=>'50', 'tabindex'=>'2')));
- $elem = html_minoredit();
- if ($elem) $form->addElement($elem);
- $form->addElement(form_makeCloseTag('div'));
- }
- $form->addElement(form_makeCloseTag('div'));
- html_form('edit', $form);
- print '</div>'.NL;
-}
-
-/**
- * Adds a checkbox for minor edits for logged in users
- *
- * @author Andrea Gohr <andi at splitbrain.org>
- */
-function html_minoredit(){
- global $conf;
- global $lang;
- // minor edits are for logged in users only
- if(!$conf['useacl'] || !$_SERVER['REMOTE_USER']){
- return false;
- }
-
- $p = array();
- $p['tabindex'] = 3;
- if(!empty($_REQUEST['minor'])) $p['checked']='checked';
- return form_makeCheckboxField('minor', '1', $lang['minoredit'], 'minoredit', 'nowrap', $p);
-}
-
-/**
- * prints some debug info
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_debug(){
- global $conf;
- global $lang;
- global $auth;
- global $INFO;
-
- //remove sensitive data
- $cnf = $conf;
- $cnf['auth']='***';
- $cnf['notify']='***';
- $cnf['ftp']='***';
- $nfo = $INFO;
- $nfo['userinfo'] = '***';
- $ses = $_SESSION;
- $ses[$conf['title']]['auth'] = '***';
-
- print '<html><body>';
-
- print '<p>When reporting bugs please send all the following ';
- print 'output as a mail to andi at splitbrain.org ';
- print 'The best way to do this is to save this page in your browser</p>';
-
- print '<b>$INFO:</b><pre>';
- print_r($nfo);
- print '</pre>';
-
- print '<b>$_SERVER:</b><pre>';
- print_r($_SERVER);
- print '</pre>';
-
- print '<b>$conf:</b><pre>';
- print_r($cnf);
- print '</pre>';
-
- print '<b>DOKU_BASE:</b><pre>';
- print DOKU_BASE;
- print '</pre>';
-
- print '<b>abs DOKU_BASE:</b><pre>';
- print DOKU_URL;
- print '</pre>';
-
- print '<b>rel DOKU_BASE:</b><pre>';
- print dirname($_SERVER['PHP_SELF']).'/';
- print '</pre>';
-
- print '<b>PHP Version:</b><pre>';
- print phpversion();
- print '</pre>';
-
- print '<b>locale:</b><pre>';
- print setlocale(LC_ALL,0);
- print '</pre>';
-
- print '<b>encoding:</b><pre>';
- print $lang['encoding'];
- print '</pre>';
-
- if($auth){
- print '<b>Auth backend capabilities:</b><pre>';
- print_r($auth->cando);
- print '</pre>';
- }
-
- print '<b>$_SESSION:</b><pre>';
- print_r($ses);
- print '</pre>';
-
- print '<b>Environment:</b><pre>';
- print_r($_ENV);
- print '</pre>';
-
- print '<b>PHP settings:</b><pre>';
- $inis = ini_get_all();
- print_r($inis);
- print '</pre>';
-
- print '</body></html>';
-}
-
-function html_admin(){
- global $ID;
- global $INFO;
- global $lang;
- global $conf;
-
- print p_locale_xhtml('admin');
-
- // build menu of admin functions from the plugins that handle them
- $pluginlist = plugin_list('admin');
- $menu = array();
- foreach ($pluginlist as $p) {
- if($obj =& plugin_load('admin',$p) === NULL) continue;
-
- // check permissions
- if($obj->forAdminOnly() && !$INFO['isadmin']) continue;
-
- $menu[] = array('plugin' => $p,
- 'prompt' => $obj->getMenuText($conf['lang']),
- 'sort' => $obj->getMenuSort()
- );
- }
-
- usort($menu, 'p_sort_modes');
-
- // output the menu
- ptln('<ul>');
-
- foreach ($menu as $item) {
- if (!$item['prompt']) continue;
- ptln(' <li><div class="li"><a href="'.wl($ID, 'do=admin&page='.$item['plugin']).'">'.$item['prompt'].'</a></div></li>');
- }
-
- ptln('</ul>');
-}
-
-/**
- * Form to request a new password for an existing account
- *
- * @author Benoit Chesneau <benoit at bchesneau.info>
- */
-function html_resendpwd() {
- global $lang;
- global $conf;
- global $ID;
-
- print p_locale_xhtml('resendpwd');
- print '<div class="centeralign">'.NL;
- $form = new Doku_Form('dw__resendpwd', wl($ID));
- $form->startFieldset($lang['resendpwd']);
- $form->addHidden('do', 'resendpwd');
- $form->addHidden('save', '1');
- $form->addElement(form_makeTag('br'));
- $form->addElement(form_makeTextField('login', $_POST['login'], $lang['user'], '', 'block'));
- $form->addElement(form_makeTag('br'));
- $form->addElement(form_makeTag('br'));
- $form->addElement(form_makeButton('submit', '', $lang['btn_resendpwd']));
- $form->endFieldset();
- html_form('resendpwd', $form);
- print '</div>'.NL;
-}
-
-/**
- * Return the TOC rendered to XHTML
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function html_TOC($toc){
- if(!count($toc)) return '';
- global $lang;
- $out = '<!-- TOC START -->'.DOKU_LF;
- $out .= '<div class="toc">'.DOKU_LF;
- $out .= '<div class="tocheader toctoggle" id="toc__header">';
- $out .= $lang['toc'];
- $out .= '</div>'.DOKU_LF;
- $out .= '<div id="toc__inside">'.DOKU_LF;
- $out .= html_buildlist($toc,'toc','html_list_toc');
- $out .= '</div>'.DOKU_LF.'</div>'.DOKU_LF;
- $out .= '<!-- TOC END -->'.DOKU_LF;
- return $out; }
-
-/**
- * Callback for html_buildlist
- */
-function html_list_toc($item){
- if($item['hid']){
- $link = '#'.$item['hid'];
- }else{
- $link = $item['link'];
- }
-
- return '<span class="li"><a href="'.$link.'" class="toc">'.
- hsc($item['title']).'</a></span>';
-}
-
-/**
- * Helper function to build TOC items
- *
- * Returns an array ready to be added to a TOC array
- *
- * @param string $link - where to link (if $hash set to '#' it's a local anchor)
- * @param string $text - what to display in the TOC
- * @param int $level - nesting level
- * @param string $hash - is prepended to the given $link, set blank if you want full links
- */
-function html_mktocitem($link, $text, $level, $hash='#'){
- global $conf;
- return array( 'link' => $hash.$link,
- 'title' => $text,
- 'type' => 'ul',
- 'level' => $level);
-}
-
-/**
- * Output a Doku_Form object.
- * Triggers an event with the form name: HTML_{$name}FORM_OUTPUT
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function html_form($name, &$form) {
- // Safety check in case the caller forgets.
- $form->endFieldset();
- trigger_event('HTML_'.strtoupper($name).'FORM_OUTPUT', $form, 'html_form_output', false);
-}
-
-/**
- * Form print function.
- * Just calls printForm() on the data object.
- */
-function html_form_output($data) {
- $data->printForm();
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * HTML output functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+if(!defined('NL')) define('NL',"\n");
+require_once(DOKU_INC.'inc/parserutils.php');
+require_once(DOKU_INC.'inc/form.php');
+
+/**
+ * Convenience function to quickly build a wikilink
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_wikilink($id,$name=NULL,$search=''){
+ static $xhtml_renderer = NULL;
+ if(is_null($xhtml_renderer)){
+ require_once(DOKU_INC.'inc/parser/xhtml.php');
+ $xhtml_renderer = new Doku_Renderer_xhtml();
+ }
+
+ return $xhtml_renderer->internallink($id,$name,$search,true);
+}
+
+/**
+ * Helps building long attribute lists
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_attbuild($attributes){
+ $ret = '';
+ foreach ( $attributes as $key => $value ) {
+ $ret .= $key.'="'.formtext($value).'" ';
+ }
+ return trim($ret);
+}
+
+/**
+ * The loginform
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_login(){
+ global $lang;
+ global $conf;
+ global $ID;
+ global $auth;
+
+ print p_locale_xhtml('login');
+ print '<div class="centeralign">'.NL;
+ $form = new Doku_Form('dw__login');
+ $form->startFieldset($lang['btn_login']);
+ $form->addHidden('id', $ID);
+ $form->addHidden('do', 'login');
+ $form->addElement(form_makeTextField('u', $_REQUEST['u'], $lang['user'], 'focus__this', 'block'));
+ $form->addElement(form_makePasswordField('p', $lang['pass'], '', 'block'));
+ $form->addElement(form_makeCheckboxField('r', '1', $lang['remember'], 'remember__me', 'simple'));
+ $form->addElement(form_makeButton('submit', '', $lang['btn_login']));
+ $form->endFieldset();
+ html_form('login', $form);
+
+ if($auth && $auth->canDo('addUser') && actionOK('register')){
+ print '<p>';
+ print $lang['reghere'];
+ print ': <a href="'.wl($ID,'do=register').'" rel="nofollow" class="wikilink1">'.$lang['register'].'</a>';
+ print '</p>';
+ }
+
+ if ($auth && $auth->canDo('modPass') && actionOK('resendpwd')) {
+ print '<p>';
+ print $lang['pwdforget'];
+ print ': <a href="'.wl($ID,'do=resendpwd').'" rel="nofollow" class="wikilink1">'.$lang['btn_resendpwd'].'</a>';
+ print '</p>';
+ }
+ print '</div>'.NL;
+}
+
+/**
+ * prints a section editing button
+ * used as a callback in html_secedit
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_secedit_button($matches){
+ global $ID;
+ global $INFO;
+
+ $section = $matches[2];
+ $name = $matches[1];
+
+ $secedit = '';
+ $secedit .= '<div class="secedit">';
+ $secedit .= html_btn('secedit',$ID,'',
+ array('do' => 'edit',
+ 'lines' => "$section",
+ 'rev' => $INFO['lastmod']),
+ 'post', $name);
+ $secedit .= '</div>';
+ return $secedit;
+}
+
+/**
+ * inserts section edit buttons if wanted or removes the markers
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_secedit($text,$show=true){
+ global $INFO;
+
+ if($INFO['writable'] && $show && !$INFO['rev']){
+ $text = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#',
+ 'html_secedit_button', $text);
+ }else{
+ $text = preg_replace('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#','',$text);
+ }
+
+ return $text;
+}
+
+/**
+ * Just the back to top button (in its own form)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_topbtn(){
+ global $lang;
+
+ $ret = '';
+ $ret = '<a class="nolink" href="#dokuwiki__top"><input type="button" class="button" value="'.$lang['btn_top'].'" onclick="window.scrollTo(0, 0)" title="'.$lang['btn_top'].'" /></a>';
+
+ return $ret;
+}
+
+/**
+ * Displays a button (using its own form)
+ * If tooltip exists, the access key tooltip is replaced.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_btn($name,$id,$akey,$params,$method='get',$tooltip=''){
+ global $conf;
+ global $lang;
+
+ $label = $lang['btn_'.$name];
+
+ $ret = '';
+ $tip = '';
+
+ //filter id (without urlencoding)
+ $id = idfilter($id,false);
+
+ //make nice URLs even for buttons
+ if($conf['userewrite'] == 2){
+ $script = DOKU_BASE.DOKU_SCRIPT.'/'.$id;
+ }elseif($conf['userewrite']){
+ $script = DOKU_BASE.$id;
+ }else{
+ $script = DOKU_BASE.DOKU_SCRIPT;
+ $params['id'] = $id;
+ }
+
+ $ret .= '<form class="button btn_'.$name.'" method="'.$method.'" action="'.$script.'"><div class="no">';
+
+ if(is_array($params)){
+ reset($params);
+ while (list($key, $val) = each($params)) {
+ $ret .= '<input type="hidden" name="'.$key.'" ';
+ $ret .= 'value="'.htmlspecialchars($val).'" />';
+ }
+ }
+
+ if ($tooltip!='') {
+ $tip = htmlspecialchars($tooltip);
+ }else{
+ $tip = htmlspecialchars($label);
+ }
+
+ $ret .= '<input type="submit" value="'.htmlspecialchars($label).'" class="button" ';
+ if($akey){
+ $tip .= ' [ALT+'.strtoupper($akey).']';
+ $ret .= 'accesskey="'.$akey.'" ';
+ }
+ $ret .= 'title="'.$tip.'" ';
+ $ret .= '/>';
+ $ret .= '</div></form>';
+
+ return $ret;
+}
+
+/**
+ * show a wiki page
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_show($txt=''){
+ global $ID;
+ global $REV;
+ global $HIGH;
+ global $INFO;
+ //disable section editing for old revisions or in preview
+ if($txt || $REV){
+ $secedit = false;
+ }else{
+ $secedit = true;
+ }
+
+ if ($txt){
+ //PreviewHeader
+ echo '<br id="scroll__here" />';
+ echo p_locale_xhtml('preview');
+ echo '<div class="preview">';
+ $html = html_secedit(p_render('xhtml',p_get_instructions($txt),$info),$secedit);
+ if($INFO['prependTOC']) $html = tpl_toc(true).$html;
+ echo $html;
+ echo '<div class="clearer"></div>';
+ echo '</div>';
+
+ }else{
+ if ($REV) print p_locale_xhtml('showrev');
+ $html = p_wiki_xhtml($ID,$REV,true);
+ $html = html_secedit($html,$secedit);
+ if($INFO['prependTOC']) $html = tpl_toc(true).$html;
+ $html = html_hilight($html,$HIGH);
+ echo $html;
+ }
+}
+
+/**
+ * ask the user about how to handle an exisiting draft
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_draft(){
+ global $INFO;
+ global $ID;
+ global $lang;
+ global $conf;
+ $draft = unserialize(io_readFile($INFO['draft'],false));
+ $text = cleanText(con($draft['prefix'],$draft['text'],$draft['suffix'],true));
+
+ print p_locale_xhtml('draft');
+ $form = new Doku_Form('dw__editform');
+ $form->addHidden('id', $ID);
+ $form->addHidden('date', $draft['date']);
+ $form->addElement(form_makeWikiText($text, array('readonly'=>'readonly')));
+ $form->addElement(form_makeOpenTag('div', array('id'=>'draft__status')));
+ $form->addElement($lang['draftdate'].' '. strftime($conf['dformat'],filemtime($INFO['draft'])));
+ $form->addElement(form_makeCloseTag('div'));
+ $form->addElement(form_makeButton('submit', 'recover', $lang['btn_recover'], array('tabindex'=>'1')));
+ $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_draftdel'], array('tabindex'=>'2')));
+ $form->addElement(form_makeButton('submit', 'show', $lang['btn_cancel'], array('tabindex'=>'3')));
+ html_form('draft', $form);
+}
+
+/**
+ * Highlights searchqueries in HTML code
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+function html_hilight($html,$phrases){
+ $regex = join('|',array_map('preg_quote_cb',array_filter((array) $phrases)));
+
+ if ($regex === '') return $html;
+ $html = preg_replace_callback("/((<[^>]*)|$regex)/ui",'html_hilight_callback',$html);
+ return $html;
+}
+
+/**
+ * Callback used by html_hilight()
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+function html_hilight_callback($m) {
+ $hlight = unslash($m[0]);
+ if ( !isset($m[2])) {
+ $hlight = '<span class="search_hit">'.$hlight.'</span>';
+ }
+ return $hlight;
+}
+
+/**
+ * Run a search and display the result
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_search(){
+ require_once(DOKU_INC.'inc/search.php');
+ require_once(DOKU_INC.'inc/fulltext.php');
+ global $conf;
+ global $QUERY;
+ global $ID;
+ global $lang;
+
+ print p_locale_xhtml('searchpage');
+ flush();
+
+ //check if search is restricted to namespace
+ if(preg_match('/([^@]*)@([^@]*)/',$QUERY,$match)) {
+ $id = cleanID($match[1]);
+ if(empty($id)) {
+ print '<div class="nothing">'.$lang['nothingfound'].'</div>';
+ flush();
+ return;
+ }
+ } else {
+ $id = cleanID($QUERY);
+ }
+
+ //show progressbar
+ print '<div class="centeralign" id="dw__loading">'.NL;
+ print '<script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--'.NL;
+ print 'showLoadBar();'.NL;
+ print '//--><!]]></script>'.NL;
+ print '<br /></div>'.NL;
+ flush();
+
+ //do quick pagesearch
+ $data = array();
+
+ $data = ft_pageLookup($id);
+ if(count($data)){
+ sort($data);
+ print '<div class="search_quickresult">';
+ print '<h3>'.$lang['quickhits'].':</h3>';
+ print '<ul class="search_quickhits">';
+ foreach($data as $id){
+ print '<li> ';
+ print html_wikilink(':'.$id,noNS($id));
+ print '</li> ';
+ }
+ print '</ul> ';
+ //clear float (see http://www.complexspiral.com/publications/containing-floats/)
+ print '<div class="clearer"> </div>';
+ print '</div>';
+ }
+ flush();
+
+ //do fulltext search
+ $data = ft_pageSearch($QUERY,$regex);
+ if(count($data)){
+ $num = 1;
+ foreach($data as $id => $cnt){
+ print '<div class="search_result">';
+ print html_wikilink(':'.$id,$conf['useheading']?NULL:$id,$regex);
+ print ': <span class="search_cnt">'.$cnt.' '.$lang['hits'].'</span><br />';
+ if($num < 15){ // create snippets for the first number of matches only #FIXME add to conf ?
+ print '<div class="search_snippet">'.ft_snippet($id,$regex).'</div>';
+ }
+ print '</div>';
+ flush();
+ $num++;
+ }
+ }else{
+ print '<div class="nothing">'.$lang['nothingfound'].'</div>';
+ }
+
+ //hide progressbar
+ print '<script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--'.NL;
+ print 'hideLoadBar("dw__loading");'.NL;
+ print '//--><!]]></script>'.NL;
+ flush();
+}
+
+/**
+ * Display error on locked pages
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_locked(){
+ global $ID;
+ global $conf;
+ global $lang;
+ global $INFO;
+
+ $locktime = filemtime(wikiLockFN($ID));
+ $expire = @strftime($conf['dformat'], $locktime + $conf['locktime'] );
+ $min = round(($conf['locktime'] - (time() - $locktime) )/60);
+
+ print p_locale_xhtml('locked');
+ print '<ul>';
+ print '<li><div class="li"><strong>'.$lang['lockedby'].':</strong> '.$INFO['locked'].'</li>';
+ print '<li><div class="li"><strong>'.$lang['lockexpire'].':</strong> '.$expire.' ('.$min.' min)</div></li>';
+ print '</ul>';
+}
+
+/**
+ * list old revisions
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function html_revisions($first=0){
+ global $ID;
+ global $INFO;
+ global $conf;
+ global $lang;
+ /* we need to get one additionally log entry to be able to
+ * decide if this is the last page or is there another one.
+ * see html_recent()
+ */
+ $revisions = getRevisions($ID, $first, $conf['recent']+1);
+ if(count($revisions)==0 && $first!=0){
+ $first=0;
+ $revisions = getRevisions($ID, $first, $conf['recent']+1);;
+ }
+ $hasNext = false;
+ if (count($revisions)>$conf['recent']) {
+ $hasNext = true;
+ array_pop($revisions); // remove extra log entry
+ }
+
+ $date = @strftime($conf['dformat'],$INFO['lastmod']);
+
+ print p_locale_xhtml('revisions');
+ print '<form action="'.wl($ID).'" method="post" id="page__revisions">';
+ print '<ul>';
+ if($INFO['exists'] && $first==0){
+ print (isset($INFO['meta']) && isset($INFO['meta']['last_change']) && $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) ? '<li class="minor">' : '<li>';
+ print '<div class="li">';
+ print '<input type="checkbox" name="rev2[]" value="current" /> ';
+
+ print $date;
+
+ print ' <img src="'.DOKU_BASE.'lib/images/blank.gif" width="15" height="11" alt="" /> ';
+
+ print '<a class="wikilink1" href="'.wl($ID).'">'.$ID.'</a> ';
+
+ print ' – ';
+ print htmlspecialchars($INFO['sum']);
+ print ' <span class="user">';
+ print (empty($INFO['editor']))?('('.$lang['external_edit'].')'):htmlspecialchars($INFO['editor']);
+ print '</span> ';
+
+ print '('.$lang['current'].')';
+ print '</div>';
+ print '</li>';
+ }
+
+ foreach($revisions as $rev){
+ $date = strftime($conf['dformat'],$rev);
+ $info = getRevisionInfo($ID,$rev,true);
+ $exists = page_exists($ID,$rev);
+
+ print ($info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) ? '<li class="minor">' : '<li>';
+ print '<div class="li">';
+ if($exists){
+ print '<input type="checkbox" name="rev2[]" value="'.$rev.'" /> ';
+ }else{
+ print '<img src="'.DOKU_BASE.'lib/images/blank.gif" width="14" height="11" alt="" /> ';
+ }
+ print $date;
+
+ if($exists){
+ print ' <a href="'.wl($ID,"rev=$rev,do=diff").'">';
+ $p = array();
+ $p['src'] = DOKU_BASE.'lib/images/diff.png';
+ $p['width'] = 15;
+ $p['height'] = 11;
+ $p['title'] = $lang['diff'];
+ $p['alt'] = $lang['diff'];
+ $att = buildAttributes($p);
+ print "<img $att />";
+ print '</a> ';
+
+ print '<a class="wikilink1" href="'.wl($ID,"rev=$rev").'">'.$ID.'</a>';
+ }else{
+ print ' <img src="'.DOKU_BASE.'lib/images/blank.gif" width="15" height="11" alt="" /> ';
+ print $ID;
+ }
+
+ print ' – ';
+ print htmlspecialchars($info['sum']);
+ print ' <span class="user">';
+ if($info['user']){
+ print htmlspecialchars($info['user']);
+ }else{
+ print $info['ip'];
+ }
+ print '</span>';
+
+ print '</div>';
+ print '</li>';
+ }
+ print '</ul>';
+ print '<input name="do[diff]" type="submit" value="'.$lang['diff2'].'" class="button" />';
+ print '</form>';
+
+ print '<div class="pagenav">';
+ $last = $first + $conf['recent'];
+ if ($first > 0) {
+ $first -= $conf['recent'];
+ if ($first < 0) $first = 0;
+ print '<div class="pagenav-prev">';
+ print html_btn('newer',$ID,"p",array('do' => 'revisions', 'first' => $first));
+ print '</div>';
+ }
+ if ($hasNext) {
+ print '<div class="pagenav-next">';
+ print html_btn('older',$ID,"n",array('do' => 'revisions', 'first' => $last));
+ print '</div>';
+ }
+ print '</div>';
+
+}
+
+/**
+ * display recent changes
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function html_recent($first=0){
+ global $conf;
+ global $lang;
+ global $ID;
+ /* we need to get one additionally log entry to be able to
+ * decide if this is the last page or is there another one.
+ * This is the cheapest solution to get this information.
+ */
+ $recents = getRecents($first,$conf['recent'] + 1,getNS($ID));
+ if(count($recents) == 0 && $first != 0){
+ $first=0;
+ $recents = getRecents($first,$conf['recent'] + 1,getNS($ID));
+ }
+ $hasNext = false;
+ if (count($recents)>$conf['recent']) {
+ $hasNext = true;
+ array_pop($recents); // remove extra log entry
+ }
+
+ print p_locale_xhtml('recent');
+ print '<ul>';
+
+ foreach($recents as $recent){
+ $date = strftime($conf['dformat'],$recent['date']);
+ print ($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) ? '<li class="minor">' : '<li>';
+ print '<div class="li">';
+
+ print $date.' ';
+
+ print '<a href="'.wl($recent['id'],"do=diff").'">';
+ $p = array();
+ $p['src'] = DOKU_BASE.'lib/images/diff.png';
+ $p['width'] = 15;
+ $p['height'] = 11;
+ $p['title'] = $lang['diff'];
+ $p['alt'] = $lang['diff'];
+ $att = buildAttributes($p);
+ print "<img $att />";
+ print '</a> ';
+
+ print '<a href="'.wl($recent['id'],"do=revisions").'">';
+ $p = array();
+ $p['src'] = DOKU_BASE.'lib/images/history.png';
+ $p['width'] = 12;
+ $p['height'] = 14;
+ $p['title'] = $lang['btn_revs'];
+ $p['alt'] = $lang['btn_revs'];
+ $att = buildAttributes($p);
+ print "<img $att />";
+ print '</a> ';
+
+ print html_wikilink(':'.$recent['id'],$conf['useheading']?NULL:$recent['id']);
+ print ' – '.htmlspecialchars($recent['sum']);
+
+ print ' <span class="user">';
+ if($recent['user']){
+ print htmlspecialchars($recent['user']);
+ }else{
+ print $recent['ip'];
+ }
+ print '</span>';
+
+ print '</div>';
+ print '</li>';
+ }
+ print '</ul>';
+
+ print '<div class="pagenav">';
+ $last = $first + $conf['recent'];
+ if ($first > 0) {
+ $first -= $conf['recent'];
+ if ($first < 0) $first = 0;
+ print '<div class="pagenav-prev">';
+ print html_btn('newer','',"p",array('do' => 'recent', 'first' => $first));
+ print '</div>';
+ }
+ if ($hasNext) {
+ print '<div class="pagenav-next">';
+ print html_btn('older','',"n",array('do' => 'recent', 'first' => $last));
+ print '</div>';
+ }
+ print '</div>';
+}
+
+/**
+ * Display page index
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_index($ns){
+ require_once(DOKU_INC.'inc/search.php');
+ global $conf;
+ global $ID;
+ $dir = $conf['datadir'];
+ $ns = cleanID($ns);
+ #fixme use appropriate function
+ if(empty($ns)){
+ $ns = dirname(str_replace(':','/',$ID));
+ if($ns == '.') $ns ='';
+ }
+ $ns = utf8_encodeFN(str_replace(':','/',$ns));
+
+ echo p_locale_xhtml('index');
+ echo '<div id="index__tree">';
+
+ $data = array();
+ search($data,$conf['datadir'],'search_index',array('ns' => $ns));
+ echo html_buildlist($data,'idx','html_list_index','html_li_index');
+
+ echo '</div>';
+}
+
+/**
+ * Index item formatter
+ *
+ * User function for html_buildlist()
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_list_index($item){
+ global $ID;
+ $ret = '';
+ $base = ':'.$item['id'];
+ $base = substr($base,strrpos($base,':')+1);
+ if($item['type']=='d'){
+ $ret .= '<a href="'.wl($ID,'idx='.rawurlencode($item['id'])).'" class="idx_dir"><strong>';
+ $ret .= $base;
+ $ret .= '</strong></a>';
+ }else{
+ $ret .= html_wikilink(':'.$item['id']);
+ }
+ return $ret;
+}
+
+/**
+ * Index List item
+ *
+ * This user function is used in html_build_lidt to build the
+ * <li> tags for namespaces when displaying the page index
+ * it gives different classes to opened or closed "folders"
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_li_index($item){
+ if($item['type'] == "f"){
+ return '<li class="level'.$item['level'].'">';
+ }elseif($item['open']){
+ return '<li class="open">';
+ }else{
+ return '<li class="closed">';
+ }
+}
+
+/**
+ * Default List item
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_li_default($item){
+ return '<li class="level'.$item['level'].'">';
+}
+
+/**
+ * Build an unordered list
+ *
+ * Build an unordered list from the given $data array
+ * Each item in the array has to have a 'level' property
+ * the item itself gets printed by the given $func user
+ * function. The second and optional function is used to
+ * print the <li> tag. Both user function need to accept
+ * a single item.
+ *
+ * Both user functions can be given as array to point to
+ * a member of an object.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_buildlist($data,$class,$func,$lifunc='html_li_default'){
+ $level = 0;
+ $opens = 0;
+ $ret = '';
+
+ foreach ($data as $item){
+
+ if( $item['level'] > $level ){
+ //open new list
+ for($i=0; $i<($item['level'] - $level); $i++){
+ if ($i) $ret .= "<li class=\"clear\">\n";
+ $ret .= "\n<ul class=\"$class\">\n";
+ }
+ }elseif( $item['level'] < $level ){
+ //close last item
+ $ret .= "</li>\n";
+ for ($i=0; $i<($level - $item['level']); $i++){
+ //close higher lists
+ $ret .= "</ul>\n</li>\n";
+ }
+ }else{
+ //close last item
+ $ret .= "</li>\n";
+ }
+
+ //remember current level
+ $level = $item['level'];
+
+ //print item
+ $ret .= call_user_func($lifunc,$item);
+ $ret .= '<div class="li">';
+
+ $ret .= call_user_func($func,$item);
+ $ret .= '</div>';
+ }
+
+ //close remaining items and lists
+ for ($i=0; $i < $level; $i++){
+ $ret .= "</li></ul>\n";
+ }
+
+ return $ret;
+}
+
+/**
+ * display backlinks
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Michael Klier <chi at chimeric.de>
+ */
+function html_backlinks(){
+ require_once(DOKU_INC.'inc/fulltext.php');
+ global $ID;
+ global $conf;
+ global $lang;
+
+ print p_locale_xhtml('backlinks');
+
+ $data = ft_backlinks($ID);
+
+ if(!empty($data)) {
+ print '<ul class="idx">';
+ foreach($data as $blink){
+ print '<li><div class="li">';
+ print html_wikilink(':'.$blink,$conf['useheading']?NULL:$blink);
+ print '</div></li>';
+ }
+ print '</ul>';
+ } else {
+ print '<div class="level1"><p>' . $lang['nothingfound'] . '</p></div>';
+ }
+}
+
+/**
+ * show diff
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_diff($text='',$intro=true){
+ require_once(DOKU_INC.'inc/DifferenceEngine.php');
+ global $ID;
+ global $REV;
+ global $lang;
+ global $conf;
+
+ // we're trying to be clever here, revisions to compare can be either
+ // given as rev and rev2 parameters, with rev2 being optional. Or in an
+ // array in rev2.
+ $rev1 = $REV;
+
+ if(is_array($_REQUEST['rev2'])){
+ $rev1 = (int) $_REQUEST['rev2'][0];
+ $rev2 = (int) $_REQUEST['rev2'][1];
+
+ if(!$rev1){
+ $rev1 = $rev2;
+ unset($rev2);
+ }
+ }else{
+ $rev2 = (int) $_REQUEST['rev2'];
+ }
+
+ if($text){ // compare text to the most current revision
+ $l_rev = '';
+ $l_text = rawWiki($ID,'');
+ $l_head = '<a class="wikilink1" href="'.wl($ID).'">'.
+ $ID.' '.strftime($conf['dformat'], at filemtime(wikiFN($ID))).'</a> '.
+ $lang['current'];
+
+ $r_rev = '';
+ $r_text = cleanText($text);
+ $r_head = $lang['yours'];
+ }else{
+ if($rev1 && $rev2){ // two specific revisions wanted
+ // make sure order is correct (older on the left)
+ if($rev1 < $rev2){
+ $l_rev = $rev1;
+ $r_rev = $rev2;
+ }else{
+ $l_rev = $rev2;
+ $r_rev = $rev1;
+ }
+ }elseif($rev1){ // single revision given, compare to current
+ $r_rev = '';
+ $l_rev = $rev1;
+ }else{ // no revision was given, compare previous to current
+ $r_rev = '';
+ $revs = getRevisions($ID, 0, 1);
+ $l_rev = $revs[0];
+ }
+
+ // when both revisions are empty then the page was created just now
+ if(!$l_rev && !$r_rev){
+ $l_text = '';
+ }else{
+ $l_text = rawWiki($ID,$l_rev);
+ }
+ $r_text = rawWiki($ID,$r_rev);
+
+
+ if(!$l_rev){
+ $l_head = '—';
+ }else{
+ $l_head = '<a class="wikilink1" href="'.wl($ID,"rev=$l_rev").'">'.
+ $ID.' '.strftime($conf['dformat'],$l_rev).'</a>';
+ }
+
+ if($r_rev){
+ $r_head = '<a class="wikilink1" href="'.wl($ID,"rev=$r_rev").'">'.
+ $ID.' '.strftime($conf['dformat'],$r_rev).'</a>';
+ }elseif($_rev = @filemtime(wikiFN($ID))){
+ $r_head = '<a class="wikilink1" href="'.wl($ID).'">'.
+ $ID.' '.strftime($conf['dformat'],$_rev).'</a> '.
+ $lang['current'];
+ }else{
+ $r_head = '— '.$lang['current'];
+ }
+ }
+
+ $df = new Diff(explode("\n",htmlspecialchars($l_text)),
+ explode("\n",htmlspecialchars($r_text)));
+
+ $tdf = new TableDiffFormatter();
+ if($intro) print p_locale_xhtml('diff');
+ ?>
+ <table class="diff">
+ <tr>
+ <th colspan="2">
+ <?php echo $l_head?>
+ </th>
+ <th colspan="2">
+ <?php echo $r_head?>
+ </th>
+ </tr>
+ <?php echo $tdf->format($df)?>
+ </table>
+ <?php
+}
+
+/**
+ * show warning on conflict detection
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_conflict($text,$summary){
+ global $ID;
+ global $lang;
+
+ print p_locale_xhtml('conflict');
+ $form = new Doku_Form('dw__editform');
+ $form->addHidden('id', $ID);
+ $form->addHidden('wikitext', $text);
+ $form->addHidden('summary', $summary);
+ $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('accesskey'=>'s')));
+ $form->addElement(form_makeButton('submit', 'cancel', $lang['btn_cancel']));
+ html_form('conflict', $form);
+ print '<br /><br /><br /><br />'.NL;
+}
+
+/**
+ * Prints the global message array
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_msgarea(){
+ global $MSG;
+
+ if(!isset($MSG)) return;
+
+ foreach($MSG as $msg){
+ print '<div class="'.$msg['lvl'].'">';
+ print $msg['msg'];
+ print '</div>';
+ }
+}
+
+/**
+ * Prints the registration form
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_register(){
+ global $lang;
+ global $conf;
+ global $ID;
+
+ print p_locale_xhtml('register');
+ print '<div class="centeralign">'.NL;
+ $form = new Doku_Form('dw__register', wl($ID));
+ $form->startFieldset($lang['register']);
+ $form->addHidden('do', 'register');
+ $form->addHidden('save', '1');
+ $form->addElement(form_makeTextField('login', $_POST['login'], $lang['user'], null, 'block', array('size'=>'50')));
+ if (!$conf['autopasswd']) {
+ $form->addElement(form_makePasswordField('pass', $lang['pass'], '', 'block', array('size'=>'50')));
+ $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50')));
+ }
+ $form->addElement(form_makeTextField('fullname', $_POST['fullname'], $lang['fullname'], '', 'block', array('size'=>'50')));
+ $form->addElement(form_makeTextField('email', $_POST['email'], $lang['email'], '', 'block', array('size'=>'50')));
+ $form->addElement(form_makeButton('submit', '', $lang['register']));
+ $form->endFieldset();
+ html_form('register', $form);
+
+ print '</div>'.NL;
+}
+
+/**
+ * Print the update profile form
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_updateprofile(){
+ global $lang;
+ global $conf;
+ global $ID;
+ global $INFO;
+ global $auth;
+
+ print p_locale_xhtml('updateprofile');
+
+ if (empty($_POST['fullname'])) $_POST['fullname'] = $INFO['userinfo']['name'];
+ if (empty($_POST['email'])) $_POST['email'] = $INFO['userinfo']['mail'];
+ print '<div class="centeralign">'.NL;
+ $form = new Doku_Form('dw__register', wl($ID));
+ $form->startFieldset($lang['profile']);
+ $form->addHidden('do', 'profile');
+ $form->addHidden('save', '1');
+ $form->addElement(form_makeTextField('fullname', $_SERVER['REMOTE_USER'], $lang['user'], '', 'block', array('size'=>'50', 'disabled'=>'disabled')));
+ $attr = array('size'=>'50');
+ if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
+ $form->addElement(form_makeTextField('fullname', $_POST['fullname'], $lang['fullname'], '', 'block', $attr));
+ $attr = array('size'=>'50');
+ if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
+ $form->addElement(form_makeTextField('email', $_POST['email'], $lang['email'], '', 'block', $attr));
+ $form->addElement(form_makeTag('br'));
+ if ($auth->canDo('modPass')) {
+ $form->addElement(form_makePasswordField('newpass', $lang['newpass'], '', 'block', array('size'=>'50')));
+ $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50')));
+ }
+ if ($conf['profileconfirm']) {
+ $form->addElement(form_makeTag('br'));
+ $form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50')));
+ }
+ $form->addElement(form_makeButton('submit', '', $lang['btn_save']));
+ $form->addElement(form_makeButton('reset', '', $lang['btn_reset']));
+ $form->endFieldset();
+ html_form('updateprofile', $form);
+ print '</div>'.NL;
+}
+
+/**
+ * This displays the edit form (lots of logic included)
+ *
+ * @fixme this is a huge lump of code and should be modularized
+ * @triggers HTML_PAGE_FROMTEMPLATE
+ * @triggers HTML_EDITFORM_INJECTION
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_edit($text=null,$include='edit'){ //FIXME: include needed?
+ global $ID;
+ global $REV;
+ global $DATE;
+ global $RANGE;
+ global $PRE;
+ global $SUF;
+ global $INFO;
+ global $SUM;
+ global $lang;
+ global $conf;
+
+ //set summary default
+ if(!$SUM){
+ if($REV){
+ $SUM = $lang['restored'];
+ }elseif(!$INFO['exists']){
+ $SUM = $lang['created'];
+ }
+ }
+
+ //no text? Load it!
+ if(!isset($text)){
+ $pr = false; //no preview mode
+ if($INFO['exists']){
+ if($RANGE){
+ list($PRE,$text,$SUF) = rawWikiSlices($RANGE,$ID,$REV);
+ }else{
+ $text = rawWiki($ID,$REV);
+ }
+ $check = md5($text);
+ $mod = false;
+ }else{
+ //try to load a pagetemplate
+ $data = array($ID);
+ $text = trigger_event('HTML_PAGE_FROMTEMPLATE',$data,'pageTemplate',true);
+ $check = md5('');
+ $mod = $text!=='';
+ }
+ }else{
+ $pr = true; //preview mode
+ if (isset($_REQUEST['changecheck'])) {
+ $check = $_REQUEST['changecheck'];
+ $mod = md5($text)!==$check;
+ } else {
+ // Why? Assume default text is unmodified.
+ $check = md5($text);
+ $mod = false;
+ }
+ }
+
+ $wr = $INFO['writable'];
+ if($wr){
+ if ($REV) print p_locale_xhtml('editrev');
+ print p_locale_xhtml($include);
+ }else{
+ // check pseudo action 'source'
+ if(!actionOK('source')){
+ msg('Command disabled: source',-1);
+ return;
+ }
+ print p_locale_xhtml('read');
+ }
+ if(!$DATE) $DATE = $INFO['lastmod'];
+
+
+?>
+ <div style="width:99%;">
+
+ <div class="toolbar">
+ <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.strftime($conf['dformat']);?></div>
+ <div id="tool__bar"><?php if($wr){?><a href="<?php echo DOKU_BASE?>lib/exe/mediamanager.php?ns=<?php echo $INFO['namespace']?>"
+ target="_blank"><?php echo $lang['mediaselect'] ?></a><?php }?></div>
+
+ <?php if($wr){?>
+ <script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--
+ <?php /* sets changed to true when previewed */?>
+ textChanged = <?php ($mod) ? print 'true' : print 'false' ?>;
+ //--><!]]></script>
+ <span id="spell__action"></span>
+ <div id="spell__suggest"></div>
+ <?php } ?>
+ </div>
+ <div id="spell__result"></div>
+<?php
+ $form = new Doku_Form('dw__editform');
+ $form->addHidden('id', $ID);
+ $form->addHidden('rev', $REV);
+ $form->addHidden('date', $DATE);
+ $form->addHidden('prefix', $PRE);
+ $form->addHidden('suffix', $SUF);
+ $form->addHidden('changecheck', $check);
+ $attr = array('tabindex'=>'1');
+ if (!$wr) $attr['readonly'] = 'readonly';
+ $form->addElement(form_makeWikiText($text, $attr));
+ $form->addElement(form_makeOpenTag('div', array('id'=>'wiki__editbar')));
+ $form->addElement(form_makeOpenTag('div', array('id'=>'size__ctl')));
+ $form->addElement(form_makeCloseTag('div'));
+ if ($wr) {
+ $form->addElement(form_makeOpenTag('div', array('class'=>'editButtons')));
+ $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('id'=>'edbtn__save', 'accesskey'=>'s', 'tabindex'=>'4')));
+ $form->addElement(form_makeButton('submit', 'preview', $lang['btn_preview'], array('id'=>'edbtn__preview', 'accesskey'=>'p', 'tabindex'=>'5')));
+ $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_cancel'], array('tabindex'=>'6')));
+ $form->addElement(form_makeCloseTag('div'));
+ $form->addElement(form_makeOpenTag('div', array('class'=>'summary')));
+ $form->addElement(form_makeTextField('summary', $SUM, $lang['summary'], 'edit__summary', 'nowrap', array('size'=>'50', 'tabindex'=>'2')));
+ $elem = html_minoredit();
+ if ($elem) $form->addElement($elem);
+ $form->addElement(form_makeCloseTag('div'));
+ }
+ $form->addElement(form_makeCloseTag('div'));
+ html_form('edit', $form);
+ print '</div>'.NL;
+}
+
+/**
+ * Adds a checkbox for minor edits for logged in users
+ *
+ * @author Andrea Gohr <andi at splitbrain.org>
+ */
+function html_minoredit(){
+ global $conf;
+ global $lang;
+ // minor edits are for logged in users only
+ if(!$conf['useacl'] || !$_SERVER['REMOTE_USER']){
+ return false;
+ }
+
+ $p = array();
+ $p['tabindex'] = 3;
+ if(!empty($_REQUEST['minor'])) $p['checked']='checked';
+ return form_makeCheckboxField('minor', '1', $lang['minoredit'], 'minoredit', 'nowrap', $p);
+}
+
+/**
+ * prints some debug info
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_debug(){
+ global $conf;
+ global $lang;
+ global $auth;
+ global $INFO;
+
+ //remove sensitive data
+ $cnf = $conf;
+ $cnf['auth']='***';
+ $cnf['notify']='***';
+ $cnf['ftp']='***';
+ $nfo = $INFO;
+ $nfo['userinfo'] = '***';
+ $ses = $_SESSION;
+ $ses[$conf['title']]['auth'] = '***';
+
+ print '<html><body>';
+
+ print '<p>When reporting bugs please send all the following ';
+ print 'output as a mail to andi at splitbrain.org ';
+ print 'The best way to do this is to save this page in your browser</p>';
+
+ print '<b>$INFO:</b><pre>';
+ print_r($nfo);
+ print '</pre>';
+
+ print '<b>$_SERVER:</b><pre>';
+ print_r($_SERVER);
+ print '</pre>';
+
+ print '<b>$conf:</b><pre>';
+ print_r($cnf);
+ print '</pre>';
+
+ print '<b>DOKU_BASE:</b><pre>';
+ print DOKU_BASE;
+ print '</pre>';
+
+ print '<b>abs DOKU_BASE:</b><pre>';
+ print DOKU_URL;
+ print '</pre>';
+
+ print '<b>rel DOKU_BASE:</b><pre>';
+ print dirname($_SERVER['PHP_SELF']).'/';
+ print '</pre>';
+
+ print '<b>PHP Version:</b><pre>';
+ print phpversion();
+ print '</pre>';
+
+ print '<b>locale:</b><pre>';
+ print setlocale(LC_ALL,0);
+ print '</pre>';
+
+ print '<b>encoding:</b><pre>';
+ print $lang['encoding'];
+ print '</pre>';
+
+ if($auth){
+ print '<b>Auth backend capabilities:</b><pre>';
+ print_r($auth->cando);
+ print '</pre>';
+ }
+
+ print '<b>$_SESSION:</b><pre>';
+ print_r($ses);
+ print '</pre>';
+
+ print '<b>Environment:</b><pre>';
+ print_r($_ENV);
+ print '</pre>';
+
+ print '<b>PHP settings:</b><pre>';
+ $inis = ini_get_all();
+ print_r($inis);
+ print '</pre>';
+
+ print '</body></html>';
+}
+
+function html_admin(){
+ global $ID;
+ global $INFO;
+ global $lang;
+ global $conf;
+
+ print p_locale_xhtml('admin');
+
+ // build menu of admin functions from the plugins that handle them
+ $pluginlist = plugin_list('admin');
+ $menu = array();
+ foreach ($pluginlist as $p) {
+ if($obj =& plugin_load('admin',$p) === NULL) continue;
+
+ // check permissions
+ if($obj->forAdminOnly() && !$INFO['isadmin']) continue;
+
+ $menu[] = array('plugin' => $p,
+ 'prompt' => $obj->getMenuText($conf['lang']),
+ 'sort' => $obj->getMenuSort()
+ );
+ }
+
+ usort($menu, 'p_sort_modes');
+
+ // output the menu
+ ptln('<ul>');
+
+ foreach ($menu as $item) {
+ if (!$item['prompt']) continue;
+ ptln(' <li><div class="li"><a href="'.wl($ID, 'do=admin&page='.$item['plugin']).'">'.$item['prompt'].'</a></div></li>');
+ }
+
+ ptln('</ul>');
+}
+
+/**
+ * Form to request a new password for an existing account
+ *
+ * @author Benoit Chesneau <benoit at bchesneau.info>
+ */
+function html_resendpwd() {
+ global $lang;
+ global $conf;
+ global $ID;
+
+ print p_locale_xhtml('resendpwd');
+ print '<div class="centeralign">'.NL;
+ $form = new Doku_Form('dw__resendpwd', wl($ID));
+ $form->startFieldset($lang['resendpwd']);
+ $form->addHidden('do', 'resendpwd');
+ $form->addHidden('save', '1');
+ $form->addElement(form_makeTag('br'));
+ $form->addElement(form_makeTextField('login', $_POST['login'], $lang['user'], '', 'block'));
+ $form->addElement(form_makeTag('br'));
+ $form->addElement(form_makeTag('br'));
+ $form->addElement(form_makeButton('submit', '', $lang['btn_resendpwd']));
+ $form->endFieldset();
+ html_form('resendpwd', $form);
+ print '</div>'.NL;
+}
+
+/**
+ * Return the TOC rendered to XHTML
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function html_TOC($toc){
+ if(!count($toc)) return '';
+ global $lang;
+ $out = '<!-- TOC START -->'.DOKU_LF;
+ $out .= '<div class="toc">'.DOKU_LF;
+ $out .= '<div class="tocheader toctoggle" id="toc__header">';
+ $out .= $lang['toc'];
+ $out .= '</div>'.DOKU_LF;
+ $out .= '<div id="toc__inside">'.DOKU_LF;
+ $out .= html_buildlist($toc,'toc','html_list_toc');
+ $out .= '</div>'.DOKU_LF.'</div>'.DOKU_LF;
+ $out .= '<!-- TOC END -->'.DOKU_LF;
+ return $out; }
+
+/**
+ * Callback for html_buildlist
+ */
+function html_list_toc($item){
+ if($item['hid']){
+ $link = '#'.$item['hid'];
+ }else{
+ $link = $item['link'];
+ }
+
+ return '<span class="li"><a href="'.$link.'" class="toc">'.
+ hsc($item['title']).'</a></span>';
+}
+
+/**
+ * Helper function to build TOC items
+ *
+ * Returns an array ready to be added to a TOC array
+ *
+ * @param string $link - where to link (if $hash set to '#' it's a local anchor)
+ * @param string $text - what to display in the TOC
+ * @param int $level - nesting level
+ * @param string $hash - is prepended to the given $link, set blank if you want full links
+ */
+function html_mktocitem($link, $text, $level, $hash='#'){
+ global $conf;
+ return array( 'link' => $hash.$link,
+ 'title' => $text,
+ 'type' => 'ul',
+ 'level' => $level);
+}
+
+/**
+ * Output a Doku_Form object.
+ * Triggers an event with the form name: HTML_{$name}FORM_OUTPUT
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function html_form($name, &$form) {
+ // Safety check in case the caller forgets.
+ $form->endFieldset();
+ trigger_event('HTML_'.strtoupper($name).'FORM_OUTPUT', $form, 'html_form_output', false);
+}
+
+/**
+ * Form print function.
+ * Just calls printForm() on the data object.
+ */
+function html_form_output($data) {
+ $data->printForm();
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/indexer.php
===================================================================
--- site/trunk/www-root/wiki/inc/indexer.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/indexer.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,680 +1,680 @@
-<?php
-/**
- * Common DokuWiki functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_CONF.'dokuwiki.php');
- require_once(DOKU_INC.'inc/io.php');
- require_once(DOKU_INC.'inc/utf8.php');
- require_once(DOKU_INC.'inc/parserutils.php');
-
-// Asian characters are handled as words. The following regexp defines the
-// Unicode-Ranges for Asian characters
-// Ranges taken from http://en.wikipedia.org/wiki/Unicode_block
-// I'm no language expert. If you think some ranges are wrongly chosen or
-// a range is missing, please contact me
-define('IDX_ASIAN1','[\x{0E00}-\x{0E7F}]'); // Thai
-define('IDX_ASIAN2','['.
- '\x{2E80}-\x{3040}'. // CJK -> Hangul
- '\x{309D}-\x{30A0}'.
- '\x{30FD}-\x{31EF}\x{3200}-\x{D7AF}'.
- '\x{F900}-\x{FAFF}'. // CJK Compatibility Ideographs
- '\x{FE30}-\x{FE4F}'. // CJK Compatibility Forms
- ']');
-define('IDX_ASIAN3','['. // Hiragana/Katakana (can be two characters)
- '\x{3042}\x{3044}\x{3046}\x{3048}'.
- '\x{304A}-\x{3062}\x{3064}-\x{3082}'.
- '\x{3084}\x{3086}\x{3088}-\x{308D}'.
- '\x{308F}-\x{3094}'.
- '\x{30A2}\x{30A4}\x{30A6}\x{30A8}'.
- '\x{30AA}-\x{30C2}\x{30C4}-\x{30E2}'.
- '\x{30E4}\x{30E6}\x{30E8}-\x{30ED}'.
- '\x{30EF}-\x{30F4}\x{30F7}-\x{30FA}'.
- ']['.
- '\x{3041}\x{3043}\x{3045}\x{3047}\x{3049}'.
- '\x{3063}\x{3083}\x{3085}\x{3087}\x{308E}\x{3095}-\x{309C}'.
- '\x{30A1}\x{30A3}\x{30A5}\x{30A7}\x{30A9}'.
- '\x{30C3}\x{30E3}\x{30E5}\x{30E7}\x{30EE}\x{30F5}\x{30F6}\x{30FB}\x{30FC}'.
- '\x{31F0}-\x{31FF}'.
- ']?');
-define('IDX_ASIAN', '(?:'.IDX_ASIAN1.'|'.IDX_ASIAN2.'|'.IDX_ASIAN3.')');
-
-/**
- * Measure the length of a string.
- * Differs from strlen in handling of asian characters.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function wordlen($w){
- $l = strlen($w);
- // If left alone, all chinese "words" will get put into w3.idx
- // So the "length" of a "word" is faked
- if(preg_match('/'.IDX_ASIAN2.'/u',$w))
- $l += ord($w) - 0xE1; // Lead bytes from 0xE2-0xEF
- return $l;
-}
-
-/**
- * Write a list of strings to an index file.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_saveIndex($pre, $wlen, &$idx){
- global $conf;
- $fn = $conf['indexdir'].'/'.$pre.$wlen;
- $fh = @fopen($fn.'.tmp','w');
- if(!$fh) return false;
- foreach ($idx as $line) {
- fwrite($fh,$line);
- }
- fclose($fh);
- if($conf['fperm']) chmod($fn.'.tmp', $conf['fperm']);
- io_rename($fn.'.tmp', $fn.'.idx');
- return true;
-}
-
-/**
- * Read the list of words in an index (if it exists).
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_getIndex($pre, $wlen){
- global $conf;
- $fn = $conf['indexdir'].'/'.$pre.$wlen.'.idx';
- if(!@file_exists($fn)) return array();
- return file($fn);
-}
-
-/**
- * Create an empty index file if it doesn't exist yet.
- *
- * FIXME: This function isn't currently used. It will probably be removed soon.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_touchIndex($pre, $wlen){
- global $conf;
- $fn = $conf['indexdir'].'/'.$pre.$wlen.'.idx';
- if(!@file_exists($fn)){
- touch($fn);
- if($conf['fperm']) chmod($fn, $conf['fperm']);
- }
-}
-
-/**
- * Read a line ending with \n.
- * Returns false on EOF.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function _freadline($fh) {
- if (feof($fh)) return false;
- $ln = '';
- while (($buf = fgets($fh,4096)) !== false) {
- $ln .= $buf;
- if (substr($buf,-1) == "\n") break;
- }
- if ($ln === '') return false;
- if (substr($ln,-1) != "\n") $ln .= "\n";
- return $ln;
-}
-
-/**
- * Write a line to an index file.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_saveIndexLine($pre, $wlen, $idx, $line){
- global $conf;
- if(substr($line,-1) != "\n") $line .= "\n";
- $fn = $conf['indexdir'].'/'.$pre.$wlen;
- $fh = @fopen($fn.'.tmp','w');
- if(!$fh) return false;
- $ih = @fopen($fn.'.idx','r');
- if ($ih) {
- $ln = -1;
- while (($curline = _freadline($ih)) !== false) {
- if (++$ln == $idx) {
- fwrite($fh, $line);
- } else {
- fwrite($fh, $curline);
- }
- }
- if ($idx > $ln) {
- fwrite($fh,$line);
- }
- fclose($ih);
- } else {
- fwrite($fh,$line);
- }
- fclose($fh);
- if($conf['fperm']) chmod($fn.'.tmp', $conf['fperm']);
- io_rename($fn.'.tmp', $fn.'.idx');
- return true;
-}
-
-/**
- * Read a single line from an index (if it exists).
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_getIndexLine($pre, $wlen, $idx){
- global $conf;
- $fn = $conf['indexdir'].'/'.$pre.$wlen.'.idx';
- if(!@file_exists($fn)) return '';
- $fh = @fopen($fn,'r');
- if(!$fh) return '';
- $ln = -1;
- while (($line = _freadline($fh)) !== false) {
- if (++$ln == $idx) break;
- }
- fclose($fh);
- return "$line";
-}
-
-/**
- * Split a page into words
- *
- * Returns an array of word counts, false if an error occurred.
- * Array is keyed on the word length, then the word index.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-function idx_getPageWords($page){
- global $conf;
- $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
- if(@file_exists($swfile)){
- $stopwords = file($swfile);
- }else{
- $stopwords = array();
- }
-
- $body = '';
- $data = array($page, $body);
- $evt = new Doku_Event('INDEXER_PAGE_ADD', $data);
- if ($evt->advise_before()) $data[1] .= rawWiki($page);
- $evt->advise_after();
- unset($evt);
-
- list($page,$body) = $data;
-
- $body = strtr($body, "\r\n\t", ' ');
- $tokens = explode(' ', $body);
- $tokens = array_count_values($tokens); // count the frequency of each token
-
- // ensure the deaccented or romanised page names of internal links are added to the token array
- // (this is necessary for the backlink function -- there maybe a better way!)
- if ($conf['deaccent']) {
- $links = p_get_metadata($page,'relation references');
-
- if (!empty($links)) {
- $tmp = join(' ',array_keys($links)); // make a single string
- $tmp = strtr($tmp, ':', ' '); // replace namespace separator with a space
- $link_tokens = array_unique(explode(' ', $tmp)); // break into tokens
-
- foreach ($link_tokens as $link_token) {
- if (isset($tokens[$link_token])) continue;
- $tokens[$link_token] = 1;
- }
- }
- }
-
- $words = array();
- foreach ($tokens as $word => $count) {
- $arr = idx_tokenizer($word,$stopwords);
- $arr = array_count_values($arr);
- foreach ($arr as $w => $c) {
- $l = wordlen($w);
- if(isset($words[$l])){
- $words[$l][$w] = $c * $count + (isset($words[$l][$w]) ? $words[$l][$w] : 0);
- }else{
- $words[$l] = array($w => $c * $count);
- }
- }
- }
-
- // arrive here with $words = array(wordlen => array(word => frequency))
-
- $index = array(); //resulting index
- foreach (array_keys($words) as $wlen){
- $word_idx = idx_getIndex('w',$wlen);
- foreach ($words[$wlen] as $word => $freq) {
- $wid = array_search("$word\n",$word_idx);
- if(!is_int($wid)){
- $wid = count($word_idx);
- $word_idx[] = "$word\n";
- }
- if(!isset($index[$wlen]))
- $index[$wlen] = array();
- $index[$wlen][$wid] = $freq;
- }
-
- // save back word index
- if(!idx_saveIndex('w',$wlen,$word_idx)){
- trigger_error("Failed to write word index", E_USER_ERROR);
- return false;
- }
- }
-
- return $index;
-}
-
-/**
- * Adds/updates the search for the given page
- *
- * This is the core function of the indexer which does most
- * of the work. This function needs to be called with proper
- * locking!
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function idx_addPage($page){
- global $conf;
-
- // load known documents
- $page_idx = idx_getIndex('page','');
-
- // get page id (this is the linenumber in page.idx)
- $pid = array_search("$page\n",$page_idx);
- if(!is_int($pid)){
- $page_idx[] = "$page\n";
- $pid = count($page_idx)-1;
- // page was new - write back
- if (!idx_saveIndex('page','',$page_idx)){
- trigger_error("Failed to write page index", E_USER_ERROR);
- return false;
- }
- }
-
- $pagewords = array();
- // get word usage in page
- $words = idx_getPageWords($page);
- if($words === false) return false;
-
- if(!empty($words)) {
- foreach(array_keys($words) as $wlen){
- $index = idx_getIndex('i',$wlen);
- foreach($words[$wlen] as $wid => $freq){
- if($wid<count($index)){
- $index[$wid] = idx_updateIndexLine($index[$wid],$pid,$freq);
- }else{
- // New words **should** have been added in increasing order
- // starting with the first unassigned index.
- // If someone can show how this isn't true, then I'll need to sort
- // or do something special.
- $index[$wid] = idx_updateIndexLine('',$pid,$freq);
- }
- $pagewords[] = "$wlen*$wid";
- }
- // save back word index
- if(!idx_saveIndex('i',$wlen,$index)){
- trigger_error("Failed to write index", E_USER_ERROR);
- return false;
- }
- }
- }
-
- // Remove obsolete index entries
- $pageword_idx = trim(idx_getIndexLine('pageword','',$pid));
- if ($pageword_idx !== '') {
- $oldwords = explode(':',$pageword_idx);
- $delwords = array_diff($oldwords, $pagewords);
- $upwords = array();
- foreach ($delwords as $word) {
- if($word=='') continue;
- list($wlen,$wid) = explode('*',$word);
- $wid = (int)$wid;
- $upwords[$wlen][] = $wid;
- }
- foreach ($upwords as $wlen => $widx) {
- $index = idx_getIndex('i',$wlen);
- foreach ($widx as $wid) {
- $index[$wid] = idx_updateIndexLine($index[$wid],$pid,0);
- }
- idx_saveIndex('i',$wlen,$index);
- }
- }
- // Save the reverse index
- $pageword_idx = join(':',$pagewords)."\n";
- if(!idx_saveIndexLine('pageword','',$pid,$pageword_idx)){
- trigger_error("Failed to write word index", E_USER_ERROR);
- return false;
- }
-
- return true;
-}
-
-/**
- * Write a new index line to the filehandle
- *
- * This function writes an line for the index file to the
- * given filehandle. It removes the given document from
- * the given line and readds it when $count is >0.
- *
- * @deprecated - see idx_updateIndexLine
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function idx_writeIndexLine($fh,$line,$pid,$count){
- fwrite($fh,idx_updateIndexLine($line,$pid,$count));
-}
-
-/**
- * Modify an index line with new information
- *
- * This returns a line of the index. It removes the
- * given document from the line and readds it if
- * $count is >0.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function idx_updateIndexLine($line,$pid,$count){
- $line = trim($line);
- $updated = array();
- if($line != ''){
- $parts = explode(':',$line);
- // remove doc from given line
- foreach($parts as $part){
- if($part == '') continue;
- list($doc,$cnt) = explode('*',$part);
- if($doc != $pid){
- $updated[] = $part;
- }
- }
- }
-
- // add doc
- if ($count){
- $updated[] = "$pid*$count";
- }
-
- return join(':',$updated)."\n";
-}
-
-/**
- * Get the word lengths that have been indexed.
- *
- * Reads the index directory and returns an array of lengths
- * that there are indices for.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_indexLengths(&$filter){
- global $conf;
- $dir = @opendir($conf['indexdir']);
- if($dir===false)
- return array();
- $idx = array();
- if(is_array($filter)){
- while (($f = readdir($dir)) !== false) {
- if (substr($f,0,1) == 'i' && substr($f,-4) == '.idx'){
- $i = substr($f,1,-4);
- if (is_numeric($i) && isset($filter[(int)$i]))
- $idx[] = (int)$i;
- }
- }
- }else{
- // Exact match first.
- if(@file_exists($conf['indexdir']."/i$filter.idx"))
- $idx[] = $filter;
- while (($f = readdir($dir)) !== false) {
- if (substr($f,0,1) == 'i' && substr($f,-4) == '.idx'){
- $i = substr($f,1,-4);
- if (is_numeric($i) && $i > $filter)
- $idx[] = (int)$i;
- }
- }
- }
- closedir($dir);
- return $idx;
-}
-
-/**
- * Find the the index number of each search term.
- *
- * This will group together words that appear in the same index.
- * So it should perform better, because it only opens each index once.
- * Actually, it's not that great. (in my experience) Probably because of the disk cache.
- * And the sorted function does more work, making it slightly slower in some cases.
- *
- * @param array $words The query terms. Words should only contain valid characters,
- * with a '*' at either the beginning or end of the word (or both)
- * @param arrayref $result Set to word => array("length*id" ...), use this to merge the
- * index locations with the appropriate query term.
- * @return array Set to length => array(id ...)
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_getIndexWordsSorted($words,&$result){
- // parse and sort tokens
- $tokens = array();
- $tokenlength = array();
- $tokenwild = array();
- foreach($words as $word){
- $result[$word] = array();
- $wild = 0;
- $xword = $word;
- $wlen = wordlen($word);
-
- // check for wildcards
- if(substr($xword,0,1) == '*'){
- $xword = substr($xword,1);
- $wild |= 1;
- $wlen -= 1;
- }
- if(substr($xword,-1,1) == '*'){
- $xword = substr($xword,0,-1);
- $wild |= 2;
- $wlen -= 1;
- }
- if ($wlen < 3 && $wild == 0 && !is_numeric($xword)) continue;
- if(!isset($tokens[$xword])){
- $tokenlength[$wlen][] = $xword;
- }
- if($wild){
- $ptn = preg_quote($xword,'/');
- if(($wild&1) == 0) $ptn = '^'.$ptn;
- if(($wild&2) == 0) $ptn = $ptn.'$';
- $tokens[$xword][] = array($word, '/'.$ptn.'/');
- if(!isset($tokenwild[$xword])) $tokenwild[$xword] = $wlen;
- }else
- $tokens[$xword][] = array($word, null);
- }
- asort($tokenwild);
- // $tokens = array( base word => array( [ query word , grep pattern ] ... ) ... )
- // $tokenlength = array( base word length => base word ... )
- // $tokenwild = array( base word => base word length ... )
-
- $length_filter = empty($tokenwild) ? $tokenlength : min(array_keys($tokenlength));
- $indexes_known = idx_indexLengths($length_filter);
- if(!empty($tokenwild)) sort($indexes_known);
- // get word IDs
- $wids = array();
- foreach($indexes_known as $ixlen){
- $word_idx = idx_getIndex('w',$ixlen);
- // handle exact search
- if(isset($tokenlength[$ixlen])){
- foreach($tokenlength[$ixlen] as $xword){
- $wid = array_search("$xword\n",$word_idx);
- if(is_int($wid)){
- $wids[$ixlen][] = $wid;
- foreach($tokens[$xword] as $w)
- $result[$w[0]][] = "$ixlen*$wid";
- }
- }
- }
- // handle wildcard search
- foreach($tokenwild as $xword => $wlen){
- if($wlen >= $ixlen) break;
- foreach($tokens[$xword] as $w){
- if(is_null($w[1])) continue;
- foreach(array_keys(preg_grep($w[1],$word_idx)) as $wid){
- $wids[$ixlen][] = $wid;
- $result[$w[0]][] = "$ixlen*$wid";
- }
- }
- }
- }
- return $wids;
-}
-
-/**
- * Lookup words in index
- *
- * Takes an array of word and will return a list of matching
- * documents for each one.
- *
- * Important: No ACL checking is done here! All results are
- * returned, regardless of permissions
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function idx_lookup($words){
- global $conf;
-
- $result = array();
-
- $wids = idx_getIndexWordsSorted($words, $result);
- if(empty($wids)) return array();
-
- // load known words and documents
- $page_idx = idx_getIndex('page','');
-
- $docs = array(); // hold docs found
- foreach(array_keys($wids) as $wlen){
- $wids[$wlen] = array_unique($wids[$wlen]);
- $index = idx_getIndex('i',$wlen);
- foreach($wids[$wlen] as $ixid){
- if($ixid < count($index))
- $docs["$wlen*$ixid"] = idx_parseIndexLine($page_idx,$index[$ixid]);
- }
- }
-
- // merge found pages into final result array
- $final = array();
- foreach(array_keys($result) as $word){
- $final[$word] = array();
- foreach($result[$word] as $wid){
- $hits = &$docs[$wid];
- foreach ($hits as $hitkey => $hitcnt) {
- $final[$word][$hitkey] = $hitcnt + $final[$word][$hitkey];
- }
- }
- }
- return $final;
-}
-
-/**
- * Returns a list of documents and counts from a index line
- *
- * It omits docs with a count of 0 and pages that no longer
- * exist.
- *
- * @param array $page_idx The list of known pages
- * @param string $line A line from the main index
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function idx_parseIndexLine(&$page_idx,$line){
- $result = array();
-
- $line = trim($line);
- if($line == '') return $result;
-
- $parts = explode(':',$line);
- foreach($parts as $part){
- if($part == '') continue;
- list($doc,$cnt) = explode('*',$part);
- if(!$cnt) continue;
- $doc = trim($page_idx[$doc]);
- if(!$doc) continue;
- // make sure the document still exists
- if(!page_exists($doc,'',false)) continue;
-
- $result[$doc] = $cnt;
- }
- return $result;
-}
-
-/**
- * Tokenizes a string into an array of search words
- *
- * Uses the same algorithm as idx_getPageWords()
- *
- * @param string $string the query as given by the user
- * @param arrayref $stopwords array of stopwords
- * @param boolean $wc are wildcards allowed?
- */
-function idx_tokenizer($string,&$stopwords,$wc=false){
- $words = array();
- $wc = ($wc) ? '' : $wc = '\*';
-
- if(preg_match('/[^0-9A-Za-z]/u', $string)){
- // handle asian chars as single words (may fail on older PHP version)
- $asia = @preg_replace('/('.IDX_ASIAN.')/u',' \1 ',$string);
- if(!is_null($asia)) $string = $asia; //recover from regexp failure
-
- $arr = explode(' ', utf8_stripspecials($string,' ','\._\-:'.$wc));
- foreach ($arr as $w) {
- if (!is_numeric($w) && strlen($w) < 3) continue;
- $w = utf8_strtolower($w);
- if($stopwords && is_int(array_search("$w\n",$stopwords))) continue;
- $words[] = $w;
- }
- }else{
- $w = $string;
- if (!is_numeric($w) && strlen($w) < 3) return $words;
- $w = strtolower($w);
- if(is_int(array_search("$w\n",$stopwords))) return $words;
- $words[] = $w;
- }
-
- return $words;
-}
-
-/**
- * Create a pagewords index from the existing index.
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- */
-function idx_upgradePageWords(){
- global $conf;
- $page_idx = idx_getIndex('page','');
- if (empty($page_idx)) return;
- $pagewords = array();
- for ($n=0;$n<count($page_idx);$n++) $pagewords[] = array();
- unset($page_idx);
-
- $n=0;
- foreach (idx_indexLengths($n) as $wlen) {
- $lines = idx_getIndex('i',$wlen);
- for ($wid=0;$wid<count($lines);$wid++) {
- $wkey = "$wlen*$wid";
- foreach (explode(':',trim($lines[$wid])) as $part) {
- if($part == '') continue;
- list($doc,$cnt) = explode('*',$part);
- $pagewords[(int)$doc][] = $wkey;
- }
- }
- }
-
- $fn = $conf['indexdir'].'/pageword';
- $fh = @fopen($fn.'.tmp','w');
- if (!$fh){
- trigger_error("Failed to write word index", E_USER_ERROR);
- return false;
- }
- foreach ($pagewords as $line){
- fwrite($fh, join(':',$line)."\n");
- }
- fclose($fh);
- if($conf['fperm']) chmod($fn.'.tmp', $conf['fperm']);
- io_rename($fn.'.tmp', $fn.'.idx');
- return true;
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * Common DokuWiki functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_CONF.'dokuwiki.php');
+ require_once(DOKU_INC.'inc/io.php');
+ require_once(DOKU_INC.'inc/utf8.php');
+ require_once(DOKU_INC.'inc/parserutils.php');
+
+// Asian characters are handled as words. The following regexp defines the
+// Unicode-Ranges for Asian characters
+// Ranges taken from http://en.wikipedia.org/wiki/Unicode_block
+// I'm no language expert. If you think some ranges are wrongly chosen or
+// a range is missing, please contact me
+define('IDX_ASIAN1','[\x{0E00}-\x{0E7F}]'); // Thai
+define('IDX_ASIAN2','['.
+ '\x{2E80}-\x{3040}'. // CJK -> Hangul
+ '\x{309D}-\x{30A0}'.
+ '\x{30FD}-\x{31EF}\x{3200}-\x{D7AF}'.
+ '\x{F900}-\x{FAFF}'. // CJK Compatibility Ideographs
+ '\x{FE30}-\x{FE4F}'. // CJK Compatibility Forms
+ ']');
+define('IDX_ASIAN3','['. // Hiragana/Katakana (can be two characters)
+ '\x{3042}\x{3044}\x{3046}\x{3048}'.
+ '\x{304A}-\x{3062}\x{3064}-\x{3082}'.
+ '\x{3084}\x{3086}\x{3088}-\x{308D}'.
+ '\x{308F}-\x{3094}'.
+ '\x{30A2}\x{30A4}\x{30A6}\x{30A8}'.
+ '\x{30AA}-\x{30C2}\x{30C4}-\x{30E2}'.
+ '\x{30E4}\x{30E6}\x{30E8}-\x{30ED}'.
+ '\x{30EF}-\x{30F4}\x{30F7}-\x{30FA}'.
+ ']['.
+ '\x{3041}\x{3043}\x{3045}\x{3047}\x{3049}'.
+ '\x{3063}\x{3083}\x{3085}\x{3087}\x{308E}\x{3095}-\x{309C}'.
+ '\x{30A1}\x{30A3}\x{30A5}\x{30A7}\x{30A9}'.
+ '\x{30C3}\x{30E3}\x{30E5}\x{30E7}\x{30EE}\x{30F5}\x{30F6}\x{30FB}\x{30FC}'.
+ '\x{31F0}-\x{31FF}'.
+ ']?');
+define('IDX_ASIAN', '(?:'.IDX_ASIAN1.'|'.IDX_ASIAN2.'|'.IDX_ASIAN3.')');
+
+/**
+ * Measure the length of a string.
+ * Differs from strlen in handling of asian characters.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function wordlen($w){
+ $l = strlen($w);
+ // If left alone, all chinese "words" will get put into w3.idx
+ // So the "length" of a "word" is faked
+ if(preg_match('/'.IDX_ASIAN2.'/u',$w))
+ $l += ord($w) - 0xE1; // Lead bytes from 0xE2-0xEF
+ return $l;
+}
+
+/**
+ * Write a list of strings to an index file.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_saveIndex($pre, $wlen, &$idx){
+ global $conf;
+ $fn = $conf['indexdir'].'/'.$pre.$wlen;
+ $fh = @fopen($fn.'.tmp','w');
+ if(!$fh) return false;
+ foreach ($idx as $line) {
+ fwrite($fh,$line);
+ }
+ fclose($fh);
+ if($conf['fperm']) chmod($fn.'.tmp', $conf['fperm']);
+ io_rename($fn.'.tmp', $fn.'.idx');
+ return true;
+}
+
+/**
+ * Read the list of words in an index (if it exists).
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_getIndex($pre, $wlen){
+ global $conf;
+ $fn = $conf['indexdir'].'/'.$pre.$wlen.'.idx';
+ if(!@file_exists($fn)) return array();
+ return file($fn);
+}
+
+/**
+ * Create an empty index file if it doesn't exist yet.
+ *
+ * FIXME: This function isn't currently used. It will probably be removed soon.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_touchIndex($pre, $wlen){
+ global $conf;
+ $fn = $conf['indexdir'].'/'.$pre.$wlen.'.idx';
+ if(!@file_exists($fn)){
+ touch($fn);
+ if($conf['fperm']) chmod($fn, $conf['fperm']);
+ }
+}
+
+/**
+ * Read a line ending with \n.
+ * Returns false on EOF.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function _freadline($fh) {
+ if (feof($fh)) return false;
+ $ln = '';
+ while (($buf = fgets($fh,4096)) !== false) {
+ $ln .= $buf;
+ if (substr($buf,-1) == "\n") break;
+ }
+ if ($ln === '') return false;
+ if (substr($ln,-1) != "\n") $ln .= "\n";
+ return $ln;
+}
+
+/**
+ * Write a line to an index file.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_saveIndexLine($pre, $wlen, $idx, $line){
+ global $conf;
+ if(substr($line,-1) != "\n") $line .= "\n";
+ $fn = $conf['indexdir'].'/'.$pre.$wlen;
+ $fh = @fopen($fn.'.tmp','w');
+ if(!$fh) return false;
+ $ih = @fopen($fn.'.idx','r');
+ if ($ih) {
+ $ln = -1;
+ while (($curline = _freadline($ih)) !== false) {
+ if (++$ln == $idx) {
+ fwrite($fh, $line);
+ } else {
+ fwrite($fh, $curline);
+ }
+ }
+ if ($idx > $ln) {
+ fwrite($fh,$line);
+ }
+ fclose($ih);
+ } else {
+ fwrite($fh,$line);
+ }
+ fclose($fh);
+ if($conf['fperm']) chmod($fn.'.tmp', $conf['fperm']);
+ io_rename($fn.'.tmp', $fn.'.idx');
+ return true;
+}
+
+/**
+ * Read a single line from an index (if it exists).
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_getIndexLine($pre, $wlen, $idx){
+ global $conf;
+ $fn = $conf['indexdir'].'/'.$pre.$wlen.'.idx';
+ if(!@file_exists($fn)) return '';
+ $fh = @fopen($fn,'r');
+ if(!$fh) return '';
+ $ln = -1;
+ while (($line = _freadline($fh)) !== false) {
+ if (++$ln == $idx) break;
+ }
+ fclose($fh);
+ return "$line";
+}
+
+/**
+ * Split a page into words
+ *
+ * Returns an array of word counts, false if an error occurred.
+ * Array is keyed on the word length, then the word index.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+function idx_getPageWords($page){
+ global $conf;
+ $swfile = DOKU_INC.'inc/lang/'.$conf['lang'].'/stopwords.txt';
+ if(@file_exists($swfile)){
+ $stopwords = file($swfile);
+ }else{
+ $stopwords = array();
+ }
+
+ $body = '';
+ $data = array($page, $body);
+ $evt = new Doku_Event('INDEXER_PAGE_ADD', $data);
+ if ($evt->advise_before()) $data[1] .= rawWiki($page);
+ $evt->advise_after();
+ unset($evt);
+
+ list($page,$body) = $data;
+
+ $body = strtr($body, "\r\n\t", ' ');
+ $tokens = explode(' ', $body);
+ $tokens = array_count_values($tokens); // count the frequency of each token
+
+ // ensure the deaccented or romanised page names of internal links are added to the token array
+ // (this is necessary for the backlink function -- there maybe a better way!)
+ if ($conf['deaccent']) {
+ $links = p_get_metadata($page,'relation references');
+
+ if (!empty($links)) {
+ $tmp = join(' ',array_keys($links)); // make a single string
+ $tmp = strtr($tmp, ':', ' '); // replace namespace separator with a space
+ $link_tokens = array_unique(explode(' ', $tmp)); // break into tokens
+
+ foreach ($link_tokens as $link_token) {
+ if (isset($tokens[$link_token])) continue;
+ $tokens[$link_token] = 1;
+ }
+ }
+ }
+
+ $words = array();
+ foreach ($tokens as $word => $count) {
+ $arr = idx_tokenizer($word,$stopwords);
+ $arr = array_count_values($arr);
+ foreach ($arr as $w => $c) {
+ $l = wordlen($w);
+ if(isset($words[$l])){
+ $words[$l][$w] = $c * $count + (isset($words[$l][$w]) ? $words[$l][$w] : 0);
+ }else{
+ $words[$l] = array($w => $c * $count);
+ }
+ }
+ }
+
+ // arrive here with $words = array(wordlen => array(word => frequency))
+
+ $index = array(); //resulting index
+ foreach (array_keys($words) as $wlen){
+ $word_idx = idx_getIndex('w',$wlen);
+ foreach ($words[$wlen] as $word => $freq) {
+ $wid = array_search("$word\n",$word_idx);
+ if(!is_int($wid)){
+ $wid = count($word_idx);
+ $word_idx[] = "$word\n";
+ }
+ if(!isset($index[$wlen]))
+ $index[$wlen] = array();
+ $index[$wlen][$wid] = $freq;
+ }
+
+ // save back word index
+ if(!idx_saveIndex('w',$wlen,$word_idx)){
+ trigger_error("Failed to write word index", E_USER_ERROR);
+ return false;
+ }
+ }
+
+ return $index;
+}
+
+/**
+ * Adds/updates the search for the given page
+ *
+ * This is the core function of the indexer which does most
+ * of the work. This function needs to be called with proper
+ * locking!
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function idx_addPage($page){
+ global $conf;
+
+ // load known documents
+ $page_idx = idx_getIndex('page','');
+
+ // get page id (this is the linenumber in page.idx)
+ $pid = array_search("$page\n",$page_idx);
+ if(!is_int($pid)){
+ $page_idx[] = "$page\n";
+ $pid = count($page_idx)-1;
+ // page was new - write back
+ if (!idx_saveIndex('page','',$page_idx)){
+ trigger_error("Failed to write page index", E_USER_ERROR);
+ return false;
+ }
+ }
+
+ $pagewords = array();
+ // get word usage in page
+ $words = idx_getPageWords($page);
+ if($words === false) return false;
+
+ if(!empty($words)) {
+ foreach(array_keys($words) as $wlen){
+ $index = idx_getIndex('i',$wlen);
+ foreach($words[$wlen] as $wid => $freq){
+ if($wid<count($index)){
+ $index[$wid] = idx_updateIndexLine($index[$wid],$pid,$freq);
+ }else{
+ // New words **should** have been added in increasing order
+ // starting with the first unassigned index.
+ // If someone can show how this isn't true, then I'll need to sort
+ // or do something special.
+ $index[$wid] = idx_updateIndexLine('',$pid,$freq);
+ }
+ $pagewords[] = "$wlen*$wid";
+ }
+ // save back word index
+ if(!idx_saveIndex('i',$wlen,$index)){
+ trigger_error("Failed to write index", E_USER_ERROR);
+ return false;
+ }
+ }
+ }
+
+ // Remove obsolete index entries
+ $pageword_idx = trim(idx_getIndexLine('pageword','',$pid));
+ if ($pageword_idx !== '') {
+ $oldwords = explode(':',$pageword_idx);
+ $delwords = array_diff($oldwords, $pagewords);
+ $upwords = array();
+ foreach ($delwords as $word) {
+ if($word=='') continue;
+ list($wlen,$wid) = explode('*',$word);
+ $wid = (int)$wid;
+ $upwords[$wlen][] = $wid;
+ }
+ foreach ($upwords as $wlen => $widx) {
+ $index = idx_getIndex('i',$wlen);
+ foreach ($widx as $wid) {
+ $index[$wid] = idx_updateIndexLine($index[$wid],$pid,0);
+ }
+ idx_saveIndex('i',$wlen,$index);
+ }
+ }
+ // Save the reverse index
+ $pageword_idx = join(':',$pagewords)."\n";
+ if(!idx_saveIndexLine('pageword','',$pid,$pageword_idx)){
+ trigger_error("Failed to write word index", E_USER_ERROR);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Write a new index line to the filehandle
+ *
+ * This function writes an line for the index file to the
+ * given filehandle. It removes the given document from
+ * the given line and readds it when $count is >0.
+ *
+ * @deprecated - see idx_updateIndexLine
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function idx_writeIndexLine($fh,$line,$pid,$count){
+ fwrite($fh,idx_updateIndexLine($line,$pid,$count));
+}
+
+/**
+ * Modify an index line with new information
+ *
+ * This returns a line of the index. It removes the
+ * given document from the line and readds it if
+ * $count is >0.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function idx_updateIndexLine($line,$pid,$count){
+ $line = trim($line);
+ $updated = array();
+ if($line != ''){
+ $parts = explode(':',$line);
+ // remove doc from given line
+ foreach($parts as $part){
+ if($part == '') continue;
+ list($doc,$cnt) = explode('*',$part);
+ if($doc != $pid){
+ $updated[] = $part;
+ }
+ }
+ }
+
+ // add doc
+ if ($count){
+ $updated[] = "$pid*$count";
+ }
+
+ return join(':',$updated)."\n";
+}
+
+/**
+ * Get the word lengths that have been indexed.
+ *
+ * Reads the index directory and returns an array of lengths
+ * that there are indices for.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_indexLengths(&$filter){
+ global $conf;
+ $dir = @opendir($conf['indexdir']);
+ if($dir===false)
+ return array();
+ $idx = array();
+ if(is_array($filter)){
+ while (($f = readdir($dir)) !== false) {
+ if (substr($f,0,1) == 'i' && substr($f,-4) == '.idx'){
+ $i = substr($f,1,-4);
+ if (is_numeric($i) && isset($filter[(int)$i]))
+ $idx[] = (int)$i;
+ }
+ }
+ }else{
+ // Exact match first.
+ if(@file_exists($conf['indexdir']."/i$filter.idx"))
+ $idx[] = $filter;
+ while (($f = readdir($dir)) !== false) {
+ if (substr($f,0,1) == 'i' && substr($f,-4) == '.idx'){
+ $i = substr($f,1,-4);
+ if (is_numeric($i) && $i > $filter)
+ $idx[] = (int)$i;
+ }
+ }
+ }
+ closedir($dir);
+ return $idx;
+}
+
+/**
+ * Find the the index number of each search term.
+ *
+ * This will group together words that appear in the same index.
+ * So it should perform better, because it only opens each index once.
+ * Actually, it's not that great. (in my experience) Probably because of the disk cache.
+ * And the sorted function does more work, making it slightly slower in some cases.
+ *
+ * @param array $words The query terms. Words should only contain valid characters,
+ * with a '*' at either the beginning or end of the word (or both)
+ * @param arrayref $result Set to word => array("length*id" ...), use this to merge the
+ * index locations with the appropriate query term.
+ * @return array Set to length => array(id ...)
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_getIndexWordsSorted($words,&$result){
+ // parse and sort tokens
+ $tokens = array();
+ $tokenlength = array();
+ $tokenwild = array();
+ foreach($words as $word){
+ $result[$word] = array();
+ $wild = 0;
+ $xword = $word;
+ $wlen = wordlen($word);
+
+ // check for wildcards
+ if(substr($xword,0,1) == '*'){
+ $xword = substr($xword,1);
+ $wild |= 1;
+ $wlen -= 1;
+ }
+ if(substr($xword,-1,1) == '*'){
+ $xword = substr($xword,0,-1);
+ $wild |= 2;
+ $wlen -= 1;
+ }
+ if ($wlen < 3 && $wild == 0 && !is_numeric($xword)) continue;
+ if(!isset($tokens[$xword])){
+ $tokenlength[$wlen][] = $xword;
+ }
+ if($wild){
+ $ptn = preg_quote($xword,'/');
+ if(($wild&1) == 0) $ptn = '^'.$ptn;
+ if(($wild&2) == 0) $ptn = $ptn.'$';
+ $tokens[$xword][] = array($word, '/'.$ptn.'/');
+ if(!isset($tokenwild[$xword])) $tokenwild[$xword] = $wlen;
+ }else
+ $tokens[$xword][] = array($word, null);
+ }
+ asort($tokenwild);
+ // $tokens = array( base word => array( [ query word , grep pattern ] ... ) ... )
+ // $tokenlength = array( base word length => base word ... )
+ // $tokenwild = array( base word => base word length ... )
+
+ $length_filter = empty($tokenwild) ? $tokenlength : min(array_keys($tokenlength));
+ $indexes_known = idx_indexLengths($length_filter);
+ if(!empty($tokenwild)) sort($indexes_known);
+ // get word IDs
+ $wids = array();
+ foreach($indexes_known as $ixlen){
+ $word_idx = idx_getIndex('w',$ixlen);
+ // handle exact search
+ if(isset($tokenlength[$ixlen])){
+ foreach($tokenlength[$ixlen] as $xword){
+ $wid = array_search("$xword\n",$word_idx);
+ if(is_int($wid)){
+ $wids[$ixlen][] = $wid;
+ foreach($tokens[$xword] as $w)
+ $result[$w[0]][] = "$ixlen*$wid";
+ }
+ }
+ }
+ // handle wildcard search
+ foreach($tokenwild as $xword => $wlen){
+ if($wlen >= $ixlen) break;
+ foreach($tokens[$xword] as $w){
+ if(is_null($w[1])) continue;
+ foreach(array_keys(preg_grep($w[1],$word_idx)) as $wid){
+ $wids[$ixlen][] = $wid;
+ $result[$w[0]][] = "$ixlen*$wid";
+ }
+ }
+ }
+ }
+ return $wids;
+}
+
+/**
+ * Lookup words in index
+ *
+ * Takes an array of word and will return a list of matching
+ * documents for each one.
+ *
+ * Important: No ACL checking is done here! All results are
+ * returned, regardless of permissions
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function idx_lookup($words){
+ global $conf;
+
+ $result = array();
+
+ $wids = idx_getIndexWordsSorted($words, $result);
+ if(empty($wids)) return array();
+
+ // load known words and documents
+ $page_idx = idx_getIndex('page','');
+
+ $docs = array(); // hold docs found
+ foreach(array_keys($wids) as $wlen){
+ $wids[$wlen] = array_unique($wids[$wlen]);
+ $index = idx_getIndex('i',$wlen);
+ foreach($wids[$wlen] as $ixid){
+ if($ixid < count($index))
+ $docs["$wlen*$ixid"] = idx_parseIndexLine($page_idx,$index[$ixid]);
+ }
+ }
+
+ // merge found pages into final result array
+ $final = array();
+ foreach(array_keys($result) as $word){
+ $final[$word] = array();
+ foreach($result[$word] as $wid){
+ $hits = &$docs[$wid];
+ foreach ($hits as $hitkey => $hitcnt) {
+ $final[$word][$hitkey] = $hitcnt + $final[$word][$hitkey];
+ }
+ }
+ }
+ return $final;
+}
+
+/**
+ * Returns a list of documents and counts from a index line
+ *
+ * It omits docs with a count of 0 and pages that no longer
+ * exist.
+ *
+ * @param array $page_idx The list of known pages
+ * @param string $line A line from the main index
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function idx_parseIndexLine(&$page_idx,$line){
+ $result = array();
+
+ $line = trim($line);
+ if($line == '') return $result;
+
+ $parts = explode(':',$line);
+ foreach($parts as $part){
+ if($part == '') continue;
+ list($doc,$cnt) = explode('*',$part);
+ if(!$cnt) continue;
+ $doc = trim($page_idx[$doc]);
+ if(!$doc) continue;
+ // make sure the document still exists
+ if(!page_exists($doc,'',false)) continue;
+
+ $result[$doc] = $cnt;
+ }
+ return $result;
+}
+
+/**
+ * Tokenizes a string into an array of search words
+ *
+ * Uses the same algorithm as idx_getPageWords()
+ *
+ * @param string $string the query as given by the user
+ * @param arrayref $stopwords array of stopwords
+ * @param boolean $wc are wildcards allowed?
+ */
+function idx_tokenizer($string,&$stopwords,$wc=false){
+ $words = array();
+ $wc = ($wc) ? '' : $wc = '\*';
+
+ if(preg_match('/[^0-9A-Za-z]/u', $string)){
+ // handle asian chars as single words (may fail on older PHP version)
+ $asia = @preg_replace('/('.IDX_ASIAN.')/u',' \1 ',$string);
+ if(!is_null($asia)) $string = $asia; //recover from regexp failure
+
+ $arr = explode(' ', utf8_stripspecials($string,' ','\._\-:'.$wc));
+ foreach ($arr as $w) {
+ if (!is_numeric($w) && strlen($w) < 3) continue;
+ $w = utf8_strtolower($w);
+ if($stopwords && is_int(array_search("$w\n",$stopwords))) continue;
+ $words[] = $w;
+ }
+ }else{
+ $w = $string;
+ if (!is_numeric($w) && strlen($w) < 3) return $words;
+ $w = strtolower($w);
+ if(is_int(array_search("$w\n",$stopwords))) return $words;
+ $words[] = $w;
+ }
+
+ return $words;
+}
+
+/**
+ * Create a pagewords index from the existing index.
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ */
+function idx_upgradePageWords(){
+ global $conf;
+ $page_idx = idx_getIndex('page','');
+ if (empty($page_idx)) return;
+ $pagewords = array();
+ for ($n=0;$n<count($page_idx);$n++) $pagewords[] = array();
+ unset($page_idx);
+
+ $n=0;
+ foreach (idx_indexLengths($n) as $wlen) {
+ $lines = idx_getIndex('i',$wlen);
+ for ($wid=0;$wid<count($lines);$wid++) {
+ $wkey = "$wlen*$wid";
+ foreach (explode(':',trim($lines[$wid])) as $part) {
+ if($part == '') continue;
+ list($doc,$cnt) = explode('*',$part);
+ $pagewords[(int)$doc][] = $wkey;
+ }
+ }
+ }
+
+ $fn = $conf['indexdir'].'/pageword';
+ $fh = @fopen($fn.'.tmp','w');
+ if (!$fh){
+ trigger_error("Failed to write word index", E_USER_ERROR);
+ return false;
+ }
+ foreach ($pagewords as $line){
+ fwrite($fh, join(':',$line)."\n");
+ }
+ fclose($fh);
+ if($conf['fperm']) chmod($fn.'.tmp', $conf['fperm']);
+ io_rename($fn.'.tmp', $fn.'.idx');
+ return true;
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/infoutils.php
===================================================================
--- site/trunk/www-root/wiki/inc/infoutils.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/infoutils.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,318 +1,318 @@
-<?php
-/**
- * Information and debugging functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-if(!defined('DOKU_MESSAGEURL')) define('DOKU_MESSAGEURL','http://update.dokuwiki.org/check/');
-require_once(DOKU_INC.'inc/HTTPClient.php');
-
-/**
- * Check for new messages from upstream
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function checkUpdateMessages(){
- global $conf;
- global $INFO;
- if(!$conf['updatecheck']) return;
- if($conf['useacl'] && !$INFO['ismanager']) return;
-
- $cf = $conf['cachedir'].'/messages.txt';
- $lm = @filemtime($cf);
-
- // check if new messages needs to be fetched
- if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_CONF.'msg')){
- $num = @file(DOKU_CONF.'msg');
- $num = is_array($num) ? (int) $num[0] : 0;
- $http = new DokuHTTPClient();
- $http->timeout = 8;
- $data = $http->get(DOKU_MESSAGEURL.$num);
- io_saveFile($cf,$data);
- }else{
- $data = io_readFile($cf);
- }
-
- // show messages through the usual message mechanism
- $msgs = explode("\n%\n",$data);
- foreach($msgs as $msg){
- if($msg) msg($msg,2);
- }
-}
-
-
-/**
- * Return DokuWikis version
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function getVersion(){
- //import version string
- if(@file_exists(DOKU_INC.'VERSION')){
- //official release
- return 'Release '.trim(io_readfile(DOKU_INC.'VERSION'));
- }elseif(is_dir(DOKU_INC.'_darcs')){
- //darcs checkout - read last 2000 bytes of inventory
- $sz = filesize(DOKU_INC.'_darcs/inventory');
- $seek = max(0,$sz-2000);
- $fh = fopen(DOKU_INC.'_darcs/inventory','rb');
- fseek($fh,$seek);
- $chunk = fread($fh,2000);
- fclose($fh);
- $inv = preg_grep('#\*\*\d{14}[\]$]#',explode("\n",$chunk));
- $cur = array_pop($inv);
- preg_match('#\*\*(\d{4})(\d{2})(\d{2})#',$cur,$matches);
- return 'Darcs '.$matches[1].'-'.$matches[2].'-'.$matches[3];
- }else{
- return 'snapshot?';
- }
-}
-
-/**
- * Run a few sanity checks
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function check(){
- global $conf;
- global $INFO;
-
- msg('DokuWiki version: '.getVersion(),1);
-
- if(version_compare(phpversion(),'4.3.3','<')){
- msg('Your PHP version is too old ('.phpversion().' vs. 4.3.3+ recommended)',-1);
- }elseif(version_compare(phpversion(),'4.3.10','<')){
- msg('Consider upgrading PHP to 4.3.10 or higher for security reasons (your version: '.phpversion().')',0);
- }else{
- msg('PHP version '.phpversion(),1);
- }
-
- $mem = (int) php_to_byte(ini_get('memory_limit'));
- if($mem){
- if($mem < 16777216){
- msg('PHP is limited to less than 16MB RAM ('.$mem.' bytes). Increase memory_limit in php.ini',-1);
- }elseif($mem < 20971520){
- msg('PHP is limited to less than 20MB RAM ('.$mem.' bytes), you might encounter problems with bigger pages. Increase memory_limit in php.ini',-1);
- }elseif($mem < 33554432){
- msg('PHP is limited to less than 32MB RAM ('.$mem.' bytes), but that should be enough in most cases. If not, increase memory_limit in php.ini',0);
- }else{
- msg('More than 32MB RAM ('.$mem.' bytes) available.',1);
- }
- }
-
-
- if(is_writable($conf['changelog'])){
- msg('Changelog is writable',1);
- }else{
- if (@file_exists($conf['changelog'])) {
- msg('Changelog is not writable',-1);
- }
- }
-
- if (isset($conf['changelog_old']) && @file_exists($conf['changelog_old'])) {
- msg('Old changelog exists', 0);
- }
-
- if (@file_exists($conf['changelog'].'_failed')) {
- msg('Importing old changelog failed', -1);
- } else if (@file_exists($conf['changelog'].'_importing')) {
- msg('Importing old changelog now.', 0);
- } else if (@file_exists($conf['changelog'].'_import_ok')) {
- msg('Old changelog imported', 1);
- if (!plugin_isdisabled('importoldchangelog')) {
- msg('Importoldchangelog plugin not disabled after import', -1);
- }
- }
-
- if(is_writable($conf['datadir'])){
- msg('Datadir is writable',1);
- }else{
- msg('Datadir is not writable',-1);
- }
-
- if(is_writable($conf['olddir'])){
- msg('Attic is writable',1);
- }else{
- msg('Attic is not writable',-1);
- }
-
- if(is_writable($conf['mediadir'])){
- msg('Mediadir is writable',1);
- }else{
- msg('Mediadir is not writable',-1);
- }
-
- if(is_writable($conf['cachedir'])){
- msg('Cachedir is writable',1);
- }else{
- msg('Cachedir is not writable',-1);
- }
-
- if(is_writable($conf['lockdir'])){
- msg('Lockdir is writable',1);
- }else{
- msg('Lockdir is not writable',-1);
- }
-
- if($conf['authtype'] == 'plain'){
- if(is_writable(DOKU_CONF.'users.auth.php')){
- msg('conf/users.auth.php is writable',1);
- }else{
- msg('conf/users.auth.php is not writable',0);
- }
- }
-
- if(function_exists('mb_strpos')){
- if(defined('UTF8_NOMBSTRING')){
- msg('mb_string extension is available but will not be used',0);
- }else{
- msg('mb_string extension is available and will be used',1);
- }
- }else{
- msg('mb_string extension not available - PHP only replacements will be used',0);
- }
-
- if($conf['allowdebug']){
- msg('Debugging support is enabled. If you don\'t need it you should set $conf[\'allowdebug\'] = 0',-1);
- }else{
- msg('Debugging support is disabled',1);
- }
-
- if($INFO['userinfo']['name']){
- msg('You are currently logged in as '.$_SERVER['REMOTE_USER'].' ('.$INFO['userinfo']['name'].')',0);
- msg('You are part of the groups '.join($INFO['userinfo']['grps'],', '),0);
- }else{
- msg('You are currently not logged in',0);
- }
-
- msg('Your current permission for this page is '.$INFO['perm'],0);
-
- if(is_writable($INFO['filepath'])){
- msg('The current page is writable by the webserver',0);
- }else{
- msg('The current page is not writable by the webserver',0);
- }
-
- if($INFO['writable']){
- msg('The current page is writable by you',0);
- }else{
- msg('The current page is not writable by you',0);
- }
-}
-
-/**
- * print a message
- *
- * If HTTP headers were not sent yet the message is added
- * to the global message array else it's printed directly
- * using html_msgarea()
- *
- *
- * Levels can be:
- *
- * -1 error
- * 0 info
- * 1 success
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see html_msgarea
- */
-function msg($message,$lvl=0,$line='',$file=''){
- global $MSG;
- $errors[-1] = 'error';
- $errors[0] = 'info';
- $errors[1] = 'success';
- $errors[2] = 'notify';
-
- if($line || $file) $message.=' ['.basename($file).':'.$line.']';
-
- if(!headers_sent()){
- if(!isset($MSG)) $MSG = array();
- $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message);
- }else{
- $MSG = array();
- $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message);
- if(function_exists('html_msgarea')){
- html_msgarea();
- }else{
- print "ERROR($lvl) $message";
- }
- }
-}
-
-/**
- * print debug messages
- *
- * little function to print the content of a var
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function dbg($msg,$hidden=false){
- (!$hidden) ? print '<pre class="dbg">' : print "<!--\n";
- print_r($msg);
- (!$hidden) ? print '</pre>' : print "\n-->";
-}
-
-/**
- * Print info to a log file
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function dbglog($msg){
- global $conf;
- $file = $conf['cachedir'].'/debug.log';
- $fh = fopen($file,'a');
- if($fh){
- fwrite($fh,date('H:i:s ').$_SERVER['REMOTE_ADDR'].': '.$msg."\n");
- fclose($fh);
- }
-}
-
-/**
- * Print a reversed, prettyprinted backtrace
- *
- * @author Gary Owen <gary_owen at bigfoot.com>
- */
-function dbg_backtrace(){
- // Get backtrace
- $backtrace = debug_backtrace();
-
- // Unset call to debug_print_backtrace
- array_shift($backtrace);
-
- // Iterate backtrace
- $calls = array();
- $depth = count($backtrace) - 1;
- foreach ($backtrace as $i => $call) {
- $location = $call['file'] . ':' . $call['line'];
- $function = (isset($call['class'])) ?
- $call['class'] . $call['type'] . $call['function'] : $call['function'];
-
- $params = array();
- if (isset($call['args'])){
- foreach($call['args'] as $arg){
- if(is_object($arg)){
- $params[] = '[Object '.get_class($arg).']';
- }elseif(is_array($arg)){
- $params[] = '[Array]';
- }elseif(is_null($arg)){
- $param[] = '[NULL]';
- }else{
- $params[] = (string) '"'.$arg.'"';
- }
- }
- }
- $params = implode(', ',$params);
-
- $calls[$depth - $i] = sprintf('%s(%s) called at %s',
- $function,
- str_replace("\n", '\n', $params),
- $location);
- }
- ksort($calls);
-
- return implode("\n", $calls);
-}
-
+<?php
+/**
+ * Information and debugging functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+if(!defined('DOKU_MESSAGEURL')) define('DOKU_MESSAGEURL','http://update.dokuwiki.org/check/');
+require_once(DOKU_INC.'inc/HTTPClient.php');
+
+/**
+ * Check for new messages from upstream
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function checkUpdateMessages(){
+ global $conf;
+ global $INFO;
+ if(!$conf['updatecheck']) return;
+ if($conf['useacl'] && !$INFO['ismanager']) return;
+
+ $cf = $conf['cachedir'].'/messages.txt';
+ $lm = @filemtime($cf);
+
+ // check if new messages needs to be fetched
+ if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_CONF.'msg')){
+ $num = @file(DOKU_CONF.'msg');
+ $num = is_array($num) ? (int) $num[0] : 0;
+ $http = new DokuHTTPClient();
+ $http->timeout = 8;
+ $data = $http->get(DOKU_MESSAGEURL.$num);
+ io_saveFile($cf,$data);
+ }else{
+ $data = io_readFile($cf);
+ }
+
+ // show messages through the usual message mechanism
+ $msgs = explode("\n%\n",$data);
+ foreach($msgs as $msg){
+ if($msg) msg($msg,2);
+ }
+}
+
+
+/**
+ * Return DokuWikis version
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function getVersion(){
+ //import version string
+ if(@file_exists(DOKU_INC.'VERSION')){
+ //official release
+ return 'Release '.trim(io_readfile(DOKU_INC.'VERSION'));
+ }elseif(is_dir(DOKU_INC.'_darcs')){
+ //darcs checkout - read last 2000 bytes of inventory
+ $sz = filesize(DOKU_INC.'_darcs/inventory');
+ $seek = max(0,$sz-2000);
+ $fh = fopen(DOKU_INC.'_darcs/inventory','rb');
+ fseek($fh,$seek);
+ $chunk = fread($fh,2000);
+ fclose($fh);
+ $inv = preg_grep('#\*\*\d{14}[\]$]#',explode("\n",$chunk));
+ $cur = array_pop($inv);
+ preg_match('#\*\*(\d{4})(\d{2})(\d{2})#',$cur,$matches);
+ return 'Darcs '.$matches[1].'-'.$matches[2].'-'.$matches[3];
+ }else{
+ return 'snapshot?';
+ }
+}
+
+/**
+ * Run a few sanity checks
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function check(){
+ global $conf;
+ global $INFO;
+
+ msg('DokuWiki version: '.getVersion(),1);
+
+ if(version_compare(phpversion(),'4.3.3','<')){
+ msg('Your PHP version is too old ('.phpversion().' vs. 4.3.3+ recommended)',-1);
+ }elseif(version_compare(phpversion(),'4.3.10','<')){
+ msg('Consider upgrading PHP to 4.3.10 or higher for security reasons (your version: '.phpversion().')',0);
+ }else{
+ msg('PHP version '.phpversion(),1);
+ }
+
+ $mem = (int) php_to_byte(ini_get('memory_limit'));
+ if($mem){
+ if($mem < 16777216){
+ msg('PHP is limited to less than 16MB RAM ('.$mem.' bytes). Increase memory_limit in php.ini',-1);
+ }elseif($mem < 20971520){
+ msg('PHP is limited to less than 20MB RAM ('.$mem.' bytes), you might encounter problems with bigger pages. Increase memory_limit in php.ini',-1);
+ }elseif($mem < 33554432){
+ msg('PHP is limited to less than 32MB RAM ('.$mem.' bytes), but that should be enough in most cases. If not, increase memory_limit in php.ini',0);
+ }else{
+ msg('More than 32MB RAM ('.$mem.' bytes) available.',1);
+ }
+ }
+
+
+ if(is_writable($conf['changelog'])){
+ msg('Changelog is writable',1);
+ }else{
+ if (@file_exists($conf['changelog'])) {
+ msg('Changelog is not writable',-1);
+ }
+ }
+
+ if (isset($conf['changelog_old']) && @file_exists($conf['changelog_old'])) {
+ msg('Old changelog exists', 0);
+ }
+
+ if (@file_exists($conf['changelog'].'_failed')) {
+ msg('Importing old changelog failed', -1);
+ } else if (@file_exists($conf['changelog'].'_importing')) {
+ msg('Importing old changelog now.', 0);
+ } else if (@file_exists($conf['changelog'].'_import_ok')) {
+ msg('Old changelog imported', 1);
+ if (!plugin_isdisabled('importoldchangelog')) {
+ msg('Importoldchangelog plugin not disabled after import', -1);
+ }
+ }
+
+ if(is_writable($conf['datadir'])){
+ msg('Datadir is writable',1);
+ }else{
+ msg('Datadir is not writable',-1);
+ }
+
+ if(is_writable($conf['olddir'])){
+ msg('Attic is writable',1);
+ }else{
+ msg('Attic is not writable',-1);
+ }
+
+ if(is_writable($conf['mediadir'])){
+ msg('Mediadir is writable',1);
+ }else{
+ msg('Mediadir is not writable',-1);
+ }
+
+ if(is_writable($conf['cachedir'])){
+ msg('Cachedir is writable',1);
+ }else{
+ msg('Cachedir is not writable',-1);
+ }
+
+ if(is_writable($conf['lockdir'])){
+ msg('Lockdir is writable',1);
+ }else{
+ msg('Lockdir is not writable',-1);
+ }
+
+ if($conf['authtype'] == 'plain'){
+ if(is_writable(DOKU_CONF.'users.auth.php')){
+ msg('conf/users.auth.php is writable',1);
+ }else{
+ msg('conf/users.auth.php is not writable',0);
+ }
+ }
+
+ if(function_exists('mb_strpos')){
+ if(defined('UTF8_NOMBSTRING')){
+ msg('mb_string extension is available but will not be used',0);
+ }else{
+ msg('mb_string extension is available and will be used',1);
+ }
+ }else{
+ msg('mb_string extension not available - PHP only replacements will be used',0);
+ }
+
+ if($conf['allowdebug']){
+ msg('Debugging support is enabled. If you don\'t need it you should set $conf[\'allowdebug\'] = 0',-1);
+ }else{
+ msg('Debugging support is disabled',1);
+ }
+
+ if($INFO['userinfo']['name']){
+ msg('You are currently logged in as '.$_SERVER['REMOTE_USER'].' ('.$INFO['userinfo']['name'].')',0);
+ msg('You are part of the groups '.join($INFO['userinfo']['grps'],', '),0);
+ }else{
+ msg('You are currently not logged in',0);
+ }
+
+ msg('Your current permission for this page is '.$INFO['perm'],0);
+
+ if(is_writable($INFO['filepath'])){
+ msg('The current page is writable by the webserver',0);
+ }else{
+ msg('The current page is not writable by the webserver',0);
+ }
+
+ if($INFO['writable']){
+ msg('The current page is writable by you',0);
+ }else{
+ msg('The current page is not writable by you',0);
+ }
+}
+
+/**
+ * print a message
+ *
+ * If HTTP headers were not sent yet the message is added
+ * to the global message array else it's printed directly
+ * using html_msgarea()
+ *
+ *
+ * Levels can be:
+ *
+ * -1 error
+ * 0 info
+ * 1 success
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see html_msgarea
+ */
+function msg($message,$lvl=0,$line='',$file=''){
+ global $MSG;
+ $errors[-1] = 'error';
+ $errors[0] = 'info';
+ $errors[1] = 'success';
+ $errors[2] = 'notify';
+
+ if($line || $file) $message.=' ['.basename($file).':'.$line.']';
+
+ if(!headers_sent()){
+ if(!isset($MSG)) $MSG = array();
+ $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message);
+ }else{
+ $MSG = array();
+ $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message);
+ if(function_exists('html_msgarea')){
+ html_msgarea();
+ }else{
+ print "ERROR($lvl) $message";
+ }
+ }
+}
+
+/**
+ * print debug messages
+ *
+ * little function to print the content of a var
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function dbg($msg,$hidden=false){
+ (!$hidden) ? print '<pre class="dbg">' : print "<!--\n";
+ print_r($msg);
+ (!$hidden) ? print '</pre>' : print "\n-->";
+}
+
+/**
+ * Print info to a log file
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function dbglog($msg){
+ global $conf;
+ $file = $conf['cachedir'].'/debug.log';
+ $fh = fopen($file,'a');
+ if($fh){
+ fwrite($fh,date('H:i:s ').$_SERVER['REMOTE_ADDR'].': '.$msg."\n");
+ fclose($fh);
+ }
+}
+
+/**
+ * Print a reversed, prettyprinted backtrace
+ *
+ * @author Gary Owen <gary_owen at bigfoot.com>
+ */
+function dbg_backtrace(){
+ // Get backtrace
+ $backtrace = debug_backtrace();
+
+ // Unset call to debug_print_backtrace
+ array_shift($backtrace);
+
+ // Iterate backtrace
+ $calls = array();
+ $depth = count($backtrace) - 1;
+ foreach ($backtrace as $i => $call) {
+ $location = $call['file'] . ':' . $call['line'];
+ $function = (isset($call['class'])) ?
+ $call['class'] . $call['type'] . $call['function'] : $call['function'];
+
+ $params = array();
+ if (isset($call['args'])){
+ foreach($call['args'] as $arg){
+ if(is_object($arg)){
+ $params[] = '[Object '.get_class($arg).']';
+ }elseif(is_array($arg)){
+ $params[] = '[Array]';
+ }elseif(is_null($arg)){
+ $param[] = '[NULL]';
+ }else{
+ $params[] = (string) '"'.$arg.'"';
+ }
+ }
+ }
+ $params = implode(', ',$params);
+
+ $calls[$depth - $i] = sprintf('%s(%s) called at %s',
+ $function,
+ str_replace("\n", '\n', $params),
+ $location);
+ }
+ ksort($calls);
+
+ return implode("\n", $calls);
+}
+
Modified: site/trunk/www-root/wiki/inc/init.php
===================================================================
--- site/trunk/www-root/wiki/inc/init.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/init.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,453 +1,456 @@
-<?php
-/**
- * Initialize some defaults needed for DokuWiki
- */
-
- // start timing Dokuwiki execution
- function delta_time($start=0) {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec+(float)$sec)-((float)$start);
- }
- define('DOKU_START_TIME', delta_time());
-
- // define the include path
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-
- // define config path (packagers may want to change this to /etc/dokuwiki/)
- if(!defined('DOKU_CONF')) define('DOKU_CONF',DOKU_INC.'conf/');
-
- // check for error reporting override or set error reporting to sane values
- if (!defined('DOKU_E_LEVEL') && @file_exists(DOKU_CONF.'report_e_all')) {
- define('DOKU_E_LEVEL', E_ALL);
- }
- if (!defined('DOKU_E_LEVEL')) { error_reporting(E_ALL ^ E_NOTICE); }
- else { error_reporting(DOKU_E_LEVEL); }
-
- // init memory caches
- global $cache_revinfo; $cache_revinfo = array();
- global $cache_wikifn; $cache_wikifn = array();
- global $cache_cleanid; $cache_cleanid = array();
- global $cache_authname; $cache_authname = array();
- global $cache_metadata; $cache_metadata = array();
-
- //prepare config array()
- global $conf;
- if (!defined('DOKU_UNITTEST')) {
- $conf = array();
-
- // load the config file(s)
- require_once(DOKU_CONF.'dokuwiki.php');
- if(@file_exists(DOKU_CONF.'local.php')){
- require_once(DOKU_CONF.'local.php');
- }
- }
-
- //prepare language array
- global $lang;
- $lang = array();
-
- //load the language files
- require_once(DOKU_INC.'inc/lang/en/lang.php');
- if ( $conf['lang'] && $conf['lang'] != 'en' ) {
- require_once(DOKU_INC.'inc/lang/'.$conf['lang'].'/lang.php');
- }
-
- // define baseURL
- if(!defined('DOKU_REL')) define('DOKU_REL',getBaseURL(false));
- if(!defined('DOKU_URL')) define('DOKU_URL',getBaseURL(true));
- if(!defined('DOKU_BASE')){
- if($conf['canonical']){
- define('DOKU_BASE',DOKU_URL);
- }else{
- define('DOKU_BASE',DOKU_REL);
- }
- }
-
- // define whitespace
- if(!defined('DOKU_LF')) define ('DOKU_LF',"\n");
- if(!defined('DOKU_TAB')) define ('DOKU_TAB',"\t");
-
- // define cookie and session id
- if (!defined('DOKU_COOKIE')) define('DOKU_COOKIE', 'DW'.md5(DOKU_REL));
-
- // define Plugin dir
- if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-
- // define main script
- if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','doku.php');
-
- // define Template baseURL
- if(!defined('DOKU_TPL')) define('DOKU_TPL',
- DOKU_BASE.'lib/tpl/'.$conf['template'].'/');
-
- // define real Template directory
- if(!defined('DOKU_TPLINC')) define('DOKU_TPLINC',
- DOKU_INC.'lib/tpl/'.$conf['template'].'/');
-
- // make session rewrites XHTML compliant
- @ini_set('arg_separator.output', '&');
-
- // make sure global zlib does not interfere FS#1132
- @ini_set('zlib.output_compression', 'off');
-
- // enable gzip compression
- if ($conf['gzip_output'] &&
- !defined('DOKU_DISABLE_GZIP_OUTPUT') &&
- function_exists('ob_gzhandler') &&
- preg_match('/gzip|deflate/', $_SERVER['HTTP_ACCEPT_ENCODING'])) {
- ob_start('ob_gzhandler');
- }
-
- // init session
- if (!headers_sent() && !defined('NOSESSION')){
- session_name("DokuWiki");
- session_set_cookie_params(0, DOKU_REL);
- session_start();
- }
-
- // kill magic quotes
- if (get_magic_quotes_gpc() && !defined('MAGIC_QUOTES_STRIPPED')) {
- if (!empty($_GET)) remove_magic_quotes($_GET);
- if (!empty($_POST)) remove_magic_quotes($_POST);
- if (!empty($_COOKIE)) remove_magic_quotes($_COOKIE);
- if (!empty($_REQUEST)) remove_magic_quotes($_REQUEST);
- @ini_set('magic_quotes_gpc', 0);
- define('MAGIC_QUOTES_STRIPPED',1);
- }
- @set_magic_quotes_runtime(0);
- @ini_set('magic_quotes_sybase',0);
-
- // don't let cookies ever interfere with request vars
- $_REQUEST = array_merge($_GET,$_POST);
-
- // disable gzip if not available
- if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
- $conf['compression'] = 'gz';
- }
- if($conf['compression'] == 'gz' && !function_exists('gzopen')){
- $conf['compression'] = 0;
- }
-
- // fix dateformat for upgraders
- if(strpos($conf['dformat'],'%') === false){
- $conf['dformat'] = '%Y/%m/%d %H:%M';
- }
-
- // precalculate file creation modes
- init_creationmodes();
-
- // make real paths and check them
- init_paths();
- init_files();
-
- // automatic upgrade to script versions of certain files
- scriptify(DOKU_CONF.'users.auth');
- scriptify(DOKU_CONF.'acl.auth');
-
-
-/**
- * Checks paths from config file
- */
-function init_paths(){
- global $conf;
-
- $paths = array('datadir' => 'pages',
- 'olddir' => 'attic',
- 'mediadir' => 'media',
- 'metadir' => 'meta',
- 'cachedir' => 'cache',
- 'indexdir' => 'index',
- 'lockdir' => 'locks',
- 'tmpdir' => 'tmp');
-
- foreach($paths as $c => $p){
- if(empty($conf[$c])) $conf[$c] = $conf['savedir'].'/'.$p;
- $conf[$c] = init_path($conf[$c]);
- if(empty($conf[$c])) nice_die("The $c ('$p') does not exist, isn't accessible or writable.
- You should check your config and permission settings.
- Or maybe you want to <a href=\"install.php\">run the
- installer</a>?");
- }
-
- // path to old changelog only needed for upgrading
- $conf['changelog_old'] = init_path((isset($conf['changelog']))?($conf['changelog']):($conf['savedir'].'/changes.log'));
- if ($conf['changelog_old']=='') { unset($conf['changelog_old']); }
- // hardcoded changelog because it is now a cache that lives in meta
- $conf['changelog'] = $conf['metadir'].'/_dokuwiki.changes';
-}
-
-/**
- * Checks the existance of certain files and creates them if missing.
- */
-function init_files(){
- global $conf;
-
- $files = array( $conf['indexdir'].'/page.idx');
-
- foreach($files as $file){
- if(!@file_exists($file)){
- $fh = @fopen($file,'a');
- if($fh){
- fclose($fh);
- if($conf['fperm']) chmod($file, $conf['fperm']);
- }else{
- nice_die("$file is not writable. Check your permissions settings!");
- }
- }
- }
-}
-
-/**
- * Returns absolute path
- *
- * This tries the given path first, then checks in DOKU_INC.
- * Check for accessability on directories as well.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function init_path($path){
- // check existance
- $p = fullpath($path);
- if(!@file_exists($p)){
- $p = fullpath(DOKU_INC.$path);
- if(!@file_exists($p)){
- return '';
- }
- }
-
- // check writability
- if(!@is_writable($p)){
- return '';
- }
-
- // check accessability (execute bit) for directories
- if(@is_dir($p) && !@file_exists("$p/.")){
- return '';
- }
-
- return $p;
-}
-
-/**
- * Sets the internal config values fperm and dperm which, when set,
- * will be used to change the permission of a newly created dir or
- * file with chmod. Considers the influence of the system's umask
- * setting the values only if needed.
- */
-function init_creationmodes(){
- global $conf;
-
- // Legacy support for old umask/dmask scheme
- unset($conf['dmask']);
- unset($conf['fmask']);
- unset($conf['umask']);
- unset($conf['fperm']);
- unset($conf['dperm']);
-
- // get system umask, fallback to 0 if none available
- $umask = @umask();
- if(!$umask) $umask = 0000;
-
- // check what is set automatically by the system on file creation
- // and set the fperm param if it's not what we want
- $auto_fmode = 0666 & ~$umask;
- if($auto_fmode != $conf['fmode']) $conf['fperm'] = $conf['fmode'];
-
- // check what is set automatically by the system on file creation
- // and set the dperm param if it's not what we want
- $auto_dmode = $conf['dmode'] & ~$umask;
- if($auto_dmode != $conf['dmode']) $conf['dperm'] = $conf['dmode'];
-}
-
-/**
- * remove magic quotes recursivly
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function remove_magic_quotes(&$array) {
- foreach (array_keys($array) as $key) {
- // handle magic quotes in keynames (breaks order)
- $sk = stripslashes($key);
- if($sk != $key){
- $array[$sk] = $array[$key];
- unset($array[$key]);
- $key = $sk;
- }
-
- // do recursion if needed
- if (is_array($array[$key])) {
- remove_magic_quotes($array[$key]);
- }else {
- $array[$key] = stripslashes($array[$key]);
- }
- }
-}
-
-/**
- * Returns the full absolute URL to the directory where
- * DokuWiki is installed in (includes a trailing slash)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function getBaseURL($abs=null){
- global $conf;
- //if canonical url enabled always return absolute
- if(is_null($abs)) $abs = $conf['canonical'];
-
- if($conf['basedir']){
- $dir = $conf['basedir'].'/';
- }elseif(substr($_SERVER['SCRIPT_NAME'],-4) == '.php'){
- $dir = dirname($_SERVER['SCRIPT_NAME']).'/';
- }elseif(substr($_SERVER['PHP_SELF'],-4) == '.php'){
- $dir = dirname($_SERVER['PHP_SELF']).'/';
- }elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['SCRIPT_FILENAME']){
- $dir = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','',
- $_SERVER['SCRIPT_FILENAME']);
- $dir = dirname('/'.$dir).'/';
- }else{
- $dir = './'; //probably wrong
- }
-
- $dir = str_replace('\\','/',$dir); #bugfix for weird WIN behaviour
- $dir = preg_replace('#//+#','/',$dir);
-
- //handle script in lib/exe dir
- $dir = preg_replace('!lib/exe/$!','',$dir);
-
- //handle script in lib/plugins dir
- $dir = preg_replace('!lib/plugins/.*$!','',$dir);
-
- //finish here for relative URLs
- if(!$abs) return $dir;
-
- //use config option if available
- if($conf['baseurl']) return $conf['baseurl'].$dir;
-
- //split hostheader into host and port
- list($host,$port) = explode(':',$_SERVER['HTTP_HOST']);
- if(!$port) $port = $_SERVER['SERVER_PORT'];
- if(!$port) $port = 80;
-
- // see if HTTPS is enabled - apache leaves this empty when not available,
- // IIS sets it to 'off', 'false' and 'disabled' are just guessing
- if (preg_match('/^(|off|false|disabled)$/i',$_SERVER['HTTPS'])){
- $proto = 'http://';
- if ($port == '80') {
- $port='';
- }
- }else{
- $proto = 'https://';
- if ($port == '443') {
- $port='';
- }
- }
-
- if($port) $port = ':'.$port;
-
- return $proto.$host.$port.$dir;
-}
-
-/**
- * Append a PHP extension to a given file and adds an exit call
- *
- * This is used to migrate some old configfiles. An added PHP extension
- * ensures the contents are not shown to webusers even if .htaccess files
- * do not work
- *
- * @author Jan Decaluwe <jan at jandecaluwe.com>
- */
-function scriptify($file) {
- // checks
- if (!is_readable($file)) {
- return;
- }
- $fn = $file.'.php';
- if (@file_exists($fn)) {
- return;
- }
- $fh = fopen($fn, 'w');
- if (!$fh) {
- nice_die($fn.' is not writable. Check your permission settings!');
- }
- // write php exit hack first
- fwrite($fh, "# $fn\n");
- fwrite($fh, '# <?php exit()?>'."\n");
- fwrite($fh, "# Don't modify the lines above\n");
- fwrite($fh, "#\n");
- // copy existing lines
- $lines = file($file);
- foreach ($lines as $line){
- fwrite($fh, $line);
- }
- fclose($fh);
- //try to rename the old file
- io_rename($file,"$file.old");
-}
-
-/**
- * print a nice message even if no styles are loaded yet.
- */
-function nice_die($msg){
- echo<<<EOT
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head><title>DokuWiki Setup Error</title></head>
- <body style="font-family: Arial, sans-serif">
- <div style="width:60%; margin: auto; background-color: #fcc;
- border: 1px solid #faa; padding: 0.5em 1em;">
- <h1 style="font-size: 120%">DokuWiki Setup Error</h1>
- <p>$msg</p>
- </div>
- </body>
- </html>
-EOT;
- exit;
-}
-
-
-/**
- * A realpath() replacement
- *
- * This function behaves similar to PHP's realpath() but does not resolve
- * symlinks or accesses upper directories
- *
- * @author <richpageau at yahoo dot co dot uk>
- * @link http://de3.php.net/manual/en/function.realpath.php#75992
- */
-function fullpath($path){
- $iswin = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
- if($iswin) $path = str_replace('\\','/',$path); // windows compatibility
-
- // check if path begins with "/" or "c:" ie. is absolute
- // if it isnt concat with script path
- if ((!$iswin && $path{0} !== '/') ||
- ($iswin && $path{1} !== ':')) {
- $base=dirname($_SERVER['SCRIPT_FILENAME']);
- $path=$base."/".$path;
- }
-
- // canonicalize
- $path=explode('/', $path);
- $newpath=array();
- foreach($path as $p) {
- if ($p === '' || $p === '.') continue;
- if ($p==='..') {
- array_pop($newpath);
- continue;
- }
- array_push($newpath, $p);
- }
- $finalpath = implode('/', $newpath);
- if(!$iswin) $finalpath = '/'.$finalpath;
-
- // check then return valid path or filename
- if (file_exists($finalpath)) {
- return ($finalpath);
- }
- else return false;
-}
-
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Initialize some defaults needed for DokuWiki
+ */
+
+ // start timing Dokuwiki execution
+ function delta_time($start=0) {
+ list($usec, $sec) = explode(" ", microtime());
+ return ((float)$usec+(float)$sec)-((float)$start);
+ }
+ define('DOKU_START_TIME', delta_time());
+
+ // define the include path
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+
+ // define config path (packagers may want to change this to /etc/dokuwiki/)
+ if(!defined('DOKU_CONF')) define('DOKU_CONF',DOKU_INC.'conf/');
+
+ // check for error reporting override or set error reporting to sane values
+ if (!defined('DOKU_E_LEVEL') && @file_exists(DOKU_CONF.'report_e_all')) {
+ define('DOKU_E_LEVEL', E_ALL);
+ }
+ if (!defined('DOKU_E_LEVEL')) { error_reporting(E_ALL ^ E_NOTICE); }
+ else { error_reporting(DOKU_E_LEVEL); }
+
+ // init memory caches
+ global $cache_revinfo; $cache_revinfo = array();
+ global $cache_wikifn; $cache_wikifn = array();
+ global $cache_cleanid; $cache_cleanid = array();
+ global $cache_authname; $cache_authname = array();
+ global $cache_metadata; $cache_metadata = array();
+
+ //prepare config array()
+ global $conf;
+ if (!defined('DOKU_UNITTEST')) {
+ $conf = array();
+
+ // load the config file(s)
+ require_once(DOKU_CONF.'dokuwiki.php');
+ if(@file_exists(DOKU_CONF.'local.php')){
+ require_once(DOKU_CONF.'local.php');
+ }
+ }
+
+ //prepare language array
+ global $lang;
+ $lang = array();
+
+ //load the language files
+ require_once(DOKU_INC.'inc/lang/en/lang.php');
+ if ( $conf['lang'] && $conf['lang'] != 'en' ) {
+ require_once(DOKU_INC.'inc/lang/'.$conf['lang'].'/lang.php');
+ }
+
+ // define baseURL
+ if(!defined('DOKU_REL')) define('DOKU_REL',getBaseURL(false));
+ if(!defined('DOKU_URL')) define('DOKU_URL',getBaseURL(true));
+ if(!defined('DOKU_BASE')){
+ if($conf['canonical']){
+ define('DOKU_BASE',DOKU_URL);
+ }else{
+ define('DOKU_BASE',DOKU_REL);
+ }
+ }
+
+ // define whitespace
+ if(!defined('DOKU_LF')) define ('DOKU_LF',"\n");
+ if(!defined('DOKU_TAB')) define ('DOKU_TAB',"\t");
+
+ // define cookie and session id
+ if (!defined('DOKU_COOKIE')) define('DOKU_COOKIE', 'DW'.md5(DOKU_REL));
+
+ // define Plugin dir
+ if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+
+ // define main script
+ if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','doku.php');
+
+ // define Template baseURL
+ if(!defined('DOKU_TPL')) define('DOKU_TPL',
+ DOKU_BASE.'lib/tpl/'.$conf['template'].'/');
+
+ // define real Template directory
+ if(!defined('DOKU_TPLINC')) define('DOKU_TPLINC',
+ DOKU_INC.'lib/tpl/'.$conf['template'].'/');
+
+ // make session rewrites XHTML compliant
+ @ini_set('arg_separator.output', '&');
+
+ // make sure global zlib does not interfere FS#1132
+ @ini_set('zlib.output_compression', 'off');
+
+ // increase PCRE backtrack limit
+ @ini_set('pcre.backtrack_limit', '20971520');
+
+ // enable gzip compression
+ if ($conf['gzip_output'] &&
+ !defined('DOKU_DISABLE_GZIP_OUTPUT') &&
+ function_exists('ob_gzhandler') &&
+ preg_match('/gzip|deflate/', $_SERVER['HTTP_ACCEPT_ENCODING'])) {
+ ob_start('ob_gzhandler');
+ }
+
+ // init session
+ if (!headers_sent() && !defined('NOSESSION')){
+ session_name("DokuWiki");
+ session_set_cookie_params(0, DOKU_REL);
+ session_start();
+ }
+
+ // kill magic quotes
+ if (get_magic_quotes_gpc() && !defined('MAGIC_QUOTES_STRIPPED')) {
+ if (!empty($_GET)) remove_magic_quotes($_GET);
+ if (!empty($_POST)) remove_magic_quotes($_POST);
+ if (!empty($_COOKIE)) remove_magic_quotes($_COOKIE);
+ if (!empty($_REQUEST)) remove_magic_quotes($_REQUEST);
+ @ini_set('magic_quotes_gpc', 0);
+ define('MAGIC_QUOTES_STRIPPED',1);
+ }
+ @set_magic_quotes_runtime(0);
+ @ini_set('magic_quotes_sybase',0);
+
+ // don't let cookies ever interfere with request vars
+ $_REQUEST = array_merge($_GET,$_POST);
+
+ // disable gzip if not available
+ if($conf['compression'] == 'bz2' && !function_exists('bzopen')){
+ $conf['compression'] = 'gz';
+ }
+ if($conf['compression'] == 'gz' && !function_exists('gzopen')){
+ $conf['compression'] = 0;
+ }
+
+ // fix dateformat for upgraders
+ if(strpos($conf['dformat'],'%') === false){
+ $conf['dformat'] = '%Y/%m/%d %H:%M';
+ }
+
+ // precalculate file creation modes
+ init_creationmodes();
+
+ // make real paths and check them
+ init_paths();
+ init_files();
+
+ // automatic upgrade to script versions of certain files
+ scriptify(DOKU_CONF.'users.auth');
+ scriptify(DOKU_CONF.'acl.auth');
+
+
+/**
+ * Checks paths from config file
+ */
+function init_paths(){
+ global $conf;
+
+ $paths = array('datadir' => 'pages',
+ 'olddir' => 'attic',
+ 'mediadir' => 'media',
+ 'metadir' => 'meta',
+ 'cachedir' => 'cache',
+ 'indexdir' => 'index',
+ 'lockdir' => 'locks',
+ 'tmpdir' => 'tmp');
+
+ foreach($paths as $c => $p){
+ if(empty($conf[$c])) $conf[$c] = $conf['savedir'].'/'.$p;
+ $conf[$c] = init_path($conf[$c]);
+ if(empty($conf[$c])) nice_die("The $c ('$p') does not exist, isn't accessible or writable.
+ You should check your config and permission settings.
+ Or maybe you want to <a href=\"install.php\">run the
+ installer</a>?");
+ }
+
+ // path to old changelog only needed for upgrading
+ $conf['changelog_old'] = init_path((isset($conf['changelog']))?($conf['changelog']):($conf['savedir'].'/changes.log'));
+ if ($conf['changelog_old']=='') { unset($conf['changelog_old']); }
+ // hardcoded changelog because it is now a cache that lives in meta
+ $conf['changelog'] = $conf['metadir'].'/_dokuwiki.changes';
+}
+
+/**
+ * Checks the existance of certain files and creates them if missing.
+ */
+function init_files(){
+ global $conf;
+
+ $files = array( $conf['indexdir'].'/page.idx');
+
+ foreach($files as $file){
+ if(!@file_exists($file)){
+ $fh = @fopen($file,'a');
+ if($fh){
+ fclose($fh);
+ if($conf['fperm']) chmod($file, $conf['fperm']);
+ }else{
+ nice_die("$file is not writable. Check your permissions settings!");
+ }
+ }
+ }
+}
+
+/**
+ * Returns absolute path
+ *
+ * This tries the given path first, then checks in DOKU_INC.
+ * Check for accessability on directories as well.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function init_path($path){
+ // check existance
+ $p = fullpath($path);
+ if(!@file_exists($p)){
+ $p = fullpath(DOKU_INC.$path);
+ if(!@file_exists($p)){
+ return '';
+ }
+ }
+
+ // check writability
+ if(!@is_writable($p)){
+ return '';
+ }
+
+ // check accessability (execute bit) for directories
+ if(@is_dir($p) && !@file_exists("$p/.")){
+ return '';
+ }
+
+ return $p;
+}
+
+/**
+ * Sets the internal config values fperm and dperm which, when set,
+ * will be used to change the permission of a newly created dir or
+ * file with chmod. Considers the influence of the system's umask
+ * setting the values only if needed.
+ */
+function init_creationmodes(){
+ global $conf;
+
+ // Legacy support for old umask/dmask scheme
+ unset($conf['dmask']);
+ unset($conf['fmask']);
+ unset($conf['umask']);
+ unset($conf['fperm']);
+ unset($conf['dperm']);
+
+ // get system umask, fallback to 0 if none available
+ $umask = @umask();
+ if(!$umask) $umask = 0000;
+
+ // check what is set automatically by the system on file creation
+ // and set the fperm param if it's not what we want
+ $auto_fmode = 0666 & ~$umask;
+ if($auto_fmode != $conf['fmode']) $conf['fperm'] = $conf['fmode'];
+
+ // check what is set automatically by the system on file creation
+ // and set the dperm param if it's not what we want
+ $auto_dmode = $conf['dmode'] & ~$umask;
+ if($auto_dmode != $conf['dmode']) $conf['dperm'] = $conf['dmode'];
+}
+
+/**
+ * remove magic quotes recursivly
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function remove_magic_quotes(&$array) {
+ foreach (array_keys($array) as $key) {
+ // handle magic quotes in keynames (breaks order)
+ $sk = stripslashes($key);
+ if($sk != $key){
+ $array[$sk] = $array[$key];
+ unset($array[$key]);
+ $key = $sk;
+ }
+
+ // do recursion if needed
+ if (is_array($array[$key])) {
+ remove_magic_quotes($array[$key]);
+ }else {
+ $array[$key] = stripslashes($array[$key]);
+ }
+ }
+}
+
+/**
+ * Returns the full absolute URL to the directory where
+ * DokuWiki is installed in (includes a trailing slash)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function getBaseURL($abs=null){
+ global $conf;
+ //if canonical url enabled always return absolute
+ if(is_null($abs)) $abs = $conf['canonical'];
+
+ if($conf['basedir']){
+ $dir = $conf['basedir'];
+ }elseif(substr($_SERVER['SCRIPT_NAME'],-4) == '.php'){
+ $dir = dirname($_SERVER['SCRIPT_NAME']);
+ }elseif(substr($_SERVER['PHP_SELF'],-4) == '.php'){
+ $dir = dirname($_SERVER['PHP_SELF']);
+ }elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['SCRIPT_FILENAME']){
+ $dir = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','',
+ $_SERVER['SCRIPT_FILENAME']);
+ $dir = dirname('/'.$dir);
+ }else{
+ $dir = '.'; //probably wrong
+ }
+
+ $dir = str_replace('\\','/',$dir); // bugfix for weird WIN behaviour
+ $dir = preg_replace('#//+#','/',"/$dir/"); // ensure leading and trailing slashes
+
+ //handle script in lib/exe dir
+ $dir = preg_replace('!lib/exe/$!','',$dir);
+
+ //handle script in lib/plugins dir
+ $dir = preg_replace('!lib/plugins/.*$!','',$dir);
+
+ //finish here for relative URLs
+ if(!$abs) return $dir;
+
+ //use config option if available, trim any slash from end of baseurl to avoid multiple consecutive slashes in the path
+ if($conf['baseurl']) return rtrim($conf['baseurl'],'/').$dir;
+
+ //split hostheader into host and port
+ list($host,$port) = explode(':',$_SERVER['HTTP_HOST']);
+ if(!$port) $port = $_SERVER['SERVER_PORT'];
+ if(!$port) $port = 80;
+
+ // see if HTTPS is enabled - apache leaves this empty when not available,
+ // IIS sets it to 'off', 'false' and 'disabled' are just guessing
+ if (preg_match('/^(|off|false|disabled)$/i',$_SERVER['HTTPS'])){
+ $proto = 'http://';
+ if ($port == '80') {
+ $port='';
+ }
+ }else{
+ $proto = 'https://';
+ if ($port == '443') {
+ $port='';
+ }
+ }
+
+ if($port) $port = ':'.$port;
+
+ return $proto.$host.$port.$dir;
+}
+
+/**
+ * Append a PHP extension to a given file and adds an exit call
+ *
+ * This is used to migrate some old configfiles. An added PHP extension
+ * ensures the contents are not shown to webusers even if .htaccess files
+ * do not work
+ *
+ * @author Jan Decaluwe <jan at jandecaluwe.com>
+ */
+function scriptify($file) {
+ // checks
+ if (!is_readable($file)) {
+ return;
+ }
+ $fn = $file.'.php';
+ if (@file_exists($fn)) {
+ return;
+ }
+ $fh = fopen($fn, 'w');
+ if (!$fh) {
+ nice_die($fn.' is not writable. Check your permission settings!');
+ }
+ // write php exit hack first
+ fwrite($fh, "# $fn\n");
+ fwrite($fh, '# <?php exit()?>'."\n");
+ fwrite($fh, "# Don't modify the lines above\n");
+ fwrite($fh, "#\n");
+ // copy existing lines
+ $lines = file($file);
+ foreach ($lines as $line){
+ fwrite($fh, $line);
+ }
+ fclose($fh);
+ //try to rename the old file
+ io_rename($file,"$file.old");
+}
+
+/**
+ * print a nice message even if no styles are loaded yet.
+ */
+function nice_die($msg){
+ echo<<<EOT
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+ <html>
+ <head><title>DokuWiki Setup Error</title></head>
+ <body style="font-family: Arial, sans-serif">
+ <div style="width:60%; margin: auto; background-color: #fcc;
+ border: 1px solid #faa; padding: 0.5em 1em;">
+ <h1 style="font-size: 120%">DokuWiki Setup Error</h1>
+ <p>$msg</p>
+ </div>
+ </body>
+ </html>
+EOT;
+ exit;
+}
+
+
+/**
+ * A realpath() replacement
+ *
+ * This function behaves similar to PHP's realpath() but does not resolve
+ * symlinks or accesses upper directories
+ *
+ * @author <richpageau at yahoo dot co dot uk>
+ * @link http://de3.php.net/manual/en/function.realpath.php#75992
+ */
+function fullpath($path){
+ $iswin = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
+ if($iswin) $path = str_replace('\\','/',$path); // windows compatibility
+
+ // check if path begins with "/" or "c:" ie. is absolute
+ // if it isnt concat with script path
+ if ((!$iswin && $path{0} !== '/') ||
+ ($iswin && $path{1} !== ':')) {
+ $base=dirname($_SERVER['SCRIPT_FILENAME']);
+ $path=$base."/".$path;
+ }
+
+ // canonicalize
+ $path=explode('/', $path);
+ $newpath=array();
+ foreach($path as $p) {
+ if ($p === '' || $p === '.') continue;
+ if ($p==='..') {
+ array_pop($newpath);
+ continue;
+ }
+ array_push($newpath, $p);
+ }
+ $finalpath = implode('/', $newpath);
+ if(!$iswin) $finalpath = '/'.$finalpath;
+
+ // check then return valid path or filename
+ if (file_exists($finalpath)) {
+ return ($finalpath);
+ }
+ else return false;
+}
+
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/io.php
===================================================================
--- site/trunk/www-root/wiki/inc/io.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/io.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,594 +1,594 @@
-<?php
-/**
- * File IO functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/HTTPClient.php');
- require_once(DOKU_INC.'inc/events.php');
- require_once(DOKU_INC.'inc/utf8.php');
-
-/**
- * Removes empty directories
- *
- * Sends IO_NAMESPACE_DELETED events for 'pages' and 'media' namespaces.
- * Event data:
- * $data[0] ns: The colon separated namespace path minus the trailing page name.
- * $data[1] ns_type: 'pages' or 'media' namespace tree.
- *
- * @todo use safemode hack
- * @param string $id - a pageid, the namespace of that id will be tried to deleted
- * @param string $basadir - the config name of the type to delete (datadir or mediadir usally)
- * @returns bool - true if at least one namespace was deleted
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function io_sweepNS($id,$basedir='datadir'){
- global $conf;
- $types = array ('datadir'=>'pages', 'mediadir'=>'media');
- $ns_type = (isset($types[$basedir])?$types[$basedir]:false);
-
- $delone = false;
-
- //scan all namespaces
- while(($id = getNS($id)) !== false){
- $dir = $conf[$basedir].'/'.utf8_encodeFN(str_replace(':','/',$id));
-
- //try to delete dir else return
- if(@rmdir($dir)) {
- if ($ns_type!==false) {
- $data = array($id, $ns_type);
- $delone = true; // we deleted at least one dir
- trigger_event('IO_NAMESPACE_DELETED', $data);
- }
- } else { return $delone; }
- }
- return $delone;
-}
-
-/**
- * Used to read in a DokuWiki page from file, and send IO_WIKIPAGE_READ events.
- *
- * Generates the action event which delegates to io_readFile().
- * Action plugins are allowed to modify the page content in transit.
- * The file path should not be changed.
- *
- * Event data:
- * $data[0] The raw arguments for io_readFile as an array.
- * $data[1] ns: The colon separated namespace path minus the trailing page name. (false if root ns)
- * $data[2] page_name: The wiki page name.
- * $data[3] rev: The page revision, false for current wiki pages.
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function io_readWikiPage($file, $id, $rev=false) {
- if (empty($rev)) { $rev = false; }
- $data = array(array($file, false), getNS($id), noNS($id), $rev);
- return trigger_event('IO_WIKIPAGE_READ', $data, '_io_readWikiPage_action', false);
-}
-
-/**
- * Callback adapter for io_readFile().
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function _io_readWikiPage_action($data) {
- if (is_array($data) && is_array($data[0]) && count($data[0])===2) {
- return call_user_func_array('io_readFile', $data[0]);
- } else {
- return ''; //callback error
- }
-}
-
-/**
- * Returns content of $file as cleaned string.
- *
- * Uses gzip if extension is .gz
- *
- * If you want to use the returned value in unserialize
- * be sure to set $clean to false!
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function io_readFile($file,$clean=true){
- $ret = '';
- if(@file_exists($file)){
- if(substr($file,-3) == '.gz'){
- $ret = join('',gzfile($file));
- }else if(substr($file,-4) == '.bz2'){
- $ret = bzfile($file);
- }else{
- $ret = file_get_contents($file);
- }
- }
- if($clean){
- return cleanText($ret);
- }else{
- return $ret;
- }
-}
-/**
-* Returns the content of a .bz2 compressed file as string
-* @author marcel senf <marcel at rucksackreinigung.de>
-*/
-
-function bzfile($file){
- $bz = bzopen($file,"r");
- while (!feof($bz)){
- //8192 seems to be the maximum buffersize?
- $str = $str . bzread($bz,8192);
- }
- bzclose($bz);
- return $str;
-}
-
-
-/**
- * Used to write out a DokuWiki page to file, and send IO_WIKIPAGE_WRITE events.
- *
- * This generates an action event and delegates to io_saveFile().
- * Action plugins are allowed to modify the page content in transit.
- * The file path should not be changed.
- * (The append parameter is set to false.)
- *
- * Event data:
- * $data[0] The raw arguments for io_saveFile as an array.
- * $data[1] ns: The colon separated namespace path minus the trailing page name. (false if root ns)
- * $data[2] page_name: The wiki page name.
- * $data[3] rev: The page revision, false for current wiki pages.
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function io_writeWikiPage($file, $content, $id, $rev=false) {
- if (empty($rev)) { $rev = false; }
- if ($rev===false) { io_createNamespace($id); } // create namespaces as needed
- $data = array(array($file, $content, false), getNS($id), noNS($id), $rev);
- return trigger_event('IO_WIKIPAGE_WRITE', $data, '_io_writeWikiPage_action', false);
-}
-
-/**
- * Callback adapter for io_saveFile().
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function _io_writeWikiPage_action($data) {
- if (is_array($data) && is_array($data[0]) && count($data[0])===3) {
- return call_user_func_array('io_saveFile', $data[0]);
- } else {
- return false; //callback error
- }
-}
-
-/**
- * Saves $content to $file.
- *
- * If the third parameter is set to true the given content
- * will be appended.
- *
- * Uses gzip if extension is .gz
- * and bz2 if extension is .bz2
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return bool true on success
- */
-function io_saveFile($file,$content,$append=false){
- global $conf;
- $mode = ($append) ? 'ab' : 'wb';
-
- $fileexists = @file_exists($file);
- io_makeFileDir($file);
- io_lock($file);
- if(substr($file,-3) == '.gz'){
- $fh = @gzopen($file,$mode.'9');
- if(!$fh){
- msg("Writing $file failed",-1);
- io_unlock($file);
- return false;
- }
- gzwrite($fh, $content);
- gzclose($fh);
- }else if(substr($file,-4) == '.bz2'){
- $fh = @bzopen($file,$mode{0});
- if(!$fh){
- msg("Writing $file failed", -1);
- io_unlock($file);
- return false;
- }
- bzwrite($fh, $content);
- bzclose($fh);
- }else{
- $fh = @fopen($file,$mode);
- if(!$fh){
- msg("Writing $file failed",-1);
- io_unlock($file);
- return false;
- }
- fwrite($fh, $content);
- fclose($fh);
- }
-
- if(!$fileexists and !empty($conf['fperm'])) chmod($file, $conf['fperm']);
- io_unlock($file);
- return true;
-}
-
-/**
- * Delete exact linematch for $badline from $file.
- *
- * Be sure to include the trailing newline in $badline
- *
- * Uses gzip if extension is .gz
- *
- * 2005-10-14 : added regex option -- Christopher Smith <chris at jalakai.co.uk>
- *
- * @author Steven Danz <steven-danz at kc.rr.com>
- * @return bool true on success
- */
-function io_deleteFromFile($file,$badline,$regex=false){
- if (!@file_exists($file)) return true;
-
- io_lock($file);
-
- // load into array
- if(substr($file,-3) == '.gz'){
- $lines = gzfile($file);
- }else{
- $lines = file($file);
- }
-
- // remove all matching lines
- if ($regex) {
- $lines = preg_grep($badline,$lines,PREG_GREP_INVERT);
- } else {
- $pos = array_search($badline,$lines); //return null or false if not found
- while(is_int($pos)){
- unset($lines[$pos]);
- $pos = array_search($badline,$lines);
- }
- }
-
- if(count($lines)){
- $content = join('',$lines);
- if(substr($file,-3) == '.gz'){
- $fh = @gzopen($file,'wb9');
- if(!$fh){
- msg("Removing content from $file failed",-1);
- io_unlock($file);
- return false;
- }
- gzwrite($fh, $content);
- gzclose($fh);
- }else{
- $fh = @fopen($file,'wb');
- if(!$fh){
- msg("Removing content from $file failed",-1);
- io_unlock($file);
- return false;
- }
- fwrite($fh, $content);
- fclose($fh);
- }
- }else{
- @unlink($file);
- }
-
- io_unlock($file);
- return true;
-}
-
-/**
- * Tries to lock a file
- *
- * Locking is only done for io_savefile and uses directories
- * inside $conf['lockdir']
- *
- * It waits maximal 3 seconds for the lock, after this time
- * the lock is assumed to be stale and the function goes on
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function io_lock($file){
- global $conf;
- // no locking if safemode hack
- if($conf['safemodehack']) return;
-
- $lockDir = $conf['lockdir'].'/'.md5($file);
- @ignore_user_abort(1);
-
- $timeStart = time();
- do {
- //waited longer than 3 seconds? -> stale lock
- if ((time() - $timeStart) > 3) break;
- $locked = @mkdir($lockDir, $conf['dmode']);
- if($locked){
- if(!empty($conf['dperm'])) chmod($lockDir, $conf['dperm']);
- break;
- }
- usleep(50);
- } while ($locked === false);
-}
-
-/**
- * Unlocks a file
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function io_unlock($file){
- global $conf;
- // no locking if safemode hack
- if($conf['safemodehack']) return;
-
- $lockDir = $conf['lockdir'].'/'.md5($file);
- @rmdir($lockDir);
- @ignore_user_abort(0);
-}
-
-/**
- * Create missing namespace directories and send the IO_NAMESPACE_CREATED events
- * in the order of directory creation. (Parent directories first.)
- *
- * Event data:
- * $data[0] ns: The colon separated namespace path minus the trailing page name.
- * $data[1] ns_type: 'pages' or 'media' namespace tree.
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function io_createNamespace($id, $ns_type='pages') {
- // verify ns_type
- $types = array('pages'=>'wikiFN', 'media'=>'mediaFN');
- if (!isset($types[$ns_type])) {
- trigger_error('Bad $ns_type parameter for io_createNamespace().');
- return;
- }
- // make event list
- $missing = array();
- $ns_stack = explode(':', $id);
- $ns = $id;
- $tmp = dirname( $file = call_user_func($types[$ns_type], $ns) );
- while (!@is_dir($tmp) && !(@file_exists($tmp) && !is_dir($tmp))) {
- array_pop($ns_stack);
- $ns = implode(':', $ns_stack);
- if (strlen($ns)==0) { break; }
- $missing[] = $ns;
- $tmp = dirname(call_user_func($types[$ns_type], $ns));
- }
- // make directories
- io_makeFileDir($file);
- // send the events
- $missing = array_reverse($missing); // inside out
- foreach ($missing as $ns) {
- $data = array($ns, $ns_type);
- trigger_event('IO_NAMESPACE_CREATED', $data);
- }
-}
-
-/**
- * Create the directory needed for the given file
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function io_makeFileDir($file){
- global $conf;
-
- $dir = dirname($file);
- if(!@is_dir($dir)){
- io_mkdir_p($dir) || msg("Creating directory $dir failed",-1);
- }
-}
-
-/**
- * Creates a directory hierachy.
- *
- * @link http://www.php.net/manual/en/function.mkdir.php
- * @author <saint at corenova.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function io_mkdir_p($target){
- global $conf;
- if (@is_dir($target)||empty($target)) return 1; // best case check first
- if (@file_exists($target) && !is_dir($target)) return 0;
- //recursion
- if (io_mkdir_p(substr($target,0,strrpos($target,'/')))){
- if($conf['safemodehack']){
- $dir = preg_replace('/^'.preg_quote(fullpath($conf['ftp']['root']),'/').'/','', $target);
- return io_mkdir_ftp($dir);
- }else{
- $ret = @mkdir($target,$conf['dmode']); // crawl back up & create dir tree
- if($ret && $conf['dperm']) chmod($target, $conf['dperm']);
- return $ret;
- }
- }
- return 0;
-}
-
-/**
- * Creates a directory using FTP
- *
- * This is used when the safemode workaround is enabled
- *
- * @author <andi at splitbrain.org>
- */
-function io_mkdir_ftp($dir){
- global $conf;
-
- if(!function_exists('ftp_connect')){
- msg("FTP support not found - safemode workaround not usable",-1);
- return false;
- }
-
- $conn = @ftp_connect($conf['ftp']['host'],$conf['ftp']['port'],10);
- if(!$conn){
- msg("FTP connection failed",-1);
- return false;
- }
-
- if(!@ftp_login($conn, $conf['ftp']['user'], $conf['ftp']['pass'])){
- msg("FTP login failed",-1);
- return false;
- }
-
- //create directory
- $ok = @ftp_mkdir($conn, $dir);
- //set permissions
- @ftp_site($conn,sprintf("CHMOD %04o %s",$conf['dmode'],$dir));
-
- @ftp_close($conn);
- return $ok;
-}
-
-/**
- * Creates a unique temporary directory and returns
- * its path.
- *
- * @author Michael Klier <chi at chimeric.de>
- */
-function io_mktmpdir() {
- global $conf;
-
- $base = $conf['savedir'].'/tmp/';
- $dir = md5(uniqid(rand(), true));
- $tmpdir = $base.$dir;
-
- if(io_mkdir_p($tmpdir)) {
- return($tmpdir);
- } else {
- return false;
- }
-}
-
-/**
- * downloads a file from the net and saves it
- *
- * if $useAttachment is false,
- * - $file is the full filename to save the file, incl. path
- * - if successful will return true, false otherwise
-
- * if $useAttachment is true,
- * - $file is the directory where the file should be saved
- * - if successful will return the name used for the saved file, false otherwise
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- */
-function io_download($url,$file,$useAttachment=false,$defaultName='',$maxSize=2097152){
- global $conf;
- $http = new DokuHTTPClient();
- $http->max_bodysize = $maxSize;
- $http->timeout = 25; //max. 25 sec
-
- $data = $http->get($url);
- if(!$data) return false;
-
- if ($useAttachment) {
- $name = '';
- if (isset($http->resp_headers['content-disposition'])) {
- $content_disposition = $http->resp_headers['content-disposition'];
- $match=array();
- if (is_string($content_disposition) &&
- preg_match('/attachment;\s*filename\s*=\s*"([^"]*)"/i', $content_disposition, $match)) {
-
- $name = basename($match[1]);
- }
-
- }
-
- if (!$name) {
- if (!$defaultName) return false;
- $name = $defaultName;
- }
-
- $file = $file.$name;
- }
-
- $fileexists = @file_exists($file);
- $fp = @fopen($file,"w");
- if(!$fp) return false;
- fwrite($fp,$data);
- fclose($fp);
- if(!$fileexists and $conf['fperm']) chmod($file, $conf['fperm']);
- if ($useAttachment) return $name;
- return true;
-}
-
-/**
- * Windows compatible rename
- *
- * rename() can not overwrite existing files on Windows
- * this function will use copy/unlink instead
- */
-function io_rename($from,$to){
- global $conf;
- if(!@rename($from,$to)){
- if(@copy($from,$to)){
- if($conf['fperm']) chmod($to, $conf['fperm']);
- @unlink($from);
- return true;
- }
- return false;
- }
- return true;
-}
-
-
-/**
- * Runs an external command and returns it's output as string
- *
- * @author Harry Brueckner <harry_b at eml.cc>
- * @author Andreas Gohr <andi at splitbrain.org>
- * @deprecated
- */
-function io_runcmd($cmd){
- $fh = popen($cmd, "r");
- if(!$fh) return false;
- $ret = '';
- while (!feof($fh)) {
- $ret .= fread($fh, 8192);
- }
- pclose($fh);
- return $ret;
-}
-
-/**
- * Search a file for matching lines
- *
- * This is probably not faster than file()+preg_grep() but less
- * memory intensive because not the whole file needs to be loaded
- * at once.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @param string $file The file to search
- * @param string $pattern PCRE pattern
- * @param int $max How many lines to return (0 for all)
- * @param bool $baxkref When true returns array with backreferences instead of lines
- * @return matching lines or backref, false on error
- */
-function io_grep($file,$pattern,$max=0,$backref=false){
- $fh = @fopen($file,'r');
- if(!$fh) return false;
- $matches = array();
-
- $cnt = 0;
- $line = '';
- while (!feof($fh)) {
- $line .= fgets($fh, 4096); // read full line
- if(substr($line,-1) != "\n") continue;
-
- // check if line matches
- if(preg_match($pattern,$line,$match)){
- if($backref){
- $matches[] = $match;
- }else{
- $matches[] = $line;
- }
- $cnt++;
- }
- if($max && $max == $cnt) break;
- $line = '';
- }
- fclose($fh);
- return $matches;
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * File IO functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/HTTPClient.php');
+ require_once(DOKU_INC.'inc/events.php');
+ require_once(DOKU_INC.'inc/utf8.php');
+
+/**
+ * Removes empty directories
+ *
+ * Sends IO_NAMESPACE_DELETED events for 'pages' and 'media' namespaces.
+ * Event data:
+ * $data[0] ns: The colon separated namespace path minus the trailing page name.
+ * $data[1] ns_type: 'pages' or 'media' namespace tree.
+ *
+ * @todo use safemode hack
+ * @param string $id - a pageid, the namespace of that id will be tried to deleted
+ * @param string $basadir - the config name of the type to delete (datadir or mediadir usally)
+ * @returns bool - true if at least one namespace was deleted
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function io_sweepNS($id,$basedir='datadir'){
+ global $conf;
+ $types = array ('datadir'=>'pages', 'mediadir'=>'media');
+ $ns_type = (isset($types[$basedir])?$types[$basedir]:false);
+
+ $delone = false;
+
+ //scan all namespaces
+ while(($id = getNS($id)) !== false){
+ $dir = $conf[$basedir].'/'.utf8_encodeFN(str_replace(':','/',$id));
+
+ //try to delete dir else return
+ if(@rmdir($dir)) {
+ if ($ns_type!==false) {
+ $data = array($id, $ns_type);
+ $delone = true; // we deleted at least one dir
+ trigger_event('IO_NAMESPACE_DELETED', $data);
+ }
+ } else { return $delone; }
+ }
+ return $delone;
+}
+
+/**
+ * Used to read in a DokuWiki page from file, and send IO_WIKIPAGE_READ events.
+ *
+ * Generates the action event which delegates to io_readFile().
+ * Action plugins are allowed to modify the page content in transit.
+ * The file path should not be changed.
+ *
+ * Event data:
+ * $data[0] The raw arguments for io_readFile as an array.
+ * $data[1] ns: The colon separated namespace path minus the trailing page name. (false if root ns)
+ * $data[2] page_name: The wiki page name.
+ * $data[3] rev: The page revision, false for current wiki pages.
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function io_readWikiPage($file, $id, $rev=false) {
+ if (empty($rev)) { $rev = false; }
+ $data = array(array($file, false), getNS($id), noNS($id), $rev);
+ return trigger_event('IO_WIKIPAGE_READ', $data, '_io_readWikiPage_action', false);
+}
+
+/**
+ * Callback adapter for io_readFile().
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function _io_readWikiPage_action($data) {
+ if (is_array($data) && is_array($data[0]) && count($data[0])===2) {
+ return call_user_func_array('io_readFile', $data[0]);
+ } else {
+ return ''; //callback error
+ }
+}
+
+/**
+ * Returns content of $file as cleaned string.
+ *
+ * Uses gzip if extension is .gz
+ *
+ * If you want to use the returned value in unserialize
+ * be sure to set $clean to false!
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function io_readFile($file,$clean=true){
+ $ret = '';
+ if(@file_exists($file)){
+ if(substr($file,-3) == '.gz'){
+ $ret = join('',gzfile($file));
+ }else if(substr($file,-4) == '.bz2'){
+ $ret = bzfile($file);
+ }else{
+ $ret = file_get_contents($file);
+ }
+ }
+ if($clean){
+ return cleanText($ret);
+ }else{
+ return $ret;
+ }
+}
+/**
+* Returns the content of a .bz2 compressed file as string
+* @author marcel senf <marcel at rucksackreinigung.de>
+*/
+
+function bzfile($file){
+ $bz = bzopen($file,"r");
+ while (!feof($bz)){
+ //8192 seems to be the maximum buffersize?
+ $str = $str . bzread($bz,8192);
+ }
+ bzclose($bz);
+ return $str;
+}
+
+
+/**
+ * Used to write out a DokuWiki page to file, and send IO_WIKIPAGE_WRITE events.
+ *
+ * This generates an action event and delegates to io_saveFile().
+ * Action plugins are allowed to modify the page content in transit.
+ * The file path should not be changed.
+ * (The append parameter is set to false.)
+ *
+ * Event data:
+ * $data[0] The raw arguments for io_saveFile as an array.
+ * $data[1] ns: The colon separated namespace path minus the trailing page name. (false if root ns)
+ * $data[2] page_name: The wiki page name.
+ * $data[3] rev: The page revision, false for current wiki pages.
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function io_writeWikiPage($file, $content, $id, $rev=false) {
+ if (empty($rev)) { $rev = false; }
+ if ($rev===false) { io_createNamespace($id); } // create namespaces as needed
+ $data = array(array($file, $content, false), getNS($id), noNS($id), $rev);
+ return trigger_event('IO_WIKIPAGE_WRITE', $data, '_io_writeWikiPage_action', false);
+}
+
+/**
+ * Callback adapter for io_saveFile().
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function _io_writeWikiPage_action($data) {
+ if (is_array($data) && is_array($data[0]) && count($data[0])===3) {
+ return call_user_func_array('io_saveFile', $data[0]);
+ } else {
+ return false; //callback error
+ }
+}
+
+/**
+ * Saves $content to $file.
+ *
+ * If the third parameter is set to true the given content
+ * will be appended.
+ *
+ * Uses gzip if extension is .gz
+ * and bz2 if extension is .bz2
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return bool true on success
+ */
+function io_saveFile($file,$content,$append=false){
+ global $conf;
+ $mode = ($append) ? 'ab' : 'wb';
+
+ $fileexists = @file_exists($file);
+ io_makeFileDir($file);
+ io_lock($file);
+ if(substr($file,-3) == '.gz'){
+ $fh = @gzopen($file,$mode.'9');
+ if(!$fh){
+ msg("Writing $file failed",-1);
+ io_unlock($file);
+ return false;
+ }
+ gzwrite($fh, $content);
+ gzclose($fh);
+ }else if(substr($file,-4) == '.bz2'){
+ $fh = @bzopen($file,$mode{0});
+ if(!$fh){
+ msg("Writing $file failed", -1);
+ io_unlock($file);
+ return false;
+ }
+ bzwrite($fh, $content);
+ bzclose($fh);
+ }else{
+ $fh = @fopen($file,$mode);
+ if(!$fh){
+ msg("Writing $file failed",-1);
+ io_unlock($file);
+ return false;
+ }
+ fwrite($fh, $content);
+ fclose($fh);
+ }
+
+ if(!$fileexists and !empty($conf['fperm'])) chmod($file, $conf['fperm']);
+ io_unlock($file);
+ return true;
+}
+
+/**
+ * Delete exact linematch for $badline from $file.
+ *
+ * Be sure to include the trailing newline in $badline
+ *
+ * Uses gzip if extension is .gz
+ *
+ * 2005-10-14 : added regex option -- Christopher Smith <chris at jalakai.co.uk>
+ *
+ * @author Steven Danz <steven-danz at kc.rr.com>
+ * @return bool true on success
+ */
+function io_deleteFromFile($file,$badline,$regex=false){
+ if (!@file_exists($file)) return true;
+
+ io_lock($file);
+
+ // load into array
+ if(substr($file,-3) == '.gz'){
+ $lines = gzfile($file);
+ }else{
+ $lines = file($file);
+ }
+
+ // remove all matching lines
+ if ($regex) {
+ $lines = preg_grep($badline,$lines,PREG_GREP_INVERT);
+ } else {
+ $pos = array_search($badline,$lines); //return null or false if not found
+ while(is_int($pos)){
+ unset($lines[$pos]);
+ $pos = array_search($badline,$lines);
+ }
+ }
+
+ if(count($lines)){
+ $content = join('',$lines);
+ if(substr($file,-3) == '.gz'){
+ $fh = @gzopen($file,'wb9');
+ if(!$fh){
+ msg("Removing content from $file failed",-1);
+ io_unlock($file);
+ return false;
+ }
+ gzwrite($fh, $content);
+ gzclose($fh);
+ }else{
+ $fh = @fopen($file,'wb');
+ if(!$fh){
+ msg("Removing content from $file failed",-1);
+ io_unlock($file);
+ return false;
+ }
+ fwrite($fh, $content);
+ fclose($fh);
+ }
+ }else{
+ @unlink($file);
+ }
+
+ io_unlock($file);
+ return true;
+}
+
+/**
+ * Tries to lock a file
+ *
+ * Locking is only done for io_savefile and uses directories
+ * inside $conf['lockdir']
+ *
+ * It waits maximal 3 seconds for the lock, after this time
+ * the lock is assumed to be stale and the function goes on
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function io_lock($file){
+ global $conf;
+ // no locking if safemode hack
+ if($conf['safemodehack']) return;
+
+ $lockDir = $conf['lockdir'].'/'.md5($file);
+ @ignore_user_abort(1);
+
+ $timeStart = time();
+ do {
+ //waited longer than 3 seconds? -> stale lock
+ if ((time() - $timeStart) > 3) break;
+ $locked = @mkdir($lockDir, $conf['dmode']);
+ if($locked){
+ if(!empty($conf['dperm'])) chmod($lockDir, $conf['dperm']);
+ break;
+ }
+ usleep(50);
+ } while ($locked === false);
+}
+
+/**
+ * Unlocks a file
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function io_unlock($file){
+ global $conf;
+ // no locking if safemode hack
+ if($conf['safemodehack']) return;
+
+ $lockDir = $conf['lockdir'].'/'.md5($file);
+ @rmdir($lockDir);
+ @ignore_user_abort(0);
+}
+
+/**
+ * Create missing namespace directories and send the IO_NAMESPACE_CREATED events
+ * in the order of directory creation. (Parent directories first.)
+ *
+ * Event data:
+ * $data[0] ns: The colon separated namespace path minus the trailing page name.
+ * $data[1] ns_type: 'pages' or 'media' namespace tree.
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function io_createNamespace($id, $ns_type='pages') {
+ // verify ns_type
+ $types = array('pages'=>'wikiFN', 'media'=>'mediaFN');
+ if (!isset($types[$ns_type])) {
+ trigger_error('Bad $ns_type parameter for io_createNamespace().');
+ return;
+ }
+ // make event list
+ $missing = array();
+ $ns_stack = explode(':', $id);
+ $ns = $id;
+ $tmp = dirname( $file = call_user_func($types[$ns_type], $ns) );
+ while (!@is_dir($tmp) && !(@file_exists($tmp) && !is_dir($tmp))) {
+ array_pop($ns_stack);
+ $ns = implode(':', $ns_stack);
+ if (strlen($ns)==0) { break; }
+ $missing[] = $ns;
+ $tmp = dirname(call_user_func($types[$ns_type], $ns));
+ }
+ // make directories
+ io_makeFileDir($file);
+ // send the events
+ $missing = array_reverse($missing); // inside out
+ foreach ($missing as $ns) {
+ $data = array($ns, $ns_type);
+ trigger_event('IO_NAMESPACE_CREATED', $data);
+ }
+}
+
+/**
+ * Create the directory needed for the given file
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function io_makeFileDir($file){
+ global $conf;
+
+ $dir = dirname($file);
+ if(!@is_dir($dir)){
+ io_mkdir_p($dir) || msg("Creating directory $dir failed",-1);
+ }
+}
+
+/**
+ * Creates a directory hierachy.
+ *
+ * @link http://www.php.net/manual/en/function.mkdir.php
+ * @author <saint at corenova.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function io_mkdir_p($target){
+ global $conf;
+ if (@is_dir($target)||empty($target)) return 1; // best case check first
+ if (@file_exists($target) && !is_dir($target)) return 0;
+ //recursion
+ if (io_mkdir_p(substr($target,0,strrpos($target,'/')))){
+ if($conf['safemodehack']){
+ $dir = preg_replace('/^'.preg_quote(fullpath($conf['ftp']['root']),'/').'/','', $target);
+ return io_mkdir_ftp($dir);
+ }else{
+ $ret = @mkdir($target,$conf['dmode']); // crawl back up & create dir tree
+ if($ret && $conf['dperm']) chmod($target, $conf['dperm']);
+ return $ret;
+ }
+ }
+ return 0;
+}
+
+/**
+ * Creates a directory using FTP
+ *
+ * This is used when the safemode workaround is enabled
+ *
+ * @author <andi at splitbrain.org>
+ */
+function io_mkdir_ftp($dir){
+ global $conf;
+
+ if(!function_exists('ftp_connect')){
+ msg("FTP support not found - safemode workaround not usable",-1);
+ return false;
+ }
+
+ $conn = @ftp_connect($conf['ftp']['host'],$conf['ftp']['port'],10);
+ if(!$conn){
+ msg("FTP connection failed",-1);
+ return false;
+ }
+
+ if(!@ftp_login($conn, $conf['ftp']['user'], $conf['ftp']['pass'])){
+ msg("FTP login failed",-1);
+ return false;
+ }
+
+ //create directory
+ $ok = @ftp_mkdir($conn, $dir);
+ //set permissions
+ @ftp_site($conn,sprintf("CHMOD %04o %s",$conf['dmode'],$dir));
+
+ @ftp_close($conn);
+ return $ok;
+}
+
+/**
+ * Creates a unique temporary directory and returns
+ * its path.
+ *
+ * @author Michael Klier <chi at chimeric.de>
+ */
+function io_mktmpdir() {
+ global $conf;
+
+ $base = $conf['tmpdir'];
+ $dir = md5(uniqid(mt_rand(), true));
+ $tmpdir = $base.$dir;
+
+ if(io_mkdir_p($tmpdir)) {
+ return($tmpdir);
+ } else {
+ return false;
+ }
+}
+
+/**
+ * downloads a file from the net and saves it
+ *
+ * if $useAttachment is false,
+ * - $file is the full filename to save the file, incl. path
+ * - if successful will return true, false otherwise
+
+ * if $useAttachment is true,
+ * - $file is the directory where the file should be saved
+ * - if successful will return the name used for the saved file, false otherwise
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+function io_download($url,$file,$useAttachment=false,$defaultName='',$maxSize=2097152){
+ global $conf;
+ $http = new DokuHTTPClient();
+ $http->max_bodysize = $maxSize;
+ $http->timeout = 25; //max. 25 sec
+
+ $data = $http->get($url);
+ if(!$data) return false;
+
+ if ($useAttachment) {
+ $name = '';
+ if (isset($http->resp_headers['content-disposition'])) {
+ $content_disposition = $http->resp_headers['content-disposition'];
+ $match=array();
+ if (is_string($content_disposition) &&
+ preg_match('/attachment;\s*filename\s*=\s*"([^"]*)"/i', $content_disposition, $match)) {
+
+ $name = basename($match[1]);
+ }
+
+ }
+
+ if (!$name) {
+ if (!$defaultName) return false;
+ $name = $defaultName;
+ }
+
+ $file = $file.$name;
+ }
+
+ $fileexists = @file_exists($file);
+ $fp = @fopen($file,"w");
+ if(!$fp) return false;
+ fwrite($fp,$data);
+ fclose($fp);
+ if(!$fileexists and $conf['fperm']) chmod($file, $conf['fperm']);
+ if ($useAttachment) return $name;
+ return true;
+}
+
+/**
+ * Windows compatible rename
+ *
+ * rename() can not overwrite existing files on Windows
+ * this function will use copy/unlink instead
+ */
+function io_rename($from,$to){
+ global $conf;
+ if(!@rename($from,$to)){
+ if(@copy($from,$to)){
+ if($conf['fperm']) chmod($to, $conf['fperm']);
+ @unlink($from);
+ return true;
+ }
+ return false;
+ }
+ return true;
+}
+
+
+/**
+ * Runs an external command and returns it's output as string
+ *
+ * @author Harry Brueckner <harry_b at eml.cc>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @deprecated
+ */
+function io_runcmd($cmd){
+ $fh = popen($cmd, "r");
+ if(!$fh) return false;
+ $ret = '';
+ while (!feof($fh)) {
+ $ret .= fread($fh, 8192);
+ }
+ pclose($fh);
+ return $ret;
+}
+
+/**
+ * Search a file for matching lines
+ *
+ * This is probably not faster than file()+preg_grep() but less
+ * memory intensive because not the whole file needs to be loaded
+ * at once.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @param string $file The file to search
+ * @param string $pattern PCRE pattern
+ * @param int $max How many lines to return (0 for all)
+ * @param bool $baxkref When true returns array with backreferences instead of lines
+ * @return matching lines or backref, false on error
+ */
+function io_grep($file,$pattern,$max=0,$backref=false){
+ $fh = @fopen($file,'r');
+ if(!$fh) return false;
+ $matches = array();
+
+ $cnt = 0;
+ $line = '';
+ while (!feof($fh)) {
+ $line .= fgets($fh, 4096); // read full line
+ if(substr($line,-1) != "\n") continue;
+
+ // check if line matches
+ if(preg_match($pattern,$line,$match)){
+ if($backref){
+ $matches[] = $match;
+ }else{
+ $matches[] = $line;
+ }
+ $cnt++;
+ }
+ if($max && $max == $cnt) break;
+ $line = '';
+ }
+ fclose($fh);
+ return $matches;
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/ar/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ø§ÙØ£Ø¯Ø§Ø±Ø© ======
-
+====== Ø§ÙØ£Ø¯Ø§Ø±Ø© ======
+
ÙØ§Ø¦Ù
Ø© باÙÙ
ÙØ§Ù
Ø§ÙØ¥Ø¯Ø§Ø±ÙØ© اÙÙ
ØªØ§ØØ© Ù٠دÙÙÙ ÙÙÙÙ.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== إرتباطات ======
-
+====== إرتباطات ======
+
ÙØ°Ù ÙØ§Ø¦Ù
Ø© Ø¨Ø§ÙØµÙØØ§Øª اÙÙ
رتبطة Ø¨Ø§ÙØµÙØØ© Ø§ÙØØ§ÙÙØ©.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÙÙØ¬Ø¯ ÙØ³Ø®Ø© Ø£ØØ¯Ø« ======
-
-ÙÙØ¬Ø¯ ÙØ³Ø®Ø© Ø£ØØ¯Ø« Ù
Ù ÙØ°Ù Ø§ÙØµÙØØ©. ÙØØ¯Ø« ÙØ°Ø§ Ø¹ÙØ¯Ù
ا ÙØØ±Ø± Ù
شتر٠آخر Ø§ÙØµÙØØ© Ø£Ø«ÙØ§Ø¡ تعدÙÙÙ ÙÙØ§.
-
+====== ÙÙØ¬Ø¯ ÙØ³Ø®Ø© Ø£ØØ¯Ø« ======
+
+ÙÙØ¬Ø¯ ÙØ³Ø®Ø© Ø£ØØ¯Ø« Ù
Ù ÙØ°Ù Ø§ÙØµÙØØ©. ÙØØ¯Ø« ÙØ°Ø§ Ø¹ÙØ¯Ù
ا ÙØØ±Ø± Ù
شتر٠آخر Ø§ÙØµÙØØ© Ø£Ø«ÙØ§Ø¡ تعدÙÙÙ ÙÙØ§.
+
Ø§ÙØØµ Ø§ÙØ§Ø®ØªÙØ§ÙØ§Øª Ø¬ÙØ¯Ø§ÙØ Ø«Ù
ØØ¯Ø¯ Ø£ÙØ© ÙØ³Ø®Ø© تØÙظ. Ø¨Ø§ÙØ¶ØºØ· عÙÙ "ØÙظ" ستØÙظ ÙØ³Ø®ØªÙ. Ø£Ù
ا Ø¨Ø§ÙØ¶ØºØ· عÙÙ "Ø¥ÙØºØ§Ø¡" ÙØ³ØªØØ§Ùظ عÙ٠اÙÙØ³Ø®Ø© Ø§ÙØØ§ÙÙØ©.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ù
Ù
ÙÙØ¹ ======
-
+====== Ù
Ù
ÙÙØ¹ ======
+
Ø¹Ø°Ø±Ø§Ø ÙÙØ³ Ù
ØµØ±Ø ÙÙ Ø§ÙØ§Ø³ØªÙ
Ø±Ø§Ø±Ø ÙØ¹ÙÙ ÙØ³Ùت تسجÙÙ Ø§ÙØ¯Ø®ÙÙ
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ø§Ø®ØªÙØ§Ùات ======
-
+====== Ø§Ø®ØªÙØ§Ùات ======
+
عرض Ø§ÙØ§Ø®ØªÙØ§ÙØ§Øª بÙ٠اÙÙØ³Ø®Ø© اÙÙ
ختارة ٠اÙÙØ³Ø®Ø© Ø§ÙØØ§ÙÙØ© Ù
Ù Ø§ÙØµÙØØ©.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== ÙØ¬Ø¯Øª Ù
سÙÙØ¯Ø© ======
-
-إ٠تعدÙÙÙ ÙÙØ°Ù Ø§ÙØµÙØØ© Ù٠اÙÙ
رة اÙÙ
Ø§Ø¶ÙØ© ÙÙ
ÙØªÙ
بشÙ٠صØÙØØ ØÙظت دÙÙÙ ÙÙÙ٠آÙÙØ§Ù Ù
سÙÙØ¯Ø© Ù
٠عÙ
ÙÙ Ø§ÙØ£Ø®Ùر Ø§ÙØ°Ù ÙÙ
ÙÙ٠استخداÙ
Ù Ø§ÙØ¢Ù ÙÙ
تابعة Ø§ÙØªØ¹Ø¯ÙÙ.
-ÙÙÙ
ا ÙÙÙ Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØªÙ ØÙظت Ù
٠اÙÙ
رة اÙÙ
Ø§Ø¶ÙØ©.
-
+====== ÙØ¬Ø¯Øª Ù
سÙÙØ¯Ø© ======
+
+إ٠تعدÙÙÙ ÙÙØ°Ù Ø§ÙØµÙØØ© Ù٠اÙÙ
رة اÙÙ
Ø§Ø¶ÙØ© ÙÙ
ÙØªÙ
بشÙ٠صØÙØØ ØÙظت دÙÙÙ ÙÙÙ٠آÙÙØ§Ù Ù
سÙÙØ¯Ø© Ù
٠عÙ
ÙÙ Ø§ÙØ£Ø®Ùر Ø§ÙØ°Ù ÙÙ
ÙÙ٠استخداÙ
Ù Ø§ÙØ¢Ù ÙÙ
تابعة Ø§ÙØªØ¹Ø¯ÙÙ.
+ÙÙÙ
ا ÙÙÙ Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØªÙ ØÙظت Ù
٠اÙÙ
رة اÙÙ
Ø§Ø¶ÙØ©.
+
ÙØ±Ø¬Ù Ø£Ù ØªÙØ±Ø± Ø¥Ù ÙÙØª ØªØ±ÙØ¯ //استعادة// عÙ
ÙÙ Ø§ÙØ³Ø§Ø¨Ù Ø£Ù //ØØ°Ù// اÙÙ
سÙÙØ¯Ø© Ø£Ù //Ø¥ÙØºØ§Ø¡// عÙ
ÙÙØ© Ø§ÙØªØØ±Ùر.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**ÙÙØ¯ ØÙ
ÙØª ÙØ³Ø®Ø© ÙØ¯ÙÙ
Ø© Ù
Ù Ø§ÙØµÙØØ©!** إذا ØÙØ¸ØªÙØ§Ø Ø³ÙØªÙ
Ø¥ÙØ´Ø§Ø¡ ÙØ³Ø®Ø© Ø¬Ø¯ÙØ¯Ø© Ø¨ÙØ°Ù اÙÙ
عÙÙÙ
ات.
+**ÙÙØ¯ ØÙ
ÙØª ÙØ³Ø®Ø© ÙØ¯ÙÙ
Ø© Ù
Ù Ø§ÙØµÙØØ©!** إذا ØÙØ¸ØªÙØ§Ø Ø³ÙØªÙ
Ø¥ÙØ´Ø§Ø¡ ÙØ³Ø®Ø© Ø¬Ø¯ÙØ¯Ø© Ø¨ÙØ°Ù اÙÙ
عÙÙÙ
ات.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ÙÙØ±Ø³ ======
-
-ÙØ°Ø§ ÙÙØ±Ø³ ÙØ¬Ù
ÙØ¹ Ø§ÙØµÙØØ§Øª Ù
رتبة ØØ³Ø¨ [[doku>wiki:namespaces|namespaces]].
+====== ÙÙØ±Ø³ ======
+
+ÙØ°Ø§ ÙÙØ±Ø³ ÙØ¬Ù
ÙØ¹ Ø§ÙØµÙØØ§Øª Ù
رتبة ØØ³Ø¨ [[doku>wiki:namespaces|namespaces]].
Modified: site/trunk/www-root/wiki/inc/lang/ar/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,209 +1,209 @@
-<?php
-/**
- * Arabic language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Mostafa Hussein <mostafa at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'rtl';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'Ø';
-$lang['btn_edit'] = 'ØªØØ±Ùر ÙØ°Ù Ø§ÙØµÙØØ©';
-$lang['btn_source'] = 'عرض Ù
صدر Ø§ÙØµÙØØ©';
-$lang['btn_show'] = 'عرض Ø§ÙØµÙØØ©';
-$lang['btn_create'] = 'Ø¥ÙØ´Ø§Ø¡ ÙØ°Ù Ø§ÙØµÙØØ©';
-$lang['btn_search'] = 'Ø¨ØØ«';
-$lang['btn_save'] = 'ØÙظ';
-$lang['btn_preview'] = 'استعراض';
-$lang['btn_top'] = 'ÙØ£Ø¹ÙÙ';
-$lang['btn_newer'] = '<< Ø£ØØ¯Ø«';
-$lang['btn_older'] = 'Ø£ÙØ¯Ù
>>';
-$lang['btn_revs'] = 'ÙØ³Ø® ÙØ¯ÙÙ
Ø©';
-$lang['btn_recent'] = 'Ø£ØØ¯Ø« Ø§ÙØªØ¹Ø¯ÙÙØ§Øª';
-$lang['btn_upload'] = 'تØÙ
ÙÙ';
-$lang['btn_cancel'] = 'Ø¥ÙØºØ§Ø¡';
-$lang['btn_index'] = 'ÙÙØ±Ø³';
-$lang['btn_secedit'] = 'ØªØØ±Ùر';
-$lang['btn_login'] = 'دخÙÙ';
-$lang['btn_logout'] = 'Ø®Ø±ÙØ¬';
-$lang['btn_admin'] = 'اÙÙ
Ø¯ÙØ±';
-$lang['btn_update'] = 'ØªØØ¯ÙØ«';
-$lang['btn_delete'] = 'ØØ°Ù';
-$lang['btn_back'] = 'Ø±Ø¬ÙØ¹';
-$lang['btn_backlink'] = 'ارتباطات';
-$lang['btn_backtomedia'] = 'Ø±Ø¬ÙØ¹ Ø¥ÙÙ Ø§Ø®ØªÙØ§Ø± Ù
Ù٠اÙÙØ³Ø§Ø¦Ø·';
-$lang['btn_subscribe'] = 'اشتر٠ÙÙ Ø§ÙØªØ¹Ø¯ÙÙØ§Øª';
-$lang['btn_unsubscribe'] = 'Ø¥ÙØºØ§Ø¡ Ø§ÙØ§Ø´ØªØ±Ø§Ù ÙÙ Ø§ÙØªØ¹Ø¯ÙÙØ§Øª';
-$lang['btn_profile'] = 'ØªØØ¯ÙØ« اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ';
-$lang['btn_reset'] = 'ØªÙØ±Ùغ';
-$lang['btn_resendpwd'] = 'إرسا٠ÙÙÙ
Ø© Ù
Ø±ÙØ± Ø¬Ø¯ÙØ¯Ø©';
-$lang['btn_draft'] = 'ØªØØ±Ùر اÙÙ
سÙÙØ¯Ø©';
-$lang['btn_recover'] = 'استعادة اÙÙ
سÙÙØ¯Ø©';
-$lang['btn_draftdel'] = 'ØØ°Ù اÙÙ
سÙÙØ¯Ø©';
-$lang['loggedinas'] = 'دخÙ٠باسÙ
';
-$lang['user'] = 'اسÙ
اÙÙ
شترÙ';
-$lang['pass'] = 'ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±';
-$lang['newpass'] = 'ÙÙÙ
Ø© Ù
Ø±ÙØ± Ø¬Ø¯ÙØ¯Ø©';
-$lang['oldpass'] = 'تأÙÙØ¯ ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± Ø§ÙØØ§ÙÙØ©';
-$lang['passchk'] = 'Ù
رة أخرÙ';
-$lang['remember'] = 'ØªØ°ÙØ±ÙÙ';
-$lang['fullname'] = 'Ø§ÙØ§Ø³Ù
اÙÙØ§Ù
Ù';
-$lang['email'] = 'Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
-$lang['register'] = 'تسجÙÙ';
-$lang['profile'] = 'اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ';
-$lang['badlogin'] = 'Ø¹Ø°Ø±Ø§Ø Ø§Ø³Ù
اÙÙ
شتر٠أ٠ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± ØºÙØ± صØÙØØ©';
-$lang['minoredit'] = 'تعدÙÙØ§Øª Ø·ÙÙÙØ©';
-$lang['draftdate'] = 'تشغÙÙ ØÙظ اÙÙ
سÙÙØ¯Ø© Ø¢ÙÙØ§Ù';
-$lang['regmissing'] = 'Ø¹Ø°Ø±Ø§Ø ÙØ¬Ø¨ Ù
ÙØ¡ جÙ
ÙØ¹ Ø§ÙØ®Ø§Ùات';
-$lang['reguexists'] = 'Ø¹Ø°Ø±Ø§Ø ÙÙØ¬Ø¯ Ù
شتر٠بÙÙØ³ Ø§ÙØ§Ø³Ù
';
-$lang['regsuccess'] = 'تÙ
تسجÙ٠اÙÙ
Ø´ØªØ±Ù Ù Ø£Ø±Ø³ÙØª ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± عبر Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
-$lang['regsuccess2'] = 'تÙ
Ø¥ÙØ´Ø§Ø¡ اÙÙ
شترÙ';
-$lang['regmailfail'] = 'ØØ¯Ø« خطأ ÙÙ Ø¥Ø±Ø³Ø§Ù Ø±Ø³Ø§ÙØ© ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±. ÙØ±Ø¬Ù Ù
Ø±Ø§Ø³ÙØ© اÙÙ
Ø¯ÙØ±';
-$lang['regbadmail'] = 'Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙ٠اÙÙ
Ø¹Ø·Ù ØºÙØ± صØÙØØ Ø¥Ù ÙÙØª ØªØ¸Ù Ø§ÙØ®Ø·Ø£ Ù
٠اÙÙ
ÙÙØ¹ راس٠اÙÙ
Ø¯ÙØ±';
-$lang['regbadpass'] = 'ÙÙÙ
ت٠اÙÙ
Ø±ÙØ± ØºÙØ± Ù
ØªØ·Ø§Ø¨ÙØªÙÙØ ØØ§ÙÙ Ù
رة أخرÙ';
-$lang['regpwmail'] = 'ÙÙÙ
Ø© Ù
Ø±ÙØ±Ù Ø¥Ù٠دÙÙÙ ÙÙÙÙ';
-$lang['reghere'] = 'ÙØ³Øª Ù
Ø´ØªØ±ÙØ§ÙØ ØªÙØ¶Ù اشترÙ';
-$lang['profna'] = 'ÙØ°Ù اÙÙÙÙÙ ÙØ§ تدعÙ
تعدÙ٠اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ';
-$lang['profnochange'] = 'ÙØ§ تغÙÙØ±Ø§ØªØ ÙØ§ Ø´ÙØ¡ Ù
Ø·ÙÙØ¨ عÙ
ÙÙ';
-$lang['profnoempty'] = 'ÙÙØ³ Ù
سÙ
ÙØØ§Ù ØªØ±Ù Ø§ÙØ§Ø³Ù
Ø£Ù Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ ÙØ§Ø±ØºØ§Ù';
-$lang['profchanged'] = 'تÙ
ØªØØ¯ÙØ« اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ Ø¨ÙØ¬Ø§Ø';
-$lang['pwdforget'] = 'ÙØ³Ùت ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±Ø Ø§ØØµÙ عÙÙ ÙØ§ØØ¯Ø© Ø¬Ø¯ÙØ¯Ø©';
-$lang['resendna'] = 'ÙØ°Ù اÙÙÙÙÙ ÙØ§ تدعÙ
إعادة إرسا٠ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±';
-$lang['resendpwd'] = 'إرسا٠ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± Ø¥ÙÙ';
-$lang['resendpwdmissing'] = 'Ø¹Ø°Ø±Ø§ÙØ ÙØ¬Ø¨ أ٠تÙ
ÙØ£ جÙ
ÙØ¹ Ø§ÙØ®Ø§Ùات';
-$lang['resendpwdnouser'] = 'Ø¹Ø°Ø±Ø§ÙØ ÙØ¯ÙÙØ§ ÙØ°Ø§ اÙÙ
شتر٠ÙÙ ÙØ§Ø¹Ø¯Ø© Ø¨ÙØ§ÙØ§ØªÙØ§';
-$lang['resendpwdbadauth'] = 'Ø¹Ø°Ø±Ø§ÙØ رÙ
ز Ø§ÙØªÙعÙÙ ÙØ°Ø§ ØºÙØ± صØÙØ. ÙØ£Ùد Ø£Ù٠استخدÙ
ت ÙØ§Ù
Ù ÙØµÙØ© Ø§ÙØªØ£ÙÙØ¯';
-$lang['resendpwdconfirm'] = 'تÙ
Ø¥Ø±Ø³Ø§Ù ÙØµÙØ© تأÙÙØ¯ Ø¥ÙÙ Ø¨Ø±ÙØ¯Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
-$lang['resendpwdsuccess'] = 'ÙÙÙ
Ø© Ù
Ø±ÙØ±Ù Ø§ÙØ¬Ø¯Ùدة تÙ
إرساÙÙØ§ عبر Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
-$lang['txt_upload'] = 'اختر Ù
ÙÙØ§Ù ÙÙØªØÙ
ÙÙ';
-$lang['txt_filename'] = 'تØÙ
Ù٠باسÙ
- Ø§Ø®ØªÙØ§Ø±Ù';
-$lang['txt_overwrt'] = 'اÙÙØªØ§Ø¨Ø© عÙÙ Ù
ÙÙ Ù
ÙØ¬Ùد بÙÙØ³ Ø§ÙØ§Ø³Ù
Ù
سÙ
ÙØØ©';
-$lang['lockedby'] = 'ØØ§ÙÙØ§Ù Ù
ÙÙÙÙ Ø¨ÙØ§Ø³Ø·Ø©';
-$lang['lockexpire'] = 'سÙÙØªÙ٠اÙÙÙÙ ÙÙ';
-$lang['willexpire'] = 'سÙÙØªÙÙ ÙÙÙ ØªØØ±Ùر ÙØ°Ù Ø§ÙØµÙØÙ Ø®ÙØ§Ù دÙÙÙØ©. ÙØªØ¬Ùب Ø§ÙØªØ¹Ø§Ø±Ø¶ استخدÙ
زر استعراض ÙØ¨Ø¯Ø£ اÙÙÙÙ Ù
Ù Ø¬Ø¯ÙØ¯';
-$lang['notsavedyet'] = 'Ø§ÙØªØ¹Ø¯ÙÙØ§Øª Ø§ÙØªÙ ÙÙ
تØÙظ ستÙÙØ¯. Ø£Ù
ÙØ§ÙÙØ';
-$lang['rssfailed'] = 'خطأ Ù
ا ØØ¯Ø« Ø£Ø«ÙØ§Ø¡ Ø¬ÙØ¨ Ù
ÙÙ Ø§ÙØªØºØ°ÙØ©:';
-$lang['nothingfound'] = 'ÙØ§ ÙÙØ¬Ø¯ Ø´ÙØ¡';
-$lang['mediaselect'] = 'Ù
ÙÙØ§Øª اÙÙØ³Ø§Ø¦Ø· اÙÙ
تعددة';
-$lang['fileupload'] = 'تØÙ
ÙÙ Ù
ÙÙ ÙØ³Ø§Ø¦Ø· Ù
تعددة';
-$lang['uploadsucc'] = 'تÙ
Ø§ÙØªØÙ
ÙÙ Ø¨ÙØ¬Ø§Ø';
-$lang['uploadfail'] = 'ÙØ´Ù Ø§ÙØªØÙ
ÙÙØ ÙØ¯ ÙÙÙÙ Ø§ÙØ®Ø·Ø£ ÙÙ Ø§ÙØªØ±Ø§Ø®ÙصØ';
-$lang['uploadwrong'] = 'Ø§ÙØªØÙ
ÙÙ Ù
Ù
ÙÙØ¹Ø ÙÙØ¹ اÙÙ
ÙÙ Ù
رÙÙØ¶!';
-$lang['uploadexist'] = 'اÙÙ
ÙÙ Ù
ÙØ¬Ùد Ø£ØµÙØ§Ù. ÙÙ
ÙØØ¯Ø« Ø´ÙØ¡';
-$lang['uploadbadcontent'] = 'اÙÙ
ØØªÙ٠اÙÙ
ØÙ
ÙÙ ÙÙ
ÙØªØ·Ø§Ø¨Ù Ù
ع ÙÙØ¹ اÙÙ
ÙÙ %s';
-$lang['uploadspam'] = 'Ø§ÙØªØÙ
ÙÙ Ù
ØØ¬Ùب Ø¨ÙØ§Ø³Ø·Ø© اÙÙØ§Ø¦Ù
Ø© Ø§ÙØ³Ùداء ÙØ¨Ø±ÙاÙ
ج تÙÙÙ Ø§ÙØªØ·ÙÙ';
-$lang['uploadxss'] = 'Ø§ÙØªØÙ
ÙÙ Ù
ØØ¬Ùب ÙÙ
ÙØ¹ اÙÙ
ØØªÙÙØ§Øª Ø§ÙØ®Ø¨Ùثة';
-$lang['deletesucc'] = 'تÙ
ØØ°Ù اÙÙ
ÙÙ "%s"';
-$lang['deletefail'] = 'ÙØ§ ÙÙ
ÙÙ ØØ°Ù "%s"Ø ØªØ£ÙØ¯ Ù
Ù ØªØ±Ø§Ø®ÙØµÙ';
-$lang['mediainuse'] = 'ÙÙ
ÙØØ°Ù Ø§ÙÙ
ÙÙ "%s"Ø Ù
ازا٠Ù
ÙØ¬ÙداÙ';
-$lang['namespaces'] = 'ÙØ¶Ø§Ø¡ Ø§ÙØªØ³Ù
ÙØ©';
-$lang['mediafiles'] = 'Ù
ÙÙØ§Øª Ù
ÙØ¬Ùدة ÙÙ';
-$lang['js']['keepopen'] = 'أبÙ٠اÙÙØ§Ùذة Ù
ÙØªÙØØ© Ø£Ø«ÙØ§Ø¡ Ø§ÙØ§Ø®ØªÙار';
-$lang['js']['hidedetails'] = 'Ø¥Ø®ÙØ§Ø¡ Ø§ÙØªÙاصÙÙ';
-$lang['mediausage'] = 'استخدÙ
ÙØ°Ù Ø§ÙØµÙاغة ÙÙØ¯ÙØ§ÙØ© عÙÙ ÙØ°Ø§ اÙÙ
ÙÙ:';
-$lang['mediaview'] = 'عرض اÙÙ
ÙÙ Ø§ÙØ£ØµÙÙ';
-$lang['mediaroot'] = 'Ø§ÙØ¬Ø°Ø±';
-$lang['mediaupload'] = 'تØÙ
ÙÙ Ù
Ù٠إÙÙ ÙØ¶Ø§Ø¡ Ø§ÙØªØ³Ù
ÙØ© ÙÙØ§. ÙØ¥Ùشاء ÙØ¶Ø§Ø¡Ø§Øª تسÙ
ÙØ© ÙØ±Ø¹ÙØ©Ø Ø£Ø¶ÙÙØ§ Ø¥ÙÙ Ø¨Ø¯Ø§ÙØ© Ø®Ø§ÙØ© تØÙ
Ù٠باسÙ
ÙØ§Ùص٠بÙÙÙØ§ باستخداÙ
اÙÙÙØ§ØµÙ';
-$lang['mediaextchange'] = 'تÙ
تغÙÙØ± ÙÙØ¹ اÙÙ
ÙÙ Ù
Ù .%s Ø¥ÙÙ .%s!';
-$lang['reference'] = 'Ù
راجع ÙÙ';
-$lang['ref_inuse'] = 'ÙØ§ ÙÙ
ÙÙ ØØ°Ù اÙÙ
ÙÙØ ÙØ£ÙÙ Ù
ستخدÙ
Ù
Ù ÙØ¨Ù Ø§ÙØµÙØØ§Øª Ø§ÙØªØ§ÙÙØ©:';
-$lang['ref_hidden'] = 'بعض اÙÙ
راجع ÙØµÙØ§ØØ§Øª ÙØ§ تÙ
ÙÙ ØªØ±Ø®ÙØµ Ø¨Ø±Ø¤ÙØªÙا';
-$lang['hits'] = 'Ø²ÙØ§Ø±';
-$lang['quickhits'] = 'ØµÙØØ§Øª Ø¨ÙØ°Ø§ Ø§ÙØ§Ø³Ù
';
-$lang['toc'] = 'جدÙ٠اÙÙ
ØØªÙÙØ§Øª';
-$lang['current'] = 'ØØ§ÙÙ';
-$lang['yours'] = 'ÙØ³Ø®ØªÙ';
-$lang['diff'] = 'Ù
ÙØ§Ø±ÙØ© باÙÙØ³Ø®Ø© Ø§ÙØØ§ÙÙØ©';
-$lang['diff2'] = 'Ù
ÙØ§Ø±ÙØ© بÙ٠اÙÙØ³Ø® اÙÙ
ختارة';
-$lang['line'] = 'سطر';
-$lang['breadcrumb'] = 'أثر';
-$lang['youarehere'] = 'Ø£ÙØª ÙÙØ§';
-$lang['lastmod'] = 'آخر تعدÙÙ';
-$lang['by'] = 'Ø¨ÙØ§Ø³Ø·Ø©';
-$lang['deleted'] = 'تÙ
ØØ°Ù';
-$lang['created'] = 'تÙ
Ø¥ÙØ´Ø§Ø¡';
-$lang['restored'] = 'Ø¹ÙØ¯Ø© ÙÙØ³Ø®Ø© ÙØ¯ÙÙ
Ø©';
-$lang['external_edit'] = 'ØªØØ±Ùر خارجÙ';
-$lang['summary'] = 'Ù
ÙØ®Øµ Ø§ÙØªØØ±Ùر';
-$lang['mail_newpage'] = 'Ø¥Ø¶Ø§ÙØ© ØµÙØØ©:';
-$lang['mail_changed'] = 'تعدÙÙ ØµÙØØ©:';
-$lang['mail_new_user'] = 'Ù
Ø´ØªØ±Ù Ø¬Ø¯ÙØ¯';
-$lang['mail_upload'] = 'تØÙ
ÙÙ Ù
ÙÙ:';
-$lang['nosmblinks'] = 'Ø§ÙØ±Ùابط ÙÙ
Ø¬ÙØ¯Ø§Øª ÙÙÙØ¯Ùز اÙÙ
Ø´Ø§Ø±ÙØ© تعÙ
Ù ÙÙØ· Ù
ع Ù
ØªØµÙØ Ù
اÙÙØ±ÙØ³ÙØª Internet Explorer. Ù
ا زا٠بإÙ
ÙØ§ÙÙ ÙØµ Ù ÙØµÙ Ø§ÙØ±Ø§Ø¨Ø·.';
-$lang['qb_alert'] = 'ÙØ±Ø¬Ù إدخا٠اÙÙØµ اÙÙ
راد ØµÙØ§ØºØªØ©. Ø³ÙØªÙ
Ø¥Ø¶Ø§ÙØªÙ ÙÙ ÙÙØ§ÙØ© اÙÙ
Ø³ØªÙØ¯';
-$lang['qb_bold'] = 'ÙØµ Ø¹Ø±ÙØ¶';
-$lang['qb_italic'] = 'ÙØµ Ù
ائÙ';
-$lang['qb_underl'] = 'ÙØµ Ù
سطر';
-$lang['qb_code'] = 'ÙØµ برÙ
جÙ';
-$lang['qb_strike'] = 'ÙØµ Ù
Ø´Ø·ÙØ¨';
-$lang['qb_h1'] = 'عÙÙØ§Ù Ù
ستÙ٠أÙÙ';
-$lang['qb_h2'] = 'عÙÙØ§Ù Ù
ستÙ٠ثاÙÙ';
-$lang['qb_h3'] = 'عÙÙØ§Ù Ù
ستÙÙ Ø«Ø§ÙØ«';
-$lang['qb_h4'] = 'عÙÙØ§Ù Ù
ستÙ٠رابع';
-$lang['qb_h5'] = 'عÙÙØ§Ù Ù
ستÙ٠خاÙ
س';
-$lang['qb_link'] = 'رابط داخÙÙ';
-$lang['qb_extlink'] = 'رابط خارجÙ';
-$lang['qb_hr'] = 'سطر Ø£ÙÙÙ';
-$lang['qb_ol'] = 'Ø¨ÙØ¯ ÙÙ ÙØ§Ø¦Ù
Ø© Ù
رتبة';
-$lang['qb_ul'] = 'Ø¨ÙØ¯ ÙÙ ÙØ§Ø¦Ù
Ø© ØºÙØ± Ù
رتبة';
-$lang['qb_media'] = 'Ø¥Ø¶Ø§ÙØ© ØµÙØ± Ù Ù
ÙÙØ§Øª أخرÙ';
-$lang['qb_sig'] = 'أض٠تÙÙÙØ¹Ù';
-$lang['qb_smileys'] = 'Ø§ÙØ§Ø¨ØªØ³Ø§Ù
ات';
-$lang['qb_chars'] = 'Ù
ØØ§Ø±Ù خاصة';
-$lang['del_confirm'] = 'ÙÙ ØÙØ§Ù ØªØ±ÙØ¯ ØØ°Ù Ø§ÙØ¨ÙÙØ¯ اÙÙ
ختارةØ';
-$lang['admin_register'] = 'Ø¥Ø¶Ø§ÙØ© Ù
Ø´ØªØ±Ù Ø¬Ø¯ÙØ¯';
-$lang['metaedit'] = 'ØªØØ±Ùر Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØ´Ù
ÙÙÙØ© ';
-$lang['metasaveerr'] = 'ÙØ´Ùت عÙ
ÙÙØ© ÙØªØ§Ø¨Ø© Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØ´Ù
ÙÙÙØ©';
-$lang['metasaveok'] = 'تÙ
ØÙظ Ø§ÙØ¨ÙØ§ÙØª Ø§ÙØ´Ù
ÙÙÙØ©';
-$lang['img_backto'] = 'Ø§ÙØ¹Ùدة Ø¥ÙÙ';
-$lang['img_title'] = 'Ø§ÙØ¹ÙÙØ§Ù';
-$lang['img_caption'] = 'تÙÙÙÙ Ø§ÙØµÙرة';
-$lang['img_date'] = 'Ø§ÙØªØ§Ø±ÙØ®';
-$lang['img_fname'] = 'اسÙ
اÙÙ
ÙÙ';
-$lang['img_fsize'] = 'Ø§ÙØØ¬Ù
';
-$lang['img_artist'] = 'اÙÙ
ØµÙØ±';
-$lang['img_copyr'] = 'ØÙÙ٠اÙÙØ³Ø®';
-$lang['img_format'] = 'ØµÙØº رسÙÙ
ÙØ©';
-$lang['img_camera'] = 'Ø¢ÙØ© Ø§ÙØªØµÙÙØ±';
-$lang['img_keywords'] = 'ÙÙÙ
ات Ù
ÙØªØ§ØÙØ©';
-$lang['subscribe_success'] = 'تÙ
Ø¥Ø¶Ø§ÙØ© %s ÙÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
-$lang['subscribe_error'] = 'ØØ¯Ø« خطأ ÙÙ Ø¥Ø¶Ø§ÙØ© %s ÙÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
-$lang['subscribe_noaddress'] = 'ÙØ§ ÙÙØ¬Ø¯ عÙÙØ§Ù Ù
رÙÙ Ù
ع Ø¨ÙØ§Ùات تسجÙÙÙØ ÙØ§ ÙÙ
ÙÙ Ø¥Ø¶Ø§ÙØªÙ Ø¥ÙÙ ÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات';
-$lang['unsubscribe_success'] = 'تÙ
ØØ°Ù%s Ù
Ù ÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
-$lang['unsubscribe_error'] = 'ØØ¯Ø« خطأ ÙÙ ØØ°Ù %s Ù
Ù ÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
-$lang['authmodfailed'] = 'إعدادات ØªØµØ±ÙØ ÙØ§Ø³Ø¯Ø©Ø ÙØ±Ø¬Ù Ù
Ø±Ø§Ø³ÙØ© اÙÙ
Ø¯ÙØ±.';
-$lang['authtempfail'] = 'ØªØµØ±ÙØ اÙÙ
Ø´ØªØ±Ù ØºÙØ± Ù
تÙÙØ± Ù
Ø¤ÙØªØ§ÙØ Ø¥Ù Ø§Ø³ØªÙ
رت ÙØ°Ù Ø§ÙØØ§ÙØ© ÙØ±Ø¬Ù Ù
Ø±Ø§Ø³ÙØ© اÙÙ
Ø¯ÙØ±';
-$lang['i_chooselang'] = 'اختر ÙØºØªÙ';
-$lang['i_installer'] = 'Ø¨Ø±ÙØ§Ù
ج ØªÙØµÙب دÙÙÙ ÙÙÙÙ';
-$lang['i_wikiname'] = 'اسÙ
اÙÙÙÙÙ';
-$lang['i_enableacl'] = 'ØªÙØ¹ÙÙ ACL - Ù
ÙØ¶Ù';
-$lang['i_superuser'] = 'Ù
شرÙ';
-$lang['i_problems'] = 'ÙØ¬Ø¯ Ø¨Ø±ÙØ§Ù
ج Ø§ÙØªÙØµÙØ¨ اÙÙ
شاÙÙ Ø§ÙØªØ§ÙÙØ©Ø ÙØ§ ÙÙ
ÙÙ٠اÙÙ
تابعة ÙØ¨Ù ØÙÙØ§.';
-$lang['i_modified'] = 'ÙØ£Ø³Ø¨Ø§Ø¨ Ø£Ù
ÙÙØ© ÙØ°Ø§ Ø§ÙØ¨Ø±ÙاÙ
ج Ø³ÙØ¹Ù
Ù ÙÙØ· Ù
ع ØªÙØµÙب دÙÙÙ ÙÙÙÙ Ø¬Ø¯ÙØ¯ Ù ØºÙØ± Ù
عدÙÙ.
-ÙØ¬Ø¨ Ø£Ù ØªØ¹ÙØ¯ Ù٠ضغط اÙÙ
ÙÙØ§Øª Ù
رة أخر٠Ù
٠اÙÙ
ÙØªØ¨Ø© اÙÙ
Ø¶ØºÙØ·Ø©Ø أ٠راجع <a href="http://wiki.splitbrain.org/wiki:install"> تعÙÙÙ
ات ØªÙØµÙب دÙÙÙ ÙÙÙÙ </a> ';
-$lang['i_funcna'] = 'Ø¯Ø§ÙØ© PHP Ø§ÙØªØ§ÙÙØ© ØºÙØ± Ù
تÙÙØ±Ø©.
-<code>%s</code>
-ÙØ¯ ÙÙÙÙ Ù
Ø²ÙØ¯ خدÙ
Ø© Ø§ÙØ§Ø³ØªÙادة ÙØ¯ ØØ¬Ø¨Ùا ÙØ³Ø¨Ø¨ Ù
ا.';
-$lang['i_phpver'] = 'ÙØ³Ø®Ø© PHP Ø§ÙØªÙ ÙØ¯ÙÙ ÙÙ
-<code>%s</code>
-ÙÙ٠أÙÙ Ù
٠اÙÙØ³Ø®Ø© اÙÙ
Ø·ÙÙØ¨Ø©
-<code>%s</code>
-عÙÙÙ ØªØØ¯ÙØ« ÙØ³Ø®Ø© PHP';
-$lang['i_permfail'] = 'Ø¥Ù <code>%s</code> ØºÙØ± ÙØ§Ø¨Ù ÙÙÙØªØ§Ø¨Ø© Ø¨ÙØ§Ø³Ø·Ø© دÙÙÙ ÙÙÙÙØ عÙÙ٠تعدÙ٠إعدادات Ø§ÙØµÙاØÙات ÙÙØ°Ø§ اÙÙ
Ø¬ÙØ¯!';
-$lang['i_confexists'] = 'Ø¥Ù <code>%s</code> Ù
ÙØ¬Ùد Ø£ØµÙØ§Ù';
-$lang['i_writeerr'] = 'ÙØ§ ÙÙ
ÙÙ Ø¥ÙØ´Ø§Ø¡ <code>%s</code>Ø Ø¹ÙÙÙ Ø§ÙØªØ£Ùد Ù
Ù ØµÙØ§ØÙات اÙÙ
Ù٠أ٠اÙÙ
Ø¬ÙØ¯ ÙØ¥Ùشاء اÙÙ
ÙÙ ÙØ¯ÙÙØ§Ù.';
-$lang['i_badhash'] = 'اÙÙ
ÙÙ dokuwiki.php ØºÙØ± Ù
صÙÙ Ø£Ù ÙØ¯ تÙ
تعدÙÙÙ
-(hash=<code>%s</code>)';
-$lang['i_badval'] = 'اÙÙÙÙ
Ø© <code>%s</code> ØºÙØ± Ø´Ø±Ø¹ÙØ© Ø£Ù ÙØ§Ø±ØºØ©';
-$lang['i_success'] = 'Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§Øª تÙ
ت Ø¨ÙØ¬Ø§ØØ ÙØ±Ø¬Ù ØØ°Ù اÙÙ
ÙÙ install.php Ø§ÙØ¢Ù.
-Ø«Ù
تابع Ø¥ÙÙ <a href="doku.php"> دÙÙÙ ÙÙÙÙ Ø§ÙØ¬Ø¯Ùدة</a>';
-$lang['i_failure'] = 'بعض Ø§ÙØ£Ø®Ø·Ø§Ø¡ ØØ¯Ø«Øª Ø£Ø«ÙØ§ ÙØªØ§Ø¨Ø© Ù
ÙÙØ§Øª Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§ØªØ عÙÙ٠تعدÙÙÙØ§ ÙØ¯ÙÙØ§Ù ÙØ¨Ù Ø£Ù ØªØ³ØªØ·ÙØ¹ استخداÙ
<a href="doku.php"> دÙÙÙ ÙÙÙÙ Ø§ÙØ¬Ø¯Ùدة</a>';
-$lang['i_policy'] = 'ØªØµØ±ÙØ ACL Ù
بدئÙ';
-$lang['i_pol0'] = 'ÙÙÙÙ Ù
ÙØªÙØØ©Ø أ٠اÙÙØ±Ø§Ø¡Ø© ÙØ§ÙÙØªØ§Ø¨Ø© ÙØ§ÙتØÙ
ÙÙ Ù
سÙ
ÙØØ© ÙÙØ¬Ù
ÙØ¹';
-$lang['i_pol1'] = 'ÙÙÙ٠عاÙ
Ø©Ø Ø£Ù Ø§ÙÙØ±Ø§Ø¡Ø© ÙÙØ¬Ù
ÙØ¹ ÙÙÙ٠اÙÙØªØ§Ø¨Ø© ÙØ§ÙتØÙ
ÙÙ ÙÙÙ
شترÙÙ٠اÙÙ
سجÙÙÙ ÙÙØ·';
-$lang['i_pol2'] = 'ÙÙÙÙ Ù
غÙÙØ©Ø أ٠اÙÙØ±Ø§Ø¡Ø© ÙØ§ÙÙØªØ§Ø¨Ø© ÙØ§ÙتØÙ
ÙÙ ÙÙÙ
شترÙÙ٠اÙÙ
سجÙÙÙ ÙÙØ·';
-$lang['i_retry'] = 'إعادة اÙÙ
ØØ§ÙÙØ©';
+<?php
+/**
+ * Arabic language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Mostafa Hussein <mostafa at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'rtl';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'Ø';
+$lang['btn_edit'] = 'ØªØØ±Ùر ÙØ°Ù Ø§ÙØµÙØØ©';
+$lang['btn_source'] = 'عرض Ù
صدر Ø§ÙØµÙØØ©';
+$lang['btn_show'] = 'عرض Ø§ÙØµÙØØ©';
+$lang['btn_create'] = 'Ø¥ÙØ´Ø§Ø¡ ÙØ°Ù Ø§ÙØµÙØØ©';
+$lang['btn_search'] = 'Ø¨ØØ«';
+$lang['btn_save'] = 'ØÙظ';
+$lang['btn_preview'] = 'استعراض';
+$lang['btn_top'] = 'ÙØ£Ø¹ÙÙ';
+$lang['btn_newer'] = '<< Ø£ØØ¯Ø«';
+$lang['btn_older'] = 'Ø£ÙØ¯Ù
>>';
+$lang['btn_revs'] = 'ÙØ³Ø® ÙØ¯ÙÙ
Ø©';
+$lang['btn_recent'] = 'Ø£ØØ¯Ø« Ø§ÙØªØ¹Ø¯ÙÙØ§Øª';
+$lang['btn_upload'] = 'تØÙ
ÙÙ';
+$lang['btn_cancel'] = 'Ø¥ÙØºØ§Ø¡';
+$lang['btn_index'] = 'ÙÙØ±Ø³';
+$lang['btn_secedit'] = 'ØªØØ±Ùر';
+$lang['btn_login'] = 'دخÙÙ';
+$lang['btn_logout'] = 'Ø®Ø±ÙØ¬';
+$lang['btn_admin'] = 'اÙÙ
Ø¯ÙØ±';
+$lang['btn_update'] = 'ØªØØ¯ÙØ«';
+$lang['btn_delete'] = 'ØØ°Ù';
+$lang['btn_back'] = 'Ø±Ø¬ÙØ¹';
+$lang['btn_backlink'] = 'ارتباطات';
+$lang['btn_backtomedia'] = 'Ø±Ø¬ÙØ¹ Ø¥ÙÙ Ø§Ø®ØªÙØ§Ø± Ù
Ù٠اÙÙØ³Ø§Ø¦Ø·';
+$lang['btn_subscribe'] = 'اشتر٠ÙÙ Ø§ÙØªØ¹Ø¯ÙÙØ§Øª';
+$lang['btn_unsubscribe'] = 'Ø¥ÙØºØ§Ø¡ Ø§ÙØ§Ø´ØªØ±Ø§Ù ÙÙ Ø§ÙØªØ¹Ø¯ÙÙØ§Øª';
+$lang['btn_profile'] = 'ØªØØ¯ÙØ« اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ';
+$lang['btn_reset'] = 'ØªÙØ±Ùغ';
+$lang['btn_resendpwd'] = 'إرسا٠ÙÙÙ
Ø© Ù
Ø±ÙØ± Ø¬Ø¯ÙØ¯Ø©';
+$lang['btn_draft'] = 'ØªØØ±Ùر اÙÙ
سÙÙØ¯Ø©';
+$lang['btn_recover'] = 'استعادة اÙÙ
سÙÙØ¯Ø©';
+$lang['btn_draftdel'] = 'ØØ°Ù اÙÙ
سÙÙØ¯Ø©';
+$lang['loggedinas'] = 'دخÙ٠باسÙ
';
+$lang['user'] = 'اسÙ
اÙÙ
شترÙ';
+$lang['pass'] = 'ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±';
+$lang['newpass'] = 'ÙÙÙ
Ø© Ù
Ø±ÙØ± Ø¬Ø¯ÙØ¯Ø©';
+$lang['oldpass'] = 'تأÙÙØ¯ ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± Ø§ÙØØ§ÙÙØ©';
+$lang['passchk'] = 'Ù
رة أخرÙ';
+$lang['remember'] = 'ØªØ°ÙØ±ÙÙ';
+$lang['fullname'] = 'Ø§ÙØ§Ø³Ù
اÙÙØ§Ù
Ù';
+$lang['email'] = 'Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
+$lang['register'] = 'تسجÙÙ';
+$lang['profile'] = 'اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ';
+$lang['badlogin'] = 'Ø¹Ø°Ø±Ø§Ø Ø§Ø³Ù
اÙÙ
شتر٠أ٠ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± ØºÙØ± صØÙØØ©';
+$lang['minoredit'] = 'تعدÙÙØ§Øª Ø·ÙÙÙØ©';
+$lang['draftdate'] = 'تشغÙÙ ØÙظ اÙÙ
سÙÙØ¯Ø© Ø¢ÙÙØ§Ù';
+$lang['regmissing'] = 'Ø¹Ø°Ø±Ø§Ø ÙØ¬Ø¨ Ù
ÙØ¡ جÙ
ÙØ¹ Ø§ÙØ®Ø§Ùات';
+$lang['reguexists'] = 'Ø¹Ø°Ø±Ø§Ø ÙÙØ¬Ø¯ Ù
شتر٠بÙÙØ³ Ø§ÙØ§Ø³Ù
';
+$lang['regsuccess'] = 'تÙ
تسجÙ٠اÙÙ
Ø´ØªØ±Ù Ù Ø£Ø±Ø³ÙØª ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± عبر Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
+$lang['regsuccess2'] = 'تÙ
Ø¥ÙØ´Ø§Ø¡ اÙÙ
شترÙ';
+$lang['regmailfail'] = 'ØØ¯Ø« خطأ ÙÙ Ø¥Ø±Ø³Ø§Ù Ø±Ø³Ø§ÙØ© ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±. ÙØ±Ø¬Ù Ù
Ø±Ø§Ø³ÙØ© اÙÙ
Ø¯ÙØ±';
+$lang['regbadmail'] = 'Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙ٠اÙÙ
Ø¹Ø·Ù ØºÙØ± صØÙØØ Ø¥Ù ÙÙØª ØªØ¸Ù Ø§ÙØ®Ø·Ø£ Ù
٠اÙÙ
ÙÙØ¹ راس٠اÙÙ
Ø¯ÙØ±';
+$lang['regbadpass'] = 'ÙÙÙ
ت٠اÙÙ
Ø±ÙØ± ØºÙØ± Ù
ØªØ·Ø§Ø¨ÙØªÙÙØ ØØ§ÙÙ Ù
رة أخرÙ';
+$lang['regpwmail'] = 'ÙÙÙ
Ø© Ù
Ø±ÙØ±Ù Ø¥Ù٠دÙÙÙ ÙÙÙÙ';
+$lang['reghere'] = 'ÙØ³Øª Ù
Ø´ØªØ±ÙØ§ÙØ ØªÙØ¶Ù اشترÙ';
+$lang['profna'] = 'ÙØ°Ù اÙÙÙÙÙ ÙØ§ تدعÙ
تعدÙ٠اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ';
+$lang['profnochange'] = 'ÙØ§ تغÙÙØ±Ø§ØªØ ÙØ§ Ø´ÙØ¡ Ù
Ø·ÙÙØ¨ عÙ
ÙÙ';
+$lang['profnoempty'] = 'ÙÙØ³ Ù
سÙ
ÙØØ§Ù ØªØ±Ù Ø§ÙØ§Ø³Ù
Ø£Ù Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ ÙØ§Ø±ØºØ§Ù';
+$lang['profchanged'] = 'تÙ
ØªØØ¯ÙØ« اÙÙ
ÙÙ Ø§ÙØ´Ø®ØµÙ Ø¨ÙØ¬Ø§Ø';
+$lang['pwdforget'] = 'ÙØ³Ùت ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±Ø Ø§ØØµÙ عÙÙ ÙØ§ØØ¯Ø© Ø¬Ø¯ÙØ¯Ø©';
+$lang['resendna'] = 'ÙØ°Ù اÙÙÙÙÙ ÙØ§ تدعÙ
إعادة إرسا٠ÙÙÙ
Ø© اÙÙ
Ø±ÙØ±';
+$lang['resendpwd'] = 'إرسا٠ÙÙÙ
Ø© اÙÙ
Ø±ÙØ± Ø¥ÙÙ';
+$lang['resendpwdmissing'] = 'Ø¹Ø°Ø±Ø§ÙØ ÙØ¬Ø¨ أ٠تÙ
ÙØ£ جÙ
ÙØ¹ Ø§ÙØ®Ø§Ùات';
+$lang['resendpwdnouser'] = 'Ø¹Ø°Ø±Ø§ÙØ ÙØ¯ÙÙØ§ ÙØ°Ø§ اÙÙ
شتر٠ÙÙ ÙØ§Ø¹Ø¯Ø© Ø¨ÙØ§ÙØ§ØªÙØ§';
+$lang['resendpwdbadauth'] = 'Ø¹Ø°Ø±Ø§ÙØ رÙ
ز Ø§ÙØªÙعÙÙ ÙØ°Ø§ ØºÙØ± صØÙØ. ÙØ£Ùد Ø£Ù٠استخدÙ
ت ÙØ§Ù
Ù ÙØµÙØ© Ø§ÙØªØ£ÙÙØ¯';
+$lang['resendpwdconfirm'] = 'تÙ
Ø¥Ø±Ø³Ø§Ù ÙØµÙØ© تأÙÙØ¯ Ø¥ÙÙ Ø¨Ø±ÙØ¯Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
+$lang['resendpwdsuccess'] = 'ÙÙÙ
Ø© Ù
Ø±ÙØ±Ù Ø§ÙØ¬Ø¯Ùدة تÙ
إرساÙÙØ§ عبر Ø§ÙØ¨Ø±Ùد Ø§ÙØ¥ÙÙØªØ±ÙÙÙ';
+$lang['txt_upload'] = 'اختر Ù
ÙÙØ§Ù ÙÙØªØÙ
ÙÙ';
+$lang['txt_filename'] = 'تØÙ
Ù٠باسÙ
- Ø§Ø®ØªÙØ§Ø±Ù';
+$lang['txt_overwrt'] = 'اÙÙØªØ§Ø¨Ø© عÙÙ Ù
ÙÙ Ù
ÙØ¬Ùد بÙÙØ³ Ø§ÙØ§Ø³Ù
Ù
سÙ
ÙØØ©';
+$lang['lockedby'] = 'ØØ§ÙÙØ§Ù Ù
ÙÙÙÙ Ø¨ÙØ§Ø³Ø·Ø©';
+$lang['lockexpire'] = 'سÙÙØªÙ٠اÙÙÙÙ ÙÙ';
+$lang['willexpire'] = 'سÙÙØªÙÙ ÙÙÙ ØªØØ±Ùر ÙØ°Ù Ø§ÙØµÙØÙ Ø®ÙØ§Ù دÙÙÙØ©. ÙØªØ¬Ùب Ø§ÙØªØ¹Ø§Ø±Ø¶ استخدÙ
زر استعراض ÙØ¨Ø¯Ø£ اÙÙÙÙ Ù
Ù Ø¬Ø¯ÙØ¯';
+$lang['notsavedyet'] = 'Ø§ÙØªØ¹Ø¯ÙÙØ§Øª Ø§ÙØªÙ ÙÙ
تØÙظ ستÙÙØ¯. Ø£Ù
ÙØ§ÙÙØ';
+$lang['rssfailed'] = 'خطأ Ù
ا ØØ¯Ø« Ø£Ø«ÙØ§Ø¡ Ø¬ÙØ¨ Ù
ÙÙ Ø§ÙØªØºØ°ÙØ©:';
+$lang['nothingfound'] = 'ÙØ§ ÙÙØ¬Ø¯ Ø´ÙØ¡';
+$lang['mediaselect'] = 'Ù
ÙÙØ§Øª اÙÙØ³Ø§Ø¦Ø· اÙÙ
تعددة';
+$lang['fileupload'] = 'تØÙ
ÙÙ Ù
ÙÙ ÙØ³Ø§Ø¦Ø· Ù
تعددة';
+$lang['uploadsucc'] = 'تÙ
Ø§ÙØªØÙ
ÙÙ Ø¨ÙØ¬Ø§Ø';
+$lang['uploadfail'] = 'ÙØ´Ù Ø§ÙØªØÙ
ÙÙØ ÙØ¯ ÙÙÙÙ Ø§ÙØ®Ø·Ø£ ÙÙ Ø§ÙØªØ±Ø§Ø®ÙصØ';
+$lang['uploadwrong'] = 'Ø§ÙØªØÙ
ÙÙ Ù
Ù
ÙÙØ¹Ø ÙÙØ¹ اÙÙ
ÙÙ Ù
رÙÙØ¶!';
+$lang['uploadexist'] = 'اÙÙ
ÙÙ Ù
ÙØ¬Ùد Ø£ØµÙØ§Ù. ÙÙ
ÙØØ¯Ø« Ø´ÙØ¡';
+$lang['uploadbadcontent'] = 'اÙÙ
ØØªÙ٠اÙÙ
ØÙ
ÙÙ ÙÙ
ÙØªØ·Ø§Ø¨Ù Ù
ع ÙÙØ¹ اÙÙ
ÙÙ %s';
+$lang['uploadspam'] = 'Ø§ÙØªØÙ
ÙÙ Ù
ØØ¬Ùب Ø¨ÙØ§Ø³Ø·Ø© اÙÙØ§Ø¦Ù
Ø© Ø§ÙØ³Ùداء ÙØ¨Ø±ÙاÙ
ج تÙÙÙ Ø§ÙØªØ·ÙÙ';
+$lang['uploadxss'] = 'Ø§ÙØªØÙ
ÙÙ Ù
ØØ¬Ùب ÙÙ
ÙØ¹ اÙÙ
ØØªÙÙØ§Øª Ø§ÙØ®Ø¨Ùثة';
+$lang['deletesucc'] = 'تÙ
ØØ°Ù اÙÙ
ÙÙ "%s"';
+$lang['deletefail'] = 'ÙØ§ ÙÙ
ÙÙ ØØ°Ù "%s"Ø ØªØ£ÙØ¯ Ù
Ù ØªØ±Ø§Ø®ÙØµÙ';
+$lang['mediainuse'] = 'ÙÙ
ÙØØ°Ù Ø§ÙÙ
ÙÙ "%s"Ø Ù
ازا٠Ù
ÙØ¬ÙداÙ';
+$lang['namespaces'] = 'ÙØ¶Ø§Ø¡ Ø§ÙØªØ³Ù
ÙØ©';
+$lang['mediafiles'] = 'Ù
ÙÙØ§Øª Ù
ÙØ¬Ùدة ÙÙ';
+$lang['js']['keepopen'] = 'أبÙ٠اÙÙØ§Ùذة Ù
ÙØªÙØØ© Ø£Ø«ÙØ§Ø¡ Ø§ÙØ§Ø®ØªÙار';
+$lang['js']['hidedetails'] = 'Ø¥Ø®ÙØ§Ø¡ Ø§ÙØªÙاصÙÙ';
+$lang['mediausage'] = 'استخدÙ
ÙØ°Ù Ø§ÙØµÙاغة ÙÙØ¯ÙØ§ÙØ© عÙÙ ÙØ°Ø§ اÙÙ
ÙÙ:';
+$lang['mediaview'] = 'عرض اÙÙ
ÙÙ Ø§ÙØ£ØµÙÙ';
+$lang['mediaroot'] = 'Ø§ÙØ¬Ø°Ø±';
+$lang['mediaupload'] = 'تØÙ
ÙÙ Ù
Ù٠إÙÙ ÙØ¶Ø§Ø¡ Ø§ÙØªØ³Ù
ÙØ© ÙÙØ§. ÙØ¥Ùشاء ÙØ¶Ø§Ø¡Ø§Øª تسÙ
ÙØ© ÙØ±Ø¹ÙØ©Ø Ø£Ø¶ÙÙØ§ Ø¥ÙÙ Ø¨Ø¯Ø§ÙØ© Ø®Ø§ÙØ© تØÙ
Ù٠باسÙ
ÙØ§Ùص٠بÙÙÙØ§ باستخداÙ
اÙÙÙØ§ØµÙ';
+$lang['mediaextchange'] = 'تÙ
تغÙÙØ± ÙÙØ¹ اÙÙ
ÙÙ Ù
Ù .%s Ø¥ÙÙ .%s!';
+$lang['reference'] = 'Ù
راجع ÙÙ';
+$lang['ref_inuse'] = 'ÙØ§ ÙÙ
ÙÙ ØØ°Ù اÙÙ
ÙÙØ ÙØ£ÙÙ Ù
ستخدÙ
Ù
Ù ÙØ¨Ù Ø§ÙØµÙØØ§Øª Ø§ÙØªØ§ÙÙØ©:';
+$lang['ref_hidden'] = 'بعض اÙÙ
راجع ÙØµÙØ§ØØ§Øª ÙØ§ تÙ
ÙÙ ØªØ±Ø®ÙØµ Ø¨Ø±Ø¤ÙØªÙا';
+$lang['hits'] = 'Ø²ÙØ§Ø±';
+$lang['quickhits'] = 'ØµÙØØ§Øª Ø¨ÙØ°Ø§ Ø§ÙØ§Ø³Ù
';
+$lang['toc'] = 'جدÙ٠اÙÙ
ØØªÙÙØ§Øª';
+$lang['current'] = 'ØØ§ÙÙ';
+$lang['yours'] = 'ÙØ³Ø®ØªÙ';
+$lang['diff'] = 'Ù
ÙØ§Ø±ÙØ© باÙÙØ³Ø®Ø© Ø§ÙØØ§ÙÙØ©';
+$lang['diff2'] = 'Ù
ÙØ§Ø±ÙØ© بÙ٠اÙÙØ³Ø® اÙÙ
ختارة';
+$lang['line'] = 'سطر';
+$lang['breadcrumb'] = 'أثر';
+$lang['youarehere'] = 'Ø£ÙØª ÙÙØ§';
+$lang['lastmod'] = 'آخر تعدÙÙ';
+$lang['by'] = 'Ø¨ÙØ§Ø³Ø·Ø©';
+$lang['deleted'] = 'تÙ
ØØ°Ù';
+$lang['created'] = 'تÙ
Ø¥ÙØ´Ø§Ø¡';
+$lang['restored'] = 'Ø¹ÙØ¯Ø© ÙÙØ³Ø®Ø© ÙØ¯ÙÙ
Ø©';
+$lang['external_edit'] = 'ØªØØ±Ùر خارجÙ';
+$lang['summary'] = 'Ù
ÙØ®Øµ Ø§ÙØªØØ±Ùر';
+$lang['mail_newpage'] = 'Ø¥Ø¶Ø§ÙØ© ØµÙØØ©:';
+$lang['mail_changed'] = 'تعدÙÙ ØµÙØØ©:';
+$lang['mail_new_user'] = 'Ù
Ø´ØªØ±Ù Ø¬Ø¯ÙØ¯';
+$lang['mail_upload'] = 'تØÙ
ÙÙ Ù
ÙÙ:';
+$lang['nosmblinks'] = 'Ø§ÙØ±Ùابط ÙÙ
Ø¬ÙØ¯Ø§Øª ÙÙÙØ¯Ùز اÙÙ
Ø´Ø§Ø±ÙØ© تعÙ
Ù ÙÙØ· Ù
ع Ù
ØªØµÙØ Ù
اÙÙØ±ÙØ³ÙØª Internet Explorer. Ù
ا زا٠بإÙ
ÙØ§ÙÙ ÙØµ Ù ÙØµÙ Ø§ÙØ±Ø§Ø¨Ø·.';
+$lang['qb_alert'] = 'ÙØ±Ø¬Ù إدخا٠اÙÙØµ اÙÙ
راد ØµÙØ§ØºØªØ©. Ø³ÙØªÙ
Ø¥Ø¶Ø§ÙØªÙ ÙÙ ÙÙØ§ÙØ© اÙÙ
Ø³ØªÙØ¯';
+$lang['qb_bold'] = 'ÙØµ Ø¹Ø±ÙØ¶';
+$lang['qb_italic'] = 'ÙØµ Ù
ائÙ';
+$lang['qb_underl'] = 'ÙØµ Ù
سطر';
+$lang['qb_code'] = 'ÙØµ برÙ
جÙ';
+$lang['qb_strike'] = 'ÙØµ Ù
Ø´Ø·ÙØ¨';
+$lang['qb_h1'] = 'عÙÙØ§Ù Ù
ستÙ٠أÙÙ';
+$lang['qb_h2'] = 'عÙÙØ§Ù Ù
ستÙ٠ثاÙÙ';
+$lang['qb_h3'] = 'عÙÙØ§Ù Ù
ستÙÙ Ø«Ø§ÙØ«';
+$lang['qb_h4'] = 'عÙÙØ§Ù Ù
ستÙ٠رابع';
+$lang['qb_h5'] = 'عÙÙØ§Ù Ù
ستÙ٠خاÙ
س';
+$lang['qb_link'] = 'رابط داخÙÙ';
+$lang['qb_extlink'] = 'رابط خارجÙ';
+$lang['qb_hr'] = 'سطر Ø£ÙÙÙ';
+$lang['qb_ol'] = 'Ø¨ÙØ¯ ÙÙ ÙØ§Ø¦Ù
Ø© Ù
رتبة';
+$lang['qb_ul'] = 'Ø¨ÙØ¯ ÙÙ ÙØ§Ø¦Ù
Ø© ØºÙØ± Ù
رتبة';
+$lang['qb_media'] = 'Ø¥Ø¶Ø§ÙØ© ØµÙØ± Ù Ù
ÙÙØ§Øª أخرÙ';
+$lang['qb_sig'] = 'أض٠تÙÙÙØ¹Ù';
+$lang['qb_smileys'] = 'Ø§ÙØ§Ø¨ØªØ³Ø§Ù
ات';
+$lang['qb_chars'] = 'Ù
ØØ§Ø±Ù خاصة';
+$lang['del_confirm'] = 'ÙÙ ØÙØ§Ù ØªØ±ÙØ¯ ØØ°Ù Ø§ÙØ¨ÙÙØ¯ اÙÙ
ختارةØ';
+$lang['admin_register'] = 'Ø¥Ø¶Ø§ÙØ© Ù
Ø´ØªØ±Ù Ø¬Ø¯ÙØ¯';
+$lang['metaedit'] = 'ØªØØ±Ùر Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØ´Ù
ÙÙÙØ© ';
+$lang['metasaveerr'] = 'ÙØ´Ùت عÙ
ÙÙØ© ÙØªØ§Ø¨Ø© Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØ´Ù
ÙÙÙØ©';
+$lang['metasaveok'] = 'تÙ
ØÙظ Ø§ÙØ¨ÙØ§ÙØª Ø§ÙØ´Ù
ÙÙÙØ©';
+$lang['img_backto'] = 'Ø§ÙØ¹Ùدة Ø¥ÙÙ';
+$lang['img_title'] = 'Ø§ÙØ¹ÙÙØ§Ù';
+$lang['img_caption'] = 'تÙÙÙÙ Ø§ÙØµÙرة';
+$lang['img_date'] = 'Ø§ÙØªØ§Ø±ÙØ®';
+$lang['img_fname'] = 'اسÙ
اÙÙ
ÙÙ';
+$lang['img_fsize'] = 'Ø§ÙØØ¬Ù
';
+$lang['img_artist'] = 'اÙÙ
ØµÙØ±';
+$lang['img_copyr'] = 'ØÙÙ٠اÙÙØ³Ø®';
+$lang['img_format'] = 'ØµÙØº رسÙÙ
ÙØ©';
+$lang['img_camera'] = 'Ø¢ÙØ© Ø§ÙØªØµÙÙØ±';
+$lang['img_keywords'] = 'ÙÙÙ
ات Ù
ÙØªØ§ØÙØ©';
+$lang['subscribe_success'] = 'تÙ
Ø¥Ø¶Ø§ÙØ© %s ÙÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
+$lang['subscribe_error'] = 'ØØ¯Ø« خطأ ÙÙ Ø¥Ø¶Ø§ÙØ© %s ÙÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
+$lang['subscribe_noaddress'] = 'ÙØ§ ÙÙØ¬Ø¯ عÙÙØ§Ù Ù
رÙÙ Ù
ع Ø¨ÙØ§Ùات تسجÙÙÙØ ÙØ§ ÙÙ
ÙÙ Ø¥Ø¶Ø§ÙØªÙ Ø¥ÙÙ ÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات';
+$lang['unsubscribe_success'] = 'تÙ
ØØ°Ù%s Ù
Ù ÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
+$lang['unsubscribe_error'] = 'ØØ¯Ø« خطأ ÙÙ ØØ°Ù %s Ù
Ù ÙØ§Ø¦Ù
Ø© Ø§ÙØ§Ø´ØªØ±Ø§Ùات %s';
+$lang['authmodfailed'] = 'إعدادات ØªØµØ±ÙØ ÙØ§Ø³Ø¯Ø©Ø ÙØ±Ø¬Ù Ù
Ø±Ø§Ø³ÙØ© اÙÙ
Ø¯ÙØ±.';
+$lang['authtempfail'] = 'ØªØµØ±ÙØ اÙÙ
Ø´ØªØ±Ù ØºÙØ± Ù
تÙÙØ± Ù
Ø¤ÙØªØ§ÙØ Ø¥Ù Ø§Ø³ØªÙ
رت ÙØ°Ù Ø§ÙØØ§ÙØ© ÙØ±Ø¬Ù Ù
Ø±Ø§Ø³ÙØ© اÙÙ
Ø¯ÙØ±';
+$lang['i_chooselang'] = 'اختر ÙØºØªÙ';
+$lang['i_installer'] = 'Ø¨Ø±ÙØ§Ù
ج ØªÙØµÙب دÙÙÙ ÙÙÙÙ';
+$lang['i_wikiname'] = 'اسÙ
اÙÙÙÙÙ';
+$lang['i_enableacl'] = 'ØªÙØ¹ÙÙ ACL - Ù
ÙØ¶Ù';
+$lang['i_superuser'] = 'Ù
شرÙ';
+$lang['i_problems'] = 'ÙØ¬Ø¯ Ø¨Ø±ÙØ§Ù
ج Ø§ÙØªÙØµÙØ¨ اÙÙ
شاÙÙ Ø§ÙØªØ§ÙÙØ©Ø ÙØ§ ÙÙ
ÙÙ٠اÙÙ
تابعة ÙØ¨Ù ØÙÙØ§.';
+$lang['i_modified'] = 'ÙØ£Ø³Ø¨Ø§Ø¨ Ø£Ù
ÙÙØ© ÙØ°Ø§ Ø§ÙØ¨Ø±ÙاÙ
ج Ø³ÙØ¹Ù
Ù ÙÙØ· Ù
ع ØªÙØµÙب دÙÙÙ ÙÙÙÙ Ø¬Ø¯ÙØ¯ Ù ØºÙØ± Ù
عدÙÙ.
+ÙØ¬Ø¨ Ø£Ù ØªØ¹ÙØ¯ Ù٠ضغط اÙÙ
ÙÙØ§Øª Ù
رة أخر٠Ù
٠اÙÙ
ÙØªØ¨Ø© اÙÙ
Ø¶ØºÙØ·Ø©Ø أ٠راجع <a href="http://wiki.splitbrain.org/wiki:install"> تعÙÙÙ
ات ØªÙØµÙب دÙÙÙ ÙÙÙÙ </a> ';
+$lang['i_funcna'] = 'Ø¯Ø§ÙØ© PHP Ø§ÙØªØ§ÙÙØ© ØºÙØ± Ù
تÙÙØ±Ø©.
+<code>%s</code>
+ÙØ¯ ÙÙÙÙ Ù
Ø²ÙØ¯ خدÙ
Ø© Ø§ÙØ§Ø³ØªÙادة ÙØ¯ ØØ¬Ø¨Ùا ÙØ³Ø¨Ø¨ Ù
ا.';
+$lang['i_phpver'] = 'ÙØ³Ø®Ø© PHP Ø§ÙØªÙ ÙØ¯ÙÙ ÙÙ
+<code>%s</code>
+ÙÙ٠أÙÙ Ù
٠اÙÙØ³Ø®Ø© اÙÙ
Ø·ÙÙØ¨Ø©
+<code>%s</code>
+عÙÙÙ ØªØØ¯ÙØ« ÙØ³Ø®Ø© PHP';
+$lang['i_permfail'] = 'Ø¥Ù <code>%s</code> ØºÙØ± ÙØ§Ø¨Ù ÙÙÙØªØ§Ø¨Ø© Ø¨ÙØ§Ø³Ø·Ø© دÙÙÙ ÙÙÙÙØ عÙÙ٠تعدÙ٠إعدادات Ø§ÙØµÙاØÙات ÙÙØ°Ø§ اÙÙ
Ø¬ÙØ¯!';
+$lang['i_confexists'] = 'Ø¥Ù <code>%s</code> Ù
ÙØ¬Ùد Ø£ØµÙØ§Ù';
+$lang['i_writeerr'] = 'ÙØ§ ÙÙ
ÙÙ Ø¥ÙØ´Ø§Ø¡ <code>%s</code>Ø Ø¹ÙÙÙ Ø§ÙØªØ£Ùد Ù
Ù ØµÙØ§ØÙات اÙÙ
Ù٠أ٠اÙÙ
Ø¬ÙØ¯ ÙØ¥Ùشاء اÙÙ
ÙÙ ÙØ¯ÙÙØ§Ù.';
+$lang['i_badhash'] = 'اÙÙ
ÙÙ dokuwiki.php ØºÙØ± Ù
صÙÙ Ø£Ù ÙØ¯ تÙ
تعدÙÙÙ
+(hash=<code>%s</code>)';
+$lang['i_badval'] = 'اÙÙÙÙ
Ø© <code>%s</code> ØºÙØ± Ø´Ø±Ø¹ÙØ© Ø£Ù ÙØ§Ø±ØºØ©';
+$lang['i_success'] = 'Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§Øª تÙ
ت Ø¨ÙØ¬Ø§ØØ ÙØ±Ø¬Ù ØØ°Ù اÙÙ
ÙÙ install.php Ø§ÙØ¢Ù.
+Ø«Ù
تابع Ø¥ÙÙ <a href="doku.php"> دÙÙÙ ÙÙÙÙ Ø§ÙØ¬Ø¯Ùدة</a>';
+$lang['i_failure'] = 'بعض Ø§ÙØ£Ø®Ø·Ø§Ø¡ ØØ¯Ø«Øª Ø£Ø«ÙØ§ ÙØªØ§Ø¨Ø© Ù
ÙÙØ§Øª Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§ØªØ عÙÙ٠تعدÙÙÙØ§ ÙØ¯ÙÙØ§Ù ÙØ¨Ù Ø£Ù ØªØ³ØªØ·ÙØ¹ استخداÙ
<a href="doku.php"> دÙÙÙ ÙÙÙÙ Ø§ÙØ¬Ø¯Ùدة</a>';
+$lang['i_policy'] = 'ØªØµØ±ÙØ ACL Ù
بدئÙ';
+$lang['i_pol0'] = 'ÙÙÙÙ Ù
ÙØªÙØØ©Ø أ٠اÙÙØ±Ø§Ø¡Ø© ÙØ§ÙÙØªØ§Ø¨Ø© ÙØ§ÙتØÙ
ÙÙ Ù
سÙ
ÙØØ© ÙÙØ¬Ù
ÙØ¹';
+$lang['i_pol1'] = 'ÙÙÙ٠عاÙ
Ø©Ø Ø£Ù Ø§ÙÙØ±Ø§Ø¡Ø© ÙÙØ¬Ù
ÙØ¹ ÙÙÙ٠اÙÙØªØ§Ø¨Ø© ÙØ§ÙتØÙ
ÙÙ ÙÙÙ
شترÙÙ٠اÙÙ
سجÙÙÙ ÙÙØ·';
+$lang['i_pol2'] = 'ÙÙÙÙ Ù
غÙÙØ©Ø أ٠اÙÙØ±Ø§Ø¡Ø© ÙØ§ÙÙØªØ§Ø¨Ø© ÙØ§ÙتØÙ
ÙÙ ÙÙÙ
شترÙÙ٠اÙÙ
سجÙÙÙ ÙÙØ·';
+$lang['i_retry'] = 'إعادة اÙÙ
ØØ§ÙÙØ©';
Modified: site/trunk/www-root/wiki/inc/lang/ar/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ø§ÙØµÙØØ© Ù
ÙÙÙØ© ======
-
+====== Ø§ÙØµÙØØ© Ù
ÙÙÙØ© ======
+
ÙØ°Ù Ø§ÙØµÙØØ© Ù
ÙÙÙØ© ÙÙØªØØ±Ùر Ø¨ÙØ§Ø³Ø·Ø© Ù
ستخدÙ
أخر. عÙÙÙ Ø£Ù ØªÙØªØ¸Ø± ØØªÙ ÙÙØªÙÙ Ù
٠تعدÙÙØ§ØªØ© Ø£Ù ØªØªÙØªÙÙ Ù
دة اÙÙÙÙ.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== دخÙÙ ======
-
-Ø£ÙØª ÙØ³Øª Ù
سج٠دخÙÙÙ. Ø£Ø¯Ø®Ù Ø¨ÙØ§Ùات تسجÙÙÙ ÙÙØ¯Ø®ÙÙ.
+====== دخÙÙ ======
+
+Ø£ÙØª ÙØ³Øª Ù
سج٠دخÙÙÙ. Ø£Ø¯Ø®Ù Ø¨ÙØ§Ùات تسجÙÙÙ ÙÙØ¯Ø®ÙÙ.
ÙØ¬Ø¨ Ø£Ù ÙÙÙÙ Ù
سÙ
ÙØ ÙÙÙ
ØªØµÙØ بأستخداÙ
اÙÙÙÙÙ.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-تÙ
تغÙÙØ± Ø£Ù Ø£Ø¶Ø§ÙØ© ØµÙØØ© Ù٠دÙÙÙÙÙÙÙ. اÙÙÙ Ø§ÙØªÙاصÙÙ:
-
-Ø§ÙØªØ§Ø±ÙØ® : @DATE@
-اÙÙ
ØªØµÙØ : @BROWSER@
-عÙÙØ§Ù اÙÙIP : @IPADDRESS@
-أسÙ
Ø§ÙØ¬Ùاز : @HOSTNAME@
-اÙÙØ³Ø®Ø© اÙÙØ¯ÙÙ
Ø©: @OLDPAGE@
-اÙÙØ³Ø®Ø© Ø§ÙØ¬Ø¯Ùدة: @NEWPAGE@
-Ù
ÙØ®Øµ Ø§ÙØªØØ±Ùر: @SUMMARY@
-Ù
ستخدÙ
: @USER@
-
- at DIFF@
-
-
---
-تÙ
Ø£Ø±Ø³Ø§Ù ÙØ°Ù Ø§ÙØ±Ø³Ø§ÙØ© Ù
Ù Ø§ÙØ¯ÙÙÙÙÙÙ٠اÙÙ
ØªÙØ¬Ø¯Ø© ÙÙ
- at DOKUWIKIURL@
+تÙ
تغÙÙØ± Ø£Ù Ø£Ø¶Ø§ÙØ© ØµÙØØ© Ù٠دÙÙÙÙÙÙÙ. اÙÙÙ Ø§ÙØªÙاصÙÙ:
+
+Ø§ÙØªØ§Ø±ÙØ® : @DATE@
+اÙÙ
ØªØµÙØ : @BROWSER@
+عÙÙØ§Ù اÙÙIP : @IPADDRESS@
+أسÙ
Ø§ÙØ¬Ùاز : @HOSTNAME@
+اÙÙØ³Ø®Ø© اÙÙØ¯ÙÙ
Ø©: @OLDPAGE@
+اÙÙØ³Ø®Ø© Ø§ÙØ¬Ø¯Ùدة: @NEWPAGE@
+Ù
ÙØ®Øµ Ø§ÙØªØØ±Ùر: @SUMMARY@
+Ù
ستخدÙ
: @USER@
+
+ at DIFF@
+
+
+--
+تÙ
Ø£Ø±Ø³Ø§Ù ÙØ°Ù Ø§ÙØ±Ø³Ø§ÙØ© Ù
Ù Ø§ÙØ¯ÙÙÙÙÙÙ٠اÙÙ
ØªÙØ¬Ø¯Ø© ÙÙ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ar/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======ÙØ§ ÙÙØ¬Ø¯ ÙØ°Ø§ اÙÙ
ÙØ¶Ùع بعد======
-
-ÙÙØ¯ تابعت رابط ÙÙ
ÙØ¶Ùع ØºÙØ± Ù
ØªÙØ§Ø¬Ø¯ بعد. ÙÙ
ÙÙÙ Ø¥ÙØ´Ø§Ø¦Ø© Ø¨Ø§ÙØ¶Ø¹Ø· عÙ٠زر "Ø§ÙØ´ÙØ¡ ÙØ°Ù Ø§ÙØµÙØØ©".
+======ÙØ§ ÙÙØ¬Ø¯ ÙØ°Ø§ اÙÙ
ÙØ¶Ùع بعد======
+
+ÙÙØ¯ تابعت رابط ÙÙ
ÙØ¶Ùع ØºÙØ± Ù
ØªÙØ§Ø¬Ø¯ بعد. ÙÙ
ÙÙÙ Ø¥ÙØ´Ø§Ø¦Ø© Ø¨Ø§ÙØ¶Ø¹Ø· عÙ٠زر "Ø§ÙØ´ÙØ¡ ÙØ°Ù Ø§ÙØµÙØØ©".
Modified: site/trunk/www-root/wiki/inc/lang/ar/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======ÙØ§ ØªÙØ¬Ø¯ تÙ٠اÙÙØ³Ø®Ø©======
-
-اÙÙØ³Ø®Ø© اÙÙ
ختارة ÙÙØ³Øª Ù
ÙØ¬Ùدة. أسبخدÙ
زر "ÙØ³Ø® ÙØ¯ÙÙ
Ø©" ÙØ¹Ø±Ø¶ ÙØ§Ø¦Ù
Ø© باÙÙØ³Ø® اÙÙØ¯ÙÙ
Ø© Ù
Ù ÙØ°Ù Ø§ÙØµÙØØ©.
+======ÙØ§ ØªÙØ¬Ø¯ تÙ٠اÙÙØ³Ø®Ø©======
+
+اÙÙØ³Ø®Ø© اÙÙ
ختارة ÙÙØ³Øª Ù
ÙØ¬Ùدة. أسبخدÙ
زر "ÙØ³Ø® ÙØ¯ÙÙ
Ø©" ÙØ¹Ø±Ø¶ ÙØ§Ø¦Ù
Ø© باÙÙØ³Ø® اÙÙØ¯ÙÙ
Ø© Ù
Ù ÙØ°Ù Ø§ÙØµÙØØ©.
Modified: site/trunk/www-root/wiki/inc/lang/ar/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Ø£ÙÙØ§Ù @FULLNAME@!
-
-ÙØ§ ÙÙ Ù
عÙÙÙ
ات اÙÙ
ستخدÙ
ÙÙ @TITLE@ اÙÙ
ÙØ¬Ùدة عÙÙ Ø§ÙØ¹ÙÙØ§Ù @DOKUWIKIURL@
-
-أسÙ
اÙÙ
ستخدÙ
: @LOGIN@
-ÙÙÙ
Ø© Ø§ÙØ³Ø± : @PASSWORD@
-
---
-تÙ
Ø£Ø±Ø³Ø§Ù ÙØ°Ù Ø§ÙØ±Ø³Ø§ÙØ© Ù
٠دÙÙÙÙÙÙÙ
- at DOKUWIKIURL@
+Ø£ÙÙØ§Ù @FULLNAME@!
+
+ÙØ§ ÙÙ Ù
عÙÙÙ
ات اÙÙ
ستخدÙ
ÙÙ @TITLE@ اÙÙ
ÙØ¬Ùدة عÙÙ Ø§ÙØ¹ÙÙØ§Ù @DOKUWIKIURL@
+
+أسÙ
اÙÙ
ستخدÙ
: @LOGIN@
+ÙÙÙ
Ø© Ø§ÙØ³Ø± : @PASSWORD@
+
+--
+تÙ
Ø£Ø±Ø³Ø§Ù ÙØ°Ù Ø§ÙØ±Ø³Ø§ÙØ© Ù
٠دÙÙÙÙÙÙÙ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ar/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======عرض Ø§ÙØªØ¹Ø¯ÙÙØ§Øª======
-
-ÙØ°Ø§ عرض ÙÙ
ا Ø³ÙØµØ¨Ø عÙÙØ© ÙØµ Ø§ÙØµÙØØ©. ØªØ°ÙØ± Ø£Ù Ø§ÙØªØ¹Ø¯ÙÙØ§Øª **ÙÙ
تØÙظ** بعد!
+======عرض Ø§ÙØªØ¹Ø¯ÙÙØ§Øª======
+
+ÙØ°Ø§ عرض ÙÙ
ا Ø³ÙØµØ¨Ø عÙÙØ© ÙØµ Ø§ÙØµÙØØ©. ØªØ°ÙØ± Ø£Ù Ø§ÙØªØ¹Ø¯ÙÙØ§Øª **ÙÙ
تØÙظ** بعد!
Modified: site/trunk/www-root/wiki/inc/lang/ar/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Ø§ØØ¯Ø« Ø§ÙØªØºÙÙØ±Ø§Øª======
-
+======Ø§ØØ¯Ø« Ø§ÙØªØºÙÙØ±Ø§Øª======
+
تÙ
تعدÙÙ Ø§ÙØµÙØØ§Øª Ø§ÙØªØ§ÙÙØ© ØØ¯Ùثا.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== سج٠ÙÙ
ستخدÙ
Ø¬Ø¯ÙØ¯ ======
-
-Ø£Ù
ÙØ¦ Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØªØ§ÙÙØ© ÙØªØ³Ø¬ÙÙ ØØ³Ø§Ø¨ Ø¬Ø¯ÙØ¯ عÙ٠اÙÙÙÙÙ.
+====== سج٠ÙÙ
ستخدÙ
Ø¬Ø¯ÙØ¯ ======
+
+Ø£Ù
ÙØ¦ Ø§ÙØ¨ÙØ§ÙØ§Øª Ø§ÙØªØ§ÙÙØ© ÙØªØ³Ø¬ÙÙ ØØ³Ø§Ø¨ Ø¬Ø¯ÙØ¯ عÙ٠اÙÙÙÙÙ.
ØªØ£ÙØ¯ Ù
Ù ÙØªØ§Ø¨Ø© **Ø¨Ø±ÙØ¯ Ø¥ÙÙØªØ±ÙÙ٠صØÙØ** - سترس٠اÙÙÙ ÙÙÙ
Ø© سر Ø¬Ø¯ÙØ¯Ø©. أسÙ
Ø§ÙØ¯Ø®ÙÙ ÙØ¬Ø¨ Ø£Ù ÙÙÙÙ [[doku>wiki:pagename|أسÙ
ØµÙØØ©]] صØÙØ.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-======اÙÙØ³Ø® اÙÙØ¯ÙÙ
Ø©======
+======اÙÙØ³Ø® اÙÙØ¯ÙÙ
Ø©======
اÙÙØ³Ø® اÙÙØ¯ÙÙ
Ø© ÙÙØµÙØØ© Ø§ÙØØ§ÙÙØ©. ÙØ¥Ø³ØªØ¹Ø§Ø¯Ø© ÙØ³Ø®Ø© ÙØ¯ÙÙ
Ø©: Ø£Ø®ØªØ±ÙØ§ Ù
٠اÙÙ
Ø¹Ø±ÙØ¶Ø Ø«Ù
إضغط عÙ٠زر "Ø¹Ø¯Ù ÙØ°Ù Ø§ÙØµÙØØ©" ٠أØÙØ¸ÙØ§.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Ø¨ØØ«======
-
-ÙØªØ§Ø¦Ø¬ Ø§ÙØ¨ØØ« . Ø¥Ù ÙÙ
تجد Ù
ا ØªØ¨ØØ« عÙÙØ ÙÙ
ÙÙÙ Ø¥ÙØ´Ø§Ø¡ ØµÙØØ© Ø¬Ø¯ÙØ¯Ø© بعÙÙØ§Ù Ù
ا ØªØ¨ØØ« Ø¹ÙØ© Ø¨Ø§ÙØ¶ØºØ· عÙ٠زر "ØØ±Ø± ÙØ°Ù Ø§ÙØµÙØØ©".
-
+======Ø¨ØØ«======
+
+ÙØªØ§Ø¦Ø¬ Ø§ÙØ¨ØØ« . Ø¥Ù ÙÙ
تجد Ù
ا ØªØ¨ØØ« عÙÙØ ÙÙ
ÙÙÙ Ø¥ÙØ´Ø§Ø¡ ØµÙØØ© Ø¬Ø¯ÙØ¯Ø© بعÙÙØ§Ù Ù
ا ØªØ¨ØØ« Ø¹ÙØ© Ø¨Ø§ÙØ¶ØºØ· عÙ٠زر "ØØ±Ø± ÙØ°Ù Ø§ÙØµÙØØ©".
+
=====ÙØªØ§Ø¦Ø¬ Ø§ÙØ¨ØØ«=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**ÙØ°Ù ÙØ³Ø®Ø© ÙØ¯ÙÙ
Ø© Ù
Ù Ø§ÙØµÙØØ©!**
+**ÙØ°Ù ÙØ³Ø®Ø© ÙØ¯ÙÙ
Ø© Ù
Ù Ø§ÙØµÙØØ©!**
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ar/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/ar/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Ø£ÙÙØ§Ù!
-
-Ø§ÙØµÙØØ© @PAGE@ ÙÙ @TITLE@ ÙÙÙ٠تÙ
تعدÙÙÙØ§.
-ÙØ§ ÙÙ Ø§ÙØªØ¹Ø¯ÙÙØ§Øª:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-ÙØ¥Ùغاء إشتراÙÙ Ù٠تÙÙ Ø§ÙØµÙØØ© أدخ٠عÙ٠اÙÙÙÙ٠عÙÙ Ø§ÙØ¹ÙÙØ§Ù
- at DOKUWIKIURL@ Ø«Ù
Ø£Ø°ÙØ¨ اÙÙ
- at NEWPAGE@
-٠أختار 'Ø¥ÙØºØ§Ø¡ أشتراÙÙ'.
-
---
-تÙ
Ø§Ø±Ø³Ø§Ù ÙØ°Ù Ø§ÙØ±Ø³Ø§ÙØ© Ù
٠دÙÙÙÙÙÙÙ
- at DOKUWIKIURL@
+Ø£ÙÙØ§Ù!
+
+Ø§ÙØµÙØØ© @PAGE@ ÙÙ @TITLE@ ÙÙÙ٠تÙ
تعدÙÙÙØ§.
+ÙØ§ ÙÙ Ø§ÙØªØ¹Ø¯ÙÙØ§Øª:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+ÙØ¥Ùغاء إشتراÙÙ Ù٠تÙÙ Ø§ÙØµÙØØ© أدخ٠عÙ٠اÙÙÙÙ٠عÙÙ Ø§ÙØ¹ÙÙØ§Ù
+ at DOKUWIKIURL@ Ø«Ù
Ø£Ø°ÙØ¨ اÙÙ
+ at NEWPAGE@
+٠أختار 'Ø¥ÙØºØ§Ø¡ أشتراÙÙ'.
+
+--
+تÙ
Ø§Ø±Ø³Ø§Ù ÙØ°Ù Ø§ÙØ±Ø³Ø§ÙØ© Ù
٠دÙÙÙÙÙÙÙ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ar/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ar/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ar/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======SPAM blocked======
-
-Your changes were **not** saved because it contains one or more blocked words.
-If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact
-the administrator of this Wiki.
-
+======SPAM blocked======
+
+Your changes were **not** saved because it contains one or more blocked words.
+If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact
+the administrator of this Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ÐдминиÑÑÑаÑÐ¸Ñ ======
-
+====== ÐдминиÑÑÑаÑÐ¸Ñ ======
+
ÐÐ¾Ð»Ñ Ð¼Ð¾Ð¶Ðµ да намеÑиÑе ÑпиÑÑк Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑки задаÑи в DokuWiki.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/bg/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Ðадни вÑÑзки ======
-
-Това е ÑпиÑÑк на ÑÑÑаниÑи коиÑо изглежда пÑепÑаÑÐ°Ñ Ð¾Ð±ÑаÑно кÑм ÑекÑÑаÑа
-ÑÑÑаниÑа.
+====== Ðадни вÑÑзки ======
+
+Това е ÑпиÑÑк на ÑÑÑаниÑи коиÑо изглежда пÑепÑаÑÐ°Ñ Ð¾Ð±ÑаÑно кÑм ÑекÑÑаÑа
+ÑÑÑаниÑа.
Modified: site/trunk/www-root/wiki/inc/lang/bg/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/bg/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ÐоÑÑÑпÑÑ Ð¾Ñказан======
-
-ÐÑмаÑе доÑÑаÑÑÑно пÑава да пÑодÑлжиÑе. Ðоже би ÑÑе забÑавили да влезеÑе?
-
+======ÐоÑÑÑпÑÑ Ð¾Ñказан======
+
+ÐÑмаÑе доÑÑаÑÑÑно пÑава да пÑодÑлжиÑе. Ðоже би ÑÑе забÑавили да влезеÑе?
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Разлики ======
-
-Това показва ÑазликиÑе Ð¼ÐµÐ¶Ð´Ñ Ð¸Ð·Ð±ÑанаÑа веÑÑÐ¸Ñ Ð½Ð° ÑÑÑаниÑаÑа и ÑекÑÑаÑа.
-
+====== Разлики ======
+
+Това показва ÑазликиÑе Ð¼ÐµÐ¶Ð´Ñ Ð¸Ð·Ð±ÑанаÑа веÑÑÐ¸Ñ Ð½Ð° ÑÑÑаниÑаÑа и ÑекÑÑаÑа.
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Ðе намеÑена ÑеÑнова ======
-
-ÐоÑледнаÑа ÑедакÑионна ÑеÑÐ¸Ñ Ð½Ð° Ñази ÑÑÑаниÑа не е завÑÑÑена пÑавилно.
-Dokuwiki авÑомаÑиÑно запазва ÑеÑнова по вÑеме на ÑабоÑа, коÑÑо може Ñега да
-използваÑе за да пÑодÑлжиÑе ÑедакÑиÑанеÑо Ñи. ÐÐ¾Ð»Ñ Ð¼Ð¾Ð¶Ðµ да видиÑе данниÑе
-коиÑо бÑÑ
а запазени Ð¾Ñ Ð¿Ð¾ÑледнаÑа ÑеÑиÑ.
-
-ÐÐ¾Ð»Ñ ÑеÑеÑе, дали иÑкаÑе да //recover// поÑледнаÑа Ñи ÑедакÑионна ÑеÑиÑ, да
-//delete// авÑомаÑиÑно запазенаÑа ÑеÑнова или да //cancel// ÑедакÑиÑÑа.
-
+====== Ðе намеÑена ÑеÑнова ======
+
+ÐоÑледнаÑа ÑедакÑионна ÑеÑÐ¸Ñ Ð½Ð° Ñази ÑÑÑаниÑа не е завÑÑÑена пÑавилно.
+Dokuwiki авÑомаÑиÑно запазва ÑеÑнова по вÑеме на ÑабоÑа, коÑÑо може Ñега да
+използваÑе за да пÑодÑлжиÑе ÑедакÑиÑанеÑо Ñи. ÐÐ¾Ð»Ñ Ð¼Ð¾Ð¶Ðµ да видиÑе данниÑе
+коиÑо бÑÑ
а запазени Ð¾Ñ Ð¿Ð¾ÑледнаÑа ÑеÑиÑ.
+
+ÐÐ¾Ð»Ñ ÑеÑеÑе, дали иÑкаÑе да //recover// поÑледнаÑа Ñи ÑедакÑионна ÑеÑиÑ, да
+//delete// авÑомаÑиÑно запазенаÑа ÑеÑнова или да //cancel// ÑедакÑиÑÑа.
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-РедакÑиÑайÑе ÑÑÑаниÑаÑа и наÑиÑнеÑе ''ÐапиÑ''. ÐогледнеÑе [[wiki:syntax]] за
-Wiki ÑинÑакÑиÑ. ÐÐ¾Ð»Ñ ÑедакÑиÑайÑе ÑÑÑаниÑаÑа, Ñамо ако може да Ñ **подобÑиÑе**. Ðко
-иÑкаÑе да пÑобваÑе Ñазни неÑа, наÑÑеÑе Ñе да пÑавиÑе пÑÑвиÑе Ñи ÑÑÑпки в
-[[playground:playground|пÑÑÑÑника]].
-
+РедакÑиÑайÑе ÑÑÑаниÑаÑа и наÑиÑнеÑе ''ÐапиÑ''. ÐогледнеÑе [[wiki:syntax]] за
+Wiki ÑинÑакÑиÑ. ÐÐ¾Ð»Ñ ÑедакÑиÑайÑе ÑÑÑаниÑаÑа, Ñамо ако може да Ñ **подобÑиÑе**. Ðко
+иÑкаÑе да пÑобваÑе Ñазни неÑа, наÑÑеÑе Ñе да пÑавиÑе пÑÑвиÑе Ñи ÑÑÑпки в
+[[playground:playground|пÑÑÑÑника]].
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**ÐаÑедили ÑÑе ÑÑаÑа веÑÑÐ¸Ñ Ð½Ð° докÑменÑа!** Ðко Ñ Ð·Ð°Ð¿Ð°Ð·Ð¸Ñе Ñе ÑÑздадеÑе
-нова ÑедакÑÐ¸Ñ Ð½Ð° Ñези данни.
+**ÐаÑедили ÑÑе ÑÑаÑа веÑÑÐ¸Ñ Ð½Ð° докÑменÑа!** Ðко Ñ Ð·Ð°Ð¿Ð°Ð·Ð¸Ñе Ñе ÑÑздадеÑе
+нова ÑедакÑÐ¸Ñ Ð½Ð° Ñези данни.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/bg/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐÐ½Ð´ÐµÐºÑ ======
-
-Това е ÑпиÑÑк на вÑиÑки доÑÑÑпни ÑÑÑаниÑи подÑедени по [[doku>wiki:namespaces|именнипÑоÑÑÑанÑÑва]].
-
+====== ÐÐ½Ð´ÐµÐºÑ ======
+
+Това е ÑпиÑÑк на вÑиÑки доÑÑÑпни ÑÑÑаниÑи подÑедени по [[doku>wiki:namespaces|именнипÑоÑÑÑанÑÑва]].
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,25 +1,25 @@
-<p>Тази ÑÑÑаниÑа помага пÑи пÑÑвонаÑална инÑÑалаÑÐ¸Ñ Ð¸ наÑÑÑойка на
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. ÐовеÑе инÑоÑмаÑиÑ
-за Ñози инÑÑалаÑÐ¾Ñ Ðµ доÑÑÑпна в неговаÑа ÑобÑÑвена
-<a href="http://wiki.splitbrain.org/wiki:installer">докÑменÑаÑиÑ</a>.</p>
-
-<p>Dokuwiki използва обикновени Ñайлове за Ñ
ÑанилиÑе на Ñики ÑÑÑаниÑиÑе и дÑÑга
-инÑоÑмаÑÐ¸Ñ ÑвÑÑзана Ñ Ñези ÑÑÑаниÑи(пÑимеÑно каÑÑинки, ÑÑÑÑене, ÑÑаÑи веÑÑии, Ñ.н.).
-Ðа да използваÑе ÑÑпеÑно DokuWiki
-<strong>ÑÑÑбва</strong> да имаÑе доÑÑÑп за пиÑане в диÑекÑоÑииÑе коиÑо ÑÑдÑÑÐ¶Ð°Ñ Ñези
-Ñайлове. Този инÑÑалаÑÐ¾Ñ Ð½Ñма вÑзможноÑÑи да наÑÑÑойва пÑаваÑа на диÑекÑоÑииÑе.
-Това обикновено ÑÑÑбва да бÑде напÑавено диÑекÑно Ð¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸ÑÑ Ñед или ако
-използваÑе Ñ
оÑÑинг - пÑез FTP или конÑÑол панела на Ñ
оÑÑа(пÑимеÑно cPanel).</p>
-
-<p>Този инÑÑалаÑÐ¾Ñ Ñе наÑÑÑои ваÑаÑа DokuWiki конÑигÑÑаÑÐ¸Ñ Ð·Ð°
-<acronym title="access control list">ACL</acronym>, коеÑо на
-Ñвой Ñед Ñе позволи на админиÑÑÑаÑоÑа да влезе и да има доÑÑÑп
-до админиÑÑÑаÑоÑÑкоÑо Ð¼ÐµÐ½Ñ Ð² DokuWiki за инÑÑалиÑане на плÑгини, конÑÑол
-на поÑÑебиÑели, ÑпÑавление да доÑÑÑп до Ñики ÑÑÑаниÑи и пÑомÑна на наÑÑÑойкиÑе
-Това не е необÑ
одимо на DokuWiki да ÑабоÑи, но Ñе напÑави DokuWiki по-леÑно за
-админиÑÑÑиÑане.</p>
-
-<p>ÐпиÑниÑе поÑÑебиÑели или поÑÑебиÑелиÑе ÑÑÑ ÑпеÑиални изиÑкваниÑ
-кÑм наÑÑÑойкиÑе може да Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ Ñези вÑÑзки за деÑайли ÑвÑÑзани Ñ
-<a href="http://wiki.splitbrain.org/wiki:install">инÑÑÑÑкÑии за инÑÑалаÑиÑ</a>
-и <a href="http://wiki.splitbrain.org/wiki:config">наÑÑÑойка</a>.</p>
+<p>Тази ÑÑÑаниÑа помага пÑи пÑÑвонаÑална инÑÑалаÑÐ¸Ñ Ð¸ наÑÑÑойка на
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. ÐовеÑе инÑоÑмаÑиÑ
+за Ñози инÑÑалаÑÐ¾Ñ Ðµ доÑÑÑпна в неговаÑа ÑобÑÑвена
+<a href="http://wiki.splitbrain.org/wiki:installer">докÑменÑаÑиÑ</a>.</p>
+
+<p>Dokuwiki използва обикновени Ñайлове за Ñ
ÑанилиÑе на Ñики ÑÑÑаниÑиÑе и дÑÑга
+инÑоÑмаÑÐ¸Ñ ÑвÑÑзана Ñ Ñези ÑÑÑаниÑи(пÑимеÑно каÑÑинки, ÑÑÑÑене, ÑÑаÑи веÑÑии, Ñ.н.).
+Ðа да използваÑе ÑÑпеÑно DokuWiki
+<strong>ÑÑÑбва</strong> да имаÑе доÑÑÑп за пиÑане в диÑекÑоÑииÑе коиÑо ÑÑдÑÑÐ¶Ð°Ñ Ñези
+Ñайлове. Този инÑÑалаÑÐ¾Ñ Ð½Ñма вÑзможноÑÑи да наÑÑÑойва пÑаваÑа на диÑекÑоÑииÑе.
+Това обикновено ÑÑÑбва да бÑде напÑавено диÑекÑно Ð¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸ÑÑ Ñед или ако
+използваÑе Ñ
оÑÑинг - пÑез FTP или конÑÑол панела на Ñ
оÑÑа(пÑимеÑно cPanel).</p>
+
+<p>Този инÑÑалаÑÐ¾Ñ Ñе наÑÑÑои ваÑаÑа DokuWiki конÑигÑÑаÑÐ¸Ñ Ð·Ð°
+<acronym title="access control list">ACL</acronym>, коеÑо на
+Ñвой Ñед Ñе позволи на админиÑÑÑаÑоÑа да влезе и да има доÑÑÑп
+до админиÑÑÑаÑоÑÑкоÑо Ð¼ÐµÐ½Ñ Ð² DokuWiki за инÑÑалиÑане на плÑгини, конÑÑол
+на поÑÑебиÑели, ÑпÑавление да доÑÑÑп до Ñики ÑÑÑаниÑи и пÑомÑна на наÑÑÑойкиÑе
+Това не е необÑ
одимо на DokuWiki да ÑабоÑи, но Ñе напÑави DokuWiki по-леÑно за
+админиÑÑÑиÑане.</p>
+
+<p>ÐпиÑниÑе поÑÑебиÑели или поÑÑебиÑелиÑе ÑÑÑ ÑпеÑиални изиÑкваниÑ
+кÑм наÑÑÑойкиÑе може да Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ Ñези вÑÑзки за деÑайли ÑвÑÑзани Ñ
+<a href="http://wiki.splitbrain.org/wiki:install">инÑÑÑÑкÑии за инÑÑалаÑиÑ</a>
+и <a href="http://wiki.splitbrain.org/wiki:config">наÑÑÑойка</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/bg/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,202 +1,202 @@
-<?php
-/**
- * Bulgarian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Nikolay Vladimirov <nikolay at vladimiroff.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['btn_edit'] = 'РедакÑиÑане';
-$lang['btn_source'] = 'Ðоказване на кода на ÑÑÑаниÑаÑа';
-$lang['btn_show'] = 'Ðоказване на ÑÑÑаниÑаÑа';
-$lang['btn_create'] = 'СÑздаване на ÑÑÑаниÑаÑа';
-$lang['btn_search'] = 'ТÑÑÑене';
-$lang['btn_save'] = 'ÐапиÑ';
-$lang['btn_preview'] = 'ÐÑеглед';
-$lang['btn_top'] = 'ÐÑм наÑалоÑо';
-$lang['btn_newer'] = '<< по-нови';
-$lang['btn_older'] = 'по-ÑÑаÑи >>';
-$lang['btn_revs'] = 'ÐÑÑоÑиÑ';
-$lang['btn_recent'] = 'ÐоÑледни пÑомени';
-$lang['btn_upload'] = 'ÐаÑване';
-$lang['btn_cancel'] = 'ÐÑказ';
-$lang['btn_index'] = 'ÐндекÑ';
-$lang['btn_secedit'] = 'РедакÑиÑане';
-$lang['btn_login'] = 'ÐÑ
од';
-$lang['btn_logout'] = 'ÐзÑ
од';
-$lang['btn_admin'] = 'ÐаÑÑÑойки';
-$lang['btn_update'] = 'ÐбновÑване';
-$lang['btn_delete'] = 'ÐзÑÑиване';
-$lang['btn_back'] = 'Ðазад';
-$lang['btn_backlink'] = 'ÐбÑаÑни вÑÑзки';
-$lang['btn_backtomedia'] = 'Ðазад кÑм Ð¸Ð·Ð±Ð¾Ñ Ð½Ð° медиен Ñайл';
-$lang['btn_subscribe'] = 'ÐбониÑане за ÐÑомени';
-$lang['btn_unsubscribe'] = 'ÐÑпиÑване Ð¾Ñ ÐÑомени';
-$lang['btn_profile'] = 'ÐÑоÑил';
-$lang['btn_reset'] = 'ÐзÑиÑÑване';
-$lang['btn_resendpwd'] = 'ÐÑаÑане на нова паÑола';
-$lang['btn_draft'] = 'РедакÑиÑане на ÑеÑнова';
-$lang['btn_recover'] = 'ÐÑзÑÑановÑване на ÑеÑнова';
-$lang['btn_draftdel'] = 'ÐзÑÑиване на ÑеÑнова';
-$lang['loggedinas'] = 'Ðлезли ÑÑе каÑо';
-$lang['user'] = 'ÐоÑÑебиÑел';
-$lang['pass'] = 'ÐаÑола';
-$lang['newpass'] = 'Ðова паÑола';
-$lang['oldpass'] = 'ÐоÑвÑÑждение на ÑекÑÑа паÑола';
-$lang['passchk'] = 'oÑново';
-$lang['remember'] = 'Ðапомни ме';
-$lang['fullname'] = 'ÐÑлно име';
-$lang['email'] = 'Ð-ÐоÑа';
-$lang['register'] = 'РегиÑÑÑаÑиÑ';
-$lang['profile'] = 'ÐоÑÑебиÑелÑки пÑоÑил';
-$lang['badlogin'] = 'ÐоÑÑебиÑелÑкоÑо име или паÑолаÑа Ñа гÑеÑни';
-$lang['minoredit'] = 'Ðеки пÑомени';
-$lang['draftdate'] = 'ЧеÑноваÑа бе авÑомаÑиÑно запиÑана на';
-$lang['regmissing'] = 'ÐолÑ, попÑлнеÑе вÑиÑки полеÑа.';
-$lang['reguexists'] = 'ÐоÑÑебиÑел Ñ Ñакова име веÑе ÑÑÑеÑÑвÑва.';
-$lang['regsuccess'] = 'ÐоÑÑебиÑелÑÑ Ð±Ðµ ÑÑздаден и паÑолаÑа е пÑаÑена по елекÑÑоннаÑа поÑа.';
-$lang['regsuccess2'] = 'ÐоÑÑебиÑелÑÑ Ð±Ðµ ÑÑздаден.';
-$lang['regmailfail'] = 'Ðзглежда, Ñе има пÑоблем Ñ Ð¿ÑаÑанеÑо на пиÑмоÑо Ñ Ð¿Ð°ÑолаÑа. ÐолÑ, ÑвÑÑжеÑе Ñе Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑа.';
-$lang['regbadmail'] = 'ÐадениÑÑ Ð°Ð´ÑÐµÑ Ð¸Ð·Ð³Ð»ÐµÐ¶Ð´Ð° невалиден, ако миÑлиÑе, Ñе Ñова е гÑеÑка - ÑвÑÑжеÑе Ñе ÑÑÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑа.';
-$lang['regbadpass'] = 'ÐвеÑе дадени паÑоли не Ñа иденÑиÑни, Ð¼Ð¾Ð»Ñ Ð¾Ð¿Ð¸ÑайÑе оÑново';
-$lang['regpwmail'] = 'DokuWiki parola';
-$lang['reghere'] = 'ÐÑе оÑе нÑмаÑе пÑоÑил? ÐÑоÑÑо Ñи напÑавеÑе';
-$lang['profna'] = 'Това Ñики не поддÑÑжа пÑомÑна на пÑоÑила';
-$lang['profnochange'] = 'ÐÑма пÑомени.';
-$lang['profnoempty'] = 'ÐÑазни име или елекÑÑонна поÑа не Ñа позволени.';
-$lang['profchanged'] = 'ÐоÑÑебиÑелÑкиÑÑ Ð¿ÑоÑил бе ÑÑпеÑно обновен.';
-$lang['pwdforget'] = 'ÐабÑавили ÑÑе Ñи паÑолаÑа? ÐземеÑе нова';
-$lang['resendna'] = 'Това Ñики не поддÑÑжа повÑоÑно пÑаÑане на паÑола';
-$lang['resendpwd'] = 'ÐÑаÑане нова паÑола за';
-$lang['resendpwdmissing'] = 'ÐолÑ, попÑлнеÑе вÑиÑки полеÑа.';
-$lang['resendpwdnouser'] = 'ÐоÑÑебиÑелÑÑ Ð½Ðµ бе намеÑен в базаÑа данни.';
-$lang['resendpwdbadauth'] = 'Този код за поÑвÑÑждение не е валиден. ÐÑовеÑеÑе дали ÑÑе използвали ÑелиÑÑ Ð°Ð´ÑÐµÑ Ð·Ð° поÑвÑÑждение.';
-$lang['resendpwdconfirm'] = 'ÐдÑÐµÑ Ð·Ð° поÑвÑÑждение бе пÑаÑен по елекÑÑоннаÑа поÑа.';
-$lang['resendpwdsuccess'] = 'ÐаÑолаÑа ви бе пÑаÑена на елекÑÑоннаÑа поÑа.';
-$lang['txt_upload'] = 'ÐзбеÑеÑе Ñайл за каÑване ';
-$lang['txt_filename'] = 'ÐаÑване каÑо(незадÑлжиÑелно)';
-$lang['txt_overwrt'] = 'ÐÐ°Ð¿Ð¸Ñ Ð²ÑÑÑ
Ñ ÑÑÑеÑÑвÑÐ²Ð°Ñ Ñайл';
-$lang['lockedby'] = 'РмоменÑа е заклÑÑено оÑ';
-$lang['lockexpire'] = 'ÐаÑваÑÑнеÑо изÑиÑа в';
-$lang['willexpire'] = 'ÐаÑваÑÑнеÑо на ÑÑÑаниÑаÑа за ÑедакÑиÑане изÑиÑа Ñлед минÑÑа.\nÐа да избегнеÑе пÑоÑивоÑеÑÐ¸Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñе бÑÑонÑÑ, за да ÑеÑÑаÑÑиÑаÑе бÑоÑÑÑÑ Ð·Ð° заÑваÑÑне.';
-$lang['notsavedyet'] = 'ÐезапазениÑе пÑомени Ñе бÑÐ´Ð°Ñ Ð·Ð°Ð³Ñбени.\nÐÑкаÑе ли да пÑодÑлжиÑе?';
-$lang['rssfailed'] = 'ÐмаÑе гÑеÑка пÑи вземанеÑо на Ñози изÑоÑник(feed): ';
-$lang['nothingfound'] = 'ÐиÑо не бе намеÑено.';
-$lang['mediaselect'] = 'Ðедийни Ñайлове';
-$lang['fileupload'] = 'ÐаÑване на медийни Ñайлове';
-$lang['uploadsucc'] = 'ÐаÑванеÑо бе ÑÑпеÑно';
-$lang['uploadfail'] = 'ÐаÑванеÑо бе неÑÑпеÑно.Ðоже би гÑеÑни пÑава?';
-$lang['uploadwrong'] = 'ÐаÑванеÑо бе оÑказано. Това Ñайлово ÑазÑиÑение е забÑанено!';
-$lang['uploadexist'] = 'ФайлÑÑ Ð²ÐµÑе ÑÑÑеÑÑвÑва. ÐиÑо не бе напÑавено.';
-$lang['uploadbadcontent'] = 'ÐаÑеноÑо ÑÑдÑÑжание на ÑÑоÑвеÑÑÑва на Ñайлово ÑазÑиÑение %s .';
-$lang['uploadspam'] = 'ÐаÑванеÑо бе блокиÑано Ð¾Ñ ÑеÑниÑÑ ÑпиÑÑк за Ñпам.';
-$lang['uploadxss'] = 'ÐаÑванеÑо бе блокиÑано, заÑади вÑзможно обидно ÑÑдÑÑжание.';
-$lang['deletesucc'] = 'ФайлÑÑ "%s" бе изÑÑиÑ.';
-$lang['deletefail'] = '"%s" не бе изÑÑиÑ, пÑовеÑеÑе пÑаваÑа';
-$lang['mediainuse'] = 'ФайлÑÑ "%s" не бе изÑÑÐ¸Ñ - вÑе оÑе Ñе ползва.';
-$lang['namespaces'] = 'ÐменнипÑоÑÑÑанÑва';
-$lang['mediafiles'] = 'ÐоÑÑÑпни Ñайлове в';
-$lang['js']['keepopen'] = 'ÐадÑÑжане на пÑозоÑеÑа оÑвоÑен пÑи избоÑ';
-$lang['js']['hidedetails'] = 'СкÑиване на деÑайлиÑе';
-$lang['mediausage'] = 'ÐзползвайÑе ÑледниÑÑ ÑинÑакÑÐ¸Ñ Ð·Ð° да ÑпоменеÑе ÑайлÑÑ:';
-$lang['mediaview'] = 'ÐÑеглед на оÑигиналниÑÑ Ñайл';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'ÐаÑеÑе Ñайл в ÑекÑÑоÑо именнопÑоÑÑÑанÑÑво ÑÑк. Ðа да ÑÑздадеÑе подименнипÑоÑÑÑанÑÑва, добавеÑе ги в наÑалоÑо на "ÐаÑи каÑо" име на Ñайл Ñазделени Ð¾Ñ Ð´Ð²Ð¾ÐµÑоÑие.';
-$lang['mediaextchange'] = 'РазÑиÑениеÑо на ÑайлÑÑ Ð±Ðµ Ñменено Ð¾Ñ .%s на .%s!';
-$lang['reference'] = 'References for';
-$lang['ref_inuse'] = 'ФайлÑÑ Ð½Ðµ може да бÑде изÑÑÐ¸Ñ Ð·Ð°ÑоÑо вÑе оÑе Ñе ползва Ð¾Ñ ÑледниÑе ÑÑÑаниÑи:';
-$lang['ref_hidden'] = 'ÐÑкои пÑепÑаÑки Ñа кÑм ÑÑÑаниÑи, коиÑо нÑмаÑе пÑава да ÑеÑеÑе';
-$lang['hits'] = 'СÑвпадениÑ';
-$lang['quickhits'] = 'СÑвпадаÑи имена на ÑÑÑаниÑи';
-$lang['toc'] = 'СÑдÑÑжание';
-$lang['current'] = 'ÑекÑÑо';
-$lang['yours'] = 'ÐаÑаÑа веÑÑиÑ';
-$lang['diff'] = 'пÑеглед на ÑазликиÑе Ñ ÑекÑÑаÑа веÑÑиÑ';
-$lang['line'] = 'Ред';
-$lang['breadcrumb'] = 'Следа';
-$lang['youarehere'] = 'Ðие ÑÑе ÑÑк';
-$lang['lastmod'] = 'ÐоÑледна пÑомÑна';
-$lang['by'] = 'оÑ';
-$lang['deleted'] = 'изÑÑиване';
-$lang['created'] = 'ÑÑздаване';
-$lang['restored'] = 'ÑÑаÑаÑа веÑÑÐ¸Ñ Ð²ÑзÑÑановена';
-$lang['external_edit'] = 'вÑнÑна ÑедакÑиÑ';
-$lang['summary'] = 'ÐбобÑение';
-$lang['mail_newpage'] = 'dobavena stranica:';
-$lang['mail_changed'] = 'promenenta stranica:';
-$lang['mail_new_user'] = 'Nov potrebitel:';
-$lang['mail_upload'] = 'kachen fail:';
-$lang['nosmblinks'] = 'ÐÑÑзкиÑе кÑм Windows shares ÑабоÑÑÑ Ñамо под Internet Explorer.\nÐожеÑе да копиÑаÑе и поÑÑавиÑе вÑÑзкаÑа.';
-$lang['qb_alert'] = 'ÐÐ¾Ð»Ñ Ð²ÑведеÑе ÑекÑÑ Ð·Ð° ÑоÑмаÑиÑане.\nЩе бÑде добавен в кÑÐ°Ñ Ð½Ð° докÑменÑа.';
-$lang['qb_bold'] = 'ÐолÑÑÐµÑ ÑекÑÑ';
-$lang['qb_italic'] = 'ÐÑÑÑив ÑекÑÑ';
-$lang['qb_underl'] = 'ÐодÑеÑÑан ÑекÑÑ';
-$lang['qb_code'] = 'Ðод';
-$lang['qb_strike'] = 'ÐаÑеÑÐºÐ½Ð°Ñ ÑекÑÑ';
-$lang['qb_h1'] = 'Ðаглавие ниво 1';
-$lang['qb_h2'] = 'Ðаглавие ниво 2';
-$lang['qb_h3'] = 'Ðаглавие ниво 3';
-$lang['qb_h4'] = 'Ðаглавие ниво 4';
-$lang['qb_h5'] = 'Ðаглавие ниво 5';
-$lang['qb_link'] = 'ÐÑÑÑеÑна пÑепÑаÑка';
-$lang['qb_extlink'] = 'ÐÑнÑна пÑепÑаÑка';
-$lang['qb_hr'] = 'ХоÑизонÑална линиÑ';
-$lang['qb_ol'] = 'ÐодÑеден ÑпиÑÑк';
-$lang['qb_ul'] = 'ÐеподÑеден ÑпиÑÑк';
-$lang['qb_media'] = 'ÐобавÑне на каÑÑинки и дÑÑги Ñайлове';
-$lang['qb_sig'] = 'ÐмÑкване на подпиÑ';
-$lang['qb_smileys'] = 'УÑмивÑиÑи';
-$lang['qb_chars'] = 'СпеÑиални знаÑи';
-$lang['del_confirm'] = 'Ðа бÑÐ´Ð°Ñ Ð»Ð¸ изÑÑиÑи избÑаниÑе елеменÑи?';
-$lang['admin_register'] = 'ÐобабÑне на нов поÑÑебиÑел';
-$lang['metaedit'] = 'РедакÑиÑане на меÑаданниÑе';
-$lang['metasaveerr'] = 'ÐапазванеÑо на меÑаданниÑе не бе ÑÑпеÑно';
-$lang['metasaveok'] = 'ÐеÑаданниÑе запазени';
-$lang['img_backto'] = 'Ðазад кÑм';
-$lang['img_title'] = 'Ðаглавие';
-$lang['img_caption'] = 'ÐпиÑание';
-$lang['img_date'] = 'ÐаÑа';
-$lang['img_fname'] = 'Ðме на Ñайл';
-$lang['img_fsize'] = 'РазмеÑ';
-$lang['img_artist'] = 'ФоÑогÑаÑ';
-$lang['img_copyr'] = 'ÐопиÑайÑ';
-$lang['img_format'] = 'ФоÑмаÑ';
-$lang['img_camera'] = 'ÐамеÑа';
-$lang['img_keywords'] = 'ÐлÑÑови дÑми';
-$lang['subscribe_success'] = '%s бе добавен кÑм абонаменÑа за %s';
-$lang['subscribe_error'] = 'ÐмаÑе гÑеÑка пÑи добавÑнеÑо на абонаменÑа на %s за %s';
-$lang['subscribe_noaddress'] = 'ÐÑма адÑÐµÑ ÑвÑÑзан Ñ Ð¿Ð¾ÑÑебиÑелÑÑ,не може да Ñе абониÑаÑе';
-$lang['unsubscribe_success'] = 'ÐбонаменÑÑÑ %s бе пÑемаÑ
Ð½Ð°Ñ Ð¾Ñ ÑпиÑÑка за %s';
-$lang['unsubscribe_error'] = 'ÐмаÑе гÑеÑка пÑи ÑпиÑанеÑо на абонаменÑа на %s Ð¾Ñ ÑпиÑÑка %s';
-$lang['authmodfailed'] = 'ÐоÑа наÑÑÑойка на опознаванеÑо. ÐолÑ, ÑведомеÑе админиÑÑÑаÑоÑа.';
-$lang['authtempfail'] = 'ÐпознаванеÑо на поÑÑебиÑелиÑе е вÑеменно недоÑÑÑпно. Ðко Ñова пÑодÑлжи дÑлго, Ð¼Ð¾Ð»Ñ ÑведомеÑе админиÑÑÑаÑоÑа.';
-$lang['i_chooselang'] = 'ÐÐ·Ð±Ð¾Ñ Ð½Ð° език';
-$lang['i_installer'] = 'ÐнÑÑалаÑÐ¾Ñ Ð½Ð° DokuWiki';
-$lang['i_wikiname'] = 'Ðме на ÑикиÑо ';
-$lang['i_enableacl'] = 'ÐклÑÑване на ÑпиÑÑÑи за доÑÑÑп(ACL) (пÑепоÑÑÑиÑелно)';
-$lang['i_superuser'] = 'СÑпеÑпоÑÑебиÑел';
-$lang['i_problems'] = 'ÐнÑÑалаÑоÑа намеÑи пÑоблеми Ñказани по-долÑ. Ðе може да пÑодÑлжиÑе докаÑо не ги опÑавиÑе';
-$lang['i_modified'] = 'ÐоÑади меÑки за ÑигÑÑноÑÑ Ñози ÑкÑÐ¸Ð¿Ñ Ñе ÑабоÑи Ñамо Ñ Ð½Ð¾Ð²Ð° и непÑоменена Dokuwiki инÑÑалаÑиÑ.
- ТÑÑбва или да ÑазаÑÑ
ивиÑаÑе оÑново ÑайловеÑе Ð¾Ñ Ð´ÑÑпнаÑÐ¸Ñ Ð¿Ð°ÐºÐµÑ Ð¸Ð»Ð¸ да Ñе поÑÑвеÑваÑе Ñ Ð¿ÑлниÑе
- <a href="http://wiki.splitbrain.org/wiki:install">ÐнÑÑÑÑкÑии за инÑÑалаÑÐ¸Ñ Ð½Ð° Dokuwiki </a>';
-$lang['i_funcna'] = 'PHP ÑÑнкÑиÑÑа <code>%s</code> не е доÑÑÑпна. Ðоже би доÑÑавÑика на Ñ
оÑÑинг Ñ Ðµ изклÑÑил';
-$lang['i_phpver'] = 'ÐаÑаÑа PHP веÑÑÐ¸Ñ <code>%s</code> е по-ÑÑаÑа Ð¾Ñ Ð½ÑжнаÑа <code>%s</code>. ТÑÑбва да обновиÑе ваÑаÑа PHP инÑÑалаÑиÑ.';
-$lang['i_permfail'] = '<code>%s</code> не е доÑÑÑпна за пиÑане Ð¾Ñ DokuWiki. ТÑÑбва да пÑомениÑе наÑÑÑойкиÑе за доÑÑÑп до диÑекÑоÑиÑÑа!';
-$lang['i_confexists'] = '<code>%s</code> веÑе ÑÑÑеÑÑвÑва';
-$lang['i_writeerr'] = '<code>%s</code> не можа да бÑде ÑÑздаден. ТÑÑбва да пÑовеÑиÑе пÑаваÑа на диÑекÑоÑиÑÑа/Ñайла за доÑÑÑп и да ÑÑздадеÑе ÑайлÑÑ ÑÑÑно';
-$lang['i_badhash'] = 'неÑÐ°Ð·Ð¿Ð¾Ð·Ð½Ð°Ñ Ð¸Ð»Ð¸ пÑоменен dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - непозволена или пÑазна ÑÑойноÑÑ';
-$lang['i_success'] = 'ÐаÑÑÑойкаÑа пÑиклÑÑи ÑÑпеÑно. Ðоже да ÑÑздадеÑе ÑайлÑÑ install.php Ñега. ÐÑодÑлжеÑе кÑм
- <a href="doku.php">Ðово Ðи DokuWiki</a>.';
-$lang['i_failure'] = 'ÐмаÑе гÑеÑки пÑи запиÑа на ÑайловеÑе Ñ Ð½Ð°ÑÑÑойки. Ðоже да ÑÑÑбва да ги ÑедакÑиÑаÑе ÑÑÑно
- може да използваÑе <a href="doku.php">Ðово Ðи DokuWiki</a>.';
-$lang['i_policy'] = 'ÐÑÑвонаÑална полиÑика доÑÑÑп(ACL policy)';
-$lang['i_pol0'] = 'ÐÑвоÑено Уики (ÑеÑене, пиÑане, каÑване Ð¾Ñ Ð²ÑиÑки)';
-$lang['i_pol1'] = 'ÐÑблиÑно Уики (ÑеÑене Ð¾Ñ Ð²ÑиÑки, пиÑане и каÑване Ð¾Ñ ÑегиÑÑÑиÑани поÑÑебиÑели)';
-$lang['i_pol2'] = 'ÐаÑвоÑено Wiki (ÑеÑене, пиÑане, каÑване Ñамо Ð¾Ñ ÑегиÑÑÑиÑани поÑÑебиÑели)';
-$lang['i_retry'] = 'ÐÑново';
+<?php
+/**
+ * Bulgarian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Nikolay Vladimirov <nikolay at vladimiroff.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['btn_edit'] = 'РедакÑиÑане';
+$lang['btn_source'] = 'Ðоказване на кода на ÑÑÑаниÑаÑа';
+$lang['btn_show'] = 'Ðоказване на ÑÑÑаниÑаÑа';
+$lang['btn_create'] = 'СÑздаване на ÑÑÑаниÑаÑа';
+$lang['btn_search'] = 'ТÑÑÑене';
+$lang['btn_save'] = 'ÐапиÑ';
+$lang['btn_preview'] = 'ÐÑеглед';
+$lang['btn_top'] = 'ÐÑм наÑалоÑо';
+$lang['btn_newer'] = '<< по-нови';
+$lang['btn_older'] = 'по-ÑÑаÑи >>';
+$lang['btn_revs'] = 'ÐÑÑоÑиÑ';
+$lang['btn_recent'] = 'ÐоÑледни пÑомени';
+$lang['btn_upload'] = 'ÐаÑване';
+$lang['btn_cancel'] = 'ÐÑказ';
+$lang['btn_index'] = 'ÐндекÑ';
+$lang['btn_secedit'] = 'РедакÑиÑане';
+$lang['btn_login'] = 'ÐÑ
од';
+$lang['btn_logout'] = 'ÐзÑ
од';
+$lang['btn_admin'] = 'ÐаÑÑÑойки';
+$lang['btn_update'] = 'ÐбновÑване';
+$lang['btn_delete'] = 'ÐзÑÑиване';
+$lang['btn_back'] = 'Ðазад';
+$lang['btn_backlink'] = 'ÐбÑаÑни вÑÑзки';
+$lang['btn_backtomedia'] = 'Ðазад кÑм Ð¸Ð·Ð±Ð¾Ñ Ð½Ð° медиен Ñайл';
+$lang['btn_subscribe'] = 'ÐбониÑане за ÐÑомени';
+$lang['btn_unsubscribe'] = 'ÐÑпиÑване Ð¾Ñ ÐÑомени';
+$lang['btn_profile'] = 'ÐÑоÑил';
+$lang['btn_reset'] = 'ÐзÑиÑÑване';
+$lang['btn_resendpwd'] = 'ÐÑаÑане на нова паÑола';
+$lang['btn_draft'] = 'РедакÑиÑане на ÑеÑнова';
+$lang['btn_recover'] = 'ÐÑзÑÑановÑване на ÑеÑнова';
+$lang['btn_draftdel'] = 'ÐзÑÑиване на ÑеÑнова';
+$lang['loggedinas'] = 'Ðлезли ÑÑе каÑо';
+$lang['user'] = 'ÐоÑÑебиÑел';
+$lang['pass'] = 'ÐаÑола';
+$lang['newpass'] = 'Ðова паÑола';
+$lang['oldpass'] = 'ÐоÑвÑÑждение на ÑекÑÑа паÑола';
+$lang['passchk'] = 'oÑново';
+$lang['remember'] = 'Ðапомни ме';
+$lang['fullname'] = 'ÐÑлно име';
+$lang['email'] = 'Ð-ÐоÑа';
+$lang['register'] = 'РегиÑÑÑаÑиÑ';
+$lang['profile'] = 'ÐоÑÑебиÑелÑки пÑоÑил';
+$lang['badlogin'] = 'ÐоÑÑебиÑелÑкоÑо име или паÑолаÑа Ñа гÑеÑни';
+$lang['minoredit'] = 'Ðеки пÑомени';
+$lang['draftdate'] = 'ЧеÑноваÑа бе авÑомаÑиÑно запиÑана на';
+$lang['regmissing'] = 'ÐолÑ, попÑлнеÑе вÑиÑки полеÑа.';
+$lang['reguexists'] = 'ÐоÑÑебиÑел Ñ Ñакова име веÑе ÑÑÑеÑÑвÑва.';
+$lang['regsuccess'] = 'ÐоÑÑебиÑелÑÑ Ð±Ðµ ÑÑздаден и паÑолаÑа е пÑаÑена по елекÑÑоннаÑа поÑа.';
+$lang['regsuccess2'] = 'ÐоÑÑебиÑелÑÑ Ð±Ðµ ÑÑздаден.';
+$lang['regmailfail'] = 'Ðзглежда, Ñе има пÑоблем Ñ Ð¿ÑаÑанеÑо на пиÑмоÑо Ñ Ð¿Ð°ÑолаÑа. ÐолÑ, ÑвÑÑжеÑе Ñе Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑа.';
+$lang['regbadmail'] = 'ÐадениÑÑ Ð°Ð´ÑÐµÑ Ð¸Ð·Ð³Ð»ÐµÐ¶Ð´Ð° невалиден, ако миÑлиÑе, Ñе Ñова е гÑеÑка - ÑвÑÑжеÑе Ñе ÑÑÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑа.';
+$lang['regbadpass'] = 'ÐвеÑе дадени паÑоли не Ñа иденÑиÑни, Ð¼Ð¾Ð»Ñ Ð¾Ð¿Ð¸ÑайÑе оÑново';
+$lang['regpwmail'] = 'DokuWiki parola';
+$lang['reghere'] = 'ÐÑе оÑе нÑмаÑе пÑоÑил? ÐÑоÑÑо Ñи напÑавеÑе';
+$lang['profna'] = 'Това Ñики не поддÑÑжа пÑомÑна на пÑоÑила';
+$lang['profnochange'] = 'ÐÑма пÑомени.';
+$lang['profnoempty'] = 'ÐÑазни име или елекÑÑонна поÑа не Ñа позволени.';
+$lang['profchanged'] = 'ÐоÑÑебиÑелÑкиÑÑ Ð¿ÑоÑил бе ÑÑпеÑно обновен.';
+$lang['pwdforget'] = 'ÐабÑавили ÑÑе Ñи паÑолаÑа? ÐземеÑе нова';
+$lang['resendna'] = 'Това Ñики не поддÑÑжа повÑоÑно пÑаÑане на паÑола';
+$lang['resendpwd'] = 'ÐÑаÑане нова паÑола за';
+$lang['resendpwdmissing'] = 'ÐолÑ, попÑлнеÑе вÑиÑки полеÑа.';
+$lang['resendpwdnouser'] = 'ÐоÑÑебиÑелÑÑ Ð½Ðµ бе намеÑен в базаÑа данни.';
+$lang['resendpwdbadauth'] = 'Този код за поÑвÑÑждение не е валиден. ÐÑовеÑеÑе дали ÑÑе използвали ÑелиÑÑ Ð°Ð´ÑÐµÑ Ð·Ð° поÑвÑÑждение.';
+$lang['resendpwdconfirm'] = 'ÐдÑÐµÑ Ð·Ð° поÑвÑÑждение бе пÑаÑен по елекÑÑоннаÑа поÑа.';
+$lang['resendpwdsuccess'] = 'ÐаÑолаÑа ви бе пÑаÑена на елекÑÑоннаÑа поÑа.';
+$lang['txt_upload'] = 'ÐзбеÑеÑе Ñайл за каÑване ';
+$lang['txt_filename'] = 'ÐаÑване каÑо(незадÑлжиÑелно)';
+$lang['txt_overwrt'] = 'ÐÐ°Ð¿Ð¸Ñ Ð²ÑÑÑ
Ñ ÑÑÑеÑÑвÑÐ²Ð°Ñ Ñайл';
+$lang['lockedby'] = 'РмоменÑа е заклÑÑено оÑ';
+$lang['lockexpire'] = 'ÐаÑваÑÑнеÑо изÑиÑа в';
+$lang['willexpire'] = 'ÐаÑваÑÑнеÑо на ÑÑÑаниÑаÑа за ÑедакÑиÑане изÑиÑа Ñлед минÑÑа.\nÐа да избегнеÑе пÑоÑивоÑеÑÐ¸Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñе бÑÑонÑÑ, за да ÑеÑÑаÑÑиÑаÑе бÑоÑÑÑÑ Ð·Ð° заÑваÑÑне.';
+$lang['notsavedyet'] = 'ÐезапазениÑе пÑомени Ñе бÑÐ´Ð°Ñ Ð·Ð°Ð³Ñбени.\nÐÑкаÑе ли да пÑодÑлжиÑе?';
+$lang['rssfailed'] = 'ÐмаÑе гÑеÑка пÑи вземанеÑо на Ñози изÑоÑник(feed): ';
+$lang['nothingfound'] = 'ÐиÑо не бе намеÑено.';
+$lang['mediaselect'] = 'Ðедийни Ñайлове';
+$lang['fileupload'] = 'ÐаÑване на медийни Ñайлове';
+$lang['uploadsucc'] = 'ÐаÑванеÑо бе ÑÑпеÑно';
+$lang['uploadfail'] = 'ÐаÑванеÑо бе неÑÑпеÑно.Ðоже би гÑеÑни пÑава?';
+$lang['uploadwrong'] = 'ÐаÑванеÑо бе оÑказано. Това Ñайлово ÑазÑиÑение е забÑанено!';
+$lang['uploadexist'] = 'ФайлÑÑ Ð²ÐµÑе ÑÑÑеÑÑвÑва. ÐиÑо не бе напÑавено.';
+$lang['uploadbadcontent'] = 'ÐаÑеноÑо ÑÑдÑÑжание на ÑÑоÑвеÑÑÑва на Ñайлово ÑазÑиÑение %s .';
+$lang['uploadspam'] = 'ÐаÑванеÑо бе блокиÑано Ð¾Ñ ÑеÑниÑÑ ÑпиÑÑк за Ñпам.';
+$lang['uploadxss'] = 'ÐаÑванеÑо бе блокиÑано, заÑади вÑзможно обидно ÑÑдÑÑжание.';
+$lang['deletesucc'] = 'ФайлÑÑ "%s" бе изÑÑиÑ.';
+$lang['deletefail'] = '"%s" не бе изÑÑиÑ, пÑовеÑеÑе пÑаваÑа';
+$lang['mediainuse'] = 'ФайлÑÑ "%s" не бе изÑÑÐ¸Ñ - вÑе оÑе Ñе ползва.';
+$lang['namespaces'] = 'ÐменнипÑоÑÑÑанÑва';
+$lang['mediafiles'] = 'ÐоÑÑÑпни Ñайлове в';
+$lang['js']['keepopen'] = 'ÐадÑÑжане на пÑозоÑеÑа оÑвоÑен пÑи избоÑ';
+$lang['js']['hidedetails'] = 'СкÑиване на деÑайлиÑе';
+$lang['mediausage'] = 'ÐзползвайÑе ÑледниÑÑ ÑинÑакÑÐ¸Ñ Ð·Ð° да ÑпоменеÑе ÑайлÑÑ:';
+$lang['mediaview'] = 'ÐÑеглед на оÑигиналниÑÑ Ñайл';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'ÐаÑеÑе Ñайл в ÑекÑÑоÑо именнопÑоÑÑÑанÑÑво ÑÑк. Ðа да ÑÑздадеÑе подименнипÑоÑÑÑанÑÑва, добавеÑе ги в наÑалоÑо на "ÐаÑи каÑо" име на Ñайл Ñазделени Ð¾Ñ Ð´Ð²Ð¾ÐµÑоÑие.';
+$lang['mediaextchange'] = 'РазÑиÑениеÑо на ÑайлÑÑ Ð±Ðµ Ñменено Ð¾Ñ .%s на .%s!';
+$lang['reference'] = 'References for';
+$lang['ref_inuse'] = 'ФайлÑÑ Ð½Ðµ може да бÑде изÑÑÐ¸Ñ Ð·Ð°ÑоÑо вÑе оÑе Ñе ползва Ð¾Ñ ÑледниÑе ÑÑÑаниÑи:';
+$lang['ref_hidden'] = 'ÐÑкои пÑепÑаÑки Ñа кÑм ÑÑÑаниÑи, коиÑо нÑмаÑе пÑава да ÑеÑеÑе';
+$lang['hits'] = 'СÑвпадениÑ';
+$lang['quickhits'] = 'СÑвпадаÑи имена на ÑÑÑаниÑи';
+$lang['toc'] = 'СÑдÑÑжание';
+$lang['current'] = 'ÑекÑÑо';
+$lang['yours'] = 'ÐаÑаÑа веÑÑиÑ';
+$lang['diff'] = 'пÑеглед на ÑазликиÑе Ñ ÑекÑÑаÑа веÑÑиÑ';
+$lang['line'] = 'Ред';
+$lang['breadcrumb'] = 'Следа';
+$lang['youarehere'] = 'Ðие ÑÑе ÑÑк';
+$lang['lastmod'] = 'ÐоÑледна пÑомÑна';
+$lang['by'] = 'оÑ';
+$lang['deleted'] = 'изÑÑиване';
+$lang['created'] = 'ÑÑздаване';
+$lang['restored'] = 'ÑÑаÑаÑа веÑÑÐ¸Ñ Ð²ÑзÑÑановена';
+$lang['external_edit'] = 'вÑнÑна ÑедакÑиÑ';
+$lang['summary'] = 'ÐбобÑение';
+$lang['mail_newpage'] = 'dobavena stranica:';
+$lang['mail_changed'] = 'promenenta stranica:';
+$lang['mail_new_user'] = 'Nov potrebitel:';
+$lang['mail_upload'] = 'kachen fail:';
+$lang['nosmblinks'] = 'ÐÑÑзкиÑе кÑм Windows shares ÑабоÑÑÑ Ñамо под Internet Explorer.\nÐожеÑе да копиÑаÑе и поÑÑавиÑе вÑÑзкаÑа.';
+$lang['qb_alert'] = 'ÐÐ¾Ð»Ñ Ð²ÑведеÑе ÑекÑÑ Ð·Ð° ÑоÑмаÑиÑане.\nЩе бÑде добавен в кÑÐ°Ñ Ð½Ð° докÑменÑа.';
+$lang['qb_bold'] = 'ÐолÑÑÐµÑ ÑекÑÑ';
+$lang['qb_italic'] = 'ÐÑÑÑив ÑекÑÑ';
+$lang['qb_underl'] = 'ÐодÑеÑÑан ÑекÑÑ';
+$lang['qb_code'] = 'Ðод';
+$lang['qb_strike'] = 'ÐаÑеÑÐºÐ½Ð°Ñ ÑекÑÑ';
+$lang['qb_h1'] = 'Ðаглавие ниво 1';
+$lang['qb_h2'] = 'Ðаглавие ниво 2';
+$lang['qb_h3'] = 'Ðаглавие ниво 3';
+$lang['qb_h4'] = 'Ðаглавие ниво 4';
+$lang['qb_h5'] = 'Ðаглавие ниво 5';
+$lang['qb_link'] = 'ÐÑÑÑеÑна пÑепÑаÑка';
+$lang['qb_extlink'] = 'ÐÑнÑна пÑепÑаÑка';
+$lang['qb_hr'] = 'ХоÑизонÑална линиÑ';
+$lang['qb_ol'] = 'ÐодÑеден ÑпиÑÑк';
+$lang['qb_ul'] = 'ÐеподÑеден ÑпиÑÑк';
+$lang['qb_media'] = 'ÐобавÑне на каÑÑинки и дÑÑги Ñайлове';
+$lang['qb_sig'] = 'ÐмÑкване на подпиÑ';
+$lang['qb_smileys'] = 'УÑмивÑиÑи';
+$lang['qb_chars'] = 'СпеÑиални знаÑи';
+$lang['del_confirm'] = 'Ðа бÑÐ´Ð°Ñ Ð»Ð¸ изÑÑиÑи избÑаниÑе елеменÑи?';
+$lang['admin_register'] = 'ÐобабÑне на нов поÑÑебиÑел';
+$lang['metaedit'] = 'РедакÑиÑане на меÑаданниÑе';
+$lang['metasaveerr'] = 'ÐапазванеÑо на меÑаданниÑе не бе ÑÑпеÑно';
+$lang['metasaveok'] = 'ÐеÑаданниÑе запазени';
+$lang['img_backto'] = 'Ðазад кÑм';
+$lang['img_title'] = 'Ðаглавие';
+$lang['img_caption'] = 'ÐпиÑание';
+$lang['img_date'] = 'ÐаÑа';
+$lang['img_fname'] = 'Ðме на Ñайл';
+$lang['img_fsize'] = 'РазмеÑ';
+$lang['img_artist'] = 'ФоÑогÑаÑ';
+$lang['img_copyr'] = 'ÐопиÑайÑ';
+$lang['img_format'] = 'ФоÑмаÑ';
+$lang['img_camera'] = 'ÐамеÑа';
+$lang['img_keywords'] = 'ÐлÑÑови дÑми';
+$lang['subscribe_success'] = '%s бе добавен кÑм абонаменÑа за %s';
+$lang['subscribe_error'] = 'ÐмаÑе гÑеÑка пÑи добавÑнеÑо на абонаменÑа на %s за %s';
+$lang['subscribe_noaddress'] = 'ÐÑма адÑÐµÑ ÑвÑÑзан Ñ Ð¿Ð¾ÑÑебиÑелÑÑ,не може да Ñе абониÑаÑе';
+$lang['unsubscribe_success'] = 'ÐбонаменÑÑÑ %s бе пÑемаÑ
Ð½Ð°Ñ Ð¾Ñ ÑпиÑÑка за %s';
+$lang['unsubscribe_error'] = 'ÐмаÑе гÑеÑка пÑи ÑпиÑанеÑо на абонаменÑа на %s Ð¾Ñ ÑпиÑÑка %s';
+$lang['authmodfailed'] = 'ÐоÑа наÑÑÑойка на опознаванеÑо. ÐолÑ, ÑведомеÑе админиÑÑÑаÑоÑа.';
+$lang['authtempfail'] = 'ÐпознаванеÑо на поÑÑебиÑелиÑе е вÑеменно недоÑÑÑпно. Ðко Ñова пÑодÑлжи дÑлго, Ð¼Ð¾Ð»Ñ ÑведомеÑе админиÑÑÑаÑоÑа.';
+$lang['i_chooselang'] = 'ÐÐ·Ð±Ð¾Ñ Ð½Ð° език';
+$lang['i_installer'] = 'ÐнÑÑалаÑÐ¾Ñ Ð½Ð° DokuWiki';
+$lang['i_wikiname'] = 'Ðме на ÑикиÑо ';
+$lang['i_enableacl'] = 'ÐклÑÑване на ÑпиÑÑÑи за доÑÑÑп(ACL) (пÑепоÑÑÑиÑелно)';
+$lang['i_superuser'] = 'СÑпеÑпоÑÑебиÑел';
+$lang['i_problems'] = 'ÐнÑÑалаÑоÑа намеÑи пÑоблеми Ñказани по-долÑ. Ðе може да пÑодÑлжиÑе докаÑо не ги опÑавиÑе';
+$lang['i_modified'] = 'ÐоÑади меÑки за ÑигÑÑноÑÑ Ñози ÑкÑÐ¸Ð¿Ñ Ñе ÑабоÑи Ñамо Ñ Ð½Ð¾Ð²Ð° и непÑоменена Dokuwiki инÑÑалаÑиÑ.
+ ТÑÑбва или да ÑазаÑÑ
ивиÑаÑе оÑново ÑайловеÑе Ð¾Ñ Ð´ÑÑпнаÑÐ¸Ñ Ð¿Ð°ÐºÐµÑ Ð¸Ð»Ð¸ да Ñе поÑÑвеÑваÑе Ñ Ð¿ÑлниÑе
+ <a href="http://wiki.splitbrain.org/wiki:install">ÐнÑÑÑÑкÑии за инÑÑалаÑÐ¸Ñ Ð½Ð° Dokuwiki </a>';
+$lang['i_funcna'] = 'PHP ÑÑнкÑиÑÑа <code>%s</code> не е доÑÑÑпна. Ðоже би доÑÑавÑика на Ñ
оÑÑинг Ñ Ðµ изклÑÑил';
+$lang['i_phpver'] = 'ÐаÑаÑа PHP веÑÑÐ¸Ñ <code>%s</code> е по-ÑÑаÑа Ð¾Ñ Ð½ÑжнаÑа <code>%s</code>. ТÑÑбва да обновиÑе ваÑаÑа PHP инÑÑалаÑиÑ.';
+$lang['i_permfail'] = '<code>%s</code> не е доÑÑÑпна за пиÑане Ð¾Ñ DokuWiki. ТÑÑбва да пÑомениÑе наÑÑÑойкиÑе за доÑÑÑп до диÑекÑоÑиÑÑа!';
+$lang['i_confexists'] = '<code>%s</code> веÑе ÑÑÑеÑÑвÑва';
+$lang['i_writeerr'] = '<code>%s</code> не можа да бÑде ÑÑздаден. ТÑÑбва да пÑовеÑиÑе пÑаваÑа на диÑекÑоÑиÑÑа/Ñайла за доÑÑÑп и да ÑÑздадеÑе ÑайлÑÑ ÑÑÑно';
+$lang['i_badhash'] = 'неÑÐ°Ð·Ð¿Ð¾Ð·Ð½Ð°Ñ Ð¸Ð»Ð¸ пÑоменен dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - непозволена или пÑазна ÑÑойноÑÑ';
+$lang['i_success'] = 'ÐаÑÑÑойкаÑа пÑиклÑÑи ÑÑпеÑно. Ðоже да ÑÑздадеÑе ÑайлÑÑ install.php Ñега. ÐÑодÑлжеÑе кÑм
+ <a href="doku.php">Ðово Ðи DokuWiki</a>.';
+$lang['i_failure'] = 'ÐмаÑе гÑеÑки пÑи запиÑа на ÑайловеÑе Ñ Ð½Ð°ÑÑÑойки. Ðоже да ÑÑÑбва да ги ÑедакÑиÑаÑе ÑÑÑно
+ може да използваÑе <a href="doku.php">Ðово Ðи DokuWiki</a>.';
+$lang['i_policy'] = 'ÐÑÑвонаÑална полиÑика доÑÑÑп(ACL policy)';
+$lang['i_pol0'] = 'ÐÑвоÑено Уики (ÑеÑене, пиÑане, каÑване Ð¾Ñ Ð²ÑиÑки)';
+$lang['i_pol1'] = 'ÐÑблиÑно Уики (ÑеÑене Ð¾Ñ Ð²ÑиÑки, пиÑане и каÑване Ð¾Ñ ÑегиÑÑÑиÑани поÑÑебиÑели)';
+$lang['i_pol2'] = 'ÐаÑвоÑено Wiki (ÑеÑене, пиÑане, каÑване Ñамо Ð¾Ñ ÑегиÑÑÑиÑани поÑÑебиÑели)';
+$lang['i_retry'] = 'ÐÑново';
Modified: site/trunk/www-root/wiki/inc/lang/bg/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/bg/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐÑ
од ======
-
-РмоменÑа не ÑÑе влезли! ÐÑведеÑе данниÑе Ñи Ð´Ð¾Ð»Ñ Ð·Ð° да го напÑавиÑе.
-ÐиÑквиÑкиÑе(cookies) ÑÑÑбва да Ñа вклÑÑени.
-
+====== ÐÑ
од ======
+
+РмоменÑа не ÑÑе влезли! ÐÑведеÑе данниÑе Ñи Ð´Ð¾Ð»Ñ Ð·Ð° да го напÑавиÑе.
+ÐиÑквиÑкиÑе(cookies) ÑÑÑбва да Ñа вклÑÑени.
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-СÑÑаниÑа вÑв DokuWiki бе добавена или пÑоменена. ÐÑо деÑайлиÑе:
-
-ÐаÑа : @DATE@
-ÐÑаÑзÑÑ : @BROWSER@
-IP-адÑÐµÑ : @IPADDRESS@
-Ðме на Ñ
оÑÑ : @HOSTNAME@
-СÑаÑа веÑÑиÑ: @OLDPAGE@
-Ðова веÑÑÐ¸Ñ : @NEWPAGE@
-ÐбобÑение : @SUMMARY@
-ÐоÑÑебиÑел : @USER@
-
- at DIFF@
-
-
---
-Tова пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на:
- at DOKUWIKIURL@
+СÑÑаниÑа вÑв DokuWiki бе добавена или пÑоменена. ÐÑо деÑайлиÑе:
+
+ÐаÑа : @DATE@
+ÐÑаÑзÑÑ : @BROWSER@
+IP-адÑÐµÑ : @IPADDRESS@
+Ðме на Ñ
оÑÑ : @HOSTNAME@
+СÑаÑа веÑÑиÑ: @OLDPAGE@
+Ðова веÑÑÐ¸Ñ : @NEWPAGE@
+ÐбобÑение : @SUMMARY@
+ÐоÑÑебиÑел : @USER@
+
+ at DIFF@
+
+
+--
+Tова пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/bg/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Тази Ñема вÑе оÑе не ÑÑÑеÑÑвÑва ======
-
-ÐоÑледвали ÑÑе вÑÑзка кÑм Ñема, коÑÑо вÑе оÑе не ÑÑÑеÑÑвÑва.
-Ðко пÑаваÑа Ðи позволÑваÑ, може да Ñ ÑÑздадеÑе каÑо използваÑе
-бÑÑона ''СÑздаване на ÑÑÑаниÑаÑа''
-
+====== Тази Ñема вÑе оÑе не ÑÑÑеÑÑвÑва ======
+
+ÐоÑледвали ÑÑе вÑÑзка кÑм Ñема, коÑÑо вÑе оÑе не ÑÑÑеÑÑвÑва.
+Ðко пÑаваÑа Ðи позволÑваÑ, може да Ñ ÑÑздадеÑе каÑо използваÑе
+бÑÑона ''СÑздаване на ÑÑÑаниÑаÑа''
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ÐÑма Ñакава веÑÑиÑ======
-
-ÐзбÑанаÑа веÑÑÐ¸Ñ Ð½Ðµ ÑÑÑеÑÑвÑва. ÐзползвайÑе бÑÑона ''РедакÑии'' за
-ÑпиÑÑк на ÑÑаÑи веÑÑии на докÑменÑа.
-
+======ÐÑма Ñакава веÑÑиÑ======
+
+ÐзбÑанаÑа веÑÑÐ¸Ñ Ð½Ðµ ÑÑÑеÑÑвÑва. ÐзползвайÑе бÑÑона ''РедакÑии'' за
+ÑпиÑÑк на ÑÑаÑи веÑÑии на докÑменÑа.
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-ÐÑÐ¸Ð²ÐµÑ @FULLNAME@!
-
-ÐÑо ÐаÑиÑе поÑÑебиÑелÑки данни за @TITLE@ на @DOKUWIKIURL@
-
-ÐоÑÑебиÑел: @LOGIN@
-ÐаÑола : @PASSWORD@
-
---
-Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
- at DOKUWIKIURL@
+ÐÑÐ¸Ð²ÐµÑ @FULLNAME@!
+
+ÐÑо ÐаÑиÑе поÑÑебиÑелÑки данни за @TITLE@ на @DOKUWIKIURL@
+
+ÐоÑÑебиÑел: @LOGIN@
+ÐаÑола : @PASSWORD@
+
+--
+Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/bg/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐÑеглед ======
-
-Това е пÑеглед на Ñова как ÑекÑÑа Ñе изглежда. ÐапомнеÑе: ÐÑе оÑе **не е
-запазен** !
-
+====== ÐÑеглед ======
+
+Това е пÑеглед на Ñова как ÑекÑÑа Ñе изглежда. ÐапомнеÑе: ÐÑе оÑе **не е
+запазен** !
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-ÐÑÐ¸Ð²ÐµÑ @FULLNAME@!
-
-ÐÑкой е поиÑкал нова паÑола за поÑÑебиÑÐµÐ»Ñ @TITLE@
-на @DOKUWIKIURL@
-
-Ðко не ÑÑе поиÑкали нова паÑола, Ñовава пÑоÑÑо игноÑиÑайÑе Ñова пиÑмо.
-
-Ðа да поÑвÑÑдиÑе, Ñе иÑканеÑо е наиÑÑина пÑаÑено Ð¾Ñ Ð²Ð°Ñ, Ð¼Ð¾Ð»Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñе
-ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð°Ð´ÑеÑ.
-
- at CONFIRM@
-
---
-Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
- at DOKUWIKIURL@
+ÐÑÐ¸Ð²ÐµÑ @FULLNAME@!
+
+ÐÑкой е поиÑкал нова паÑола за поÑÑебиÑÐµÐ»Ñ @TITLE@
+на @DOKUWIKIURL@
+
+Ðко не ÑÑе поиÑкали нова паÑола, Ñовава пÑоÑÑо игноÑиÑайÑе Ñова пиÑмо.
+
+Ðа да поÑвÑÑдиÑе, Ñе иÑканеÑо е наиÑÑина пÑаÑено Ð¾Ñ Ð²Ð°Ñ, Ð¼Ð¾Ð»Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñе
+ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð°Ð´ÑеÑ.
+
+ at CONFIRM@
+
+--
+Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/bg/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/bg/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐоÑледни пÑомени ======
-
-СледниÑе ÑÑÑаниÑи Ñа били пÑоменени наÑкоÑо.
-
+====== ÐоÑледни пÑомени ======
+
+СледниÑе ÑÑÑаниÑи Ñа били пÑоменени наÑкоÑо.
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== РегиÑÑÑиÑайÑе Ñе каÑо нов поÑÑебиÑел ======
-
-ÐолÑ, попÑлнеÑе вÑиÑкаÑа инÑоÑмаÑÐ¸Ñ Ð´Ð¾Ð»Ñ, за да ÑÑздадеÑе нов пÑоÑил в Ñова Ñики.
-ÐÑдеÑе ÑигÑÑни, Ñе подаваÑе **валиден адÑÐµÑ Ð½Ð° елекÑÑонна поÑа** - ако не Ñе пиÑа за
-паÑола ÑÑк, нова Ñе бÑде пÑаÑена на Ñози адÑеÑ.
-ÐоÑÑебиÑелÑкоÑо име ÑÑÑбва да бÑде валидно [[doku>wiki:pagename|име на ÑÑаниÑа]]
-
+====== РегиÑÑÑиÑайÑе Ñе каÑо нов поÑÑебиÑел ======
+
+ÐолÑ, попÑлнеÑе вÑиÑкаÑа инÑоÑмаÑÐ¸Ñ Ð´Ð¾Ð»Ñ, за да ÑÑздадеÑе нов пÑоÑил в Ñова Ñики.
+ÐÑдеÑе ÑигÑÑни, Ñе подаваÑе **валиден адÑÐµÑ Ð½Ð° елекÑÑонна поÑа** - ако не Ñе пиÑа за
+паÑола ÑÑк, нова Ñе бÑде пÑаÑена на Ñози адÑеÑ.
+ÐоÑÑебиÑелÑкоÑо име ÑÑÑбва да бÑде валидно [[doku>wiki:pagename|име на ÑÑаниÑа]]
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Ðов поÑÑебиÑел Ñе ÑегиÑÑÑиÑа. ÐÑо деÑайли:
-
-ÐоÑÑебиÑел : @NEWUSER@
-ÐÑлно име : @NEWNAME@
-E-поÑа : @NEWEMAIL@
-
-ÐаÑа : @DATE@
-ÐÑаÑзÑÑ : @BROWSER@
-IP-адÑÐµÑ : @IPADDRESS@
-Ðме на Ñ
оÑÑа: @HOSTNAME@
-
---
-Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
- at DOKUWIKIURL@
+Ðов поÑÑебиÑел Ñе ÑегиÑÑÑиÑа. ÐÑо деÑайли:
+
+ÐоÑÑебиÑел : @NEWUSER@
+ÐÑлно име : @NEWNAME@
+E-поÑа : @NEWEMAIL@
+
+ÐаÑа : @DATE@
+ÐÑаÑзÑÑ : @BROWSER@
+IP-адÑÐµÑ : @IPADDRESS@
+Ðме на Ñ
оÑÑа: @HOSTNAME@
+
+--
+Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/bg/resendpwd.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/bg/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== СÑаÑи ÑедакÑии ======
-
-Това Ñа ÑÑаÑи ÑедакÑии на Ñози докÑменÑ. Ðа да вÑзÑÑановиÑе ÑÑаÑа веÑÑиÑ,
-избеÑеÑе Ñ Ð´Ð¾Ð»Ñ, наÑиÑнеÑе ''РедакÑиÑане'' и Ñ Ð·Ð°Ð¿Ð°Ð·ÐµÑе.
-
+====== СÑаÑи ÑедакÑии ======
+
+Това Ñа ÑÑаÑи ÑедакÑии на Ñози докÑменÑ. Ðа да вÑзÑÑановиÑе ÑÑаÑа веÑÑиÑ,
+избеÑеÑе Ñ Ð´Ð¾Ð»Ñ, наÑиÑнеÑе ''РедакÑиÑане'' и Ñ Ð·Ð°Ð¿Ð°Ð·ÐµÑе.
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======ТÑÑÑене======
-
-Ðоже да намеÑиÑе ÑезÑлÑаÑиÑе на ÑÑÑÑенеÑо долÑ. Ðко не ÑÑе намеÑили
-каквоÑо ÑÑе ÑÑÑÑили, може да ÑÑздадеÑе или ÑедакÑиÑаÑе ÑÑÑаниÑа кÑÑÑÑена
-по ваÑеÑа заÑвка за ÑÑÑÑене ÑÑÑ ÑÑоÑвеÑниÑÑ Ð±ÑÑон
-
-=====РезÑлÑаÑи=====
+======ТÑÑÑене======
+
+Ðоже да намеÑиÑе ÑезÑлÑаÑиÑе на ÑÑÑÑенеÑо долÑ. Ðко не ÑÑе намеÑили
+каквоÑо ÑÑе ÑÑÑÑили, може да ÑÑздадеÑе или ÑедакÑиÑаÑе ÑÑÑаниÑа кÑÑÑÑена
+по ваÑеÑа заÑвка за ÑÑÑÑене ÑÑÑ ÑÑоÑвеÑниÑÑ Ð±ÑÑон
+
+=====РезÑлÑаÑи=====
Modified: site/trunk/www-root/wiki/inc/lang/bg/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Това е ÑÑаÑа ÑедакÑÐ¸Ñ Ð½Ð° докÑменÑа**
-----
+**Това е ÑÑаÑа ÑедакÑÐ¸Ñ Ð½Ð° докÑменÑа**
+----
Modified: site/trunk/www-root/wiki/inc/lang/bg/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/bg/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-ÐÑивеÑ!
-
-СÑÑаниÑаÑа @PAGE@ в @TITLE@ ÑикиÑе бе пÑоменена.
-ÐÑо пÑомениÑе:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Ðа да Ñе оÑпиÑеÑе Ð¾Ñ Ñази ÑÑÑаниÑа, влезÑе в ÑикиÑо на
- at DOKUWIKIURL@ Ñогава оÑидеÑе на
- at NEWPAGE@
-и избеÑеÑе 'ÐÑпиÑване Ð¾Ñ Ð¿ÑомениÑе'.
-
---
-Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
- at DOKUWIKIURL@
+ÐÑивеÑ!
+
+СÑÑаниÑаÑа @PAGE@ в @TITLE@ ÑикиÑе бе пÑоменена.
+ÐÑо пÑомениÑе:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Ðа да Ñе оÑпиÑеÑе Ð¾Ñ Ñази ÑÑÑаниÑа, влезÑе в ÑикиÑо на
+ at DOKUWIKIURL@ Ñогава оÑидеÑе на
+ at NEWPAGE@
+и избеÑеÑе 'ÐÑпиÑване Ð¾Ñ Ð¿ÑомениÑе'.
+
+--
+Това пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/bg/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐÑоменеÑе Ñи пÑоÑила ======
-
-ТÑÑбва Ñамо да завÑÑÑиÑе полеÑаÑа коиÑо иÑкаÑе да пÑомениÑе. Ðе може да
-ÑменÑÑе поÑÑебиÑелÑкоÑо име
-
+====== ÐÑоменеÑе Ñи пÑоÑила ======
+
+ТÑÑбва Ñамо да завÑÑÑиÑе полеÑаÑа коиÑо иÑкаÑе да пÑомениÑе. Ðе може да
+ÑменÑÑе поÑÑебиÑелÑкоÑо име
+
Modified: site/trunk/www-root/wiki/inc/lang/bg/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Ðе каÑен Ñайл на ваÑеÑо DokuWiki. ÐÑо деÑайлиÑе
-
-Файл : @MEDIA@
-ÐаÑа : @DATE@
-ÐÑаÑзeÑ : @BROWSER@
-IP-ÐдÑÐµÑ : @IPADDRESS@
-Ðме на Ñ
оÑÑ : @HOSTNAME@
-Ð Ð°Ð·Ð¼ÐµÑ : @SIZE@
-MIME Тип : @MIME@
-ÐоÑÑебиÑел : @USER@
-
---
-Tова пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на:
- at DOKUWIKIURL@
+Ðе каÑен Ñайл на ваÑеÑо DokuWiki. ÐÑо деÑайлиÑе
+
+Файл : @MEDIA@
+ÐаÑа : @DATE@
+ÐÑаÑзeÑ : @BROWSER@
+IP-ÐдÑÐµÑ : @IPADDRESS@
+Ðме на Ñ
оÑÑ : @HOSTNAME@
+Ð Ð°Ð·Ð¼ÐµÑ : @SIZE@
+MIME Тип : @MIME@
+ÐоÑÑебиÑел : @USER@
+
+--
+Tова пиÑмо е генеÑиÑано Ð¾Ñ DokuWiki на:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/bg/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/bg/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/bg/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======СÐÐРбе блокиÑан======
-
-ÐÑомениÑе ви **не** бÑÑ
а запазени, заÑоÑо ÑÑдÑÑÐ¶Ð°Ñ ÐµÐ´Ð½Ð° или повеÑе забÑанени
-дÑми. Ðко ÑÑе Ñе опиÑали да пÑÑнеÑе Ñпам в ÑикиÑо -- ÐоÑо кÑÑе! Ðко ÑмÑÑаÑе,
-Ñе Ñова е гÑеÑка, ÑвÑÑжеÑе Ñе Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑа на Ñова Ñики
-
+======СÐÐРбе блокиÑан======
+
+ÐÑомениÑе ви **не** бÑÑ
а запазени, заÑоÑо ÑÑдÑÑÐ¶Ð°Ñ ÐµÐ´Ð½Ð° или повеÑе забÑанени
+дÑми. Ðко ÑÑе Ñе опиÑали да пÑÑнеÑе Ñпам в ÑикиÑо -- ÐоÑо кÑÑе! Ðко ÑмÑÑаÑе,
+Ñе Ñова е гÑеÑка, ÑвÑÑжеÑе Ñе Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑа на Ñова Ñики
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Administració ======
-
-Heus acà una llista de les tasques administratives disponibles
-en DokuWiki.
-
+====== Administració ======
+
+Heus acà una llista de les tasques administratives disponibles
+en DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Enllaços ======
-
-Heus acà una llista de pà gines enllaçades amb la pà gina actual.
-
+====== Enllaços ======
+
+Heus acà una llista de pà gines enllaçades amb la pà gina actual.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Hi ha una versió més recent ======
-
-Existeix una versió més recent del document que heu editat. Això passa quan
-un altre usuari canvia el document mentre l'està veu editant.
-
-Examineu detingudament les diferències que es mostren més avall i després
-decidiu quina versió voleu mantenir. Si trieu ''desa'', es desarà la vostra
-versió. Si trieu ''cancel·la'' es mantindrà la versió actual.
-
+====== Hi ha una versió més recent ======
+
+Existeix una versió més recent del document que heu editat. Això passa quan
+un altre usuari canvia el document mentre l'està veu editant.
+
+Examineu detingudament les diferències que es mostren més avall i després
+decidiu quina versió voleu mantenir. Si trieu ''desa'', es desarà la vostra
+versió. Si trieu ''cancel·la'' es mantindrà la versió actual.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== PermÃs denegat ======
-
-No teniu prou drets per continuar. Potser us heu descuidat d'entrar?
-
+====== PermÃs denegat ======
+
+No teniu prou drets per continuar. Potser us heu descuidat d'entrar?
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Diferències ======
-
-Acà es mostren les diferències entre la revisió seleccionada i la versió
-actual de la pà gina.
-
+====== Diferències ======
+
+Acà es mostren les diferències entre la revisió seleccionada i la versió
+actual de la pà gina.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== S'ha trobat un esborrany ======
-
-La darrera sessió vostra d'edició d'aquesta pà gina no es va completar correctament. DokuWiki en va desar automà ticament un esborrany mentre treballà veu, el qual podeu utilitzar ara per continuar l'edició. Més avall podeu veure la data i hora en què es va desar durant la vostra darrera sessió.
-
+====== S'ha trobat un esborrany ======
+
+La darrera sessió vostra d'edició d'aquesta pà gina no es va completar correctament. DokuWiki en va desar automà ticament un esborrany mentre treballà veu, el qual podeu utilitzar ara per continuar l'edició. Més avall podeu veure la data i hora en què es va desar durant la vostra darrera sessió.
+
Decidiu si voleu //recuperar// la vostra darrera sessió d'edició, //suprimir// l'esborrany que es va desar automà ticament o //cancel·lar// el procés d'edició.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Editeu la pà gina i premeu ''Desa''. Per a més informació sobre la sintaxi
-Wiki vegeu [[wiki:syntax|sintaxi]]. Si us plau, editeu la pà gina només si podeu
-**millorar-la**. Si voleu fer proves, aprengueu a donar les primeres passes
-al [[playground:playground|pati]].
-
+Editeu la pà gina i premeu ''Desa''. Per a més informació sobre la sintaxi
+Wiki vegeu [[wiki:syntax|sintaxi]]. Si us plau, editeu la pà gina només si podeu
+**millorar-la**. Si voleu fer proves, aprengueu a donar les primeres passes
+al [[playground:playground|pati]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Heu penjat una revisió anterior del document.** Si la deseu, creareu una nova versió amb aquestes dades.
-----
+**Heu penjat una revisió anterior del document.** Si la deseu, creareu una nova versió amb aquestes dades.
+----
Modified: site/trunk/www-root/wiki/inc/lang/ca/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Ãndex ======
-
-Heus acà un Ãndex de totes les pà gines disponibles, ordenades per [[doku>wiki:namespaces|espais]].
-
+====== Ãndex ======
+
+Heus acà un Ãndex de totes les pà gines disponibles, ordenades per [[doku>wiki:namespaces|espais]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-<p>Aquesta pà gina us ajuda a fer la primera instal·lació i la configuració de <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Hi ha més informació sobre aquest instal·lador en la seva <a href="http://wiki.splitbrain.org/wiki:installer">pà gina de documentació</a>.</p>
-
-<p>DokuWiki utilitza fitxers normals per a emmagatzemar les pà gines wiki i la informació associada a aquestes pà gines (p. ex. imatges, Ãndexs de cerca, revisions anteriors, etc.). Per tal de funcionar correctament DokuWiki <strong>necessita</strong> tenir accés d'escriptura als directoris que contenen aquests fitxers. Aquest instal·lador no pot configurar els permisos del directori. Normalment això cal fer-ho directament en la lÃnia d'ordres o, si esteu utilitzant un hostatge, mitjançant FTP o el tauler de control del vostre hostatge (p. ex. cPanel).</p>
-
-<p>Aquest instal·lador configurarà el vostre DokuWiki per a <acronym title="access control list">ACL</acronym>, cosa que, al seu torn, permet l'accés de l'administrador al menú d'administració, on pot instal·lar connectors, gestionar usuaris, gestionar l'accés a les pà gines wiki i modificar els parà metres de configuració. No és un requisit per al funcionament de DokuWiki, però el fa més fà cil d'administrar.</p>
-
-<p>Els usuaris experts o els que tinguin requeriments especÃfics poden utilitzar els enllaços següents per a obtenir més detalls sobre <a href="http://wiki.splitbrain.org/wiki:install">instruccions d'instal·lació</a>
+<p>Aquesta pà gina us ajuda a fer la primera instal·lació i la configuració de <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Hi ha més informació sobre aquest instal·lador en la seva <a href="http://wiki.splitbrain.org/wiki:installer">pà gina de documentació</a>.</p>
+
+<p>DokuWiki utilitza fitxers normals per a emmagatzemar les pà gines wiki i la informació associada a aquestes pà gines (p. ex. imatges, Ãndexs de cerca, revisions anteriors, etc.). Per tal de funcionar correctament DokuWiki <strong>necessita</strong> tenir accés d'escriptura als directoris que contenen aquests fitxers. Aquest instal·lador no pot configurar els permisos del directori. Normalment això cal fer-ho directament en la lÃnia d'ordres o, si esteu utilitzant un hostatge, mitjançant FTP o el tauler de control del vostre hostatge (p. ex. cPanel).</p>
+
+<p>Aquest instal·lador configurarà el vostre DokuWiki per a <acronym title="access control list">ACL</acronym>, cosa que, al seu torn, permet l'accés de l'administrador al menú d'administració, on pot instal·lar connectors, gestionar usuaris, gestionar l'accés a les pà gines wiki i modificar els parà metres de configuració. No és un requisit per al funcionament de DokuWiki, però el fa més fà cil d'administrar.</p>
+
+<p>Els usuaris experts o els que tinguin requeriments especÃfics poden utilitzar els enllaços següents per a obtenir més detalls sobre <a href="http://wiki.splitbrain.org/wiki:install">instruccions d'instal·lació</a>
i <a href="http://wiki.splitbrain.org/wiki:config">parà metres de configuració</a>.</p>
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/**
- * catalan language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Carles Bellver <carles.bellver at cent.uji.es>
- * @author Carles Bellver <carles.bellver at gmail.com>
- * @author carles.bellver at gmail.com
- * @author carles.bellver at cent.uji.es
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Edita aquesta pà gina';
-$lang['btn_source'] = 'Mostra codi font';
-$lang['btn_show'] = 'Mostra pà gina';
-$lang['btn_create'] = 'Crea aquesta pà gina';
-$lang['btn_search'] = 'Cerca';
-$lang['btn_save'] = 'Desa';
-$lang['btn_preview'] = 'Previsualitza';
-$lang['btn_top'] = 'Torna dalt';
-$lang['btn_newer'] = '<< més recent';
-$lang['btn_older'] = 'menys recent >>';
-$lang['btn_revs'] = 'Revisions anteriors';
-$lang['btn_recent'] = 'Canvis recents';
-$lang['btn_upload'] = 'Penja';
-$lang['btn_cancel'] = 'Cancel·la';
-$lang['btn_index'] = 'Ãndex';
-$lang['btn_secedit'] = 'Edita';
-$lang['btn_login'] = 'Entra';
-$lang['btn_logout'] = 'Surt';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Actualitza';
-$lang['btn_delete'] = 'Suprimeix';
-$lang['btn_back'] = 'Enrere';
-$lang['btn_backlink'] = 'Què hi enllaça';
-$lang['btn_backtomedia'] = 'Torna a la selecció de fitxers';
-$lang['btn_subscribe'] = 'Subscripció a canvis d\'aquesta pà gina';
-$lang['btn_unsubscribe'] = 'Cancel·la subscripció a pà gina';
-$lang['btn_subscribens'] = 'Subscripció a canvis d\'aquest espai';
-$lang['btn_unsubscribens'] = 'Cancel·la subscripció a espai';
-$lang['btn_profile'] = 'Actualització del perfil';
-$lang['btn_reset'] = 'Reinicia';
-$lang['btn_resendpwd'] = 'Envia nova contrasenya';
-$lang['btn_draft'] = 'Edita esborrany';
-$lang['btn_recover'] = 'Recupera esborrany';
-$lang['btn_draftdel'] = 'Suprimeix esborrany';
-$lang['loggedinas'] = 'Heu entrat com';
-$lang['user'] = 'Nom d\'usuari';
-$lang['pass'] = 'Contrassenya';
-$lang['newpass'] = 'Nova contrasenya';
-$lang['oldpass'] = 'Confirmeu la contrasenya actual';
-$lang['passchk'] = 'una altra vegada';
-$lang['remember'] = 'Recorda\'m';
-$lang['fullname'] = 'Nom complet';
-$lang['email'] = 'Correu electrònic';
-$lang['register'] = 'Registra\'m';
-$lang['profile'] = 'Perfil d\'usuari';
-$lang['badlogin'] = 'Nom d\'usuari o contrasenya incorrectes.';
-$lang['minoredit'] = 'Canvis menors';
-$lang['draftdate'] = 'L\'esborrany s\'ha desat automà ticament';
-$lang['regmissing'] = 'Heu d\'omplir tots els camps.';
-$lang['reguexists'] = 'Ja existeix un altre usuari amb aquest nom.';
-$lang['regsuccess'] = 'S\'ha creat l\'usuari. La contrasenya s\'ha enviat per correu.';
-$lang['regsuccess2'] = 'S\'ha creat l\'usuari.';
-$lang['regmailfail'] = 'Sembla que un error ha impedit enviar la contrasenya per correu. Contacteu amb l\'administrador.';
-$lang['regbadmail'] = 'L\'adreça de correu que heu donat no sembla và lida. Si creieu que això és un error, contacu amb l\'administrador.';
-$lang['regbadpass'] = 'Les dues contrasenyes no són iguals. Torneu a intentar-ho.';
-$lang['regpwmail'] = 'La vostra contrasenya per al Wiki';
-$lang['reghere'] = 'Si no teniu un compte, aquà en podeu obtenir un';
-$lang['profna'] = 'Aquest wiki no permet modificar el perfil';
-$lang['profnochange'] = 'No heu introduït cap canvi.';
-$lang['profnoempty'] = 'No es pot deixar en blanc el nom o l\'adreça de correu.';
-$lang['profchanged'] = 'El perfil d\'usuari s\'ha actualitzat correctament.';
-$lang['pwdforget'] = 'Heu oblidat la contrasenya? Podeu obtenir-ne una de nova.';
-$lang['resendna'] = 'Aquest wiki no permet tornar a enviar la contrasenya.';
-$lang['resendpwd'] = 'Enviament d\'una nova contrasenya per a';
-$lang['resendpwdmissing'] = 'Heu d\'emplenar tots els camps.';
-$lang['resendpwdnouser'] = 'No s\'ha pogut trobar aquest usuari a la base de dades.';
-$lang['resendpwdbadauth'] = 'Aquest codi d\'autenticació no és và lid. Assegureu-vos d\'utilitzar l\'enllaç de confirmació complet.';
-$lang['resendpwdconfirm'] = 'Se us ha enviat per correu electrònic un enllaç de confirmació.';
-$lang['resendpwdsuccess'] = 'Se us ha enviat la nova contrasenya per correu electrònic.';
-$lang['txt_upload'] = 'Trieu el fitxer que voleu penjar';
-$lang['txt_filename'] = 'Introduïu el nom wiki (opcional)';
-$lang['txt_overwrt'] = 'Sobreescriu el fitxer actual';
-$lang['lockedby'] = 'Actualment blocat per:';
-$lang['lockexpire'] = 'Venciment del blocatge:';
-$lang['willexpire'] = 'El blocatge per a editar aquesta pà gina venç d\'aquà a un minut.\nUtilitzeu la visualització prèvia per reiniciar el rellotge i evitar conflictes.';
-$lang['notsavedyet'] = 'Heu fet canvis que es perdran si no els deseu.\nVoleu continuar?';
-$lang['rssfailed'] = 'S\'ha produït un error en recollir aquesta alimentació: ';
-$lang['nothingfound'] = 'No s\'ha trobat res.';
-$lang['mediaselect'] = 'Selecció de fitxers';
-$lang['fileupload'] = 'CÃ rrega de fitxers';
-$lang['uploadsucc'] = 'S\'ha penjat el fitxer';
-$lang['uploadfail'] = 'No es pot penjar el fitxer. Potser no teniu prou permisos?';
-$lang['uploadwrong'] = 'No es pot penjar el fitxer. Aquesta extensió està prohibida.';
-$lang['uploadexist'] = 'El fitxer ja existeix. No s\'ha penjat.';
-$lang['uploadbadcontent'] = 'El contingut que heu penjat coincideix amb l\'extensió de fitxer %s.';
-$lang['uploadspam'] = 'La cà rrega ha estat blocada per la llista negra de brossa.';
-$lang['uploadxss'] = 'La cà rrega ha estat blocada perquè podria ser un contingut maligne.';
-$lang['deletesucc'] = 'S\'ha suprimit el fitxer "%s".';
-$lang['deletefail'] = 'No s\'ha pogut suprimir el fitxer "%s". Comproveu els permisos.';
-$lang['mediainuse'] = 'No s\'ha pogut suprimir el fitxer "%s". Encara s\'està utilitzant.';
-$lang['namespaces'] = 'Espais';
-$lang['mediafiles'] = 'Fitxers disponibles en';
-$lang['js']['keepopen'] = 'Manté la finestra oberta';
-$lang['js']['hidedetails'] = 'Oculta detalls';
-$lang['mediausage'] = 'Utilitzeu la sintaxi següent per referir-vos a aquest enllaç:';
-$lang['mediaview'] = 'Mostra el fitxer original';
-$lang['mediaroot'] = 'arrel';
-$lang['mediaupload'] = 'Pengeu aquà un fitxer dins de l\'espai actual. Per a crear un nou subespai, poseu-ne el nom davant del nom de fitxer i separeu-los amb el signe de dos punts.';
-$lang['mediaextchange'] = 'S\'ha canviat l\'extensió del fitxer de .%s a .%s';
-$lang['reference'] = 'Referències per a';
-$lang['ref_inuse'] = 'El fitxer no es pot suprimir perquè l\'estan utilitzant les pà gines següents:';
-$lang['ref_hidden'] = 'Algunes referències apareixen en pà gines per a les quals no teniu permÃs de lectura';
-$lang['hits'] = 'Resultats';
-$lang['quickhits'] = 'Noms de pà gina coincidents';
-$lang['toc'] = 'Taula de continguts';
-$lang['current'] = 'actual';
-$lang['yours'] = 'La vostra versió';
-$lang['diff'] = 'Mostra diferències amb la versió actual';
-$lang['diff2'] = 'Mostra diferències entre les revisions seleccionades';
-$lang['line'] = 'LÃnia';
-$lang['breadcrumb'] = 'CamÃ';
-$lang['youarehere'] = 'Sou aquÃ';
-$lang['lastmod'] = 'Darrera modificació';
-$lang['by'] = 'per';
-$lang['deleted'] = 'suprimit';
-$lang['created'] = 'creat';
-$lang['restored'] = 's\'ha restaurat una versió anterior';
-$lang['external_edit'] = 'edició externa';
-$lang['summary'] = 'Resum d\'edició';
-$lang['mail_newpage'] = 'pà gina afegida:';
-$lang['mail_changed'] = 'pà gina modificada:';
-$lang['mail_new_user'] = 'nou usuari:';
-$lang['mail_upload'] = 'fitxer penjat:';
-$lang['nosmblinks'] = 'Els enllaços amb recursos compartits de Windows només funcionen amb el Microsoft Internet Explorer.\nSi voleu podeu copiar i enganxar l\'enllaç.';
-$lang['qb_alert'] = 'Introduïu el text que voleu formatar.\nS\'afegirà al final del document.';
-$lang['qb_bold'] = 'Negreta';
-$lang['qb_italic'] = 'Cursiva';
-$lang['qb_underl'] = 'Subratllat';
-$lang['qb_code'] = 'Codi';
-$lang['qb_strike'] = 'Text barrat';
-$lang['qb_h1'] = 'Encapçalament nivell 1';
-$lang['qb_h2'] = 'Encapçalament nivell 2';
-$lang['qb_h3'] = 'Encapçalament nivell 3';
-$lang['qb_h4'] = 'Encapçalament nivell 4';
-$lang['qb_h5'] = 'Encapçalament nivell 5';
-$lang['qb_link'] = 'Enllaç intern';
-$lang['qb_extlink'] = 'Enllaç extern';
-$lang['qb_hr'] = 'Ratlla horitzontal';
-$lang['qb_ol'] = 'Element de llista numerada';
-$lang['qb_ul'] = 'Element de llista de pics';
-$lang['qb_media'] = 'Afegeix imatges o altres fitxers';
-$lang['qb_sig'] = 'Insereix signatura';
-$lang['qb_smileys'] = 'Emoticones';
-$lang['qb_chars'] = 'Carà cters especials';
-$lang['del_confirm'] = 'Suprimiu aquesta entrada?';
-$lang['admin_register'] = 'Afegeix nou usuari';
-$lang['metaedit'] = 'Edita metadades';
-$lang['metasaveerr'] = 'No s\'han pogut escriure les metadades';
-$lang['metasaveok'] = 'S\'han desat les metadades';
-$lang['img_backto'] = 'Torna a';
-$lang['img_title'] = 'TÃtol';
-$lang['img_caption'] = 'Peu d\'imatge';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nom de fitxer';
-$lang['img_fsize'] = 'Mida';
-$lang['img_artist'] = 'Fotògraf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'CÃ mera';
-$lang['img_keywords'] = 'Paraules clau';
-$lang['subscribe_success'] = 'S\'ha afegit %s a la llista de subscripcions de %s';
-$lang['subscribe_error'] = 'S\'ha produït un error en afegir %s a la llista de subscripcions de %s';
-$lang['subscribe_noaddress'] = 'No hi ha cap adreça de correu associada al vostre nom d\'usuari. No se us ha pogut afegir a la llista de subscripcions.';
-$lang['unsubscribe_success'] = '%s ha estat suprimit de la llista de subscripcions de %s';
-$lang['unsubscribe_error'] = 'S\'ha produït un error en suprimir %s de la llista de subscripcions de %s';
-$lang['authmodfailed'] = 'La configuració de l\'autenticació d\'usuaris és errònia. Informeu els administradors del wiki.';
-$lang['authtempfail'] = 'L\'autenticació d\'usuaris no està disponible temporalment. Si aquesta situació persisteix, si us plau informeu els administradors del wiki.';
-$lang['i_chooselang'] = 'Trieu l\'idioma';
-$lang['i_installer'] = 'Instal·lador de DokuWiki';
-$lang['i_wikiname'] = 'Nom del wiki';
-$lang['i_enableacl'] = 'Habilita ACL (recomanat)';
-$lang['i_superuser'] = 'Superusuari';
-$lang['i_problems'] = 'L\'instal·lador ha trobat alguns problemes, que s\'indiquen més avall. No podeu continuar fins que no els hà giu solucionat.';
-$lang['i_modified'] = 'Per raons de seguretat aquesta seqüència només funciona amb una instal·lació nova i no modificada de Dokuwiki. HaurÃeu de tornar a baixar el paquet i/o descomprimir-lo o consultar les <a href="http://wiki.splitbrain.org/wiki:install">instruccions d\'instal·lació de Dokuwiki</a> completes';
-$lang['i_funcna'] = 'La funció PHP <code>%s</code> no està disponible. Potser el vostre proveïdor de serveis l\'ha inhabilitada per alguna raó';
-$lang['i_phpver'] = 'La vostra versió de PHP <code>%s</code> és inferior a la requerida <code>%s</code>. Necessiteu actualitzar la vostra instal·lació de PHP.';
-$lang['i_permfail'] = 'DokuWiki no pot escriure <code>%s</code>. Heu d\'arreglar els permisos d\'aquest directori';
-$lang['i_confexists'] = '<code>%s</code> ja existeix';
-$lang['i_writeerr'] = 'No es pot crear <code>%s</code>. Comproveu els permisos del directori i/o del fitxer i creeu el fitxer manualment.';
-$lang['i_badhash'] = 'dokuwiki.php no reconegut o modificat (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - valor il·legal o buit';
-$lang['i_success'] = 'La configuració s\'ha acabat amb èxit. Ara podeu suprimir el fitxer install.php. Aneu al vostre nou <a href="doku.php">DokuWiki</a>.';
-$lang['i_failure'] = 'S\'han produït alguns errors en escriure els fitxers de configuració. Potser caldrà que els arregleu manualment abans d\'utilitzar el vostre nou <a href="doku.php">DokuWiki</a>.';
-$lang['i_policy'] = 'PolÃtica ACL inicial';
-$lang['i_pol0'] = 'Wiki obert (tothom pot llegir, escriure i penjar fitxers)';
-$lang['i_pol1'] = 'Wiki públic (tothom pot llegir, els usuaris registrats poden escriure i penjar fitxers)';
-$lang['i_pol2'] = 'Wiki tancat (només els usuaris registrats poden llegir, escriure i penjar fitxers)';
-$lang['i_retry'] = 'Reintenta';
+<?php
+/**
+ * catalan language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Carles Bellver <carles.bellver at cent.uji.es>
+ * @author Carles Bellver <carles.bellver at gmail.com>
+ * @author carles.bellver at gmail.com
+ * @author carles.bellver at cent.uji.es
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Edita aquesta pà gina';
+$lang['btn_source'] = 'Mostra codi font';
+$lang['btn_show'] = 'Mostra pà gina';
+$lang['btn_create'] = 'Crea aquesta pà gina';
+$lang['btn_search'] = 'Cerca';
+$lang['btn_save'] = 'Desa';
+$lang['btn_preview'] = 'Previsualitza';
+$lang['btn_top'] = 'Torna dalt';
+$lang['btn_newer'] = '<< més recent';
+$lang['btn_older'] = 'menys recent >>';
+$lang['btn_revs'] = 'Revisions anteriors';
+$lang['btn_recent'] = 'Canvis recents';
+$lang['btn_upload'] = 'Penja';
+$lang['btn_cancel'] = 'Cancel·la';
+$lang['btn_index'] = 'Ãndex';
+$lang['btn_secedit'] = 'Edita';
+$lang['btn_login'] = 'Entra';
+$lang['btn_logout'] = 'Surt';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Actualitza';
+$lang['btn_delete'] = 'Suprimeix';
+$lang['btn_back'] = 'Enrere';
+$lang['btn_backlink'] = 'Què hi enllaça';
+$lang['btn_backtomedia'] = 'Torna a la selecció de fitxers';
+$lang['btn_subscribe'] = 'Subscripció a canvis d\'aquesta pà gina';
+$lang['btn_unsubscribe'] = 'Cancel·la subscripció a pà gina';
+$lang['btn_subscribens'] = 'Subscripció a canvis d\'aquest espai';
+$lang['btn_unsubscribens'] = 'Cancel·la subscripció a espai';
+$lang['btn_profile'] = 'Actualització del perfil';
+$lang['btn_reset'] = 'Reinicia';
+$lang['btn_resendpwd'] = 'Envia nova contrasenya';
+$lang['btn_draft'] = 'Edita esborrany';
+$lang['btn_recover'] = 'Recupera esborrany';
+$lang['btn_draftdel'] = 'Suprimeix esborrany';
+$lang['loggedinas'] = 'Heu entrat com';
+$lang['user'] = 'Nom d\'usuari';
+$lang['pass'] = 'Contrassenya';
+$lang['newpass'] = 'Nova contrasenya';
+$lang['oldpass'] = 'Confirmeu la contrasenya actual';
+$lang['passchk'] = 'una altra vegada';
+$lang['remember'] = 'Recorda\'m';
+$lang['fullname'] = 'Nom complet';
+$lang['email'] = 'Correu electrònic';
+$lang['register'] = 'Registra\'m';
+$lang['profile'] = 'Perfil d\'usuari';
+$lang['badlogin'] = 'Nom d\'usuari o contrasenya incorrectes.';
+$lang['minoredit'] = 'Canvis menors';
+$lang['draftdate'] = 'L\'esborrany s\'ha desat automà ticament';
+$lang['regmissing'] = 'Heu d\'omplir tots els camps.';
+$lang['reguexists'] = 'Ja existeix un altre usuari amb aquest nom.';
+$lang['regsuccess'] = 'S\'ha creat l\'usuari. La contrasenya s\'ha enviat per correu.';
+$lang['regsuccess2'] = 'S\'ha creat l\'usuari.';
+$lang['regmailfail'] = 'Sembla que un error ha impedit enviar la contrasenya per correu. Contacteu amb l\'administrador.';
+$lang['regbadmail'] = 'L\'adreça de correu que heu donat no sembla và lida. Si creieu que això és un error, contacu amb l\'administrador.';
+$lang['regbadpass'] = 'Les dues contrasenyes no són iguals. Torneu a intentar-ho.';
+$lang['regpwmail'] = 'La vostra contrasenya per al Wiki';
+$lang['reghere'] = 'Si no teniu un compte, aquà en podeu obtenir un';
+$lang['profna'] = 'Aquest wiki no permet modificar el perfil';
+$lang['profnochange'] = 'No heu introduït cap canvi.';
+$lang['profnoempty'] = 'No es pot deixar en blanc el nom o l\'adreça de correu.';
+$lang['profchanged'] = 'El perfil d\'usuari s\'ha actualitzat correctament.';
+$lang['pwdforget'] = 'Heu oblidat la contrasenya? Podeu obtenir-ne una de nova.';
+$lang['resendna'] = 'Aquest wiki no permet tornar a enviar la contrasenya.';
+$lang['resendpwd'] = 'Enviament d\'una nova contrasenya per a';
+$lang['resendpwdmissing'] = 'Heu d\'emplenar tots els camps.';
+$lang['resendpwdnouser'] = 'No s\'ha pogut trobar aquest usuari a la base de dades.';
+$lang['resendpwdbadauth'] = 'Aquest codi d\'autenticació no és và lid. Assegureu-vos d\'utilitzar l\'enllaç de confirmació complet.';
+$lang['resendpwdconfirm'] = 'Se us ha enviat per correu electrònic un enllaç de confirmació.';
+$lang['resendpwdsuccess'] = 'Se us ha enviat la nova contrasenya per correu electrònic.';
+$lang['txt_upload'] = 'Trieu el fitxer que voleu penjar';
+$lang['txt_filename'] = 'Introduïu el nom wiki (opcional)';
+$lang['txt_overwrt'] = 'Sobreescriu el fitxer actual';
+$lang['lockedby'] = 'Actualment blocat per:';
+$lang['lockexpire'] = 'Venciment del blocatge:';
+$lang['willexpire'] = 'El blocatge per a editar aquesta pà gina venç d\'aquà a un minut.\nUtilitzeu la visualització prèvia per reiniciar el rellotge i evitar conflictes.';
+$lang['notsavedyet'] = 'Heu fet canvis que es perdran si no els deseu.\nVoleu continuar?';
+$lang['rssfailed'] = 'S\'ha produït un error en recollir aquesta alimentació: ';
+$lang['nothingfound'] = 'No s\'ha trobat res.';
+$lang['mediaselect'] = 'Selecció de fitxers';
+$lang['fileupload'] = 'CÃ rrega de fitxers';
+$lang['uploadsucc'] = 'S\'ha penjat el fitxer';
+$lang['uploadfail'] = 'No es pot penjar el fitxer. Potser no teniu prou permisos?';
+$lang['uploadwrong'] = 'No es pot penjar el fitxer. Aquesta extensió està prohibida.';
+$lang['uploadexist'] = 'El fitxer ja existeix. No s\'ha penjat.';
+$lang['uploadbadcontent'] = 'El contingut que heu penjat coincideix amb l\'extensió de fitxer %s.';
+$lang['uploadspam'] = 'La cà rrega ha estat blocada per la llista negra de brossa.';
+$lang['uploadxss'] = 'La cà rrega ha estat blocada perquè podria ser un contingut maligne.';
+$lang['deletesucc'] = 'S\'ha suprimit el fitxer "%s".';
+$lang['deletefail'] = 'No s\'ha pogut suprimir el fitxer "%s". Comproveu els permisos.';
+$lang['mediainuse'] = 'No s\'ha pogut suprimir el fitxer "%s". Encara s\'està utilitzant.';
+$lang['namespaces'] = 'Espais';
+$lang['mediafiles'] = 'Fitxers disponibles en';
+$lang['js']['keepopen'] = 'Manté la finestra oberta';
+$lang['js']['hidedetails'] = 'Oculta detalls';
+$lang['mediausage'] = 'Utilitzeu la sintaxi següent per referir-vos a aquest enllaç:';
+$lang['mediaview'] = 'Mostra el fitxer original';
+$lang['mediaroot'] = 'arrel';
+$lang['mediaupload'] = 'Pengeu aquà un fitxer dins de l\'espai actual. Per a crear un nou subespai, poseu-ne el nom davant del nom de fitxer i separeu-los amb el signe de dos punts.';
+$lang['mediaextchange'] = 'S\'ha canviat l\'extensió del fitxer de .%s a .%s';
+$lang['reference'] = 'Referències per a';
+$lang['ref_inuse'] = 'El fitxer no es pot suprimir perquè l\'estan utilitzant les pà gines següents:';
+$lang['ref_hidden'] = 'Algunes referències apareixen en pà gines per a les quals no teniu permÃs de lectura';
+$lang['hits'] = 'Resultats';
+$lang['quickhits'] = 'Noms de pà gina coincidents';
+$lang['toc'] = 'Taula de continguts';
+$lang['current'] = 'actual';
+$lang['yours'] = 'La vostra versió';
+$lang['diff'] = 'Mostra diferències amb la versió actual';
+$lang['diff2'] = 'Mostra diferències entre les revisions seleccionades';
+$lang['line'] = 'LÃnia';
+$lang['breadcrumb'] = 'CamÃ';
+$lang['youarehere'] = 'Sou aquÃ';
+$lang['lastmod'] = 'Darrera modificació';
+$lang['by'] = 'per';
+$lang['deleted'] = 'suprimit';
+$lang['created'] = 'creat';
+$lang['restored'] = 's\'ha restaurat una versió anterior';
+$lang['external_edit'] = 'edició externa';
+$lang['summary'] = 'Resum d\'edició';
+$lang['mail_newpage'] = 'pà gina afegida:';
+$lang['mail_changed'] = 'pà gina modificada:';
+$lang['mail_new_user'] = 'nou usuari:';
+$lang['mail_upload'] = 'fitxer penjat:';
+$lang['nosmblinks'] = 'Els enllaços amb recursos compartits de Windows només funcionen amb el Microsoft Internet Explorer.\nSi voleu podeu copiar i enganxar l\'enllaç.';
+$lang['qb_alert'] = 'Introduïu el text que voleu formatar.\nS\'afegirà al final del document.';
+$lang['qb_bold'] = 'Negreta';
+$lang['qb_italic'] = 'Cursiva';
+$lang['qb_underl'] = 'Subratllat';
+$lang['qb_code'] = 'Codi';
+$lang['qb_strike'] = 'Text barrat';
+$lang['qb_h1'] = 'Encapçalament nivell 1';
+$lang['qb_h2'] = 'Encapçalament nivell 2';
+$lang['qb_h3'] = 'Encapçalament nivell 3';
+$lang['qb_h4'] = 'Encapçalament nivell 4';
+$lang['qb_h5'] = 'Encapçalament nivell 5';
+$lang['qb_link'] = 'Enllaç intern';
+$lang['qb_extlink'] = 'Enllaç extern';
+$lang['qb_hr'] = 'Ratlla horitzontal';
+$lang['qb_ol'] = 'Element de llista numerada';
+$lang['qb_ul'] = 'Element de llista de pics';
+$lang['qb_media'] = 'Afegeix imatges o altres fitxers';
+$lang['qb_sig'] = 'Insereix signatura';
+$lang['qb_smileys'] = 'Emoticones';
+$lang['qb_chars'] = 'Carà cters especials';
+$lang['del_confirm'] = 'Suprimiu aquesta entrada?';
+$lang['admin_register'] = 'Afegeix nou usuari';
+$lang['metaedit'] = 'Edita metadades';
+$lang['metasaveerr'] = 'No s\'han pogut escriure les metadades';
+$lang['metasaveok'] = 'S\'han desat les metadades';
+$lang['img_backto'] = 'Torna a';
+$lang['img_title'] = 'TÃtol';
+$lang['img_caption'] = 'Peu d\'imatge';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Nom de fitxer';
+$lang['img_fsize'] = 'Mida';
+$lang['img_artist'] = 'Fotògraf';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'CÃ mera';
+$lang['img_keywords'] = 'Paraules clau';
+$lang['subscribe_success'] = 'S\'ha afegit %s a la llista de subscripcions de %s';
+$lang['subscribe_error'] = 'S\'ha produït un error en afegir %s a la llista de subscripcions de %s';
+$lang['subscribe_noaddress'] = 'No hi ha cap adreça de correu associada al vostre nom d\'usuari. No se us ha pogut afegir a la llista de subscripcions.';
+$lang['unsubscribe_success'] = '%s ha estat suprimit de la llista de subscripcions de %s';
+$lang['unsubscribe_error'] = 'S\'ha produït un error en suprimir %s de la llista de subscripcions de %s';
+$lang['authmodfailed'] = 'La configuració de l\'autenticació d\'usuaris és errònia. Informeu els administradors del wiki.';
+$lang['authtempfail'] = 'L\'autenticació d\'usuaris no està disponible temporalment. Si aquesta situació persisteix, si us plau informeu els administradors del wiki.';
+$lang['i_chooselang'] = 'Trieu l\'idioma';
+$lang['i_installer'] = 'Instal·lador de DokuWiki';
+$lang['i_wikiname'] = 'Nom del wiki';
+$lang['i_enableacl'] = 'Habilita ACL (recomanat)';
+$lang['i_superuser'] = 'Superusuari';
+$lang['i_problems'] = 'L\'instal·lador ha trobat alguns problemes, que s\'indiquen més avall. No podeu continuar fins que no els hà giu solucionat.';
+$lang['i_modified'] = 'Per raons de seguretat aquesta seqüència només funciona amb una instal·lació nova i no modificada de Dokuwiki. HaurÃeu de tornar a baixar el paquet i/o descomprimir-lo o consultar les <a href="http://wiki.splitbrain.org/wiki:install">instruccions d\'instal·lació de Dokuwiki</a> completes';
+$lang['i_funcna'] = 'La funció PHP <code>%s</code> no està disponible. Potser el vostre proveïdor de serveis l\'ha inhabilitada per alguna raó';
+$lang['i_phpver'] = 'La vostra versió de PHP <code>%s</code> és inferior a la requerida <code>%s</code>. Necessiteu actualitzar la vostra instal·lació de PHP.';
+$lang['i_permfail'] = 'DokuWiki no pot escriure <code>%s</code>. Heu d\'arreglar els permisos d\'aquest directori';
+$lang['i_confexists'] = '<code>%s</code> ja existeix';
+$lang['i_writeerr'] = 'No es pot crear <code>%s</code>. Comproveu els permisos del directori i/o del fitxer i creeu el fitxer manualment.';
+$lang['i_badhash'] = 'dokuwiki.php no reconegut o modificat (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - valor il·legal o buit';
+$lang['i_success'] = 'La configuració s\'ha acabat amb èxit. Ara podeu suprimir el fitxer install.php. Aneu al vostre nou <a href="doku.php">DokuWiki</a>.';
+$lang['i_failure'] = 'S\'han produït alguns errors en escriure els fitxers de configuració. Potser caldrà que els arregleu manualment abans d\'utilitzar el vostre nou <a href="doku.php">DokuWiki</a>.';
+$lang['i_policy'] = 'PolÃtica ACL inicial';
+$lang['i_pol0'] = 'Wiki obert (tothom pot llegir, escriure i penjar fitxers)';
+$lang['i_pol1'] = 'Wiki públic (tothom pot llegir, els usuaris registrats poden escriure i penjar fitxers)';
+$lang['i_pol2'] = 'Wiki tancat (només els usuaris registrats poden llegir, escriure i penjar fitxers)';
+$lang['i_retry'] = 'Reintenta';
Modified: site/trunk/www-root/wiki/inc/lang/ca/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== PÃ gina blocada ======
-
-Aquesta pà gina actualment està blocada per a edició per un altre usuari.
-Haureu d'esperar fins que aquest usuari acabe d'editar-la o fins que venci
-el blocatge.
+====== PÃ gina blocada ======
+
+Aquesta pà gina actualment està blocada per a edició per un altre usuari.
+Haureu d'esperar fins que aquest usuari acabe d'editar-la o fins que venci
+el blocatge.
Modified: site/trunk/www-root/wiki/inc/lang/ca/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Entrada ======
-
-No heu entrat. Introduïu les vostres credencials d'autenticació en aquest formulari.
-A partir d'aquest moment heu de tenir les galetes habilitades en el vostre navegador.
-
+====== Entrada ======
+
+No heu entrat. Introduïu les vostres credencials d'autenticació en aquest formulari.
+A partir d'aquest moment heu de tenir les galetes habilitades en el vostre navegador.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-S'ha afegit o modificat una pà gina en el vostre wiki. Acà teniu més detalls:
-
-Data : @DATE@
-Navegador : @BROWSER@
-IP : @IPADDRESS@
-Rev. anterior : @OLDPAGE@
-Rev. actual : @NEWPAGE@
-Resum d'edició : @SUMMARY@
-Usuari : @USER@
-
- at DIFF@
-
-
---
-Missatge generat per DokuWiki en
- at DOKUWIKIURL@
+S'ha afegit o modificat una pà gina en el vostre wiki. Acà teniu més detalls:
+
+Data : @DATE@
+Navegador : @BROWSER@
+IP : @IPADDRESS@
+Rev. anterior : @OLDPAGE@
+Rev. actual : @NEWPAGE@
+Resum d'edició : @SUMMARY@
+Usuari : @USER@
+
+ at DIFF@
+
+
+--
+Missatge generat per DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ca/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Aquest tema encara no existeix ======
-
-Heu seguit un enllaç a un tema que encara no existeix. Podeu crear-lo
-per mitjà del botó ''Crea aquesta pà gina''.
+====== Aquest tema encara no existeix ======
+
+Heu seguit un enllaç a un tema que encara no existeix. Podeu crear-lo
+per mitjà del botó ''Crea aquesta pà gina''.
Modified: site/trunk/www-root/wiki/inc/lang/ca/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== No existeix aquesta revisió ======
-
-
-La revisió especificada no existeix. Utilitzeu el botó ''Revisions anteriors'' per obtenir una llista de revisions d'aquest document.
-
+====== No existeix aquesta revisió ======
+
+
+La revisió especificada no existeix. Utilitzeu el botó ''Revisions anteriors'' per obtenir una llista de revisions d'aquest document.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Benvolgut/da @FULLNAME@,
-
-Aquestes són les teves dades per a entrar en @TITLE@ en l'adreça @DOKUWIKIURL@
-
-Usuari : @LOGIN@
-Contrasenya : @PASSWORD@
-
---
-Missatge generat per DokuWiki en
- at DOKUWIKIURL@
+Benvolgut/da @FULLNAME@,
+
+Aquestes són les teves dades per a entrar en @TITLE@ en l'adreça @DOKUWIKIURL@
+
+Usuari : @LOGIN@
+Contrasenya : @PASSWORD@
+
+--
+Missatge generat per DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ca/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Previsualització ======
-
-Heus acà una previsualització del vostre text. Recordeu que encara **no l'heu desat!**
-
+====== Previsualització ======
+
+Heus acà una previsualització del vostre text. Recordeu que encara **no l'heu desat!**
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
- at FULLNAME@,
-
-Algú ha sol·licitat una nova contrasenya per al vostre compte d'usuari en @TITLE@
- at DOKUWIKIURL@
-
-Si no heu fet aquesta sol·licitud, simplement no feu cas de la resta del missatge.
-
-Per confirmar que realment heu sol·licitat una nova contrasenya, utilitzeu
-l'enllaç següent:
-
- at CONFIRM@
-
---
-Missatge generat per DokuWiki en
+ at FULLNAME@,
+
+Algú ha sol·licitat una nova contrasenya per al vostre compte d'usuari en @TITLE@
+ at DOKUWIKIURL@
+
+Si no heu fet aquesta sol·licitud, simplement no feu cas de la resta del missatge.
+
+Per confirmar que realment heu sol·licitat una nova contrasenya, utilitzeu
+l'enllaç següent:
+
+ at CONFIRM@
+
+--
+Missatge generat per DokuWiki en
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Aquesta pà gina és només de lectura. Podeu veure'n el codi font, però no podeu canviar-la. Consulteu el vostre administrador si penseu que això és degut a algun error.
-
+Aquesta pà gina és només de lectura. Podeu veure'n el codi font, però no podeu canviar-la. Consulteu el vostre administrador si penseu que això és degut a algun error.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Canvis recents ======
-
-Les pà gines següents s'han modificat recentment.
-
-
+====== Canvis recents ======
+
+Les pà gines següents s'han modificat recentment.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Registre d'un usuari nou ======
-
-Empleneu tota la informació que se us demana per crear un compte nou en aquest
-wiki. Assegureu-vos que doneu una **adreça de correu và lida**, on se us enviarÃ
-la vostra contrasenya. El nom d'usuari o usuà ria ha de ser và lid com a
-[[doku>wiki:pagename|nom de pà gina]].
-
+====== Registre d'un usuari nou ======
+
+Empleneu tota la informació que se us demana per crear un compte nou en aquest
+wiki. Assegureu-vos que doneu una **adreça de correu và lida**, on se us enviarÃ
+la vostra contrasenya. El nom d'usuari o usuà ria ha de ser và lid com a
+[[doku>wiki:pagename|nom de pà gina]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-S'ha registrat un nou usuari. Heus acà els detalls:
-
-Nom d'usuari: @NEWUSER@
-Nom complet: @NEWNAME@
-E-mail: @NEWEMAIL@
-
-Data: @DATE@
-Navegador: @BROWSER@
-Adreça IP: @IPADDRESS@
-Ordinador: @HOSTNAME@
-
---
-Missatge generat per DokuWiki en
+S'ha registrat un nou usuari. Heus acà els detalls:
+
+Nom d'usuari: @NEWUSER@
+Nom complet: @NEWNAME@
+E-mail: @NEWEMAIL@
+
+Data: @DATE@
+Navegador: @BROWSER@
+Adreça IP: @IPADDRESS@
+Ordinador: @HOSTNAME@
+
+--
+Missatge generat per DokuWiki en
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Nova contrasenya ======
-
+====== Nova contrasenya ======
+
Per sol·licitar una nova contrasenya, introduïu el vostre nom d'usuari en el formulari següent. Se us enviarà un enllaç de confirmació a l'adreça de correu amb què us vau registrar.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Revisions anteriors ======
-
-Heus acà les revisions anteriors del document actual. Per restaurar una revisió
-anterior, seleccioneu-la de la llista, feu clic en ''Edita aquesta pà gina'' i
-deseu-la.
-
+====== Revisions anteriors ======
+
+Heus acà les revisions anteriors del document actual. Per restaurar una revisió
+anterior, seleccioneu-la de la llista, feu clic en ''Edita aquesta pà gina'' i
+deseu-la.
+
Modified: site/trunk/www-root/wiki/inc/lang/ca/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Cerca ======
-
-Heus acà els resultats de la cerca. Si no trobeu allò que buscà veu, podeu crear una pà gina nova per mitjà del botó ''Edita aquesta pà gina''.
-
+====== Cerca ======
+
+Heus acà els resultats de la cerca. Si no trobeu allò que buscà veu, podeu crear una pà gina nova per mitjà del botó ''Edita aquesta pà gina''.
+
===== Resultats =====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Aquesta és una revisió antiga del document**
-----
+**Aquesta és una revisió antiga del document**
+----
Modified: site/trunk/www-root/wiki/inc/lang/ca/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,106 +1,106 @@
-# Això és una llista de paraules que seran omeses per l'indexador, una paraula per lÃnia
-# Utilitzeu finals de lÃnia UNIX
-# No cal incloure paraules de menys de 3 carà cters: s'ometran igualment
-# Llista basada en http://www.ranks.nl/stopwords/
-abans
-algun
-alguna
-alguns
-algunes
-altre
-altra
-altres
-amb
-ambdós
-anar
-ans
-aquell
-aquella
-aquelles
-aquells
-aquÃ
-bastant
-cada
-com
-dalt
-des
-dins
-ell
-ella
-elles
-ells
-els
-ens
-entre
-era
-erem
-eren
-eres
-estan
-estat
-estava
-estem
-esteu
-estic
-estÃ
-ets
-faig
-fan
-fas
-fem
-fer
-feu
-haver
-inclòs
-llarg
-llavors
-mentre
-meu
-mode
-molt
-molts
-nosaltres
-per
-per que
-perquè
-però
-podem
-poden
-poder
-podeu
-potser
-primer
-puc
-quan
-quant
-qui
-sabem
-saben
-saber
-sabeu
-sap
-saps
-sense
-ser
-seu
-seus
-sóc
-solament
-sols
-som
-sota
-també
-tene
-tenim
-tenir
-teniu
-teu
-tinc
-tot
-una
-uns
-unes
-uns
-vaig
-van
-vosaltres
+# Això és una llista de paraules que seran omeses per l'indexador, una paraula per lÃnia
+# Utilitzeu finals de lÃnia UNIX
+# No cal incloure paraules de menys de 3 carà cters: s'ometran igualment
+# Llista basada en http://www.ranks.nl/stopwords/
+abans
+algun
+alguna
+alguns
+algunes
+altre
+altra
+altres
+amb
+ambdós
+anar
+ans
+aquell
+aquella
+aquelles
+aquells
+aquÃ
+bastant
+cada
+com
+dalt
+des
+dins
+ell
+ella
+elles
+ells
+els
+ens
+entre
+era
+erem
+eren
+eres
+estan
+estat
+estava
+estem
+esteu
+estic
+estÃ
+ets
+faig
+fan
+fas
+fem
+fer
+feu
+haver
+inclòs
+llarg
+llavors
+mentre
+meu
+mode
+molt
+molts
+nosaltres
+per
+per que
+perquè
+però
+podem
+poden
+poder
+podeu
+potser
+primer
+puc
+quan
+quant
+qui
+sabem
+saben
+saber
+sabeu
+sap
+saps
+sense
+ser
+seu
+seus
+sóc
+solament
+sols
+som
+sota
+també
+tene
+tenim
+tenir
+teniu
+teu
+tinc
+tot
+una
+uns
+unes
+uns
+vaig
+van
+vosaltres
Modified: site/trunk/www-root/wiki/inc/lang/ca/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-La pà gina @PAGE@ del wiki @TITLE@ ha estat modificada.
-Heus acà els canvis:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Per cancel·lar la subscripció a aquesta pà gina, entre al wiki en
- at DOKUWIKIURL@, aneu a
- at NEWPAGE@
-i trieu 'Cancel·la subscripció'.
-
---
-Missatge generat per DokuWiki en
+La pà gina @PAGE@ del wiki @TITLE@ ha estat modificada.
+Heus acà els canvis:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Per cancel·lar la subscripció a aquesta pà gina, entre al wiki en
+ at DOKUWIKIURL@, aneu a
+ at NEWPAGE@
+i trieu 'Cancel·la subscripció'.
+
+--
+Missatge generat per DokuWiki en
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Actualització del perfil d'usuari ======
-
+====== Actualització del perfil d'usuari ======
+
Només cal que completeu els camps que vulgueu canviar. El nom d'usuari no es pot canviar.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-S'ha penjat un fitxer al vostre DokuWiki. Heus acà els detalls:
-
-Fitxer: @MEDIA@
-Data: @DATE@
-Navegador: @BROWSER@
-Adreça IP: @IPADDRESS@
-Ordinador: @HOSTNAME@
-Mida: @SIZE@
-Tipus MIME: @MIME@
-Usuari: @USER@
-
---
-Missatge generat per DokuWiki en
+S'ha penjat un fitxer al vostre DokuWiki. Heus acà els detalls:
+
+Fitxer: @MEDIA@
+Data: @DATE@
+Navegador: @BROWSER@
+Adreça IP: @IPADDRESS@
+Ordinador: @HOSTNAME@
+Mida: @SIZE@
+Tipus MIME: @MIME@
+Usuari: @USER@
+
+--
+Missatge generat per DokuWiki en
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ca/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ca/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ca/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Brossa blocada ======
-
-Els canvis **no** s'han desat perquè contenen una o més paraules blocades.
-VolÃeu inundar el wiki amb brossa? Molt mal fet! Si penseu que això és un error, contacteu amb l'administrador d'aquest Wiki.
-
+====== Brossa blocada ======
+
+Els canvis **no** s'han desat perquè contenen una o més paraules blocades.
+VolÃeu inundar el wiki amb brossa? Molt mal fet! Si penseu que això és un error, contacteu amb l'administrador d'aquest Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/cs/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Správa ======
-
-NÞe je možno spravovat vaÅ¡i DokuWiki.
+====== Správa ======
+
+NÞe je možno spravovat vaÅ¡i DokuWiki.
Modified: site/trunk/www-root/wiki/inc/lang/cs/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ZpÄtné odkazy ======
-
-Zde je seznam stránek, které pravdÄpodobnÄ odkazujà na aktuálnà stránku.
+====== ZpÄtné odkazy ======
+
+Zde je seznam stránek, které pravdÄpodobnÄ odkazujà na aktuálnà stránku.
Modified: site/trunk/www-root/wiki/inc/lang/cs/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Existuje novÄjšà verze ======
-
-Existuje novÄjšà verze právÄ upravovaného dokumentu. To se stává, pokud nÄkdo
-jiný zmÄnil dokument, který právÄ upravujete.
-
-ProhlédnÄte si nÞe uvedené rozdÃly, pÅÃpadnÄ rozdÃly z obou verzà ruÄnÄ spojte
-dohromady a rozhodnÄte se, kterou verzi uchovat. Pokud zvolÃte ''Uložit'',
-bude uložena vaÅ¡e verze. Jinak stisknÄte ''Storno'' pro uchovánà původnà verze.
+====== Existuje novÄjšà verze ======
+
+Existuje novÄjšà verze právÄ upravovaného dokumentu. To se stává, pokud nÄkdo
+jiný zmÄnil dokument, který právÄ upravujete.
+
+ProhlédnÄte si nÞe uvedené rozdÃly, pÅÃpadnÄ rozdÃly z obou verzà ruÄnÄ spojte
+dohromady a rozhodnÄte se, kterou verzi uchovat. Pokud zvolÃte ''Uložit'',
+bude uložena vaÅ¡e verze. Jinak stisknÄte ''Storno'' pro uchovánà původnà verze.
Modified: site/trunk/www-root/wiki/inc/lang/cs/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Nepovolená akce ======
-
-PromiÅte, ale nemáte dostateÄná oprávnÄnà k této Äinnosti. Možná jste se
-zapomnÄli pÅihlásit?
+====== Nepovolená akce ======
+
+PromiÅte, ale nemáte dostateÄná oprávnÄnà k této Äinnosti. Možná jste se
+zapomnÄli pÅihlásit?
Modified: site/trunk/www-root/wiki/inc/lang/cs/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== RozdÃly ======
-
-Zde můžete vidÄt rozdÃly mezi vybranou verzà a aktuálnà verzà dané stránky.
-
+====== RozdÃly ======
+
+Zde můžete vidÄt rozdÃly mezi vybranou verzà a aktuálnà verzà dané stránky.
+
Modified: site/trunk/www-root/wiki/inc/lang/cs/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Nalezen koncept ======
-
-VaÅ¡e minulá editace této stránky nebyla korektnÄ dokonÄena. DokuWiki
-bÄhem editace automaticky uložila koncept, který nynà můžete
-použÃt a pokraÄovat v editaci. NÞe je vidÄt text uložený bÄhem
-minulé editace.
-
-ProsÃm rozhodnÄte se, jestli chcete automaticky uložený koncept
-//obnovit// a pokraÄovat v editaci, nebo jej chcete //vymazat//, nebo
-úplnÄ //zruÅ¡it// celý proces editace.
+====== Nalezen koncept ======
+
+VaÅ¡e minulá editace této stránky nebyla korektnÄ dokonÄena. DokuWiki
+bÄhem editace automaticky uložila koncept, který nynà můžete
+použÃt a pokraÄovat v editaci. NÞe je vidÄt text uložený bÄhem
+minulé editace.
+
+ProsÃm rozhodnÄte se, jestli chcete automaticky uložený koncept
+//obnovit// a pokraÄovat v editaci, nebo jej chcete //vymazat//, nebo
+úplnÄ //zruÅ¡it// celý proces editace.
Modified: site/trunk/www-root/wiki/inc/lang/cs/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-Upravte stránku a stisknÄte ''Uložit''. Na stránce [[wiki:syntax]] se můžete
-dozvÄdÄt vÃce o wiki syntaxi. ProsÃm upravujte stránky pouze, pokud je můžete
-**vylepÅ¡it**. V pÅÃpadÄ, že si chcete nÄco pouze vyzkouÅ¡et, použijte radÄji
-[[playground:playground|pÃskoviÅ¡tÄ]].
+Upravte stránku a stisknÄte ''Uložit''. Na stránce [[wiki:syntax]] se můžete
+dozvÄdÄt vÃce o wiki syntaxi. ProsÃm upravujte stránky pouze, pokud je můžete
+**vylepÅ¡it**. V pÅÃpadÄ, že si chcete nÄco pouze vyzkouÅ¡et, použijte radÄji
+[[playground:playground|pÃskoviÅ¡tÄ]].
Modified: site/trunk/www-root/wiki/inc/lang/cs/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Máte naÄtenou staršà verzi dokumentu!** Pokud ji uložÃte, vytvoÅÃte tÃm novou
-aktuálnà verzi.
+**Máte naÄtenou staršà verzi dokumentu!** Pokud ji uložÃte, vytvoÅÃte tÃm novou
+aktuálnà verzi.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/cs/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Index ======
-
-Zde je k dispozici index vÅ¡ech dostupných stránek seÅazený podle [[doku>wiki:namespaces|jmenných prostorů]].
+====== Index ======
+
+Zde je k dispozici index vÅ¡ech dostupných stránek seÅazený podle [[doku>wiki:namespaces|jmenných prostorů]].
Modified: site/trunk/www-root/wiki/inc/lang/cs/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,23 +1,23 @@
-<p>Tato stránka vám pomůže pÅi prvnà instalaci a konfiguraci
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. VÃce
-informacà o tomto instalátoru naleznete v jeho vlastnà <a
-href="http://wiki.splitbrain.org/wiki:installer">dokumentaci</a>.</p>
-
-<p>DokuWiki použÃvá obyÄejné soubory pro uloženà wiki stránek a dalÅ¡Ãch informacÃ
-spojených s nimi (napÅ. obrázků, vyhledávacÃch indexů, starÅ¡Ãch verzÃ). Aby DokuWiki
-správnÄ fungovala <strong>musÃ</strong> mÃt pÅÃstup k adresáÅům, kde jsou uloženy
-tyto soubory. Tento instalátor nenà schopen sám nastavit pÅÃstupová práva k souborům
-a adresáÅům. To se obyÄejnÄ dÄlá pÅÃmo v shellu nebo, použÃváte-li hosting, pÅes
-FTP nebo ovládacà panel vaÅ¡eho hostingu (napÅ. cPanel).</p>
-
-<p>Tento instalátor nastavà <acronym title="access control list">ACL</acronym>
-(pÅÃstupová práva uživatelů) pro vaÅ¡i DokuWiki, což umožnà správci pÅihlásit
-se do administraÄnà Äásti DokuWiki a tam instalovat pluginy, spravovat uživatele,
-nastavovat pÅÃstup k wiki stránkám a mÄnit dalšà nastavenà wiki. Nenà to
-nutné, ale zpÅÃjemnà to správu DokuWiki.</p>
-
-<p>ZkuÅ¡enà uživatelé nebo uživatelé se speciálnÃmi požadavky by se
-mÄli podÃvat na následujÃcà stránky pro dalšà informace ohlednÄ
-<a href="http://wiki.splitbrain.org/wiki:install">instalace</a> a
-<a href="http://wiki.splitbrain.org/wiki:config">nastavenÃ</a> DokuWiki.</p>
-
+<p>Tato stránka vám pomůže pÅi prvnà instalaci a konfiguraci
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. VÃce
+informacà o tomto instalátoru naleznete v jeho vlastnà <a
+href="http://wiki.splitbrain.org/wiki:installer">dokumentaci</a>.</p>
+
+<p>DokuWiki použÃvá obyÄejné soubory pro uloženà wiki stránek a dalÅ¡Ãch informacÃ
+spojených s nimi (napÅ. obrázků, vyhledávacÃch indexů, starÅ¡Ãch verzÃ). Aby DokuWiki
+správnÄ fungovala <strong>musÃ</strong> mÃt pÅÃstup k adresáÅům, kde jsou uloženy
+tyto soubory. Tento instalátor nenà schopen sám nastavit pÅÃstupová práva k souborům
+a adresáÅům. To se obyÄejnÄ dÄlá pÅÃmo v shellu nebo, použÃváte-li hosting, pÅes
+FTP nebo ovládacà panel vaÅ¡eho hostingu (napÅ. cPanel).</p>
+
+<p>Tento instalátor nastavà <acronym title="access control list">ACL</acronym>
+(pÅÃstupová práva uživatelů) pro vaÅ¡i DokuWiki, což umožnà správci pÅihlásit
+se do administraÄnà Äásti DokuWiki a tam instalovat pluginy, spravovat uživatele,
+nastavovat pÅÃstup k wiki stránkám a mÄnit dalšà nastavenà wiki. Nenà to
+nutné, ale zpÅÃjemnà to správu DokuWiki.</p>
+
+<p>ZkuÅ¡enà uživatelé nebo uživatelé se speciálnÃmi požadavky by se
+mÄli podÃvat na následujÃcà stránky pro dalšà informace ohlednÄ
+<a href="http://wiki.splitbrain.org/wiki:install">instalace</a> a
+<a href="http://wiki.splitbrain.org/wiki:config">nastavenÃ</a> DokuWiki.</p>
+
Modified: site/trunk/www-root/wiki/inc/lang/cs/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,204 +1,204 @@
-<?php
-/**
- * Czech language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Bohumir Zamecnik <bohumir at zamecnik.org>
- * @author Tomas Valenta <t.valenta at sh.cvut.cz>
- * @author Zbynek Krivka <zbynek.krivka at seznam.cz>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Upravit stránku';
-$lang['btn_source'] = 'Zdrojový kód stránky';
-$lang['btn_show'] = 'Zobrazit stránku';
-$lang['btn_create'] = 'VytvoÅit stránku';
-$lang['btn_search'] = 'Hledat';
-$lang['btn_save'] = 'Uložit';
-$lang['btn_preview'] = 'Náhled';
-$lang['btn_top'] = 'Nahoru';
-$lang['btn_newer'] = '<< novÄjÅ¡Ã';
-$lang['btn_older'] = 'staršà >>';
-$lang['btn_revs'] = 'Staršà verze';
-$lang['btn_recent'] = 'Poslednà úpravy';
-$lang['btn_upload'] = 'PÅiložit';
-$lang['btn_cancel'] = 'Storno';
-$lang['btn_index'] = 'Index';
-$lang['btn_secedit'] = 'Upravit';
-$lang['btn_login'] = 'PÅihlásit se';
-$lang['btn_logout'] = 'Odhlásit se';
-$lang['btn_admin'] = 'Správa';
-$lang['btn_update'] = 'Aktualizovat';
-$lang['btn_delete'] = 'Vymazat';
-$lang['btn_back'] = 'ZpÄt';
-$lang['btn_backlink'] = 'ZpÄtné odkazy';
-$lang['btn_backtomedia'] = 'ZpÄt do VýbÄru dokumentu';
-$lang['btn_subscribe'] = 'OdebÃrat mailem zmÄny stránky';
-$lang['btn_unsubscribe'] = 'NeodebÃrat mailem zmÄny stránky';
-$lang['btn_subscribens'] = 'OdebÃrat mailem zmÄny ve jmenném prostoru';
-$lang['btn_unsubscribens'] = 'NeodebÃrat mailem zmÄny ve jmenném prostoru';
-$lang['btn_profile'] = 'Upravit profil';
-$lang['btn_reset'] = 'Reset';
-$lang['btn_resendpwd'] = 'Zaslat nové heslo';
-$lang['btn_draft'] = 'Upravit koncept';
-$lang['btn_recover'] = 'Obnovit koncept';
-$lang['btn_draftdel'] = 'Vymazat koncept';
-$lang['loggedinas'] = 'PÅihlášen(a) jako';
-$lang['user'] = 'Uživatelské jméno';
-$lang['pass'] = 'Heslo';
-$lang['newpass'] = 'Nové heslo';
-$lang['oldpass'] = 'SouÄasné heslo';
-$lang['passchk'] = 'jeÅ¡tÄ jednou';
-$lang['remember'] = 'PÅihlásit se nastálo';
-$lang['fullname'] = 'Celé jméno';
-$lang['email'] = 'E-mail';
-$lang['register'] = 'Registrovat';
-$lang['profile'] = 'Uživatelský profil';
-$lang['badlogin'] = 'Zadané uživatelské jméno a heslo nenà správnÄ.';
-$lang['minoredit'] = 'Drobné zmÄny';
-$lang['draftdate'] = 'Koncept automaticky uložen v';
-$lang['regmissing'] = 'MusÃte vyplnit vÅ¡echny údaje.';
-$lang['reguexists'] = 'Uživatel se stejným jménem už je zaregistrován.';
-$lang['regsuccess'] = 'Uživatelský úÄet byl vytvoÅen a heslo zasláno mailem.';
-$lang['regsuccess2'] = 'Uživatelský úÄet byl vytvoÅen.';
-$lang['regmailfail'] = 'Zdá se, že nastala chyba pÅi posÃlánà mailu s heslem. Zkuste kontaktovat správce.';
-$lang['regbadmail'] = 'Zadaná mailová adresa nenà platná. Pokud si myslÃte, že to je Å¡patnÄ, zkuste kontaktovat správce.';
-$lang['regbadpass'] = 'Heslo nebylo zadáno dvakrát stejnÄ, zkuste to prosÃm znovu.';
-$lang['regpwmail'] = 'Vaše heslo do systému DokuWiki';
-$lang['reghere'] = 'Nemáte uživatelský úÄet? ZÅiÄte si ho';
-$lang['profna'] = 'Tato wiki neumožÅuje zmÄnu profilu';
-$lang['profnochange'] = 'Žádné zmÄny nebyly provedeny.';
-$lang['profnoempty'] = 'Nelze zadat prázdné jméno nebo mailová adresa.';
-$lang['profchanged'] = 'Uživatelský profil zmÄnÄn.';
-$lang['pwdforget'] = 'ZapomnÄli jste heslo? Nechte si zaslat nové';
-$lang['resendna'] = 'Tato wiki neumožÅuje zasÃlánà nových hesel.';
-$lang['resendpwd'] = 'Odeslat nové heslo pro uživatele';
-$lang['resendpwdmissing'] = 'MusÃte vyplnit vÅ¡echny položky.';
-$lang['resendpwdnouser'] = 'Bohužel takový uživatel v systému nenÃ.';
-$lang['resendpwdbadauth'] = 'AutorizaÄnà kód nenà platný. Zadali jste opravdu celý odkaz na potvrzovacà stránku?';
-$lang['resendpwdconfirm'] = 'Odkaz na potvrzovacà stránku byl odeslán mailem.';
-$lang['resendpwdsuccess'] = 'Vaše nové heslo bylo odesláno emailem.';
-$lang['txt_upload'] = 'Vyberte soubor jako pÅÃlohu';
-$lang['txt_filename'] = 'Wiki jméno (volitelné)';
-$lang['txt_overwrt'] = 'PÅepsat existujÃcà soubor';
-$lang['lockedby'] = 'PrávÄ zamknuto:';
-$lang['lockexpire'] = 'Zámek vyprÅ¡Ã:';
-$lang['willexpire'] = 'Váš zámek pro editaci za chvÃli vyprÅ¡Ã.\nAbyste pÅedeÅ¡li konfliktům, stisknÄte tlaÄÃtko Náhled a zámek se prodloužÃ.';
-$lang['notsavedyet'] = 'Jsou tu neuložené zmÄny, které budou ztraceny.\nChcete opravdu pokraÄovat?';
-$lang['rssfailed'] = 'Nastala chyba pÅi vytváÅenà tohoto RSS: ';
-$lang['nothingfound'] = 'Nic nenalezeno.';
-$lang['mediaselect'] = 'VýbÄr dokumentu';
-$lang['fileupload'] = 'Nahrávánà dokumentu';
-$lang['uploadsucc'] = 'PÅenos probÄhl v poÅádku';
-$lang['uploadfail'] = 'Chyba pÅi nahrávánÃ. Možná kvůli Å¡patnÄ nastaveným právům?';
-$lang['uploadwrong'] = 'PÅiloženà souboru s takovouto pÅÃponou nenà dovoleno.';
-$lang['uploadexist'] = 'Soubor už existuje, necháme ho být.';
-$lang['uploadbadcontent'] = 'Obsah pÅiloženého dokumentu %s neodpovÃdá jeho pÅÃponÄ.';
-$lang['uploadspam'] = 'PÅiložený dokument byl odmÃtnut, je na spamovém blacklistu.';
-$lang['uploadxss'] = 'PÅiložený dokument byl odmÃtnut. Zdá se, že obsahuje Å¡kodlivé vÄci.';
-$lang['deletesucc'] = 'Soubor "%s" byl vymazán.';
-$lang['deletefail'] = 'Soubor "%s" nelze vymazat - zkontrolujte oprávnÄnÃ.';
-$lang['mediainuse'] = 'Soubor "%s" nebyl vymazán - stále se použÃvá.';
-$lang['namespaces'] = 'Jmenné prostory';
-$lang['mediafiles'] = 'Dostupné soubory';
-$lang['js']['keepopen'] = 'Po vybránà souboru nechat okno otevÅené';
-$lang['js']['hidedetails'] = 'Skrýt detaily';
-$lang['mediausage'] = 'K odkázánà se na tento soubor použijte následujÃcà syntax:';
-$lang['mediaview'] = 'Zobrazit původnà soubor';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'PÅiložit soubor do aktuálnÃho jmenného prostoru. K vytvoÅenà nových jmenných prostorů, pÅidejte jejich názvy na zaÄátek wiki jména (oddÄlte dvojteÄkou).';
-$lang['mediaextchange'] = 'PÅÃpona souboru byla zmÄnÄna z .%s na .%s!';
-$lang['reference'] = 'Odkazy na';
-$lang['ref_inuse'] = 'Soubor nelze vymazat, jelikož ho využÃvajà následujÃcà stránky:';
-$lang['ref_hidden'] = 'NÄkteré odkazy jsou na stránkách, kam nemáte právo pÅÃstupu';
-$lang['hits'] = '- poÄet výskytů';
-$lang['quickhits'] = 'OdpovÃdajÃcà stránky';
-$lang['toc'] = 'Obsah';
-$lang['current'] = 'aktuálnÃ';
-$lang['yours'] = 'Vaše verze';
-$lang['diff'] = 'zobrazit rozdÃly vůÄi aktuálnà verzi';
-$lang['diff2'] = 'zobrazit rozdÃly mezi vybranými verzemi';
-$lang['line'] = 'Åádek';
-$lang['breadcrumb'] = 'Historie';
-$lang['youarehere'] = 'UmÃstÄnÃ';
-$lang['lastmod'] = 'Poslednà úprava';
-$lang['by'] = 'autor:';
-$lang['deleted'] = 'odstranÄno';
-$lang['created'] = 'vytvoÅeno';
-$lang['restored'] = 'stará verze byla obnovena';
-$lang['external_edit'] = 'upraveno mimo DokuWiki';
-$lang['summary'] = 'KomentáŠk úpravám';
-$lang['mail_newpage'] = 'nová stránka:';
-$lang['mail_changed'] = 'zmÄna stránky:';
-$lang['mail_new_user'] = 'nový uživatel:';
-$lang['mail_upload'] = 'nahraný dokument:';
-$lang['nosmblinks'] = 'Odkazovánà na sdÃlené prostÅedky Windows funguje jen v Internet Exploreru.\nPÅesto tento odkaz můžete zkopÃrovat a vložit jinde.';
-$lang['qb_alert'] = 'Vložte prosÃm text, který chcete formátovat.\nBude pak pÅidán na konec dokumentu.';
-$lang['qb_bold'] = 'TuÄnÄ';
-$lang['qb_italic'] = 'KurzÃva';
-$lang['qb_underl'] = 'PodtrženÃ';
-$lang['qb_code'] = 'Neformátovat (zdrojový kód)';
-$lang['qb_strike'] = 'PÅeÅ¡krtnutý text';
-$lang['qb_h1'] = 'Nadpis 1. úrovnÄ';
-$lang['qb_h2'] = 'Nadpis 2. úrovnÄ';
-$lang['qb_h3'] = 'Nadpis 3. úrovnÄ';
-$lang['qb_h4'] = 'Nadpis 4. úrovnÄ';
-$lang['qb_h5'] = 'Nadpis 5. úrovnÄ';
-$lang['qb_link'] = 'Internà odkaz';
-$lang['qb_extlink'] = 'Externà odkaz';
-$lang['qb_hr'] = 'Vodorovná Äára';
-$lang['qb_ol'] = 'ÄÃslovaný seznam';
-$lang['qb_ul'] = 'NeÄÃslovaný seznam';
-$lang['qb_media'] = 'Vložit obrázky nebo jiné soubory';
-$lang['qb_sig'] = 'Vložit podpis';
-$lang['qb_smileys'] = 'Emotikony';
-$lang['qb_chars'] = 'Speciálnà znaky';
-$lang['del_confirm'] = 'Vymazat tuto položku?';
-$lang['admin_register'] = 'PÅidat nového uživatele';
-$lang['metaedit'] = 'Upravit Metadata';
-$lang['metasaveerr'] = 'Chyba pÅi zápisu metadat';
-$lang['metasaveok'] = 'Metadata uložena';
-$lang['img_backto'] = 'ZpÄt na';
-$lang['img_title'] = 'Titulek';
-$lang['img_caption'] = 'Popis';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Jméno souboru';
-$lang['img_fsize'] = 'Velikost';
-$lang['img_artist'] = 'Autor fotografie';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formát';
-$lang['img_camera'] = 'Typ fotoaparátu';
-$lang['img_keywords'] = 'KlÃÄová slova';
-$lang['subscribe_success'] = 'Uživatel %s je nynà pÅihlášen k odbÄru zmÄn ve stránce %s';
-$lang['subscribe_error'] = 'Chyba pÅi zaÅazovánà uživatele %s do seznamu pro odbÄr zmÄn ve stránce %s';
-$lang['subscribe_noaddress'] = 'K vaÅ¡emu uživatelskému profilu chybà mailová adresa, takže vás nelze zaÅadit do seznamu pro odbÄr zmÄn';
-$lang['unsubscribe_success'] = 'Uživatel %s byl odebrán ze seznamu pro odbÄr zmÄn ve stránce %s';
-$lang['unsubscribe_error'] = 'Chyba pÅi odstraÅovánà uživatele %s ze seznamu pro odbÄru zmÄn ve stránce %s';
-$lang['authmodfailed'] = 'Autentizace uživatelů je Å¡patnÄ nastavena. Informujte prosÃm správce této wiki.';
-$lang['authtempfail'] = 'Autentizace uživatelů je doÄasnÄ nedostupná. Pokud tento problém pÅetrvává, informujte prosÃm správce této wiki.';
-$lang['i_chooselang'] = 'Vyberte si jazyk';
-$lang['i_installer'] = 'Instalace DokuWiki';
-$lang['i_wikiname'] = 'Název wiki';
-$lang['i_enableacl'] = 'Zapnout ACL (doporuÄeno)';
-$lang['i_superuser'] = 'Správce';
-$lang['i_problems'] = 'Instalátor narazil na nÞe popsané problémy. Nelze pokraÄovat v instalaci, dokud je neopravÃte.';
-$lang['i_modified'] = 'Instalátor bude z bezpeÄnostnÃch důvodů pracovat pouze s Äistou a jeÅ¡tÄ neupravenou instalacà DokuWiki. BuÄ znovu rozbalte souboru z instalaÄnÃho balÃÄku nebo se zkuste poradit s <a href="http://wiki.splitbrain.org/wiki:install">instrukcemi pro instalci DokuWiki</a>.';
-$lang['i_funcna'] = 'PHP funkce <code>%s</code> nenà dostupná. Váš webhosting ji možná z nÄjakého důvodu vypnul.';
-$lang['i_phpver'] = 'Verze vašà instalace PHP <code>%s</code> je nižšà než požadovaná <code>%s</code>. Budete muset aktualizovat svou instalaci PHP.';
-$lang['i_permfail'] = 'DokuWiki nemůže zapisovat do <code>%s</code>. Budete muset opravit práva k tomuto adresáÅi.';
-$lang['i_confexists'] = '<code>%s</code> již existuje';
-$lang['i_writeerr'] = 'Nelze vytvoÅit <code>%s</code>. Budete muset zkontrolovat práva k souborům Äi adresáÅům a vytvoÅit tento soubor ruÄnÄ.';
-$lang['i_badhash'] = 'soubor dokuwiki.php (hash=<code>%s</code>) nebyl rozpoznán nebo byl upraven';
-$lang['i_badval'] = '<code>%s</code> - neplatná nebo prázdná hodnota';
-$lang['i_success'] = 'Konfigurace byla úspÄÅ¡nÄ dokonÄena. Nynà můžete smazat soubor install.php. PokraÄujte do <a href="doku.php">své nové DokuWiki</a>.';
-$lang['i_failure'] = 'Vyskytly se nÄjaké chyby pÅi zápisu do konfiguraÄnÃch souborů. Budete je nejspÃÅ¡ muset upravit ruÄnÄ pÅed použitÃm <a href="doku.php">své nové DokuWiki</a>.';
-$lang['i_policy'] = 'Ãvodnà politika ACL';
-$lang['i_pol0'] = 'OtevÅená wiki (ÄtenÃ, zápis a upload pro vÅ¡echny)';
-$lang['i_pol1'] = 'VeÅejná wiki (Ätenà pro vÅ¡echny, zápis a upload pro registrované uživatele)';
-$lang['i_pol2'] = 'UzavÅená wiki (ÄtenÃ, zápis a upload pouze pro registrované uživatele)';
-$lang['i_retry'] = 'Zkusit znovu';
+<?php
+/**
+ * Czech language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Bohumir Zamecnik <bohumir at zamecnik.org>
+ * @author Tomas Valenta <t.valenta at sh.cvut.cz>
+ * @author Zbynek Krivka <zbynek.krivka at seznam.cz>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Upravit stránku';
+$lang['btn_source'] = 'Zdrojový kód stránky';
+$lang['btn_show'] = 'Zobrazit stránku';
+$lang['btn_create'] = 'VytvoÅit stránku';
+$lang['btn_search'] = 'Hledat';
+$lang['btn_save'] = 'Uložit';
+$lang['btn_preview'] = 'Náhled';
+$lang['btn_top'] = 'Nahoru';
+$lang['btn_newer'] = '<< novÄjÅ¡Ã';
+$lang['btn_older'] = 'staršà >>';
+$lang['btn_revs'] = 'Staršà verze';
+$lang['btn_recent'] = 'Poslednà úpravy';
+$lang['btn_upload'] = 'PÅiložit';
+$lang['btn_cancel'] = 'Storno';
+$lang['btn_index'] = 'Index';
+$lang['btn_secedit'] = 'Upravit';
+$lang['btn_login'] = 'PÅihlásit se';
+$lang['btn_logout'] = 'Odhlásit se';
+$lang['btn_admin'] = 'Správa';
+$lang['btn_update'] = 'Aktualizovat';
+$lang['btn_delete'] = 'Vymazat';
+$lang['btn_back'] = 'ZpÄt';
+$lang['btn_backlink'] = 'ZpÄtné odkazy';
+$lang['btn_backtomedia'] = 'ZpÄt do VýbÄru dokumentu';
+$lang['btn_subscribe'] = 'OdebÃrat mailem zmÄny stránky';
+$lang['btn_unsubscribe'] = 'NeodebÃrat mailem zmÄny stránky';
+$lang['btn_subscribens'] = 'OdebÃrat mailem zmÄny ve jmenném prostoru';
+$lang['btn_unsubscribens'] = 'NeodebÃrat mailem zmÄny ve jmenném prostoru';
+$lang['btn_profile'] = 'Upravit profil';
+$lang['btn_reset'] = 'Reset';
+$lang['btn_resendpwd'] = 'Zaslat nové heslo';
+$lang['btn_draft'] = 'Upravit koncept';
+$lang['btn_recover'] = 'Obnovit koncept';
+$lang['btn_draftdel'] = 'Vymazat koncept';
+$lang['loggedinas'] = 'PÅihlášen(a) jako';
+$lang['user'] = 'Uživatelské jméno';
+$lang['pass'] = 'Heslo';
+$lang['newpass'] = 'Nové heslo';
+$lang['oldpass'] = 'SouÄasné heslo';
+$lang['passchk'] = 'jeÅ¡tÄ jednou';
+$lang['remember'] = 'PÅihlásit se nastálo';
+$lang['fullname'] = 'Celé jméno';
+$lang['email'] = 'E-mail';
+$lang['register'] = 'Registrovat';
+$lang['profile'] = 'Uživatelský profil';
+$lang['badlogin'] = 'Zadané uživatelské jméno a heslo nenà správnÄ.';
+$lang['minoredit'] = 'Drobné zmÄny';
+$lang['draftdate'] = 'Koncept automaticky uložen v';
+$lang['regmissing'] = 'MusÃte vyplnit vÅ¡echny údaje.';
+$lang['reguexists'] = 'Uživatel se stejným jménem už je zaregistrován.';
+$lang['regsuccess'] = 'Uživatelský úÄet byl vytvoÅen a heslo zasláno mailem.';
+$lang['regsuccess2'] = 'Uživatelský úÄet byl vytvoÅen.';
+$lang['regmailfail'] = 'Zdá se, že nastala chyba pÅi posÃlánà mailu s heslem. Zkuste kontaktovat správce.';
+$lang['regbadmail'] = 'Zadaná mailová adresa nenà platná. Pokud si myslÃte, že to je Å¡patnÄ, zkuste kontaktovat správce.';
+$lang['regbadpass'] = 'Heslo nebylo zadáno dvakrát stejnÄ, zkuste to prosÃm znovu.';
+$lang['regpwmail'] = 'Vaše heslo do systému DokuWiki';
+$lang['reghere'] = 'Nemáte uživatelský úÄet? ZÅiÄte si ho';
+$lang['profna'] = 'Tato wiki neumožÅuje zmÄnu profilu';
+$lang['profnochange'] = 'Žádné zmÄny nebyly provedeny.';
+$lang['profnoempty'] = 'Nelze zadat prázdné jméno nebo mailová adresa.';
+$lang['profchanged'] = 'Uživatelský profil zmÄnÄn.';
+$lang['pwdforget'] = 'ZapomnÄli jste heslo? Nechte si zaslat nové';
+$lang['resendna'] = 'Tato wiki neumožÅuje zasÃlánà nových hesel.';
+$lang['resendpwd'] = 'Odeslat nové heslo pro uživatele';
+$lang['resendpwdmissing'] = 'MusÃte vyplnit vÅ¡echny položky.';
+$lang['resendpwdnouser'] = 'Bohužel takový uživatel v systému nenÃ.';
+$lang['resendpwdbadauth'] = 'AutorizaÄnà kód nenà platný. Zadali jste opravdu celý odkaz na potvrzovacà stránku?';
+$lang['resendpwdconfirm'] = 'Odkaz na potvrzovacà stránku byl odeslán mailem.';
+$lang['resendpwdsuccess'] = 'Vaše nové heslo bylo odesláno emailem.';
+$lang['txt_upload'] = 'Vyberte soubor jako pÅÃlohu';
+$lang['txt_filename'] = 'Wiki jméno (volitelné)';
+$lang['txt_overwrt'] = 'PÅepsat existujÃcà soubor';
+$lang['lockedby'] = 'PrávÄ zamknuto:';
+$lang['lockexpire'] = 'Zámek vyprÅ¡Ã:';
+$lang['willexpire'] = 'Váš zámek pro editaci za chvÃli vyprÅ¡Ã.\nAbyste pÅedeÅ¡li konfliktům, stisknÄte tlaÄÃtko Náhled a zámek se prodloužÃ.';
+$lang['notsavedyet'] = 'Jsou tu neuložené zmÄny, které budou ztraceny.\nChcete opravdu pokraÄovat?';
+$lang['rssfailed'] = 'Nastala chyba pÅi vytváÅenà tohoto RSS: ';
+$lang['nothingfound'] = 'Nic nenalezeno.';
+$lang['mediaselect'] = 'VýbÄr dokumentu';
+$lang['fileupload'] = 'Nahrávánà dokumentu';
+$lang['uploadsucc'] = 'PÅenos probÄhl v poÅádku';
+$lang['uploadfail'] = 'Chyba pÅi nahrávánÃ. Možná kvůli Å¡patnÄ nastaveným právům?';
+$lang['uploadwrong'] = 'PÅiloženà souboru s takovouto pÅÃponou nenà dovoleno.';
+$lang['uploadexist'] = 'Soubor už existuje, necháme ho být.';
+$lang['uploadbadcontent'] = 'Obsah pÅiloženého dokumentu %s neodpovÃdá jeho pÅÃponÄ.';
+$lang['uploadspam'] = 'PÅiložený dokument byl odmÃtnut, je na spamovém blacklistu.';
+$lang['uploadxss'] = 'PÅiložený dokument byl odmÃtnut. Zdá se, že obsahuje Å¡kodlivé vÄci.';
+$lang['deletesucc'] = 'Soubor "%s" byl vymazán.';
+$lang['deletefail'] = 'Soubor "%s" nelze vymazat - zkontrolujte oprávnÄnÃ.';
+$lang['mediainuse'] = 'Soubor "%s" nebyl vymazán - stále se použÃvá.';
+$lang['namespaces'] = 'Jmenné prostory';
+$lang['mediafiles'] = 'Dostupné soubory';
+$lang['js']['keepopen'] = 'Po vybránà souboru nechat okno otevÅené';
+$lang['js']['hidedetails'] = 'Skrýt detaily';
+$lang['mediausage'] = 'K odkázánà se na tento soubor použijte následujÃcà syntax:';
+$lang['mediaview'] = 'Zobrazit původnà soubor';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'PÅiložit soubor do aktuálnÃho jmenného prostoru. K vytvoÅenà nových jmenných prostorů, pÅidejte jejich názvy na zaÄátek wiki jména (oddÄlte dvojteÄkou).';
+$lang['mediaextchange'] = 'PÅÃpona souboru byla zmÄnÄna z .%s na .%s!';
+$lang['reference'] = 'Odkazy na';
+$lang['ref_inuse'] = 'Soubor nelze vymazat, jelikož ho využÃvajà následujÃcà stránky:';
+$lang['ref_hidden'] = 'NÄkteré odkazy jsou na stránkách, kam nemáte právo pÅÃstupu';
+$lang['hits'] = '- poÄet výskytů';
+$lang['quickhits'] = 'OdpovÃdajÃcà stránky';
+$lang['toc'] = 'Obsah';
+$lang['current'] = 'aktuálnÃ';
+$lang['yours'] = 'Vaše verze';
+$lang['diff'] = 'zobrazit rozdÃly vůÄi aktuálnà verzi';
+$lang['diff2'] = 'zobrazit rozdÃly mezi vybranými verzemi';
+$lang['line'] = 'Åádek';
+$lang['breadcrumb'] = 'Historie';
+$lang['youarehere'] = 'UmÃstÄnÃ';
+$lang['lastmod'] = 'Poslednà úprava';
+$lang['by'] = 'autor:';
+$lang['deleted'] = 'odstranÄno';
+$lang['created'] = 'vytvoÅeno';
+$lang['restored'] = 'stará verze byla obnovena';
+$lang['external_edit'] = 'upraveno mimo DokuWiki';
+$lang['summary'] = 'KomentáŠk úpravám';
+$lang['mail_newpage'] = 'nová stránka:';
+$lang['mail_changed'] = 'zmÄna stránky:';
+$lang['mail_new_user'] = 'nový uživatel:';
+$lang['mail_upload'] = 'nahraný dokument:';
+$lang['nosmblinks'] = 'Odkazovánà na sdÃlené prostÅedky Windows funguje jen v Internet Exploreru.\nPÅesto tento odkaz můžete zkopÃrovat a vložit jinde.';
+$lang['qb_alert'] = 'Vložte prosÃm text, který chcete formátovat.\nBude pak pÅidán na konec dokumentu.';
+$lang['qb_bold'] = 'TuÄnÄ';
+$lang['qb_italic'] = 'KurzÃva';
+$lang['qb_underl'] = 'PodtrženÃ';
+$lang['qb_code'] = 'Neformátovat (zdrojový kód)';
+$lang['qb_strike'] = 'PÅeÅ¡krtnutý text';
+$lang['qb_h1'] = 'Nadpis 1. úrovnÄ';
+$lang['qb_h2'] = 'Nadpis 2. úrovnÄ';
+$lang['qb_h3'] = 'Nadpis 3. úrovnÄ';
+$lang['qb_h4'] = 'Nadpis 4. úrovnÄ';
+$lang['qb_h5'] = 'Nadpis 5. úrovnÄ';
+$lang['qb_link'] = 'Internà odkaz';
+$lang['qb_extlink'] = 'Externà odkaz';
+$lang['qb_hr'] = 'Vodorovná Äára';
+$lang['qb_ol'] = 'ÄÃslovaný seznam';
+$lang['qb_ul'] = 'NeÄÃslovaný seznam';
+$lang['qb_media'] = 'Vložit obrázky nebo jiné soubory';
+$lang['qb_sig'] = 'Vložit podpis';
+$lang['qb_smileys'] = 'Emotikony';
+$lang['qb_chars'] = 'Speciálnà znaky';
+$lang['del_confirm'] = 'Vymazat tuto položku?';
+$lang['admin_register'] = 'PÅidat nového uživatele';
+$lang['metaedit'] = 'Upravit Metadata';
+$lang['metasaveerr'] = 'Chyba pÅi zápisu metadat';
+$lang['metasaveok'] = 'Metadata uložena';
+$lang['img_backto'] = 'ZpÄt na';
+$lang['img_title'] = 'Titulek';
+$lang['img_caption'] = 'Popis';
+$lang['img_date'] = 'Datum';
+$lang['img_fname'] = 'Jméno souboru';
+$lang['img_fsize'] = 'Velikost';
+$lang['img_artist'] = 'Autor fotografie';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Formát';
+$lang['img_camera'] = 'Typ fotoaparátu';
+$lang['img_keywords'] = 'KlÃÄová slova';
+$lang['subscribe_success'] = 'Uživatel %s je nynà pÅihlášen k odbÄru zmÄn ve stránce %s';
+$lang['subscribe_error'] = 'Chyba pÅi zaÅazovánà uživatele %s do seznamu pro odbÄr zmÄn ve stránce %s';
+$lang['subscribe_noaddress'] = 'K vaÅ¡emu uživatelskému profilu chybà mailová adresa, takže vás nelze zaÅadit do seznamu pro odbÄr zmÄn';
+$lang['unsubscribe_success'] = 'Uživatel %s byl odebrán ze seznamu pro odbÄr zmÄn ve stránce %s';
+$lang['unsubscribe_error'] = 'Chyba pÅi odstraÅovánà uživatele %s ze seznamu pro odbÄru zmÄn ve stránce %s';
+$lang['authmodfailed'] = 'Autentizace uživatelů je Å¡patnÄ nastavena. Informujte prosÃm správce této wiki.';
+$lang['authtempfail'] = 'Autentizace uživatelů je doÄasnÄ nedostupná. Pokud tento problém pÅetrvává, informujte prosÃm správce této wiki.';
+$lang['i_chooselang'] = 'Vyberte si jazyk';
+$lang['i_installer'] = 'Instalace DokuWiki';
+$lang['i_wikiname'] = 'Název wiki';
+$lang['i_enableacl'] = 'Zapnout ACL (doporuÄeno)';
+$lang['i_superuser'] = 'Správce';
+$lang['i_problems'] = 'Instalátor narazil na nÞe popsané problémy. Nelze pokraÄovat v instalaci, dokud je neopravÃte.';
+$lang['i_modified'] = 'Instalátor bude z bezpeÄnostnÃch důvodů pracovat pouze s Äistou a jeÅ¡tÄ neupravenou instalacà DokuWiki. BuÄ znovu rozbalte souboru z instalaÄnÃho balÃÄku nebo se zkuste poradit s <a href="http://wiki.splitbrain.org/wiki:install">instrukcemi pro instalci DokuWiki</a>.';
+$lang['i_funcna'] = 'PHP funkce <code>%s</code> nenà dostupná. Váš webhosting ji možná z nÄjakého důvodu vypnul.';
+$lang['i_phpver'] = 'Verze vašà instalace PHP <code>%s</code> je nižšà než požadovaná <code>%s</code>. Budete muset aktualizovat svou instalaci PHP.';
+$lang['i_permfail'] = 'DokuWiki nemůže zapisovat do <code>%s</code>. Budete muset opravit práva k tomuto adresáÅi.';
+$lang['i_confexists'] = '<code>%s</code> již existuje';
+$lang['i_writeerr'] = 'Nelze vytvoÅit <code>%s</code>. Budete muset zkontrolovat práva k souborům Äi adresáÅům a vytvoÅit tento soubor ruÄnÄ.';
+$lang['i_badhash'] = 'soubor dokuwiki.php (hash=<code>%s</code>) nebyl rozpoznán nebo byl upraven';
+$lang['i_badval'] = '<code>%s</code> - neplatná nebo prázdná hodnota';
+$lang['i_success'] = 'Konfigurace byla úspÄÅ¡nÄ dokonÄena. Nynà můžete smazat soubor install.php. PokraÄujte do <a href="doku.php">své nové DokuWiki</a>.';
+$lang['i_failure'] = 'Vyskytly se nÄjaké chyby pÅi zápisu do konfiguraÄnÃch souborů. Budete je nejspÃÅ¡ muset upravit ruÄnÄ pÅed použitÃm <a href="doku.php">své nové DokuWiki</a>.';
+$lang['i_policy'] = 'Ãvodnà politika ACL';
+$lang['i_pol0'] = 'OtevÅená wiki (ÄtenÃ, zápis a upload pro vÅ¡echny)';
+$lang['i_pol1'] = 'VeÅejná wiki (Ätenà pro vÅ¡echny, zápis a upload pro registrované uživatele)';
+$lang['i_pol2'] = 'UzavÅená wiki (ÄtenÃ, zápis a upload pouze pro registrované uživatele)';
+$lang['i_retry'] = 'Zkusit znovu';
Modified: site/trunk/www-root/wiki/inc/lang/cs/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Stránka je zamknutá ======
-
-Tato stránka je právÄ zamknutá pro úpravy jiným uživatelem. MusÃte poÄkat, než
-onen uživatel dokonÄà své úpravy nebo než tento zámek vyprÅ¡Ã.
+====== Stránka je zamknutá ======
+
+Tato stránka je právÄ zamknutá pro úpravy jiným uživatelem. MusÃte poÄkat, než
+onen uživatel dokonÄà své úpravy nebo než tento zámek vyprÅ¡Ã.
Modified: site/trunk/www-root/wiki/inc/lang/cs/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== PÅihlášenà ======
-
-MomentálnÄ nejste pÅihlášen(a)! ProsÃm vložte své identifikaÄnà údaje nÞe.
-Pro pÅihlášenà musÃte mÃt zapnuté cookies.
+====== PÅihlášenà ======
+
+MomentálnÄ nejste pÅihlášen(a)! ProsÃm vložte své identifikaÄnà údaje nÞe.
+Pro pÅihlášenà musÃte mÃt zapnuté cookies.
Modified: site/trunk/www-root/wiki/inc/lang/cs/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Stránka ve vašà DokuWiki byla zmÄnÄna. Zde jsou podrobnosti:
-
-Datum : @DATE@
-ProhlÞeÄ : @BROWSER@
-IP adresa : @IPADDRESS@
-Hostitel : @HOSTNAME@
-Stará verze : @OLDPAGE@
-Nová verze : @NEWPAGE@
-KomentáŠ: @SUMMARY@
-Uživatel : @USER@
-
- at DIFF@
-
-
---
-Tato zpráva byla vygenerována systémem DokuWiki
- at DOKUWIKIURL@
+Stránka ve vašà DokuWiki byla zmÄnÄna. Zde jsou podrobnosti:
+
+Datum : @DATE@
+ProhlÞeÄ : @BROWSER@
+IP adresa : @IPADDRESS@
+Hostitel : @HOSTNAME@
+Stará verze : @OLDPAGE@
+Nová verze : @NEWPAGE@
+KomentáŠ: @SUMMARY@
+Uživatel : @USER@
+
+ at DIFF@
+
+
+--
+Tato zpráva byla vygenerována systémem DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/cs/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Stránka s tÃmto názvem jeÅ¡tÄ neexistuje ======
-
-Odkaz vás zavedl na stránku, která jeÅ¡tÄ neexistuje. Můžete ji vytvoÅit stisknutÃm tlaÄÃtka ''VytvoÅit stránku''.
+====== Stránka s tÃmto názvem jeÅ¡tÄ neexistuje ======
+
+Odkaz vás zavedl na stránku, která jeÅ¡tÄ neexistuje. Můžete ji vytvoÅit stisknutÃm tlaÄÃtka ''VytvoÅit stránku''.
Modified: site/trunk/www-root/wiki/inc/lang/cs/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Taková verze neexistuje ======
-
-Zadaná verze neexistuje. StisknÄte tlaÄÃtko ''Staršà verze'' pro seznam starÅ¡Ãch verzà tohoto dokumentu.
+====== Taková verze neexistuje ======
+
+Zadaná verze neexistuje. StisknÄte tlaÄÃtko ''Staršà verze'' pro seznam starÅ¡Ãch verzà tohoto dokumentu.
Modified: site/trunk/www-root/wiki/inc/lang/cs/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-Dobrý den,
-
-Zde jsou pÅihlaÅ¡ovacà informace pro wiki @TITLE@ (@DOKUWIKIURL@)
-
-Jméno : @FULLNAME@
-Uživatelské jméno : @LOGIN@
-Heslo : @PASSWORD@
-
---
-Tato zpráva byla vygenerována systémem DokuWiki
- at DOKUWIKIURL@
+Dobrý den,
+
+Zde jsou pÅihlaÅ¡ovacà informace pro wiki @TITLE@ (@DOKUWIKIURL@)
+
+Jméno : @FULLNAME@
+Uživatelské jméno : @LOGIN@
+Heslo : @PASSWORD@
+
+--
+Tato zpráva byla vygenerována systémem DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/cs/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Náhled ======
-
-Zde je náhled, jak bude dokument vypadat. Pozor: Soubor zatÃm **nenà uložen**!
+====== Náhled ======
+
+Zde je náhled, jak bude dokument vypadat. Pozor: Soubor zatÃm **nenà uložen**!
Modified: site/trunk/www-root/wiki/inc/lang/cs/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Dobrý den,
-
-NÄkdo požádal o nové heslo k vaÅ¡emu uživatelskému úÄtu na wiki @TITLE@ (@DOKUWIKIURL@)
-
-Pokud jste o nové heslo nežádali, ignorujte prosÃm tento mail.
-
-Pro potvrzenÃ, že jste tento požadavek poslali opravdu vy, prosÃm otevÅete následujÃcà odkaz.
-
- at CONFIRM@
-
---
-Tento mail byl automaticky vygenerován systémem DokuWiki
+Dobrý den,
+
+NÄkdo požádal o nové heslo k vaÅ¡emu uživatelskému úÄtu na wiki @TITLE@ (@DOKUWIKIURL@)
+
+Pokud jste o nové heslo nežádali, ignorujte prosÃm tento mail.
+
+Pro potvrzenÃ, že jste tento požadavek poslali opravdu vy, prosÃm otevÅete následujÃcà odkaz.
+
+ at CONFIRM@
+
+--
+Tento mail byl automaticky vygenerován systémem DokuWiki
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/cs/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Tato stránka je pouze pro ÄtenÃ. Můžete si pouze prohlédnout zdrojový kód, ale
-ne ho mÄnit. Zeptejte se správce, pokud si myslÃte, že nÄco nenà v poÅádku.
+Tato stránka je pouze pro ÄtenÃ. Můžete si pouze prohlédnout zdrojový kód, ale
+ne ho mÄnit. Zeptejte se správce, pokud si myslÃte, že nÄco nenà v poÅádku.
Modified: site/trunk/www-root/wiki/inc/lang/cs/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Poslednà úpravy ======
-
-NásledujÃcà stránky byly nedávno zmÄnÄny.
+====== Poslednà úpravy ======
+
+NásledujÃcà stránky byly nedávno zmÄnÄny.
Modified: site/trunk/www-root/wiki/inc/lang/cs/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Zaregistrujte se jako nový uživatel ======
-
-Abyste zÃskali uživatelský úÄet, vyplÅte prosÃm vÅ¡echny informace v následujÃcÃm
-formuláÅi. Zadejte **platnou** mailovou adresu, na nÞ bude zasláno heslo.
-Uživatelské jméno musà být v platném [[doku>wiki:pagename|formátu]] (který je
-stejný jako formát názvu stránky).
+====== Zaregistrujte se jako nový uživatel ======
+
+Abyste zÃskali uživatelský úÄet, vyplÅte prosÃm vÅ¡echny informace v následujÃcÃm
+formuláÅi. Zadejte **platnou** mailovou adresu, na nÞ bude zasláno heslo.
+Uživatelské jméno musà být v platném [[doku>wiki:pagename|formátu]] (který je
+stejný jako formát názvu stránky).
Modified: site/trunk/www-root/wiki/inc/lang/cs/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Zaregistroval se nový uživatel. Zde jsou detaily:
-
-Uživatelské jméno : @NEWUSER@
-Celé jméno : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Datum : @DATE@
-ProhlÞeÄ : @BROWSER@
-IP adresa : @IPADDRESS@
-Hostitel : @HOSTNAME
-
---
-Tato zpráva byla vygenerována systémem DokuWiki
+Zaregistroval se nový uživatel. Zde jsou detaily:
+
+Uživatelské jméno : @NEWUSER@
+Celé jméno : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Datum : @DATE@
+ProhlÞeÄ : @BROWSER@
+IP adresa : @IPADDRESS@
+Hostitel : @HOSTNAME
+
+--
+Tato zpráva byla vygenerována systémem DokuWiki
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/cs/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Zaslat nové heslo ======
-
-Abyste zÃskali nové heslo k vaÅ¡emu uÄtu v této wiki, vyplÅte vÅ¡echny
-nÞe uvedené informace .
-VaÅ¡e nové heslo bude zasláno na emailovou adresu, kterou jste zadali pÅi registraci.
-Uživatelské jméno by mÄlo být stejné jako vaÅ¡e uživatelské jméno,
-s nÃmž se pÅihlaÅ¡ujete do této wiki.
+====== Zaslat nové heslo ======
+
+Abyste zÃskali nové heslo k vaÅ¡emu uÄtu v této wiki, vyplÅte vÅ¡echny
+nÞe uvedené informace .
+VaÅ¡e nové heslo bude zasláno na emailovou adresu, kterou jste zadali pÅi registraci.
+Uživatelské jméno by mÄlo být stejné jako vaÅ¡e uživatelské jméno,
+s nÃmž se pÅihlaÅ¡ujete do této wiki.
Modified: site/trunk/www-root/wiki/inc/lang/cs/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Staršà verze ======
-
-Zde jsou staršà verze daného dokumentu. Pro návrat ke staršà verzi
-si ji zvolte ze seznamu nÞe, stisknÄte tlaÄÃtko ''Upravit stránku''
-a uložte ji.
+====== Staršà verze ======
+
+Zde jsou staršà verze daného dokumentu. Pro návrat ke staršà verzi
+si ji zvolte ze seznamu nÞe, stisknÄte tlaÄÃtko ''Upravit stránku''
+a uložte ji.
Modified: site/trunk/www-root/wiki/inc/lang/cs/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Vyhledávánà ======
-
-Výsledky hledánà můžete vidÄt nÞe. Pokud jste nenaÅ¡li, co hledáte, zkuste
-požadovanou stránku sami vytvoÅit stisknutÃm tlaÄÃtka ''VytvoÅit stránku''.
-
-===== Výsledky =====
+====== Vyhledávánà ======
+
+Výsledky hledánà můžete vidÄt nÞe. Pokud jste nenaÅ¡li, co hledáte, zkuste
+požadovanou stránku sami vytvoÅit stisknutÃm tlaÄÃtka ''VytvoÅit stránku''.
+
+===== Výsledky =====
Modified: site/trunk/www-root/wiki/inc/lang/cs/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Toto je staršà verze dokumentu!**
-----
-
+**Toto je staršà verze dokumentu!**
+----
+
Modified: site/trunk/www-root/wiki/inc/lang/cs/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,944 +1,944 @@
-# Stopwords for Czech - generated from ispell-cs (license: GNU GPL)
-aby
-ako
-akorát
-ale
-and
-ani
-ano
-apod
-asi
-atd
-bÄhem
-bez
-beze
-blÃzko
-bohudÃk
-bohužel
-bokem
-buÄ
-bude
-budem
-budeme
-budeš
-budete
-budiž
-budou
-budu
-bůhvÃco
-bůhvÃÄÃ
-bůhvÃjak
-bůhvÃjaký
-bůhvÃkam
-bůhvÃkde
-bůhvÃkdo
-bůhvÃkdy
-bůhvÃkolik
-bůhvÃkterý
-bůhvÃnaÄ
-bůhvÃproÄ
-bych
-bychom
-byl
-byla
-byli
-bylo
-byly
-bysme
-být
-cca
-cokoli
-cokoliv
-copak
-cosi
-což
-cože
-ÄastÄji
-Äasto
-Äeho
-Äehokoli
-Äehokoliv
-Äehosi
-Äehož
-Äem
-Äemkoli
-Äemkoliv
-Äemsi
-Äemu
-Äemukoli
-Äemukoliv
-Äemusi
-Äemuž
-Äemž
-ÄertvÃco
-ÄertvÃÄÃ
-ÄertvÃjak
-ÄertvÃjaký
-ÄertvÃkam
-ÄertvÃkde
-ÄertvÃkdo
-ÄertvÃkdy
-ÄertvÃkolik
-ÄertvÃkterý
-ÄertvÃnaÄ
-ÄertvÃproÄ
-ÄÃhokoli
-ÄÃhosi
-ÄÃchkoli
-ÄÃchsi
-ÄÃkoli
-ÄÃm
-ÄÃmakoli
-ÄÃmasi
-ÄÃmikoli
-ÄÃmisi
-ÄÃmkoli
-ÄÃmkoliv
-ÄÃmpak
-ÄÃmsi
-ÄÃmukoli
-ÄÃmusi
-ÄÃmž
-ÄÃsi
-dál
-dále
-daleko
-dalÅ¡Ã
-dám
-dle
-dnem
-dnes
-dneska
-dobrá
-dobré
-dobrý
-dobÅe
-docela
-dokonce
-doposavad
-doposud
-doprostÅed
-dosavad
-dospod
-dospodu
-dost
-dosti
-dosud
-dovnitÅ
-eÅ¡tÄ
-formou
-ho
-hodinou
-hodnÄ
-horÅ¡Ã
-hůÅ
-hůÅe
-chceš
-chci
-chtÄl
-jacÃkoli
-jacÃkoliv
-jacÃpak
-jacÃsi
-jak
-jakákoli
-jakákoliv
-jakápak
-jakási
-jaké
-jakéhokoli
-jakéhokoliv
-jakéhopak
-jakéhosi
-jakékoli
-jakékoliv
-jakémkoli
-jakémkoliv
-jakémpak
-jakémsi
-jakémukoli
-jakémukoliv
-jakémupak
-jakémusi
-jaképak
-jakési
-jakmile
-jako
-jakou
-jakoukoli
-jakoukoliv
-jakoupak
-jakousi
-jakož
-jakpak
-jaký
-jakýchkoli
-jakýchkoliv
-jakýchpak
-jakýchsi
-jakýkoli
-jakýkoliv
-jakýmakoli
-jakýmakoliv
-jakýmapak
-jakýmasi
-jakýmikoli
-jakýmikoliv
-jakýmipak
-jakýmisi
-jakýmkoli
-jakýmkoliv
-jakýmpak
-jakýmsi
-jakýpak
-jakýsi
-jakže
-jasné
-jasnÄ
-jde
-je
-jediná
-jediné
-jediný
-jeho
-jehož
-jej
-jejÃ
-jejÃhož
-jejich
-jejichž
-jejÃchž
-jejÃmaž
-jejÃmiž
-jejÃmuž
-jejÃmž
-jejÞ
-jejž
-jelikož
-jemu
-jemuž
-jen
-jenom
-jenž
-jenže
-jestli
-jeÅ¡tÄ
-jež
-ježto
-ji
-jÃ
-jich
-jichž
-jim
-jÃm
-jimi
-jimiž
-jimž
-jÃmž
-jiná
-jinak
-jiné
-jinou
-jiný
-jiných
-jiným
-jisté
-jistÄ
-již
-jÞ
-jménem
-jsem
-jseš
-jsi
-jsme
-jsou
-jste
-kam
-každý
-kde
-kdeco
-kdeÄÃ
-kdejaký
-kdekdo
-kdekterý
-kdepak
-kdesi
-kdo
-kdokoli
-kdokoliv
-kdopak
-kdosi
-kdovÃjak
-kdovÃkde
-kdovÃkdo
-kdož
-kdy
-kdysi
-když
-kohokoli
-kohokoliv
-kohopak
-kohosi
-kohož
-kol
-kolem
-kolik
-kolikže
-kolkolem
-komkoli
-komkoliv
-kompak
-komsi
-komu
-komukoli
-komukoliv
-komupak
-komusi
-komuž
-komž
-koncem
-konÄe
-konÄÃ
-konÄÃc
-konec
-kontra
-kromÄ
-která
-kterákoli
-kterákoliv
-kterási
-kterážto
-které
-kteréhokoli
-kteréhokoliv
-kteréhosi
-kteréhož
-kterékoli
-kterékoliv
-kterém
-kterémkoli
-kterémkoliv
-kterémsi
-kterémukoli
-kterémukoliv
-kterémusi
-kterémuž
-kterémžto
-kterési
-kteréžto
-kterou
-kteroukoli
-kteroukoliv
-kterousi
-kteroužto
-který
-kterýchkoli
-kterýchkoliv
-kterýchsi
-kterýchžto
-kterýkoli
-kterýkoliv
-kterým
-kterýmakoli
-kterýmakoliv
-kterýmasi
-kterýmikoli
-kterýmikoliv
-kterýmisi
-kterýmiž
-kterýmkoli
-kterýmkoliv
-kterýmsi
-kterýmžto
-kterýsi
-kterýžto
-kteÅÃ
-kteÅÃsi
-kteÅÞto
-ktÅÃkoli
-ktÅÃkoliv
-kupodivu
-kupÅÃkladu
-kvůli
-kýmkoli
-kýmkoliv
-kýmpak
-kýmsi
-kýmž
-lecco
-leccos
-lecÄems
-lecjak
-lecjaký
-leckam
-leckams
-leckde
-leckdo
-leckdy
-leckterý
-ledaco
-ledacos
-ledaÄÃ
-ledajak
-ledajaký
-ledakdo
-ledakterý
-ledaskam
-ledaskde
-ledaskdo
-ledaskdy
-lépe
-lepÅ¡Ã
-lÃp
-má
-majÃ
-málo
-máloco
-málokdo
-málokterý
-mám
-máme
-máš
-máte
-max
-mé
-mÄ
-mého
-mÄl
-mÄla
-mÄlo
-mém
-mému
-mezi
-mi
-mÃ
-mimo
-min
-mÃÅ
-mÃsto
-mÃt
-mne
-mnÄ
-mnoho
-mnou
-moc
-mohl
-mohla
-mohou
-mohu
-moje
-moji
-mojÃ
-mou
-možná
-mu
-můj
-musel
-muset
-musÃ
-musÃm
-musÃÅ¡
-musÃte
-může
-můžeš
-můžete
-můžu
-my
-mých
-mým
-mými
-naÄ
-naÄež
-naÄpak
-nad
-nade
-nám
-námi
-namÃsto
-naÅ
-naprosto
-naproti
-napÅ
-napÅÃÄ
-nás
-náš
-naši
-navÃc
-navrch
-navrchu
-navzdory
-nÄ
-nebo
-nebude
-nebyl
-nebyli
-nebyly
-nÄco
-nÄÄÃ
-nedaleko
-nehledÃc
-nÄho
-nÄhož
-nechceš
-nechci
-nechť
-nechtÄl
-nÄj
-nÄjak
-nÄjaká
-nÄjaké
-nÄjakého
-nÄjakou
-nÄjaký
-nejasné
-nejasný
-nejÄastÄji
-nejde
-nejen
-nejhůÅ
-nejhůÅe
-nejlépe
-nejnižšÃ
-nejsem
-nejsou
-nejvyššÃ
-nÄjž
-nÄkam
-nÄkde
-nÄkdo
-nÄkdy
-nÄkolik
-nekonÄÃ
-nÄkterý
-nelze
-nÄm
-nemá
-nemajÃ
-nemálo
-nemám
-nemáme
-nemáš
-nemáte
-nemÃt
-nemohl
-nemohla
-nemohou
-nemohu
-nÄmu
-nemusel
-nemuset
-nemusÃ
-nemusÃm
-nemusÃÅ¡
-nÄmuž
-nemůže
-nemůžeš
-nemůžete
-nemůžu
-nÄmž
-nenÃ
-nepÅesná
-nepÅesné
-nepÅesnÄ
-nepÅesný
-nepÅÃmo
-netÅeba
-netuÅ¡Ãm
-netýká
-nevÃ
-nevÃm
-nevÃÅ¡
-nevlastnÃ
-nevyjÃmaje
-nevyjÃmajÃc
-než
-nÄž
-ni
-nÃ
-nic
-niÄeho
-niÄem
-niÄemu
-niÄÃ
-niÄÃm
-nie
-nieje
-nich
-nichž
-nijaký
-nikdo
-nikto
-nim
-nÃm
-nimi
-nimiž
-nimž
-nÃmž
-nÃzká
-niž
-nÞ
-nižádný
-nÞe
-nižšÃ
-nový
-nutnÄ
-oba
-obÄ
-obÄma
-obou
-oÄ
-oÄpak
-ode
-odspoda
-odspodu
-ohlednÄ
-okamžikem
-okolo
-on
-oÅ
-ona
-onen
-oni
-ono
-ony
-opravdu
-oproti
-ostatnÃ
-osum
-pak
-poblÞ
-poÄátkem
-poÄÃnaje
-poÄÃnajÃc
-pod
-pode
-podél
-podle
-podobnÄ
-pokud
-pomÄrnÄ
-pomocÃ
-ponad
-poÅád
-poslednÃ
-posléze
-posud
-potom
-pražádný
-pro
-proÄ
-proÄpak
-proÅ
-prostÄ
-proti
-proto
-protože
-pÅed
-pÅede
-pÅedem
-pÅes
-pÅese
-pÅesná
-pÅesné
-pÅesnÄ
-pÅesný
-pÅi
-pÅiÄemž
-pÅÃmo
-pÅÃpadná
-pÅÃpadné
-pÅÃpadnÄ
-pÅÃpadný
-pÅitom
-půlÃ
-radÄji
-rokem
-sám
-sama
-samá
-samé
-samého
-samém
-samému
-sami
-samo
-samou
-samozÅejmÄ
-samozÅejmý
-samu
-samy
-samý
-samých
-samým
-samými
-se
-sebe
-sebou
-sem
-ses
-si
-sice
-sis
-skoro
-skrz
-skrze
-snad
-sobÄ
-som
-sotva
-sotvaco
-sotvakdo
-spÃÅ¡
-spÃÅ¡e
-spodem
-spolu
-staÄÃ
-stejnÄ
-stranou
-stÅedem
-svá
-své
-svého
-svém
-svému
-svÃ
-svoje
-svoji
-svojÃ
-svou
-svrchu
-svůj
-svých
-svým
-svými
-špatná
-špatné
-Å¡patnÄ
-špatný
-tacÃ
-tady
-tahle
-tak
-taká
-také
-takhle
-takováto
-takové
-takovéhoto
-takovémto
-takovémuto
-takovéto
-takovÃto
-takovouto
-takový
-takovýchto
-takovýma
-takovýmato
-takovýmito
-takovýmto
-takovýto
-takto
-taky
-taký
-takže
-tam
-tamten
-tatáž
-tato
-táž
-tÄ
-tebe
-tebou
-teÄ
-teda
-tedy
-téhle
-téhož
-tÄchhle
-tÄchto
-tÄchže
-tÄm
-téma
-tÄmahle
-tÄmhle
-tÄmihle
-tÄmito
-tÄmto
-tÄmu
-témuž
-témž
-témže
-ten
-tenhle
-tenhleten
-tento
-tentýž
-této
-téže
-ti
-tihle
-tÃm
-tÃmhle
-tÃmtéž
-tÃmto
-titÞ
-tito
-tÞ
-tobÄ
-tohle
-toho
-tohohle
-tohoto
-tom
-tomhle
-tomtéž
-tomto
-tomu
-tomuhle
-tomuto
-totéž
-toto
-touhle
-toutéž
-touto
-touž
-touže
-trochu
-trošku
-tÅeba
-tuhle
-tutéž
-tuto
-tvá
-tvé
-tvého
-tvém
-tvému
-tvÃ
-tvoje
-tvoji
-tvojÃ
-tvou
-tvůj
-tvých
-tvým
-tvými
-ty
-tyhle
-týchž
-týká
-týmiž
-týmž
-tys
-tytéž
-tyto
-týž
-úderem
-uplná
-uplné
-úplnÄ
-úplný
-uprostÅed
-urÄitÄ
-uvnitÅ
-úvodem
-vám
-vámi
-vás
-váš
-vaše
-vaši
-vÄetnÄ
-vedle
-velmi
-veprostÅed
-versus
-vespod
-vespodu
-veškerý
-vevnitÅ
-vÃc
-vÃce
-vÃm
-vinou
-vÃÅ¡
-viz
-vlastnÄ
-vlivem
-vnÄ
-vnitÅka
-vnitÅkem
-vnitÅku
-von
-vrchem
-však
-vše
-všecek
-všecka
-všecko
-všecky
-všeho
-všech
-všechen
-všechna
-všechno
-všechnu
-všechny
-všelico
-všelicos
-vÅ¡eliÄehos
-vÅ¡eliÄems
-vÅ¡eliÄemus
-vÅ¡eliÄÃ
-vÅ¡eliÄÃms
-všelijaký
-všelikdo
-všeliký
-všeliskdo
-všem
-všemi
-všemu
-vši
-vÅ¡Ã
-všicci
-všichni
-vÅ¡Ãm
-vůbec
-vůÄi
-vy
-vyjma
-vysoká
-výše
-vyššÃ
-vzdor
-vzhledem
-vždy
-za
-zaÄ
-zaÄátkem
-zaÄpak
-zaÅ
-zásluhou
-zatÃm
-závÄrem
-zboku
-zcela
-zÄásti
-zda
-zdaleka
-zde
-zespoda
-zespodu
-zevnitÅ
-zeza
-znovu
-zpÄt
-zpod
-zponad
-zpoza
-zprostÅed
-zÅÃdkaco
-zÅÃdkakdo
-zvnitÅka
-zvnitÅku
-žádný
+# Stopwords for Czech - generated from ispell-cs (license: GNU GPL)
+aby
+ako
+akorát
+ale
+and
+ani
+ano
+apod
+asi
+atd
+bÄhem
+bez
+beze
+blÃzko
+bohudÃk
+bohužel
+bokem
+buÄ
+bude
+budem
+budeme
+budeš
+budete
+budiž
+budou
+budu
+bůhvÃco
+bůhvÃÄÃ
+bůhvÃjak
+bůhvÃjaký
+bůhvÃkam
+bůhvÃkde
+bůhvÃkdo
+bůhvÃkdy
+bůhvÃkolik
+bůhvÃkterý
+bůhvÃnaÄ
+bůhvÃproÄ
+bych
+bychom
+byl
+byla
+byli
+bylo
+byly
+bysme
+být
+cca
+cokoli
+cokoliv
+copak
+cosi
+což
+cože
+ÄastÄji
+Äasto
+Äeho
+Äehokoli
+Äehokoliv
+Äehosi
+Äehož
+Äem
+Äemkoli
+Äemkoliv
+Äemsi
+Äemu
+Äemukoli
+Äemukoliv
+Äemusi
+Äemuž
+Äemž
+ÄertvÃco
+ÄertvÃÄÃ
+ÄertvÃjak
+ÄertvÃjaký
+ÄertvÃkam
+ÄertvÃkde
+ÄertvÃkdo
+ÄertvÃkdy
+ÄertvÃkolik
+ÄertvÃkterý
+ÄertvÃnaÄ
+ÄertvÃproÄ
+ÄÃhokoli
+ÄÃhosi
+ÄÃchkoli
+ÄÃchsi
+ÄÃkoli
+ÄÃm
+ÄÃmakoli
+ÄÃmasi
+ÄÃmikoli
+ÄÃmisi
+ÄÃmkoli
+ÄÃmkoliv
+ÄÃmpak
+ÄÃmsi
+ÄÃmukoli
+ÄÃmusi
+ÄÃmž
+ÄÃsi
+dál
+dále
+daleko
+dalÅ¡Ã
+dám
+dle
+dnem
+dnes
+dneska
+dobrá
+dobré
+dobrý
+dobÅe
+docela
+dokonce
+doposavad
+doposud
+doprostÅed
+dosavad
+dospod
+dospodu
+dost
+dosti
+dosud
+dovnitÅ
+eÅ¡tÄ
+formou
+ho
+hodinou
+hodnÄ
+horÅ¡Ã
+hůÅ
+hůÅe
+chceš
+chci
+chtÄl
+jacÃkoli
+jacÃkoliv
+jacÃpak
+jacÃsi
+jak
+jakákoli
+jakákoliv
+jakápak
+jakási
+jaké
+jakéhokoli
+jakéhokoliv
+jakéhopak
+jakéhosi
+jakékoli
+jakékoliv
+jakémkoli
+jakémkoliv
+jakémpak
+jakémsi
+jakémukoli
+jakémukoliv
+jakémupak
+jakémusi
+jaképak
+jakési
+jakmile
+jako
+jakou
+jakoukoli
+jakoukoliv
+jakoupak
+jakousi
+jakož
+jakpak
+jaký
+jakýchkoli
+jakýchkoliv
+jakýchpak
+jakýchsi
+jakýkoli
+jakýkoliv
+jakýmakoli
+jakýmakoliv
+jakýmapak
+jakýmasi
+jakýmikoli
+jakýmikoliv
+jakýmipak
+jakýmisi
+jakýmkoli
+jakýmkoliv
+jakýmpak
+jakýmsi
+jakýpak
+jakýsi
+jakže
+jasné
+jasnÄ
+jde
+je
+jediná
+jediné
+jediný
+jeho
+jehož
+jej
+jejÃ
+jejÃhož
+jejich
+jejichž
+jejÃchž
+jejÃmaž
+jejÃmiž
+jejÃmuž
+jejÃmž
+jejÞ
+jejž
+jelikož
+jemu
+jemuž
+jen
+jenom
+jenž
+jenže
+jestli
+jeÅ¡tÄ
+jež
+ježto
+ji
+jÃ
+jich
+jichž
+jim
+jÃm
+jimi
+jimiž
+jimž
+jÃmž
+jiná
+jinak
+jiné
+jinou
+jiný
+jiných
+jiným
+jisté
+jistÄ
+již
+jÞ
+jménem
+jsem
+jseš
+jsi
+jsme
+jsou
+jste
+kam
+každý
+kde
+kdeco
+kdeÄÃ
+kdejaký
+kdekdo
+kdekterý
+kdepak
+kdesi
+kdo
+kdokoli
+kdokoliv
+kdopak
+kdosi
+kdovÃjak
+kdovÃkde
+kdovÃkdo
+kdož
+kdy
+kdysi
+když
+kohokoli
+kohokoliv
+kohopak
+kohosi
+kohož
+kol
+kolem
+kolik
+kolikže
+kolkolem
+komkoli
+komkoliv
+kompak
+komsi
+komu
+komukoli
+komukoliv
+komupak
+komusi
+komuž
+komž
+koncem
+konÄe
+konÄÃ
+konÄÃc
+konec
+kontra
+kromÄ
+která
+kterákoli
+kterákoliv
+kterási
+kterážto
+které
+kteréhokoli
+kteréhokoliv
+kteréhosi
+kteréhož
+kterékoli
+kterékoliv
+kterém
+kterémkoli
+kterémkoliv
+kterémsi
+kterémukoli
+kterémukoliv
+kterémusi
+kterémuž
+kterémžto
+kterési
+kteréžto
+kterou
+kteroukoli
+kteroukoliv
+kterousi
+kteroužto
+který
+kterýchkoli
+kterýchkoliv
+kterýchsi
+kterýchžto
+kterýkoli
+kterýkoliv
+kterým
+kterýmakoli
+kterýmakoliv
+kterýmasi
+kterýmikoli
+kterýmikoliv
+kterýmisi
+kterýmiž
+kterýmkoli
+kterýmkoliv
+kterýmsi
+kterýmžto
+kterýsi
+kterýžto
+kteÅÃ
+kteÅÃsi
+kteÅÞto
+ktÅÃkoli
+ktÅÃkoliv
+kupodivu
+kupÅÃkladu
+kvůli
+kýmkoli
+kýmkoliv
+kýmpak
+kýmsi
+kýmž
+lecco
+leccos
+lecÄems
+lecjak
+lecjaký
+leckam
+leckams
+leckde
+leckdo
+leckdy
+leckterý
+ledaco
+ledacos
+ledaÄÃ
+ledajak
+ledajaký
+ledakdo
+ledakterý
+ledaskam
+ledaskde
+ledaskdo
+ledaskdy
+lépe
+lepÅ¡Ã
+lÃp
+má
+majÃ
+málo
+máloco
+málokdo
+málokterý
+mám
+máme
+máš
+máte
+max
+mé
+mÄ
+mého
+mÄl
+mÄla
+mÄlo
+mém
+mému
+mezi
+mi
+mÃ
+mimo
+min
+mÃÅ
+mÃsto
+mÃt
+mne
+mnÄ
+mnoho
+mnou
+moc
+mohl
+mohla
+mohou
+mohu
+moje
+moji
+mojÃ
+mou
+možná
+mu
+můj
+musel
+muset
+musÃ
+musÃm
+musÃÅ¡
+musÃte
+může
+můžeš
+můžete
+můžu
+my
+mých
+mým
+mými
+naÄ
+naÄež
+naÄpak
+nad
+nade
+nám
+námi
+namÃsto
+naÅ
+naprosto
+naproti
+napÅ
+napÅÃÄ
+nás
+náš
+naši
+navÃc
+navrch
+navrchu
+navzdory
+nÄ
+nebo
+nebude
+nebyl
+nebyli
+nebyly
+nÄco
+nÄÄÃ
+nedaleko
+nehledÃc
+nÄho
+nÄhož
+nechceš
+nechci
+nechť
+nechtÄl
+nÄj
+nÄjak
+nÄjaká
+nÄjaké
+nÄjakého
+nÄjakou
+nÄjaký
+nejasné
+nejasný
+nejÄastÄji
+nejde
+nejen
+nejhůÅ
+nejhůÅe
+nejlépe
+nejnižšÃ
+nejsem
+nejsou
+nejvyššÃ
+nÄjž
+nÄkam
+nÄkde
+nÄkdo
+nÄkdy
+nÄkolik
+nekonÄÃ
+nÄkterý
+nelze
+nÄm
+nemá
+nemajÃ
+nemálo
+nemám
+nemáme
+nemáš
+nemáte
+nemÃt
+nemohl
+nemohla
+nemohou
+nemohu
+nÄmu
+nemusel
+nemuset
+nemusÃ
+nemusÃm
+nemusÃÅ¡
+nÄmuž
+nemůže
+nemůžeš
+nemůžete
+nemůžu
+nÄmž
+nenÃ
+nepÅesná
+nepÅesné
+nepÅesnÄ
+nepÅesný
+nepÅÃmo
+netÅeba
+netuÅ¡Ãm
+netýká
+nevÃ
+nevÃm
+nevÃÅ¡
+nevlastnÃ
+nevyjÃmaje
+nevyjÃmajÃc
+než
+nÄž
+ni
+nÃ
+nic
+niÄeho
+niÄem
+niÄemu
+niÄÃ
+niÄÃm
+nie
+nieje
+nich
+nichž
+nijaký
+nikdo
+nikto
+nim
+nÃm
+nimi
+nimiž
+nimž
+nÃmž
+nÃzká
+niž
+nÞ
+nižádný
+nÞe
+nižšÃ
+nový
+nutnÄ
+oba
+obÄ
+obÄma
+obou
+oÄ
+oÄpak
+ode
+odspoda
+odspodu
+ohlednÄ
+okamžikem
+okolo
+on
+oÅ
+ona
+onen
+oni
+ono
+ony
+opravdu
+oproti
+ostatnÃ
+osum
+pak
+poblÞ
+poÄátkem
+poÄÃnaje
+poÄÃnajÃc
+pod
+pode
+podél
+podle
+podobnÄ
+pokud
+pomÄrnÄ
+pomocÃ
+ponad
+poÅád
+poslednÃ
+posléze
+posud
+potom
+pražádný
+pro
+proÄ
+proÄpak
+proÅ
+prostÄ
+proti
+proto
+protože
+pÅed
+pÅede
+pÅedem
+pÅes
+pÅese
+pÅesná
+pÅesné
+pÅesnÄ
+pÅesný
+pÅi
+pÅiÄemž
+pÅÃmo
+pÅÃpadná
+pÅÃpadné
+pÅÃpadnÄ
+pÅÃpadný
+pÅitom
+půlÃ
+radÄji
+rokem
+sám
+sama
+samá
+samé
+samého
+samém
+samému
+sami
+samo
+samou
+samozÅejmÄ
+samozÅejmý
+samu
+samy
+samý
+samých
+samým
+samými
+se
+sebe
+sebou
+sem
+ses
+si
+sice
+sis
+skoro
+skrz
+skrze
+snad
+sobÄ
+som
+sotva
+sotvaco
+sotvakdo
+spÃÅ¡
+spÃÅ¡e
+spodem
+spolu
+staÄÃ
+stejnÄ
+stranou
+stÅedem
+svá
+své
+svého
+svém
+svému
+svÃ
+svoje
+svoji
+svojÃ
+svou
+svrchu
+svůj
+svých
+svým
+svými
+špatná
+špatné
+Å¡patnÄ
+špatný
+tacÃ
+tady
+tahle
+tak
+taká
+také
+takhle
+takováto
+takové
+takovéhoto
+takovémto
+takovémuto
+takovéto
+takovÃto
+takovouto
+takový
+takovýchto
+takovýma
+takovýmato
+takovýmito
+takovýmto
+takovýto
+takto
+taky
+taký
+takže
+tam
+tamten
+tatáž
+tato
+táž
+tÄ
+tebe
+tebou
+teÄ
+teda
+tedy
+téhle
+téhož
+tÄchhle
+tÄchto
+tÄchže
+tÄm
+téma
+tÄmahle
+tÄmhle
+tÄmihle
+tÄmito
+tÄmto
+tÄmu
+témuž
+témž
+témže
+ten
+tenhle
+tenhleten
+tento
+tentýž
+této
+téže
+ti
+tihle
+tÃm
+tÃmhle
+tÃmtéž
+tÃmto
+titÞ
+tito
+tÞ
+tobÄ
+tohle
+toho
+tohohle
+tohoto
+tom
+tomhle
+tomtéž
+tomto
+tomu
+tomuhle
+tomuto
+totéž
+toto
+touhle
+toutéž
+touto
+touž
+touže
+trochu
+trošku
+tÅeba
+tuhle
+tutéž
+tuto
+tvá
+tvé
+tvého
+tvém
+tvému
+tvÃ
+tvoje
+tvoji
+tvojÃ
+tvou
+tvůj
+tvých
+tvým
+tvými
+ty
+tyhle
+týchž
+týká
+týmiž
+týmž
+tys
+tytéž
+tyto
+týž
+úderem
+uplná
+uplné
+úplnÄ
+úplný
+uprostÅed
+urÄitÄ
+uvnitÅ
+úvodem
+vám
+vámi
+vás
+váš
+vaše
+vaši
+vÄetnÄ
+vedle
+velmi
+veprostÅed
+versus
+vespod
+vespodu
+veškerý
+vevnitÅ
+vÃc
+vÃce
+vÃm
+vinou
+vÃÅ¡
+viz
+vlastnÄ
+vlivem
+vnÄ
+vnitÅka
+vnitÅkem
+vnitÅku
+von
+vrchem
+však
+vše
+všecek
+všecka
+všecko
+všecky
+všeho
+všech
+všechen
+všechna
+všechno
+všechnu
+všechny
+všelico
+všelicos
+vÅ¡eliÄehos
+vÅ¡eliÄems
+vÅ¡eliÄemus
+vÅ¡eliÄÃ
+vÅ¡eliÄÃms
+všelijaký
+všelikdo
+všeliký
+všeliskdo
+všem
+všemi
+všemu
+vši
+vÅ¡Ã
+všicci
+všichni
+vÅ¡Ãm
+vůbec
+vůÄi
+vy
+vyjma
+vysoká
+výše
+vyššÃ
+vzdor
+vzhledem
+vždy
+za
+zaÄ
+zaÄátkem
+zaÄpak
+zaÅ
+zásluhou
+zatÃm
+závÄrem
+zboku
+zcela
+zÄásti
+zda
+zdaleka
+zde
+zespoda
+zespodu
+zevnitÅ
+zeza
+znovu
+zpÄt
+zpod
+zponad
+zpoza
+zprostÅed
+zÅÃdkaco
+zÅÃdkakdo
+zvnitÅka
+zvnitÅku
+žádný
Modified: site/trunk/www-root/wiki/inc/lang/cs/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Dobrý den,
-
-Stránka @PAGE@ ve wiki @TITLE@ se zmÄnila.
-Tady jsou detaily:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Pro odhlášenà z odbÄru zmÄn pro tuto stránku se pÅihlaÅ¡te do wiki
- at DOKUWIKIURL@ a vstupte na stránku
- at NEWPAGE@, kde stisknete tlaÄÃtko "NeodebÃrat zmÄny mailem".
-
---
-Tato zpráva byla vygenerována systémem DokuWiki
- at DOKUWIKIURL@
+Dobrý den,
+
+Stránka @PAGE@ ve wiki @TITLE@ se zmÄnila.
+Tady jsou detaily:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Pro odhlášenà z odbÄru zmÄn pro tuto stránku se pÅihlaÅ¡te do wiki
+ at DOKUWIKIURL@ a vstupte na stránku
+ at NEWPAGE@, kde stisknete tlaÄÃtko "NeodebÃrat zmÄny mailem".
+
+--
+Tato zpráva byla vygenerována systémem DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/cs/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Upravit profil vaÅ¡eho uÄtu ======
-
-VyplÅte pouze pole, která chcete zmÄnit. Nemůžete ale zmÄnit své uživatelské jméno.
-
-
+====== Upravit profil vaÅ¡eho uÄtu ======
+
+VyplÅte pouze pole, která chcete zmÄnit. Nemůžete ale zmÄnit své uživatelské jméno.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/cs/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Do vašà DokuWiki byl nahrán nový dokument. Tady jsou detaily:
-
-Soubor : @MEDIA@
-Datum : @DATE@
-ProhlážeÄ : @BROWSER@
-IP adresa : @IPADDRESS@
-Hostitel : @HOSTNAME@
-Velikost : @SIZE@
-MIME typ : @MIME@
-Uživatel : @USER@
-
---
-Tato zpráva byla vygenerována systémem DokuWiki
+Do vašà DokuWiki byl nahrán nový dokument. Tady jsou detaily:
+
+Soubor : @MEDIA@
+Datum : @DATE@
+ProhlážeÄ : @BROWSER@
+IP adresa : @IPADDRESS@
+Hostitel : @HOSTNAME@
+Velikost : @SIZE@
+MIME typ : @MIME@
+Uživatel : @USER@
+
+--
+Tato zpráva byla vygenerována systémem DokuWiki
@DOKUWIKIUR
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/cs/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/cs/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/cs/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== SPAM nebyl povolen ======
-
-VaÅ¡e zmÄny **nebyly uloženy**, protože obsahujà jedno nebo vÃce nepovolených slov.
-Wiki si nepotrpà na spam! Pokud se domnÃváte, že jde o omyl, kontaktujte správce.
+====== SPAM nebyl povolen ======
+
+VaÅ¡e zmÄny **nebyly uloženy**, protože obsahujà jedno nebo vÃce nepovolených slov.
+Wiki si nepotrpà na spam! Pokud se domnÃváte, že jde o omyl, kontaktujte správce.
Modified: site/trunk/www-root/wiki/inc/lang/da/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administration ======
-
-Nedenfor kan du finde en række administrative værktøjer.
-
+====== Administration ======
+
+Nedenfor kan du finde en række administrative værktøjer.
+
Modified: site/trunk/www-root/wiki/inc/lang/da/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Henvisninger bagud ======
-
-Dette er en liste over alle de dokumenter der henviser tilbage til det nuværende dokument.
-
+====== Henvisninger bagud ======
+
+Dette er en liste over alle de dokumenter der henviser tilbage til det nuværende dokument.
+
Modified: site/trunk/www-root/wiki/inc/lang/da/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Der eksisterer en nyere udgave af dokumentet ======
-
-Der eksisterer en nyere udgave af dette dokument. Det sker når flere brugere ændrer i dokumentet på samme tid.
-
-Gennemgå de viste forskelle grundigt, og beslut hvilken udgave der skal bevares. Hvis du vælger ''Gem'', bliver din udgave af dokumentet gemt. Vælger du ''Fortryd'' beholder du den nuværende udgave.
+====== Der eksisterer en nyere udgave af dokumentet ======
+
+Der eksisterer en nyere udgave af dette dokument. Det sker når flere brugere ændrer i dokumentet på samme tid.
+
+Gennemgå de viste forskelle grundigt, og beslut hvilken udgave der skal bevares. Hvis du vælger ''Gem'', bliver din udgave af dokumentet gemt. Vælger du ''Fortryd'' beholder du den nuværende udgave.
Modified: site/trunk/www-root/wiki/inc/lang/da/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Adgang nægtet!======
-
-Du har ikke rettigheder til at fortsætte. Måske er du ikke logget ind.
+====== Adgang nægtet!======
+
+Du har ikke rettigheder til at fortsætte. Måske er du ikke logget ind.
Modified: site/trunk/www-root/wiki/inc/lang/da/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Forskelle ======
-
-Dette viser forskellene mellem den valgte og den nuværende udgave af dokumentet. Gul er linjer der findes i den gamle udgave, og grøn er linjer der findes i den nuværende.
-
+====== Forskelle ======
+
+Dette viser forskellene mellem den valgte og den nuværende udgave af dokumentet. Gul er linjer der findes i den gamle udgave, og grøn er linjer der findes i den nuværende.
+
Modified: site/trunk/www-root/wiki/inc/lang/da/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Kladdefil fundet ======
-
-Din sidste redigeringssession på denne side blev ikke afsluttet korrekt. DokuWiki
-har automatisk gemt en kladde mens du arbejdede, som du kan benytte til at fortsætte redigeringen. Forneden kan du se de datader blev gemt fra din sidste session.
-
-Vælg venligst, om du vil //gendanne// din tabte redigering, //slette//
-den gemte kladde eller //afbryde// redigeringen.
-
+====== Kladdefil fundet ======
+
+Din sidste redigeringssession på denne side blev ikke afsluttet korrekt. DokuWiki
+har automatisk gemt en kladde mens du arbejdede, som du kan benytte til at fortsætte redigeringen. Forneden kan du se de datader blev gemt fra din sidste session.
+
+Vælg venligst, om du vil //gendanne// din tabte redigering, //slette//
+den gemte kladde eller //afbryde// redigeringen.
+
Modified: site/trunk/www-root/wiki/inc/lang/da/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Rediger dette dokument og tryk på knappen **''[Gem]''**. Se [[wiki:syntax|Formaterings tips]]
-for Wiki syntaks. Ret venligst kun dette dokument hvis du kan **forbedre** det. Brug venligst
-[[playground:playground|sandkassen]] til at teste før du retter i et rigtigt dokument.
-Husk også at bruge **''[Forhåndsvisning]''** før du gemmer dokumentet.
-
+Rediger dette dokument og tryk på knappen **''[Gem]''**. Se [[wiki:syntax|Formaterings tips]]
+for Wiki syntaks. Ret venligst kun dette dokument hvis du kan **forbedre** det. Brug venligst
+[[playground:playground|sandkassen]] til at teste før du retter i et rigtigt dokument.
+Husk også at bruge **''[Forhåndsvisning]''** før du gemmer dokumentet.
+
Modified: site/trunk/www-root/wiki/inc/lang/da/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Du har hentet en gammel udgave af dette dokument!** Hvis du gemmer
-dokumentet vil du overskrive den nuværende med den gamle udgave.
-----
+**Du har hentet en gammel udgave af dette dokument!** Hvis du gemmer
+dokumentet vil du overskrive den nuværende med den gamle udgave.
+----
Modified: site/trunk/www-root/wiki/inc/lang/da/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Indeks ======
-
-Dette er en oversigt over alle tilgængelige dokumenter, sorteret efter
-[[doku>wiki:navnerum|navnerum]].
+====== Indeks ======
+
+Dette er en oversigt over alle tilgængelige dokumenter, sorteret efter
+[[doku>wiki:navnerum|navnerum]].
Modified: site/trunk/www-root/wiki/inc/lang/da/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,36 +1,36 @@
-<p>Denne side hjælper til første-gangs installation og konfiguration af
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mere information om denne
-installer er tilgængelig på dens egen
-<a href="http://wiki.splitbrain.org/wiki:installer">dokumentations side</a>.</p>
-
-<p>DokuWiki bruger almindelige filer til at gemme wiki sider og anden
-information relaterende til disse sider (f.eks. billeder, søge indeks, gamle
-udgaver, osv). For at fungerer optimalt <strong>skal</strong> DokuWiki have
-skrive adgang til mapperne der holder disse filer. Denne installer er ikke
-istand til at opsætte mappe tilladelser. Det skal normalt udføres direkte i en
-kommando shell eller hvis du bruger hosting, gennem FTP eller dit hostings
-kontrol panel (f.eks. cPanel).</p>
-
-<p>Denne installer vil opsætte din DokuWiki konfiguration for
-<acronym title="access control list">ACL</acronym>, hvilket tillader
-administrator login og adgang til DokuWiki's adminstrative menu til
-installation af plugins, håndtering af brugere, håndtering af adgang til wiki
-sider og ændring af konfigurations indstillinger. Det er ikke et krav for at
-DokuWiki kan fungere, men det vil gøre DokuWiki lettere at administre.</p>
-
-<p>Erfarne brugere og brugere med specielle opsætningskrav burde bruge disse
-henvisninger for detaljer vedrørende
-<a href="http://wiki.splitbrain.org/wiki:install">installations instruktioner</a>
-og <a href="http://wiki.splitbrain.org/wiki:config">konfigurations indstillinger</a>.</p>
-
-<p>This installer will setup your DokuWiki configuration for
-<acronym title="access control list">ACL</acronym>, which in turn allows administrator
-login and access to DokuWiki's admin menu for installing plugins, managing
-users, managing access to wiki pages and alteration of configuration settings.
-It isn't required for DokuWiki to operate, however it will make Dokuwiki easier
-to administer.</p>
-
-<p>Experienced users or users with special setup requirements should use these links
-for details concerning
-<a href="http://wiki.splitbrain.org/wiki:install">installation instructions</a>
-and <a href="http://wiki.splitbrain.org/wiki:config">configuration settings</a>.</p>
+<p>Denne side hjælper til første-gangs installation og konfiguration af
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mere information om denne
+installer er tilgængelig på dens egen
+<a href="http://wiki.splitbrain.org/wiki:installer">dokumentations side</a>.</p>
+
+<p>DokuWiki bruger almindelige filer til at gemme wiki sider og anden
+information relaterende til disse sider (f.eks. billeder, søge indeks, gamle
+udgaver, osv). For at fungerer optimalt <strong>skal</strong> DokuWiki have
+skrive adgang til mapperne der holder disse filer. Denne installer er ikke
+istand til at opsætte mappe tilladelser. Det skal normalt udføres direkte i en
+kommando shell eller hvis du bruger hosting, gennem FTP eller dit hostings
+kontrol panel (f.eks. cPanel).</p>
+
+<p>Denne installer vil opsætte din DokuWiki konfiguration for
+<acronym title="access control list">ACL</acronym>, hvilket tillader
+administrator login og adgang til DokuWiki's adminstrative menu til
+installation af plugins, håndtering af brugere, håndtering af adgang til wiki
+sider og ændring af konfigurations indstillinger. Det er ikke et krav for at
+DokuWiki kan fungere, men det vil gøre DokuWiki lettere at administre.</p>
+
+<p>Erfarne brugere og brugere med specielle opsætningskrav burde bruge disse
+henvisninger for detaljer vedrørende
+<a href="http://wiki.splitbrain.org/wiki:install">installations instruktioner</a>
+og <a href="http://wiki.splitbrain.org/wiki:config">konfigurations indstillinger</a>.</p>
+
+<p>This installer will setup your DokuWiki configuration for
+<acronym title="access control list">ACL</acronym>, which in turn allows administrator
+login and access to DokuWiki's admin menu for installing plugins, managing
+users, managing access to wiki pages and alteration of configuration settings.
+It isn't required for DokuWiki to operate, however it will make Dokuwiki easier
+to administer.</p>
+
+<p>Experienced users or users with special setup requirements should use these links
+for details concerning
+<a href="http://wiki.splitbrain.org/wiki:install">installation instructions</a>
+and <a href="http://wiki.splitbrain.org/wiki:config">configuration settings</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/da/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,226 +1,209 @@
-<?php
-/**
- * danish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author koeppe <koeppe at kazur.dk>
- * @author Jon Bendtsen <bendtsen at diku.dk>
- * @author Lars Næsbye Christensen <larsnaesbye at stud.ku.dk>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';//„
-$lang['doublequoteclosing'] = 'â';//“
-$lang['singlequoteopening'] = 'â';//‚
-$lang['singlequoteclosing'] = 'â';//‘
-
-$lang['btn_edit'] = 'Rediger dette dokument';
-$lang['btn_source'] = 'Vis kildekode';
-$lang['btn_show'] = 'Vis dokument';
-$lang['btn_create'] = 'Opret dette dokument';
-$lang['btn_search'] = 'Søg';
-$lang['btn_save'] = 'Gem';
-$lang['btn_preview']= 'Forhåndsvisning';
-$lang['btn_top'] = 'Tilbage til toppen';
-$lang['btn_newer'] = '<< forrige side';
-$lang['btn_older'] = 'næste side >>';
-$lang['btn_revs'] = 'Gamle udgaver';
-$lang['btn_recent'] = 'Nye ændringer';
-$lang['btn_upload'] = 'Upload';
-$lang['btn_cancel'] = 'Fortryd';
-$lang['btn_index'] = 'Indeks';
-$lang['btn_secedit']= 'Rediger';
-$lang['btn_login'] = 'Log ind';
-$lang['btn_logout'] = 'Log ud';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Opdater';
-$lang['btn_delete'] = 'Slet';
-$lang['btn_back'] = 'Tilbage';
-$lang['btn_backlink'] = "Henvisninger bagud";
-$lang['btn_backtomedia'] = 'Tilbage til valg af mediefil';
-$lang['btn_subscribe'] = 'Abonner på ændringer';
-$lang['btn_unsubscribe'] = 'Fjern abonnement på ændringer';
-$lang['btn_profile'] = 'Opdater profil';
-$lang['btn_reset'] = 'Nulstil';
-$lang['btn_resendpwd'] = 'Send nyt password';
-$lang['btn_draft'] = 'Rediger kladde';
-$lang['btn_recover'] = 'Gendan kladde';
-$lang['btn_draftdel'] = 'Slet kladde';
-
-$lang['loggedinas'] = 'Logget på som';
-$lang['user'] = 'Brugernavn';
-$lang['pass'] = 'Password';
-$lang['newpass'] = 'Nyt password';
-$lang['oldpass'] = 'Bekræft gammelt password';
-$lang['passchk'] = 'Gentag nyt password';
-$lang['remember'] = 'Log automatisk på';
-$lang['fullname'] = 'Navn';
-$lang['email'] = 'E-mail';
-$lang['register'] = 'Tilmeld';
-$lang['profile'] = 'Brugerprofil';
-$lang['badlogin'] = 'Forkert brugernavn eller password.';
-$lang['minoredit'] = 'Mindre ændringer';
-$lang['draftdate'] = 'Kladde automatisk gemt d.';
-
-$lang['regmissing'] = 'Du skal udfylde alle felter.';
-$lang['reguexists'] = 'Dette brugernavn er allerede i brug.';
-$lang['regsuccess'] = 'Du er nu oprettet som bruger. Dit password bliver sendt til dig i en e-mail.';
-$lang['regsuccess2']= 'Du er nu oprettet som bruger.';
-$lang['regmailfail']= 'Dit password blev ikke sendt. Kontakt venligst administratoren.';
-$lang['regbadmail'] = 'E-mail-adressen er ugyldig. Kontakt venligst administratoren, hvis du mener dette er en fejl.';
-$lang['regbadpass'] = 'De to passwords er ikke ens, vær venlig at prøve igen.';
-$lang['regpwmail'] = 'Dit DokuWiki password';
-$lang['reghere'] = 'Opret en DokuWiki-konto her';
-
-$lang['profna'] = 'Denne wiki understøtter ikke ændring af profiler';
-$lang['profnochange'] = 'Ingen ændringer, intet modificeret.';
-$lang['profnoempty'] = 'Tomt navn eller e-mail adresse er ikke tilladt.';
-$lang['profchanged'] = 'Brugerprofil opdateret korrekt.';
-
-$lang['pwdforget'] = 'Glemt dit password? FÃ¥ et nyt';
-$lang['resendna'] = 'Denne wiki understøtter ikke udsendelse af nyt password.';
-$lang['resendpwd'] = 'Send nyt password for';
-$lang['resendpwdmissing'] = 'Du skal udfylde alle felter.';
-$lang['resendpwdnouser'] = 'Vi kan ikke finde denne bruger i vores database.';
-$lang['resendpwdbadauth'] = 'Beklager, denne autoriseringskode er ikke gyldig. Kontroller venligst at du benyttede det fulde link til bekræftelse.';
-$lang['resendpwdconfirm'] = 'Et link med bekræftelse er blevet sendt med email.';
-$lang['resendpwdsuccess'] = 'Dit nye password er blevet sendt med e-mail.';
-
-$lang['txt_upload'] = 'Vælg den fil der skal uploades';
-$lang['txt_filename'] = 'Indtast wikinavn (valgfrit)';
-$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
-$lang['lockedby'] = 'Midlertidig låst af';
-$lang['lockexpire'] = 'Lås udløber kl.';
-$lang['willexpire'] = 'Din lås på dette dokument udløber om et minut.\nTryk på '.$lang['btn_preview'].'-knappen for at undgå konflikter.';
-
-$lang['notsavedyet'] = 'Der er lavet ændringer i dokumentet, hvis du fortsætter vil ændringerne gÃ¥ tabt.\nÃnsker du at fortsætte?';
-$lang['rssfailed'] = 'Der opstod en fejl ved indhentning af: ';
-$lang['nothingfound']= 'Søgningen gav intet resultat.';
-
-$lang['mediaselect'] = 'Vælg mediefil';
-$lang['fileupload'] = 'Upload mediefil';
-$lang['uploadsucc'] = 'Upload var en succes';
-$lang['uploadfail'] = 'Upload fejlede. Der er muligvis problemer med rettighederne';
-$lang['uploadwrong'] = 'Upload afvist. Filtypen er ikke tilladt';
-$lang['uploadexist'] = 'Filen eksisterer allerede.';
-$lang['uploadbadcontent'] = 'Upload indhold matchede ikke %s fil-endelsen.';
-$lang['uploadspam'] = 'Upload blev blokeret af spam sortlisten.';
-$lang['uploadxss'] = 'Upload blev blokeret på grund af mulig skadeligt indhold.';
-$lang['deletesucc'] = 'Filen "%s" er blevet slettet.';
-$lang['deletefail'] = '"%s" kunne ikke slettes - check rettighederne.';
-$lang['mediainuse'] = 'Filen "%s" er ikke slettet - den er stadig i brug.';
-$lang['namespaces'] = 'Navnerum';
-$lang['mediafiles'] = 'Tilgængelige filer i';
-
-$lang['js']['keepopen'] = 'Hold vindue åbent ved valg';
-$lang['js']['hidedetails'] = 'Skjul detaljer';
-$lang['mediausage'] = 'Brug den følgende syntaks til at henvise til denne fil:';
-$lang['mediaview'] = 'Vis oprindelig fil';
-$lang['mediaroot'] = 'rod';
-$lang['mediaupload'] = 'Upload en fil til det nuværende navnerum her. For at oprette under-navnerum, tilføj dem til "Upload som" filnavnet, adskilt af kolontegn.';
-$lang['mediaextchange'] = 'Filudvidelse ændret fra .%s til .%s!';
-
-$lang['reference'] = 'Henvisning til';
-$lang['ref_inuse'] = 'Filen kan ikke slettes, da den stadig er i brug på følgende sider:';
-$lang['ref_hidden'] = 'Nogle henvisninger er i dokumenter du ikke har læserettigheder til';
-
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Tilsvarende dokumentnavne';
-$lang['toc'] = 'Indholdsfortegnelse';
-$lang['current'] = 'nuværende';
-$lang['yours'] = 'Din version';
-$lang['diff'] = 'vis forskelle i forhold til den nuværende udgave';
-$lang['line'] = 'Linje';
-$lang['breadcrumb'] = 'Sti';
-$lang['youarehere'] = 'Du er her';
-$lang['lastmod'] = 'Sidst ændret';
-$lang['by'] = 'af';
-$lang['deleted'] = 'slettet';
-$lang['created'] = 'oprettet';
-$lang['restored'] = 'gammel udgave reetableret';
-$lang['external_edit'] = 'ekstern redigering';
-$lang['summary'] = 'Redigerings resume';
-
-$lang['mail_newpage'] = 'dokument tilføjet:';
-$lang['mail_changed'] = 'dokument ændret:';
-$lang['mail_new_user'] = 'Ny bruger';
-$lang['mail_upload'] = 'fil uploadet:';
-$lang['nosmblinks'] = 'Henvisninger til Windows shares virker kun i Microsoft Internet Explorer.\nDu kan stadig kopiere og indsætte linket.';
-
-$lang['qb_alert'] = 'Skriv den tekst du ønsker at formatere.\nDen vil blive tilføjet i slutningen af dokumentet.';
-$lang['qb_bold'] = 'Fed';
-$lang['qb_italic'] = 'Kursiv';
-$lang['qb_underl'] = 'Understregning';
-$lang['qb_code'] = 'Skrivemaskine tekst';
-$lang['qb_strike'] = 'Gennemstregning';
-$lang['qb_h1'] = 'Niveau 1 overskrift';
-$lang['qb_h2'] = 'Niveau 2 overskrift';
-$lang['qb_h3'] = 'Niveau 3 overskrift';
-$lang['qb_h4'] = 'Niveau 4 overskrift';
-$lang['qb_h5'] = 'Niveau 5 overskrift';
-$lang['qb_link'] = 'Intern henvisning';
-$lang['qb_extlink'] = 'Ekstern henvisning';
-$lang['qb_hr'] = 'Vandret linje';
-$lang['qb_ol'] = 'Nummereret liste';
-$lang['qb_ul'] = 'Unummereret liste';
-$lang['qb_media'] = 'Tilføj billeder og andre filer';
-$lang['qb_sig'] = 'Indsæt signatur';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Specialtegn';
-
-$lang['del_confirm']= 'Slet valgte post(er)?';
-$lang['admin_register']= 'Tilføj ny bruger';
-
-$lang['metaedit'] = 'Rediger metadata';
-$lang['metasaveerr'] = 'Skrivning af metadata fejlede';
-$lang['metasaveok'] = 'Metadata gemt';
-$lang['img_backto'] = 'Tilbage til';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Billedtekst';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'Filnavn';
-$lang['img_fsize'] = 'Størrelse';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords']= 'Emneord';
-
-$lang['subscribe_success'] = 'Tilføjet %s til abonnentliste for %s';
-$lang['subscribe_error'] = 'Fejl ved tilføjelse af %s til abonnentliste for %s';
-$lang['subscribe_noaddress']= 'Ingen adresse knyttet til dit login, du kan ikke tilføjes til abonnentlisten';
-$lang['unsubscribe_success']= 'Fjernet %s fra abonnentliste for %s';
-$lang['unsubscribe_error'] = 'Fejl ved fjernelse af %s fra abonnentliste for %s';
-
-/* auth.class language support */
-$lang['authmodfailed'] = 'Fejl i brugervalideringens konfiguration. Kontakt venligst wikiens administrator.';
-$lang['authtempfail'] = 'Brugervalidering er midlertidigt ude af drift. Hvis dette er vedvarende, kontakt venligst wikiens administrator.';
-
-/* installer strings */
-$lang['i_chooselang'] = 'Vælg dit sprog';
-$lang['i_installer'] = 'DokuWiki Installer';
-$lang['i_wikiname'] = 'Wiki Navn';
-$lang['i_enableacl'] = 'Brug ACL (foreslået)';
-$lang['i_superuser'] = 'Superbruger';
-$lang['i_problems'] = 'Installeren fandt nogle problemer, vist nedenunder. Du kan ikke fortsætte før du har rettet dem.';
-$lang['i_modified'] = 'Af sikkerheds hensyn vil dette script kun virke på en ny og umodificeret Dokuwiki installation.
- Du burde enten gen-udpakke filerne fra den downloaded pakke eller tjekke den fuldstændige
- <a href="http://wiki.splitbrain.org/wiki:install">DokuWiki installations instruktioner</a>';
-$lang['i_funcna'] = 'PHP funtionen <code>%s</code> er ikke tilgængelig. Måske har din udbyder slået det fra af en eller anden grund?';
-$lang['i_phpver'] = 'Din PHP version <code>%s</code> er mindre en den nødvendige <code>%s</code>. Du er nød til at opgradere din PHP installation.';
-$lang['i_permfail'] = 'DokuWiki kan ikke skrive til <code>%s</code>. Du er nød til at rette tilladelses indstillingerne for denne mappe!';
-$lang['i_confexists'] = '<code>%s</code> eksisterer allerede';
-$lang['i_writeerr'] = 'Kunne ikke oprette <code>%s</code>. Du bliver nød til at tjekke mappe/fil- tilladelserne og oprette filen manuelt.';
-$lang['i_badhash'] = 'uigenkendelig eller modificeret dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - ulovlig eller tom værdi';
-$lang['i_success'] = 'Konfigurationen fulførtedes med success. Du kan nu slette install.php filen. Forsæt til
- <a href="doku.php">din nye DokuWiki</a>.';
-$lang['i_failure'] = 'Nogle fejl forekom mens konfigurations filerne skulle skrives. Du er mulighvis nød til at fixe dem manuelt før
- du kan bruge <a href="doku.php">din nye DokuWiki</a>.';
-$lang['i_policy'] = 'Begyndende ACL politik';
-$lang['i_pol0'] = 'Ã
ben Wiki (alle kan læse, skrive og uploade)';
-$lang['i_pol1'] = 'Offentlig Wiki (alle kan læse, kun registrerede brugere kan skrive og uploade)';
-$lang['i_pol2'] = 'Lukket Wiki (kun for registerede brugere kan læse, skrive og uploade)';
-$lang['i_retry'] = 'Forsøg igen';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * danish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author koeppe <koeppe at kazur.dk>
+ * @author Jon Bendtsen <bendtsen at diku.dk>
+ * @author Lars Næsbye Christensen <larsnaesbye at stud.ku.dk>
+ * @author Kalle Sommer Nielsen <kalle at php.net>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Rediger dette dokument';
+$lang['btn_source'] = 'Vis kildekode';
+$lang['btn_show'] = 'Vis dokument';
+$lang['btn_create'] = 'Opret dette dokument';
+$lang['btn_search'] = 'Søg';
+$lang['btn_save'] = 'Gem';
+$lang['btn_preview'] = 'Forhåndsvisning';
+$lang['btn_top'] = 'Tilbage til toppen';
+$lang['btn_newer'] = '<< forrige side';
+$lang['btn_older'] = 'næste side >>';
+$lang['btn_revs'] = 'Gamle udgaver';
+$lang['btn_recent'] = 'Nye ændringer';
+$lang['btn_upload'] = 'Upload';
+$lang['btn_cancel'] = 'Fortryd';
+$lang['btn_index'] = 'Indeks';
+$lang['btn_secedit'] = 'Rediger';
+$lang['btn_login'] = 'Log ind';
+$lang['btn_logout'] = 'Log ud';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Opdater';
+$lang['btn_delete'] = 'Slet';
+$lang['btn_back'] = 'Tilbage';
+$lang['btn_backlink'] = 'Henvisninger bagud';
+$lang['btn_backtomedia'] = 'Tilbage til valg af mediefil';
+$lang['btn_subscribe'] = 'Abonner på ændringer';
+$lang['btn_unsubscribe'] = 'Fjern abonnement på ændringer';
+$lang['btn_subscribens'] = 'Abonner på namespace ændringer';
+$lang['btn_unsubscribens'] = 'Fjern abonnement på namespace ændringer';
+$lang['btn_profile'] = 'Opdater profil';
+$lang['btn_reset'] = 'Nulstil';
+$lang['btn_resendpwd'] = 'Send nyt password';
+$lang['btn_draft'] = 'Rediger kladde';
+$lang['btn_recover'] = 'Gendan kladde';
+$lang['btn_draftdel'] = 'Slet kladde';
+$lang['loggedinas'] = 'Logget på som';
+$lang['user'] = 'Brugernavn';
+$lang['pass'] = 'Password';
+$lang['newpass'] = 'Nyt password';
+$lang['oldpass'] = 'Bekræft gammelt password';
+$lang['passchk'] = 'Gentag nyt password';
+$lang['remember'] = 'Log automatisk på';
+$lang['fullname'] = 'Navn';
+$lang['email'] = 'E-mail';
+$lang['register'] = 'Tilmeld';
+$lang['profile'] = 'Brugerprofil';
+$lang['badlogin'] = 'Forkert brugernavn eller password.';
+$lang['minoredit'] = 'Mindre ændringer';
+$lang['draftdate'] = 'Kladde automatisk gemt d.';
+$lang['regmissing'] = 'Du skal udfylde alle felter.';
+$lang['reguexists'] = 'Dette brugernavn er allerede i brug.';
+$lang['regsuccess'] = 'Du er nu oprettet som bruger. Dit password bliver sendt til dig i en e-mail.';
+$lang['regsuccess2'] = 'Du er nu oprettet som bruger.';
+$lang['regmailfail'] = 'Dit password blev ikke sendt. Kontakt venligst administratoren.';
+$lang['regbadmail'] = 'E-mail-adressen er ugyldig. Kontakt venligst administratoren, hvis du mener dette er en fejl.';
+$lang['regbadpass'] = 'De to passwords er ikke ens, vær venlig at prøve igen.';
+$lang['regpwmail'] = 'Dit DokuWiki password';
+$lang['reghere'] = 'Opret en DokuWiki-konto her';
+$lang['profna'] = 'Denne wiki understøtter ikke ændring af profiler';
+$lang['profnochange'] = 'Ingen ændringer, intet modificeret.';
+$lang['profnoempty'] = 'Tomt navn eller e-mail adresse er ikke tilladt.';
+$lang['profchanged'] = 'Brugerprofil opdateret korrekt.';
+$lang['pwdforget'] = 'Glemt dit password? FÃ¥ et nyt';
+$lang['resendna'] = 'Denne wiki understøtter ikke udsendelse af nyt password.';
+$lang['resendpwd'] = 'Send nyt password for';
+$lang['resendpwdmissing'] = 'Du skal udfylde alle felter.';
+$lang['resendpwdnouser'] = 'Vi kan ikke finde denne bruger i vores database.';
+$lang['resendpwdbadauth'] = 'Beklager, denne autoriseringskode er ikke gyldig. Kontroller venligst at du benyttede det fulde link til bekræftelse.';
+$lang['resendpwdconfirm'] = 'Et link med bekræftelse er blevet sendt med email.';
+$lang['resendpwdsuccess'] = 'Dit nye password er blevet sendt med e-mail.';
+$lang['txt_upload'] = 'Vælg den fil der skal uploades';
+$lang['txt_filename'] = 'Indtast wikinavn (valgfrit)';
+$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
+$lang['lockedby'] = 'Midlertidig låst af';
+$lang['lockexpire'] = 'Lås udløber kl.';
+$lang['willexpire'] = 'Din lås på dette dokument udløber om et minut.\nTryk på Forhåndsvisning-knappen for at undgå konflikter.';
+$lang['notsavedyet'] = 'Der er lavet ændringer i dokumentet, hvis du fortsætter vil ændringerne gÃ¥ tabt.\nÃnsker du at fortsætte?';
+$lang['rssfailed'] = 'Der opstod en fejl ved indhentning af: ';
+$lang['nothingfound'] = 'Søgningen gav intet resultat.';
+$lang['mediaselect'] = 'Vælg mediefil';
+$lang['fileupload'] = 'Upload mediefil';
+$lang['uploadsucc'] = 'Upload var en succes';
+$lang['uploadfail'] = 'Upload fejlede. Der er muligvis problemer med rettighederne';
+$lang['uploadwrong'] = 'Upload afvist. Filtypen er ikke tilladt';
+$lang['uploadexist'] = 'Filen eksisterer allerede.';
+$lang['uploadbadcontent'] = 'Upload indhold matchede ikke %s fil-endelsen.';
+$lang['uploadspam'] = 'Upload blev blokeret af spam sortlisten.';
+$lang['uploadxss'] = 'Upload blev blokeret på grund af mulig skadeligt indhold.';
+$lang['deletesucc'] = 'Filen "%s" er blevet slettet.';
+$lang['deletefail'] = '"%s" kunne ikke slettes - check rettighederne.';
+$lang['mediainuse'] = 'Filen "%s" er ikke slettet - den er stadig i brug.';
+$lang['namespaces'] = 'Navnerum';
+$lang['mediafiles'] = 'Tilgængelige filer i';
+$lang['js']['keepopen'] = 'Hold vindue åbent ved valg';
+$lang['js']['hidedetails'] = 'Skjul detaljer';
+$lang['mediausage'] = 'Brug den følgende syntaks til at henvise til denne fil:';
+$lang['mediaview'] = 'Vis oprindelig fil';
+$lang['mediaroot'] = 'rod';
+$lang['mediaupload'] = 'Upload en fil til det nuværende navnerum her. For at oprette under-navnerum, tilføj dem til "Upload som" filnavnet, adskilt af kolontegn.';
+$lang['mediaextchange'] = 'Filudvidelse ændret fra .%s til .%s!';
+$lang['reference'] = 'Henvisning til';
+$lang['ref_inuse'] = 'Filen kan ikke slettes, da den stadig er i brug på følgende sider:';
+$lang['ref_hidden'] = 'Nogle henvisninger er i dokumenter du ikke har læserettigheder til';
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Tilsvarende dokumentnavne';
+$lang['toc'] = 'Indholdsfortegnelse';
+$lang['current'] = 'nuværende';
+$lang['yours'] = 'Din version';
+$lang['diff'] = 'Vis forskelle i forhold til den nuværende udgave';
+$lang['diff2'] = 'Vis forskelle i forhold til de valgte revisioner';
+$lang['line'] = 'Linje';
+$lang['breadcrumb'] = 'Sti';
+$lang['youarehere'] = 'Du er her';
+$lang['lastmod'] = 'Sidst ændret';
+$lang['by'] = 'af';
+$lang['deleted'] = 'slettet';
+$lang['created'] = 'oprettet';
+$lang['restored'] = 'gammel udgave reetableret';
+$lang['external_edit'] = 'ekstern redigering';
+$lang['summary'] = 'Redigerings resume';
+$lang['mail_newpage'] = 'dokument tilføjet:';
+$lang['mail_changed'] = 'dokument ændret:';
+$lang['mail_new_user'] = 'Ny bruger';
+$lang['mail_upload'] = 'fil uploadet:';
+$lang['nosmblinks'] = 'Henvisninger til Windows shares virker kun i Microsoft Internet Explorer.\nDu kan stadig kopiere og indsætte linket.';
+$lang['qb_alert'] = 'Skriv den tekst du ønsker at formatere.\nDen vil blive tilføjet i slutningen af dokumentet.';
+$lang['qb_bold'] = 'Fed';
+$lang['qb_italic'] = 'Kursiv';
+$lang['qb_underl'] = 'Understregning';
+$lang['qb_code'] = 'Skrivemaskine tekst';
+$lang['qb_strike'] = 'Gennemstregning';
+$lang['qb_h1'] = 'Niveau 1 overskrift';
+$lang['qb_h2'] = 'Niveau 2 overskrift';
+$lang['qb_h3'] = 'Niveau 3 overskrift';
+$lang['qb_h4'] = 'Niveau 4 overskrift';
+$lang['qb_h5'] = 'Niveau 5 overskrift';
+$lang['qb_link'] = 'Intern henvisning';
+$lang['qb_extlink'] = 'Ekstern henvisning';
+$lang['qb_hr'] = 'Vandret linje';
+$lang['qb_ol'] = 'Nummereret liste';
+$lang['qb_ul'] = 'Unummereret liste';
+$lang['qb_media'] = 'Tilføj billeder og andre filer';
+$lang['qb_sig'] = 'Indsæt signatur';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Specialtegn';
+$lang['del_confirm'] = 'Slet valgte post(er)?';
+$lang['admin_register'] = 'Tilføj ny bruger';
+$lang['metaedit'] = 'Rediger metadata';
+$lang['metasaveerr'] = 'Skrivning af metadata fejlede';
+$lang['metasaveok'] = 'Metadata gemt';
+$lang['img_backto'] = 'Tilbage til';
+$lang['img_title'] = 'Titel';
+$lang['img_caption'] = 'Billedtekst';
+$lang['img_date'] = 'Dato';
+$lang['img_fname'] = 'Filnavn';
+$lang['img_fsize'] = 'Størrelse';
+$lang['img_artist'] = 'Fotograf';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords'] = 'Emneord';
+$lang['subscribe_success'] = 'Tilføjet %s til abonnentliste for %s';
+$lang['subscribe_error'] = 'Fejl ved tilføjelse af %s til abonnentliste for %s';
+$lang['subscribe_noaddress'] = 'Ingen adresse knyttet til dit login, du kan ikke tilføjes til abonnentlisten';
+$lang['unsubscribe_success'] = 'Fjernet %s fra abonnentliste for %s';
+$lang['unsubscribe_error'] = 'Fejl ved fjernelse af %s fra abonnentliste for %s';
+$lang['authmodfailed'] = 'Fejl i brugervalideringens konfiguration. Kontakt venligst wikiens administrator.';
+$lang['authtempfail'] = 'Brugervalidering er midlertidigt ude af drift. Hvis dette er vedvarende, kontakt venligst wikiens administrator.';
+$lang['i_chooselang'] = 'Vælg dit sprog';
+$lang['i_installer'] = 'DokuWiki Installer';
+$lang['i_wikiname'] = 'Wiki Navn';
+$lang['i_enableacl'] = 'Brug ACL (foreslået)';
+$lang['i_superuser'] = 'Superbruger';
+$lang['i_problems'] = 'Installeren fandt nogle problemer, vist nedenunder. Du kan ikke fortsætte før du har rettet dem.';
+$lang['i_modified'] = 'Af sikkerheds hensyn vil dette script kun virke på en ny og umodificeret Dokuwiki installation.
+ Du burde enten gen-udpakke filerne fra den downloaded pakke eller tjekke den fuldstændige
+ <a href="http://wiki.splitbrain.org/wiki:install">DokuWiki installations instruktioner</a>';
+$lang['i_funcna'] = 'PHP funtionen <code>%s</code> er ikke tilgængelig. Måske har din udbyder slået det fra af en eller anden grund?';
+$lang['i_phpver'] = 'Din PHP version <code>%s</code> er mindre en den nødvendige <code>%s</code>. Du er nød til at opgradere din PHP installation.';
+$lang['i_permfail'] = 'DokuWiki kan ikke skrive til <code>%s</code>. Du er nød til at rette tilladelses indstillingerne for denne mappe!';
+$lang['i_confexists'] = '<code>%s</code> eksisterer allerede';
+$lang['i_writeerr'] = 'Kunne ikke oprette <code>%s</code>. Du bliver nød til at tjekke mappe/fil- tilladelserne og oprette filen manuelt.';
+$lang['i_badhash'] = 'uigenkendelig eller modificeret dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - ulovlig eller tom værdi';
+$lang['i_success'] = 'Konfigurationen fulførtedes med success. Du kan nu slette install.php filen. Forsæt til
+ <a href="doku.php">din nye DokuWiki</a>.';
+$lang['i_failure'] = 'Nogle fejl forekom mens konfigurations filerne skulle skrives. Du er mulighvis nød til at fixe dem manuelt før
+ du kan bruge <a href="doku.php">din nye DokuWiki</a>.';
+$lang['i_policy'] = 'Begyndende ACL politik';
+$lang['i_pol0'] = 'Ã
ben Wiki (alle kan læse, skrive og uploade)';
+$lang['i_pol1'] = 'Offentlig Wiki (alle kan læse, kun registrerede brugere kan skrive og uploade)';
+$lang['i_pol2'] = 'Lukket Wiki (kun for registerede brugere kan læse, skrive og uploade)';
+$lang['i_retry'] = 'Forsøg igen';
Modified: site/trunk/www-root/wiki/inc/lang/da/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== LÃ¥st Dokument ======
-
-Dette dokument er midlertidigt låst af en anden bruger. Vent venligst til brugeren er fædig med at redigere dokumentet, eller låsen udløber.
+====== LÃ¥st Dokument ======
+
+Dette dokument er midlertidigt låst af en anden bruger. Vent venligst til brugeren er fædig med at redigere dokumentet, eller låsen udløber.
Modified: site/trunk/www-root/wiki/inc/lang/da/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Login ======
-
-Du er ikke logget ind! Indtast brugernavn og password. Din browser skal have tilladt cookies for at du kan logge ind.
+====== Login ======
+
+Du er ikke logget ind! Indtast brugernavn og password. Din browser skal have tilladt cookies for at du kan logge ind.
Modified: site/trunk/www-root/wiki/inc/lang/da/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Et dokument i din DokuWiki blev ændret eller tilføjet. Her er detajlerne:
-
-Dato : @DATE@
-Browser : @BROWSER@
-IP-adresse : @IPADDRESS@
-Hostnavn : @HOSTNAME@
-Gammel udgave : @OLDPAGE@
-Ny udgave : @NEWPAGE@
-Redigerings resume : @SUMMARY@
-Bruger : @USER@
-
- at DIFF@
-
-
---
-Denne e-mail blev genereret af DokuWiki på:
- at DOKUWIKIURL@
+Et dokument i din DokuWiki blev ændret eller tilføjet. Her er detajlerne:
+
+Dato : @DATE@
+Browser : @BROWSER@
+IP-adresse : @IPADDRESS@
+Hostnavn : @HOSTNAME@
+Gammel udgave : @OLDPAGE@
+Ny udgave : @NEWPAGE@
+Redigerings resume : @SUMMARY@
+Bruger : @USER@
+
+ at DIFF@
+
+
+--
+Denne e-mail blev genereret af DokuWiki på:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/da/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Dette dokument eksisterer ikke (endnu) ======
-
-Du har fulgt en henvisning til et dokument der ikke eksisterer (endnu). Du kan oprette dokumentet ved at trykke på knappen **''[Opret dette dokument]''**.
+====== Dette dokument eksisterer ikke (endnu) ======
+
+Du har fulgt en henvisning til et dokument der ikke eksisterer (endnu). Du kan oprette dokumentet ved at trykke på knappen **''[Opret dette dokument]''**.
Modified: site/trunk/www-root/wiki/inc/lang/da/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Den valgte udgave findes ikke ======
-
-Den valgte udgave af dokumentet findes ikke! Tryk på knappen **''[Gamle udgaver]''** for at se en liste af gamle udgaver af dette dokument.
-
+====== Den valgte udgave findes ikke ======
+
+Den valgte udgave af dokumentet findes ikke! Tryk på knappen **''[Gamle udgaver]''** for at se en liste af gamle udgaver af dette dokument.
+
Modified: site/trunk/www-root/wiki/inc/lang/da/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hej @FULLNAME@!
-
-Her er dine brugeroplysninger @TITLE@ at @DOKUWIKIURL@
-
-Brugernavn : @LOGIN@
-Password : @PASSWORD@
-
---
-Denne e-mail blev genereret af DokuWiki på
- at DOKUWIKIURL@
+Hej @FULLNAME@!
+
+Her er dine brugeroplysninger @TITLE@ at @DOKUWIKIURL@
+
+Brugernavn : @LOGIN@
+Password : @PASSWORD@
+
+--
+Denne e-mail blev genereret af DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/da/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Forhåndsvisning ======
-
-Dette er en forhåndsvisning af hvordan dokumentet vil se ud. Husk: Det er //**IKKE**// gemt endnu! Hvis det ser godt ud, så tryk på knappen **''[Gem]''**
-
+====== Forhåndsvisning ======
+
+Dette er en forhåndsvisning af hvordan dokumentet vil se ud. Husk: Det er //**IKKE**// gemt endnu! Hvis det ser godt ud, så tryk på knappen **''[Gem]''**
+
Modified: site/trunk/www-root/wiki/inc/lang/da/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Hej @FULLNAME@!
-
-Nogen har bedt om et nyt password til dit @TITLE@
-login på @DOKUWIKIURL@
-
-Hvis du ikke bad om dette, så ignorer venligst denne email.
-
-For at bekræfte at det var dig der bad om dette, benyt venligst det følgende link.
-
- at CONFIRM@
-
---
-Denne e-mail blev genereret af DokuWiki på
- at DOKUWIKIURL@
+Hej @FULLNAME@!
+
+Nogen har bedt om et nyt password til dit @TITLE@
+login på @DOKUWIKIURL@
+
+Hvis du ikke bad om dette, så ignorer venligst denne email.
+
+For at bekræfte at det var dig der bad om dette, benyt venligst det følgende link.
+
+ at CONFIRM@
+
+--
+Denne e-mail blev genereret af DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/da/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Dette dokument kan kun læses. Du kan se kildekoden, men ikke gemme ændringer i det. Hvis du mener at dette er en fejl, så skriv det venligst på [[wiki:fejl-oversigt]].
-
+Dette dokument kan kun læses. Du kan se kildekoden, men ikke gemme ændringer i det. Hvis du mener at dette er en fejl, så skriv det venligst på [[wiki:fejl-oversigt]].
+
Modified: site/trunk/www-root/wiki/inc/lang/da/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Nye ændringer ======
-
-Følgende dokumenter er blevet ændret for nylig.
-
-
+====== Nye ændringer ======
+
+Følgende dokumenter er blevet ændret for nylig.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/da/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Opret en wiki-konto ======
-
-Udfyld nedenstånde skema for at oprette en konto i denne wiki. Sørg for at bruge en **gyldig e-mail-adresse** - dit password bliver sendt til dig. Dit brugernavn skal være et gyldigt [[doku>wiki:dokumentnavn|dokumentnavn]].
-
+====== Opret en wiki-konto ======
+
+Udfyld nedenstånde skema for at oprette en konto i denne wiki. Sørg for at bruge en **gyldig e-mail-adresse** - dit password bliver sendt til dig. Dit brugernavn skal være et gyldigt [[doku>wiki:dokumentnavn|dokumentnavn]].
+
Modified: site/trunk/www-root/wiki/inc/lang/da/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-En ny bruger har registreret. Her er detaljerne:
-
-Brugernavn : @NEWUSER@
-Navn : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Dato : @DATE@
-Browser : @BROWSER@
-IP-adresse : @IPADDRESS@
-Værtsnavn : @HOSTNAME@
-
---
-Denne mail blev genereret af DokuWiki på
- at DOKUWIKIURL@
+En ny bruger har registreret. Her er detaljerne:
+
+Brugernavn : @NEWUSER@
+Navn : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Dato : @DATE@
+Browser : @BROWSER@
+IP-adresse : @IPADDRESS@
+Værtsnavn : @HOSTNAME@
+
+--
+Denne mail blev genereret af DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/da/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Send nyt password ======
-
-Udfyld alle nedenstående felter for at få tilsendt et nyt password til denne wiki.
+====== Send nyt password ======
+
+Udfyld alle nedenstående felter for at få tilsendt et nyt password til denne wiki.
Dit nye password vil blive sendt til den opgivne e-mailadresse. Brugernavnet bør være dit wiki brugernavn.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/da/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Gamle udgaver ======
-
-Her er de gamle udgaver af dette dokument. Du kan vende tilbage til en tidligere udgave af dokumentet ved at vælge det nedenfor, trykke på knappen **''[Rediger dette dokument]''**, og til sidst gemme dokumentet.
+====== Gamle udgaver ======
+
+Her er de gamle udgaver af dette dokument. Du kan vende tilbage til en tidligere udgave af dokumentet ved at vælge det nedenfor, trykke på knappen **''[Rediger dette dokument]''**, og til sidst gemme dokumentet.
Modified: site/trunk/www-root/wiki/inc/lang/da/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Søgning ======
-
-Du kan se resultaterne af din søgning nedenunder. Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.
-
-===== Søgeresultater =====
+====== Søgning ======
+
+Du kan se resultaterne af din søgning nedenunder. Hvis resultaterne ikke indeholder det du søgte efter kan du oprette et nyt dokument med samme navn som søgningen ved at trykke på knappen **''[Opret dette dokument]''**.
+
+===== Søgeresultater =====
Modified: site/trunk/www-root/wiki/inc/lang/da/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Dette er en gammel udgave af dokumentet!**
-----
+**Dette er en gammel udgave af dokumentet!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/da/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,86 +1,86 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-alle
-andet
-andre
-begge
-den
-denne
-der
-deres
-det
-dette
-dig
-din
-dog
-eller
-end
-ene
-eneste
-enhver
-fem
-fire
-flere
-fleste
-for
-fordi
-forrige
-fra
-før
-god
-han
-hans
-har
-hendes
-her
-hun
-hvad
-hvem
-hver
-hvilken
-hvis
-hvor
-hvordan
-hvorfor
-hvornår
-ikke
-ind
-ingen
-intet
-jeg
-jeres
-kan
-kom
-kommer
-lav
-lidt
-lille
-man
-mand
-mange
-med
-meget
-men
-mens
-mere
-mig
-ned
-nogen
-noget
-nyt
-nær
-næste
-næsten
-otte
-over
-seks
-ses
-som
-stor
-store
-syv
-til
-tre
-var
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+alle
+andet
+andre
+begge
+den
+denne
+der
+deres
+det
+dette
+dig
+din
+dog
+eller
+end
+ene
+eneste
+enhver
+fem
+fire
+flere
+fleste
+for
+fordi
+forrige
+fra
+før
+god
+han
+hans
+har
+hendes
+her
+hun
+hvad
+hvem
+hver
+hvilken
+hvis
+hvor
+hvordan
+hvorfor
+hvornår
+ikke
+ind
+ingen
+intet
+jeg
+jeres
+kan
+kom
+kommer
+lav
+lidt
+lille
+man
+mand
+mange
+med
+meget
+men
+mens
+mere
+mig
+ned
+nogen
+noget
+nyt
+nær
+næste
+næsten
+otte
+over
+seks
+ses
+som
+stor
+store
+syv
+til
+tre
+var
Modified: site/trunk/www-root/wiki/inc/lang/da/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Hej!
-
-Siden @PAGE@ i @TITLE@ wikien er blevet ændret.
-Her er detaljerne:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-For at afmelde abonnement på denne side log ind på wikien på
- at DOKUWIKIURL@ , besøg
- at NEWPAGE@
-og vælg 'Fjern abonnement på ændringer'.
-
---
-Denne e-mail blev genereret af DokuWiki på
- at DOKUWIKIURL@
+Hej!
+
+Siden @PAGE@ i @TITLE@ wikien er blevet ændret.
+Her er detaljerne:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+For at afmelde abonnement på denne side log ind på wikien på
+ at DOKUWIKIURL@ , besøg
+ at NEWPAGE@
+og vælg 'Fjern abonnement på ændringer'.
+
+--
+Denne e-mail blev genereret af DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/da/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Opdater din kontos profil ======
-
-Du behøver kun at udfylde de felter du ønsker at ændre. Du kan ikke ændre dit brugernavn.
+====== Opdater din kontos profil ======
+
+Du behøver kun at udfylde de felter du ønsker at ændre. Du kan ikke ændre dit brugernavn.
Modified: site/trunk/www-root/wiki/inc/lang/da/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-En fil blev uploaded til din DokuWiki. Her er detaljerne:
-
-Fil : @MEDIA@
-Dato : @DATE@
-Browser : @BROWSER@
-IP-adresse : @IPADDRESS@
-Værtsnavn : @HOSTNAME@
-Størrelse : @SIZE@
-MIME Type : @MIME@
-Bruger : @USER@
-
---
-Denne e-mail blev genereret af DokuWiki på
- at DOKUWIKIURL@
+En fil blev uploaded til din DokuWiki. Her er detaljerne:
+
+Fil : @MEDIA@
+Dato : @DATE@
+Browser : @BROWSER@
+IP-adresse : @IPADDRESS@
+V�rtsnavn : @HOSTNAME@
+St�rrelse : @SIZE@
+MIME Type : @MIME@
+Bruger : @USER@
+
+--
+Denne e-mail blev genereret af DokuWiki p�
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/da/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/da/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/da/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== SPAM blokeret ======
-
-Dine ændringer blev **ikke** gemt da de indeholder et eller flere uønskede ord. Kontakt venligst admin, hvis du mener dette er en fejl.
+====== SPAM blokeret ======
+
+Dine ændringer blev **ikke** gemt da de indeholder et eller flere uønskede ord. Kontakt venligst admin, hvis du mener dette er en fejl.
Modified: site/trunk/www-root/wiki/inc/lang/de/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administration ======
-
-Folgende administrative Aufgaben stehen in DokuWiki zur Verfügung.
-
+====== Administration ======
+
+Folgende administrative Aufgaben stehen in DokuWiki zur Verfügung.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Backlinks ======
-
-Dies ist eine Liste der Seiten, die zurück zur momentanen Seite linken.
-
-
+====== Backlinks ======
+
+Dies ist eine Liste der Seiten, die zurück zur momentanen Seite linken.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/de/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Eine neuere Version existiert ======
-
-Eine neuere Version des aktuell in Bearbeitung befindlichen Dokuments existiert. Das
-heiÃt, jemand hat parallel an der selben Seite gearbeitet und zuerst gespeichert.
-
-Die unten aufgeführten Unterschiede können bei der Entscheidung helfen, welchem
-Dokument Vorrang gewährt wird. Wählen Sie **''[Speichern]''** zum Sichern Ihrer Version
-oder **''[Abbrechen]''**, um Ihre Version zu verwerfen und die zuerst gespeicherte Seite
-zu behalten.
-
+====== Eine neuere Version existiert ======
+
+Eine neuere Version des aktuell in Bearbeitung befindlichen Dokuments existiert. Das
+heiÃt, jemand hat parallel an der selben Seite gearbeitet und zuerst gespeichert.
+
+Die unten aufgeführten Unterschiede können bei der Entscheidung helfen, welchem
+Dokument Vorrang gewährt wird. Wählen Sie **''[Speichern]''** zum Sichern Ihrer Version
+oder **''[Abbrechen]''**, um Ihre Version zu verwerfen und die zuerst gespeicherte Seite
+zu behalten.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Zugang verweigert ======
-
-Sie haben nicht die erforderlichen Rechte, um diese Aktion durchzuführen.
-Evtl. sind Sie nicht beim Wiki angemeldet?
-
+====== Zugang verweigert ======
+
+Sie haben nicht die erforderlichen Rechte, um diese Aktion durchzuführen.
+Evtl. sind Sie nicht beim Wiki angemeldet?
+
Modified: site/trunk/www-root/wiki/inc/lang/de/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Unterschiede======
-
-Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version
-gezeigt.
-
-
+======Unterschiede======
+
+Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version
+gezeigt.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/de/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Entwurf gefunden ======
-
-Ihre letzte Bearbeitungssitzung wurde nicht ordnungsgemäà abgeschlossen. DokuWiki
-hat während Ihrer Arbeit automatisch einen Zwischenentwurf gespeichert, den Sie
-jetzt nutzen können, um Ihre Arbeit fortzusetzen. Unten sehen Sie die Daten, die bei
-Ihrer letzten Sitzung gespeichert wurden.
-
-Bitte entscheiden Sie, ob Sie den Entwurf //wieder herstellen// oder //löschen//
-wollen oder ob Sie die Bearbeitung abbrechen möchten.
-
+====== Entwurf gefunden ======
+
+Ihre letzte Bearbeitungssitzung wurde nicht ordnungsgemäà abgeschlossen. DokuWiki
+hat während Ihrer Arbeit automatisch einen Zwischenentwurf gespeichert, den Sie
+jetzt nutzen können, um Ihre Arbeit fortzusetzen. Unten sehen Sie die Daten, die bei
+Ihrer letzten Sitzung gespeichert wurden.
+
+Bitte entscheiden Sie, ob Sie den Entwurf //wieder herstellen// oder //löschen//
+wollen oder ob Sie die Bearbeitung abbrechen möchten.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Bitte nur editieren, falls das Dokument **verbessert** werden kann.
-
-Nach dem Bearbeiten den **''[Speichern]''**-Knopf drücken. Siehe [[wiki:syntax]] zur Wiki-Syntax.
-Zum Testen bitte erst im [[playground:playground|Spielplatz]] üben.
-
+Bitte nur editieren, falls das Dokument **verbessert** werden kann.
+
+Nach dem Bearbeiten den **''[Speichern]''**-Knopf drücken. Siehe [[wiki:syntax]] zur Wiki-Syntax.
+Zum Testen bitte erst im [[playground:playground|Spielplatz]] üben.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Eine ältere Version des Dokuments wurde geladen!** Beim Speichern wird eine neue Version des Dokuments mit diesem Inhalt erstellt.
+**Eine ältere Version des Dokuments wurde geladen!** Beim Speichern wird eine neue Version des Dokuments mit diesem Inhalt erstellt.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/de/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Ãbersicht ======
-
-Dies ist eine Ãbersicht über alle vorhandenen Seiten und [[doku>wiki:namespaces|Namensräume]].
-
+====== Ãbersicht ======
+
+Dies ist eine Ãbersicht über alle vorhandenen Seiten und [[doku>wiki:namespaces|Namensräume]].
+
Modified: site/trunk/www-root/wiki/inc/lang/de/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,27 +1,27 @@
-<p>Diese Seite hilft Ihnen bei der Erst-Installation und Konfiguration von
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Zusätzliche Informationen zu
-diesem Installationsskript finden Sie auf der entsprechenden
-<a href="http://wiki.splitbrain.org/wiki:installer">Hilfe Seite</a> (en).</p>
-
-<p>DokuWiki verwendet normale Dateien für das Speichern von Wikiseiten und
-anderen Informationen (Bilder, Suchindizes, alte Versionen, usw.).
-Um DokuWiki betreiben zu können, <strong>muss</strong> Schreibzugriff auf die
-Verzeichnisse bestehen, in denen DokuWiki diese Dateien ablegt. Dieses
-Installationsprogramm kann diese Rechte nicht für Sie setzen. Sie müssen dies
-manuell auf einer Kommando-Shell oder, falls Sie DokuWiki bei einem Fremdanbieter
-hosten, über FTP oder ein entsprechendes Werkzeug (z.B. cPanel) durchführen.</p>
-
-<p>Dieses Skript hilft Ihnen beim ersten Einrichten des Zugangsschutzes
-(<acronym title="access control list">ACL</acronym>) von DokuWiki, welcher eine
-Administratoranmeldung und damit Zugang zum Administrationsmenu ermöglicht.
-Dort können Sie dann weitere Tätigkeiten wie das Installieren von Plugins, das
-Verwalten von Nutzern und das Ãndern von Konfigurationseinstellungen durchführen.
-Das Nutzen der Zugangskontrolle ist nicht zwingend erforderlich, es erleichtert aber
-die Administration von DokuWiki.</p>
-
-<p>Erfahrene Anwender oder Nutzer mit speziellen Konfigurationsbedürfnissen sollten
-die folgenden Links nutzen, um sich über
-<a href="http://wiki.splitbrain.org/wiki:install">Installation</a>
-und <a href="http://wiki.splitbrain.org/wiki:config">Konfiguration</a> zu
-informieren.</p>
-
+<p>Diese Seite hilft Ihnen bei der Erst-Installation und Konfiguration von
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Zusätzliche Informationen zu
+diesem Installationsskript finden Sie auf der entsprechenden
+<a href="http://wiki.splitbrain.org/wiki:installer">Hilfe Seite</a> (en).</p>
+
+<p>DokuWiki verwendet normale Dateien für das Speichern von Wikiseiten und
+anderen Informationen (Bilder, Suchindizes, alte Versionen, usw.).
+Um DokuWiki betreiben zu können, <strong>muss</strong> Schreibzugriff auf die
+Verzeichnisse bestehen, in denen DokuWiki diese Dateien ablegt. Dieses
+Installationsprogramm kann diese Rechte nicht für Sie setzen. Sie müssen dies
+manuell auf einer Kommando-Shell oder, falls Sie DokuWiki bei einem Fremdanbieter
+hosten, über FTP oder ein entsprechendes Werkzeug (z.B. cPanel) durchführen.</p>
+
+<p>Dieses Skript hilft Ihnen beim ersten Einrichten des Zugangsschutzes
+(<acronym title="access control list">ACL</acronym>) von DokuWiki, welcher eine
+Administratoranmeldung und damit Zugang zum Administrationsmenu ermöglicht.
+Dort können Sie dann weitere Tätigkeiten wie das Installieren von Plugins, das
+Verwalten von Nutzern und das Ãndern von Konfigurationseinstellungen durchführen.
+Das Nutzen der Zugangskontrolle ist nicht zwingend erforderlich, es erleichtert aber
+die Administration von DokuWiki.</p>
+
+<p>Erfahrene Anwender oder Nutzer mit speziellen Konfigurationsbedürfnissen sollten
+die folgenden Links nutzen, um sich über
+<a href="http://wiki.splitbrain.org/wiki:install">Installation</a>
+und <a href="http://wiki.splitbrain.org/wiki:config">Konfiguration</a> zu
+informieren.</p>
+
Modified: site/trunk/www-root/wiki/inc/lang/de/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,208 +1,208 @@
-<?php
-/**
- * german language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Christof <gagi at fin.de>
- * @author Anika Henke <henke at cosmocode.de>
- * @author Esther Brunner <esther at kaffeehaus.ch>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @author Michael Klier <chi at chimeric.de>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Diese Seite bearbeiten';
-$lang['btn_source'] = 'Zeige Quelltext';
-$lang['btn_show'] = 'Seite anzeigen';
-$lang['btn_create'] = 'Seite anlegen';
-$lang['btn_search'] = 'Suche';
-$lang['btn_save'] = 'Speichern';
-$lang['btn_preview'] = 'Vorschau';
-$lang['btn_top'] = 'Nach oben';
-$lang['btn_newer'] = '<< jüngere Ãnderungen';
-$lang['btn_older'] = 'ältere Ãnderungen >>';
-$lang['btn_revs'] = 'Ãltere Versionen';
-$lang['btn_recent'] = 'Letzte Ãnderungen';
-$lang['btn_upload'] = 'Hochladen';
-$lang['btn_cancel'] = 'Abbrechen';
-$lang['btn_index'] = 'Ãbersicht';
-$lang['btn_secedit'] = 'Bearbeiten';
-$lang['btn_login'] = 'Anmelden';
-$lang['btn_logout'] = 'Abmelden';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Updaten';
-$lang['btn_delete'] = 'Löschen';
-$lang['btn_back'] = 'Zurück';
-$lang['btn_backlink'] = 'Links hierher';
-$lang['btn_backtomedia'] = 'Zurück zur Dateiauswahl';
-$lang['btn_subscribe'] = 'Ãnderungen abonnieren';
-$lang['btn_unsubscribe'] = 'Ãnderungen abbestellen';
-$lang['btn_subscribens'] = 'Namensraumänderungen abonnieren';
-$lang['btn_unsubscribens'] = 'Namensraumänderungen abbestellen';
-$lang['btn_profile'] = 'Benutzerprofil';
-$lang['btn_reset'] = 'Zurücksetzen';
-$lang['btn_resendpwd'] = 'Sende neues Passwort';
-$lang['btn_draft'] = 'Entwurf bearbeiten';
-$lang['btn_recover'] = 'Entwurf wieder herstellen';
-$lang['btn_draftdel'] = 'Entwurf löschen';
-$lang['loggedinas'] = 'Angemeldet als';
-$lang['user'] = 'Benutzername';
-$lang['pass'] = 'Passwort';
-$lang['newpass'] = 'Neues Passwort';
-$lang['oldpass'] = 'Bestätigen (Altes Passwort)';
-$lang['passchk'] = 'und nochmal';
-$lang['remember'] = 'Angemeldet bleiben';
-$lang['fullname'] = 'Voller Name';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Registrieren';
-$lang['profile'] = 'Benutzerprofil';
-$lang['badlogin'] = 'Nutzername oder Passwort sind falsch.';
-$lang['minoredit'] = 'kleine Ãnderung';
-$lang['draftdate'] = 'Entwurf gespeichert am';
-$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden';
-$lang['reguexists'] = 'Der Nutzername existiert leider schon.';
-$lang['regsuccess'] = 'Der neue Nutzer wurde angelegt und das Passwort per Email versandt.';
-$lang['regsuccess2'] = 'Der neue Nutzer wurde angelegt.';
-$lang['regmailfail'] = 'Offenbar ist ein Fehler beim Versenden der Passwortmail aufgetreten. Bitte wenden Sie sich an den Wiki-Admin.';
-$lang['regbadmail'] = 'Die angegebene Mail-Adresse scheint ungültig zu sein. Falls dies ein Fehler ist, wenden Sie sich bitte an den Wiki-Admin.';
-$lang['regbadpass'] = 'Die beiden eingegeben Passwörter stimmen nicht überein. Bitte versuchen Sie es noch einmal.';
-$lang['regpwmail'] = 'Ihr DokuWiki Passwort';
-$lang['reghere'] = 'Sie haben noch keinen Zugang? Hier anmelden';
-$lang['profna'] = 'Ãnderung des Benutzerprofils in diesem Wiki nicht möglich.';
-$lang['profnochange'] = 'Keine Ãnderungen, nichts zu tun.';
-$lang['profnoempty'] = 'Es muà ein Name und eine E-Mail Adresse angegeben werden.';
-$lang['profchanged'] = 'Benuzerprofil erfolgreich geändert.';
-$lang['pwdforget'] = 'Passwort vergessen? Kein Problem';
-$lang['resendna'] = 'Passwörter versenden ist in diesem Wiki nicht möglich.';
-$lang['resendpwd'] = 'Neues Passwort schicken für';
-$lang['resendpwdmissing'] = 'Es tut mir Leid, aber Sie müssen alle Felder ausfüllen.';
-$lang['resendpwdnouser'] = 'Es tut mir Leid, aber der Benutzer existiert nicht in unserer Datenbank.';
-$lang['resendpwdbadauth'] = 'Es tut mir Leid, aber dieser Authentifizierungscode ist ungültig. Stellen Sie sicher, dass Sie den kompletten Bestätigungslink verwendet haben.';
-$lang['resendpwdconfirm'] = 'Ein Bestätigungslink wurde per E-Mail versandt.';
-$lang['resendpwdsuccess'] = 'Ihr neues Passwort wurde per E-Mail versandt.';
-$lang['txt_upload'] = 'Datei zum Hochladen auswählen';
-$lang['txt_filename'] = 'Hochladen als (optional)';
-$lang['txt_overwrt'] = 'Bestehende Datei überschreiben';
-$lang['lockedby'] = 'Momentan gesperrt von';
-$lang['lockexpire'] = 'Sperre läuft ab am';
-$lang['willexpire'] = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, sollten Sie sie durch einen Klick auf den Vorschau-Knopf verlängern.';
-$lang['notsavedyet'] = 'Nicht gespeicherte Ãnderungen gehen verloren!\nWeitermachen?';
-$lang['rssfailed'] = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: ';
-$lang['nothingfound'] = 'Nichts gefunden.';
-$lang['mediaselect'] = 'Dateiauswahl';
-$lang['fileupload'] = 'Datei hochladen';
-$lang['uploadsucc'] = 'Datei wurde erfolgreich hochgeladen';
-$lang['uploadfail'] = 'Hochladen fehlgeschlagen. Keine Berechtigung?';
-$lang['uploadwrong'] = 'Hochladen verweigert. Diese Dateiendung ist nicht erlaubt.';
-$lang['uploadexist'] = 'Datei existiert bereits. Keine Ãnderungen vorgenommen.';
-$lang['uploadbadcontent'] = 'Die hochgeladenen Daten stimmen nicht mit der Dateiendung % überein.';
-$lang['uploadspam'] = 'Hochladen verweigert: Treffer auf der Spamliste.';
-$lang['uploadxss'] = 'Hochladen verweigert: Daten scheinen Schadcode zu enthalten.';
-$lang['deletesucc'] = 'Die Datei "%s" wurde gelöscht.';
-$lang['deletefail'] = '"%s" konnte nicht gelöscht werden - prüfen Sie die Berechtigungen.';
-$lang['mediainuse'] = 'Die Datei "%s" wurde nicht gelöscht - sie wird noch verwendet.';
-$lang['namespaces'] = 'Namensräume';
-$lang['mediafiles'] = 'Vorhandene Dateien in';
-$lang['js']['keepopen'] = 'Fenster nach Auswahl nicht schlieÃen';
-$lang['js']['hidedetails'] = 'Details ausblenden';
-$lang['mediausage'] = 'Syntax zum Verwenden dieser Datei:';
-$lang['mediaview'] = 'Originaldatai öffnen';
-$lang['mediaroot'] = 'Wurzel';
-$lang['mediaupload'] = 'Laden Sie hier eine Datei in den momentanen Namensraum hoch. Um Unterordner zu erstellen, stellen Sie diese dem Dateinamen im Feld "Hochladen als" durch Doppelpunkt getrennt voran.';
-$lang['mediaextchange'] = 'Dateiendung vom .%s nach .%s geändert!';
-$lang['reference'] = 'Verwendung von';
-$lang['ref_inuse'] = 'Diese Datei kann nicht gelöscht werden, da sie noch von folgenden Seiten benutzt wird:';
-$lang['ref_hidden'] = 'Einige Verweise sind auf Seiten, für die Sie keine Leseberechtigung haben.';
-$lang['hits'] = 'Treffer';
-$lang['quickhits'] = 'Passende Seitennamen';
-$lang['toc'] = 'Inhaltsverzeichnis';
-$lang['current'] = 'aktuell';
-$lang['yours'] = 'Ihre Version';
-$lang['diff'] = 'Zeige Unterschiede zu aktueller Version';
-$lang['diff2'] = 'Zeige Unterschiede der ausgewählten Versionen';
-$lang['line'] = 'Zeile';
-$lang['breadcrumb'] = 'Zuletzt angesehen';
-$lang['youarehere'] = 'Sie befinden sich hier';
-$lang['lastmod'] = 'Zuletzt geändert';
-$lang['by'] = 'von';
-$lang['deleted'] = 'gelöscht';
-$lang['created'] = 'angelegt';
-$lang['restored'] = 'alte Version wieder hergestellt';
-$lang['external_edit'] = 'Externe Bearbeitung';
-$lang['summary'] = 'Zusammenfassung';
-$lang['mail_newpage'] = 'Neue Seite:';
-$lang['mail_changed'] = 'Seite geaendert:';
-$lang['mail_new_user'] = 'Neuer Benutzer:';
-$lang['mail_upload'] = 'Datei hochgeladen:';
-$lang['nosmblinks'] = 'Das Verlinken von Windows Freigaben funktioniert nur im Microsoft Internet Explorer.\nDer Link kann jedoch durch Kopieren und Einfügen verwendet werden.';
-$lang['qb_alert'] = 'Bitte geben Sie den zu formatierenden Text ein.\nDieser wird am Ende des Dokuments eingefügt.';
-$lang['qb_bold'] = 'Fetter Text';
-$lang['qb_italic'] = 'Kursiver Text';
-$lang['qb_underl'] = 'Unterstrichener Text';
-$lang['qb_code'] = 'Code Text';
-$lang['qb_strike'] = 'Durchgestrichener Text';
-$lang['qb_h1'] = 'Level 1 Ãberschrift';
-$lang['qb_h2'] = 'Level 2 Ãberschrift';
-$lang['qb_h3'] = 'Level 3 Ãberschrift';
-$lang['qb_h4'] = 'Level 4 Ãberschrift';
-$lang['qb_h5'] = 'Level 5 Ãberschrift';
-$lang['qb_link'] = 'Interner Link';
-$lang['qb_extlink'] = 'Externer Link';
-$lang['qb_hr'] = 'Horizontale Linie';
-$lang['qb_ol'] = 'Nummerierter Listenpunkt';
-$lang['qb_ul'] = 'Listenpunkt';
-$lang['qb_media'] = 'Bilder und andere Dateien hinzufügen';
-$lang['qb_sig'] = 'Unterschrift einfügen';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Sonderzeichen';
-$lang['del_confirm'] = 'Eintrag wirklich löschen?';
-$lang['admin_register'] = 'Neuen Benutzer anmelden';
-$lang['metaedit'] = 'Metadaten bearbeiten';
-$lang['metasaveerr'] = 'Die Metadaten konnten nicht gesichert werden';
-$lang['metasaveok'] = 'Metadaten gesichert';
-$lang['img_backto'] = 'Zurück zu';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Bildunterschrift';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Dateiname';
-$lang['img_fsize'] = 'Grösse';
-$lang['img_artist'] = 'FotografIn';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Schlagwörter';
-$lang['subscribe_success'] = '%s hat nun Ãnderungen der Seite %s abonniert';
-$lang['subscribe_error'] = '%s kann die Ãnderungen der Seite %s nicht abonnieren';
-$lang['subscribe_noaddress'] = 'Weil Ihre E-Mail-Adresse fehlt, können Sie das Thema nicht abonnieren';
-$lang['unsubscribe_success'] = 'Das Abonnement von %s für die Seite %s wurde aufgelöst';
-$lang['unsubscribe_error'] = 'Das Abonnement von %s für die Seite %s konnte nicht aufgelöst werden';
-$lang['authmodfailed'] = 'Benutzerüberprüfung nicht möglich. Bitte wenden Sie sich an den Systembetreuer.';
-$lang['authtempfail'] = 'Benutzerüberprüfung momentan nicht möglich. Falls das Problem andauert wenden Sie sich an den Systembetreuer.';
-$lang['i_chooselang'] = 'Wählen Sie Ihre Sprache';
-$lang['i_installer'] = 'DokuWiki Installation';
-$lang['i_wikiname'] = 'Wiki-Name';
-$lang['i_enableacl'] = 'Zugangskontrolle (ACL) aktivieren (empfohlen)';
-$lang['i_superuser'] = 'Administrator Benutzername';
-$lang['i_problems'] = 'Das Installationsprogramm hat unten aufgeführte Probleme festgestellt, die zunächst behoben werden müssen bevor Sie mit der Installation fortfahren können.';
-$lang['i_modified'] = 'Aus Sicherheitsgründen arbeitet dieses Script nur mit einer neuen, unmodifizierten DokuWiki Installation. Sie sollten entweder alle Dateien noch einmal frisch installieren oder die <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki-Installationsanleitung</a> konsultieren.';
-$lang['i_funcna'] = 'Die PHP Funktion <code>%s</code> ist nicht verfügbar. Unter Umständen wurde sie von Ihrem Hoster deaktiviert?';
-$lang['i_phpver'] = 'Ihre PHP-Version <code>%s</code> ist niedriger als die benötigte Version <code>%s</code>. Bitte aktualisieren Sie Ihre PHP Installation.';
-$lang['i_permfail'] = '<code>%s</code> ist nicht durch DokuWiki beschreibbar. Sie müssen die Berechtigungen dieses Ordners ändern!';
-$lang['i_confexists'] = '<code>%s</code> existiert bereits';
-$lang['i_writeerr'] = '<code>%s</code> konnte nicht erzeugt werden. Sie sollten die Verzeichnis-/Datei-Rechte überprüfen und die Datei manuell anlegen.';
-$lang['i_badhash'] = 'Unbekannte oder modifizierte dokuwiki.php (Hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - unerlaubter oder leerer Wert';
-$lang['i_success'] = 'Die Konfiguration wurde erfolgreich abgeschlossen. Sie können jetzt die install.php löschen. Ihr
- <a href="doku.php">neues DokuWiki</a> ist jetzt für Sie bereit.';
-$lang['i_failure'] = 'Es sind Fehler beim Schreiben der Konfigurationsdateien aufgetreten. Sie müssen diese vermutlich von Hand beheben, bevor Sie Ihr <a href="doku.php">neues DokuWiki</a> nutzen können.';
-$lang['i_policy'] = 'Anfangseinstellung für Zugangskontrolle (ACL)';
-$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben, hochladen für alle)';
-$lang['i_pol1'] = 'Ãffentliches Wiki (lesen für alle, schreiben und hochladen für registrierte Nutzer)';
-$lang['i_pol2'] = 'Geschlossenes Wiki (lesen, schreiben, hochladen nur für registrierte Nutzer)';
-$lang['i_retry'] = 'Wiederholen';
+<?php
+/**
+ * german language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Christof <gagi at fin.de>
+ * @author Anika Henke <henke at cosmocode.de>
+ * @author Esther Brunner <esther at kaffeehaus.ch>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @author Michael Klier <chi at chimeric.de>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Diese Seite bearbeiten';
+$lang['btn_source'] = 'Zeige Quelltext';
+$lang['btn_show'] = 'Seite anzeigen';
+$lang['btn_create'] = 'Seite anlegen';
+$lang['btn_search'] = 'Suche';
+$lang['btn_save'] = 'Speichern';
+$lang['btn_preview'] = 'Vorschau';
+$lang['btn_top'] = 'Nach oben';
+$lang['btn_newer'] = '<< jüngere Ãnderungen';
+$lang['btn_older'] = 'ältere Ãnderungen >>';
+$lang['btn_revs'] = 'Ãltere Versionen';
+$lang['btn_recent'] = 'Letzte Ãnderungen';
+$lang['btn_upload'] = 'Hochladen';
+$lang['btn_cancel'] = 'Abbrechen';
+$lang['btn_index'] = 'Ãbersicht';
+$lang['btn_secedit'] = 'Bearbeiten';
+$lang['btn_login'] = 'Anmelden';
+$lang['btn_logout'] = 'Abmelden';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Updaten';
+$lang['btn_delete'] = 'Löschen';
+$lang['btn_back'] = 'Zurück';
+$lang['btn_backlink'] = 'Links hierher';
+$lang['btn_backtomedia'] = 'Zurück zur Dateiauswahl';
+$lang['btn_subscribe'] = 'Ãnderungen abonnieren';
+$lang['btn_unsubscribe'] = 'Ãnderungen abbestellen';
+$lang['btn_subscribens'] = 'Namensraumänderungen abonnieren';
+$lang['btn_unsubscribens'] = 'Namensraumänderungen abbestellen';
+$lang['btn_profile'] = 'Benutzerprofil';
+$lang['btn_reset'] = 'Zurücksetzen';
+$lang['btn_resendpwd'] = 'Sende neues Passwort';
+$lang['btn_draft'] = 'Entwurf bearbeiten';
+$lang['btn_recover'] = 'Entwurf wieder herstellen';
+$lang['btn_draftdel'] = 'Entwurf löschen';
+$lang['loggedinas'] = 'Angemeldet als';
+$lang['user'] = 'Benutzername';
+$lang['pass'] = 'Passwort';
+$lang['newpass'] = 'Neues Passwort';
+$lang['oldpass'] = 'Bestätigen (Altes Passwort)';
+$lang['passchk'] = 'und nochmal';
+$lang['remember'] = 'Angemeldet bleiben';
+$lang['fullname'] = 'Voller Name';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Registrieren';
+$lang['profile'] = 'Benutzerprofil';
+$lang['badlogin'] = 'Nutzername oder Passwort sind falsch.';
+$lang['minoredit'] = 'kleine Ãnderung';
+$lang['draftdate'] = 'Entwurf gespeichert am';
+$lang['regmissing'] = 'Alle Felder müssen ausgefüllt werden';
+$lang['reguexists'] = 'Der Nutzername existiert leider schon.';
+$lang['regsuccess'] = 'Der neue Nutzer wurde angelegt und das Passwort per Email versandt.';
+$lang['regsuccess2'] = 'Der neue Nutzer wurde angelegt.';
+$lang['regmailfail'] = 'Offenbar ist ein Fehler beim Versenden der Passwortmail aufgetreten. Bitte wenden Sie sich an den Wiki-Admin.';
+$lang['regbadmail'] = 'Die angegebene Mail-Adresse scheint ungültig zu sein. Falls dies ein Fehler ist, wenden Sie sich bitte an den Wiki-Admin.';
+$lang['regbadpass'] = 'Die beiden eingegeben Passwörter stimmen nicht überein. Bitte versuchen Sie es noch einmal.';
+$lang['regpwmail'] = 'Ihr DokuWiki Passwort';
+$lang['reghere'] = 'Sie haben noch keinen Zugang? Hier anmelden';
+$lang['profna'] = 'Ãnderung des Benutzerprofils in diesem Wiki nicht möglich.';
+$lang['profnochange'] = 'Keine Ãnderungen, nichts zu tun.';
+$lang['profnoempty'] = 'Es muà ein Name und eine E-Mail Adresse angegeben werden.';
+$lang['profchanged'] = 'Benuzerprofil erfolgreich geändert.';
+$lang['pwdforget'] = 'Passwort vergessen? Kein Problem';
+$lang['resendna'] = 'Passwörter versenden ist in diesem Wiki nicht möglich.';
+$lang['resendpwd'] = 'Neues Passwort schicken für';
+$lang['resendpwdmissing'] = 'Es tut mir Leid, aber Sie müssen alle Felder ausfüllen.';
+$lang['resendpwdnouser'] = 'Es tut mir Leid, aber der Benutzer existiert nicht in unserer Datenbank.';
+$lang['resendpwdbadauth'] = 'Es tut mir Leid, aber dieser Authentifizierungscode ist ungültig. Stellen Sie sicher, dass Sie den kompletten Bestätigungslink verwendet haben.';
+$lang['resendpwdconfirm'] = 'Ein Bestätigungslink wurde per E-Mail versandt.';
+$lang['resendpwdsuccess'] = 'Ihr neues Passwort wurde per E-Mail versandt.';
+$lang['txt_upload'] = 'Datei zum Hochladen auswählen';
+$lang['txt_filename'] = 'Hochladen als (optional)';
+$lang['txt_overwrt'] = 'Bestehende Datei überschreiben';
+$lang['lockedby'] = 'Momentan gesperrt von';
+$lang['lockexpire'] = 'Sperre läuft ab am';
+$lang['willexpire'] = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, sollten Sie sie durch einen Klick auf den Vorschau-Knopf verlängern.';
+$lang['notsavedyet'] = 'Nicht gespeicherte Ãnderungen gehen verloren!\nWeitermachen?';
+$lang['rssfailed'] = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: ';
+$lang['nothingfound'] = 'Nichts gefunden.';
+$lang['mediaselect'] = 'Dateiauswahl';
+$lang['fileupload'] = 'Datei hochladen';
+$lang['uploadsucc'] = 'Datei wurde erfolgreich hochgeladen';
+$lang['uploadfail'] = 'Hochladen fehlgeschlagen. Keine Berechtigung?';
+$lang['uploadwrong'] = 'Hochladen verweigert. Diese Dateiendung ist nicht erlaubt.';
+$lang['uploadexist'] = 'Datei existiert bereits. Keine Ãnderungen vorgenommen.';
+$lang['uploadbadcontent'] = 'Die hochgeladenen Daten stimmen nicht mit der Dateiendung % überein.';
+$lang['uploadspam'] = 'Hochladen verweigert: Treffer auf der Spamliste.';
+$lang['uploadxss'] = 'Hochladen verweigert: Daten scheinen Schadcode zu enthalten.';
+$lang['deletesucc'] = 'Die Datei "%s" wurde gelöscht.';
+$lang['deletefail'] = '"%s" konnte nicht gelöscht werden - prüfen Sie die Berechtigungen.';
+$lang['mediainuse'] = 'Die Datei "%s" wurde nicht gelöscht - sie wird noch verwendet.';
+$lang['namespaces'] = 'Namensräume';
+$lang['mediafiles'] = 'Vorhandene Dateien in';
+$lang['js']['keepopen'] = 'Fenster nach Auswahl nicht schlieÃen';
+$lang['js']['hidedetails'] = 'Details ausblenden';
+$lang['mediausage'] = 'Syntax zum Verwenden dieser Datei:';
+$lang['mediaview'] = 'Originaldatai öffnen';
+$lang['mediaroot'] = 'Wurzel';
+$lang['mediaupload'] = 'Laden Sie hier eine Datei in den momentanen Namensraum hoch. Um Unterordner zu erstellen, stellen Sie diese dem Dateinamen im Feld "Hochladen als" durch Doppelpunkt getrennt voran.';
+$lang['mediaextchange'] = 'Dateiendung vom .%s nach .%s geändert!';
+$lang['reference'] = 'Verwendung von';
+$lang['ref_inuse'] = 'Diese Datei kann nicht gelöscht werden, da sie noch von folgenden Seiten benutzt wird:';
+$lang['ref_hidden'] = 'Einige Verweise sind auf Seiten, für die Sie keine Leseberechtigung haben.';
+$lang['hits'] = 'Treffer';
+$lang['quickhits'] = 'Passende Seitennamen';
+$lang['toc'] = 'Inhaltsverzeichnis';
+$lang['current'] = 'aktuell';
+$lang['yours'] = 'Ihre Version';
+$lang['diff'] = 'Zeige Unterschiede zu aktueller Version';
+$lang['diff2'] = 'Zeige Unterschiede der ausgewählten Versionen';
+$lang['line'] = 'Zeile';
+$lang['breadcrumb'] = 'Zuletzt angesehen';
+$lang['youarehere'] = 'Sie befinden sich hier';
+$lang['lastmod'] = 'Zuletzt geändert';
+$lang['by'] = 'von';
+$lang['deleted'] = 'gelöscht';
+$lang['created'] = 'angelegt';
+$lang['restored'] = 'alte Version wieder hergestellt';
+$lang['external_edit'] = 'Externe Bearbeitung';
+$lang['summary'] = 'Zusammenfassung';
+$lang['mail_newpage'] = 'Neue Seite:';
+$lang['mail_changed'] = 'Seite geaendert:';
+$lang['mail_new_user'] = 'Neuer Benutzer:';
+$lang['mail_upload'] = 'Datei hochgeladen:';
+$lang['nosmblinks'] = 'Das Verlinken von Windows Freigaben funktioniert nur im Microsoft Internet Explorer.\nDer Link kann jedoch durch Kopieren und Einfügen verwendet werden.';
+$lang['qb_alert'] = 'Bitte geben Sie den zu formatierenden Text ein.\nDieser wird am Ende des Dokuments eingefügt.';
+$lang['qb_bold'] = 'Fetter Text';
+$lang['qb_italic'] = 'Kursiver Text';
+$lang['qb_underl'] = 'Unterstrichener Text';
+$lang['qb_code'] = 'Code Text';
+$lang['qb_strike'] = 'Durchgestrichener Text';
+$lang['qb_h1'] = 'Level 1 Ãberschrift';
+$lang['qb_h2'] = 'Level 2 Ãberschrift';
+$lang['qb_h3'] = 'Level 3 Ãberschrift';
+$lang['qb_h4'] = 'Level 4 Ãberschrift';
+$lang['qb_h5'] = 'Level 5 Ãberschrift';
+$lang['qb_link'] = 'Interner Link';
+$lang['qb_extlink'] = 'Externer Link';
+$lang['qb_hr'] = 'Horizontale Linie';
+$lang['qb_ol'] = 'Nummerierter Listenpunkt';
+$lang['qb_ul'] = 'Listenpunkt';
+$lang['qb_media'] = 'Bilder und andere Dateien hinzufügen';
+$lang['qb_sig'] = 'Unterschrift einfügen';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Sonderzeichen';
+$lang['del_confirm'] = 'Eintrag wirklich löschen?';
+$lang['admin_register'] = 'Neuen Benutzer anmelden';
+$lang['metaedit'] = 'Metadaten bearbeiten';
+$lang['metasaveerr'] = 'Die Metadaten konnten nicht gesichert werden';
+$lang['metasaveok'] = 'Metadaten gesichert';
+$lang['img_backto'] = 'Zurück zu';
+$lang['img_title'] = 'Titel';
+$lang['img_caption'] = 'Bildunterschrift';
+$lang['img_date'] = 'Datum';
+$lang['img_fname'] = 'Dateiname';
+$lang['img_fsize'] = 'Grösse';
+$lang['img_artist'] = 'FotografIn';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords'] = 'Schlagwörter';
+$lang['subscribe_success'] = '%s hat nun Ãnderungen der Seite %s abonniert';
+$lang['subscribe_error'] = '%s kann die Ãnderungen der Seite %s nicht abonnieren';
+$lang['subscribe_noaddress'] = 'Weil Ihre E-Mail-Adresse fehlt, können Sie das Thema nicht abonnieren';
+$lang['unsubscribe_success'] = 'Das Abonnement von %s für die Seite %s wurde aufgelöst';
+$lang['unsubscribe_error'] = 'Das Abonnement von %s für die Seite %s konnte nicht aufgelöst werden';
+$lang['authmodfailed'] = 'Benutzerüberprüfung nicht möglich. Bitte wenden Sie sich an den Systembetreuer.';
+$lang['authtempfail'] = 'Benutzerüberprüfung momentan nicht möglich. Falls das Problem andauert wenden Sie sich an den Systembetreuer.';
+$lang['i_chooselang'] = 'Wählen Sie Ihre Sprache';
+$lang['i_installer'] = 'DokuWiki Installation';
+$lang['i_wikiname'] = 'Wiki-Name';
+$lang['i_enableacl'] = 'Zugangskontrolle (ACL) aktivieren (empfohlen)';
+$lang['i_superuser'] = 'Administrator Benutzername';
+$lang['i_problems'] = 'Das Installationsprogramm hat unten aufgeführte Probleme festgestellt, die zunächst behoben werden müssen bevor Sie mit der Installation fortfahren können.';
+$lang['i_modified'] = 'Aus Sicherheitsgründen arbeitet dieses Script nur mit einer neuen, unmodifizierten DokuWiki Installation. Sie sollten entweder alle Dateien noch einmal frisch installieren oder die <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki-Installationsanleitung</a> konsultieren.';
+$lang['i_funcna'] = 'Die PHP Funktion <code>%s</code> ist nicht verfügbar. Unter Umständen wurde sie von Ihrem Hoster deaktiviert?';
+$lang['i_phpver'] = 'Ihre PHP-Version <code>%s</code> ist niedriger als die benötigte Version <code>%s</code>. Bitte aktualisieren Sie Ihre PHP Installation.';
+$lang['i_permfail'] = '<code>%s</code> ist nicht durch DokuWiki beschreibbar. Sie müssen die Berechtigungen dieses Ordners ändern!';
+$lang['i_confexists'] = '<code>%s</code> existiert bereits';
+$lang['i_writeerr'] = '<code>%s</code> konnte nicht erzeugt werden. Sie sollten die Verzeichnis-/Datei-Rechte überprüfen und die Datei manuell anlegen.';
+$lang['i_badhash'] = 'Unbekannte oder modifizierte dokuwiki.php (Hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - unerlaubter oder leerer Wert';
+$lang['i_success'] = 'Die Konfiguration wurde erfolgreich abgeschlossen. Sie können jetzt die install.php löschen. Ihr
+ <a href="doku.php">neues DokuWiki</a> ist jetzt für Sie bereit.';
+$lang['i_failure'] = 'Es sind Fehler beim Schreiben der Konfigurationsdateien aufgetreten. Sie müssen diese vermutlich von Hand beheben, bevor Sie Ihr <a href="doku.php">neues DokuWiki</a> nutzen können.';
+$lang['i_policy'] = 'Anfangseinstellung für Zugangskontrolle (ACL)';
+$lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben, hochladen für alle)';
+$lang['i_pol1'] = 'Ãffentliches Wiki (lesen für alle, schreiben und hochladen für registrierte Nutzer)';
+$lang['i_pol2'] = 'Geschlossenes Wiki (lesen, schreiben, hochladen nur für registrierte Nutzer)';
+$lang['i_retry'] = 'Wiederholen';
Modified: site/trunk/www-root/wiki/inc/lang/de/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Seite gesperrt ======
-
-Diese Seite ist momentan von einem anderen Nutzer gesperrt. Warten
-Sie, bis dieser mit dem Bearbeiten fertig ist oder die Sperre abläuft.
-
+====== Seite gesperrt ======
+
+Diese Seite ist momentan von einem anderen Nutzer gesperrt. Warten
+Sie, bis dieser mit dem Bearbeiten fertig ist oder die Sperre abläuft.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Anmelden ======
-
-Geben Sie Ihren Benutzernamen und Ihr Passwort in das Formular unten ein, um sich anzumelden.
-Bitte beachten Sie, dass dafür "Cookies" in den Sicherheitseinstellungen Ihres Browsers erlaubt sein müssen.
-
+====== Anmelden ======
+
+Geben Sie Ihren Benutzernamen und Ihr Passwort in das Formular unten ein, um sich anzumelden.
+Bitte beachten Sie, dass dafür "Cookies" in den Sicherheitseinstellungen Ihres Browsers erlaubt sein müssen.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Eine Seite in Ihrem Wiki wurde geändert oder neu angelegt. Hier sind die Details:
-
-Datum : @DATE@
-Browser : @BROWSER@
-IP-Adresse : @IPADDRESS@
-Hostname : @HOSTNAME@
-Alte Version : @OLDPAGE@
-Neue Version : @NEWPAGE@
-Zusammenfassung: @SUMMARY@
-Benutzer : @USER@
-
- at DIFF@
-
-
---
-Diese Mail kommt vom DokuWiki auf
- at DOKUWIKIURL@
+Eine Seite in Ihrem Wiki wurde geändert oder neu angelegt. Hier sind die Details:
+
+Datum : @DATE@
+Browser : @BROWSER@
+IP-Adresse : @IPADDRESS@
+Hostname : @HOSTNAME@
+Alte Version : @OLDPAGE@
+Neue Version : @NEWPAGE@
+Zusammenfassung: @SUMMARY@
+Benutzer : @USER@
+
+ at DIFF@
+
+
+--
+Diese Mail kommt vom DokuWiki auf
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/de/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======Dieses Thema existiert noch nicht======
-
-Sie sind einem Link zu einer Seite gefolgt, die noch nicht existiert.
-Sie können die Seite mit dem Knopf **"[Seite anlegen]"** selbst anlegen
-und mit Inhalt füllen.
-
-
+======Dieses Thema existiert noch nicht======
+
+Sie sind einem Link zu einer Seite gefolgt, die noch nicht existiert.
+Sie können die Seite mit dem Knopf **"[Seite anlegen]"** selbst anlegen
+und mit Inhalt füllen.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/de/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Version existiert nicht======
-
-Die angegebene Version des Dokuments wurde nicht gefunden.
-Benutzen Sie den **''[Ãltere Versionen]''** Knopf, um eine Liste aller
-verfügbaren Versionen dieses Dokuments zu erhalten.
-
+======Version existiert nicht======
+
+Die angegebene Version des Dokuments wurde nicht gefunden.
+Benutzen Sie den **''[Ãltere Versionen]''** Knopf, um eine Liste aller
+verfügbaren Versionen dieses Dokuments zu erhalten.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hallo @FULLNAME@!
-
-Hier sind Ihre Nutzerdaten für @TITLE@ auf @DOKUWIKIURL@
-
-Benutzername: @LOGIN@
-Passwort : @PASSWORD@
-
---
-Diese Mail kommt vom DokuWiki auf
- at DOKUWIKIURL@
+Hallo @FULLNAME@!
+
+Hier sind Ihre Nutzerdaten für @TITLE@ auf @DOKUWIKIURL@
+
+Benutzername: @LOGIN@
+Passwort : @PASSWORD@
+
+--
+Diese Mail kommt vom DokuWiki auf
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/de/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Vorschau======
-
-So wird Ihr Text später aussehen. Achtung: Der Text wurde noch **nicht gespeichert**!
-
-
+======Vorschau======
+
+So wird Ihr Text später aussehen. Achtung: Der Text wurde noch **nicht gespeichert**!
+
+
Modified: site/trunk/www-root/wiki/inc/lang/de/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Hallo @FULLNAME@!
-
-Jemand hat ein neues Passwort für Ihren @TITLE@
-login auf @DOKUWIKIURL@ angefordert.
-
-Wenn Sie diese Ãnderung nicht angefordert haben, ignorieren Sie diese
-E-Mail einfach.
-
-Um die Anforderung zu bestätigen, folgen Sie bitte dem unten angegebenen
-Bestätigungslink.
-
- at CONFIRM@
-
---
-Diese Mail kommt vom DokuWiki auf
- at DOKUWIKIURL@
+Hallo @FULLNAME@!
+
+Jemand hat ein neues Passwort für Ihren @TITLE@
+login auf @DOKUWIKIURL@ angefordert.
+
+Wenn Sie diese Ãnderung nicht angefordert haben, ignorieren Sie diese
+E-Mail einfach.
+
+Um die Anforderung zu bestätigen, folgen Sie bitte dem unten angegebenen
+Bestätigungslink.
+
+ at CONFIRM@
+
+--
+Diese Mail kommt vom DokuWiki auf
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/de/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt.
-
+Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Letzte Ãnderungen======
-
-Die folgenden Seiten wurden zuletzt geändert.
-
-
+======Letzte Ãnderungen======
+
+Die folgenden Seiten wurden zuletzt geändert.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/de/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Als neuer Nutzer registrieren ======
-
-Bitte füllen Sie alle Felder aus, um einen neuen Nutzer-Account in diesem
-Wiki anzulegen. Stellen Sie sicher, dass eine **gültige E-Mail-Adresse**
-angegeben wird - das Passwort wird an diese Adresse gesendet.
-Der Nutzername sollte aus einem Wort ohne Umlaute, Leer- oder Sonderzeichen
-bestehen.
-
+====== Als neuer Nutzer registrieren ======
+
+Bitte füllen Sie alle Felder aus, um einen neuen Nutzer-Account in diesem
+Wiki anzulegen. Stellen Sie sicher, dass eine **gültige E-Mail-Adresse**
+angegeben wird - das Passwort wird an diese Adresse gesendet.
+Der Nutzername sollte aus einem Wort ohne Umlaute, Leer- oder Sonderzeichen
+bestehen.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Ein neuer Benutzer hat sich registriert. Hier sind die Details:
-
-Benutzername : @NEWUSER@
-Voller Name : @NEWNAME@
-E-Mail : @NEWEMAIL@
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-
---
-Diese Mail kommt vom DokuWiki auf
- at DOKUWIKIURL@
+Ein neuer Benutzer hat sich registriert. Hier sind die Details:
+
+Benutzername : @NEWUSER@
+Voller Name : @NEWNAME@
+E-Mail : @NEWEMAIL@
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+
+--
+Diese Mail kommt vom DokuWiki auf
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/de/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Neues Passwort anfordern ======
-
-Füllen Sie alle Felder unten aus, um ein neues Passwort für Ihren Zugang zu erhalten.
-Das neue Passwort wird an Ihre gespeicherte E-Mail-Adresse geschickt. Der Benutzername
-sollte Ihr Wiki-Benutzername sein.
+====== Neues Passwort anfordern ======
+
+Füllen Sie alle Felder unten aus, um ein neues Passwort für Ihren Zugang zu erhalten.
+Das neue Passwort wird an Ihre gespeicherte E-Mail-Adresse geschickt. Der Benutzername
+sollte Ihr Wiki-Benutzername sein.
Modified: site/trunk/www-root/wiki/inc/lang/de/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Ãltere Versionen======
-
-Dies sind ältere Versionen des gewählten Dokuments. Um zu einer älteren Version zurückzukehren, wählen Sie die entsprechende Version aus, klicken auf **''[Diese Seite bearbeiten]''** und speichern Sie sie erneut ab.
-
+======Ãltere Versionen======
+
+Dies sind ältere Versionen des gewählten Dokuments. Um zu einer älteren Version zurückzukehren, wählen Sie die entsprechende Version aus, klicken auf **''[Diese Seite bearbeiten]''** und speichern Sie sie erneut ab.
+
Modified: site/trunk/www-root/wiki/inc/lang/de/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-======Suche======
-
-Unten sind die Ergebnisse Ihrer Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde,
-können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den
-**''[Seite anlegen]''** Knopf drücken.
-
-=====Ergebnisse=====
-
-
+======Suche======
+
+Unten sind die Ergebnisse Ihrer Suche gelistet. Falls der gesuchte Begriff nicht gefunden wurde,
+können Sie direkt eine neue Seite für den Suchbegriff anlegen, indem Sie auf den
+**''[Seite anlegen]''** Knopf drücken.
+
+=====Ergebnisse=====
+
+
Modified: site/trunk/www-root/wiki/inc/lang/de/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Dies ist eine alte Version des Dokuments!**
-----
+**Dies ist eine alte Version des Dokuments!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/de/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,122 +1,122 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-aber
-als
-auch
-auf
-aus
-bei
-bin
-bis
-bist
-dadurch
-daher
-darum
-das
-daÃ
-dass
-dein
-deine
-dem
-den
-der
-des
-dessen
-deshalb
-die
-dies
-dieser
-dieses
-doch
-dort
-durch
-ein
-eine
-einem
-einen
-einer
-eines
-euer
-eure
-für
-hatte
-hatten
-hattest
-hattet
-hier
-hinter
-ich
-ihr
-ihre
-ist
-jede
-jedem
-jeden
-jeder
-jedes
-jener
-jenes
-jetzt
-kann
-kannst
-können
-könnt
-machen
-mein
-meine
-mit
-muÃ
-muÃt
-musst
-müssen
-müÃt
-nach
-nachdem
-nein
-nicht
-nun
-oder
-seid
-sein
-seine
-sich
-sie
-sind
-soll
-sollen
-sollst
-sollt
-sonst
-soweit
-sowie
-und
-unser
-unsere
-unter
-vom
-von
-vor
-wann
-warum
-was
-weiter
-weitere
-wenn
-wer
-werde
-werden
-werdet
-weshalb
-wie
-wieder
-wieso
-wir
-wird
-wirst
-woher
-wohin
-zum
-zur
-über
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+aber
+als
+auch
+auf
+aus
+bei
+bin
+bis
+bist
+dadurch
+daher
+darum
+das
+daÃ
+dass
+dein
+deine
+dem
+den
+der
+des
+dessen
+deshalb
+die
+dies
+dieser
+dieses
+doch
+dort
+durch
+ein
+eine
+einem
+einen
+einer
+eines
+euer
+eure
+für
+hatte
+hatten
+hattest
+hattet
+hier
+hinter
+ich
+ihr
+ihre
+ist
+jede
+jedem
+jeden
+jeder
+jedes
+jener
+jenes
+jetzt
+kann
+kannst
+können
+könnt
+machen
+mein
+meine
+mit
+muÃ
+muÃt
+musst
+müssen
+müÃt
+nach
+nachdem
+nein
+nicht
+nun
+oder
+seid
+sein
+seine
+sich
+sie
+sind
+soll
+sollen
+sollst
+sollt
+sonst
+soweit
+sowie
+und
+unser
+unsere
+unter
+vom
+von
+vor
+wann
+warum
+was
+weiter
+weitere
+wenn
+wer
+werde
+werden
+werdet
+weshalb
+wie
+wieder
+wieso
+wir
+wird
+wirst
+woher
+wohin
+zum
+zur
+über
Modified: site/trunk/www-root/wiki/inc/lang/de/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Hallo!
-
-Die Seite @PAGE@ im @TITLE@ Wiki wurde bearbeitet.
-Das sind die Ãnderungen:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Um das Abonnement für diese Seite aufzulösen, melde Sie sich im Wiki an
- at DOKUWIKIURL@, besuchen dann
- at NEWPAGE@
-und klicken auf die Taste 'Ãnderungen abbestellen'.
-
---
-Diese Mail kommt vom DokuWiki auf
- at DOKUWIKIURL@
+Hallo!
+
+Die Seite @PAGE@ im @TITLE@ Wiki wurde bearbeitet.
+Das sind die Ãnderungen:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Um das Abonnement für diese Seite aufzulösen, melde Sie sich im Wiki an
+ at DOKUWIKIURL@, besuchen dann
+ at NEWPAGE@
+und klicken auf die Taste 'Ãnderungen abbestellen'.
+
+--
+Diese Mail kommt vom DokuWiki auf
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/de/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Benutzerprofil ändern ======
-
-Nur die Felder, die Sie ändern, werden aktualisiert. Alle anderen bleiben, wie sie sind. Ihren Benutzernamen können Sie jedoch nicht ändern.
-
-
+====== Benutzerprofil ändern ======
+
+Nur die Felder, die Sie ändern, werden aktualisiert. Alle anderen bleiben, wie sie sind. Ihren Benutzernamen können Sie jedoch nicht ändern.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/de/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Eine Datei wurde in Ihrem Wiki hochgeladen. Hier sind die Details:
-
-Datei : @MEDIA@
-Datum : @DATE@
-Browser : @BROWSER@
-IP-Adresse : @IPADDRESS@
-Hostname : @HOSTNAME@
-GröÃe : @SIZE@
-MIME-Typ : @MIME@
-Benutzer : @USER@
-
---
-Diese Mail kommt vom DokuWiki auf
- at DOKUWIKIURL@
+Eine Datei wurde in Ihrem Wiki hochgeladen. Hier sind die Details:
+
+Datei : @MEDIA@
+Datum : @DATE@
+Browser : @BROWSER@
+IP-Adresse : @IPADDRESS@
+Hostname : @HOSTNAME@
+GröÃe : @SIZE@
+MIME-Typ : @MIME@
+Benutzer : @USER@
+
+--
+Diese Mail kommt vom DokuWiki auf
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/de/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/de/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/de/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======SPAM blockiert======
-
-Ihre Ãnderungen wurden nicht gespeichert, da sie ein oder mehrere nicht
-erlaubte Wörter enthielten. Falls Sie versucht haben sollten, das Wiki zu Spammen --
-Schande über Sie! Wenn Sie glauben, dass der Eintrag zu Unrecht blockiert wurde,
-kontaktieren Sie bitte den Administrator des Wikis.
-
+======SPAM blockiert======
+
+Ihre Ãnderungen wurden nicht gespeichert, da sie ein oder mehrere nicht
+erlaubte Wörter enthielten. Falls Sie versucht haben sollten, das Wiki zu Spammen --
+Schande über Sie! Wenn Sie glauben, dass der Eintrag zu Unrecht blockiert wurde,
+kontaktieren Sie bitte den Administrator des Wikis.
+
Modified: site/trunk/www-root/wiki/inc/lang/el/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÎιαÏείÏιÏη ======
-
-ΠαÏακάÏÏ Î¼ÏοÏείÏε να βÏείÏε μια λίÏÏα με ÏÎ¹Ï Î´Ï
ναÏÏÏηÏÎµÏ Î´Î¹Î±ÏείÏιÏÎ·Ï ÏÏην
+====== ÎιαÏείÏιÏη ======
+
+ΠαÏακάÏÏ Î¼ÏοÏείÏε να βÏείÏε μια λίÏÏα με ÏÎ¹Ï Î´Ï
ναÏÏÏηÏÎµÏ Î´Î¹Î±ÏείÏιÏÎ·Ï ÏÏην
DokuWiki
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/el/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ΣÏνδεÏμοι ÏÏÎ¿Ï Ïην ÏÏÎÏοÏ
Ïα Ïελίδα ======
-
+====== ΣÏνδεÏμοι ÏÏÎ¿Ï Ïην ÏÏÎÏοÏ
Ïα Ïελίδα ======
+
Îι ÏαÏακάÏÏ ÏÎµÎ»Î¯Î´ÎµÏ ÏεÏιÎÏοÏ
ν ÏÏ
νδÎÏμοÏ
Ï ÏÏÎ¿Ï Ïην ÏÏÎÏοÏ
Ïα Ïελίδα.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/el/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/el/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Îη εÏιÏÏεÏÏή ενÎÏγεια ======
-
-ΣÏ
γγνÏμη, αλλά δεν ÎÏεÏε εÏαÏκή δικαιÏμαÏα για Ïην ÏÏ
γκεκÏιμÎνη ενÎÏγεια.
-
-ÎήÏÏÏ ÏαÏαλείÏαÏε να ÏÏ
νδεθείÏε?
+====== Îη εÏιÏÏεÏÏή ενÎÏγεια ======
+
+ΣÏ
γγνÏμη, αλλά δεν ÎÏεÏε εÏαÏκή δικαιÏμαÏα για Ïην ÏÏ
γκεκÏιμÎνη ενÎÏγεια.
+
+ÎήÏÏÏ ÏαÏαλείÏαÏε να ÏÏ
νδεθείÏε?
Modified: site/trunk/www-root/wiki/inc/lang/el/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ΣÏγκÏιÏη εκδÏÏεÏν ======
-
-ÎÎ´Ï Î²Î»ÎÏεÏε ÏÎ¹Ï Î´Î¹Î±ÏοÏÎÏ Î¼ÎµÏÎ±Î¾Ï ÏÎ·Ï ÎµÏιλεγμÎÎ½Î·Ï ÎκδοÏÎ·Ï ÎºÎ±Î¹ ÏÎ·Ï ÏÏÎÏοÏ
ÏÎ±Ï ÎκδοÏηÏ
-ÏÎ·Ï ÏελίδαÏ.
+====== ΣÏγκÏιÏη εκδÏÏεÏν ======
+
+ÎÎ´Ï Î²Î»ÎÏεÏε ÏÎ¹Ï Î´Î¹Î±ÏοÏÎÏ Î¼ÎµÏÎ±Î¾Ï ÏÎ·Ï ÎµÏιλεγμÎÎ½Î·Ï ÎκδοÏÎ·Ï ÎºÎ±Î¹ ÏÎ·Ï ÏÏÎÏοÏ
ÏÎ±Ï ÎκδοÏηÏ
+ÏÎ·Ï ÏελίδαÏ.
Modified: site/trunk/www-root/wiki/inc/lang/el/draft.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/el/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-ΤÏοÏοÏοιήÏÏε Ïην Ïελίδα **μÏνο** εάν μÏοÏείÏε να Ïην **βελÏιÏÏεÏε**. Îια να κάνεÏε
-δοκιμÎÏ Î¼Îµ αÏÏάλεια ή να εξοικειÏθείÏε με Ïο ÏεÏιβάλλον ÏÏηÏιμοÏοιήÏÏε Ïο [[:playground:playground|playground]].
-ÎÏÎ¿Ï ÏÏοÏοÏοιήÏÏε Ïην Ïελίδα εÏιλÎξÏε ''ÎÏοθήκεÏ
Ïη''. ÎείÏε ÏÎ¹Ï [[:wiki:syntax|οδηγίεÏ]]
-για Ïην ÏÏÏÏή ÏÏνÏαξη.
+ΤÏοÏοÏοιήÏÏε Ïην Ïελίδα **μÏνο** εάν μÏοÏείÏε να Ïην **βελÏιÏÏεÏε**. Îια να κάνεÏε
+δοκιμÎÏ Î¼Îµ αÏÏάλεια ή να εξοικειÏθείÏε με Ïο ÏεÏιβάλλον ÏÏηÏιμοÏοιήÏÏε Ïο [[:playground:playground|playground]].
+ÎÏÎ¿Ï ÏÏοÏοÏοιήÏÏε Ïην Ïελίδα εÏιλÎξÏε ''ÎÏοθήκεÏ
Ïη''. ÎείÏε ÏÎ¹Ï [[:wiki:syntax|οδηγίεÏ]]
+για Ïην ÏÏÏÏή ÏÏνÏαξη.
Modified: site/trunk/www-root/wiki/inc/lang/el/editrev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/el/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ÎαÏÎ¬Î»Î¿Î³Î¿Ï ======
-
-ÎÏ
ÏÏÏ ÎµÎ¯Î½Î±Î¹ ÎÎ½Î±Ï ÎºÎ±ÏÎ¬Î»Î¿Î³Î¿Ï ÏλÏν ÏÏν διαθÎÏιμÏν ÏελίδÏν ÏαξινομημÎνÏν καÏά [[doku>wiki:namespaces|ÏακÎλοÏ
Ï]].
+====== ÎαÏÎ¬Î»Î¿Î³Î¿Ï ======
+
+ÎÏ
ÏÏÏ ÎµÎ¯Î½Î±Î¹ ÎÎ½Î±Ï ÎºÎ±ÏÎ¬Î»Î¿Î³Î¿Ï ÏλÏν ÏÏν διαθÎÏιμÏν ÏελίδÏν ÏαξινομημÎνÏν καÏά [[doku>wiki:namespaces|ÏακÎλοÏ
Ï]].
Modified: site/trunk/www-root/wiki/inc/lang/el/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,25 +1,25 @@
-<p>ÎÏ
Ïή η Ïελίδα ÏεÏιÎÏει ÏληÏοÏοÏÎ¯ÎµÏ ÏοÏ
βοηθοÏν ÏÏην αÏÏική εγκαÏάÏÏαÏη και
-ÏÏθμιÏη ÏÎ·Ï ÎµÏαÏÎ¼Î¿Î³Î®Ï <a href="http://wiki.splitbrain.org">Dokuwiki</a>. ΠεÏιÏÏÏÏεÏεÏ
-ÏληÏοÏοÏÎ¯ÎµÏ Ï
ÏάÏÏοÏ
ν ÏÏη <a href="http://wiki.splitbrain.org/wiki:installer">Ïελίδα ÏεκμηÏίÏÏηÏ</a>
-ÏοÏ
Î¿Î´Î·Î³Î¿Ï ÎµÎ³ÎºÎ±ÏάÏÏαÏηÏ.</p>
-
-<p>ΠεÏαÏμογή DokuWiki ÏÏηÏιμοÏοιεί αÏλά αÏÏεία για να αÏοθηκεÏει ÏÎ¹Ï ÏÎµÎ»Î¯Î´ÎµÏ wiki
-καθÏÏ ÎºÎ±Î¹ ÏληÏοÏοÏÎ¯ÎµÏ ÏοÏ
ÏÏεÏίζονÏαι με αÏ
ÏÎÏ (Ï.Ï. εικÏνεÏ, καÏαλÏγοÏ
Ï Î±Î½Î±Î¶Î®ÏηÏηÏ,
-ÏαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏελίδÏν, κλÏ). Îια να λειÏοÏ
Ïγεί ÏÏÏÏά η εÏαÏμογή DokuWiki
-<strong>ÏÏÎÏει</strong> να ÎÏει δικαιÏμαÏα εγγÏαÏÎ®Ï ÏÏοÏ
Ï ÏακÎλοÏ
Ï ÏοÏ
ÏιλοξενοÏν
-αÏ
Ïά Ïα αÏÏεία. ΠοδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï Î´ÎµÎ½ ÎÏει Ïην δÏ
ναÏÏÏηÏα να ÏαÏαÏÏÏήÏει αÏ
Ïά Ïα
-δικαιÏμαÏα εγγÏαÏÎ®Ï ÏÏοÏ
Ï ÏÏεÏικοÏÏ ÏακÎλοÏ
Ï. ΠκανονικÏÏ ÏÏÏÏÎ¿Ï Î³Î¹Î± να γίνει αÏ
ÏÏ ÎµÎ¯Î½Î±Î¹
-είÏε αÏεÏ
Î¸ÎµÎ¯Î±Ï Ïε ÏεÏιβάλλον γÏÎ±Î¼Î¼Î®Ï ÎµÎ½ÏολÏν ή, εάν δεν ÎÏεÏε ÏÎÏοια ÏÏÏÏβαÏη, μÎÏÏ FTP ή
-ÏοÏ
Ïίνακα ελÎγÏοÏ
ÏοÏ
ÏεÏιβάλλονÏÎ¿Ï ÏÎ¹Î»Î¿Î¾ÎµÎ½Î¯Î±Ï (Ï.Ï. cPanel).</p>
-
-<p>ΠοδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï Î¸Î± ÏÏ
θμίÏει Ïην εÏαÏμογή DokuWiki ÏÏÏε να ÏÏηÏιμοÏοιεί
-<acronym title="access control list">ACL</acronym>, με ÏÏÏÏο ÏÏÏε ο διαÏειÏιÏÏÎ®Ï Î½Î±
-ÎÏει δÏ
ναÏÏÏηÏα ειÏÏδοÏ
και ÏÏÏÏβαÏη ÏÏο Î¼ÎµÎ½Î¿Ï Î´Î¹Î±ÏείÏιÏÎ·Ï ÏÎ·Ï ÎµÏαÏÎ¼Î¿Î³Î®Ï Î³Î¹Î± εγκαÏάÏÏαÏη
-εÏεκÏάÏεÏν, διαÏείÏιÏη ÏÏηÏÏÏν, διαÏείÏιÏη δικαιÏμάÏÏν ÏÏÏÏβαÏÎ·Ï ÏÏÎ¹Ï Î´Î¹Î¬ÏοÏÎµÏ ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹
-αλλαγή ÏÏν ÏÏ
θμίÏεÏν. ÎÏ
ÏÏ Î´ÎµÎ½ είναι αÏαÏαίÏηÏο για να λειÏοÏ
ÏγήÏει η εÏαÏμογή, αλλά
-κάνει Ïην διαÏείÏιÏή ÏÎ·Ï ÎµÏ
κολÏÏεÏη.</p>
-
-<p>Îι ÎμÏειÏοι ÏÏήÏÏÎµÏ ÎºÎ±Î¹ οι ÏÏήÏÏÎµÏ Î¼Îµ ειδικÎÏ Î±ÏαιÏήÏÎµÎ¹Ï Î¼ÏοÏοÏν να εÏιÏκεÏθοÏν
-ÏÎ¹Ï ÏÎµÎ»Î¯Î´ÎµÏ ÏοÏ
ÏεÏιÎÏοÏ
ν λεÏÏομεÏείÏ
-<a href="http://wiki.splitbrain.org/wiki:install">Î¿Î´Î·Î³Î¯ÎµÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏηÏ</a>
-και <a href="http://wiki.splitbrain.org/wiki:config">ÏληÏοÏοÏÎ¯ÎµÏ Î³Î¹Î± ÏÎ¹Ï ÏÏ
θμίÏειÏ</a>.</p>
+<p>ÎÏ
Ïή η Ïελίδα ÏεÏιÎÏει ÏληÏοÏοÏÎ¯ÎµÏ ÏοÏ
βοηθοÏν ÏÏην αÏÏική εγκαÏάÏÏαÏη και
+ÏÏθμιÏη ÏÎ·Ï ÎµÏαÏÎ¼Î¿Î³Î®Ï <a href="http://wiki.splitbrain.org">Dokuwiki</a>. ΠεÏιÏÏÏÏεÏεÏ
+ÏληÏοÏοÏÎ¯ÎµÏ Ï
ÏάÏÏοÏ
ν ÏÏη <a href="http://wiki.splitbrain.org/wiki:installer">Ïελίδα ÏεκμηÏίÏÏηÏ</a>
+ÏοÏ
Î¿Î´Î·Î³Î¿Ï ÎµÎ³ÎºÎ±ÏάÏÏαÏηÏ.</p>
+
+<p>ΠεÏαÏμογή DokuWiki ÏÏηÏιμοÏοιεί αÏλά αÏÏεία για να αÏοθηκεÏει ÏÎ¹Ï ÏÎµÎ»Î¯Î´ÎµÏ wiki
+καθÏÏ ÎºÎ±Î¹ ÏληÏοÏοÏÎ¯ÎµÏ ÏοÏ
ÏÏεÏίζονÏαι με αÏ
ÏÎÏ (Ï.Ï. εικÏνεÏ, καÏαλÏγοÏ
Ï Î±Î½Î±Î¶Î®ÏηÏηÏ,
+ÏαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏελίδÏν, κλÏ). Îια να λειÏοÏ
Ïγεί ÏÏÏÏά η εÏαÏμογή DokuWiki
+<strong>ÏÏÎÏει</strong> να ÎÏει δικαιÏμαÏα εγγÏαÏÎ®Ï ÏÏοÏ
Ï ÏακÎλοÏ
Ï ÏοÏ
ÏιλοξενοÏν
+αÏ
Ïά Ïα αÏÏεία. ΠοδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï Î´ÎµÎ½ ÎÏει Ïην δÏ
ναÏÏÏηÏα να ÏαÏαÏÏÏήÏει αÏ
Ïά Ïα
+δικαιÏμαÏα εγγÏαÏÎ®Ï ÏÏοÏ
Ï ÏÏεÏικοÏÏ ÏακÎλοÏ
Ï. ΠκανονικÏÏ ÏÏÏÏÎ¿Ï Î³Î¹Î± να γίνει αÏ
ÏÏ ÎµÎ¯Î½Î±Î¹
+είÏε αÏεÏ
Î¸ÎµÎ¯Î±Ï Ïε ÏεÏιβάλλον γÏÎ±Î¼Î¼Î®Ï ÎµÎ½ÏολÏν ή, εάν δεν ÎÏεÏε ÏÎÏοια ÏÏÏÏβαÏη, μÎÏÏ FTP ή
+ÏοÏ
Ïίνακα ελÎγÏοÏ
ÏοÏ
ÏεÏιβάλλονÏÎ¿Ï ÏÎ¹Î»Î¿Î¾ÎµÎ½Î¯Î±Ï (Ï.Ï. cPanel).</p>
+
+<p>ΠοδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï Î¸Î± ÏÏ
θμίÏει Ïην εÏαÏμογή DokuWiki ÏÏÏε να ÏÏηÏιμοÏοιεί
+<acronym title="access control list">ACL</acronym>, με ÏÏÏÏο ÏÏÏε ο διαÏειÏιÏÏÎ®Ï Î½Î±
+ÎÏει δÏ
ναÏÏÏηÏα ειÏÏδοÏ
και ÏÏÏÏβαÏη ÏÏο Î¼ÎµÎ½Î¿Ï Î´Î¹Î±ÏείÏιÏÎ·Ï ÏÎ·Ï ÎµÏαÏÎ¼Î¿Î³Î®Ï Î³Î¹Î± εγκαÏάÏÏαÏη
+εÏεκÏάÏεÏν, διαÏείÏιÏη ÏÏηÏÏÏν, διαÏείÏιÏη δικαιÏμάÏÏν ÏÏÏÏβαÏÎ·Ï ÏÏÎ¹Ï Î´Î¹Î¬ÏοÏÎµÏ ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹
+αλλαγή ÏÏν ÏÏ
θμίÏεÏν. ÎÏ
ÏÏ Î´ÎµÎ½ είναι αÏαÏαίÏηÏο για να λειÏοÏ
ÏγήÏει η εÏαÏμογή, αλλά
+κάνει Ïην διαÏείÏιÏή ÏÎ·Ï ÎµÏ
κολÏÏεÏη.</p>
+
+<p>Îι ÎμÏειÏοι ÏÏήÏÏÎµÏ ÎºÎ±Î¹ οι ÏÏήÏÏÎµÏ Î¼Îµ ειδικÎÏ Î±ÏαιÏήÏÎµÎ¹Ï Î¼ÏοÏοÏν να εÏιÏκεÏθοÏν
+ÏÎ¹Ï ÏÎµÎ»Î¯Î´ÎµÏ ÏοÏ
ÏεÏιÎÏοÏ
ν λεÏÏομεÏείÏ
+<a href="http://wiki.splitbrain.org/wiki:install">Î¿Î´Î·Î³Î¯ÎµÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏηÏ</a>
+και <a href="http://wiki.splitbrain.org/wiki:config">ÏληÏοÏοÏÎ¯ÎµÏ Î³Î¹Î± ÏÎ¹Ï ÏÏ
θμίÏειÏ</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/el/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/**
- * Greek language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Thanos Massias <tm at thriasio.gr>
- * @author ÎθανάÏÎ¹Î¿Ï ÎÏÎ±Î®Ï <homunculus at wana.gr>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'ΤÏοÏοÏοίηÏη ÏελίδαÏ';
-$lang['btn_source'] = 'Î Ïοβολή κÏδικα ÏελίδαÏ';
-$lang['btn_show'] = 'Î Ïοβολή ÏελίδαÏ';
-$lang['btn_create'] = 'ÎημιοÏ
Ïγία ÏελίδαÏ';
-$lang['btn_search'] = 'ÎναζήÏηÏη';
-$lang['btn_save'] = 'ÎÏοθήκεÏ
Ïη';
-$lang['btn_preview'] = 'Î ÏοεÏιÏκÏÏηÏη';
-$lang['btn_top'] = 'ÎÏιÏÏÏοÏή ÏÏην κοÏÏ
Ïή ÏÎ·Ï ÏελίδαÏ';
-$lang['btn_newer'] = '<< ÏλÎον ÏÏÏÏÏαÏεÏ';
-$lang['btn_older'] = 'λιγÏÏεÏο ÏÏÏÏÏαÏÎµÏ >>';
-$lang['btn_revs'] = 'ΠαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏελίδαÏ';
-$lang['btn_recent'] = 'Î ÏÏÏÏαÏÎµÏ Î±Î»Î»Î±Î³ÎÏ ÏελίδÏν';
-$lang['btn_upload'] = 'ΦÏÏÏÏÏη';
-$lang['btn_cancel'] = 'ÎκÏÏÏÏη';
-$lang['btn_index'] = 'ÎαÏάλογοÏ';
-$lang['btn_secedit'] = 'ΤÏοÏοÏοίηÏη';
-$lang['btn_login'] = 'ÎίÏÎ¿Î´Î¿Ï ÏÏήÏÏη';
-$lang['btn_logout'] = 'ÎÎ¾Î¿Î´Î¿Ï ÏÏήÏÏη';
-$lang['btn_admin'] = 'ÎιαÏείÏιÏη';
-$lang['btn_update'] = 'ÎνημÎÏÏÏη';
-$lang['btn_delete'] = 'ΣβήÏιμο';
-$lang['btn_back'] = 'ΠίÏÏ';
-$lang['btn_backlink'] = 'ΣÏνδεÏμοι ÏÏÎ¿Ï Ïην ÏÏÎÏοÏ
Ïα Ïελίδα';
-$lang['btn_backtomedia'] = 'ÎÏιÏÏÏοÏή ÏÏην εÏιλογή αÏÏείÏν';
-$lang['btn_subscribe'] = 'ÎγγÏαÏή Ïε λήÏη ενημεÏÏÏεÏν';
-$lang['btn_unsubscribe'] = 'ÎιαγÏαÏή αÏÏ Î»Î®Ïη ενημεÏÏÏεÏν';
-$lang['btn_profile'] = 'ΤÏοÏοÏοίηÏη ÏÏοÏίλ';
-$lang['btn_reset'] = 'ÎκÏÏÏÏη';
-$lang['btn_resendpwd'] = 'ÎÏοÏÏολή νÎοÏ
κÏδικοÏ';
-$lang['btn_draft'] = 'ΤÏοÏοÏοίηÏη αÏ
ÏÏμαÏα αÏοθηκεÏ
μÎÎ½Î·Ï ÏελίδαÏ';
-$lang['btn_recover'] = 'ÎÏαναÏοÏά αÏ
ÏÏμαÏα αÏοθηκεÏ
μÎÎ½Î·Ï ÏελίδαÏ';
-$lang['btn_draftdel'] = 'ÎιαγÏαÏή αÏ
ÏÏμαÏα αÏοθηκεÏ
μÎÎ½Î·Ï ÏελίδαÏ';
-$lang['loggedinas'] = 'ΣÏ
νδεδεμÎÎ½Î¿Ï ÏÏ';
-$lang['user'] = 'Îνομα';
-$lang['pass'] = 'ÎÏδικÏÏ';
-$lang['newpass'] = 'ÎÎÎ¿Ï ÎºÏδικÏÏ ÎµÎ¹ÏÏδοÏ
';
-$lang['oldpass'] = 'ÎÏιβεβαίÏÏη ÏÏÎÏονÏÎ¿Ï ÎºÏδικοÏ';
-$lang['passchk'] = 'ακÏμη μια ÏοÏά';
-$lang['remember'] = 'ÎÏομνημÏνεÏ
Ïη ÏÏοιÏείÏν λογαÏιαÏμοÏ';
-$lang['fullname'] = 'ÎνομαÏεÏÏνÏ
μο';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'ÎγγÏαÏή';
-$lang['profile'] = 'Î ÏοÏίλ ÏÏήÏÏη';
-$lang['badlogin'] = 'ΣÏ
γνÏμη, Ïο Ïνομα ÏÏήÏÏη ή ο κÏδικÏÏ Î®Ïαν λανθαÏμÎνο.';
-$lang['minoredit'] = 'ÎÏήμανÏÎµÏ Î±Î»Î»Î±Î³ÎÏ';
-$lang['draftdate'] = 'ÎÏ
ÏÏμαÏη αÏοθήκεÏ
Ïη ÏÏÏÏειÏÎ·Ï ÏÎµÎ»Î¯Î´Î±Ï ÏÏιÏ';
-$lang['regmissing'] = 'Î ÏÎÏει να ÏÏ
μÏληÏÏÏεÏε Ïλα Ïα Ïεδία.';
-$lang['reguexists'] = 'ÎÏ
ÏÏÏ Î¿ λογαÏιαÏμÏÏ Ï
ÏάÏÏει ήδη.';
-$lang['regsuccess'] = 'ΠλογαÏιαÏμÏÏ Î´Î·Î¼Î¹Î¿Ï
Ïγήθηκε και ο κÏδικÏÏ ÎµÏÏάλει με e-mail.';
-$lang['regsuccess2'] = 'ΠλογαÏιαÏμÏÏ Î´Î·Î¼Î¹Î¿Ï
Ïγήθηκε.';
-$lang['regmailfail'] = 'ΦαίνεÏαι να Ï
ÏάÏÏει ÏÏÏβλημα με Ïην αÏοÏÏολή ÏοÏ
κÏÎ´Î¹ÎºÎ¿Ï Î¼ÎÏÏ e-mail. ΠαÏακαλοÏμε εÏικοινÏνήÏÏε μαζί μαÏ!';
-$lang['regbadmail'] = 'ΠδιεÏθÏ
νÏη e-mail δεν δείÏνει ÎγκÏ
Ïη - εάν ÏιÏÏεÏεÏαι ÏÏι αÏ
ÏÏ ÎµÎ¯Î½Î±Î¹ λάθοÏ, εÏικοινÏνήÏÏε μαζί μαÏ';
-$lang['regbadpass'] = 'Îι δÏο κÏδικοί δεν είναι ίδιοι, ÏÏοÏÏαθήÏÏε ξανά.';
-$lang['regpwmail'] = 'ΠκÏδικÏÏ ÏαÏ';
-$lang['reghere'] = 'Îεν ÎÏεÏε λογαÏιαÏμο ακÏμη? ÎημιοÏ
ÏγήÏÏε Îναν';
-$lang['profna'] = 'ÎÏ
ÏÏ Ïο wiki δεν Ï
ÏοÏÏηÏίζει Ïην ÏÏοÏοÏοίηÏη ÏÏοÏίλ.';
-$lang['profnochange'] = 'Îαμία αλλαγή.';
-$lang['profnoempty'] = 'Îεν εÏιÏÏÎÏεÏαι ÎºÎµÎ½Ï Ïνομα ÏÏήÏÏη η κενή διεÏθÏ
νÏη email.';
-$lang['profchanged'] = 'Το ÏÏοÏίλ ÏÏήÏÏη ÏÏοÏοÏοιήθηκε εÏιÏÏ
ÏÏÏ.';
-$lang['pwdforget'] = 'ÎεÏάÏαÏε Ïο κÏÎ´Î¹ÎºÏ ÏαÏ? ÎÏοκÏήÏÏε νÎο.';
-$lang['resendna'] = 'ÎÏ
ÏÏ Ïο wiki δεν Ï
ÏοÏÏηÏίζει Ïην εκ\' νÎοÏ
αÏοÏÏολή κÏδικÏν.';
-$lang['resendpwd'] = 'ÎÏοÏÏολή νÎÏν κÏδικÏν για Ïον ÏÏήÏÏη';
-$lang['resendpwdmissing'] = 'Î ÏÎÏει να ÏÏ
μÏληÏÏÏεÏε Ïλα Ïα Ïεδία.';
-$lang['resendpwdnouser'] = 'ÎÏ
ÏÏÏ Î¿ ÏÏήÏÏÎ·Ï Î´ÎµÎ½ Ï
ÏάÏÏει ÏÏα αÏÏεία μαÏ.';
-$lang['resendpwdbadauth'] = 'ÎÏ
ÏÏÏ Î¿ κÏδικÏÏ ÎµÎ½ÎµÏγοÏοίηÏÎ·Ï Î´ÎµÎ½ είναι ÎγκÏ
ÏοÏ.';
-$lang['resendpwdconfirm'] = 'Î ÏÏνδεÏÎ¼Î¿Ï ÏÏÎ¿Ï Ïην Ïελίδα ενεÏγοÏοίηÏÎ·Ï ÎµÏÏάλει με e-mail.';
-$lang['resendpwdsuccess'] = 'ΠνÎÎ¿Ï ÏÎ±Ï ÎºÏδικÏÏ ÎµÏÏάλη με e-mail.';
-$lang['txt_upload'] = 'ÎÏιλÎξÏε αÏÏείο για ÏÏÏÏÏÏη';
-$lang['txt_filename'] = 'ÎÏιλÎξÏε νÎο Ïνομα αÏÏείοÏ
(ÏÏοαιÏεÏικÏ)';
-$lang['txt_overwrt'] = 'ÎνÏικαÏάÏÏαÏη Ï
ÏάÏÏονÏÎ¿Ï Î±ÏÏείοÏ
';
-$lang['lockedby'] = 'Î ÏοÏÏÏινά κλειδÏμÎνο αÏÏ';
-$lang['lockexpire'] = 'Το κλείδÏμα λήγει ÏÏιÏ';
-$lang['willexpire'] = 'Το κλείδÏμά ÏÎ±Ï Î³Î¹Î± Ïην εÏεξεÏγαÏία αÏ
ÏÎ®Ï ÏÎ·Ï ÏÎµÎ»Î¯Î´Î±Ï Î¸Î± λήξει Ïε Îνα λεÏÏÏ.\nÎαι να Ïο ανανεÏÏεÏε ÏÏηÏιμοÏοιήÏÏε Ïην εÏιλογή Î ÏοεÏιÏκÏÏηÏη.';
-$lang['notsavedyet'] = 'Îι μη αÏοθηκεÏ
μÎÎ½ÎµÏ Î±Î»Î»Î±Î³ÎÏ Î¸Î± ÏαθοÏν.\nÎÎλεÏε να ÏÏ
νεÏίÏεÏε?';
-$lang['rssfailed'] = 'ÎμÏανίÏÏηκε κάÏοιο ÏÏάλμα καÏά Ïην ανάγνÏÏη αÏ
ÏÎ¿Ï ÏοÏ
feed: ';
-$lang['nothingfound'] = 'Îεν βÏÎθηκαν ÏÏεÏικά αÏοÏελÎÏμαÏα.';
-$lang['mediaselect'] = 'ÎÏιλογή ÎÏÏείÏν';
-$lang['fileupload'] = 'ÎεÏαÏÏÏÏÏÏη αÏÏείÏν';
-$lang['uploadsucc'] = 'ÎÏιÏÏ
ÏÎ®Ï Î¼ÎµÏαÏÏÏÏÏÏη';
-$lang['uploadfail'] = 'ΠμεÏαÏÏÏÏÏÏη αÏÎÏÏ
Ïε. ΠιθανÏν αÏ
ÏÏ Î½Î± οÏείλεÏαι ÏÏÎ¹Ï ÏÏ
θμίÏÎµÎ¹Ï ÏÏÏÏβαÏÎ·Ï ÏοÏ
αÏÏείοÏ
.';
-$lang['uploadwrong'] = 'ΠμεÏαÏÏÏÏÏÏη δεν Îγινε δεκÏή. Îεν εÏιÏÏÎÏονÏαι αÏÏεία αÏ
ÏÎ¿Ï ÏοÏ
ÏÏÏοÏ
!';
-$lang['uploadexist'] = 'Το αÏÏείο ήδη Ï
ÏάÏÏει. Îεν Îγινε καμία αλλαγή.';
-$lang['uploadbadcontent'] = 'Το ÏεÏιεÏÏμενο ÏοÏ
αÏÏείοÏ
δεν ÏαιÏιάζει με Ïην εÏÎκÏαÏή ÏοÏ
.';
-$lang['uploadspam'] = 'ΠμεÏαÏÏÏÏÏÏη ακÏ
ÏÏθηκε αÏÏ Ïο ÏίλÏÏο spam.';
-$lang['uploadxss'] = 'ΠμεÏαÏÏÏÏÏÏη ακÏ
ÏÏθηκε λÏÎ³Ï ÏÎ¹Î¸Î±Î½Î¿Ï ÎµÏικίνδÏ
νοÏ
ÏεÏιεÏομÎνοÏ
.';
-$lang['deletesucc'] = 'Το αÏÏείο "%s" διαγÏάÏηκε.';
-$lang['deletefail'] = '"%s" δεν διαγÏάÏηκε. ΠιθανÏν αÏ
ÏÏ Î½Î± οÏείλεÏαι ÏÏÎ¹Ï ÏÏ
θμίÏÎµÎ¹Ï ÏÏÏÏβαÏÎ·Ï ÏοÏ
αÏÏείοÏ
.';
-$lang['mediainuse'] = 'Το αÏÏείο "%s" δεν διαγÏάÏηκε - είναι ακÏμα Ïε ÏÏήÏη.';
-$lang['namespaces'] = 'Φάκελοι';
-$lang['mediafiles'] = 'Î¥ÏάÏÏονÏα αÏÏεία Ïε';
-$lang['js']['keepopen'] = 'Το ÏαÏάθÏ
Ïο να μην κλείνει';
-$lang['js']['hidedetails'] = 'ÎÏÏκÏÏ
Ïη λεÏÏομεÏειÏν';
-$lang['mediausage'] = 'ΧÏηÏιμοÏοιήÏÏε Ïην ακÏλοÏ
θη ÏÏνÏαξη για να ÏαÏαθÎÏεÏε αÏ
ÏÏ Ïο αÏÏείο:';
-$lang['mediaview'] = 'Îανονική ÏÏοβολή αÏÏείοÏ
';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'ΦοÏÏÏÏÏε Îνα αÏÏείο ÏÏον ÏÏÎÏονÏα Ïάκελο. Îια δημιοÏ
Ïγία Ï
Ïο-ÏακÎλÏν, ÏÏοÏθÎÏÏε ÏοÏ
Ï ÏÏιν αÏÏ Ïο Ïνομα ÏοÏ
αÏÏείοÏ
, ÏÏο Ïεδίο "ÎÏοθήκεÏ
Ïη ÏÏ", ÏÏηÏιμοÏοιÏνÏÎ±Ï Î¬Î½Ï-κάÏÏ ÏÎµÎ»ÎµÎ¯ÎµÏ ÏÏ Î´Î¹Î±ÏÏÏιÏÏικά.';
-$lang['mediaextchange'] = 'ΠεÏÎκÏαÏη ÏοÏ
αÏÏείοÏ
ÏÏοÏοÏοιήθηκε αÏÏ .%s Ïε .%s!';
-$lang['reference'] = 'ÎναÏοÏÎÏ ÏÏοÏ';
-$lang['ref_inuse'] = 'Το αÏÏείο δεν μÏοÏεί να διαγÏαÏεί, εÏειδή είναι ακÏμη Ïε ÏÏήÏη αÏÏ ÏÎ¹Ï Î±ÎºÏλοÏ
Î¸ÎµÏ ÏελίδεÏ:';
-$lang['ref_hidden'] = 'ÎεÏικÎÏ Î±Î½Î±ÏοÏÎÏ Î²ÏίÏκονÏαι Ïε ÏÎµÎ»Î¯Î´ÎµÏ ÏοÏ
δεν ÎÏεÏε δικαίÏμα να διαβάÏεÏε';
-$lang['hits'] = 'ÎναÏοÏÎÏ';
-$lang['quickhits'] = 'ΣÏεÏικÎÏ ÏελίδεÏ';
-$lang['toc'] = 'Î Î¯Î½Î±ÎºÎ±Ï Î ÎµÏιεÏομÎνÏν';
-$lang['current'] = 'ÏÏÎÏοÏ
Ïα';
-$lang['yours'] = 'Î ÎκδοÏή ÏαÏ';
-$lang['diff'] = 'ÏÏοβολή διαÏοÏÏν με Ïην ÏÏÎÏοÏ
Ïα ÎκδοÏη';
-$lang['diff2'] = 'Î Ïοβολή διαÏοÏÏν μεÏÎ±Î¾Ï ÏÏν εÏιλεγμÎνÏν εκδÏÏεÏν';
-$lang['line'] = 'ÎÏαμμή';
-$lang['breadcrumb'] = 'ÎÏÏοÏικÏ';
-$lang['youarehere'] = 'ÎίÏÏε εδÏ';
-$lang['lastmod'] = 'ΤελεÏ
Ïαία ÏÏοÏοÏοίηÏη';
-$lang['by'] = 'αÏÏ';
-$lang['deleted'] = 'διαγÏάÏηκε';
-$lang['created'] = 'δημιοÏ
Ïγήθηκε';
-$lang['restored'] = 'ÏαλαιÏÏεÏη ÎκδοÏη εÏαναÏÎÏθηκε';
-$lang['external_edit'] = 'εξÏÏεÏική ÏÏοÏοÏοίηÏη';
-$lang['summary'] = 'ÎÏεξεÏγαÏία ÏÏνοÏηÏ';
-$lang['mail_newpage'] = 'Ïελίδα ÏÏοÏÏÎθηκε:';
-$lang['mail_changed'] = 'Ïελίδα ÏÏοÏοÏοιήθηκε:';
-$lang['mail_new_user'] = 'νÎÎ¿Ï ÏÏήÏÏηÏ:';
-$lang['mail_upload'] = 'αÏÏείο ÏοÏÏÏθηκε:';
-$lang['nosmblinks'] = 'Îι ÏÏνδεÏμοι ÏÏÎ¿Ï Windows shares δοÏ
λεÏοÏ
ν μÏνο ÏÏον Microsoft Internet Explorer.\nÎÏοÏείÏε ÏάνÏα να κάνεÏε ανÏιγÏαÏή και εÏικÏλληÏη ÏοÏ
ÏÏ
νδÎÏμοÏ
.';
-$lang['qb_alert'] = 'Î ÏοÏθÎÏεÏε Ïο κείμενο ÏοÏ
θÎλεÏε να μοÏÏοÏοιήÏεÏε.\nÎα ÏÏοÏÏεθεί ÏÏο ÏÎÎ»Î¿Ï ÏοÏ
εγγÏάÏοÏ
.';
-$lang['qb_bold'] = 'ÎνÏονο Îείμενο';
-$lang['qb_italic'] = 'Πλάγιο Îείμενο';
-$lang['qb_underl'] = 'Î¥ÏογÏαμμιÏμÎνο Îείμενο';
-$lang['qb_code'] = 'Îείμενο κÏδικα';
-$lang['qb_strike'] = 'ÎιαγÏαμμιÏμÎνο Îείμενο';
-$lang['qb_h1'] = 'ÎεÏαλίδα 1οÏ
ÎÏιÏÎδοÏ
';
-$lang['qb_h2'] = 'ÎεÏαλίδα 2οÏ
ÎÏιÏÎδοÏ
';
-$lang['qb_h3'] = 'ÎεÏαλίδα 3οÏ
ÎÏιÏÎδοÏ
';
-$lang['qb_h4'] = 'ÎεÏαλίδα 4οÏ
ÎÏιÏÎδοÏ
';
-$lang['qb_h5'] = 'ÎεÏαλίδα 5οÏ
ÎÏιÏÎδοÏ
';
-$lang['qb_link'] = 'ÎÏÏÏεÏικÏÏ Î£ÏνδεÏμοÏ';
-$lang['qb_extlink'] = 'ÎξÏÏεÏικÏÏ Î£ÏνδεÏμοÏ';
-$lang['qb_hr'] = 'ÎιαÏÏÏιÏÏική ÎÏαμμή';
-$lang['qb_ol'] = 'ÎÏιθμημÎνη ÎίÏÏα';
-$lang['qb_ul'] = 'ÎίÏÏα';
-$lang['qb_media'] = 'Î ÏοÏθήκη ÎÏÏείÏν';
-$lang['qb_sig'] = 'Î ÏοÏθήκη Î¥ÏογÏαÏήÏ';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Îιδικοί ΧαÏακÏήÏεÏ';
-$lang['del_confirm'] = 'Îα διαγÏαÏεί?';
-$lang['admin_register'] = 'Î ÏοÏθήκη νÎοÏ
ÏÏήÏÏη';
-$lang['metaedit'] = 'ΤÏοÏοÏοίηÏη metadata';
-$lang['metasaveerr'] = 'ΠαÏοθήκεÏ
Ïη ÏÏν metadata αÏÎÏÏ
Ïε';
-$lang['metasaveok'] = 'ÎÏιÏÏ
ÏÎ®Ï Î±ÏοθήκεÏ
Ïη metadata';
-$lang['img_backto'] = 'ÎÏιÏÏÏοÏή Ïε';
-$lang['img_title'] = 'ΤίÏλοÏ';
-$lang['img_caption'] = 'ÎεζάνÏα';
-$lang['img_date'] = 'ÎμεÏομηνία';
-$lang['img_fname'] = 'Îνομα αÏÏείοÏ
';
-$lang['img_fsize'] = 'ÎÎγεθοÏ';
-$lang['img_artist'] = 'ÎαλλιÏÎÏνηÏ';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'ÎÎξειÏ-κλειδιά';
-$lang['subscribe_success'] = 'Î ÏοÏθήκη %s ÏÏην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
-$lang['subscribe_error'] = 'ÎÏοÏÏ
Ïία ÏÏοÏÎ¸Î®ÎºÎ·Ï %s ÏÏην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
-$lang['subscribe_noaddress'] = 'Îεν ÎÏεÏε δηλÏÏει e-mail διεÏθÏ
νÏη - δεν μÏοÏείÏε να γÏαÏÏείÏε ÏÏην λίÏÏα ÏÏ
νδÏομηÏÏν.';
-$lang['unsubscribe_success'] = 'ÎιαγÏαÏή %s αÏÏ Ïην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
-$lang['unsubscribe_error'] = 'ÎÏοÏÏ
Ïία διαγÏαÏÎ®Ï %s αÏÏ Ïην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
-$lang['authmodfailed'] = 'Îακή ÏÏθμιÏη λίÏÏÎ±Ï ÏÏηÏÏÏν. ΠαÏακαλοÏμε ενημεÏÏÏÏε Ïον διαÏειÏιÏÏή ÏοÏ
wiki.';
-$lang['authtempfail'] = 'ΠείÏÎ¿Î´Î¿Ï ÏÏηÏÏÏν δεν λειÏοÏ
Ïγεί αÏ
Ïή Ïην ÏÏιγμή. Îάν αÏ
ÏÏ Î´Î¹Î±Ïκεί για ÏÎ¿Î»Ï ÏÏÏνο, ÏαÏακαλοÏμε ενημεÏÏÏÏε Ïον διαÏειÏιÏÏή ÏοÏ
wiki.';
-$lang['i_chooselang'] = 'ÎÏιλογή γλÏÏÏαÏ';
-$lang['i_installer'] = 'ÎδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï DokuWiki';
-$lang['i_wikiname'] = 'ÎνομαÏία Wiki';
-$lang['i_enableacl'] = 'ÎνεÏγοÏοίηÏη ÎίÏÏÎ±Ï ÎικαιÏμάÏÏν Î ÏÏÏβαÏÎ·Ï - ACL (ÏÏ
νιÏÏάÏαι)';
-$lang['i_superuser'] = 'ÎιαÏειÏιÏÏήÏ';
-$lang['i_problems'] = 'ΠοδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï ÏÏ
νάνÏηÏε Ïα ÏÏοβλήμαÏα ÏοÏ
αναÏÎÏονÏαι ÏαÏακάÏÏ. ΠεγκαÏάÏÏαÏη δεν θα ολοκληÏÏθεί εÏιÏÏ
ÏÏÏ Î¼ÎÏÏι να εÏιλÏ
θοÏν αÏ
Ïά Ïα ÏÏοβλήμαÏα.';
-$lang['i_modified'] = 'Îια λÏγοÏ
Ï Î±ÏÏαλείαÏ, ο οδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï Î»ÎµÎ¹ÏοÏ
Ïγεί μÏνο με νÎÎµÏ ÎºÎ±Î¹ μη ÏÏοÏοÏοιημÎÎ½ÎµÏ ÎµÎ³ÎºÎ±ÏαÏÏάÏÎµÎ¹Ï Dokuwiki.
- Î ÏÎÏει είÏε να κάνεÏε νÎα εγκαÏάÏÏαÏη, ÏÏηÏιμοÏοιÏνÏÎ±Ï Ïο αÏÏÎ¹ÎºÏ ÏακÎÏο εγκαÏάÏÏαÏηÏ, ή να
- ÏÏ
μβοÏ
λεÏ
ÏείÏε ÏÎ¹Ï <a href="http://wiki.splitbrain.org/wiki:install">Î¿Î´Î·Î³Î¯ÎµÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï ÏÎ·Ï ÎµÏαÏμογήÏ.</a>';
-$lang['i_funcna'] = 'ΠλειÏοÏ
Ïγία <code>%s</code> ÏÎ·Ï PHP δεν είναι διαθÎÏιμη. ΠιθανÏν να είναι αÏενεÏγοÏοιημÎνη ÏÏÎ¹Ï ÏÏ
θμίÏÎµÎ¹Ï ÎναÏÎ¾Î·Ï ÏÎ·Ï PHP';
-$lang['i_phpver'] = 'Î ÎκδοÏη <code>%s</code> ÏÎ·Ï PHP ÏοÏ
ÎÏεÏε είναι ÏαλαιÏÏεÏη ÏÎ·Ï Î±ÏαιÏοÏÎ¼ÎµÎ½Î·Ï <code>%s</code>. Î ÏÎÏει να αναβαθμίÏεÏε Ïην PHP.';
-$lang['i_permfail'] = 'Î ÏÎ¬ÎºÎµÎ»Î¿Ï <code>%s</code> δεν είναι εγγÏάÏÎ¹Î¼Î¿Ï Î±ÏÏ Ïην εÏαÏμογή DokuWiki. Î ÏÎÏει να διοÏθÏÏεÏε Ïα δικαιÏμαÏα ÏÏÏÏβαÏÎ·Ï Î±Ï
ÏÎ¿Ï ÏοÏ
ÏακÎλοÏ
!';
-$lang['i_confexists'] = '<code>%s</code> Ï
ÏάÏÏει ήδη';
-$lang['i_writeerr'] = 'Îεν είναι δÏ
ναÏή η δημιοÏ
Ïγία ÏοÏ
<code>%s</code>. Î ÏÎÏει να διοÏθÏÏεÏε Ïα δικαιÏμαÏα ÏÏÏÏβαÏÎ·Ï Î±Ï
ÏÎ¿Ï ÏοÏ
ÏακÎλοÏ
/αÏÏείοÏ
και να δημιοÏ
ÏγήÏεÏε Ïο αÏÏείο ÏειÏοκίνηÏα!';
-$lang['i_badhash'] = 'Îη αναγνÏÏίÏιμο ή ÏÏοÏοÏοιημÎνο αÏÏείο dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - Î»Î¬Î¸Î¿Ï Î® ανÏÏαÏκÏη Ïιμή';
-$lang['i_success'] = 'ΠεγκαÏάÏÏαÏη ολοκληÏÏθηκε εÏιÏÏ
ÏÏÏ. ÎÏοÏείÏε ÏλÎον να διαγÏάÏεÏε Ïο αÏÏείο install.php. ΣÏ
νεÏίÏÏε ÏÏο
- <a href="doku.php">νÎο ÏÎ±Ï DokuWiki</a>.';
-$lang['i_failure'] = 'ÎμÏανίÏÏηκαν κάÏοια ÏÏοβλήμαÏα ÏÏη διαδικαÏία ανανÎÏÏÎ·Ï ÏÏν αÏÏείÏν ÏÏ
θμίÏεÏν. ΠιθανÏν να ÏÏειάζεÏαι να
- Ïα ÏÏοÏοÏοιήÏεÏε ÏειÏοκίνηÏα ÏÏÏε να μÏοÏείÏε να ÏÏηÏιμοÏοιήÏεÏε Ïο <a href="doku.php">νÎο ÏÎ±Ï DokuWiki</a>.';
-$lang['i_policy'] = 'ÎÏÏική ÏολιÏική ÎίÏÏÎ±Ï ÎικαιÏμάÏÏν Î ÏÏÏβαÏÎ·Ï - ACL';
-$lang['i_pol0'] = 'ÎνοιÏÏÏ Wiki (Ïλοι μÏοÏοÏν να διαβάÏοÏ
ν ή να δημιοÏ
ÏγήÏοÏ
ν/ÏÏοÏοÏοιήÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹ να μεÏαÏοÏÏÏÏοÏ
ν αÏÏεία)';
-$lang['i_pol1'] = 'ÎημÏÏιο Wiki (Ïλοι μÏοÏοÏν να διαβάÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ Î±Î»Î»Î¬ μÏνο οι εγγεγÏαμμÎνοι ÏÏήÏÏÎµÏ Î¼ÏοÏοÏν να δημιοÏ
ÏγήÏοÏ
ν/ÏÏοÏοÏοιήÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹ να μεÏαÏοÏÏÏÏοÏ
ν αÏÏεία)';
-$lang['i_pol2'] = 'ÎλειÏÏÏ Wiki (μÏνο οι εγγεγÏαμμÎνοι ÏÏήÏÏÎµÏ Î¼ÏοÏοÏν να διαβάÏοÏ
ν ή να δημιοÏ
ÏγήÏοÏ
ν/ÏÏοÏοÏοιήÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹ να μεÏαÏοÏÏÏÏοÏ
ν αÏÏεία)';
-$lang['i_retry'] = 'ÎÎα ÏÏοÏÏάθεια';
+<?php
+/**
+ * Greek language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Thanos Massias <tm at thriasio.gr>
+ * @author ÎθανάÏÎ¹Î¿Ï ÎÏÎ±Î®Ï <homunculus at wana.gr>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'ΤÏοÏοÏοίηÏη ÏελίδαÏ';
+$lang['btn_source'] = 'Î Ïοβολή κÏδικα ÏελίδαÏ';
+$lang['btn_show'] = 'Î Ïοβολή ÏελίδαÏ';
+$lang['btn_create'] = 'ÎημιοÏ
Ïγία ÏελίδαÏ';
+$lang['btn_search'] = 'ÎναζήÏηÏη';
+$lang['btn_save'] = 'ÎÏοθήκεÏ
Ïη';
+$lang['btn_preview'] = 'Î ÏοεÏιÏκÏÏηÏη';
+$lang['btn_top'] = 'ÎÏιÏÏÏοÏή ÏÏην κοÏÏ
Ïή ÏÎ·Ï ÏελίδαÏ';
+$lang['btn_newer'] = '<< ÏλÎον ÏÏÏÏÏαÏεÏ';
+$lang['btn_older'] = 'λιγÏÏεÏο ÏÏÏÏÏαÏÎµÏ >>';
+$lang['btn_revs'] = 'ΠαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏελίδαÏ';
+$lang['btn_recent'] = 'Î ÏÏÏÏαÏÎµÏ Î±Î»Î»Î±Î³ÎÏ ÏελίδÏν';
+$lang['btn_upload'] = 'ΦÏÏÏÏÏη';
+$lang['btn_cancel'] = 'ÎκÏÏÏÏη';
+$lang['btn_index'] = 'ÎαÏάλογοÏ';
+$lang['btn_secedit'] = 'ΤÏοÏοÏοίηÏη';
+$lang['btn_login'] = 'ÎίÏÎ¿Î´Î¿Ï ÏÏήÏÏη';
+$lang['btn_logout'] = 'ÎÎ¾Î¿Î´Î¿Ï ÏÏήÏÏη';
+$lang['btn_admin'] = 'ÎιαÏείÏιÏη';
+$lang['btn_update'] = 'ÎνημÎÏÏÏη';
+$lang['btn_delete'] = 'ΣβήÏιμο';
+$lang['btn_back'] = 'ΠίÏÏ';
+$lang['btn_backlink'] = 'ΣÏνδεÏμοι ÏÏÎ¿Ï Ïην ÏÏÎÏοÏ
Ïα Ïελίδα';
+$lang['btn_backtomedia'] = 'ÎÏιÏÏÏοÏή ÏÏην εÏιλογή αÏÏείÏν';
+$lang['btn_subscribe'] = 'ÎγγÏαÏή Ïε λήÏη ενημεÏÏÏεÏν';
+$lang['btn_unsubscribe'] = 'ÎιαγÏαÏή αÏÏ Î»Î®Ïη ενημεÏÏÏεÏν';
+$lang['btn_profile'] = 'ΤÏοÏοÏοίηÏη ÏÏοÏίλ';
+$lang['btn_reset'] = 'ÎκÏÏÏÏη';
+$lang['btn_resendpwd'] = 'ÎÏοÏÏολή νÎοÏ
κÏδικοÏ';
+$lang['btn_draft'] = 'ΤÏοÏοÏοίηÏη αÏ
ÏÏμαÏα αÏοθηκεÏ
μÎÎ½Î·Ï ÏελίδαÏ';
+$lang['btn_recover'] = 'ÎÏαναÏοÏά αÏ
ÏÏμαÏα αÏοθηκεÏ
μÎÎ½Î·Ï ÏελίδαÏ';
+$lang['btn_draftdel'] = 'ÎιαγÏαÏή αÏ
ÏÏμαÏα αÏοθηκεÏ
μÎÎ½Î·Ï ÏελίδαÏ';
+$lang['loggedinas'] = 'ΣÏ
νδεδεμÎÎ½Î¿Ï ÏÏ';
+$lang['user'] = 'Îνομα';
+$lang['pass'] = 'ÎÏδικÏÏ';
+$lang['newpass'] = 'ÎÎÎ¿Ï ÎºÏδικÏÏ ÎµÎ¹ÏÏδοÏ
';
+$lang['oldpass'] = 'ÎÏιβεβαίÏÏη ÏÏÎÏονÏÎ¿Ï ÎºÏδικοÏ';
+$lang['passchk'] = 'ακÏμη μια ÏοÏά';
+$lang['remember'] = 'ÎÏομνημÏνεÏ
Ïη ÏÏοιÏείÏν λογαÏιαÏμοÏ';
+$lang['fullname'] = 'ÎνομαÏεÏÏνÏ
μο';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'ÎγγÏαÏή';
+$lang['profile'] = 'Î ÏοÏίλ ÏÏήÏÏη';
+$lang['badlogin'] = 'ΣÏ
γνÏμη, Ïο Ïνομα ÏÏήÏÏη ή ο κÏδικÏÏ Î®Ïαν λανθαÏμÎνο.';
+$lang['minoredit'] = 'ÎÏήμανÏÎµÏ Î±Î»Î»Î±Î³ÎÏ';
+$lang['draftdate'] = 'ÎÏ
ÏÏμαÏη αÏοθήκεÏ
Ïη ÏÏÏÏειÏÎ·Ï ÏÎµÎ»Î¯Î´Î±Ï ÏÏιÏ';
+$lang['regmissing'] = 'Î ÏÎÏει να ÏÏ
μÏληÏÏÏεÏε Ïλα Ïα Ïεδία.';
+$lang['reguexists'] = 'ÎÏ
ÏÏÏ Î¿ λογαÏιαÏμÏÏ Ï
ÏάÏÏει ήδη.';
+$lang['regsuccess'] = 'ΠλογαÏιαÏμÏÏ Î´Î·Î¼Î¹Î¿Ï
Ïγήθηκε και ο κÏδικÏÏ ÎµÏÏάλει με e-mail.';
+$lang['regsuccess2'] = 'ΠλογαÏιαÏμÏÏ Î´Î·Î¼Î¹Î¿Ï
Ïγήθηκε.';
+$lang['regmailfail'] = 'ΦαίνεÏαι να Ï
ÏάÏÏει ÏÏÏβλημα με Ïην αÏοÏÏολή ÏοÏ
κÏÎ´Î¹ÎºÎ¿Ï Î¼ÎÏÏ e-mail. ΠαÏακαλοÏμε εÏικοινÏνήÏÏε μαζί μαÏ!';
+$lang['regbadmail'] = 'ΠδιεÏθÏ
νÏη e-mail δεν δείÏνει ÎγκÏ
Ïη - εάν ÏιÏÏεÏεÏαι ÏÏι αÏ
ÏÏ ÎµÎ¯Î½Î±Î¹ λάθοÏ, εÏικοινÏνήÏÏε μαζί μαÏ';
+$lang['regbadpass'] = 'Îι δÏο κÏδικοί δεν είναι ίδιοι, ÏÏοÏÏαθήÏÏε ξανά.';
+$lang['regpwmail'] = 'ΠκÏδικÏÏ ÏαÏ';
+$lang['reghere'] = 'Îεν ÎÏεÏε λογαÏιαÏμο ακÏμη? ÎημιοÏ
ÏγήÏÏε Îναν';
+$lang['profna'] = 'ÎÏ
ÏÏ Ïο wiki δεν Ï
ÏοÏÏηÏίζει Ïην ÏÏοÏοÏοίηÏη ÏÏοÏίλ.';
+$lang['profnochange'] = 'Îαμία αλλαγή.';
+$lang['profnoempty'] = 'Îεν εÏιÏÏÎÏεÏαι ÎºÎµÎ½Ï Ïνομα ÏÏήÏÏη η κενή διεÏθÏ
νÏη email.';
+$lang['profchanged'] = 'Το ÏÏοÏίλ ÏÏήÏÏη ÏÏοÏοÏοιήθηκε εÏιÏÏ
ÏÏÏ.';
+$lang['pwdforget'] = 'ÎεÏάÏαÏε Ïο κÏÎ´Î¹ÎºÏ ÏαÏ? ÎÏοκÏήÏÏε νÎο.';
+$lang['resendna'] = 'ÎÏ
ÏÏ Ïο wiki δεν Ï
ÏοÏÏηÏίζει Ïην εκ\' νÎοÏ
αÏοÏÏολή κÏδικÏν.';
+$lang['resendpwd'] = 'ÎÏοÏÏολή νÎÏν κÏδικÏν για Ïον ÏÏήÏÏη';
+$lang['resendpwdmissing'] = 'Î ÏÎÏει να ÏÏ
μÏληÏÏÏεÏε Ïλα Ïα Ïεδία.';
+$lang['resendpwdnouser'] = 'ÎÏ
ÏÏÏ Î¿ ÏÏήÏÏÎ·Ï Î´ÎµÎ½ Ï
ÏάÏÏει ÏÏα αÏÏεία μαÏ.';
+$lang['resendpwdbadauth'] = 'ÎÏ
ÏÏÏ Î¿ κÏδικÏÏ ÎµÎ½ÎµÏγοÏοίηÏÎ·Ï Î´ÎµÎ½ είναι ÎγκÏ
ÏοÏ.';
+$lang['resendpwdconfirm'] = 'Î ÏÏνδεÏÎ¼Î¿Ï ÏÏÎ¿Ï Ïην Ïελίδα ενεÏγοÏοίηÏÎ·Ï ÎµÏÏάλει με e-mail.';
+$lang['resendpwdsuccess'] = 'ΠνÎÎ¿Ï ÏÎ±Ï ÎºÏδικÏÏ ÎµÏÏάλη με e-mail.';
+$lang['txt_upload'] = 'ÎÏιλÎξÏε αÏÏείο για ÏÏÏÏÏÏη';
+$lang['txt_filename'] = 'ÎÏιλÎξÏε νÎο Ïνομα αÏÏείοÏ
(ÏÏοαιÏεÏικÏ)';
+$lang['txt_overwrt'] = 'ÎνÏικαÏάÏÏαÏη Ï
ÏάÏÏονÏÎ¿Ï Î±ÏÏείοÏ
';
+$lang['lockedby'] = 'Î ÏοÏÏÏινά κλειδÏμÎνο αÏÏ';
+$lang['lockexpire'] = 'Το κλείδÏμα λήγει ÏÏιÏ';
+$lang['willexpire'] = 'Το κλείδÏμά ÏÎ±Ï Î³Î¹Î± Ïην εÏεξεÏγαÏία αÏ
ÏÎ®Ï ÏÎ·Ï ÏÎµÎ»Î¯Î´Î±Ï Î¸Î± λήξει Ïε Îνα λεÏÏÏ.\nÎαι να Ïο ανανεÏÏεÏε ÏÏηÏιμοÏοιήÏÏε Ïην εÏιλογή Î ÏοεÏιÏκÏÏηÏη.';
+$lang['notsavedyet'] = 'Îι μη αÏοθηκεÏ
μÎÎ½ÎµÏ Î±Î»Î»Î±Î³ÎÏ Î¸Î± ÏαθοÏν.\nÎÎλεÏε να ÏÏ
νεÏίÏεÏε?';
+$lang['rssfailed'] = 'ÎμÏανίÏÏηκε κάÏοιο ÏÏάλμα καÏά Ïην ανάγνÏÏη αÏ
ÏÎ¿Ï ÏοÏ
feed: ';
+$lang['nothingfound'] = 'Îεν βÏÎθηκαν ÏÏεÏικά αÏοÏελÎÏμαÏα.';
+$lang['mediaselect'] = 'ÎÏιλογή ÎÏÏείÏν';
+$lang['fileupload'] = 'ÎεÏαÏÏÏÏÏÏη αÏÏείÏν';
+$lang['uploadsucc'] = 'ÎÏιÏÏ
ÏÎ®Ï Î¼ÎµÏαÏÏÏÏÏÏη';
+$lang['uploadfail'] = 'ΠμεÏαÏÏÏÏÏÏη αÏÎÏÏ
Ïε. ΠιθανÏν αÏ
ÏÏ Î½Î± οÏείλεÏαι ÏÏÎ¹Ï ÏÏ
θμίÏÎµÎ¹Ï ÏÏÏÏβαÏÎ·Ï ÏοÏ
αÏÏείοÏ
.';
+$lang['uploadwrong'] = 'ΠμεÏαÏÏÏÏÏÏη δεν Îγινε δεκÏή. Îεν εÏιÏÏÎÏονÏαι αÏÏεία αÏ
ÏÎ¿Ï ÏοÏ
ÏÏÏοÏ
!';
+$lang['uploadexist'] = 'Το αÏÏείο ήδη Ï
ÏάÏÏει. Îεν Îγινε καμία αλλαγή.';
+$lang['uploadbadcontent'] = 'Το ÏεÏιεÏÏμενο ÏοÏ
αÏÏείοÏ
δεν ÏαιÏιάζει με Ïην εÏÎκÏαÏή ÏοÏ
.';
+$lang['uploadspam'] = 'ΠμεÏαÏÏÏÏÏÏη ακÏ
ÏÏθηκε αÏÏ Ïο ÏίλÏÏο spam.';
+$lang['uploadxss'] = 'ΠμεÏαÏÏÏÏÏÏη ακÏ
ÏÏθηκε λÏÎ³Ï ÏÎ¹Î¸Î±Î½Î¿Ï ÎµÏικίνδÏ
νοÏ
ÏεÏιεÏομÎνοÏ
.';
+$lang['deletesucc'] = 'Το αÏÏείο "%s" διαγÏάÏηκε.';
+$lang['deletefail'] = '"%s" δεν διαγÏάÏηκε. ΠιθανÏν αÏ
ÏÏ Î½Î± οÏείλεÏαι ÏÏÎ¹Ï ÏÏ
θμίÏÎµÎ¹Ï ÏÏÏÏβαÏÎ·Ï ÏοÏ
αÏÏείοÏ
.';
+$lang['mediainuse'] = 'Το αÏÏείο "%s" δεν διαγÏάÏηκε - είναι ακÏμα Ïε ÏÏήÏη.';
+$lang['namespaces'] = 'Φάκελοι';
+$lang['mediafiles'] = 'Î¥ÏάÏÏονÏα αÏÏεία Ïε';
+$lang['js']['keepopen'] = 'Το ÏαÏάθÏ
Ïο να μην κλείνει';
+$lang['js']['hidedetails'] = 'ÎÏÏκÏÏ
Ïη λεÏÏομεÏειÏν';
+$lang['mediausage'] = 'ΧÏηÏιμοÏοιήÏÏε Ïην ακÏλοÏ
θη ÏÏνÏαξη για να ÏαÏαθÎÏεÏε αÏ
ÏÏ Ïο αÏÏείο:';
+$lang['mediaview'] = 'Îανονική ÏÏοβολή αÏÏείοÏ
';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'ΦοÏÏÏÏÏε Îνα αÏÏείο ÏÏον ÏÏÎÏονÏα Ïάκελο. Îια δημιοÏ
Ïγία Ï
Ïο-ÏακÎλÏν, ÏÏοÏθÎÏÏε ÏοÏ
Ï ÏÏιν αÏÏ Ïο Ïνομα ÏοÏ
αÏÏείοÏ
, ÏÏο Ïεδίο "ÎÏοθήκεÏ
Ïη ÏÏ", ÏÏηÏιμοÏοιÏνÏÎ±Ï Î¬Î½Ï-κάÏÏ ÏÎµÎ»ÎµÎ¯ÎµÏ ÏÏ Î´Î¹Î±ÏÏÏιÏÏικά.';
+$lang['mediaextchange'] = 'ΠεÏÎκÏαÏη ÏοÏ
αÏÏείοÏ
ÏÏοÏοÏοιήθηκε αÏÏ .%s Ïε .%s!';
+$lang['reference'] = 'ÎναÏοÏÎÏ ÏÏοÏ';
+$lang['ref_inuse'] = 'Το αÏÏείο δεν μÏοÏεί να διαγÏαÏεί, εÏειδή είναι ακÏμη Ïε ÏÏήÏη αÏÏ ÏÎ¹Ï Î±ÎºÏλοÏ
Î¸ÎµÏ ÏελίδεÏ:';
+$lang['ref_hidden'] = 'ÎεÏικÎÏ Î±Î½Î±ÏοÏÎÏ Î²ÏίÏκονÏαι Ïε ÏÎµÎ»Î¯Î´ÎµÏ ÏοÏ
δεν ÎÏεÏε δικαίÏμα να διαβάÏεÏε';
+$lang['hits'] = 'ÎναÏοÏÎÏ';
+$lang['quickhits'] = 'ΣÏεÏικÎÏ ÏελίδεÏ';
+$lang['toc'] = 'Î Î¯Î½Î±ÎºÎ±Ï Î ÎµÏιεÏομÎνÏν';
+$lang['current'] = 'ÏÏÎÏοÏ
Ïα';
+$lang['yours'] = 'Î ÎκδοÏή ÏαÏ';
+$lang['diff'] = 'ÏÏοβολή διαÏοÏÏν με Ïην ÏÏÎÏοÏ
Ïα ÎκδοÏη';
+$lang['diff2'] = 'Î Ïοβολή διαÏοÏÏν μεÏÎ±Î¾Ï ÏÏν εÏιλεγμÎνÏν εκδÏÏεÏν';
+$lang['line'] = 'ÎÏαμμή';
+$lang['breadcrumb'] = 'ÎÏÏοÏικÏ';
+$lang['youarehere'] = 'ÎίÏÏε εδÏ';
+$lang['lastmod'] = 'ΤελεÏ
Ïαία ÏÏοÏοÏοίηÏη';
+$lang['by'] = 'αÏÏ';
+$lang['deleted'] = 'διαγÏάÏηκε';
+$lang['created'] = 'δημιοÏ
Ïγήθηκε';
+$lang['restored'] = 'ÏαλαιÏÏεÏη ÎκδοÏη εÏαναÏÎÏθηκε';
+$lang['external_edit'] = 'εξÏÏεÏική ÏÏοÏοÏοίηÏη';
+$lang['summary'] = 'ÎÏεξεÏγαÏία ÏÏνοÏηÏ';
+$lang['mail_newpage'] = 'Ïελίδα ÏÏοÏÏÎθηκε:';
+$lang['mail_changed'] = 'Ïελίδα ÏÏοÏοÏοιήθηκε:';
+$lang['mail_new_user'] = 'νÎÎ¿Ï ÏÏήÏÏηÏ:';
+$lang['mail_upload'] = 'αÏÏείο ÏοÏÏÏθηκε:';
+$lang['nosmblinks'] = 'Îι ÏÏνδεÏμοι ÏÏÎ¿Ï Windows shares δοÏ
λεÏοÏ
ν μÏνο ÏÏον Microsoft Internet Explorer.\nÎÏοÏείÏε ÏάνÏα να κάνεÏε ανÏιγÏαÏή και εÏικÏλληÏη ÏοÏ
ÏÏ
νδÎÏμοÏ
.';
+$lang['qb_alert'] = 'Î ÏοÏθÎÏεÏε Ïο κείμενο ÏοÏ
θÎλεÏε να μοÏÏοÏοιήÏεÏε.\nÎα ÏÏοÏÏεθεί ÏÏο ÏÎÎ»Î¿Ï ÏοÏ
εγγÏάÏοÏ
.';
+$lang['qb_bold'] = 'ÎνÏονο Îείμενο';
+$lang['qb_italic'] = 'Πλάγιο Îείμενο';
+$lang['qb_underl'] = 'Î¥ÏογÏαμμιÏμÎνο Îείμενο';
+$lang['qb_code'] = 'Îείμενο κÏδικα';
+$lang['qb_strike'] = 'ÎιαγÏαμμιÏμÎνο Îείμενο';
+$lang['qb_h1'] = 'ÎεÏαλίδα 1οÏ
ÎÏιÏÎδοÏ
';
+$lang['qb_h2'] = 'ÎεÏαλίδα 2οÏ
ÎÏιÏÎδοÏ
';
+$lang['qb_h3'] = 'ÎεÏαλίδα 3οÏ
ÎÏιÏÎδοÏ
';
+$lang['qb_h4'] = 'ÎεÏαλίδα 4οÏ
ÎÏιÏÎδοÏ
';
+$lang['qb_h5'] = 'ÎεÏαλίδα 5οÏ
ÎÏιÏÎδοÏ
';
+$lang['qb_link'] = 'ÎÏÏÏεÏικÏÏ Î£ÏνδεÏμοÏ';
+$lang['qb_extlink'] = 'ÎξÏÏεÏικÏÏ Î£ÏνδεÏμοÏ';
+$lang['qb_hr'] = 'ÎιαÏÏÏιÏÏική ÎÏαμμή';
+$lang['qb_ol'] = 'ÎÏιθμημÎνη ÎίÏÏα';
+$lang['qb_ul'] = 'ÎίÏÏα';
+$lang['qb_media'] = 'Î ÏοÏθήκη ÎÏÏείÏν';
+$lang['qb_sig'] = 'Î ÏοÏθήκη Î¥ÏογÏαÏήÏ';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Îιδικοί ΧαÏακÏήÏεÏ';
+$lang['del_confirm'] = 'Îα διαγÏαÏεί?';
+$lang['admin_register'] = 'Î ÏοÏθήκη νÎοÏ
ÏÏήÏÏη';
+$lang['metaedit'] = 'ΤÏοÏοÏοίηÏη metadata';
+$lang['metasaveerr'] = 'ΠαÏοθήκεÏ
Ïη ÏÏν metadata αÏÎÏÏ
Ïε';
+$lang['metasaveok'] = 'ÎÏιÏÏ
ÏÎ®Ï Î±ÏοθήκεÏ
Ïη metadata';
+$lang['img_backto'] = 'ÎÏιÏÏÏοÏή Ïε';
+$lang['img_title'] = 'ΤίÏλοÏ';
+$lang['img_caption'] = 'ÎεζάνÏα';
+$lang['img_date'] = 'ÎμεÏομηνία';
+$lang['img_fname'] = 'Îνομα αÏÏείοÏ
';
+$lang['img_fsize'] = 'ÎÎγεθοÏ';
+$lang['img_artist'] = 'ÎαλλιÏÎÏνηÏ';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Camera';
+$lang['img_keywords'] = 'ÎÎξειÏ-κλειδιά';
+$lang['subscribe_success'] = 'Î ÏοÏθήκη %s ÏÏην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
+$lang['subscribe_error'] = 'ÎÏοÏÏ
Ïία ÏÏοÏÎ¸Î®ÎºÎ·Ï %s ÏÏην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
+$lang['subscribe_noaddress'] = 'Îεν ÎÏεÏε δηλÏÏει e-mail διεÏθÏ
νÏη - δεν μÏοÏείÏε να γÏαÏÏείÏε ÏÏην λίÏÏα ÏÏ
νδÏομηÏÏν.';
+$lang['unsubscribe_success'] = 'ÎιαγÏαÏή %s αÏÏ Ïην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
+$lang['unsubscribe_error'] = 'ÎÏοÏÏ
Ïία διαγÏαÏÎ®Ï %s αÏÏ Ïην λίÏÏα ÏÏ
νδÏομηÏÏν %s';
+$lang['authmodfailed'] = 'Îακή ÏÏθμιÏη λίÏÏÎ±Ï ÏÏηÏÏÏν. ΠαÏακαλοÏμε ενημεÏÏÏÏε Ïον διαÏειÏιÏÏή ÏοÏ
wiki.';
+$lang['authtempfail'] = 'ΠείÏÎ¿Î´Î¿Ï ÏÏηÏÏÏν δεν λειÏοÏ
Ïγεί αÏ
Ïή Ïην ÏÏιγμή. Îάν αÏ
ÏÏ Î´Î¹Î±Ïκεί για ÏÎ¿Î»Ï ÏÏÏνο, ÏαÏακαλοÏμε ενημεÏÏÏÏε Ïον διαÏειÏιÏÏή ÏοÏ
wiki.';
+$lang['i_chooselang'] = 'ÎÏιλογή γλÏÏÏαÏ';
+$lang['i_installer'] = 'ÎδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï DokuWiki';
+$lang['i_wikiname'] = 'ÎνομαÏία Wiki';
+$lang['i_enableacl'] = 'ÎνεÏγοÏοίηÏη ÎίÏÏÎ±Ï ÎικαιÏμάÏÏν Î ÏÏÏβαÏÎ·Ï - ACL (ÏÏ
νιÏÏάÏαι)';
+$lang['i_superuser'] = 'ÎιαÏειÏιÏÏήÏ';
+$lang['i_problems'] = 'ΠοδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï ÏÏ
νάνÏηÏε Ïα ÏÏοβλήμαÏα ÏοÏ
αναÏÎÏονÏαι ÏαÏακάÏÏ. ΠεγκαÏάÏÏαÏη δεν θα ολοκληÏÏθεί εÏιÏÏ
ÏÏÏ Î¼ÎÏÏι να εÏιλÏ
θοÏν αÏ
Ïά Ïα ÏÏοβλήμαÏα.';
+$lang['i_modified'] = 'Îια λÏγοÏ
Ï Î±ÏÏαλείαÏ, ο οδηγÏÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï Î»ÎµÎ¹ÏοÏ
Ïγεί μÏνο με νÎÎµÏ ÎºÎ±Î¹ μη ÏÏοÏοÏοιημÎÎ½ÎµÏ ÎµÎ³ÎºÎ±ÏαÏÏάÏÎµÎ¹Ï Dokuwiki.
+ Î ÏÎÏει είÏε να κάνεÏε νÎα εγκαÏάÏÏαÏη, ÏÏηÏιμοÏοιÏνÏÎ±Ï Ïο αÏÏÎ¹ÎºÏ ÏακÎÏο εγκαÏάÏÏαÏηÏ, ή να
+ ÏÏ
μβοÏ
λεÏ
ÏείÏε ÏÎ¹Ï <a href="http://wiki.splitbrain.org/wiki:install">Î¿Î´Î·Î³Î¯ÎµÏ ÎµÎ³ÎºÎ±ÏάÏÏαÏÎ·Ï ÏÎ·Ï ÎµÏαÏμογήÏ.</a>';
+$lang['i_funcna'] = 'ΠλειÏοÏ
Ïγία <code>%s</code> ÏÎ·Ï PHP δεν είναι διαθÎÏιμη. ΠιθανÏν να είναι αÏενεÏγοÏοιημÎνη ÏÏÎ¹Ï ÏÏ
θμίÏÎµÎ¹Ï ÎναÏÎ¾Î·Ï ÏÎ·Ï PHP';
+$lang['i_phpver'] = 'Î ÎκδοÏη <code>%s</code> ÏÎ·Ï PHP ÏοÏ
ÎÏεÏε είναι ÏαλαιÏÏεÏη ÏÎ·Ï Î±ÏαιÏοÏÎ¼ÎµÎ½Î·Ï <code>%s</code>. Î ÏÎÏει να αναβαθμίÏεÏε Ïην PHP.';
+$lang['i_permfail'] = 'Î ÏÎ¬ÎºÎµÎ»Î¿Ï <code>%s</code> δεν είναι εγγÏάÏÎ¹Î¼Î¿Ï Î±ÏÏ Ïην εÏαÏμογή DokuWiki. Î ÏÎÏει να διοÏθÏÏεÏε Ïα δικαιÏμαÏα ÏÏÏÏβαÏÎ·Ï Î±Ï
ÏÎ¿Ï ÏοÏ
ÏακÎλοÏ
!';
+$lang['i_confexists'] = '<code>%s</code> Ï
ÏάÏÏει ήδη';
+$lang['i_writeerr'] = 'Îεν είναι δÏ
ναÏή η δημιοÏ
Ïγία ÏοÏ
<code>%s</code>. Î ÏÎÏει να διοÏθÏÏεÏε Ïα δικαιÏμαÏα ÏÏÏÏβαÏÎ·Ï Î±Ï
ÏÎ¿Ï ÏοÏ
ÏακÎλοÏ
/αÏÏείοÏ
και να δημιοÏ
ÏγήÏεÏε Ïο αÏÏείο ÏειÏοκίνηÏα!';
+$lang['i_badhash'] = 'Îη αναγνÏÏίÏιμο ή ÏÏοÏοÏοιημÎνο αÏÏείο dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - Î»Î¬Î¸Î¿Ï Î® ανÏÏαÏκÏη Ïιμή';
+$lang['i_success'] = 'ΠεγκαÏάÏÏαÏη ολοκληÏÏθηκε εÏιÏÏ
ÏÏÏ. ÎÏοÏείÏε ÏλÎον να διαγÏάÏεÏε Ïο αÏÏείο install.php. ΣÏ
νεÏίÏÏε ÏÏο
+ <a href="doku.php">νÎο ÏÎ±Ï DokuWiki</a>.';
+$lang['i_failure'] = 'ÎμÏανίÏÏηκαν κάÏοια ÏÏοβλήμαÏα ÏÏη διαδικαÏία ανανÎÏÏÎ·Ï ÏÏν αÏÏείÏν ÏÏ
θμίÏεÏν. ΠιθανÏν να ÏÏειάζεÏαι να
+ Ïα ÏÏοÏοÏοιήÏεÏε ÏειÏοκίνηÏα ÏÏÏε να μÏοÏείÏε να ÏÏηÏιμοÏοιήÏεÏε Ïο <a href="doku.php">νÎο ÏÎ±Ï DokuWiki</a>.';
+$lang['i_policy'] = 'ÎÏÏική ÏολιÏική ÎίÏÏÎ±Ï ÎικαιÏμάÏÏν Î ÏÏÏβαÏÎ·Ï - ACL';
+$lang['i_pol0'] = 'ÎνοιÏÏÏ Wiki (Ïλοι μÏοÏοÏν να διαβάÏοÏ
ν ή να δημιοÏ
ÏγήÏοÏ
ν/ÏÏοÏοÏοιήÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹ να μεÏαÏοÏÏÏÏοÏ
ν αÏÏεία)';
+$lang['i_pol1'] = 'ÎημÏÏιο Wiki (Ïλοι μÏοÏοÏν να διαβάÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ Î±Î»Î»Î¬ μÏνο οι εγγεγÏαμμÎνοι ÏÏήÏÏÎµÏ Î¼ÏοÏοÏν να δημιοÏ
ÏγήÏοÏ
ν/ÏÏοÏοÏοιήÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹ να μεÏαÏοÏÏÏÏοÏ
ν αÏÏεία)';
+$lang['i_pol2'] = 'ÎλειÏÏÏ Wiki (μÏνο οι εγγεγÏαμμÎνοι ÏÏήÏÏÎµÏ Î¼ÏοÏοÏν να διαβάÏοÏ
ν ή να δημιοÏ
ÏγήÏοÏ
ν/ÏÏοÏοÏοιήÏοÏ
ν ÏÎµÎ»Î¯Î´ÎµÏ ÎºÎ±Î¹ να μεÏαÏοÏÏÏÏοÏ
ν αÏÏεία)';
+$lang['i_retry'] = 'ÎÎα ÏÏοÏÏάθεια';
Modified: site/trunk/www-root/wiki/inc/lang/el/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/el/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÎίÏÎ¿Î´Î¿Ï ÏÏήÏÏη ======
-
-ÎÏ
Ïή Ïην ÏÏιγμή δεν ÎÏεÏε ÏÏ
νδεθεί ÏÏ ÏÏήÏÏηÏ!
+====== ÎίÏÎ¿Î´Î¿Ï ÏÏήÏÏη ======
+
+ÎÏ
Ïή Ïην ÏÏιγμή δεν ÎÏεÏε ÏÏ
νδεθεί ÏÏ ÏÏήÏÏηÏ!
Îια να ÏÏ
νδεθείÏε, ειÏάγεÏε Ïα ÏÏοιÏεία ÏÎ±Ï ÏÏην ÏαÏακάÏÏ ÏÏÏμα. Î ÏÎÏει να ÎÏεÏε ενεÏγοÏοιήÏει Ïα cookies ÏÏον ÏÏ
λλομεÏÏηÏή ÏαÏ.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/el/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Îία Ïελίδα ÏÏοÏÏÎθηκε ή ÏÏoÏοÏοιήθηκε ÏÏο DokuWiki ÏαÏ.
-ÎÏ
Ïά είναι Ïα ανÏίÏÏοιÏα ÏÏοιÏεία:
-
-ÎμεÏομηνία : @DATE@
-ΦÏ
λλομεÏÏηÏÎ®Ï : @BROWSER@
-IP-ÎιεÏθÏ
νÏη : @IPADDRESS@
-Îνομα Ï
ÏολογιÏÏή: @HOSTNAME@
-Παλία ÎκδοÏη : @OLDPAGE@
-ÎÎα ÎκδοÏη : @NEWPAGE@
-ΣÏνοÏη : @SUMMARY@
-ΧÏήÏÏÎ·Ï : @USER@
-
- at DIFF@
-
---
-ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
- at DOKUWIKIURL@
+Îία Ïελίδα ÏÏοÏÏÎθηκε ή ÏÏoÏοÏοιήθηκε ÏÏο DokuWiki ÏαÏ.
+ÎÏ
Ïά είναι Ïα ανÏίÏÏοιÏα ÏÏοιÏεία:
+
+ÎμεÏομηνία : @DATE@
+ΦÏ
λλομεÏÏηÏÎ®Ï : @BROWSER@
+IP-ÎιεÏθÏ
νÏη : @IPADDRESS@
+Îνομα Ï
ÏολογιÏÏή: @HOSTNAME@
+Παλία ÎκδοÏη : @OLDPAGE@
+ÎÎα ÎκδοÏη : @NEWPAGE@
+ΣÏνοÏη : @SUMMARY@
+ΧÏήÏÏÎ·Ï : @USER@
+
+ at DIFF@
+
+--
+ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/el/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÎÏ
Ïή η Ïελίδα δεν Ï
ÏάÏÏει ακÏμη ======
-
-Î Ïελίδα ÏοÏ
ζηÏάÏε δεν Ï
ÏάÏÏει ακÏμη. Îάν ÏμÏÏ ÎÏεÏε εÏαÏκή δικαιÏμαÏα, μÏοÏείÏε
-να Ïην δημιοÏ
ÏγήÏεÏε εÏιλÎγονÏÎ±Ï ''ÎημιοÏ
Ïγία ÏελίδαÏ''.
+====== ÎÏ
Ïή η Ïελίδα δεν Ï
ÏάÏÏει ακÏμη ======
+
+Î Ïελίδα ÏοÏ
ζηÏάÏε δεν Ï
ÏάÏÏει ακÏμη. Îάν ÏμÏÏ ÎÏεÏε εÏαÏκή δικαιÏμαÏα, μÏοÏείÏε
+να Ïην δημιοÏ
ÏγήÏεÏε εÏιλÎγονÏÎ±Ï ''ÎημιοÏ
Ïγία ÏελίδαÏ''.
Modified: site/trunk/www-root/wiki/inc/lang/el/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Îεν Ï
ÏάÏÏει ÏÎÏοια ÎκδοÏη ======
-
-Î ÎκδοÏη ÏοÏ
αναζηÏήÏαÏε δεν Ï
ÏάÏÏει. ÎÏιλÎξÏε ''ΠαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏελίδαÏ''
-για να δείÏε Ïην λίÏÏα με ÏÎ¹Ï ÏαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏÎ·Ï ÏÏÎÏοÏ
ÏÎ±Ï ÏελίδαÏ.
-
+====== Îεν Ï
ÏάÏÏει ÏÎÏοια ÎκδοÏη ======
+
+Î ÎκδοÏη ÏοÏ
αναζηÏήÏαÏε δεν Ï
ÏάÏÏει. ÎÏιλÎξÏε ''ΠαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏελίδαÏ''
+για να δείÏε Ïην λίÏÏα με ÏÎ¹Ï ÏαλαιÏÏεÏÎµÏ ÎµÎºÎ´ÏÏÎµÎ¹Ï ÏÎ·Ï ÏÏÎÏοÏ
ÏÎ±Ï ÏελίδαÏ.
+
Modified: site/trunk/www-root/wiki/inc/lang/el/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
- at FULLNAME@!, γειά ÏαÏ.
-
-ÎÏ
Ïά είναι Ïα ÏÏοιÏεία ειÏÏδοÏ
για Ïο @TITLE@ ÏÏο @DOKUWIKIURL@
-
-Îνομα : @LOGIN@
-ÎÏδικÏÏ : @PASSWORD@
-
---
-ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
- at DOKUWIKIURL@
+ at FULLNAME@!, γειά ÏαÏ.
+
+ÎÏ
Ïά είναι Ïα ÏÏοιÏεία ειÏÏδοÏ
για Ïο @TITLE@ ÏÏο @DOKUWIKIURL@
+
+Îνομα : @LOGIN@
+ÎÏδικÏÏ : @PASSWORD@
+
+--
+ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/el/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Î ÏοεÏιÏκÏÏηÏη ======
-
-ÎÏ
Ïή είναι μια ÏÏοεÏιÏκÏÏηÏη ÏοÏ
ÏÏÏ Î¸Î± δείÏνει η Ïελίδα.
-ÎÏ
μηθείÏε: Îι αλλαγÎÏ ÏÎ±Ï **δεν ÎÏοÏ
ν αÏοθηκεÏ
θεί** ακÏμη!
-
+====== Î ÏοεÏιÏκÏÏηÏη ======
+
+ÎÏ
Ïή είναι μια ÏÏοεÏιÏκÏÏηÏη ÏοÏ
ÏÏÏ Î¸Î± δείÏνει η Ïελίδα.
+ÎÏ
μηθείÏε: Îι αλλαγÎÏ ÏÎ±Ï **δεν ÎÏοÏ
ν αÏοθηκεÏ
θεί** ακÏμη!
+
Modified: site/trunk/www-root/wiki/inc/lang/el/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Îεια ÏÎ±Ï @FULLNAME@!
-
-ÎάÏÎ¿Î¹Î¿Ï Î¶Î®ÏηÏε Ïη δημιοÏ
Ïγία νÎοÏ
κÏÎ´Î¹ÎºÎ¿Ï Î³Î¹Î± Ïον λογαÏιαÏÎ¼Ï @TITLE@
-ÏοÏ
διαÏηÏείÏε ÏÏο @DOKUWIKIURL@
-
-Îάν δεν ζηÏήÏαÏε εÏÎµÎ¯Ï Ïην δημιοÏ
Ïγία νÎοÏ
κÏÎ´Î¹ÎºÎ¿Ï Î±Ïλά αγνοήÏÏε αÏ
ÏÏ Ïο e-mail.
-
-Îάν ÏνÏÏÏ ÎµÏÎµÎ¯Ï Î¶Î·ÏήÏαÏε Ïην δημιοÏ
Ïγία νÎοÏ
κÏδικοÏ, ακολοÏ
θήÏÏε Ïον ÏαÏακάÏÏ ÏÏνδεÏμο για να Ïο εÏιβεβαιÏÏεÏε.
-
- at CONFIRM@
-
---
-ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
- at DOKUWIKIURL@
+Îεια ÏÎ±Ï @FULLNAME@!
+
+ÎάÏÎ¿Î¹Î¿Ï Î¶Î®ÏηÏε Ïη δημιοÏ
Ïγία νÎοÏ
κÏÎ´Î¹ÎºÎ¿Ï Î³Î¹Î± Ïον λογαÏιαÏÎ¼Ï @TITLE@
+ÏοÏ
διαÏηÏείÏε ÏÏο @DOKUWIKIURL@
+
+Îάν δεν ζηÏήÏαÏε εÏÎµÎ¯Ï Ïην δημιοÏ
Ïγία νÎοÏ
κÏÎ´Î¹ÎºÎ¿Ï Î±Ïλά αγνοήÏÏε αÏ
ÏÏ Ïο e-mail.
+
+Îάν ÏνÏÏÏ ÎµÏÎµÎ¯Ï Î¶Î·ÏήÏαÏε Ïην δημιοÏ
Ïγία νÎοÏ
κÏδικοÏ, ακολοÏ
θήÏÏε Ïον ÏαÏακάÏÏ ÏÏνδεÏμο για να Ïο εÏιβεβαιÏÏεÏε.
+
+ at CONFIRM@
+
+--
+ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/el/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/el/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Î ÏÏÏÏαÏÎµÏ Î±Î»Î»Î±Î³ÎÏ ÏελίδÏν ======
-
-Îι ÏαÏακάÏÏ ÏÎµÎ»Î¯Î´ÎµÏ ÏÏοÏοÏοιήθηκαν ÏÏÏÏÏαÏα:
+====== Î ÏÏÏÏαÏÎµÏ Î±Î»Î»Î±Î³ÎÏ ÏελίδÏν ======
+
+Îι ÏαÏακάÏÏ ÏÎµÎ»Î¯Î´ÎµÏ ÏÏοÏοÏοιήθηκαν ÏÏÏÏÏαÏα:
Modified: site/trunk/www-root/wiki/inc/lang/el/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÎγγÏαÏή νÎοÏ
ÏÏήÏÏη ======
-
-ΣÏ
μÏληÏÏÏÏε Ïλα Ïα ÏαÏακάÏÏ Ïεδία για να δημιοÏ
ÏγήÏεÏε Îνα νÎο λογαÏιαÏÎ¼Ï Ïε αÏ
ÏÏ Ïο wiki.
-Î ÏÎÏει να δÏÏεÏε μια **Ï
ÏαÏκÏή e-mail διεÏθÏ
νÏη** - ο κÏδικÏÏ ÏÎ±Ï Î¸Î± ÏÎ±Ï Î±ÏοÏÏαλεί Ïε αÏ
Ïήν.
-Το Ïνομα ÏÏήÏÏη θα ÏÏÎÏει να ÏληÏεί ÏÎ¹Ï Î¯Î´Î¹ÎµÏ Î±ÏαιÏήÏÎµÎ¹Ï Î¿Î½ÏμαÏÎ¿Ï ÏοÏ
ιÏÏÏοÏ
ν και για ÏοÏ
Ï [[doku>wiki:pagename|ÏακÎλοÏ
Ï]].
+====== ÎγγÏαÏή νÎοÏ
ÏÏήÏÏη ======
+
+ΣÏ
μÏληÏÏÏÏε Ïλα Ïα ÏαÏακάÏÏ Ïεδία για να δημιοÏ
ÏγήÏεÏε Îνα νÎο λογαÏιαÏÎ¼Ï Ïε αÏ
ÏÏ Ïο wiki.
+Î ÏÎÏει να δÏÏεÏε μια **Ï
ÏαÏκÏή e-mail διεÏθÏ
νÏη** - ο κÏδικÏÏ ÏÎ±Ï Î¸Î± ÏÎ±Ï Î±ÏοÏÏαλεί Ïε αÏ
Ïήν.
+Το Ïνομα ÏÏήÏÏη θα ÏÏÎÏει να ÏληÏεί ÏÎ¹Ï Î¯Î´Î¹ÎµÏ Î±ÏαιÏήÏÎµÎ¹Ï Î¿Î½ÏμαÏÎ¿Ï ÏοÏ
ιÏÏÏοÏ
ν και για ÏοÏ
Ï [[doku>wiki:pagename|ÏακÎλοÏ
Ï]].
Modified: site/trunk/www-root/wiki/inc/lang/el/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-ÎÎ½Î±Ï Î½ÎÎ¿Ï ÏÏήÏÏÎ·Ï ÎµÎ³Î³ÏάÏηκε. ÎÏ
ÏÎÏ ÎµÎ¯Î½Î±Î¹ οι λεÏÏομÎÏειεÏ:
-
-ΧÏήÏÏÎ·Ï : @NEWUSER@
-Îνομα : @NEWNAME@
-e-mail : @NEWEMAIL@
-
-ÎμεÏομηνία : @DATE@
-ΦÏ
λλομεÏÏηÏÎ®Ï : @BROWSER@
-IP-ÎιεÏθÏ
νÏη : @IPADDRESS@
-Îνομα Ï
ÏολογιÏÏή: @HOSTNAME@
-
---
-ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
- at DOKUWIKIURL@
+ÎÎ½Î±Ï Î½ÎÎ¿Ï ÏÏήÏÏÎ·Ï ÎµÎ³Î³ÏάÏηκε. ÎÏ
ÏÎÏ ÎµÎ¯Î½Î±Î¹ οι λεÏÏομÎÏειεÏ:
+
+ΧÏήÏÏÎ·Ï : @NEWUSER@
+Îνομα : @NEWNAME@
+e-mail : @NEWEMAIL@
+
+ÎμεÏομηνία : @DATE@
+ΦÏ
λλομεÏÏηÏÎ®Ï : @BROWSER@
+IP-ÎιεÏθÏ
νÏη : @IPADDRESS@
+Îνομα Ï
ÏολογιÏÏή: @HOSTNAME@
+
+--
+ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/el/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== ÎÏοÏÏολή νÎοÏ
κÏÎ´Î¹ÎºÎ¿Ï ======
-
-ΣÏ
μÏληÏÏÏÏε Ïλα Ïα ÏαÏακάÏÏ Ïεδία για να λάβεÏε Îνα νÎο κÏÎ´Î¹ÎºÏ Î³Î¹Î± Ïον λογαÏιαÏÎ¼Ï ÏÎ±Ï Ïε αÏ
ÏÏ Ïο wiki.
-ΠνÎÎ¿Ï ÎºÏδικÏÏ ÏÎ±Ï Î¸Î± ÏÏαλεί ÏÏην e-mail διεÏθÏ
νÏη ÏοÏ
ÎÏεÏε ήδη δηλÏÏει. Το Ïνομα ÏÏÎÏει να είναι αÏ
ÏÏ
-ÏοÏ
ιÏÏÏει για Ïον λογαÏιαÏÎ¼Ï ÏÎ±Ï Ïε αÏ
ÏÏ Ïο wiki.
-
+====== ÎÏοÏÏολή νÎοÏ
κÏÎ´Î¹ÎºÎ¿Ï ======
+
+ΣÏ
μÏληÏÏÏÏε Ïλα Ïα ÏαÏακάÏÏ Ïεδία για να λάβεÏε Îνα νÎο κÏÎ´Î¹ÎºÏ Î³Î¹Î± Ïον λογαÏιαÏÎ¼Ï ÏÎ±Ï Ïε αÏ
ÏÏ Ïο wiki.
+ΠνÎÎ¿Ï ÎºÏδικÏÏ ÏÎ±Ï Î¸Î± ÏÏαλεί ÏÏην e-mail διεÏθÏ
νÏη ÏοÏ
ÎÏεÏε ήδη δηλÏÏει. Το Ïνομα ÏÏÎÏει να είναι αÏ
ÏÏ
+ÏοÏ
ιÏÏÏει για Ïον λογαÏιαÏÎ¼Ï ÏÎ±Ï Ïε αÏ
ÏÏ Ïο wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/el/revisions.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/el/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÎναζήÏηÏη ======
-
-Τα αÏοÏελÎÏμαÏα ÏÎ·Ï Î±Î½Î±Î¶Î®ÏηÏÎ®Ï ÏÎ±Ï Î±ÎºÎ¿Î»Î¿Ï
θοÏν.
-
+====== ÎναζήÏηÏη ======
+
+Τα αÏοÏελÎÏμαÏα ÏÎ·Ï Î±Î½Î±Î¶Î®ÏηÏÎ®Ï ÏÎ±Ï Î±ÎºÎ¿Î»Î¿Ï
θοÏν.
+
===== ÎÏοÏελÎÏμαÏα =====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/el/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**ÎÏ
Ïή είναι μια ÏαλαιÏÏεÏη ÎκδοÏη ÏÎ·Ï ÏελίδαÏ!**
-----
+**ÎÏ
Ïή είναι μια ÏαλαιÏÏεÏη ÎκδοÏη ÏÎ·Ï ÏελίδαÏ!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/el/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/el/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-Îειa ÏαÏ!
-
-Î Ïελίδα @PAGE@ ÏÏο wiki @TITLE@ ÏÏοÏοÏοιήθηκε.
-ÎÏ
ÏÎÏ ÎµÎ¯Î½Î±Î¹ οι διαÏοÏÎÏ Ïε ÏÏÎÏη με Ïην ÏÏοηγοÏμενη ÎκδοÏη:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Îια να ÏάÏεÏε να λαμβάνεÏε ÏÎÏοια ενημεÏÏÏικά e-mails,
-εÏιÏκεÏÏείÏε Ïο wiki ÏÏο
- at DOKUWIKIURL@ δείÏε Ïην Ïελίδα
- at NEWPAGE@
-και εÏιλÎξÏε 'ÎιαγÏαÏή αÏÏ Î»Î®Ïη ενημεÏÏÏεÏν'.
-
---
-ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
- at DOKUWIKIURL@
+Îειa ÏαÏ!
+
+Î Ïελίδα @PAGE@ ÏÏο wiki @TITLE@ ÏÏοÏοÏοιήθηκε.
+ÎÏ
ÏÎÏ ÎµÎ¯Î½Î±Î¹ οι διαÏοÏÎÏ Ïε ÏÏÎÏη με Ïην ÏÏοηγοÏμενη ÎκδοÏη:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Îια να ÏάÏεÏε να λαμβάνεÏε ÏÎÏοια ενημεÏÏÏικά e-mails,
+εÏιÏκεÏÏείÏε Ïο wiki ÏÏο
+ at DOKUWIKIURL@ δείÏε Ïην Ïελίδα
+ at NEWPAGE@
+και εÏιλÎξÏε 'ÎιαγÏαÏή αÏÏ Î»Î®Ïη ενημεÏÏÏεÏν'.
+
+--
+ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/el/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ΤÏοÏοÏοίηÏη ÏÏοÏίλ ======
-
-ΤÏοÏοÏοιήÏÏε **μÏνο** Ïα Ïεδία ÏοÏ
θÎλεÏε να αλλάξεÏε.
-Îεν μÏοÏείÏε να αλλάξεÏε Ïο Ïεδίο ''Îνομα''.
+====== ΤÏοÏοÏοίηÏη ÏÏοÏίλ ======
+
+ΤÏοÏοÏοιήÏÏε **μÏνο** Ïα Ïεδία ÏοÏ
θÎλεÏε να αλλάξεÏε.
+Îεν μÏοÏείÏε να αλλάξεÏε Ïο Ïεδίο ''Îνομα''.
Modified: site/trunk/www-root/wiki/inc/lang/el/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Îνα αÏÏείο μεÏαÏοÏÏÏθηκε ÏÏο DokuWiki ÏαÏ.
-ÎÏ
Ïά είναι Ïα ανÏίÏÏοιÏα ÏÏοιÏεία:
-
-ÎÏÏείο : @MEDIA@
-ÎμεÏομηνία : @DATE@
-ΦÏ
λλομεÏÏηÏÎ®Ï : @BROWSER@
-IP-ÎιεÏθÏ
νÏη : @IPADDRESS@
-Îνομα Ï
ÏολογιÏÏή: @HOSTNAME@
-ÎÎÎ³ÎµÎ¸Î¿Ï : @SIZE@
-MIME Type : @MIME@
-ΧÏήÏÏÎ·Ï : @USER@
-
---
-ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
- at DOKUWIKIURL@
+Îνα αÏÏείο μεÏαÏοÏÏÏθηκε ÏÏο DokuWiki ÏαÏ.
+ÎÏ
Ïά είναι Ïα ανÏίÏÏοιÏα ÏÏοιÏεία:
+
+ÎÏÏείο : @MEDIA@
+ÎμεÏομηνία : @DATE@
+ΦÏ
λλομεÏÏηÏÎ®Ï : @BROWSER@
+IP-ÎιεÏθÏ
νÏη : @IPADDRESS@
+Îνομα Ï
ÏολογιÏÏή: @HOSTNAME@
+ÎÎÎ³ÎµÎ¸Î¿Ï : @SIZE@
+MIME Type : @MIME@
+ΧÏήÏÏÎ·Ï : @USER@
+
+--
+ÎÏ
ÏÏ Ïο e-mail δημιοÏ
Ïγήθηκε αÏ
ÏÏμαÏα αÏÏ Ïην εÏαÏμογή DokuWiki ÏÏην διεÏθÏ
νÏη
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/el/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/el/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/el/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== ÎνÏοÏίÏÏηκε SPAM ======
-
-Îι αλλαγÎÏ ÏÎ±Ï **δεν** αÏοθηκεÏÏηκαν εÏειδή βÏÎθηκε ÏοÏ
λάÏιÏÏον μία μη αÏοδεκÏή λÎξη.
-Îάν ÏÏοÏÏαθήÏαÏε να ÏÏοÏθÎÏεÏε spam Ïε αÏ
ÏÏ Ïο wiki -- κακÏÏ!
-Îάν ÏιÏÏεÏεÏε ÏÏι αÏ
ÏÏ Î´ÎµÎ½ είναι ÏÏÏÏÏ, αÏεÏ
θÏ
νθείÏε ÏÏον διαÏειÏιÏÏή ÏÎ·Ï ÎµÏαÏμογήÏ.
-
+====== ÎνÏοÏίÏÏηκε SPAM ======
+
+Îι αλλαγÎÏ ÏÎ±Ï **δεν** αÏοθηκεÏÏηκαν εÏειδή βÏÎθηκε ÏοÏ
λάÏιÏÏον μία μη αÏοδεκÏή λÎξη.
+Îάν ÏÏοÏÏαθήÏαÏε να ÏÏοÏθÎÏεÏε spam Ïε αÏ
ÏÏ Ïο wiki -- κακÏÏ!
+Îάν ÏιÏÏεÏεÏε ÏÏι αÏ
ÏÏ Î´ÎµÎ½ είναι ÏÏÏÏÏ, αÏεÏ
θÏ
νθείÏε ÏÏον διαÏειÏιÏÏή ÏÎ·Ï ÎµÏαÏμογήÏ.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,4 @@
-====== Administration ======
-
-Below you can find a list of administrative tasks available in
-DokuWiki.
-
+====== Administration ======
+
+Below you can find a list of administrative tasks available in DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Backlinks ======
-
-This is a list of pages that seem to link back to the current page.
-
+====== Backlinks ======
+
+This is a list of pages that seem to link back to the current page.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,6 @@
-====== A newer version exists ======
-
-A newer version of the document you edited exists. This happens when another
-user changed the document while you were editing it.
-
-Examine the differences shown below thoroughly, then decide which version to
-keep. If you choose ''save'', your version will be saved. Hit ''cancel'' to
-keep the current version.
-
+====== A newer version exists ======
+
+A newer version of the document you edited exists. This happens when another user changed the document while you were editing it.
+
+Examine the differences shown below thoroughly, then decide which version to keep. If you choose ''save'', your version will be saved. Hit ''cancel'' to keep the current version.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Permission Denied======
-
-Sorry, you don't have enough rights to continue. Perhaps you forgot to login?
-
+======Permission Denied======
+
+Sorry, you don't have enough rights to continue. Perhaps you forgot to login?
+
Modified: site/trunk/www-root/wiki/inc/lang/en/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,4 @@
-======Differences======
-
-This shows you the differences between the selected revision and the current
-version of the page.
-
+======Differences======
+
+This shows you the differences between the selected revision and the current version of the page.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,6 @@
-====== Draft file found ======
-
-Your last edit session on this page was not completed correctly. DokuWiki
-automatically saved a draft during your work which you may now use to continue
-your editing. Below you can see the data that was saved from your last session.
-
-Please decide if you want to //recover// your lost edit session, //delete//
-the autosaved draft or //cancel// the editing process.
-
+====== Draft file found ======
+
+Your last edit session on this page was not completed correctly. DokuWiki automatically saved a draft during your work which you may now use to continue your editing. Below you can see the data that was saved from your last session.
+
+Please decide if you want to //recover// your lost edit session, //delete// the autosaved draft or //cancel// the editing process.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,2 @@
-Edit the page and hit ''Save''. See [[wiki:syntax]] for
-Wiki syntax. Please edit the page only if you can **improve** it. If you
-want to test some things, learn to make your first steps on the
-[[playground:playground|playground]].
-
+Edit the page and hit ''Save''. See [[wiki:syntax]] for Wiki syntax. Please edit the page only if you can **improve** it. If you want to test some things, learn to make your first steps on the [[playground:playground|playground]].
+
Modified: site/trunk/www-root/wiki/inc/lang/en/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,2 @@
-**You've loaded an old revision of the document!** If you save it, you will create
-a new version with this data.
-----
+**You've loaded an old revision of the document!** If you save it, you will create a new version with this data.
+----
Modified: site/trunk/www-root/wiki/inc/lang/en/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Index ======
-
-This is an index over all available pages ordered by [[doku>wiki:namespaces|namespaces]].
-
+====== Index ======
+
+This is an index over all available pages ordered by [[doku>wiki:namespaces|namespaces]].
+
Modified: site/trunk/www-root/wiki/inc/lang/en/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,24 +1,24 @@
-<p>This page assists in the first time installation and configuration of
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. More info on this
-installer is available on it's own
-<a href="http://wiki.splitbrain.org/wiki:installer">documentation page</a>.</p>
-
-<p>DokuWiki uses ordinary files for the storage of wiki pages and other
-information associated with those pages (e.g. images, search indexes, old
-revisions, etc). In order to operate successfully DokuWiki
-<strong>must</strong> have write access to the directories that hold those
-files. This installer is not capable of setting up directory permissions. That
-normally needs to be done directly on a command shell or if you are using hosting,
-through FTP or your hosting control panel (e.g. cPanel).</p>
-
-<p>This installer will setup your DokuWiki configuration for
-<acronym title="access control list">ACL</acronym>, which in turn allows administrator
-login and access to DokuWiki's admin menu for installing plugins, managing
-users, managing access to wiki pages and alteration of configuration settings.
-It isn't required for DokuWiki to operate, however it will make Dokuwiki easier
-to administer.</p>
-
-<p>Experienced users or users with special setup requirements should use these links
-for details concerning
-<a href="http://wiki.splitbrain.org/wiki:install">installation instructions</a>
-and <a href="http://wiki.splitbrain.org/wiki:config">configuration settings</a>.</p>
+<p>This page assists in the first time installation and configuration of
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. More info on this
+installer is available on it's own
+<a href="http://wiki.splitbrain.org/wiki:installer">documentation page</a>.</p>
+
+<p>DokuWiki uses ordinary files for the storage of wiki pages and other
+information associated with those pages (e.g. images, search indexes, old
+revisions, etc). In order to operate successfully DokuWiki
+<strong>must</strong> have write access to the directories that hold those
+files. This installer is not capable of setting up directory permissions. That
+normally needs to be done directly on a command shell or if you are using hosting,
+through FTP or your hosting control panel (e.g. cPanel).</p>
+
+<p>This installer will setup your DokuWiki configuration for
+<acronym title="access control list">ACL</acronym>, which in turn allows administrator
+login and access to DokuWiki's admin menu for installing plugins, managing
+users, managing access to wiki pages and alteration of configuration settings.
+It isn't required for DokuWiki to operate, however it will make Dokuwiki easier
+to administer.</p>
+
+<p>Experienced users or users with special setup requirements should use these links
+for details concerning
+<a href="http://wiki.splitbrain.org/wiki:install">installation instructions</a>
+and <a href="http://wiki.splitbrain.org/wiki:config">configuration settings</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/en/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,232 +1,232 @@
-<?php
-/**
- * english language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Anika Henke <henke at cosmocode.de>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';//“
-$lang['doublequoteclosing'] = 'â';//”
-$lang['singlequoteopening'] = 'â';//‘
-$lang['singlequoteclosing'] = 'â';//’
-$lang['apostrophe'] = 'â';//’
-
-$lang['btn_edit'] = 'Edit this page';
-$lang['btn_source'] = 'Show pagesource';
-$lang['btn_show'] = 'Show page';
-$lang['btn_create'] = 'Create this page';
-$lang['btn_search'] = 'Search';
-$lang['btn_save'] = 'Save';
-$lang['btn_preview']= 'Preview';
-$lang['btn_top'] = 'Back to top';
-$lang['btn_newer'] = '<< more recent';
-$lang['btn_older'] = 'less recent >>';
-$lang['btn_revs'] = 'Old revisions';
-$lang['btn_recent'] = 'Recent changes';
-$lang['btn_upload'] = 'Upload';
-$lang['btn_cancel'] = 'Cancel';
-$lang['btn_index'] = 'Index';
-$lang['btn_secedit']= 'Edit';
-$lang['btn_login'] = 'Login';
-$lang['btn_logout'] = 'Logout';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Update';
-$lang['btn_delete'] = 'Delete';
-$lang['btn_back'] = 'Back';
-$lang['btn_backlink'] = "Backlinks";
-$lang['btn_backtomedia'] = 'Back to Mediafile Selection';
-$lang['btn_subscribe'] = 'Subscribe Page Changes';
-$lang['btn_unsubscribe'] = 'Unsubscribe Page Changes';
-$lang['btn_subscribens'] = 'Subscribe Namespace Changes';
-$lang['btn_unsubscribens'] = 'Unsubscribe Namespace Changes';
-$lang['btn_profile'] = 'Update Profile';
-$lang['btn_reset'] = 'Reset';
-$lang['btn_resendpwd'] = 'Send new password';
-$lang['btn_draft'] = 'Edit draft';
-$lang['btn_recover'] = 'Recover draft';
-$lang['btn_draftdel'] = 'Delete draft';
-
-$lang['loggedinas'] = 'Logged in as';
-$lang['user'] = 'Username';
-$lang['pass'] = 'Password';
-$lang['newpass'] = 'New password';
-$lang['oldpass'] = 'Confirm current password';
-$lang['passchk'] = 'once again';
-$lang['remember'] = 'Remember me';
-$lang['fullname'] = 'Full name';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Register';
-$lang['profile'] = 'User Profile';
-$lang['badlogin'] = 'Sorry, username or password was wrong.';
-$lang['minoredit'] = 'Minor Changes';
-$lang['draftdate'] = 'Draft autosaved on'; // full dformat date will be added
-
-$lang['regmissing'] = 'Sorry, you must fill in all fields.';
-$lang['reguexists'] = 'Sorry, a user with this login already exists.';
-$lang['regsuccess'] = 'The user has been created and the password was sent by email.';
-$lang['regsuccess2']= 'The user has been created.';
-$lang['regmailfail']= 'Looks like there was an error on sending the password mail. Please contact the admin!';
-$lang['regbadmail'] = 'The given email address looks invalid - if you think this is an error, contact the admin';
-$lang['regbadpass'] = 'The two given passwords are not identical, please try again.';
-$lang['regpwmail'] = 'Your DokuWiki password';
-$lang['reghere'] = 'You don\'t have an account yet? Just get one';
-
-$lang['profna'] = 'This wiki does not support profile modification';
-$lang['profnochange'] = 'No changes, nothing to do.';
-$lang['profnoempty'] = 'An empty name or email address is not allowed.';
-$lang['profchanged'] = 'User profile sucessfully updated.';
-
-$lang['pwdforget'] = 'Forgotten your password? Get a new one';
-$lang['resendna'] = 'This wiki does not support password resending.';
-$lang['resendpwd'] = 'Send new password for';
-$lang['resendpwdmissing'] = 'Sorry, you must fill in all fields.';
-$lang['resendpwdnouser'] = 'Sorry, we can\'t find this user in our database.';
-$lang['resendpwdbadauth'] = 'Sorry, this auth code is not valid. Make sure you used the complete confirmation link.';
-$lang['resendpwdconfirm'] = 'A confirmation link has been sent by email.';
-$lang['resendpwdsuccess'] = 'Your new password has been sent by email.';
-
-$lang['txt_upload'] = 'Select file to upload';
-$lang['txt_filename'] = 'Upload as (optional)';
-$lang['txt_overwrt'] = 'Overwrite existing file';
-$lang['lockedby'] = 'Currently locked by';
-$lang['lockexpire'] = 'Lock expires at';
-$lang['willexpire'] = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.';
-
-$lang['notsavedyet'] = 'Unsaved changes will be lost.\nReally continue?';
-$lang['rssfailed'] = 'An error occurred while fetching this feed: ';
-$lang['nothingfound']= 'Nothing was found.';
-
-$lang['mediaselect'] = 'Media Files';
-$lang['fileupload'] = 'Media File Upload';
-$lang['uploadsucc'] = 'Upload successful';
-$lang['uploadfail'] = 'Upload failed. Maybe wrong permissions?';
-$lang['uploadwrong'] = 'Upload denied. This file extension is forbidden!';
-$lang['uploadexist'] = 'File already exists. Nothing done.';
-$lang['uploadbadcontent'] = 'The uploaded content did not match the %s file extension.';
-$lang['uploadspam'] = 'The upload was blocked by the spam blacklist.';
-$lang['uploadxss'] = 'The upload was blocked for possibly malicious content.';
-$lang['deletesucc'] = 'The file "%s" has been deleted.';
-$lang['deletefail'] = '"%s" couldn\'t be deleted - check permissions.';
-$lang['mediainuse'] = 'The file "%s" hasn\'t been deleted - it is still in use.';
-$lang['namespaces'] = 'Namespaces';
-$lang['mediafiles'] = 'Available files in';
-
-$lang['js']['keepopen'] = 'Keep window open on selection';
-$lang['js']['hidedetails'] = 'Hide Details';
-$lang['mediausage'] = 'Use the following syntax to reference this file:';
-$lang['mediaview'] = 'View original file';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons.';
-$lang['mediaextchange'] = 'Filextension changed from .%s to .%s!';
-
-$lang['reference'] = 'References for';
-$lang['ref_inuse'] = 'The file can\'t be deleted, because it\'s still used by the following pages:';
-$lang['ref_hidden'] = 'Some references are on pages you don\'t have permission to read';
-
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Matching pagenames';
-$lang['toc'] = 'Table of Contents';
-$lang['current'] = 'current';
-$lang['yours'] = 'Your Version';
-$lang['diff'] = 'Show differences to current revisions';
-$lang['diff2'] = 'Show differences between selected revisions';
-$lang['line'] = 'Line';
-$lang['breadcrumb'] = 'Trace';
-$lang['youarehere'] = 'You are here';
-$lang['lastmod'] = 'Last modified';
-$lang['by'] = 'by';
-$lang['deleted'] = 'removed';
-$lang['created'] = 'created';
-$lang['restored'] = 'old revision restored';
-$lang['external_edit'] = 'external edit';
-$lang['summary'] = 'Edit summary';
-
-$lang['mail_newpage'] = 'page added:';
-$lang['mail_changed'] = 'page changed:';
-$lang['mail_new_user'] = 'new user:';
-$lang['mail_upload'] = 'file uploaded:';
-
-$lang['nosmblinks'] = 'Linking to Windows shares only works in Microsoft Internet Explorer.\nYou still can copy and paste the link.';
-
-$lang['qb_alert'] = 'Please enter the text you want to format.\nIt will be appended to the end of the document.';
-$lang['qb_bold'] = 'Bold Text';
-$lang['qb_italic'] = 'Italic Text';
-$lang['qb_underl'] = 'Underlined Text';
-$lang['qb_code'] = 'Code Text';
-$lang['qb_strike'] = 'Strike-through Text';
-$lang['qb_h1'] = 'Level 1 Headline';
-$lang['qb_h2'] = 'Level 2 Headline';
-$lang['qb_h3'] = 'Level 3 Headline';
-$lang['qb_h4'] = 'Level 4 Headline';
-$lang['qb_h5'] = 'Level 5 Headline';
-$lang['qb_link'] = 'Internal Link';
-$lang['qb_extlink'] = 'External Link';
-$lang['qb_hr'] = 'Horizontal Rule';
-$lang['qb_ol'] = 'Ordered List Item';
-$lang['qb_ul'] = 'Unordered List Item';
-$lang['qb_media'] = 'Add Images and other files';
-$lang['qb_sig'] = 'Insert Signature';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Special Chars';
-
-$lang['del_confirm']= 'Really delete selected item(s)?';
-$lang['admin_register']= 'Add new user';
-
-$lang['metaedit'] = 'Edit Metadata';
-$lang['metasaveerr'] = 'Writing metadata failed';
-$lang['metasaveok'] = 'Metadata saved';
-$lang['img_backto'] = 'Back to';
-$lang['img_title'] = 'Title';
-$lang['img_caption'] = 'Caption';
-$lang['img_date'] = 'Date';
-$lang['img_fname'] = 'Filename';
-$lang['img_fsize'] = 'Size';
-$lang['img_artist'] = 'Photographer';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords']= 'Keywords';
-
-$lang['subscribe_success'] = 'Added %s to subscription list for %s';
-$lang['subscribe_error'] = 'Error adding %s to subscription list for %s';
-$lang['subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list';
-$lang['unsubscribe_success']= 'Removed %s from subscription list for %s';
-$lang['unsubscribe_error'] = 'Error removing %s from subscription list for %s';
-
-/* auth.class language support */
-$lang['authmodfailed'] = 'Bad user authentication configuration. Please inform your Wiki Admin.';
-$lang['authtempfail'] = 'User authentication is temporarily unavailable. If this situation persists, please inform your Wiki Admin.';
-
-/* installer strings */
-$lang['i_chooselang'] = 'Choose your language';
-$lang['i_installer'] = 'DokuWiki Installer';
-$lang['i_wikiname'] = 'Wiki Name';
-$lang['i_enableacl'] = 'Enable ACL (recommended)';
-$lang['i_superuser'] = 'Superuser';
-$lang['i_problems'] = 'The installer found some problems, indicated below. You can not continue until you have fixed them.';
-$lang['i_modified'] = 'For security reasons this script will only work with a new and unmodified Dokuwiki installation.
- You should either re-extract the files from the downloaded package or consult the complete
- <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installation instructions</a>';
-$lang['i_funcna'] = 'PHP function <code>%s</code> is not available. Maybe your hosting provider disabled it for some reason?';
-$lang['i_phpver'] = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
-$lang['i_permfail'] = '<code>%s</code> is not writable by DokuWiki. You need to fix the permission settings of this directory!';
-$lang['i_confexists'] = '<code>%s</code> already exists';
-$lang['i_writeerr'] = 'Unable to create <code>%s</code>. You will need to check directory/file permissions and create the file manually.';
-$lang['i_badhash'] = 'unrecognised or modified dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - illegal or empty value';
-$lang['i_success'] = 'The configuration was finished successfully. You may delete the install.php file now. Continue to
- <a href="doku.php">your new DokuWiki</a>.';
-$lang['i_failure'] = 'Some errors occurred while writing the configuration files. You may need to fix them manually before
- you can use <a href="doku.php">your new DokuWiki</a>.';
-$lang['i_policy'] = 'Initial ACL policy';
-$lang['i_pol0'] = 'Open Wiki (read, write, upload for everyone)';
-$lang['i_pol1'] = 'Public Wiki (read for everyone, write and upload for registered users)';
-$lang['i_pol2'] = 'Closed Wiki (read, write, upload for registered users only)';
-
-$lang['i_retry'] = 'Retry';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * english language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Anika Henke <henke at cosmocode.de>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';//“
+$lang['doublequoteclosing'] = 'â';//”
+$lang['singlequoteopening'] = 'â';//‘
+$lang['singlequoteclosing'] = 'â';//’
+$lang['apostrophe'] = 'â';//’
+
+$lang['btn_edit'] = 'Edit this page';
+$lang['btn_source'] = 'Show pagesource';
+$lang['btn_show'] = 'Show page';
+$lang['btn_create'] = 'Create this page';
+$lang['btn_search'] = 'Search';
+$lang['btn_save'] = 'Save';
+$lang['btn_preview']= 'Preview';
+$lang['btn_top'] = 'Back to top';
+$lang['btn_newer'] = '<< more recent';
+$lang['btn_older'] = 'less recent >>';
+$lang['btn_revs'] = 'Old revisions';
+$lang['btn_recent'] = 'Recent changes';
+$lang['btn_upload'] = 'Upload';
+$lang['btn_cancel'] = 'Cancel';
+$lang['btn_index'] = 'Index';
+$lang['btn_secedit']= 'Edit';
+$lang['btn_login'] = 'Login';
+$lang['btn_logout'] = 'Logout';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Update';
+$lang['btn_delete'] = 'Delete';
+$lang['btn_back'] = 'Back';
+$lang['btn_backlink'] = "Backlinks";
+$lang['btn_backtomedia'] = 'Back to Mediafile Selection';
+$lang['btn_subscribe'] = 'Subscribe Page Changes';
+$lang['btn_unsubscribe'] = 'Unsubscribe Page Changes';
+$lang['btn_subscribens'] = 'Subscribe Namespace Changes';
+$lang['btn_unsubscribens'] = 'Unsubscribe Namespace Changes';
+$lang['btn_profile'] = 'Update Profile';
+$lang['btn_reset'] = 'Reset';
+$lang['btn_resendpwd'] = 'Send new password';
+$lang['btn_draft'] = 'Edit draft';
+$lang['btn_recover'] = 'Recover draft';
+$lang['btn_draftdel'] = 'Delete draft';
+
+$lang['loggedinas'] = 'Logged in as';
+$lang['user'] = 'Username';
+$lang['pass'] = 'Password';
+$lang['newpass'] = 'New password';
+$lang['oldpass'] = 'Confirm current password';
+$lang['passchk'] = 'once again';
+$lang['remember'] = 'Remember me';
+$lang['fullname'] = 'Full name';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Register';
+$lang['profile'] = 'User Profile';
+$lang['badlogin'] = 'Sorry, username or password was wrong.';
+$lang['minoredit'] = 'Minor Changes';
+$lang['draftdate'] = 'Draft autosaved on'; // full dformat date will be added
+
+$lang['regmissing'] = 'Sorry, you must fill in all fields.';
+$lang['reguexists'] = 'Sorry, a user with this login already exists.';
+$lang['regsuccess'] = 'The user has been created and the password was sent by email.';
+$lang['regsuccess2']= 'The user has been created.';
+$lang['regmailfail']= 'Looks like there was an error on sending the password mail. Please contact the admin!';
+$lang['regbadmail'] = 'The given email address looks invalid - if you think this is an error, contact the admin';
+$lang['regbadpass'] = 'The two given passwords are not identical, please try again.';
+$lang['regpwmail'] = 'Your DokuWiki password';
+$lang['reghere'] = 'You don\'t have an account yet? Just get one';
+
+$lang['profna'] = 'This wiki does not support profile modification';
+$lang['profnochange'] = 'No changes, nothing to do.';
+$lang['profnoempty'] = 'An empty name or email address is not allowed.';
+$lang['profchanged'] = 'User profile sucessfully updated.';
+
+$lang['pwdforget'] = 'Forgotten your password? Get a new one';
+$lang['resendna'] = 'This wiki does not support password resending.';
+$lang['resendpwd'] = 'Send new password for';
+$lang['resendpwdmissing'] = 'Sorry, you must fill in all fields.';
+$lang['resendpwdnouser'] = 'Sorry, we can\'t find this user in our database.';
+$lang['resendpwdbadauth'] = 'Sorry, this auth code is not valid. Make sure you used the complete confirmation link.';
+$lang['resendpwdconfirm'] = 'A confirmation link has been sent by email.';
+$lang['resendpwdsuccess'] = 'Your new password has been sent by email.';
+
+$lang['txt_upload'] = 'Select file to upload';
+$lang['txt_filename'] = 'Upload as (optional)';
+$lang['txt_overwrt'] = 'Overwrite existing file';
+$lang['lockedby'] = 'Currently locked by';
+$lang['lockexpire'] = 'Lock expires at';
+$lang['willexpire'] = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.';
+
+$lang['notsavedyet'] = 'Unsaved changes will be lost.\nReally continue?';
+$lang['rssfailed'] = 'An error occurred while fetching this feed: ';
+$lang['nothingfound']= 'Nothing was found.';
+
+$lang['mediaselect'] = 'Media Files';
+$lang['fileupload'] = 'Media File Upload';
+$lang['uploadsucc'] = 'Upload successful';
+$lang['uploadfail'] = 'Upload failed. Maybe wrong permissions?';
+$lang['uploadwrong'] = 'Upload denied. This file extension is forbidden!';
+$lang['uploadexist'] = 'File already exists. Nothing done.';
+$lang['uploadbadcontent'] = 'The uploaded content did not match the %s file extension.';
+$lang['uploadspam'] = 'The upload was blocked by the spam blacklist.';
+$lang['uploadxss'] = 'The upload was blocked for possibly malicious content.';
+$lang['deletesucc'] = 'The file "%s" has been deleted.';
+$lang['deletefail'] = '"%s" couldn\'t be deleted - check permissions.';
+$lang['mediainuse'] = 'The file "%s" hasn\'t been deleted - it is still in use.';
+$lang['namespaces'] = 'Namespaces';
+$lang['mediafiles'] = 'Available files in';
+
+$lang['js']['keepopen'] = 'Keep window open on selection';
+$lang['js']['hidedetails'] = 'Hide Details';
+$lang['mediausage'] = 'Use the following syntax to reference this file:';
+$lang['mediaview'] = 'View original file';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons.';
+$lang['mediaextchange'] = 'Filextension changed from .%s to .%s!';
+
+$lang['reference'] = 'References for';
+$lang['ref_inuse'] = 'The file can\'t be deleted, because it\'s still used by the following pages:';
+$lang['ref_hidden'] = 'Some references are on pages you don\'t have permission to read';
+
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Matching pagenames';
+$lang['toc'] = 'Table of Contents';
+$lang['current'] = 'current';
+$lang['yours'] = 'Your Version';
+$lang['diff'] = 'Show differences to current revisions';
+$lang['diff2'] = 'Show differences between selected revisions';
+$lang['line'] = 'Line';
+$lang['breadcrumb'] = 'Trace';
+$lang['youarehere'] = 'You are here';
+$lang['lastmod'] = 'Last modified';
+$lang['by'] = 'by';
+$lang['deleted'] = 'removed';
+$lang['created'] = 'created';
+$lang['restored'] = 'old revision restored';
+$lang['external_edit'] = 'external edit';
+$lang['summary'] = 'Edit summary';
+
+$lang['mail_newpage'] = 'page added:';
+$lang['mail_changed'] = 'page changed:';
+$lang['mail_new_user'] = 'new user:';
+$lang['mail_upload'] = 'file uploaded:';
+
+$lang['nosmblinks'] = 'Linking to Windows shares only works in Microsoft Internet Explorer.\nYou still can copy and paste the link.';
+
+$lang['qb_alert'] = 'Please enter the text you want to format.\nIt will be appended to the end of the document.';
+$lang['qb_bold'] = 'Bold Text';
+$lang['qb_italic'] = 'Italic Text';
+$lang['qb_underl'] = 'Underlined Text';
+$lang['qb_code'] = 'Code Text';
+$lang['qb_strike'] = 'Strike-through Text';
+$lang['qb_h1'] = 'Level 1 Headline';
+$lang['qb_h2'] = 'Level 2 Headline';
+$lang['qb_h3'] = 'Level 3 Headline';
+$lang['qb_h4'] = 'Level 4 Headline';
+$lang['qb_h5'] = 'Level 5 Headline';
+$lang['qb_link'] = 'Internal Link';
+$lang['qb_extlink'] = 'External Link';
+$lang['qb_hr'] = 'Horizontal Rule';
+$lang['qb_ol'] = 'Ordered List Item';
+$lang['qb_ul'] = 'Unordered List Item';
+$lang['qb_media'] = 'Add Images and other files';
+$lang['qb_sig'] = 'Insert Signature';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Special Chars';
+
+$lang['del_confirm']= 'Really delete selected item(s)?';
+$lang['admin_register']= 'Add new user';
+
+$lang['metaedit'] = 'Edit Metadata';
+$lang['metasaveerr'] = 'Writing metadata failed';
+$lang['metasaveok'] = 'Metadata saved';
+$lang['img_backto'] = 'Back to';
+$lang['img_title'] = 'Title';
+$lang['img_caption'] = 'Caption';
+$lang['img_date'] = 'Date';
+$lang['img_fname'] = 'Filename';
+$lang['img_fsize'] = 'Size';
+$lang['img_artist'] = 'Photographer';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Camera';
+$lang['img_keywords']= 'Keywords';
+
+$lang['subscribe_success'] = 'Added %s to subscription list for %s';
+$lang['subscribe_error'] = 'Error adding %s to subscription list for %s';
+$lang['subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list';
+$lang['unsubscribe_success']= 'Removed %s from subscription list for %s';
+$lang['unsubscribe_error'] = 'Error removing %s from subscription list for %s';
+
+/* auth.class language support */
+$lang['authmodfailed'] = 'Bad user authentication configuration. Please inform your Wiki Admin.';
+$lang['authtempfail'] = 'User authentication is temporarily unavailable. If this situation persists, please inform your Wiki Admin.';
+
+/* installer strings */
+$lang['i_chooselang'] = 'Choose your language';
+$lang['i_installer'] = 'DokuWiki Installer';
+$lang['i_wikiname'] = 'Wiki Name';
+$lang['i_enableacl'] = 'Enable ACL (recommended)';
+$lang['i_superuser'] = 'Superuser';
+$lang['i_problems'] = 'The installer found some problems, indicated below. You can not continue until you have fixed them.';
+$lang['i_modified'] = 'For security reasons this script will only work with a new and unmodified Dokuwiki installation.
+ You should either re-extract the files from the downloaded package or consult the complete
+ <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installation instructions</a>';
+$lang['i_funcna'] = 'PHP function <code>%s</code> is not available. Maybe your hosting provider disabled it for some reason?';
+$lang['i_phpver'] = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
+$lang['i_permfail'] = '<code>%s</code> is not writable by DokuWiki. You need to fix the permission settings of this directory!';
+$lang['i_confexists'] = '<code>%s</code> already exists';
+$lang['i_writeerr'] = 'Unable to create <code>%s</code>. You will need to check directory/file permissions and create the file manually.';
+$lang['i_badhash'] = 'unrecognised or modified dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - illegal or empty value';
+$lang['i_success'] = 'The configuration was finished successfully. You may delete the install.php file now. Continue to
+ <a href="doku.php">your new DokuWiki</a>.';
+$lang['i_failure'] = 'Some errors occurred while writing the configuration files. You may need to fix them manually before
+ you can use <a href="doku.php">your new DokuWiki</a>.';
+$lang['i_policy'] = 'Initial ACL policy';
+$lang['i_pol0'] = 'Open Wiki (read, write, upload for everyone)';
+$lang['i_pol1'] = 'Public Wiki (read for everyone, write and upload for registered users)';
+$lang['i_pol2'] = 'Closed Wiki (read, write, upload for registered users only)';
+
+$lang['i_retry'] = 'Retry';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/en/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,3 @@
-====== Page locked ======
-
-This page is currently locked for editing by another user. You have to wait
-until this user finishes editing or the lock expires.
+====== Page locked ======
+
+This page is currently locked for editing by another user. You have to wait until this user finishes editing or the lock expires.
Modified: site/trunk/www-root/wiki/inc/lang/en/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,4 @@
-====== Login ======
-
-You are currently not logged in! Enter your authentication credentials below to log in.
-You need to have cookies enabled to log in.
-
+====== Login ======
+
+You are currently not logged in! Enter your authentication credentials below to log in. You need to have cookies enabled to log in.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-A page in your DokuWiki was added or changed. Here are the details:
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-Old Revision: @OLDPAGE@
-New Revision: @NEWPAGE@
-Edit Summary: @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+A page in your DokuWiki was added or changed. Here are the details:
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+Old Revision: @OLDPAGE@
+New Revision: @NEWPAGE@
+Edit Summary: @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/en/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,4 @@
-======This topic does not exist yet======
-
-You've followed a link to a topic that doesn't exist yet.
-If permissions allow, you may create it by using the
-''Create this page'' button.
-
+======This topic does not exist yet======
+
+You've followed a link to a topic that doesn't exist yet. If permissions allow, you may create it by using the ''Create this page'' button.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======No such revision======
-
-The specified revision doesn't exist. Use the ''Old revisions'' button for a list of old revisions of this document.
-
+======No such revision======
+
+The specified revision doesn't exist. Use the ''Old revisions'' button for a list of old revisions of this document.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hi @FULLNAME@!
-
-Here is your userdata for @TITLE@ at @DOKUWIKIURL@
-
-Login : @LOGIN@
-Password : @PASSWORD@
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+Hi @FULLNAME@!
+
+Here is your userdata for @TITLE@ at @DOKUWIKIURL@
+
+Login : @LOGIN@
+Password : @PASSWORD@
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/en/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Preview======
-
-This is a preview of how your text will look like. Remember: It is **not saved** yet!
-
+======Preview======
+
+This is a preview of how your text will look like. Remember: It is **not saved** yet!
+
Modified: site/trunk/www-root/wiki/inc/lang/en/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Hi @FULLNAME@!
-
-Someone requested a new password for your @TITLE@
-login at @DOKUWIKIURL@
-
-If you did not request a new password then just ignore this email.
-
-To confirm that the request was really sent by you please use the
-following link.
-
- at CONFIRM@
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+Hi @FULLNAME@!
+
+Someone requested a new password for your @TITLE@
+login at @DOKUWIKIURL@
+
+If you did not request a new password then just ignore this email.
+
+To confirm that the request was really sent by you please use the
+following link.
+
+ at CONFIRM@
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/en/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong.
-
+This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Recent Changes======
-
-The following pages were changed recently.
-
-
+======Recent Changes======
+
+The following pages were changed recently.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/en/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,4 @@
-====== Register as new user ======
-
-Fill in all the information below to create a new account in this wiki.
-Make sure you supply a **valid e-mail address** - if you are not asked
-to enter a password here, a new one will be sent to that address.
-The login name should be a valid [[doku>wiki:pagename|pagename]].
-
+====== Register as new user ======
+
+Fill in all the information below to create a new account in this wiki. Make sure you supply a **valid e-mail address** - if you are not asked to enter a password here, a new one will be sent to that address. The login name should be a valid [[doku>wiki:pagename|pagename]].
+
Modified: site/trunk/www-root/wiki/inc/lang/en/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-A new user has registered. Here are the details:
-
-User name : @NEWUSER@
-Full name : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+A new user has registered. Here are the details:
+
+User name : @NEWUSER@
+Full name : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/en/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,4 @@
-====== Send new password ======
-
-Please enter your user name in the form below to request a new password for your
-account in this wiki. A confirmation link will be sent to your registered email
-address.
-
+====== Send new password ======
+
+Please enter your user name in the form below to request a new password for your account in this wiki. A confirmation link will be sent to your registered email address.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Old Revisions======
-
-These are the older revisons of the current document. To revert to an old revision, select it from below, click ''Edit this page'' and save it.
-
+======Old Revisions======
+
+These are the older revisons of the current document. To revert to an old revision, select it from below, click ''Edit this page'' and save it.
+
Modified: site/trunk/www-root/wiki/inc/lang/en/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,5 @@
-======Search======
-
-You can find the results of your search below. If you didn't find
-what you were looking for, you can create or edit the page named
-after your query with the appropriate button.
-
-=====Results=====
+======Search======
+
+You can find the results of your search below. If you didn't find what you were looking for, you can create or edit the page named after your query with the appropriate button.
+
+=====Results=====
Modified: site/trunk/www-root/wiki/inc/lang/en/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**This is an old revision of the document!**
-----
+**This is an old revision of the document!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/en/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/en/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Hello!
-
-The page @PAGE@ in the @TITLE@ wiki changed.
-Here are the changes:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-To cancel the page notifications, log into the wiki at
- at DOKUWIKIURL@ then visit
- at NEWPAGE@
-and unsubscribe page and/or namespace changes.
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+Hello!
+
+The page @PAGE@ in the @TITLE@ wiki changed.
+Here are the changes:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+To cancel the page notifications, log into the wiki at
+ at DOKUWIKIURL@ then visit
+ at NEWPAGE@
+and unsubscribe page and/or namespace changes.
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/en/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Update your account profile ======
-
-You only need to complete those fields you wish to change. You may not change your user name.
-
-
+====== Update your account profile ======
+
+You only need to complete those fields you wish to change. You may not change your user name.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/en/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-A file was uploaded to your DokuWiki. Here are the details:
-
-File : @MEDIA@
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-Size : @SIZE@
-MIME Type : @MIME@
-User : @USER@
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+A file was uploaded to your DokuWiki. Here are the details:
+
+File : @MEDIA@
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+Size : @SIZE@
+MIME Type : @MIME@
+User : @USER@
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/en/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/en/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/en/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,4 @@
-======SPAM blocked======
-
-Your changes were **not** saved because it contains one or more blocked words.
-If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact
-the administrator of this Wiki.
-
+======SPAM blocked======
+
+Your changes were **not** saved because it contains one or more blocked words. If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact the administrator of this Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administro ======
-
-Sube vi povas trovi liston de admnistraj taskoj disponeblaj en
+====== Administro ======
+
+Sube vi povas trovi liston de admnistraj taskoj disponeblaj en
DokuWiki.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Retroligoj ======
-
+====== Retroligoj ======
+
Äi tiu listo montras paÄojn, kiuj referencas al la aktuala paÄo.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Pli nova versio ekzistas ======
-
-Ekzistas pli nova versio de la dokumento. Tio okazas kiam iu alia uzanto
-ÅanÄigis enhavon de la dokumento dum vi redaktis Äin.
-
-Atente esploru distingojn kaj decidu kiun version vi tenigos.
-Se vi premos ''"Konservi"'', do via versio estos konservita.
-Presonte butonon ''Rezigni'' vi tenos la kurantan version.
+====== Pli nova versio ekzistas ======
+
+Ekzistas pli nova versio de la dokumento. Tio okazas kiam iu alia uzanto
+ÅanÄigis enhavon de la dokumento dum vi redaktis Äin.
+
+Atente esploru distingojn kaj decidu kiun version vi tenigos.
+Se vi premos ''"Konservi"'', do via versio estos konservita.
+Presonte butonon ''Rezigni'' vi tenos la kurantan version.
Modified: site/trunk/www-root/wiki/inc/lang/eo/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Aliro malpermesita ======
-
-Vi ne havas sufiÄe da rajtoj por rigardi Äi tiujn paÄojn. Eble vi forgesis identiÄi.
-
+====== Aliro malpermesita ======
+
+Vi ne havas sufiÄe da rajtoj por rigardi Äi tiujn paÄojn. Eble vi forgesis identiÄi.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Diferencoj======
-
-Äi tie vi povas ekvidi diferencojn inter kuranta versio kaj elektita revizio de la paÄo.
-
+======Diferencoj======
+
+Äi tie vi povas ekvidi diferencojn inter kuranta versio kaj elektita revizio de la paÄo.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Skiza dosiero estis trovata ======
-
-Via lasta sekcio de redakto en tiu Äi paÄo ne estis korekte kompletata.
-Dokuwiki aÅtomate konservis skizon dum vi laboris, kiun vi nun povas uzi por
-daÅrigi vian redaktadon. Sube vi povas vidi la datenaron, kiun estis konservata
-el via lasta sekcio.
-
-Bonvolu decidi Äu vi volas //restarigi// vian perditan redakton, //forigi//
+====== Skiza dosiero estis trovata ======
+
+Via lasta sekcio de redakto en tiu Äi paÄo ne estis korekte kompletata.
+Dokuwiki aÅtomate konservis skizon dum vi laboris, kiun vi nun povas uzi por
+daÅrigi vian redaktadon. Sube vi povas vidi la datenaron, kiun estis konservata
+el via lasta sekcio.
+
+Bonvolu decidi Äu vi volas //restarigi// vian perditan redakton, //forigi//
la aÅtomate konservitan skizon aux //rezigni// pri la redakta procezo.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Redaktu paÄon kaj poste premu butonon titolitan ''"Konservi"''. Bonvolu tralegi
+Redaktu paÄon kaj poste premu butonon titolitan ''"Konservi"''. Bonvolu tralegi
la [[vikio:sintakso|vikian sintakson]] por kompreni kiel vi povas krei paÄojn. Bonvolu redakti nur se vi planas **plibonigi** la enhavon de la paÄo. Se vi volas nur testi ion, do bonvolu uzi specialan paÄon: [[vikio:ludejo|ludejo]].
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Vi laboras kun malnova revizio de la dokumento!** Se vi konservos Äin, tiel kreiÄos nova kuranta versio kun la sama enhavo.
-----
+**Vi laboras kun malnova revizio de la dokumento!** Se vi konservos Äin, tiel kreiÄos nova kuranta versio kun la sama enhavo.
+----
Modified: site/trunk/www-root/wiki/inc/lang/eo/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-<p>Tiu Äi paÄo helpas en la unua instalo kaj agordado de <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Pli da informo pri tiu instalilo estas disponebla en Äia propra <a href="http://wiki.splitbrain.org/wiki:installer">dokumentada paÄo</a>.</p>
-
-<p>DokuWiki uzas ordinarajn dosierojn por konservi vikiajn paÄojn kaj aliaj informoj asociitaj al tiuj paÄoj (ekz. bildoj, serÄindeksoj, malnovaj revizioj, ktp). Por bone funkcii, DokuWiki
-<strong>devas</strong> havi registran rajton sur la subdosierujoj, kiuj gardas tiujn dosierojn. Tiu Äi instalilo ne kapablas difini permes-atributojn de dosierujoj. Ordinare, tio devas esti senpere farita de iu komando en konzolo aÅ , se vi abonas retprovizanton, per FTP aÅ kontrola panelo de tiu retprovizanto (ekz, cPanel).</p>
-
-<p>Tiu Äi instalilo difinos vian DokuWiki-an agordadon por
-<acronym title="alir-kontrola listo">ACL</acronym>, kiu ebligas al administranto identiÄi kaj aliri taÅgan interfacon por instali kromaĵojn, administri uzulojn kaj alireblon al vikipaÄoj, kaj difini agordojn Äeneralajn.
-Äi ne estas nepra por ke DokuWiki funkciu, tamen Äi multe faciligos admnistradon.</p>
-
-<p>Spertuloj aÅ uzuloj kiuj bezonas specialajn agordrimedojn devus uzi tiujn ligilojn por havi pli detalojn pri
-<a href="http://wiki.splitbrain.org/wiki:install">instaladaj instrukcioj</a>
+<p>Tiu Äi paÄo helpas en la unua instalo kaj agordado de <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Pli da informo pri tiu instalilo estas disponebla en Äia propra <a href="http://wiki.splitbrain.org/wiki:installer">dokumentada paÄo</a>.</p>
+
+<p>DokuWiki uzas ordinarajn dosierojn por konservi vikiajn paÄojn kaj aliaj informoj asociitaj al tiuj paÄoj (ekz. bildoj, serÄindeksoj, malnovaj revizioj, ktp). Por bone funkcii, DokuWiki
+<strong>devas</strong> havi registran rajton sur la subdosierujoj, kiuj gardas tiujn dosierojn. Tiu Äi instalilo ne kapablas difini permes-atributojn de dosierujoj. Ordinare, tio devas esti senpere farita de iu komando en konzolo aÅ , se vi abonas retprovizanton, per FTP aÅ kontrola panelo de tiu retprovizanto (ekz, cPanel).</p>
+
+<p>Tiu Äi instalilo difinos vian DokuWiki-an agordadon por
+<acronym title="alir-kontrola listo">ACL</acronym>, kiu ebligas al administranto identiÄi kaj aliri taÅgan interfacon por instali kromaĵojn, administri uzulojn kaj alireblon al vikipaÄoj, kaj difini agordojn Äeneralajn.
+Äi ne estas nepra por ke DokuWiki funkciu, tamen Äi multe faciligos admnistradon.</p>
+
+<p>Spertuloj aÅ uzuloj kiuj bezonas specialajn agordrimedojn devus uzi tiujn ligilojn por havi pli detalojn pri
+<a href="http://wiki.splitbrain.org/wiki:install">instaladaj instrukcioj</a>
kaj <a href="http://wiki.splitbrain.org/wiki:config">agordadaj difinoj</a>.</p>
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,208 +1,208 @@
-<?php
-/**
- * Esperanta dosiero
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Antono Vasiljev <esperanto.minsk ÄE tut.by>
- * @author Felipe Castro <fefcas CXE yahoo.com.br>
- * @author Felipe Castro <fefcas at uol.com.br>
- * @author Felipe Castro <fefcas at gmail.com>
- * @author Felipe Castro <fefcas (cxe) gmail (punkto) com>
- * @author Felipo Kastro <fefcas at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'maldekstre-dekstren';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Redakti la paÄon';
-$lang['btn_source'] = 'Montri fontan tekston';
-$lang['btn_show'] = 'Montri paÄon';
-$lang['btn_create'] = 'Krei paÄon';
-$lang['btn_search'] = 'SerÄi';
-$lang['btn_save'] = 'Konservi';
-$lang['btn_preview'] = 'AntaÅrigardi';
-$lang['btn_top'] = 'Supren';
-$lang['btn_newer'] = '<< pli freÅe';
-$lang['btn_older'] = 'malpli freÅe >>';
-$lang['btn_revs'] = 'PaÄaj revizioj';
-$lang['btn_recent'] = 'Vikiaj modifoj';
-$lang['btn_upload'] = 'AlÅuti';
-$lang['btn_cancel'] = 'Rezigni';
-$lang['btn_index'] = 'Enhavo';
-$lang['btn_secedit'] = 'Redakti';
-$lang['btn_login'] = 'Ensaluti';
-$lang['btn_logout'] = 'Elsaluti';
-$lang['btn_admin'] = 'Administri';
-$lang['btn_update'] = 'Äisdatigi';
-$lang['btn_delete'] = 'Forigi';
-$lang['btn_back'] = 'Retroiri';
-$lang['btn_backlink'] = 'Retroligoj';
-$lang['btn_backtomedia'] = 'Retroiri al elekto de dosiero';
-$lang['btn_subscribe'] = 'AliÄi al PaÄaj Modifoj';
-$lang['btn_unsubscribe'] = 'MalaliÄi al PaÄaj Modifoj';
-$lang['btn_subscribens'] = 'AliÄi al Nomspacaj Modifoj';
-$lang['btn_unsubscribens'] = 'MalaliÄi al Nomspacaj Modifoj';
-$lang['btn_profile'] = 'Äisdatigi profilon';
-$lang['btn_reset'] = 'Rekomencigi';
-$lang['btn_resendpwd'] = 'Sendi novan pasvorton';
-$lang['btn_draft'] = 'Redakti skizon';
-$lang['btn_recover'] = 'Restarigi skizon';
-$lang['btn_draftdel'] = 'Forigi skizon';
-$lang['loggedinas'] = 'Ensalutita kiel';
-$lang['user'] = 'Uzulnomo';
-$lang['pass'] = 'Pasvorto';
-$lang['newpass'] = 'Nova pasvorto';
-$lang['oldpass'] = 'Konfirmu validantan pasvorton';
-$lang['passchk'] = 'pli unu fojo';
-$lang['remember'] = 'Memoru min';
-$lang['fullname'] = 'Plena nomo';
-$lang['email'] = 'RetpoÅto';
-$lang['register'] = 'Registro';
-$lang['profile'] = 'Profilo de uzulo';
-$lang['badlogin'] = 'Pardonu, uzulnomo aÅ pasvorto estis erara.';
-$lang['minoredit'] = 'Etaj Modifetoj';
-$lang['draftdate'] = 'Lasta konservo de la skizo:';
-$lang['regmissing'] = 'Pardonu, vi devas plenigi Äiujn kampojn.';
-$lang['reguexists'] = 'Pardonu, Äi tiu uzulnomo jam estas okupita.';
-$lang['regsuccess'] = 'La uzulo estas kreita kaj la pasvorto estas elsendita al via retpoÅto.';
-$lang['regsuccess2'] = 'La uzulo estas kreita.';
-$lang['regmailfail'] = 'Åajne okazis eraro dum elsendo de la pasvorto. Bonvole informu administranton pri tio!';
-$lang['regbadmail'] = 'Entajpita retpoÅta adreso ne Åajnas valida. Se vi pensas, ke estas eraro, kontaktu la administranto.';
-$lang['regbadpass'] = 'La du pasvortoj ne interegalas, bonvolu provi refoje.';
-$lang['regpwmail'] = 'Via pasvorto';
-$lang['reghere'] = 'Se vi ne havas konton, do vi povos akiri Äin';
-$lang['profna'] = 'Tiu Äi vikio ne ebligas modifon en la profiloj.';
-$lang['profnochange'] = 'Neniu ÅanÄo, nenio farinda.';
-$lang['profnoempty'] = 'Malplena nomo aÅ retadreso ne estas permesataj.';
-$lang['profchanged'] = 'La profilo de la uzulo estas sukcese Äisdatigita.';
-$lang['pwdforget'] = 'Äu vi forgesis vian pasvorton? Prenu novan';
-$lang['resendna'] = 'Tiu Äi vikio ne ebligas resendon de la pasvortoj.';
-$lang['resendpwd'] = 'Sendi novan pasvorton al';
-$lang['resendpwdmissing'] = 'Pardonu, vi devas plenigi Äiujn kampojn.';
-$lang['resendpwdnouser'] = 'Pardonu, ni ne trovas tiun uzulon en nia datenbazo.';
-$lang['resendpwdbadauth'] = 'Pardonu, tiu "aÅtentikiga kodo" ne validas. CertiÄu, ke vi uzis la kompletan konfirmigan ligilon.';
-$lang['resendpwdconfirm'] = 'Konfirmiga ligilo estas sendita per retpoÅto.';
-$lang['resendpwdsuccess'] = 'Via nova pasvorto estas sendita per retpoÅto.';
-$lang['txt_upload'] = 'Elektu dosieron por alÅuto';
-$lang['txt_filename'] = 'AlÅuti kiel (laÅvole)';
-$lang['txt_overwrt'] = 'AnstataÅigi ekzistantan dosieron';
-$lang['lockedby'] = 'Äimomente estas Ålosita';
-$lang['lockexpire'] = 'Åloso Äesos en';
-$lang['willexpire'] = 'Vi povos redakti Äi tiun paÄon post unu minuto.\nSe vi volas nuligi horloÄon de la Ålosado, do premu butonon "AntaÅrigardi".';
-$lang['notsavedyet'] = 'Ne konservitaj modifoj perdiÄos.\nÄu vi certe volas daÅrigi la procezon?';
-$lang['rssfailed'] = 'Okazis eraro dum ricevado de la novaĵ-strio: ';
-$lang['nothingfound'] = 'AnkoraÅ nenio troviÄas tie Äi.';
-$lang['mediaselect'] = 'Elekto de aÅdvidaĵa dosiero';
-$lang['fileupload'] = 'AlÅuto de aÅdvidaĵa dosiero';
-$lang['uploadsucc'] = 'AlÅuto estis sukcesa';
-$lang['uploadfail'] = 'AlÅuto estis malsukcesa. Eble Äu estas problemoj pro permes-atributoj?';
-$lang['uploadwrong'] = 'Rifuzita alÅuto. Tiu Äi dosiersufikso estas malpermesata!';
-$lang['uploadexist'] = 'La dosiero jam ekzistas. Nenio estas farita.';
-$lang['uploadbadcontent'] = 'La alÅutita enhavo ne kongruas al la sufikso %s.';
-$lang['uploadspam'] = 'La alÅutaĵo estis blokita de kontraÅspama vortlisto.';
-$lang['uploadxss'] = 'La alÅutajo estis blokita pro ebla malica enhavo.';
-$lang['deletesucc'] = 'La dosiero "%s" estas forigita.';
-$lang['deletefail'] = '"%s" ne povis esti forigita - kontrolu permes-atributojn.';
-$lang['mediainuse'] = 'La dosiero "%s" ne estis forigita - Äi ankoraÅ estas uzata.';
-$lang['namespaces'] = 'Nomspacoj';
-$lang['mediafiles'] = 'Disponeblaj dosieroj';
-$lang['js']['keepopen'] = 'Tenu la fenestron malfermata dum elekto';
-$lang['js']['hidedetails'] = 'KaÅi detalojn';
-$lang['mediausage'] = 'Uzu la jenan sintakson por referenci tiun Äi dosieron:';
-$lang['mediaview'] = 'Rigardi originalan dosieron';
-$lang['mediaroot'] = 'Äefo (root)';
-$lang['mediaupload'] = 'AlÅutu dosieron al la kuranta nomspaco tie Äi. Por krei subnomspacojn, antaÅmetu ilin al via "AlÅuti kiel" dosiernomo, apartigante per dupunktoj (:).';
-$lang['mediaextchange'] = 'La dosiersufikso ÅanÄis de .%s al .%s!';
-$lang['reference'] = 'Referencoj por';
-$lang['ref_inuse'] = 'La dosiero ne povas esti forigita, Äar Äi ankoraÅ estas uzata de la jenaj paÄoj:';
-$lang['ref_hidden'] = 'Kelkaj referencoj estas en paÄoj, kiujn vi ne rajtas legi';
-$lang['hits'] = 'Kongruoj';
-$lang['quickhits'] = 'Kongruoj trovitaj en paÄnomoj';
-$lang['toc'] = 'Enhavtabelo';
-$lang['current'] = 'aktuala';
-$lang['yours'] = 'Via Versio';
-$lang['diff'] = 'Montri diferencojn el la kuranta versio';
-$lang['diff2'] = 'Montri diferencojn inter elektitaj revisioj';
-$lang['line'] = 'Linio';
-$lang['breadcrumb'] = 'Historio';
-$lang['youarehere'] = 'Via pado';
-$lang['lastmod'] = 'Lastaj ÅanÄoj';
-$lang['by'] = 'de';
-$lang['deleted'] = 'forigita';
-$lang['created'] = 'kreita';
-$lang['restored'] = 'malnova revizio restarigita';
-$lang['external_edit'] = 'ekstera redakto';
-$lang['summary'] = 'Bulteno de ÅanÄoj';
-$lang['mail_newpage'] = 'paÄo aldonita:';
-$lang['mail_changed'] = 'paÄo modifita:';
-$lang['mail_new_user'] = 'Nova uzulo:';
-$lang['mail_upload'] = 'dosiero alÅutita:';
-$lang['nosmblinks'] = 'Tio Äi nur funkcias en la VindozaÄa "Microsoft Internet Explorer".\nVi ankoraÅ povas kopii kaj almeti la ligilon.';
-$lang['qb_alert'] = 'Bonvolu enskribi formatotan tekston.\nÄi estos aldonita Äe la fino de la dokumento.';
-$lang['qb_bold'] = 'Dika Teksto';
-$lang['qb_italic'] = 'Dekliva Teksto';
-$lang['qb_underl'] = 'Substrekita Teksto';
-$lang['qb_code'] = 'Koduma Teksto';
-$lang['qb_strike'] = 'Trastrekita Teksto';
-$lang['qb_h1'] = 'Titolo de 1-a nivelo';
-$lang['qb_h2'] = 'Titolo de 2-a nivelo';
-$lang['qb_h3'] = 'Titolo de 3-a nivelo';
-$lang['qb_h4'] = 'Titolo de 4-a nivelo';
-$lang['qb_h5'] = 'Titolo de 5-a nivelo';
-$lang['qb_link'] = 'Interna ligilo';
-$lang['qb_extlink'] = 'Ekstera ligilo';
-$lang['qb_hr'] = 'Horizontala streko';
-$lang['qb_ol'] = 'Elemento de numerita listo';
-$lang['qb_ul'] = 'Elemento de ne numerita listo';
-$lang['qb_media'] = 'Aldoni bildojn kaj aliajn dosierojn';
-$lang['qb_sig'] = 'Inkluzivi subskribon';
-$lang['qb_smileys'] = 'Ridetuloj';
-$lang['qb_chars'] = 'Specialaj signaĵoj';
-$lang['del_confirm'] = 'Äu vere forigi elektitajn ero(j)n?';
-$lang['admin_register'] = 'Aldoni novan uzulon';
-$lang['metaedit'] = 'Redakti metadatenaron';
-$lang['metasaveerr'] = 'La konservo de metadatenaro malsukcesis';
-$lang['metasaveok'] = 'La metadatenaron estis konservita';
-$lang['img_backto'] = 'Retroiri al';
-$lang['img_title'] = 'Titolo';
-$lang['img_caption'] = 'Priskribo';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'Dosiernomo';
-$lang['img_fsize'] = 'Grandeco';
-$lang['img_artist'] = 'Fotisto';
-$lang['img_copyr'] = 'Kopirajtoj';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Kamerao';
-$lang['img_keywords'] = 'Äefvortoj';
-$lang['subscribe_success'] = '%s estis aldonita al dissendolisto por %s';
-$lang['subscribe_error'] = 'Estas eraro je aldono de %s al dissendolisto por %s';
-$lang['subscribe_noaddress'] = 'Estas neniu retadreso asociita al via identiÄ-nomo, do vi ne povas esti aldonata al la dissendolisto.';
-$lang['unsubscribe_success'] = '%s estas forigita de la dissendolisto por %s';
-$lang['unsubscribe_error'] = 'Estas eraro je forigo de %s el dissendolisto por %s';
-$lang['authmodfailed'] = 'Malbona agordo por identigi la uzulon. Bonvolu informi la administranton de la vikio.';
-$lang['authtempfail'] = 'La identigo de via uzulnomo estas intertempe maldisponebla. Se tiu Äi situacio daÅros, bonvolu informi al la adminstranto de la vikio.';
-$lang['i_chooselang'] = 'Elektu vian lingvon';
-$lang['i_installer'] = 'Instalilo de DokuWiki';
-$lang['i_wikiname'] = 'Nomo de la vikio';
-$lang['i_enableacl'] = 'Ebligi "ACL" (rekomendinde)';
-$lang['i_superuser'] = 'Superuzulo';
-$lang['i_problems'] = 'La instalilo trovis kelkajn problemojn, indikitaj sube. Vi ne povas pluiri Äis ili estu iel korektitaj.';
-$lang['i_modified'] = 'Por sekureco tiu Äi instalilo nur funkcias por nova kaj nemodifita Dokuwiki-pakaĵo.
-Vi devas aÅ redemeti la dosierojn el la elÅutita pakaĵo aÅ plibone informiÄi pri la instalada procezo.';
-$lang['i_funcna'] = 'La PHP-a funkcio <code>%s</code> ne estas uzebla. Eble via retprovizanto ial malpermesis tion, Äu ne?';
-$lang['i_phpver'] = 'La versio de la PHP <code>%s</code> estas pli malnova ol la bezonata <code>%s</code>. Vi bezonas Äisdatigi la PHP-an instalon.';
-$lang['i_permfail'] = '<code>%s</code> ne estas skribebla por DokuWiki. Vi devas redifini la permes-atributojn de tiu Äi dosierujo!';
-$lang['i_confexists'] = '<code>%s</code> jam ekzistas';
-$lang['i_writeerr'] = 'Ne eblas krei "<code>%s</code>"-on. Vi bezonas kontroli la permesojn de la dosir(uj)oj kaj mem krej la dosieron.';
-$lang['i_badhash'] = 'dokuwiki.php ne estas rekonebla aÅ Äi estas modifita (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - malvalida aÅ malplena valoro';
-$lang['i_success'] = 'La agordado estas sukcese kompletita. Vi povas forigi la dosieron nun. Pluiru al <a href="doku.php">via nova DokuWiki</a>.';
-$lang['i_failure'] = 'Kelkaj eraroj okazis dum la konservo de la agordaj dosieroj. Vi devas senpere korekti ilin antaÅ ol vi povos uzi <a href="doku.php">vian novan DokuWiki-on</a>. ';
-$lang['i_policy'] = 'Apriora ACL-a agordo';
-$lang['i_pol0'] = 'Malferma Vikio (legi, skribi, alÅuti povas Äiuj)';
-$lang['i_pol1'] = 'Publika Vikio (legi povas Äiuj, skribi kaj alÅuti povas registritaj uzuloj)';
-$lang['i_pol2'] = 'Ferma Vikio (legi, skribi, alÅuti nur povas registritaj uzuloj)';
-$lang['i_retry'] = 'Reprovi';
+<?php
+/**
+ * Esperanta dosiero
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Antono Vasiljev <esperanto.minsk ÄE tut.by>
+ * @author Felipe Castro <fefcas CXE yahoo.com.br>
+ * @author Felipe Castro <fefcas at uol.com.br>
+ * @author Felipe Castro <fefcas at gmail.com>
+ * @author Felipe Castro <fefcas (cxe) gmail (punkto) com>
+ * @author Felipo Kastro <fefcas at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'maldekstre-dekstren';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Redakti la paÄon';
+$lang['btn_source'] = 'Montri fontan tekston';
+$lang['btn_show'] = 'Montri paÄon';
+$lang['btn_create'] = 'Krei paÄon';
+$lang['btn_search'] = 'SerÄi';
+$lang['btn_save'] = 'Konservi';
+$lang['btn_preview'] = 'AntaÅrigardi';
+$lang['btn_top'] = 'Supren';
+$lang['btn_newer'] = '<< pli freÅe';
+$lang['btn_older'] = 'malpli freÅe >>';
+$lang['btn_revs'] = 'PaÄaj revizioj';
+$lang['btn_recent'] = 'Vikiaj modifoj';
+$lang['btn_upload'] = 'AlÅuti';
+$lang['btn_cancel'] = 'Rezigni';
+$lang['btn_index'] = 'Enhavo';
+$lang['btn_secedit'] = 'Redakti';
+$lang['btn_login'] = 'Ensaluti';
+$lang['btn_logout'] = 'Elsaluti';
+$lang['btn_admin'] = 'Administri';
+$lang['btn_update'] = 'Äisdatigi';
+$lang['btn_delete'] = 'Forigi';
+$lang['btn_back'] = 'Retroiri';
+$lang['btn_backlink'] = 'Retroligoj';
+$lang['btn_backtomedia'] = 'Retroiri al elekto de dosiero';
+$lang['btn_subscribe'] = 'AliÄi al PaÄaj Modifoj';
+$lang['btn_unsubscribe'] = 'MalaliÄi al PaÄaj Modifoj';
+$lang['btn_subscribens'] = 'AliÄi al Nomspacaj Modifoj';
+$lang['btn_unsubscribens'] = 'MalaliÄi al Nomspacaj Modifoj';
+$lang['btn_profile'] = 'Äisdatigi profilon';
+$lang['btn_reset'] = 'Rekomencigi';
+$lang['btn_resendpwd'] = 'Sendi novan pasvorton';
+$lang['btn_draft'] = 'Redakti skizon';
+$lang['btn_recover'] = 'Restarigi skizon';
+$lang['btn_draftdel'] = 'Forigi skizon';
+$lang['loggedinas'] = 'Ensalutita kiel';
+$lang['user'] = 'Uzulnomo';
+$lang['pass'] = 'Pasvorto';
+$lang['newpass'] = 'Nova pasvorto';
+$lang['oldpass'] = 'Konfirmu validantan pasvorton';
+$lang['passchk'] = 'pli unu fojo';
+$lang['remember'] = 'Memoru min';
+$lang['fullname'] = 'Plena nomo';
+$lang['email'] = 'RetpoÅto';
+$lang['register'] = 'Registro';
+$lang['profile'] = 'Profilo de uzulo';
+$lang['badlogin'] = 'Pardonu, uzulnomo aÅ pasvorto estis erara.';
+$lang['minoredit'] = 'Etaj Modifetoj';
+$lang['draftdate'] = 'Lasta konservo de la skizo:';
+$lang['regmissing'] = 'Pardonu, vi devas plenigi Äiujn kampojn.';
+$lang['reguexists'] = 'Pardonu, Äi tiu uzulnomo jam estas okupita.';
+$lang['regsuccess'] = 'La uzulo estas kreita kaj la pasvorto estas elsendita al via retpoÅto.';
+$lang['regsuccess2'] = 'La uzulo estas kreita.';
+$lang['regmailfail'] = 'Åajne okazis eraro dum elsendo de la pasvorto. Bonvole informu administranton pri tio!';
+$lang['regbadmail'] = 'Entajpita retpoÅta adreso ne Åajnas valida. Se vi pensas, ke estas eraro, kontaktu la administranto.';
+$lang['regbadpass'] = 'La du pasvortoj ne interegalas, bonvolu provi refoje.';
+$lang['regpwmail'] = 'Via pasvorto';
+$lang['reghere'] = 'Se vi ne havas konton, do vi povos akiri Äin';
+$lang['profna'] = 'Tiu Äi vikio ne ebligas modifon en la profiloj.';
+$lang['profnochange'] = 'Neniu ÅanÄo, nenio farinda.';
+$lang['profnoempty'] = 'Malplena nomo aÅ retadreso ne estas permesataj.';
+$lang['profchanged'] = 'La profilo de la uzulo estas sukcese Äisdatigita.';
+$lang['pwdforget'] = 'Äu vi forgesis vian pasvorton? Prenu novan';
+$lang['resendna'] = 'Tiu Äi vikio ne ebligas resendon de la pasvortoj.';
+$lang['resendpwd'] = 'Sendi novan pasvorton al';
+$lang['resendpwdmissing'] = 'Pardonu, vi devas plenigi Äiujn kampojn.';
+$lang['resendpwdnouser'] = 'Pardonu, ni ne trovas tiun uzulon en nia datenbazo.';
+$lang['resendpwdbadauth'] = 'Pardonu, tiu "aÅtentikiga kodo" ne validas. CertiÄu, ke vi uzis la kompletan konfirmigan ligilon.';
+$lang['resendpwdconfirm'] = 'Konfirmiga ligilo estas sendita per retpoÅto.';
+$lang['resendpwdsuccess'] = 'Via nova pasvorto estas sendita per retpoÅto.';
+$lang['txt_upload'] = 'Elektu dosieron por alÅuto';
+$lang['txt_filename'] = 'AlÅuti kiel (laÅvole)';
+$lang['txt_overwrt'] = 'AnstataÅigi ekzistantan dosieron';
+$lang['lockedby'] = 'Äimomente estas Ålosita';
+$lang['lockexpire'] = 'Åloso Äesos en';
+$lang['willexpire'] = 'Vi povos redakti Äi tiun paÄon post unu minuto.\nSe vi volas nuligi horloÄon de la Ålosado, do premu butonon "AntaÅrigardi".';
+$lang['notsavedyet'] = 'Ne konservitaj modifoj perdiÄos.\nÄu vi certe volas daÅrigi la procezon?';
+$lang['rssfailed'] = 'Okazis eraro dum ricevado de la novaĵ-strio: ';
+$lang['nothingfound'] = 'AnkoraÅ nenio troviÄas tie Äi.';
+$lang['mediaselect'] = 'Elekto de aÅdvidaĵa dosiero';
+$lang['fileupload'] = 'AlÅuto de aÅdvidaĵa dosiero';
+$lang['uploadsucc'] = 'AlÅuto estis sukcesa';
+$lang['uploadfail'] = 'AlÅuto estis malsukcesa. Eble Äu estas problemoj pro permes-atributoj?';
+$lang['uploadwrong'] = 'Rifuzita alÅuto. Tiu Äi dosiersufikso estas malpermesata!';
+$lang['uploadexist'] = 'La dosiero jam ekzistas. Nenio estas farita.';
+$lang['uploadbadcontent'] = 'La alÅutita enhavo ne kongruas al la sufikso %s.';
+$lang['uploadspam'] = 'La alÅutaĵo estis blokita de kontraÅspama vortlisto.';
+$lang['uploadxss'] = 'La alÅutajo estis blokita pro ebla malica enhavo.';
+$lang['deletesucc'] = 'La dosiero "%s" estas forigita.';
+$lang['deletefail'] = '"%s" ne povis esti forigita - kontrolu permes-atributojn.';
+$lang['mediainuse'] = 'La dosiero "%s" ne estis forigita - Äi ankoraÅ estas uzata.';
+$lang['namespaces'] = 'Nomspacoj';
+$lang['mediafiles'] = 'Disponeblaj dosieroj';
+$lang['js']['keepopen'] = 'Tenu la fenestron malfermata dum elekto';
+$lang['js']['hidedetails'] = 'KaÅi detalojn';
+$lang['mediausage'] = 'Uzu la jenan sintakson por referenci tiun Äi dosieron:';
+$lang['mediaview'] = 'Rigardi originalan dosieron';
+$lang['mediaroot'] = 'Äefo (root)';
+$lang['mediaupload'] = 'AlÅutu dosieron al la kuranta nomspaco tie Äi. Por krei subnomspacojn, antaÅmetu ilin al via "AlÅuti kiel" dosiernomo, apartigante per dupunktoj (:).';
+$lang['mediaextchange'] = 'La dosiersufikso ÅanÄis de .%s al .%s!';
+$lang['reference'] = 'Referencoj por';
+$lang['ref_inuse'] = 'La dosiero ne povas esti forigita, Äar Äi ankoraÅ estas uzata de la jenaj paÄoj:';
+$lang['ref_hidden'] = 'Kelkaj referencoj estas en paÄoj, kiujn vi ne rajtas legi';
+$lang['hits'] = 'Kongruoj';
+$lang['quickhits'] = 'Kongruoj trovitaj en paÄnomoj';
+$lang['toc'] = 'Enhavtabelo';
+$lang['current'] = 'aktuala';
+$lang['yours'] = 'Via Versio';
+$lang['diff'] = 'Montri diferencojn el la kuranta versio';
+$lang['diff2'] = 'Montri diferencojn inter elektitaj revisioj';
+$lang['line'] = 'Linio';
+$lang['breadcrumb'] = 'Historio';
+$lang['youarehere'] = 'Via pado';
+$lang['lastmod'] = 'Lastaj ÅanÄoj';
+$lang['by'] = 'de';
+$lang['deleted'] = 'forigita';
+$lang['created'] = 'kreita';
+$lang['restored'] = 'malnova revizio restarigita';
+$lang['external_edit'] = 'ekstera redakto';
+$lang['summary'] = 'Bulteno de ÅanÄoj';
+$lang['mail_newpage'] = 'paÄo aldonita:';
+$lang['mail_changed'] = 'paÄo modifita:';
+$lang['mail_new_user'] = 'Nova uzulo:';
+$lang['mail_upload'] = 'dosiero alÅutita:';
+$lang['nosmblinks'] = 'Tio Äi nur funkcias en la VindozaÄa "Microsoft Internet Explorer".\nVi ankoraÅ povas kopii kaj almeti la ligilon.';
+$lang['qb_alert'] = 'Bonvolu enskribi formatotan tekston.\nÄi estos aldonita Äe la fino de la dokumento.';
+$lang['qb_bold'] = 'Dika Teksto';
+$lang['qb_italic'] = 'Dekliva Teksto';
+$lang['qb_underl'] = 'Substrekita Teksto';
+$lang['qb_code'] = 'Koduma Teksto';
+$lang['qb_strike'] = 'Trastrekita Teksto';
+$lang['qb_h1'] = 'Titolo de 1-a nivelo';
+$lang['qb_h2'] = 'Titolo de 2-a nivelo';
+$lang['qb_h3'] = 'Titolo de 3-a nivelo';
+$lang['qb_h4'] = 'Titolo de 4-a nivelo';
+$lang['qb_h5'] = 'Titolo de 5-a nivelo';
+$lang['qb_link'] = 'Interna ligilo';
+$lang['qb_extlink'] = 'Ekstera ligilo';
+$lang['qb_hr'] = 'Horizontala streko';
+$lang['qb_ol'] = 'Elemento de numerita listo';
+$lang['qb_ul'] = 'Elemento de ne numerita listo';
+$lang['qb_media'] = 'Aldoni bildojn kaj aliajn dosierojn';
+$lang['qb_sig'] = 'Inkluzivi subskribon';
+$lang['qb_smileys'] = 'Ridetuloj';
+$lang['qb_chars'] = 'Specialaj signaĵoj';
+$lang['del_confirm'] = 'Äu vere forigi elektitajn ero(j)n?';
+$lang['admin_register'] = 'Aldoni novan uzulon';
+$lang['metaedit'] = 'Redakti metadatenaron';
+$lang['metasaveerr'] = 'La konservo de metadatenaro malsukcesis';
+$lang['metasaveok'] = 'La metadatenaron estis konservita';
+$lang['img_backto'] = 'Retroiri al';
+$lang['img_title'] = 'Titolo';
+$lang['img_caption'] = 'Priskribo';
+$lang['img_date'] = 'Dato';
+$lang['img_fname'] = 'Dosiernomo';
+$lang['img_fsize'] = 'Grandeco';
+$lang['img_artist'] = 'Fotisto';
+$lang['img_copyr'] = 'Kopirajtoj';
+$lang['img_format'] = 'Formato';
+$lang['img_camera'] = 'Kamerao';
+$lang['img_keywords'] = 'Äefvortoj';
+$lang['subscribe_success'] = '%s estis aldonita al dissendolisto por %s';
+$lang['subscribe_error'] = 'Estas eraro je aldono de %s al dissendolisto por %s';
+$lang['subscribe_noaddress'] = 'Estas neniu retadreso asociita al via identiÄ-nomo, do vi ne povas esti aldonata al la dissendolisto.';
+$lang['unsubscribe_success'] = '%s estas forigita de la dissendolisto por %s';
+$lang['unsubscribe_error'] = 'Estas eraro je forigo de %s el dissendolisto por %s';
+$lang['authmodfailed'] = 'Malbona agordo por identigi la uzulon. Bonvolu informi la administranton de la vikio.';
+$lang['authtempfail'] = 'La identigo de via uzulnomo estas intertempe maldisponebla. Se tiu Äi situacio daÅros, bonvolu informi al la adminstranto de la vikio.';
+$lang['i_chooselang'] = 'Elektu vian lingvon';
+$lang['i_installer'] = 'Instalilo de DokuWiki';
+$lang['i_wikiname'] = 'Nomo de la vikio';
+$lang['i_enableacl'] = 'Ebligi "ACL" (rekomendinde)';
+$lang['i_superuser'] = 'Superuzulo';
+$lang['i_problems'] = 'La instalilo trovis kelkajn problemojn, indikitaj sube. Vi ne povas pluiri Äis ili estu iel korektitaj.';
+$lang['i_modified'] = 'Por sekureco tiu Äi instalilo nur funkcias por nova kaj nemodifita Dokuwiki-pakaĵo.
+Vi devas aÅ redemeti la dosierojn el la elÅutita pakaĵo aÅ plibone informiÄi pri la instalada procezo.';
+$lang['i_funcna'] = 'La PHP-a funkcio <code>%s</code> ne estas uzebla. Eble via retprovizanto ial malpermesis tion, Äu ne?';
+$lang['i_phpver'] = 'La versio de la PHP <code>%s</code> estas pli malnova ol la bezonata <code>%s</code>. Vi bezonas Äisdatigi la PHP-an instalon.';
+$lang['i_permfail'] = '<code>%s</code> ne estas skribebla por DokuWiki. Vi devas redifini la permes-atributojn de tiu Äi dosierujo!';
+$lang['i_confexists'] = '<code>%s</code> jam ekzistas';
+$lang['i_writeerr'] = 'Ne eblas krei "<code>%s</code>"-on. Vi bezonas kontroli la permesojn de la dosir(uj)oj kaj mem krej la dosieron.';
+$lang['i_badhash'] = 'dokuwiki.php ne estas rekonebla aÅ Äi estas modifita (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - malvalida aÅ malplena valoro';
+$lang['i_success'] = 'La agordado estas sukcese kompletita. Vi povas forigi la dosieron nun. Pluiru al <a href="doku.php">via nova DokuWiki</a>.';
+$lang['i_failure'] = 'Kelkaj eraroj okazis dum la konservo de la agordaj dosieroj. Vi devas senpere korekti ilin antaÅ ol vi povos uzi <a href="doku.php">vian novan DokuWiki-on</a>. ';
+$lang['i_policy'] = 'Apriora ACL-a agordo';
+$lang['i_pol0'] = 'Malferma Vikio (legi, skribi, alÅuti povas Äiuj)';
+$lang['i_pol1'] = 'Publika Vikio (legi povas Äiuj, skribi kaj alÅuti povas registritaj uzuloj)';
+$lang['i_pol2'] = 'Ferma Vikio (legi, skribi, alÅuti nur povas registritaj uzuloj)';
+$lang['i_retry'] = 'Reprovi';
Modified: site/trunk/www-root/wiki/inc/lang/eo/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== La paÄo estas Ålosita ======
-
-Tiu paÄo nun estas blokita pro redaktado de iu alia uzanto.
+====== La paÄo estas Ålosita ======
+
+Tiu paÄo nun estas blokita pro redaktado de iu alia uzanto.
Bonvole atendu ke Åi/li finu redakti aÅ ke la Ålosada tempolimo finiÄu.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Enirejo ======
-
-Vi ankoraÅ ne edentiÄis! Entajpu necesajn informojn sube por identiÄi.
-Memoriloj (cookies) devas esti Åaltitaj.
-
+====== Enirejo ======
+
+Vi ankoraÅ ne edentiÄis! Entajpu necesajn informojn sube por identiÄi.
+Memoriloj (cookies) devas esti Åaltitaj.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-PaÄo en via DokuVikio estis ÅanÄita aÅ aldonita. Jen detaloj:
-
-Dato: @DATE@
-Foliumilo: @BROWSER@
-IP-adreso: @IPADDRESS@
-RetNodo: @HOSTNAME@
-AntaÅa revizio: @OLDPAGE@
-Nova revizio: @NEWPAGE@
-Bulteno de ÅanÄoj: @SUMMARY@
-Uzulo: @USER@
-
- at DIFF@
-
---
-Tiu Äi mesaÄo estis kreata de DokuWiki, kiu lokiÄas tie:
- at DOKUWIKIURL@
+PaÄo en via DokuVikio estis ÅanÄita aÅ aldonita. Jen detaloj:
+
+Dato: @DATE@
+Foliumilo: @BROWSER@
+IP-adreso: @IPADDRESS@
+RetNodo: @HOSTNAME@
+AntaÅa revizio: @OLDPAGE@
+Nova revizio: @NEWPAGE@
+Bulteno de ÅanÄoj: @SUMMARY@
+Uzulo: @USER@
+
+ at DIFF@
+
+--
+Tiu Äi mesaÄo estis kreata de DokuWiki, kiu lokiÄas tie:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/eo/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Äi tiu paÄo ankoraÅ ne ekzistas ======
-
-Vi sekvis ligilon, kiu kondukas al artikolo ankoraÅ ne ekzistanta. Se vi rajtas, tiel vi povas krei tiun Äi paÄon ekpremante la butonon ''"Krei paÄon"''.
-
+====== Äi tiu paÄo ankoraÅ ne ekzistas ======
+
+Vi sekvis ligilon, kiu kondukas al artikolo ankoraÅ ne ekzistanta. Se vi rajtas, tiel vi povas krei tiun Äi paÄon ekpremante la butonon ''"Krei paÄon"''.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Tia revizio ne ekzistas ======
-
+====== Tia revizio ne ekzistas ======
+
La elektita revizio ne ekzistas. Premu butonon ''"Malnovaj revizioj"'', por vidi liston de malnovaj revizioj de la dokumento.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Saluton @FULLNAME@!
-
-Jen via uzuldatenoj por @TITLE@ Äe @DOKUWIKIURL@
-
-Ensalutnomo : @LOGIN@
-Pasvorto : @PASSWORD@
-
---
-Tiu Äi mesaÄo estis kreata de DokuWiki Äe
- at DOKUWIKIURL@
+Saluton @FULLNAME@!
+
+Jen via uzuldatenoj por @TITLE@ Äe @DOKUWIKIURL@
+
+Ensalutnomo : @LOGIN@
+Pasvorto : @PASSWORD@
+
+--
+Tiu Äi mesaÄo estis kreata de DokuWiki Äe
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/eo/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== AntaÅrigardo ======
-
-Tiu Äi estas antaÅrigardo pri kia estos via teksto.
-Memoru: Äi ankoraÅ **ne estas konservita**!
-
+====== AntaÅrigardo ======
+
+Tiu Äi estas antaÅrigardo pri kia estos via teksto.
+Memoru: Äi ankoraÅ **ne estas konservita**!
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Saluton @FULLNAME@!
-
-Iu petis novan pasvorton por via @TITLE@
-ensalutnomo Äe @DOKUWIKIURL@
-
-Se ne estas vi, kiu petis tion, do preterlasu tiun Äi mesaÄon.
-
-Por konfirmi, ke la peto estis vere via, bonvolu musklaki en la jena ligilo.
-
- at CONFIRM@
-
---
-Tiu Äi mesaÄo estis kreata de DokuWiki Äe
+Saluton @FULLNAME@!
+
+Iu petis novan pasvorton por via @TITLE@
+ensalutnomo Äe @DOKUWIKIURL@
+
+Se ne estas vi, kiu petis tion, do preterlasu tiun Äi mesaÄon.
+
+Por konfirmi, ke la peto estis vere via, bonvolu musklaki en la jena ligilo.
+
+ at CONFIRM@
+
+--
+Tiu Äi mesaÄo estis kreata de DokuWiki Äe
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Tiu Äi paÄo estas disponigata nur por legado (vi ne povas redakti Äin).
-Sciigu administranton, se vi opinias ke tio estas ne Äusta malpermeso.
-
+Tiu Äi paÄo estas disponigata nur por legado (vi ne povas redakti Äin).
+Sciigu administranton, se vi opinias ke tio estas ne Äusta malpermeso.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== FreÅaj ÅanÄoj ======
-
-La jenaj paÄoj estis ÅanÄataj antaÅ malmulta tempo.
-
+====== FreÅaj ÅanÄoj ======
+
+La jenaj paÄoj estis ÅanÄataj antaÅ malmulta tempo.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== RegistriÄi ======
-
-Entajpu necesajn informojn por enregistriÄi. CertiÄu ke via retpoÅta adreso
-estas vera Äar ni sendos al Äi vian pasvorton.
-
+====== RegistriÄi ======
+
+Entajpu necesajn informojn por enregistriÄi. CertiÄu ke via retpoÅta adreso
+estas vera Äar ni sendos al Äi vian pasvorton.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Nova uzulo estis registrata. Jen la detaloj:
-
-Uzulnomo: @NEWUSER@
-Kompleta nomo: @NEWNAME@
-Retadreso: @NEWEMAIL@
-
-Dato: @DATE@
-Foliumilo: @BROWSER@
-IP-Adreso: @IPADDRESS@
-Provizanto: @HOSTNAME@
-
---
-Tiu Äi mesaÄo estis kreata de DokuWiki Äe
+Nova uzulo estis registrata. Jen la detaloj:
+
+Uzulnomo: @NEWUSER@
+Kompleta nomo: @NEWNAME@
+Retadreso: @NEWEMAIL@
+
+Dato: @DATE@
+Foliumilo: @BROWSER@
+IP-Adreso: @IPADDRESS@
+Provizanto: @HOSTNAME@
+
+--
+Tiu Äi mesaÄo estis kreata de DokuWiki Äe
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Sendi novan pasvorton ======
-
-Bonvolu meti vian uzulnomon en la suba formularo petante novan pasvorton por
-via aliÄo en tiu Äi vikio. Konfirma ligilo estos sendata al via registrita
-retadreso.
-
+====== Sendi novan pasvorton ======
+
+Bonvolu meti vian uzulnomon en la suba formularo petante novan pasvorton por
+via aliÄo en tiu Äi vikio. Konfirma ligilo estos sendata al via registrita
+retadreso.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Malnovaj revizioj ======
-
+====== Malnovaj revizioj ======
+
Sube estas listo de malnovaj revizioj de la dokumento. Elektu revizion se vi volas rigardi Äin aÅ anstataÅigi kurantan paÄon per Äi.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== SerÄo ======
-
-Sube estas rezultoj de serÄo en la retejo.\\
-Se vi ne trovis tion, kion vi serÄis, vi povas krei novan paÄon kun necesa nomo.
-
-===== Rezultoj =====
+====== SerÄo ======
+
+Sube estas rezultoj de serÄo en la retejo.\\
+Se vi ne trovis tion, kion vi serÄis, vi povas krei novan paÄon kun necesa nomo.
+
+===== Rezultoj =====
Modified: site/trunk/www-root/wiki/inc/lang/eo/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Tiu estas malnova revizio de la dokumento**. Klaku sur titolo por ricevi kurantan version.
-----
+**Tiu estas malnova revizio de la dokumento**. Klaku sur titolo por ricevi kurantan version.
+----
Modified: site/trunk/www-root/wiki/inc/lang/eo/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,19 +1,19 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-pri
-estas
-kaj
-via
-ili
-ilia
-kun
-por
-kiel
-tiu
-estis
-kio
-kiam
-kie
-kiu
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+pri
+estas
+kaj
+via
+ili
+ilia
+kun
+por
+kiel
+tiu
+estis
+kio
+kiam
+kie
+kiu
www
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Saluton!
-
-La retpaÄo @PAGE@ en la vikio @TITLE@ ÅanÄis. Jen la ÅanÄoj:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Por malaliÄi el tiu Äi paÄo, ensalutu en la vikio Äe @DOKUWIKIURL@ kaj aliru @NEWPAGE@ kaj elektu 'MalaliÄi el avizoj pri ÅanÄoj'.
-
---
-Tiu Äi mesaÄo estis kreata de DokuWiki Äe
- at DOKUWIKIURL@
+Saluton!
+
+La retpaÄo @PAGE@ en la vikio @TITLE@ ÅanÄis. Jen la ÅanÄoj:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Por malaliÄi el tiu Äi paÄo, ensalutu en la vikio Äe @DOKUWIKIURL@ kaj aliru @NEWPAGE@ kaj elektu 'MalaliÄi el avizoj pri ÅanÄoj'.
+
+--
+Tiu Äi mesaÄo estis kreata de DokuWiki Äe
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/eo/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Äisdatigi vian profilon ======
-
-Vi nur bezonas kompletigi tiujn kampojn, kiujn vi deziras ÅanÄi.
-Vi ne povas ÅanÄi vian uzulnomon.
-
+====== Äisdatigi vian profilon ======
+
+Vi nur bezonas kompletigi tiujn kampojn, kiujn vi deziras ÅanÄi.
+Vi ne povas ÅanÄi vian uzulnomon.
+
Modified: site/trunk/www-root/wiki/inc/lang/eo/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Dosiero estis alÅutita al via DokuVikio. Jen detaloj:
-
-Dosiero: @MEDIA@
-Dato: @DATE@
-Foliumilo: @BROWSER@
-IP-Adreso: @IPADDRESS@
-Ret-nodo: @HOSTNAME@
-Gradeco: @SIZE@
-Dosier-tipo: @MIME@
-Uzulo: @USER@
-
---
-Tiu Äi mesaÄo estis kreata de DokuWiki Äe
+Dosiero estis alÅutita al via DokuVikio. Jen detaloj:
+
+Dosiero: @MEDIA@
+Dato: @DATE@
+Foliumilo: @BROWSER@
+IP-Adreso: @IPADDRESS@
+Ret-nodo: @HOSTNAME@
+Gradeco: @SIZE@
+Dosier-tipo: @MIME@
+Uzulo: @USER@
+
+--
+Tiu Äi mesaÄo estis kreata de DokuWiki Äe
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/eo/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eo/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eo/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== SPAMO estis blokita ======
-
-Viaj redaktoj ne estas konservitaj, Äar en la teksto estis trovitaj unu aÅ
-kelkaj malpermesindaj vortoj, Åajnante spamo. Se vi pensas, ke tio estas eraro, bonvolu kontakti la administranton de la vikio.
-
+====== SPAMO estis blokita ======
+
+Viaj redaktoj ne estas konservitaj, Äar en la teksto estis trovitaj unu aÅ
+kelkaj malpermesindaj vortoj, Åajnante spamo. Se vi pensas, ke tio estas eraro, bonvolu kontakti la administranton de la vikio.
+
Modified: site/trunk/www-root/wiki/inc/lang/es/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administración ======
-
-Abajo puedes encontrar una lista de las tareas de administración
-disponibles en Dokuwiki.
+====== Administración ======
+
+Abajo puedes encontrar una lista de las tareas de administración
+disponibles en Dokuwiki.
Modified: site/trunk/www-root/wiki/inc/lang/es/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Referencias ======
-
-Esta lista contiene páginas que hacen referencia a la actual.
-
+====== Referencias ======
+
+Esta lista contiene páginas que hacen referencia a la actual.
+
Modified: site/trunk/www-root/wiki/inc/lang/es/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Existe una versión más reciente ======
-
-Existe una versión más reciente del documento que has editado. Esto sucede cuando otro usuario ha modificado el documento mientras lo estabas editando.
-
+====== Existe una versión más reciente ======
+
+Existe una versión más reciente del documento que has editado. Esto sucede cuando otro usuario ha modificado el documento mientras lo estabas editando.
+
Examina las diferencias mostradas abajo a fondo, y decide entonces cual conservar. Si eliges ''Guardar'', tu versión será guardada. Si eliges ''Cancelar'' se guardará la actual versión.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Permiso Denegado ======
-
+====== Permiso Denegado ======
+
Lo siento, no tienes suficientes permisos para continuar. ¿Quizás has olvidado identificarte?
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Diferencias======
-
-Muestra las diferencias entre la revision seleccionada y la
-versión actual de esta página.
-
+======Diferencias======
+
+Muestra las diferencias entre la revision seleccionada y la
+versión actual de esta página.
+
Modified: site/trunk/www-root/wiki/inc/lang/es/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Fichero borrador encontrado ======
-
-Su última sesión de edición en esta página no se completó correctamente. Dokuwiki
-guardó automáticamente un borrador mientras usted trabajaba; puede utilizar
-el borrador para continuar editándolo. Abajo usted puede ver los datos
-que fueron guardados en su última sesión.
-
-Por favor decida si usted desea //recuperar// su sesión perdida, //eliminar//
-el borrador guardado automáticament o //cancelar// el proceso de edición.
-
+====== Fichero borrador encontrado ======
+
+Su última sesión de edición en esta página no se completó correctamente. Dokuwiki
+guardó automáticamente un borrador mientras usted trabajaba; puede utilizar
+el borrador para continuar editándolo. Abajo usted puede ver los datos
+que fueron guardados en su última sesión.
+
+Por favor decida si usted desea //recuperar// su sesión perdida, //eliminar//
+el borrador guardado automáticament o //cancelar// el proceso de edición.
+
Modified: site/trunk/www-root/wiki/inc/lang/es/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Edita la página y pulsa ''Guardar''. Mira [[wiki:syntax]] para
-sintaxis Wiki. Por favor edita la página solo si puedes **mejorarla**. Si quieres
-testear algunas cosas aprende a dar tus primeros pasos en el
-[[playground:playground]].
-
+Edita la página y pulsa ''Guardar''. Mira [[wiki:syntax]] para
+sintaxis Wiki. Por favor edita la página solo si puedes **mejorarla**. Si quieres
+testear algunas cosas aprende a dar tus primeros pasos en el
+[[playground:playground]].
+
Modified: site/trunk/www-root/wiki/inc/lang/es/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Has cargado una revisión vieja del documento!** Si la guardas crearás una versión actual nueva con estos datos.
+**Has cargado una revisión vieja del documento!** Si la guardas crearás una versión actual nueva con estos datos.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Indice ======
-
-Este es un Ãndice sobre todas las páginas disponibles ordenado por [[doku>wiki:namespaces|namespaces]].
-
+====== Indice ======
+
+Este es un Ãndice sobre todas las páginas disponibles ordenado por [[doku>wiki:namespaces|namespaces]].
+
Modified: site/trunk/www-root/wiki/inc/lang/es/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,26 +1,26 @@
-<p>Esta página lo asiste en la primera vez que instala y configura
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>.
-Más información sobre este instalador está disponible en la
-<a href="http://wiki.splitbrain.org/wiki:installer">página de documentación</a>.
-</p>
-
-<p>DokuWiki usa ficheros comunes para el almacenamiento de las páginas del wiki
-y otra información asociada a esas páginas (por ejemplo, imágenes, Ãndices de archivos,
-revisiones viejas, etc). Para funcionar correctamente DokuWiki <strong>debe</strong>
-tener permisos de escritura en los directorios que contienen esos ficheros. Este
-instalador no es capaz de establecer permisos en directorios. Normalmente eso
-debe ser hecho a través de una consola de comandos o si usted usa servicios de
-hosting a través de FTP o el panel de control brindado por su hosting (e.g. cPanel).</p>
-
-
-<p>Este instalador configurará una
-<acronym title="lista de control de acceso">ACL</acronym>, que a su vez permite el
-acceso al administrador y acceso a los menúes de administración para instalación
-de plugins, administración de usuarios, administración de permisos para las páginas
-wiki y modificación de la configuración. A pesar que no es necesario para que
-DokuWiki funcione, hará que sea más fácil la administración.</p>
-
-<p>Usuarios experimentados o usuarios con requerimientos especiales deben usar
-estos enlaces para detalles concernientes a
-<a href="http://wiki.splitbrain.org/wiki:install">instrucciones de instalación</a>
-y <a href="http://wiki.splitbrain.org/wiki:config">configuración</a>.</p>
+<p>Esta página lo asiste en la primera vez que instala y configura
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>.
+Más información sobre este instalador está disponible en la
+<a href="http://wiki.splitbrain.org/wiki:installer">página de documentación</a>.
+</p>
+
+<p>DokuWiki usa ficheros comunes para el almacenamiento de las páginas del wiki
+y otra información asociada a esas páginas (por ejemplo, imágenes, Ãndices de archivos,
+revisiones viejas, etc). Para funcionar correctamente DokuWiki <strong>debe</strong>
+tener permisos de escritura en los directorios que contienen esos ficheros. Este
+instalador no es capaz de establecer permisos en directorios. Normalmente eso
+debe ser hecho a través de una consola de comandos o si usted usa servicios de
+hosting a través de FTP o el panel de control brindado por su hosting (e.g. cPanel).</p>
+
+
+<p>Este instalador configurará una
+<acronym title="lista de control de acceso">ACL</acronym>, que a su vez permite el
+acceso al administrador y acceso a los menúes de administración para instalación
+de plugins, administración de usuarios, administración de permisos para las páginas
+wiki y modificación de la configuración. A pesar que no es necesario para que
+DokuWiki funcione, hará que sea más fácil la administración.</p>
+
+<p>Usuarios experimentados o usuarios con requerimientos especiales deben usar
+estos enlaces para detalles concernientes a
+<a href="http://wiki.splitbrain.org/wiki:install">instrucciones de instalación</a>
+y <a href="http://wiki.splitbrain.org/wiki:config">configuración</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/es/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,207 +1,210 @@
-<?php
-/**
- * spanish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Zigor Astarbe <zigor at astarbe.com>
- * @author Adrián Ariza <adrian_ariza.ciudad.com.ar>
- * @author Gabiel Molina <gabriel191 at gmail.com>
- * @author Paco Avila <monkiki at gmail.com>
- * @author Bernardo Arlandis Mañó <bernardo at tsolucio.com>
- * @author Miguel Pagano <miguel.pagano at gmail.com>
- * @author Oscar M. Lage <r0sk10 at gmail.com>
- * @author Gabriel Castillo <gch at pumas.ii.unam.mx>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Editar esta página';
-$lang['btn_source'] = 'Ver fuente';
-$lang['btn_show'] = 'Ver página';
-$lang['btn_create'] = 'Crear esta página';
-$lang['btn_search'] = 'Buscar';
-$lang['btn_save'] = 'Guardar';
-$lang['btn_preview'] = 'Previsualización';
-$lang['btn_top'] = 'Subir';
-$lang['btn_newer'] = '<< más reciente';
-$lang['btn_older'] = 'menos reciente >>';
-$lang['btn_revs'] = 'Revisiones anteriores';
-$lang['btn_recent'] = 'Cambios recientes';
-$lang['btn_upload'] = 'Cargar';
-$lang['btn_cancel'] = 'Cancelar';
-$lang['btn_index'] = 'Indice';
-$lang['btn_secedit'] = 'Editar';
-$lang['btn_login'] = 'Ingresar';
-$lang['btn_logout'] = 'Salir';
-$lang['btn_admin'] = 'Administrar';
-$lang['btn_update'] = 'Actualizar';
-$lang['btn_delete'] = 'Borrar';
-$lang['btn_back'] = 'Atrás';
-$lang['btn_backlink'] = 'Backlinks';
-$lang['btn_backtomedia'] = 'Vuelta a la selección de medios';
-$lang['btn_subscribe'] = 'Subscribirse a la notificación de cambios';
-$lang['btn_unsubscribe'] = 'Desubscribirse a la notificación de cambios';
-$lang['btn_profile'] = 'Actualizar datos del usuario';
-$lang['btn_reset'] = 'Deshacer cambios';
-$lang['btn_resendpwd'] = 'Enviar nueva contraseña';
-$lang['btn_draft'] = 'Editar borrador';
-$lang['btn_recover'] = 'Recuperar borrador';
-$lang['btn_draftdel'] = 'Borrar borrador';
-$lang['loggedinas'] = 'Conectado como ';
-$lang['user'] = 'Usuario';
-$lang['pass'] = 'Contraseña';
-$lang['newpass'] = 'Nueva contraseña';
-$lang['oldpass'] = 'Confirma tu contraseña actual';
-$lang['passchk'] = 'otra vez';
-$lang['remember'] = 'Recordarme';
-$lang['fullname'] = 'Nombre completo';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Registrarse';
-$lang['profile'] = 'Datos del usuario';
-$lang['badlogin'] = 'El usuario o contraseña ingresados son incorrectos.';
-$lang['minoredit'] = 'Cambios menores';
-$lang['draftdate'] = 'Borrador guardado automáticamente en';
-$lang['regmissing'] = 'Lo siento, tienes que completar todos los campos.';
-$lang['reguexists'] = 'Lo siento, el nombre de usuario ya existe.';
-$lang['regsuccess'] = 'El usuario ha sido creado. La contraseña se ha enviado por correo.';
-$lang['regsuccess2'] = 'El usuario ha sido creado.';
-$lang['regmailfail'] = 'Parece que ha habido un error al enviar el correo con la contraseña. ¡Por favor, ponte en contacto con el administrador del Wiki!';
-$lang['regbadmail'] = 'La dirección de correo no parece válida. Si piensas que esto es un error, ponte en contacto con el administrador del Wiki';
-$lang['regbadpass'] = 'Las dos contraseñas no son iguales, por favor inténtalo de nuevo.';
-$lang['regpwmail'] = 'Tu contraseña del DokuWiki';
-$lang['reghere'] = '¿No tienes cuenta todavÃa? Consigue una';
-$lang['profna'] = 'Este wiki no permite la modificación de datos de usuarios';
-$lang['profnochange'] = 'Sin cambios, nada que hacer.';
-$lang['profnoempty'] = 'No se permiten que el nombre o la dirección de correo electrónico estén vacios.';
-$lang['profchanged'] = 'Se actualizaron exitosamente los datos del usuario.';
-$lang['pwdforget'] = '¿Has olvidado tu contraseña? Consigue una nueva.';
-$lang['resendna'] = 'Este wiki no brinda la posibilidad de reenvÃo de contraseña.';
-$lang['resendpwd'] = 'Enviar una nueva contraseña para';
-$lang['resendpwdmissing'] = 'Lo siento, debes completar todos los campos.';
-$lang['resendpwdnouser'] = 'Lo siento, no se encuentra este usuario en nuestra base de datos.';
-$lang['resendpwdbadauth'] = 'Lo siento, este código de autenticación no es válido. Asegúrate de haber usado el enlace de confirmación entero.';
-$lang['resendpwdconfirm'] = 'Un enlace para confirmación ha sido enviado por correo electrónico.';
-$lang['resendpwdsuccess'] = 'Tu nueva contraseña ha sido enviada por correo electrónico.';
-$lang['txt_upload'] = 'Selecciona el fichero a cargar';
-$lang['txt_filename'] = 'Subir como (opcional)';
-$lang['txt_overwrt'] = 'Sobreescribe el fichero existente';
-$lang['lockedby'] = 'Actualmente bloqueado por';
-$lang['lockexpire'] = 'El bloqueo expira en';
-$lang['willexpire'] = 'Tu bloqueo para editar esta página expira en un minuto.\nPara evitar confictos usa el botón previsualizar para reiniciar el contador de tiempo.';
-$lang['notsavedyet'] = 'Hay cambios que no se han guardado que se perderán.\n¿Quieres continuar?';
-$lang['rssfailed'] = 'Se ha producido un error leyendo datos (feed): ';
-$lang['nothingfound'] = 'No se ha encontrado nada.';
-$lang['mediaselect'] = 'Selección de fichero';
-$lang['fileupload'] = 'Subida de fichero';
-$lang['uploadsucc'] = 'La subida del fichero ha sido satisfactoria';
-$lang['uploadfail'] = 'La subida del fichero ha fallado. ¿Permisos equivocados?';
-$lang['uploadwrong'] = 'Subida de fichero denegada. ¡Los ficheros con esta extensión están prohibidos!';
-$lang['uploadexist'] = 'El fichero ya existe. No se ha hecho nada.';
-$lang['uploadbadcontent'] = 'El contenido de la subida no coincide con la extensión de fichero %s';
-$lang['uploadspam'] = 'La subida ha sido bloqueada por una lista negra de spam';
-$lang['uploadxss'] = 'La subida ha sido bloqueada por contenido posiblemente malicioso';
-$lang['deletesucc'] = 'El fichero "%s" ha sido borrado.';
-$lang['deletefail'] = '"%s" no pudo ser borrado, verifique los permisos.';
-$lang['mediainuse'] = 'El fichero %s no ha sido borrado, aun está en uso.';
-$lang['namespaces'] = 'Espacios de nombres';
-$lang['mediafiles'] = 'Ficheros disponibles en';
-$lang['js']['keepopen'] = 'Mantener esta ventana abierta durante la selección';
-$lang['js']['hidedetails'] = 'Ocultar detalles';
-$lang['mediausage'] = 'Use la siguiente sintaxis para hacer referencia a este fichero:';
-$lang['mediaview'] = 'Ver el fichero original';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Subir aquà un fichero al espacio de nombres actual. Para crear sub-espacios de nombres, antepóngalos al nombre de fichero separándolos por dos puntos (:) en "Subir como".';
-$lang['mediaextchange'] = 'Extensión del fichero cambiada de .%s a .%s!';
-$lang['reference'] = 'Referencias para';
-$lang['ref_inuse'] = 'El fichero no ha podido ser borrado, porque se está usando en las siguientes páginas:';
-$lang['ref_hidden'] = 'Algunas referencias están en páginas en las que no tienes permisos para leer';
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Páginas que coinciden';
-$lang['toc'] = 'Tabla de Contenidos';
-$lang['current'] = 'actual';
-$lang['yours'] = 'Tu versión';
-$lang['diff'] = 'muestra diferencias a la versión actual';
-$lang['diff2'] = 'Muestra las diferencias entre las revisiones elegidas';
-$lang['line'] = 'LÃnea';
-$lang['breadcrumb'] = 'Traza';
-$lang['youarehere'] = 'Tu estás aquÃ';
-$lang['lastmod'] = 'Ãltima modificación';
-$lang['by'] = 'por';
-$lang['deleted'] = 'borrado';
-$lang['created'] = 'creado';
-$lang['restored'] = 'Se ha restaurado la vieja versión';
-$lang['external_edit'] = 'editor externo';
-$lang['summary'] = 'Edita el resumen';
-$lang['mail_newpage'] = 'página añadida:';
-$lang['mail_changed'] = 'página cambiada:';
-$lang['mail_new_user'] = 'Nuevo usuario:';
-$lang['mail_upload'] = 'archivo subido:';
-$lang['nosmblinks'] = 'Enlazar a recursos compartidos de Windows sólo funciona en Microsoft Internet Explorer.\nTu puedes copiar y pegar el enlace.';
-$lang['qb_alert'] = 'Por favor, pega el texto al que quieres dar formato.\n Será agregado al final del documento.';
-$lang['qb_bold'] = 'Texto Negrita';
-$lang['qb_italic'] = 'Texto Itálica';
-$lang['qb_underl'] = 'Texto Subrayado';
-$lang['qb_code'] = 'Texto de Código';
-$lang['qb_strike'] = 'Texto tachado';
-$lang['qb_h1'] = 'TÃtulo 1';
-$lang['qb_h2'] = 'TÃtulo 2';
-$lang['qb_h3'] = 'TÃtulo 3';
-$lang['qb_h4'] = 'TÃtulo 4';
-$lang['qb_h5'] = 'TÃtulo 5';
-$lang['qb_link'] = 'Enlace Interno';
-$lang['qb_extlink'] = 'Enlace Externo';
-$lang['qb_hr'] = 'LÃnea horizontal';
-$lang['qb_ol'] = 'Ãtem de Lista Ordenada';
-$lang['qb_ul'] = 'Ãtem de Lista Desordenada';
-$lang['qb_media'] = 'Añadir Imágenes u otros ficheros';
-$lang['qb_sig'] = 'Pon tu firma';
-$lang['qb_smileys'] = 'Sonrisas';
-$lang['qb_chars'] = 'Caracteres especiales';
-$lang['del_confirm'] = '¿Quieres realmente borrar los Ãtem seleccionados?';
-$lang['admin_register'] = 'Añadir nuevo usuario...';
-$lang['metaedit'] = 'Editar los metadatos';
-$lang['metasaveerr'] = 'La escritura de los metadatos ha fallado';
-$lang['metasaveok'] = 'Los metadatos han sido guardados.';
-$lang['img_backto'] = 'Volver a';
-$lang['img_title'] = 'TÃtulo';
-$lang['img_caption'] = 'EpÃgrafe';
-$lang['img_date'] = 'Fecha';
-$lang['img_fname'] = 'Nombre de fichero';
-$lang['img_fsize'] = 'Tamaño';
-$lang['img_artist'] = 'Fotógrafo/Artista';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Cámara';
-$lang['img_keywords'] = 'Palabras claves';
-$lang['subscribe_success'] = '%s ha sido agregado a la lista de notificación de cambios de %s';
-$lang['subscribe_error'] = 'Ha habido un error al agregar a %s a la lista de notificación de cambios de %s';
-$lang['subscribe_noaddress'] = 'No hay ninguna dirección de correo electrónico asociada con tu nombre de usuario, no puedes agregarte a la lista de notificación de cambios';
-$lang['unsubscribe_success'] = '%s ha sido eliminado a la lista de notificación de cambios de %s';
-$lang['unsubscribe_error'] = 'Ha habido un error al eliminar %s de la lista de notificación de cambios de %s';
-$lang['authmodfailed'] = 'Está mal configurada la autenticación de usuarios. Por favor, avisale al administrador del wiki.';
-$lang['authtempfail'] = 'La autenticación de usuarios no está disponible temporalmente. Si esta situación persiste, por favor, avisale al administrador del wiki.';
-$lang['i_chooselang'] = 'Elija su idioma';
-$lang['i_installer'] = 'Instalador de DokuWiki';
-$lang['i_wikiname'] = 'Nombre del Wiki';
-$lang['i_enableacl'] = 'Habilitar ACL (recomendado) (ACL: lista de control de acceso)';
-$lang['i_superuser'] = 'Super-usuario';
-$lang['i_problems'] = 'El instalador encontró algunos problemas, se muestran abajo. No se puede continuar la instalación hasta que usted no los corrija.';
-$lang['i_modified'] = 'Por razones de seguridad este script sólo funcionará con una instalación nueva y no modificada de Dokuwiki. Usted deberá o bien extraer nuevamente los ficheros del paquete bajado o bien consultar las <a href="http://wiki.splitbrain.org/wiki:install">instrucciones de instalación de Dokuwiki</a> completas.';
-$lang['i_funcna'] = 'La función de PHP <code>%s</code> no está disponible. Tal vez su proveedor de hosting la ha deshabilitado por alguna razón?';
-$lang['i_phpver'] = 'Su versión de PHP <code>%s</code> es menor que la necesaria <code>%s</code>. Es necesario que actualice su instalación de PHP.';
-$lang['i_permfail'] = '<code>%s</code> no es escribible por DokuWiki. Es necesario que usted establezca correctamente los permisos de este directorio!';
-$lang['i_confexists'] = '<code>%s</code> ya existe';
-$lang['i_writeerr'] = 'Imposible crear <code>%s</code>. Se necesita que usted controle los permisos del fichero/directorio y que cree el fichero manualmente.';
-$lang['i_badhash'] = 'dokuwiki.php no reconocido o modificado (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - ilegal o valor vacÃo';
-$lang['i_success'] = 'La configuración ha concluido exitosamente. Usted ahora puede eliminar el archivo install.php. Siga a su <a href="doku.php">nueva instalación de DokuWiki</a>.';
-$lang['i_failure'] = 'Han ocurrido algunos errores durante la escritura de los ficheros de configuración. Usted puede corregirlos manualmente antes de poder usar su <a href="doku.php">nueva instalación de DokuWiki</a>.';
-$lang['i_policy'] = 'PolÃtica de ACL inicial';
-$lang['i_pol0'] = 'Wiki abierta (leer, escribir y subir archivos para todos)';
-$lang['i_pol1'] = 'Wiki pública (leer para todos, escribir y subir archivos para usuarios registrados únicamente)';
-$lang['i_pol2'] = 'Wiki cerrada (leer, escribir y subir archivos para usuarios registrados únicamente)';
-$lang['i_retry'] = 'Reintentar';
+<?php
+/**
+ * spanish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Zigor Astarbe <zigor at astarbe.com>
+ * @author Adrián Ariza <adrian_ariza.ciudad.com.ar>
+ * @author Gabiel Molina <gabriel191 at gmail.com>
+ * @author Paco Avila <monkiki at gmail.com>
+ * @author Bernardo Arlandis Mañó <bernardo at tsolucio.com>
+ * @author Miguel Pagano <miguel.pagano at gmail.com>
+ * @author Oscar M. Lage <r0sk10 at gmail.com>
+ * @author Gabriel Castillo <gch at pumas.ii.unam.mx>
+ * @author oliver at samera.com.py
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Editar esta página';
+$lang['btn_source'] = 'Ver fuente';
+$lang['btn_show'] = 'Ver página';
+$lang['btn_create'] = 'Crear esta página';
+$lang['btn_search'] = 'Buscar';
+$lang['btn_save'] = 'Guardar';
+$lang['btn_preview'] = 'Previsualización';
+$lang['btn_top'] = 'Subir';
+$lang['btn_newer'] = '<< más reciente';
+$lang['btn_older'] = 'menos reciente >>';
+$lang['btn_revs'] = 'Revisiones anteriores';
+$lang['btn_recent'] = 'Cambios recientes';
+$lang['btn_upload'] = 'Cargar';
+$lang['btn_cancel'] = 'Cancelar';
+$lang['btn_index'] = 'Indice';
+$lang['btn_secedit'] = 'Editar';
+$lang['btn_login'] = 'Ingresar';
+$lang['btn_logout'] = 'Salir';
+$lang['btn_admin'] = 'Administrar';
+$lang['btn_update'] = 'Actualizar';
+$lang['btn_delete'] = 'Borrar';
+$lang['btn_back'] = 'Atrás';
+$lang['btn_backlink'] = 'Backlinks';
+$lang['btn_backtomedia'] = 'Vuelta a la selección de medios';
+$lang['btn_subscribe'] = 'Subscribirse a la notificación de cambios';
+$lang['btn_unsubscribe'] = 'Desubscribirse a la notificación de cambios';
+$lang['btn_subscribens'] = 'Subscribirse a cambios de un directorio';
+$lang['btn_unsubscribens'] = 'Desubscribirse de cambios de un directorio';
+$lang['btn_profile'] = 'Actualizar datos del usuario';
+$lang['btn_reset'] = 'Deshacer cambios';
+$lang['btn_resendpwd'] = 'Enviar nueva contraseña';
+$lang['btn_draft'] = 'Editar borrador';
+$lang['btn_recover'] = 'Recuperar borrador';
+$lang['btn_draftdel'] = 'Borrar borrador';
+$lang['loggedinas'] = 'Conectado como ';
+$lang['user'] = 'Usuario';
+$lang['pass'] = 'Contraseña';
+$lang['newpass'] = 'Nueva contraseña';
+$lang['oldpass'] = 'Confirma tu contraseña actual';
+$lang['passchk'] = 'otra vez';
+$lang['remember'] = 'Recordarme';
+$lang['fullname'] = 'Nombre completo';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Registrarse';
+$lang['profile'] = 'Datos del usuario';
+$lang['badlogin'] = 'El usuario o contraseña ingresados son incorrectos.';
+$lang['minoredit'] = 'Cambios menores';
+$lang['draftdate'] = 'Borrador guardado automáticamente en';
+$lang['regmissing'] = 'Lo siento, tienes que completar todos los campos.';
+$lang['reguexists'] = 'Lo siento, el nombre de usuario ya existe.';
+$lang['regsuccess'] = 'El usuario ha sido creado. La contraseña se ha enviado por correo.';
+$lang['regsuccess2'] = 'El usuario ha sido creado.';
+$lang['regmailfail'] = 'Parece que ha habido un error al enviar el correo con la contraseña. ¡Por favor, ponte en contacto con el administrador del Wiki!';
+$lang['regbadmail'] = 'La dirección de correo no parece válida. Si piensas que esto es un error, ponte en contacto con el administrador del Wiki';
+$lang['regbadpass'] = 'Las dos contraseñas no son iguales, por favor inténtalo de nuevo.';
+$lang['regpwmail'] = 'Tu contraseña del DokuWiki';
+$lang['reghere'] = '¿No tienes cuenta todavÃa? Consigue una';
+$lang['profna'] = 'Este wiki no permite la modificación de datos de usuarios';
+$lang['profnochange'] = 'Sin cambios, nada que hacer.';
+$lang['profnoempty'] = 'No se permiten que el nombre o la dirección de correo electrónico estén vacios.';
+$lang['profchanged'] = 'Se actualizaron exitosamente los datos del usuario.';
+$lang['pwdforget'] = '¿Has olvidado tu contraseña? Consigue una nueva.';
+$lang['resendna'] = 'Este wiki no brinda la posibilidad de reenvÃo de contraseña.';
+$lang['resendpwd'] = 'Enviar una nueva contraseña para';
+$lang['resendpwdmissing'] = 'Lo siento, debes completar todos los campos.';
+$lang['resendpwdnouser'] = 'Lo siento, no se encuentra este usuario en nuestra base de datos.';
+$lang['resendpwdbadauth'] = 'Lo siento, este código de autenticación no es válido. Asegúrate de haber usado el enlace de confirmación entero.';
+$lang['resendpwdconfirm'] = 'Un enlace para confirmación ha sido enviado por correo electrónico.';
+$lang['resendpwdsuccess'] = 'Tu nueva contraseña ha sido enviada por correo electrónico.';
+$lang['txt_upload'] = 'Selecciona el fichero a cargar';
+$lang['txt_filename'] = 'Subir como (opcional)';
+$lang['txt_overwrt'] = 'Sobreescribe el fichero existente';
+$lang['lockedby'] = 'Actualmente bloqueado por';
+$lang['lockexpire'] = 'El bloqueo expira en';
+$lang['willexpire'] = 'Tu bloqueo para editar esta página expira en un minuto.\nPara evitar confictos usa el botón previsualizar para reiniciar el contador de tiempo.';
+$lang['notsavedyet'] = 'Hay cambios que no se han guardado que se perderán.\n¿Quieres continuar?';
+$lang['rssfailed'] = 'Se ha producido un error leyendo datos (feed): ';
+$lang['nothingfound'] = 'No se ha encontrado nada.';
+$lang['mediaselect'] = 'Selección de fichero';
+$lang['fileupload'] = 'Subida de fichero';
+$lang['uploadsucc'] = 'La subida del fichero ha sido satisfactoria';
+$lang['uploadfail'] = 'La subida del fichero ha fallado. ¿Permisos equivocados?';
+$lang['uploadwrong'] = 'Subida de fichero denegada. ¡Los ficheros con esta extensión están prohibidos!';
+$lang['uploadexist'] = 'El fichero ya existe. No se ha hecho nada.';
+$lang['uploadbadcontent'] = 'El contenido de la subida no coincide con la extensión de fichero %s';
+$lang['uploadspam'] = 'La subida ha sido bloqueada por una lista negra de spam';
+$lang['uploadxss'] = 'La subida ha sido bloqueada por contenido posiblemente malicioso';
+$lang['deletesucc'] = 'El fichero "%s" ha sido borrado.';
+$lang['deletefail'] = '"%s" no pudo ser borrado, verifique los permisos.';
+$lang['mediainuse'] = 'El fichero %s no ha sido borrado, aun está en uso.';
+$lang['namespaces'] = 'Espacios de nombres';
+$lang['mediafiles'] = 'Ficheros disponibles en';
+$lang['js']['keepopen'] = 'Mantener esta ventana abierta durante la selección';
+$lang['js']['hidedetails'] = 'Ocultar detalles';
+$lang['mediausage'] = 'Use la siguiente sintaxis para hacer referencia a este fichero:';
+$lang['mediaview'] = 'Ver el fichero original';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Subir aquà un fichero al espacio de nombres actual. Para crear sub-espacios de nombres, antepóngalos al nombre de fichero separándolos por dos puntos (:) en "Subir como".';
+$lang['mediaextchange'] = 'Extensión del fichero cambiada de .%s a .%s!';
+$lang['reference'] = 'Referencias para';
+$lang['ref_inuse'] = 'El fichero no ha podido ser borrado, porque se está usando en las siguientes páginas:';
+$lang['ref_hidden'] = 'Algunas referencias están en páginas en las que no tienes permisos para leer';
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Páginas que coinciden';
+$lang['toc'] = 'Tabla de Contenidos';
+$lang['current'] = 'actual';
+$lang['yours'] = 'Tu versión';
+$lang['diff'] = 'muestra diferencias a la versión actual';
+$lang['diff2'] = 'Muestra las diferencias entre las revisiones elegidas';
+$lang['line'] = 'LÃnea';
+$lang['breadcrumb'] = 'Traza';
+$lang['youarehere'] = 'Tu estás aquÃ';
+$lang['lastmod'] = 'Ãltima modificación';
+$lang['by'] = 'por';
+$lang['deleted'] = 'borrado';
+$lang['created'] = 'creado';
+$lang['restored'] = 'Se ha restaurado la vieja versión';
+$lang['external_edit'] = 'editor externo';
+$lang['summary'] = 'Edita el resumen';
+$lang['mail_newpage'] = 'página añadida:';
+$lang['mail_changed'] = 'página cambiada:';
+$lang['mail_new_user'] = 'Nuevo usuario:';
+$lang['mail_upload'] = 'archivo subido:';
+$lang['nosmblinks'] = 'Enlazar a recursos compartidos de Windows sólo funciona en Microsoft Internet Explorer.\nTu puedes copiar y pegar el enlace.';
+$lang['qb_alert'] = 'Por favor, pega el texto al que quieres dar formato.\n Será agregado al final del documento.';
+$lang['qb_bold'] = 'Texto Negrita';
+$lang['qb_italic'] = 'Texto Itálica';
+$lang['qb_underl'] = 'Texto Subrayado';
+$lang['qb_code'] = 'Texto de Código';
+$lang['qb_strike'] = 'Texto tachado';
+$lang['qb_h1'] = 'TÃtulo 1';
+$lang['qb_h2'] = 'TÃtulo 2';
+$lang['qb_h3'] = 'TÃtulo 3';
+$lang['qb_h4'] = 'TÃtulo 4';
+$lang['qb_h5'] = 'TÃtulo 5';
+$lang['qb_link'] = 'Enlace Interno';
+$lang['qb_extlink'] = 'Enlace Externo';
+$lang['qb_hr'] = 'LÃnea horizontal';
+$lang['qb_ol'] = 'Ãtem de Lista Ordenada';
+$lang['qb_ul'] = 'Ãtem de Lista Desordenada';
+$lang['qb_media'] = 'Añadir Imágenes u otros ficheros';
+$lang['qb_sig'] = 'Pon tu firma';
+$lang['qb_smileys'] = 'Sonrisas';
+$lang['qb_chars'] = 'Caracteres especiales';
+$lang['del_confirm'] = '¿Quieres realmente borrar los Ãtem seleccionados?';
+$lang['admin_register'] = 'Añadir nuevo usuario...';
+$lang['metaedit'] = 'Editar los metadatos';
+$lang['metasaveerr'] = 'La escritura de los metadatos ha fallado';
+$lang['metasaveok'] = 'Los metadatos han sido guardados.';
+$lang['img_backto'] = 'Volver a';
+$lang['img_title'] = 'TÃtulo';
+$lang['img_caption'] = 'EpÃgrafe';
+$lang['img_date'] = 'Fecha';
+$lang['img_fname'] = 'Nombre de fichero';
+$lang['img_fsize'] = 'Tamaño';
+$lang['img_artist'] = 'Fotógrafo/Artista';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Formato';
+$lang['img_camera'] = 'Cámara';
+$lang['img_keywords'] = 'Palabras claves';
+$lang['subscribe_success'] = '%s ha sido agregado a la lista de notificación de cambios de %s';
+$lang['subscribe_error'] = 'Ha habido un error al agregar a %s a la lista de notificación de cambios de %s';
+$lang['subscribe_noaddress'] = 'No hay ninguna dirección de correo electrónico asociada con tu nombre de usuario, no puedes agregarte a la lista de notificación de cambios';
+$lang['unsubscribe_success'] = '%s ha sido eliminado a la lista de notificación de cambios de %s';
+$lang['unsubscribe_error'] = 'Ha habido un error al eliminar %s de la lista de notificación de cambios de %s';
+$lang['authmodfailed'] = 'Está mal configurada la autenticación de usuarios. Por favor, avisale al administrador del wiki.';
+$lang['authtempfail'] = 'La autenticación de usuarios no está disponible temporalmente. Si esta situación persiste, por favor, avisale al administrador del wiki.';
+$lang['i_chooselang'] = 'Elija su idioma';
+$lang['i_installer'] = 'Instalador de DokuWiki';
+$lang['i_wikiname'] = 'Nombre del Wiki';
+$lang['i_enableacl'] = 'Habilitar ACL (recomendado) (ACL: lista de control de acceso)';
+$lang['i_superuser'] = 'Super-usuario';
+$lang['i_problems'] = 'El instalador encontró algunos problemas, se muestran abajo. No se puede continuar la instalación hasta que usted no los corrija.';
+$lang['i_modified'] = 'Por razones de seguridad este script sólo funcionará con una instalación nueva y no modificada de Dokuwiki. Usted deberá o bien extraer nuevamente los ficheros del paquete bajado o bien consultar las <a href="http://wiki.splitbrain.org/wiki:install">instrucciones de instalación de Dokuwiki</a> completas.';
+$lang['i_funcna'] = 'La función de PHP <code>%s</code> no está disponible. Tal vez su proveedor de hosting la ha deshabilitado por alguna razón?';
+$lang['i_phpver'] = 'Su versión de PHP <code>%s</code> es menor que la necesaria <code>%s</code>. Es necesario que actualice su instalación de PHP.';
+$lang['i_permfail'] = '<code>%s</code> no es escribible por DokuWiki. Es necesario que usted establezca correctamente los permisos de este directorio!';
+$lang['i_confexists'] = '<code>%s</code> ya existe';
+$lang['i_writeerr'] = 'Imposible crear <code>%s</code>. Se necesita que usted controle los permisos del fichero/directorio y que cree el fichero manualmente.';
+$lang['i_badhash'] = 'dokuwiki.php no reconocido o modificado (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - ilegal o valor vacÃo';
+$lang['i_success'] = 'La configuración ha concluido exitosamente. Usted ahora puede eliminar el archivo install.php. Siga a su <a href="doku.php">nueva instalación de DokuWiki</a>.';
+$lang['i_failure'] = 'Han ocurrido algunos errores durante la escritura de los ficheros de configuración. Usted puede corregirlos manualmente antes de poder usar su <a href="doku.php">nueva instalación de DokuWiki</a>.';
+$lang['i_policy'] = 'PolÃtica de ACL inicial';
+$lang['i_pol0'] = 'Wiki abierta (leer, escribir y subir archivos para todos)';
+$lang['i_pol1'] = 'Wiki pública (leer para todos, escribir y subir archivos para usuarios registrados únicamente)';
+$lang['i_pol2'] = 'Wiki cerrada (leer, escribir y subir archivos para usuarios registrados únicamente)';
+$lang['i_retry'] = 'Reintentar';
Modified: site/trunk/www-root/wiki/inc/lang/es/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Página Bloqueada ======
-
+====== Página Bloqueada ======
+
Esta página está actualmente bloqueada porque la está editando otro usuario. Tienes que esperar a que termine de editarla o el bloqueo expire.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Login ======
-
-¡Actualmente no estás identificado! Introduce abajo tus datos de identificación para abrir una sesión.
-Necesitas tener las cookies activadas para identificarte.
+====== Login ======
+
+¡Actualmente no estás identificado! Introduce abajo tus datos de identificación para abrir una sesión.
+Necesitas tener las cookies activadas para identificarte.
Modified: site/trunk/www-root/wiki/inc/lang/es/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Se ha cambiado o añadido una pagina en el DokuWiki-Manuales. Aqui están los detalles
-
-Fecha : @DATE@
-Navegador : @BROWSER@
-Dirección-IP : @IPADDRESS@
-Nombre de Host : @HOSTNAME@
-Revision Vieja : @OLDPAGE@
-Revision Nueva : @NEWPAGE@
-Edit Summary : @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-Este email ha sido generado por DokuWiki en
- at DOKUWIKIURL@
+Se ha cambiado o añadido una pagina en el DokuWiki-Manuales. Aqui están los detalles
+
+Fecha : @DATE@
+Navegador : @BROWSER@
+Dirección-IP : @IPADDRESS@
+Nombre de Host : @HOSTNAME@
+Revision Vieja : @OLDPAGE@
+Revision Nueva : @NEWPAGE@
+Edit Summary : @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+Este email ha sido generado por DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/es/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Este tema no existe todavÃa======
-
-Has seguido un enlace a un tema que no existe todavÃa. Puedes crearlo usando el botón ''Crea esta página''.
+======Este tema no existe todavÃa======
+
+Has seguido un enlace a un tema que no existe todavÃa. Puedes crearlo usando el botón ''Crea esta página''.
Modified: site/trunk/www-root/wiki/inc/lang/es/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======No existe esta revision======
-
-La revision especificada no existe. Usa el botón ''Revisiones antiguas'' para una lista de revisiones antiguas de este documento.
-
+======No existe esta revision======
+
+La revision especificada no existe. Usa el botón ''Revisiones antiguas'' para una lista de revisiones antiguas de este documento.
+
Modified: site/trunk/www-root/wiki/inc/lang/es/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-Hola @FULLNAME@!
-
-Estos son los datos de usuario para @TITLE@ en @DOKUWIKIURL@
-
-Usuario : @LOGIN@
-Contraseña : @PASSWORD@
-
---
+Hola @FULLNAME@!
+
+Estos son los datos de usuario para @TITLE@ en @DOKUWIKIURL@
+
+Usuario : @LOGIN@
+Contraseña : @PASSWORD@
+
+--
Este correo a sido generado por DokuWiki en @DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Previsualización======
-
-Esto es una previsualización de cómo aparecerá tu texto. Recuerda: **no está guardado** todavÃa!
-
+======Previsualización======
+
+Esto es una previsualización de cómo aparecerá tu texto. Recuerda: **no está guardado** todavÃa!
+
Modified: site/trunk/www-root/wiki/inc/lang/es/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Hola @FULLNAME@!
-
-Alguien solicitó una nueva contraseña para su nombre de
-usuario @TITLE@ en @DOKUWIKIURL@
-
-Si usted no solicitó una nueva contraseña, simplemente ignore este email.
-
-Para confirmar que el requerimiento fue realizado realmente por usted,
-por favor use el siguiente enlace.
-
- at CONFIRM@
-
-
---
-Este mail ha sido generado por DokuWiki en
- at DOKUWIKIURL@
+Hola @FULLNAME@!
+
+Alguien solicitó una nueva contraseña para su nombre de
+usuario @TITLE@ en @DOKUWIKIURL@
+
+Si usted no solicitó una nueva contraseña, simplemente ignore este email.
+
+Para confirmar que el requerimiento fue realizado realmente por usted,
+por favor use el siguiente enlace.
+
+ at CONFIRM@
+
+
+--
+Este mail ha sido generado por DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/es/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Esta página es de solo lectura. Puedes ver la fuente pero no puedes cambiarla. Pregunta a tu administrador si crees que esto está mal.
+Esta página es de solo lectura. Puedes ver la fuente pero no puedes cambiarla. Pregunta a tu administrador si crees que esto está mal.
Modified: site/trunk/www-root/wiki/inc/lang/es/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Cambios Recientes======
-
-Las siguientes páginas han sido modificadas recientemente.
-
-
+======Cambios Recientes======
+
+Las siguientes páginas han sido modificadas recientemente.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/es/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Registro como nuevo usuario ======
-
-Completa toda la información del formulario para crear un nuevo usuario en este wiki.
+====== Registro como nuevo usuario ======
+
+Completa toda la información del formulario para crear un nuevo usuario en este wiki.
Asegúrate que escribes una **dirección de e-mail válida** y que allà se enviará tu contraseña. El nombre de usuario ha de ser un nombre válido según [[doku>wiki:pagename|pagename]].
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Un nuevo usuario ha sido registrado. Aquà están los detalles:
-
-Usuario : @NEWUSER@
-Nombre completo : @NEWNAME@
-E-Mail : @NEWEMAIL@
-
-Fecha : @DATE@
-Browser : @BROWSER@
-Dirección-IP : @IPADDRESS@
-Nombre del host : @HOSTNAME@
-
---
-Este mail ha sido generado por DokuWiki en
- at DOKUWIKIURL@
+Un nuevo usuario ha sido registrado. Aquà están los detalles:
+
+Usuario : @NEWUSER@
+Nombre completo : @NEWNAME@
+E-Mail : @NEWEMAIL@
+
+Fecha : @DATE@
+Browser : @BROWSER@
+Dirección-IP : @IPADDRESS@
+Nombre del host : @HOSTNAME@
+
+--
+Este mail ha sido generado por DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/es/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Enviar nueva contraseña ======
-
-Completa la información requerida abajo para obtener una nueva contraseña
-para tu cuenta de usuario en este wiki. La nueva contraseña te será enviada
-a la dirección de mail que está registrada. El nombre de usuario debe ser
-tu nombre de usuario en este wiki.
+====== Enviar nueva contraseña ======
+
+Completa la información requerida abajo para obtener una nueva contraseña
+para tu cuenta de usuario en este wiki. La nueva contraseña te será enviada
+a la dirección de mail que está registrada. El nombre de usuario debe ser
+tu nombre de usuario en este wiki.
Modified: site/trunk/www-root/wiki/inc/lang/es/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Revisiones Antiguas======
-
-Estas son revisiones más antiguas del documento actual. Para volver a una revisión antigua seleccionala de abajo, pulsa ''Edita esta página'' y guárdala.
-
+======Revisiones Antiguas======
+
+Estas son revisiones más antiguas del documento actual. Para volver a una revisión antigua seleccionala de abajo, pulsa ''Edita esta página'' y guárdala.
+
Modified: site/trunk/www-root/wiki/inc/lang/es/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Búsqueda======
-
-Puedes encontrar los resultados de tu búsqueda abajo. Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón ''Crea esta página''.
-
+======Búsqueda======
+
+Puedes encontrar los resultados de tu búsqueda abajo. Si no has encontrado lo que buscabas, puedes crear una nueva página con tu consulta utilizando el botón ''Crea esta página''.
+
=====Resultados=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Esta es una revisión vieja del documento!**
-----
+**Esta es una revisión vieja del documento!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/es/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,171 +1,171 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-una
-unas
-unos
-uno
-sobre
-todo
-también
-tras
-otro
-algún
-alguno
-alguna
-algunos
-algunas
-ser
-soy
-eres
-somos
-sois
-estoy
-esta
-estamos
-estais
-estan
-como
-para
-atras
-porque
-por
-qué
-estado
-estaba
-ante
-antes
-siendo
-ambos
-pero
-poder
-puede
-puedo
-podemos
-podeis
-pueden
-fui
-fue
-fuimos
-fueron
-hacer
-hago
-hace
-hacemos
-haceis
-hacen
-cada
-fin
-incluso
-primero
-desde
-conseguir
-consigo
-consigue
-consigues
-conseguimos
-consiguen
-voy
-va
-vamos
-vais
-van
-vaya
-gueno
-tener
-tengo
-tiene
-tenemos
-teneis
-tienen
-las
-los
-aqui
-mio
-tuyo
-ellos
-ellas
-nos
-nosotros
-vosotros
-vosotras
-dentro
-solo
-solamente
-saber
-sabes
-sabe
-sabemos
-sabeis
-saben
-ultimo
-largo
-bastante
-haces
-muchos
-aquellos
-aquellas
-sus
-entonces
-tiempo
-verdad
-verdadero
-verdadera
-cierto
-ciertos
-cierta
-ciertas
-intentar
-intento
-intenta
-intentas
-intentamos
-intentais
-intentan
-dos
-bajo
-arriba
-encima
-usar
-uso
-usas
-usa
-usamos
-usais
-usan
-emplear
-empleo
-empleas
-emplean
-ampleamos
-empleais
-valor
-muy
-era
-eras
-eramos
-eran
-modo
-bien
-cual
-cuando
-donde
-mientras
-quien
-con
-entre
-sin
-trabajo
-trabajar
-trabajas
-trabaja
-trabajamos
-trabajais
-trabajan
-podria
-podrias
-podriamos
-podrian
-podriais
-aquel
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+una
+unas
+unos
+uno
+sobre
+todo
+también
+tras
+otro
+algún
+alguno
+alguna
+algunos
+algunas
+ser
+soy
+eres
+somos
+sois
+estoy
+esta
+estamos
+estais
+estan
+como
+para
+atras
+porque
+por
+qué
+estado
+estaba
+ante
+antes
+siendo
+ambos
+pero
+poder
+puede
+puedo
+podemos
+podeis
+pueden
+fui
+fue
+fuimos
+fueron
+hacer
+hago
+hace
+hacemos
+haceis
+hacen
+cada
+fin
+incluso
+primero
+desde
+conseguir
+consigo
+consigue
+consigues
+conseguimos
+consiguen
+voy
+va
+vamos
+vais
+van
+vaya
+gueno
+tener
+tengo
+tiene
+tenemos
+teneis
+tienen
+las
+los
+aqui
+mio
+tuyo
+ellos
+ellas
+nos
+nosotros
+vosotros
+vosotras
+dentro
+solo
+solamente
+saber
+sabes
+sabe
+sabemos
+sabeis
+saben
+ultimo
+largo
+bastante
+haces
+muchos
+aquellos
+aquellas
+sus
+entonces
+tiempo
+verdad
+verdadero
+verdadera
+cierto
+ciertos
+cierta
+ciertas
+intentar
+intento
+intenta
+intentas
+intentamos
+intentais
+intentan
+dos
+bajo
+arriba
+encima
+usar
+uso
+usas
+usa
+usamos
+usais
+usan
+emplear
+empleo
+empleas
+emplean
+ampleamos
+empleais
+valor
+muy
+era
+eras
+eramos
+eran
+modo
+bien
+cual
+cuando
+donde
+mientras
+quien
+con
+entre
+sin
+trabajo
+trabajar
+trabajas
+trabaja
+trabajamos
+trabajais
+trabajan
+podria
+podrias
+podriamos
+podrian
+podriais
+aquel
Modified: site/trunk/www-root/wiki/inc/lang/es/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Hola!
-
-La página @PAGE@ en el wiki @TITLE@ ha cambiado.
-Los cambios son los siguientes:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Para desubscribirte de esta página, ingresa al wiki
-en @DOKUWIKIURL@ y luego visita la página:
- at NEWPAGE@
-y elige 'Unsubscribe Changes'.
-
---
-Este mail fue generado por DokuWiki en
- at DOKUWIKIURL@
+Hola!
+
+La página @PAGE@ en el wiki @TITLE@ ha cambiado.
+Los cambios son los siguientes:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Para desubscribirte de esta página, ingresa al wiki
+en @DOKUWIKIURL@ y luego visita la página:
+ at NEWPAGE@
+y elige 'Unsubscribe Changes'.
+
+--
+Este mail fue generado por DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/es/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Actualiza el perfil de tu cuenta de usuario ======
-
-Sólo necesitas completar aquellos campos que quieres cambiar. No
-puedes cambiar tu nombre de usuario.
+====== Actualiza el perfil de tu cuenta de usuario ======
+
+Sólo necesitas completar aquellos campos que quieres cambiar. No
+puedes cambiar tu nombre de usuario.
Modified: site/trunk/www-root/wiki/inc/lang/es/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Se ha subido un fichero a tu DokuWuki. Detalles del fichero:
-
-Archivo : @MEDIA@
-Fecha : @DATE@
-Navegador : @BROWSER@
-Dirección IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-Tamaño : @SIZE@
-MIME Type : @MIME@
-Usuario : @USER@
-
---
-Correo generado por DokuWiki en
+Se ha subido un fichero a tu DokuWuki. Detalles del fichero:
+
+Archivo : @MEDIA@
+Fecha : @DATE@
+Navegador : @BROWSER@
+Dirección IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+Tamaño : @SIZE@
+MIME Type : @MIME@
+Usuario : @USER@
+
+--
+Correo generado por DokuWiki en
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/es/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/es/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/es/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======SPAM bloqueado======
-
-Tus cambios **no** se han guardado porque contienen una o más palabras prohibidas .
-Si has intentado spammear el Wiki -- Perro malo! Si crees que es un error contacta
-con el administrador de este Wiki.
-
+======SPAM bloqueado======
+
+Tus cambios **no** se han guardado porque contienen una o más palabras prohibidas .
+Si has intentado spammear el Wiki -- Perro malo! Si crees que es un error contacta
+con el administrador de este Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administreerimine ======
-
-Alljärgnevalt leiate nimekirja administratiivsetest tegevustest, mida DokuWiki võimaldab.
-
+====== Administreerimine ======
+
+Alljärgnevalt leiate nimekirja administratiivsetest tegevustest, mida DokuWiki võimaldab.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Siia lehele lingiga haagitud lehed ======
-
-Nimekiri nendest lehtedest, kuskohalt Sa lingi abil siia lehele saad.
-
+====== Siia lehele lingiga haagitud lehed ======
+
+Nimekiri nendest lehtedest, kuskohalt Sa lingi abil siia lehele saad.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Uus versioon täitsa olemas ======
-
-Sellest dokumendist, mis Sa toimetasid on tegelikult juba olemas ka uuem versioon. Selline asi juhtub
-siis kui sel ajal kui Sina vaikselt oma dokumendi kallal nokitsesid tegi keegi juba kähku omad
-Muutused sealsamas dokumendis ära.
-
-Vaata hoolikalt allpool näidatud erinevusi ja siis otsusta millise versiooni alles jätad. Kui Sa peaks
-valima ''salvesta'', siis juhtubki selline lugu, et Sinu versioon salvestatakse. kui Sa aga peaks
-klõpsama ''katkesta'' säilib hetkel kehtiv versioon.
-
+====== Uus versioon täitsa olemas ======
+
+Sellest dokumendist, mis Sa toimetasid on tegelikult juba olemas ka uuem versioon. Selline asi juhtub
+siis kui sel ajal kui Sina vaikselt oma dokumendi kallal nokitsesid tegi keegi juba kähku omad
+Muutused sealsamas dokumendis ära.
+
+Vaata hoolikalt allpool näidatud erinevusi ja siis otsusta millise versiooni alles jätad. Kui Sa peaks
+valima ''salvesta'', siis juhtubki selline lugu, et Sinu versioon salvestatakse. kui Sa aga peaks
+klõpsama ''katkesta'' säilib hetkel kehtiv versioon.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Sul pole ligipääsuluba======
-
-Kahju küll, aga sinu tublidusest ei piisa, et edasi liikuda, selleks on vastavaid õigusi vaja.
+======Sul pole ligipääsuluba======
+
+Kahju küll, aga sinu tublidusest ei piisa, et edasi liikuda, selleks on vastavaid õigusi vaja.
Modified: site/trunk/www-root/wiki/inc/lang/et/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Erinevused======
-
-Siin näed erinevusi valitud versiooni ja hetkel kehtiva lehekülje vahel.
-
+======Erinevused======
+
+Siin näed erinevusi valitud versiooni ja hetkel kehtiva lehekülje vahel.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Leidsin katkenud toimetamise ======
-
-Sinu viimane toimetamissessioon ei lõppenud eelmine kord korrapäraselt.
-DokuWiki automaatselt salvestas Sinu pooliku töö, mida võid nüüd kasutada töö
-jätkamiseks. Allpool näed teksti, mis suudeti päästa.
-
-Kas tahad //taastada// kaotused, //kustutada// poolik töö või
-//üldse mitte midagi teha//?
-
+====== Leidsin katkenud toimetamise ======
+
+Sinu viimane toimetamissessioon ei lõppenud eelmine kord korrapäraselt.
+DokuWiki automaatselt salvestas Sinu pooliku töö, mida võid nüüd kasutada töö
+jätkamiseks. Allpool näed teksti, mis suudeti päästa.
+
+Kas tahad //taastada// kaotused, //kustutada// poolik töö või
+//üldse mitte midagi teha//?
+
Modified: site/trunk/www-root/wiki/inc/lang/et/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-Toimeta seda lehte ja klõpsa ''Salvesta'' peal. Wikis teksti kujundamise vahenditega tutvumiseks, st.
-kuidas teha rasvast ja kaldkirja jne., vaata [[wiki:syntax|süntaksitutvustus lehelt]].
-Kui Sa tahad midagi testida, saad seda teha [[playground:playground|mängualal]].
-
+Toimeta seda lehte ja klõpsa ''Salvesta'' peal. Wikis teksti kujundamise vahenditega tutvumiseks, st.
+kuidas teha rasvast ja kaldkirja jne., vaata [[wiki:syntax|süntaksitutvustus lehelt]].
+Kui Sa tahad midagi testida, saad seda teha [[playground:playground|mängualal]].
+
Modified: site/trunk/www-root/wiki/inc/lang/et/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-**Sa oled omale tõmmanud selle dokumendi vana versiooni!** Kui Sa selle salvestad sünnib nende
-andmetega uus versioon.
-----
-
+**Sa oled omale tõmmanud selle dokumendi vana versiooni!** Kui Sa selle salvestad sünnib nende
+andmetega uus versioon.
+----
+
Modified: site/trunk/www-root/wiki/inc/lang/et/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Sisukord ======
-
-See siin on nimekiri kõigist saadaval olevatest lehtedest järjestatud
-[[doku>wiki:namespaces|alajaotuste]] järgi.
+====== Sisukord ======
+
+See siin on nimekiri kõigist saadaval olevatest lehtedest järjestatud
+[[doku>wiki:namespaces|alajaotuste]] järgi.
Modified: site/trunk/www-root/wiki/inc/lang/et/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,215 +1,215 @@
-<?php
-/**
- * Estonian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Oliver S6ro <seem.iges at mail.ee>
- * @author Aari Juhanson <aari at vmg.vil.ee>
- * @author Kaiko Kaur <kaiko at kultuur.edu.ee>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';//„
-$lang['doublequoteclosing'] = 'â';//“
-$lang['singlequoteopening'] = 'â';//‚
-$lang['singlequoteclosing'] = 'â';//‘
-
-$lang['btn_edit'] = 'Toimeta seda lehte';
-$lang['btn_source'] = 'Näita lehepõhja';
-$lang['btn_show'] = 'Näita lehte';
-$lang['btn_create'] = 'Tekita selle lingi alla leht';
-$lang['btn_search'] = 'Otsi';
-$lang['btn_save'] = 'Salvesta';
-$lang['btn_preview']= 'Eelvaade';
-$lang['btn_top'] = 'Tagasi lehe algusesse';
-$lang['btn_revs'] = 'Eelmised versioonid';
-$lang['btn_recent'] = 'Viimased muudatused';
-$lang['btn_upload'] = 'Lae üles';
-$lang['btn_cancel'] = 'Katkesta';
-$lang['btn_index'] = 'Sisukord';
-$lang['btn_secedit']= 'Toimeta';
-$lang['btn_login'] = 'Logi sisse';
-$lang['btn_logout'] = 'Logi välja';
-$lang['btn_admin'] = 'Administreeri';
-$lang['btn_update'] = 'Uuenda';
-$lang['btn_delete'] = 'Kustuta';
-$lang['btn_newer'] = '<< varajasemad';
-$lang['btn_older'] = '>> hilisemad';
-$lang['btn_back'] = 'Tagasi';
-$lang['btn_backtomedia'] = 'Tagasi faili valikusse';
-$lang['btn_profile'] = 'Minu info';
-$lang['btn_reset'] = 'Taasta';
-$lang['btn_resendpwd'] = 'Saada uus parool';
-$lang['btn_draft'] = 'Toimeta mustandit';
-$lang['btn_recover'] = 'Taata mustand';
-$lang['btn_draftdel'] = 'Kustuta mustand';
-$lang['newpass'] = 'Uus parool';
-$lang['oldpass'] = 'Vana parool';
-$lang['passchk'] = 'Korda uut parooli';
-$lang['profile'] = 'Kasutaja info';
-$lang['minoredit'] = 'Ebaolulised muudatused';
-$lang['draftdate'] = 'Mustand automaatselt salvestatud';
-$lang['regsuccess2'] = 'Kasutaja sai tehtud.';
-$lang['regbadpass'] = 'Uus parool on kirjutatud erinevalt. Proovi uuesti.';
-$lang['uploadexist'] = 'Fail on juba olemas. Midagi ei muudetud.';
-$lang['deletesucc'] = 'Fail nimega "%s" sai kustutatud.';
-$lang['deletefail'] = 'Faili nimega "%s" ei kustutatud (kontrolli õigusi).';
-$lang['mediainuse'] = 'Faili nimega "%s" ei kustutatud, sest see on kasutuses.';
-$lang['js']['keepopen'] = 'Jäta aken peale valiku sooritamist avatuks';
-$lang['js']['hidedetails'] = 'Peida detailid';
-$lang['mediausage'] = 'Kasuta järgmist kirjapilti sellele failile viitamaks:';
-$lang['mediaview'] = 'Vaata faili algsel kujul.';
-$lang['mediaroot'] = 'juur';
-$lang['mediaupload'] = 'Lae fail sellesse nimeruumi (kataloogi). Et tekitada veel alam nimeruum kasuta koolonit Wiki nimes.';
-$lang['mediaextchange'] = 'Faili laiend .%s-st %s-ks!';
-$lang['ref_inuse'] = 'Seda faili ei saa kustutada, sest teda kasutavad järgmised lehed:';
-$lang['ref_hidden'] = 'Mõned viidad failile on lehtedel, millele sul ei ole ligipääsu';
-$lang['youarehere'] = 'Sa oled siin';
-$lang['mail_new_user'] = 'Uus kasutaja:';
-$lang['qb_strike'] = 'Läbijoonitud tekst';
-$lang['qb_smileys'] = 'Emotikonid';
-$lang['qb_chars'] = 'Erisümbolid';
-$lang['admin_register'] = 'Lisa kasutaja';
-
-
-#$lang['reference'] = '';
-#$lang['btn_backlink'] = '';
-#$lang['profna'] = '';
-$lang['btn_subscribe'] = 'Jälgi seda lehte (teated meilile)';
-$lang['btn_unsubscribe'] = 'Lõpeta lehe jälgimine';
-$lang['profnochange'] = 'Muutused puuduvad.';
-$lang['profnoempty'] = 'Tühi nimi ega meiliaadress pole lubatud.';
-$lang['profchanged'] = 'Kasutaja info edukalt muudetud';
-$lang['pwdforget'] = 'Unustasid parooli? Tee uus';
-$lang['resendna'] = 'See wiki ei toeta parooli taassaatmist.';
-$lang['resendpwd'] = 'Saada uus parool';
-$lang['resendpwdmissing'] = 'Khmm... Sa pead täitma kõik väljad.';
-$lang['resendpwdnouser'] = 'Aga sellist kasutajat ei ole.';
-$lang['resendpwdbadauth'] = 'See autentimiskood ei ole õige. Kontrolli, et kopeerisid terve lingi.';
-$lang['resendpwdconfirm'] = 'Kinnituslink saadeti meilile.';
-$lang['resendpwdsuccess'] = 'Uus parool saadeti Sinu meilile.';
-$lang['txt_overwrt'] = 'Kirjutan olemasoleva faili üle';
-$lang['metaedit'] = 'Muuda lisainfot';
-$lang['metasaveerr'] = 'Lisainfo salvestamine läks untsu.';
-$lang['metasaveok'] = 'Lisainfo salvestatud';
-$lang['img_backto'] = 'Tagasi';
-$lang['img_title'] = 'Tiitel';
-$lang['img_caption'] = 'Kirjeldus';
-$lang['img_date'] = 'Kuupäev';
-$lang['img_fname'] = 'Faili nimi';
-$lang['img_fsize'] = 'Suurus';
-$lang['img_artist'] = 'Autor';
-#$lang['img_copyr'] = '';
-$lang['img_format'] = 'Formaat';
-$lang['img_camera'] = 'Kaamera';
-$lang['img_keywords'] = 'Võtmesõnad';
-
-$lang['i_chooselang'] = 'Vali keel';
-$lang['i_installer'] = 'DokuWiki paigaldaja';
-$lang['i_wikiname'] = 'Wiki nimi';
-$lang['i_enableacl'] = 'Kas lubada kasutajate haldus (soovitatav)';
-$lang['i_superuser'] = 'Superkasutaja';
-$lang['i_problems'] = 'Paigaldaja leidis mõned vead, mis on allpool välja toodud. Enne vigade eemaldamist ei saa jätkata.';
-$lang['i_modified'] = 'Ãnnetuste vältimiseks läheb see skript käima ainult värskelt paigaldatud ja muutmata Dokuwiki peal.
- Sa peaksid ilmselt kogu koodi uuesti lahti pakkima. Vaata ka <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installeerimis juhendit</a>';
-$lang['i_funcna'] = 'PHP funktsiooni <code>%s</code> ei ole olemas.võibolla sinu serveri hooldaja on selle mingil põhjusel keelanud?';
-$lang['i_permfail'] = 'Dokuwiki ei saa kirjutada faili <code>%s</code>. Kontrolli serveris failide õigused üle.';
-$lang['i_confexists'] = '<code>%s</code> on juba olemas';
-$lang['i_writeerr'] = 'Faili <code>%s</code> ei lubata tekitada. Kontrolli kataloogi ja faili õigusi.';
-#$lang['i_badhash'] = '';
-$lang['i_badval'] = '<code>%s</code> - lubamatu või tühi väärtus';
-$lang['i_success'] = 'Seadistamine on õnnelikult lõpule viidud. Sa võid nüüd kustutada faili install.php. Alusta oma <a href="doku.php">uue DokuWiki</a> täitmist.';
-$lang['i_failure'] = 'Konfiguratsiooni faili kirjutamisel esines vigu. Võimalik, et pead need käsitsi parandama enne <a href="doku.php">uue DokuWiki</a> täitma asumist.';
-$lang['i_policy'] = 'Wiki õiguste algne poliitika';
-$lang['i_pol0'] = 'Avatud (lugemine, kirjutamine ja üleslaadimine kõigile lubatud)';
-$lang['i_pol1'] = 'Avalikuks lugemiseks (lugeda saavad kõik, kirjutada ja üles laadida vaid registreeritud kasutajad)';
-$lang['i_pol2'] = 'Suletud (kõik õigused, kaasaarvatud lugemine on lubatud vaid registreeritud kasutajatele)';
-
-$lang['loggedinas'] = 'Logis sisse kui';
-$lang['user'] = 'Kasutaja';
-$lang['pass'] = 'Parool';
-$lang['remember'] = 'Pea mind meeles';
-$lang['fullname'] = 'Täielik nimi';
-$lang['email'] = 'E-post';
-$lang['register'] = 'Registreeri uus kasutaja';
-$lang['badlogin'] = 'Oops, Sinu kasutajanimi või parool oli vale.';
-
-$lang['regmissing'] = 'Kõik väljad tuleb ära täita.';
-$lang['reguexists'] = 'Tegelikult on sellise nimega kasutaja juba olemas.';
-$lang['regsuccess'] = 'Kasutaja sai tehtud. Parool saadeti Sulle e-posti aadressil.';
-$lang['regmailfail']= 'Ilmselt tekkis e-posti teel parooli saatmisel mingi tõrge. Palun suhtle sel teemal
-oma serveri administraatoriga!';
-$lang['regbadmail'] = 'Tundub, et Sinu antud e-posti aadress ei toimi - kui Sa arvad, et tegemist on
-ekstitusega, suhtle oma serveri administraatoriga';
-$lang['regpwmail'] = 'Sinu DokuWiki parool';
-$lang['reghere'] = 'Sul ei olegi veel kasutajakontot? No aga tekita see siis endale!';
-
-$lang['txt_upload'] = 'Vali fail, mida üles laadida';
-$lang['txt_filename'] = 'Siseta oma Wikinimi (soovituslik)';
-$lang['lockedby'] = 'Praegu on selle lukustanud';
-$lang['lockexpire'] = 'Lukustus aegub';
-$lang['willexpire'] = 'Teie lukustus selle lehe toimetamisele aegub umbes minuti pärast.\nIgasugu probleemide vältimiseks kasuta eelvaate nuppu, et lukustusarvesti taas tööle panna.';
-
-$lang['notsavedyet'] = 'Sul on seal salvestamata muudatusi, mis kohe kõige kaduva teed lähevad.\nKas Sa ikka tahad edasi liikuda?';
-$lang['rssfailed'] = 'Sinu soovitud info ammutamisel tekkis viga: ';
-$lang['nothingfound']= 'Oops, aga mitte muhvigi ei leitud.';
-
-$lang['mediaselect'] = 'Hunnik faile';
-$lang['fileupload'] = 'Faili üleslaadimine';
-$lang['uploadsucc'] = 'Ãleslaadimine läks ootuspäraselt hästi';
-$lang['uploadfail'] = 'Ãleslaadimine läks nässu. Ãkki pole Sa selleks lihtsalt piisavalt võimukas tegija?';
-$lang['uploadwrong'] = 'Ei saa Sa midagi üles laadida. Oops, aga seda tüüpi faili sul lihtsalt ei lubata üles laadida';
-$lang['namespaces'] = 'Alajaotus';
-$lang['mediafiles'] = 'Failid on Sulle kättesaadavad';
-
-$lang['hits'] = 'Päringu tabamused';
-$lang['quickhits'] = 'Päringule vastavad lehed';
-$lang['toc'] = 'Sisujuht';
-$lang['current'] = 'Hetkel kehtiv';
-$lang['yours'] = 'Sinu versioon';
-$lang['diff'] = 'Näita erinevusi hetkel kehtiva versiooniga';
-$lang['line'] = 'Rida';
-$lang['breadcrumb'] = 'Käidud rada';
-$lang['lastmod'] = 'Viimati muutnud';
-$lang['by'] = 'persoon';
-$lang['deleted'] = 'eemaldatud';
-$lang['created'] = 'tekitatud';
-$lang['restored'] = 'vana versioon taastatud';
-$lang['summary'] = 'kokkuvõte muudatustest';
-
-$lang['mail_newpage'] = 'leht lisatud:';
-$lang['mail_changed'] = 'leht muudetud';
-
-$lang['nosmblinks'] = 'Windowsis võrguarvutiga ühendamine toimib ainult Internet Exploreris ja
-sisevõrgus.\nAga Sa saad õnneks omale lingi kopeerida ja hiljem kuhugi kleepida.';
-
-$lang['qb_alert'] = 'Sisesta palun tekst, mida Sa tahad kujundada.\nSee lisatakse dokumendi lõppu..';
-$lang['qb_bold'] = 'Rasvane kiri';
-$lang['qb_italic'] = 'Kaldkiri';
-$lang['qb_underl'] = 'Alajoonega kiri';
-$lang['qb_code'] = 'Koodi tekst';
-$lang['qb_h1'] = '1. astme pealkiri';
-$lang['qb_h2'] = '2. astme pealkiri';
-$lang['qb_h3'] = '3. astme pealkiri';
-$lang['qb_h4'] = '4. astme pealkiri';
-$lang['qb_h5'] = '5. astme pealkiri';
-$lang['qb_link'] = 'Siselink';
-$lang['qb_extlink'] = 'Välislink';
-$lang['qb_hr'] = 'Horisontaalne vahejoon';
-$lang['qb_ol'] = 'Nummerdatud nimikiri';
-$lang['qb_ul'] = 'Mummuga nimekiri';
-$lang['qb_media'] = 'Lisa pilte ja muid faile';
-$lang['qb_sig'] = 'Lisa allkiri!';
-
-$lang['authmodfailed'] = 'Vigane kasutajate autentimise konfiguratsioon. Palun teavita sellest serveri haldajat.';
-$lang['authtempfail'] = 'Kasutajate autentimine on ajutiselt rivist väljas. Kui see olukord mõne aja jooksul ei parane, siis teavita sellest serveri haldajat.';
-
-$lang['del_confirm']= 'Kas kustutame selle kirje?';
-
-#$lang['subscribe_success'] = '';
-#$lang['subscribe_error'] = '';
-#$lang['subscribe_noaddress'] = '';
-#$lang['unsubscribe_success'] = '';
-#$lang['unsubscribe_error'] = '';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Estonian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Oliver S6ro <seem.iges at mail.ee>
+ * @author Aari Juhanson <aari at vmg.vil.ee>
+ * @author Kaiko Kaur <kaiko at kultuur.edu.ee>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';//„
+$lang['doublequoteclosing'] = 'â';//“
+$lang['singlequoteopening'] = 'â';//‚
+$lang['singlequoteclosing'] = 'â';//‘
+
+$lang['btn_edit'] = 'Toimeta seda lehte';
+$lang['btn_source'] = 'Näita lehepõhja';
+$lang['btn_show'] = 'Näita lehte';
+$lang['btn_create'] = 'Tekita selle lingi alla leht';
+$lang['btn_search'] = 'Otsi';
+$lang['btn_save'] = 'Salvesta';
+$lang['btn_preview']= 'Eelvaade';
+$lang['btn_top'] = 'Tagasi lehe algusesse';
+$lang['btn_revs'] = 'Eelmised versioonid';
+$lang['btn_recent'] = 'Viimased muudatused';
+$lang['btn_upload'] = 'Lae üles';
+$lang['btn_cancel'] = 'Katkesta';
+$lang['btn_index'] = 'Sisukord';
+$lang['btn_secedit']= 'Toimeta';
+$lang['btn_login'] = 'Logi sisse';
+$lang['btn_logout'] = 'Logi välja';
+$lang['btn_admin'] = 'Administreeri';
+$lang['btn_update'] = 'Uuenda';
+$lang['btn_delete'] = 'Kustuta';
+$lang['btn_newer'] = '<< varajasemad';
+$lang['btn_older'] = '>> hilisemad';
+$lang['btn_back'] = 'Tagasi';
+$lang['btn_backtomedia'] = 'Tagasi faili valikusse';
+$lang['btn_profile'] = 'Minu info';
+$lang['btn_reset'] = 'Taasta';
+$lang['btn_resendpwd'] = 'Saada uus parool';
+$lang['btn_draft'] = 'Toimeta mustandit';
+$lang['btn_recover'] = 'Taata mustand';
+$lang['btn_draftdel'] = 'Kustuta mustand';
+$lang['newpass'] = 'Uus parool';
+$lang['oldpass'] = 'Vana parool';
+$lang['passchk'] = 'Korda uut parooli';
+$lang['profile'] = 'Kasutaja info';
+$lang['minoredit'] = 'Ebaolulised muudatused';
+$lang['draftdate'] = 'Mustand automaatselt salvestatud';
+$lang['regsuccess2'] = 'Kasutaja sai tehtud.';
+$lang['regbadpass'] = 'Uus parool on kirjutatud erinevalt. Proovi uuesti.';
+$lang['uploadexist'] = 'Fail on juba olemas. Midagi ei muudetud.';
+$lang['deletesucc'] = 'Fail nimega "%s" sai kustutatud.';
+$lang['deletefail'] = 'Faili nimega "%s" ei kustutatud (kontrolli õigusi).';
+$lang['mediainuse'] = 'Faili nimega "%s" ei kustutatud, sest see on kasutuses.';
+$lang['js']['keepopen'] = 'Jäta aken peale valiku sooritamist avatuks';
+$lang['js']['hidedetails'] = 'Peida detailid';
+$lang['mediausage'] = 'Kasuta järgmist kirjapilti sellele failile viitamaks:';
+$lang['mediaview'] = 'Vaata faili algsel kujul.';
+$lang['mediaroot'] = 'juur';
+$lang['mediaupload'] = 'Lae fail sellesse nimeruumi (kataloogi). Et tekitada veel alam nimeruum kasuta koolonit Wiki nimes.';
+$lang['mediaextchange'] = 'Faili laiend .%s-st %s-ks!';
+$lang['ref_inuse'] = 'Seda faili ei saa kustutada, sest teda kasutavad järgmised lehed:';
+$lang['ref_hidden'] = 'Mõned viidad failile on lehtedel, millele sul ei ole ligipääsu';
+$lang['youarehere'] = 'Sa oled siin';
+$lang['mail_new_user'] = 'Uus kasutaja:';
+$lang['qb_strike'] = 'Läbijoonitud tekst';
+$lang['qb_smileys'] = 'Emotikonid';
+$lang['qb_chars'] = 'Erisümbolid';
+$lang['admin_register'] = 'Lisa kasutaja';
+
+
+#$lang['reference'] = '';
+#$lang['btn_backlink'] = '';
+#$lang['profna'] = '';
+$lang['btn_subscribe'] = 'Jälgi seda lehte (teated meilile)';
+$lang['btn_unsubscribe'] = 'Lõpeta lehe jälgimine';
+$lang['profnochange'] = 'Muutused puuduvad.';
+$lang['profnoempty'] = 'Tühi nimi ega meiliaadress pole lubatud.';
+$lang['profchanged'] = 'Kasutaja info edukalt muudetud';
+$lang['pwdforget'] = 'Unustasid parooli? Tee uus';
+$lang['resendna'] = 'See wiki ei toeta parooli taassaatmist.';
+$lang['resendpwd'] = 'Saada uus parool';
+$lang['resendpwdmissing'] = 'Khmm... Sa pead täitma kõik väljad.';
+$lang['resendpwdnouser'] = 'Aga sellist kasutajat ei ole.';
+$lang['resendpwdbadauth'] = 'See autentimiskood ei ole õige. Kontrolli, et kopeerisid terve lingi.';
+$lang['resendpwdconfirm'] = 'Kinnituslink saadeti meilile.';
+$lang['resendpwdsuccess'] = 'Uus parool saadeti Sinu meilile.';
+$lang['txt_overwrt'] = 'Kirjutan olemasoleva faili üle';
+$lang['metaedit'] = 'Muuda lisainfot';
+$lang['metasaveerr'] = 'Lisainfo salvestamine läks untsu.';
+$lang['metasaveok'] = 'Lisainfo salvestatud';
+$lang['img_backto'] = 'Tagasi';
+$lang['img_title'] = 'Tiitel';
+$lang['img_caption'] = 'Kirjeldus';
+$lang['img_date'] = 'Kuupäev';
+$lang['img_fname'] = 'Faili nimi';
+$lang['img_fsize'] = 'Suurus';
+$lang['img_artist'] = 'Autor';
+#$lang['img_copyr'] = '';
+$lang['img_format'] = 'Formaat';
+$lang['img_camera'] = 'Kaamera';
+$lang['img_keywords'] = 'Võtmesõnad';
+
+$lang['i_chooselang'] = 'Vali keel';
+$lang['i_installer'] = 'DokuWiki paigaldaja';
+$lang['i_wikiname'] = 'Wiki nimi';
+$lang['i_enableacl'] = 'Kas lubada kasutajate haldus (soovitatav)';
+$lang['i_superuser'] = 'Superkasutaja';
+$lang['i_problems'] = 'Paigaldaja leidis mõned vead, mis on allpool välja toodud. Enne vigade eemaldamist ei saa jätkata.';
+$lang['i_modified'] = 'Ãnnetuste vältimiseks läheb see skript käima ainult värskelt paigaldatud ja muutmata Dokuwiki peal.
+ Sa peaksid ilmselt kogu koodi uuesti lahti pakkima. Vaata ka <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installeerimis juhendit</a>';
+$lang['i_funcna'] = 'PHP funktsiooni <code>%s</code> ei ole olemas.võibolla sinu serveri hooldaja on selle mingil põhjusel keelanud?';
+$lang['i_permfail'] = 'Dokuwiki ei saa kirjutada faili <code>%s</code>. Kontrolli serveris failide õigused üle.';
+$lang['i_confexists'] = '<code>%s</code> on juba olemas';
+$lang['i_writeerr'] = 'Faili <code>%s</code> ei lubata tekitada. Kontrolli kataloogi ja faili õigusi.';
+#$lang['i_badhash'] = '';
+$lang['i_badval'] = '<code>%s</code> - lubamatu või tühi väärtus';
+$lang['i_success'] = 'Seadistamine on õnnelikult lõpule viidud. Sa võid nüüd kustutada faili install.php. Alusta oma <a href="doku.php">uue DokuWiki</a> täitmist.';
+$lang['i_failure'] = 'Konfiguratsiooni faili kirjutamisel esines vigu. Võimalik, et pead need käsitsi parandama enne <a href="doku.php">uue DokuWiki</a> täitma asumist.';
+$lang['i_policy'] = 'Wiki õiguste algne poliitika';
+$lang['i_pol0'] = 'Avatud (lugemine, kirjutamine ja üleslaadimine kõigile lubatud)';
+$lang['i_pol1'] = 'Avalikuks lugemiseks (lugeda saavad kõik, kirjutada ja üles laadida vaid registreeritud kasutajad)';
+$lang['i_pol2'] = 'Suletud (kõik õigused, kaasaarvatud lugemine on lubatud vaid registreeritud kasutajatele)';
+
+$lang['loggedinas'] = 'Logis sisse kui';
+$lang['user'] = 'Kasutaja';
+$lang['pass'] = 'Parool';
+$lang['remember'] = 'Pea mind meeles';
+$lang['fullname'] = 'Täielik nimi';
+$lang['email'] = 'E-post';
+$lang['register'] = 'Registreeri uus kasutaja';
+$lang['badlogin'] = 'Oops, Sinu kasutajanimi või parool oli vale.';
+
+$lang['regmissing'] = 'Kõik väljad tuleb ära täita.';
+$lang['reguexists'] = 'Tegelikult on sellise nimega kasutaja juba olemas.';
+$lang['regsuccess'] = 'Kasutaja sai tehtud. Parool saadeti Sulle e-posti aadressil.';
+$lang['regmailfail']= 'Ilmselt tekkis e-posti teel parooli saatmisel mingi tõrge. Palun suhtle sel teemal
+oma serveri administraatoriga!';
+$lang['regbadmail'] = 'Tundub, et Sinu antud e-posti aadress ei toimi - kui Sa arvad, et tegemist on
+ekstitusega, suhtle oma serveri administraatoriga';
+$lang['regpwmail'] = 'Sinu DokuWiki parool';
+$lang['reghere'] = 'Sul ei olegi veel kasutajakontot? No aga tekita see siis endale!';
+
+$lang['txt_upload'] = 'Vali fail, mida üles laadida';
+$lang['txt_filename'] = 'Siseta oma Wikinimi (soovituslik)';
+$lang['lockedby'] = 'Praegu on selle lukustanud';
+$lang['lockexpire'] = 'Lukustus aegub';
+$lang['willexpire'] = 'Teie lukustus selle lehe toimetamisele aegub umbes minuti pärast.\nIgasugu probleemide vältimiseks kasuta eelvaate nuppu, et lukustusarvesti taas tööle panna.';
+
+$lang['notsavedyet'] = 'Sul on seal salvestamata muudatusi, mis kohe kõige kaduva teed lähevad.\nKas Sa ikka tahad edasi liikuda?';
+$lang['rssfailed'] = 'Sinu soovitud info ammutamisel tekkis viga: ';
+$lang['nothingfound']= 'Oops, aga mitte muhvigi ei leitud.';
+
+$lang['mediaselect'] = 'Hunnik faile';
+$lang['fileupload'] = 'Faili üleslaadimine';
+$lang['uploadsucc'] = 'Ãleslaadimine läks ootuspäraselt hästi';
+$lang['uploadfail'] = 'Ãleslaadimine läks nässu. Ãkki pole Sa selleks lihtsalt piisavalt võimukas tegija?';
+$lang['uploadwrong'] = 'Ei saa Sa midagi üles laadida. Oops, aga seda tüüpi faili sul lihtsalt ei lubata üles laadida';
+$lang['namespaces'] = 'Alajaotus';
+$lang['mediafiles'] = 'Failid on Sulle kättesaadavad';
+
+$lang['hits'] = 'Päringu tabamused';
+$lang['quickhits'] = 'Päringule vastavad lehed';
+$lang['toc'] = 'Sisujuht';
+$lang['current'] = 'Hetkel kehtiv';
+$lang['yours'] = 'Sinu versioon';
+$lang['diff'] = 'Näita erinevusi hetkel kehtiva versiooniga';
+$lang['line'] = 'Rida';
+$lang['breadcrumb'] = 'Käidud rada';
+$lang['lastmod'] = 'Viimati muutnud';
+$lang['by'] = 'persoon';
+$lang['deleted'] = 'eemaldatud';
+$lang['created'] = 'tekitatud';
+$lang['restored'] = 'vana versioon taastatud';
+$lang['summary'] = 'kokkuvõte muudatustest';
+
+$lang['mail_newpage'] = 'leht lisatud:';
+$lang['mail_changed'] = 'leht muudetud';
+
+$lang['nosmblinks'] = 'Windowsis võrguarvutiga ühendamine toimib ainult Internet Exploreris ja
+sisevõrgus.\nAga Sa saad õnneks omale lingi kopeerida ja hiljem kuhugi kleepida.';
+
+$lang['qb_alert'] = 'Sisesta palun tekst, mida Sa tahad kujundada.\nSee lisatakse dokumendi lõppu..';
+$lang['qb_bold'] = 'Rasvane kiri';
+$lang['qb_italic'] = 'Kaldkiri';
+$lang['qb_underl'] = 'Alajoonega kiri';
+$lang['qb_code'] = 'Koodi tekst';
+$lang['qb_h1'] = '1. astme pealkiri';
+$lang['qb_h2'] = '2. astme pealkiri';
+$lang['qb_h3'] = '3. astme pealkiri';
+$lang['qb_h4'] = '4. astme pealkiri';
+$lang['qb_h5'] = '5. astme pealkiri';
+$lang['qb_link'] = 'Siselink';
+$lang['qb_extlink'] = 'Välislink';
+$lang['qb_hr'] = 'Horisontaalne vahejoon';
+$lang['qb_ol'] = 'Nummerdatud nimikiri';
+$lang['qb_ul'] = 'Mummuga nimekiri';
+$lang['qb_media'] = 'Lisa pilte ja muid faile';
+$lang['qb_sig'] = 'Lisa allkiri!';
+
+$lang['authmodfailed'] = 'Vigane kasutajate autentimise konfiguratsioon. Palun teavita sellest serveri haldajat.';
+$lang['authtempfail'] = 'Kasutajate autentimine on ajutiselt rivist väljas. Kui see olukord mõne aja jooksul ei parane, siis teavita sellest serveri haldajat.';
+
+$lang['del_confirm']= 'Kas kustutame selle kirje?';
+
+#$lang['subscribe_success'] = '';
+#$lang['subscribe_error'] = '';
+#$lang['subscribe_noaddress'] = '';
+#$lang['unsubscribe_success'] = '';
+#$lang['unsubscribe_error'] = '';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/et/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Leht lukustatud ======
-
-Hetkel on see leht lukustatud kuna teine kasutaja toimetab tema kallal. Sa pead ootama kuni ta kas
-lõpetab või lukustus aegub.
+====== Leht lukustatud ======
+
+Hetkel on see leht lukustatud kuna teine kasutaja toimetab tema kallal. Sa pead ootama kuni ta kas
+lõpetab või lukustus aegub.
Modified: site/trunk/www-root/wiki/inc/lang/et/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Logi sisse ======
-
-Hetkel pole Sa sisse logitud! Allpool saad sisestada kõik vajaliku, et sisse logida. Kui Sa oled oma
-arvuti taga ainukasutaja oleks hea kui Su arvutil oleks lubatud 'cookies', st. järgmine kord kui
-siia lehele tuled oled automaatselt sisse logitud.
+====== Logi sisse ======
+
+Hetkel pole Sa sisse logitud! Allpool saad sisestada kõik vajaliku, et sisse logida. Kui Sa oled oma
+arvuti taga ainukasutaja oleks hea kui Su arvutil oleks lubatud 'cookies', st. järgmine kord kui
+siia lehele tuled oled automaatselt sisse logitud.
Modified: site/trunk/www-root/wiki/inc/lang/et/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Sinu lehte DokuWiki-s on muudetud. Alljärgnevalt detailid:
-
-Kuupäev : @DATE@
-Brauser : @BROWSER@
-IP-Aadress : @IPADDRESS@
-Arvuti nimi : @HOSTNAME@
-Eelnev versioon : @OLDPAGE@
-Uus versioon : @NEWPAGE@
-Toimeta kokkuvõtet: @SUMMARY@
-Kasutaja : @USER@
-
- at DIFF@
-
-
---
-Selle e-posti tekitas Sulle DokuWiki @DOKUWIKIURL@
+Sinu lehte DokuWiki-s on muudetud. Alljärgnevalt detailid:
+
+Kuupäev : @DATE@
+Brauser : @BROWSER@
+IP-Aadress : @IPADDRESS@
+Arvuti nimi : @HOSTNAME@
+Eelnev versioon : @OLDPAGE@
+Uus versioon : @NEWPAGE@
+Toimeta kokkuvõtet: @SUMMARY@
+Kasutaja : @USER@
+
+ at DIFF@
+
+
+--
+Selle e-posti tekitas Sulle DokuWiki @DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/et/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Seda teemat veel ei ole ======
-
-Sa klikkisid lingile, mille all teemat veel pole. Selle saad Sa tekitada kasutades ''Tekita see leht
-nuppu''.
+======Seda teemat veel ei ole ======
+
+Sa klikkisid lingile, mille all teemat veel pole. Selle saad Sa tekitada kasutades ''Tekita see leht
+nuppu''.
Modified: site/trunk/www-root/wiki/inc/lang/et/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Sellist versiooni pole======
-
-Sellist versiooni ei ole olemas. Selle dokumendi eelmiste versioonide nägemiseks klõpsa ''Eelmised
-versioonid'' nupul.
-
+======Sellist versiooni pole======
+
+Sellist versiooni ei ole olemas. Selle dokumendi eelmiste versioonide nägemiseks klõpsa ''Eelmised
+versioonid'' nupul.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-Hi @FULLNAME@!
-
-Siin on sinu kasutajaandmed @TITLE at ks @DOKUWIKIURL at s
-
-Sisse logimisnimi : @LOGIN@
-Parool : @PASSWORD@
-
---
-Selle kirja saatis DokuWiki @DOKUWIKIURL at st
+Hi @FULLNAME@!
+
+Siin on sinu kasutajaandmed @TITLE at ks @DOKUWIKIURL at s
+
+Sisse logimisnimi : @LOGIN@
+Parool : @PASSWORD@
+
+--
+Selle kirja saatis DokuWiki @DOKUWIKIURL at st
Modified: site/trunk/www-root/wiki/inc/lang/et/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Eelvaade======
-
-Siin saad eelnevalt vaadata, milline su tekst välja näeks. Pea aga meeles, et see **ei ole veel
-salvestatud** !
+======Eelvaade======
+
+Siin saad eelnevalt vaadata, milline su tekst välja näeks. Pea aga meeles, et see **ei ole veel
+salvestatud** !
Modified: site/trunk/www-root/wiki/inc/lang/et/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-Tere @FULLNAME@!
-
-Keegi on Sinu parooli uuendust soovinud kasutajale @TITLE@ (@DOKUWIKIURL@).
-
-Kui see ei olnud Sina, siis võid seda meili lihtsalt ignoreerida.
-Kinnitamaks uue parooli saamise soovi mine aadressile:
-
- at CONFIRM@
-
---
-See meil on saadetud DokuWiki poolt
- at DOKUWIKIURL@
+Tere @FULLNAME@!
+
+Keegi on Sinu parooli uuendust soovinud kasutajale @TITLE@ (@DOKUWIKIURL@).
+
+Kui see ei olnud Sina, siis võid seda meili lihtsalt ignoreerida.
+Kinnitamaks uue parooli saamise soovi mine aadressile:
+
+ at CONFIRM@
+
+--
+See meil on saadetud DokuWiki poolt
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/et/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Seda lehte saad ainult lugeda. Saad küll vaadata lehe põhja aga muuta midagi ei saa. Suhtle oma
-serveri administraatoriga kui Sa millegagi rahul pole.
-
+Seda lehte saad ainult lugeda. Saad küll vaadata lehe põhja aga muuta midagi ei saa. Suhtle oma
+serveri administraatoriga kui Sa millegagi rahul pole.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Viimased muutused======
-
-Viimati muudeti alljärgnevaid lehti.
-
-
+======Viimased muutused======
+
+Viimati muudeti alljärgnevaid lehti.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/et/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Registreeri uus kasutaja ======
-
-Täida alljärgnevad lüngad et me saaks Sulle Wikis kasutajakonto tekitada. Ole nii kena ja kindlasti
-pane kirja oma **kehtiv e-posti aadress** - Sinu uus parool saadetakse sellele aadressile. Sisselogimise
-nimi peaks olema kehtiv [[doku>wiki:pagename|lehenimi]].
-
+====== Registreeri uus kasutaja ======
+
+Täida alljärgnevad lüngad et me saaks Sulle Wikis kasutajakonto tekitada. Ole nii kena ja kindlasti
+pane kirja oma **kehtiv e-posti aadress** - Sinu uus parool saadetakse sellele aadressile. Sisselogimise
+nimi peaks olema kehtiv [[doku>wiki:pagename|lehenimi]].
+
Modified: site/trunk/www-root/wiki/inc/lang/et/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Uus kasutaja on registreeritud. Tema info:
-
-Kasutaja : @NEWUSER@
-Täielik nimi : @NEWNAME@
-E-post : @NEWEMAIL@
-
-Kuupäev : @DATE@
-Lehitseja : @BROWSER@
-IP-Aaddress : @IPADDRESS@
-Hosti nimi : @HOSTNAME@
-
---
-See meil on saadetud DokuWiki poolt
- at DOKUWIKIURL@
+Uus kasutaja on registreeritud. Tema info:
+
+Kasutaja : @NEWUSER@
+Täielik nimi : @NEWNAME@
+E-post : @NEWEMAIL@
+
+Kuupäev : @DATE@
+Lehitseja : @BROWSER@
+IP-Aaddress : @IPADDRESS@
+Hosti nimi : @HOSTNAME@
+
+--
+See meil on saadetud DokuWiki poolt
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/et/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Saada uus parool ======
-
-Palun sisesta oma kasutaja nimi, et saada uut parooli. Soovi kinnitamiseks
-saadame Sinu meilile lingi.
-
+====== Saada uus parool ======
+
+Palun sisesta oma kasutaja nimi, et saada uut parooli. Soovi kinnitamiseks
+saadame Sinu meilile lingi.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======eelnevad versioonid======
-
-Need on käesoleva dokumendi eelnevad versioonid. Vana versiooni juurde tagasi pöördumiseks vali sobiv,
-klõpsa ''Toimeta seda lehte'' peal ja salvesta see.
-
+======eelnevad versioonid======
+
+Need on käesoleva dokumendi eelnevad versioonid. Vana versiooni juurde tagasi pöördumiseks vali sobiv,
+klõpsa ''Toimeta seda lehte'' peal ja salvesta see.
+
Modified: site/trunk/www-root/wiki/inc/lang/et/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Otsi ======
-
-Leiad vasted oma otsingule. Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe
-kasutades ''Toimeta seda lehte'' nuppu.
-
-=====Vasted=====
+======Otsi ======
+
+Leiad vasted oma otsingule. Kui Sa otsitavat ei leidnud võid tekitada oma otsingu nimelise uue lehe
+kasutades ''Toimeta seda lehte'' nuppu.
+
+=====Vasted=====
Modified: site/trunk/www-root/wiki/inc/lang/et/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**See on dokumendi vana versioon!**
-----
+**See on dokumendi vana versioon!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/et/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-ning
-ega
-see
-mina
-sina
-tema
-meie
-teie
-nemad
-com
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+ning
+ega
+see
+mina
+sina
+tema
+meie
+teie
+nemad
+com
+www
Modified: site/trunk/www-root/wiki/inc/lang/et/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Tere!
-
-Lehekülg @PAGE@ on muutunud (@TITLE@).
-Siin on muudatused:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Selle lehe jälgimisest loobumiseks logi wikisse sisse
- at DOKUWIKIURL@ ja siis külasta
- at NEWPAGE@
-ning vali sealt 'Lõpeta jälgimine'.
-
---
-See meil on saadetud DokuWiki poolt
- at DOKUWIKIURL@
+Tere!
+
+Lehekülg @PAGE@ on muutunud (@TITLE@).
+Siin on muudatused:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Selle lehe jälgimisest loobumiseks logi wikisse sisse
+ at DOKUWIKIURL@ ja siis külasta
+ at NEWPAGE@
+ning vali sealt 'Lõpeta jälgimine'.
+
+--
+See meil on saadetud DokuWiki poolt
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/et/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Uuenda oma kasutaja infot ======
-
-Täida ainult need väljad, mida tahad uuendada. Uuendada ei saa kasutajanime.
-
-
+====== Uuenda oma kasutaja infot ======
+
+Täida ainult need väljad, mida tahad uuendada. Uuendada ei saa kasutajanime.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/et/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/et/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/et/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== SPÃMM blokeeritud ======
-
-Sinu muutusi kahjuks **ei** salvestatud kuna tekst sisaldab ühte või rohkem blokeeritud sõna. Kas Sa üritad
-Wikile spämmi saata -- oh sa põrsas! Kui aga arvad, et tegemist on eksitusega, siis suhtle Wiki
-administraatoriga.
-
+====== SPÃMM blokeeritud ======
+
+Sinu muutusi kahjuks **ei** salvestatud kuna tekst sisaldab ühte või rohkem blokeeritud sõna. Kas Sa üritad
+Wikile spämmi saata -- oh sa põrsas! Kui aga arvad, et tegemist on eksitusega, siis suhtle Wiki
+administraatoriga.
+
Modified: site/trunk/www-root/wiki/inc/lang/eu/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Kudeaketa ======
-
-Jarraian wikia kudeatzeko erabilgarri dauden tresnak aurki ditzakezu.
+====== Kudeaketa ======
+
+Jarraian wikia kudeatzeko erabilgarri dauden tresnak aurki ditzakezu.
Modified: site/trunk/www-root/wiki/inc/lang/eu/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Ez duzu baimenik======
-
-Barkatu, ez duzu baimenik orri hau ikusteko. Agian sesioa hastea ahaztu zaizu?
+======Ez duzu baimenik======
+
+Barkatu, ez duzu baimenik orri hau ikusteko. Agian sesioa hastea ahaztu zaizu?
Modified: site/trunk/www-root/wiki/inc/lang/eu/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Aldaketak======
-
-Aukeratutako bertsioaren eta egungo bertsioaren arteko
-aldaketak aurkezten ditu.
-
+======Aldaketak======
+
+Aukeratutako bertsioaren eta egungo bertsioaren arteko
+aldaketak aurkezten ditu.
+
Modified: site/trunk/www-root/wiki/inc/lang/eu/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Egin aldaketak eta ''Gorde'' pultsatu. Begiratu [[wiki:syntax]] Wiki-aren
-sintaxiarentzat. Mesedez aldaketak orrialdea **hobetzeko** bakarrik egin itzazu.
-Probak egin nahi badituzu, ikas ezazu [[playground:playground]] erabiltzen.
+Egin aldaketak eta ''Gorde'' pultsatu. Begiratu [[wiki:syntax]] Wiki-aren
+sintaxiarentzat. Mesedez aldaketak orrialdea **hobetzeko** bakarrik egin itzazu.
+Probak egin nahi badituzu, ikas ezazu [[playground:playground]] erabiltzen.
Modified: site/trunk/www-root/wiki/inc/lang/eu/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Dokumentuaren bertsio zahar bat ireki duzu!** Gordetzen baduzu bertsio berri bat sortuko duzu datu hauekin.
-----
+**Dokumentuaren bertsio zahar bat ireki duzu!** Gordetzen baduzu bertsio berri bat sortuko duzu datu hauekin.
+----
Modified: site/trunk/www-root/wiki/inc/lang/eu/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Aurkibidea ======
-
-[[doku>wiki:namespaces|namespaces]] bitartez ordenatutako aurkibidea da hau.
-
+====== Aurkibidea ======
+
+[[doku>wiki:namespaces|namespaces]] bitartez ordenatutako aurkibidea da hau.
+
Modified: site/trunk/www-root/wiki/inc/lang/eu/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,85 +1,85 @@
-<?php
-/**
- * Basque language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Xabi Ezpeleta <xezpeleta at mendikute.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = 'Aldatu orri hau';
-$lang['btn_source'] = 'Kodea ikusi';
-$lang['btn_show'] = 'Orria ikusi';
-$lang['btn_create'] = 'Sortu orri hau';
-$lang['btn_search'] = 'Bilatu';
-$lang['btn_save'] = 'Gorde';
-$lang['btn_preview']= 'Aurrebista';
-$lang['btn_top'] = 'Itzuli gora';
-$lang['btn_revs'] = 'Bertsio zaharrak';
-$lang['btn_recent'] = 'Azken aldaketak';
-$lang['btn_upload'] = 'Ireki';
-$lang['btn_cancel'] = 'Ezeztatu';
-$lang['btn_index'] = 'Aurkibidea';
-$lang['btn_secedit']= 'Aldatu';
-$lang['btn_login'] = 'Sartu';
-$lang['btn_logout'] = 'Atera';
-
-$lang['loggedinas'] = 'Erabiltzailea';
-$lang['user'] = 'Erabiltzailea';
-$lang['pass'] = 'Pasahitza';
-$lang['fullname'] = 'Izen Deiturak';
-$lang['email'] = 'E-Maila';
-$lang['register'] = 'Erregistratu';
-$lang['badlogin'] = 'Barkatu, prozesuak huts egin du; saiatu berriz';
-
-$lang['regmissing'] = 'Barkatu, hutsune guztiak bete behar dituzu.';
-$lang['reguexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';
-$lang['regsuccess'] = 'Erabiltzailea sortu da. Pasahitza mailez bidaliko zaizu.';
-$lang['regmailfail']= 'Badirudi arazoren bat egon dela pasahitza mailez bidaltzeko orduan. Administratzailearekin harremanetan jarri!';
-$lang['regbadmail'] = 'Emandako helbidea ez da zuzena - jarri harremanetan administratzailearekin hau akats bat dela uste baduzu';
-$lang['regpwmail'] = 'Zure DokuWiki pasahitza';
-$lang['reghere'] = 'Oraindik ez duzu konturik? Eginzazu bat!';
-
-$lang['txt_upload'] = 'Ireki nahi den fitxategia aukeratu';
-$lang['txt_filename'] = 'Idatzi wikiname-a (aukerazkoa)';
-
-$lang['mediaselect'] = 'Aukeratu Mediafile-a';
-$lang['fileupload'] = 'Igo Mediafile-a';
-$lang['uploadsucc'] = 'Igoera arrakastatsua';
-$lang['uploadfail'] = 'Igoerak huts egin du. Baimen arazoengatik agian?';
-
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Matching pagenames';
-$lang['toc'] = 'Eduki Taula';
-$lang['current'] = 'egungoa';
-$lang['diff'] = 'egungo bertsioarekin dituen aldaketak aurkezten ditu';
-$lang['line'] = 'Marra';
-$lang['breadcrumb'] = 'Traza';
-$lang['lastmod'] = 'Azken aldaketa';
-$lang['deleted'] = 'ezabatua';
-$lang['created'] = 'sortua';
-$lang['restored'] = 'bertsio zaharra berrezarria';
-$lang['summary'] = 'Aldatu laburpena';
-
-$lang['mail_newpage'] = '[DokuWiki] gehitutako orria:';
-$lang['mail_changed'] = '[DokuWiki] aldatutako orria:';
-
-$lang['qb_bold'] = 'Letra beltzez';
-$lang['qb_italic'] = 'Letra italiarrez';
-$lang['qb_underl'] = 'Azpimarratua';
-$lang['qb_code'] = 'Kodea';
-$lang['qb_h1'] = 'Izenburua 1';
-$lang['qb_h2'] = 'Izenburua 2';
-$lang['qb_h3'] = 'Izenburua 3';
-$lang['qb_h4'] = 'Izenburua 4';
-$lang['qb_h5'] = 'Izenburua 5';
-$lang['qb_link'] = 'Barruko Lotura';
-$lang['qb_extlink'] = 'Kanpoko Lotura';
-$lang['qb_hr'] = 'Horizontal Marra';
-$lang['qb_ol'] = 'Zerrenda ordenatuko gaia';
-$lang['qb_ul'] = 'Zerrenda desordenatuko gaia';
-$lang['qb_media'] = 'Irudiak/Fitxategiak gehitu';
-$lang['qb_sig'] = 'Gehitu sinadura';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Basque language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Xabi Ezpeleta <xezpeleta at mendikute.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = 'Aldatu orri hau';
+$lang['btn_source'] = 'Kodea ikusi';
+$lang['btn_show'] = 'Orria ikusi';
+$lang['btn_create'] = 'Sortu orri hau';
+$lang['btn_search'] = 'Bilatu';
+$lang['btn_save'] = 'Gorde';
+$lang['btn_preview']= 'Aurrebista';
+$lang['btn_top'] = 'Itzuli gora';
+$lang['btn_revs'] = 'Bertsio zaharrak';
+$lang['btn_recent'] = 'Azken aldaketak';
+$lang['btn_upload'] = 'Ireki';
+$lang['btn_cancel'] = 'Ezeztatu';
+$lang['btn_index'] = 'Aurkibidea';
+$lang['btn_secedit']= 'Aldatu';
+$lang['btn_login'] = 'Sartu';
+$lang['btn_logout'] = 'Atera';
+
+$lang['loggedinas'] = 'Erabiltzailea';
+$lang['user'] = 'Erabiltzailea';
+$lang['pass'] = 'Pasahitza';
+$lang['fullname'] = 'Izen Deiturak';
+$lang['email'] = 'E-Maila';
+$lang['register'] = 'Erregistratu';
+$lang['badlogin'] = 'Barkatu, prozesuak huts egin du; saiatu berriz';
+
+$lang['regmissing'] = 'Barkatu, hutsune guztiak bete behar dituzu.';
+$lang['reguexists'] = 'Barkatu, izen bereko erabiltzailea existitzen da.';
+$lang['regsuccess'] = 'Erabiltzailea sortu da. Pasahitza mailez bidaliko zaizu.';
+$lang['regmailfail']= 'Badirudi arazoren bat egon dela pasahitza mailez bidaltzeko orduan. Administratzailearekin harremanetan jarri!';
+$lang['regbadmail'] = 'Emandako helbidea ez da zuzena - jarri harremanetan administratzailearekin hau akats bat dela uste baduzu';
+$lang['regpwmail'] = 'Zure DokuWiki pasahitza';
+$lang['reghere'] = 'Oraindik ez duzu konturik? Eginzazu bat!';
+
+$lang['txt_upload'] = 'Ireki nahi den fitxategia aukeratu';
+$lang['txt_filename'] = 'Idatzi wikiname-a (aukerazkoa)';
+
+$lang['mediaselect'] = 'Aukeratu Mediafile-a';
+$lang['fileupload'] = 'Igo Mediafile-a';
+$lang['uploadsucc'] = 'Igoera arrakastatsua';
+$lang['uploadfail'] = 'Igoerak huts egin du. Baimen arazoengatik agian?';
+
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Matching pagenames';
+$lang['toc'] = 'Eduki Taula';
+$lang['current'] = 'egungoa';
+$lang['diff'] = 'egungo bertsioarekin dituen aldaketak aurkezten ditu';
+$lang['line'] = 'Marra';
+$lang['breadcrumb'] = 'Traza';
+$lang['lastmod'] = 'Azken aldaketa';
+$lang['deleted'] = 'ezabatua';
+$lang['created'] = 'sortua';
+$lang['restored'] = 'bertsio zaharra berrezarria';
+$lang['summary'] = 'Aldatu laburpena';
+
+$lang['mail_newpage'] = '[DokuWiki] gehitutako orria:';
+$lang['mail_changed'] = '[DokuWiki] aldatutako orria:';
+
+$lang['qb_bold'] = 'Letra beltzez';
+$lang['qb_italic'] = 'Letra italiarrez';
+$lang['qb_underl'] = 'Azpimarratua';
+$lang['qb_code'] = 'Kodea';
+$lang['qb_h1'] = 'Izenburua 1';
+$lang['qb_h2'] = 'Izenburua 2';
+$lang['qb_h3'] = 'Izenburua 3';
+$lang['qb_h4'] = 'Izenburua 4';
+$lang['qb_h5'] = 'Izenburua 5';
+$lang['qb_link'] = 'Barruko Lotura';
+$lang['qb_extlink'] = 'Kanpoko Lotura';
+$lang['qb_hr'] = 'Horizontal Marra';
+$lang['qb_ol'] = 'Zerrenda ordenatuko gaia';
+$lang['qb_ul'] = 'Zerrenda desordenatuko gaia';
+$lang['qb_media'] = 'Irudiak/Fitxategiak gehitu';
+$lang['qb_sig'] = 'Gehitu sinadura';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/eu/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Orria blokeatua ======
-
-Orrialde hau blokeatua dago beste erabiltzaile batengatik. Berak aldaketak bukatu arte itxaron beharko duzu.
+====== Orria blokeatua ======
+
+Orrialde hau blokeatua dago beste erabiltzaile batengatik. Berak aldaketak bukatu arte itxaron beharko duzu.
Modified: site/trunk/www-root/wiki/inc/lang/eu/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Login ======
-
-Ez duzu sesiorik hasi! Sar ezazu zure erabiltzaile izena eta pasahitza.
-Gogoratu coockie-ak baimenduta izan behar dituzula.
-
+====== Login ======
+
+Ez duzu sesiorik hasi! Sar ezazu zure erabiltzaile izena eta pasahitza.
+Gogoratu coockie-ak baimenduta izan behar dituzula.
+
Modified: site/trunk/www-root/wiki/inc/lang/eu/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-DokuWiki-Eskuliburuetan orriren bat aldatu edo gehitu da. Hemen dituzu xehetasunak
-
-Data : @DATE@
-Nabigatzailea : @BROWSER@
-IP-Helbidea : @IPADDRESS@
-Host izena : @HOSTNAME@
-Bertsio zaharra : @OLDPAGE@
-Bertsio berria : @NEWPAGE@
-Aldatu laburpena : @SUMMARY@
-Erabiltzailea : @USER@
-
- at DIFF@
-
-
---
-Email hau DokuWiki erabiliz sortu da;
- at DOKUWIKIURL@
+DokuWiki-Eskuliburuetan orriren bat aldatu edo gehitu da. Hemen dituzu xehetasunak
+
+Data : @DATE@
+Nabigatzailea : @BROWSER@
+IP-Helbidea : @IPADDRESS@
+Host izena : @HOSTNAME@
+Bertsio zaharra : @OLDPAGE@
+Bertsio berria : @NEWPAGE@
+Aldatu laburpena : @SUMMARY@
+Erabiltzailea : @USER@
+
+ at DIFF@
+
+
+--
+Email hau DokuWiki erabiliz sortu da;
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/eu/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Gai hau ez da existitzen oraindik======
-
-Existitzen ez den gai batera doan lotura bat jarraitu duzu. Zuk zeuk sortu dezakezu ''Sortu orri hau'' erabiliz.
+======Gai hau ez da existitzen oraindik======
+
+Existitzen ez den gai batera doan lotura bat jarraitu duzu. Zuk zeuk sortu dezakezu ''Sortu orri hau'' erabiliz.
Modified: site/trunk/www-root/wiki/inc/lang/eu/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Berrikuspen hau ez da existitzen======
-
-Zehaztutako bertsioa ez da existitzen. Erabili ''Bertsio zaharrak'' dokumentu honen aurreko bertsioen zerrenda bat ikusi ahal izateko.
+======Berrikuspen hau ez da existitzen======
+
+Zehaztutako bertsioa ez da existitzen. Erabili ''Bertsio zaharrak'' dokumentu honen aurreko bertsioen zerrenda bat ikusi ahal izateko.
Modified: site/trunk/www-root/wiki/inc/lang/eu/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Kaixo @FULLNAME@!
-
-Hau da zure erabiltzailea @TITLE@ -rentzako @DOKUWIKIURL@
-
-Erabiltzailea : @LOGIN@
-Pasahitza : @PASSWORD@
-
---
-eMail hau DokuWikiren bitartez sortu da;
- at DOKUWIKIURL@
+Kaixo @FULLNAME@!
+
+Hau da zure erabiltzailea @TITLE@ -rentzako @DOKUWIKIURL@
+
+Erabiltzailea : @LOGIN@
+Pasahitza : @PASSWORD@
+
+--
+eMail hau DokuWikiren bitartez sortu da;
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/eu/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Aurreikuspena======
-
-Hau zure testuaren aurrebista bat besterik ez da. Gogoratu: **ez da gorde** oraindik!
+======Aurreikuspena======
+
+Hau zure testuaren aurrebista bat besterik ez da. Gogoratu: **ez da gorde** oraindik!
Modified: site/trunk/www-root/wiki/inc/lang/eu/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Orri hau irakurtzeko bakarrik da. Jatorria ikusi dezakezu baina ezin duzu aldatu. Administratzailearekin kontaktuan jarri gaizki dagoela uste baduzu.
+Orri hau irakurtzeko bakarrik da. Jatorria ikusi dezakezu baina ezin duzu aldatu. Administratzailearekin kontaktuan jarri gaizki dagoela uste baduzu.
Modified: site/trunk/www-root/wiki/inc/lang/eu/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Azken Aldaketak======
-
-Ondorengo orriak aldatu berriak izan dira:
+======Azken Aldaketak======
+
+Ondorengo orriak aldatu berriak izan dira:
Modified: site/trunk/www-root/wiki/inc/lang/eu/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Bertsio zaharrak======
-
-Hauek egungo dokumentua baino zaharragoak diren bertsioak dira. Hauetako bertsio batetara itzultzeko aukera ezazu behetik, pultsatu ''Sortu orri hau'' eta gorde.
+======Bertsio zaharrak======
+
+Hauek egungo dokumentua baino zaharragoak diren bertsioak dira. Hauetako bertsio batetara itzultzeko aukera ezazu behetik, pultsatu ''Sortu orri hau'' eta gorde.
Modified: site/trunk/www-root/wiki/inc/lang/eu/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Bilaketa======
-
-Emaitzak ondorengo aurkiketan bilatu ditzakezu. Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu
-dezakezu orri berri bat bilaketa ostean ''Sortu orri hau'' erabiliz.
-
-=====Bilaketa emaitzak:=====
+======Bilaketa======
+
+Emaitzak ondorengo aurkiketan bilatu ditzakezu. Bilatzen zabiltzana aurkitu ez baduzu, zuk zeuk sortu
+dezakezu orri berri bat bilaketa ostean ''Sortu orri hau'' erabiliz.
+
+=====Bilaketa emaitzak:=====
Modified: site/trunk/www-root/wiki/inc/lang/eu/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Hau dokumentuaren bertsio zahar bat da!**
-----
+**Hau dokumentuaren bertsio zahar bat da!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/eu/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/eu/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/eu/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======SPAMaren aurkako babesa======
-
-Zure aldaketak **ez** dira gorde aurrez debekatutako hitzak erabili dituzulako.
-Wiki-a spammeatzen saitu bazara... -- Aiss osobuko! (VS). Hau akats bat dela uste baduzu jarri arremanetan Wiki-aren administratzailearekin.
+======SPAMaren aurkako babesa======
+
+Zure aldaketak **ez** dira gorde aurrez debekatutako hitzak erabili dituzulako.
+Wiki-a spammeatzen saitu bazara... -- Aiss osobuko! (VS). Hau akats bat dela uste baduzu jarri arremanetan Wiki-aren administratzailearekin.
Modified: site/trunk/www-root/wiki/inc/lang/fi/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ylläpito ======
-
-Alla on lista DokuWiki:ssä käytössä olevista ylläpitotoiminnoista.
+====== Ylläpito ======
+
+Alla on lista DokuWiki:ssä käytössä olevista ylläpitotoiminnoista.
Modified: site/trunk/www-root/wiki/inc/lang/fi/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Linkitykset ======
-
-Tässä lista tälle sivuille linkittävistä sivuista.
-
+====== Linkitykset ======
+
+Tässä lista tälle sivuille linkittävistä sivuista.
+
Modified: site/trunk/www-root/wiki/inc/lang/fi/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== On olemassa uudempi versio ======
-
-Muokkaamastasi dokumentintista on olemassa uudempi versio. Näin käy, kun toinen käyttäjä
-muuttaa dokumenttia sillä aikaa, kun sinä olit muokkaamassa sitä.
-
-Tutki alla näkyvät eroavaisuudet kunnolla ja päätä mikä versio säilytetään. Jos valitse "talenna"
-sinun versiosi tallennetaan. Valitse ''peru'' pitääksesi tämänhetkisen version.
+====== On olemassa uudempi versio ======
+
+Muokkaamastasi dokumentintista on olemassa uudempi versio. Näin käy, kun toinen käyttäjä
+muuttaa dokumenttia sillä aikaa, kun sinä olit muokkaamassa sitä.
+
+Tutki alla näkyvät eroavaisuudet kunnolla ja päätä mikä versio säilytetään. Jos valitse "talenna"
+sinun versiosi tallennetaan. Valitse ''peru'' pitääksesi tämänhetkisen version.
Modified: site/trunk/www-root/wiki/inc/lang/fi/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Lupa evätty ======
-
-Sinulla ei ole tarpeeksi valtuuksia jatkaa. Ehkä unohdit kirjautua sisään?
+====== Lupa evätty ======
+
+Sinulla ei ole tarpeeksi valtuuksia jatkaa. Ehkä unohdit kirjautua sisään?
Modified: site/trunk/www-root/wiki/inc/lang/fi/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Erot ======
-
-Tämä näyttää erot valitun ja nykyisen version kesken tästä sivusta.
+====== Erot ======
+
+Tämä näyttää erot valitun ja nykyisen version kesken tästä sivusta.
Modified: site/trunk/www-root/wiki/inc/lang/fi/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Vedos löydetty ======
-
-Edellinen muokkauksesi tälle sivulle ei ole päivittynyt oikein. DokuWiki on automaattisesti tallentanut vedoksen muokkauksen aikana. Voit nyt jatkaa muokkausta. Alla näet tallennetun version edellisestä istunnostasi.
-
+====== Vedos löydetty ======
+
+Edellinen muokkauksesi tälle sivulle ei ole päivittynyt oikein. DokuWiki on automaattisesti tallentanut vedoksen muokkauksen aikana. Voit nyt jatkaa muokkausta. Alla näet tallennetun version edellisestä istunnostasi.
+
Valitse jos haluat //palauttaa// edellisen muutoksesi, //poistaa// automaattisesti tallennetun vedoksen, vai //peruuttaa// muutokset.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/fi/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Muokkaa sivua ja paina ''Tallenna''. Katso [[wiki:syntax]] nähdäksesi Wikisyntaksi. Muuta sivua
-vain jos voit **parantaa** sitä. Jos haluat kokeilla Wikiä hyvä paikka siihen on [[playground:playground]].
+Muokkaa sivua ja paina ''Tallenna''. Katso [[wiki:syntax]] nähdäksesi Wikisyntaksi. Muuta sivua
+vain jos voit **parantaa** sitä. Jos haluat kokeilla Wikiä hyvä paikka siihen on [[playground:playground]].
Modified: site/trunk/www-root/wiki/inc/lang/fi/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Olet ladannut vanhan version dokumentista** Jos tallennat tulee tästä uusin versio dokumentista.
-----
+**Olet ladannut vanhan version dokumentista** Jos tallennat tulee tästä uusin versio dokumentista.
+----
Modified: site/trunk/www-root/wiki/inc/lang/fi/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== hakemisto ======
-
-Tämä on hakemisto kaikista saatavilla olevista sivuista järjestettynä
-[[doku>wiki:namespace|nimiavaruuksittain]].
+====== hakemisto ======
+
+Tämä on hakemisto kaikista saatavilla olevista sivuista järjestettynä
+[[doku>wiki:namespace|nimiavaruuksittain]].
Modified: site/trunk/www-root/wiki/inc/lang/fi/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,21 +1,21 @@
-<p>Tämä sivu avustaa <a href="http://wiki.splitbrain.org">Dokuwikin</a> ensiasennuksessa ja
- asetuksissa. Lisätietoa asennusohjelmasta löytyy ohjelman
- <a href="http://wiki.splitbrain.org/wiki:installer">dokumentaatiosta</a>.</p>
-
-<p>DokuWiki käyttää tavallisia tiedostoja wiki-sivujen, sekä muiden niihin liittyvien
- tietojen kuten kuvien, hakuindeksien, versionhallinan jne. tallentamiseen. Toimiakseen
- oikein DokuWikillä <strong>täytyy</strong> olla kirjoitusoikeus niihin hakemistoihin joissa nämä
- tiedostot sijaitsevat. Asennusohjelma ei pysty asettamaan näitä oikeuksia. Tämä täytyy
- useimmiten tehdä suoraan komentoriviltä tai muulla, esimerkiksi
- internet-palveluntarjoajan määrittämällä tavalla, kuten FTP -ohjelmalla tai erillisen
- asetusvalikon kautta. (cPanel).</p>
-
-<p>Asennusohjelma määrittelee DokuWikin <acronym title="kyttoikeudet">käyttöoikeudet (ACL)</acronym>,
- jotka mahdollistavat ylläpitäjän sisäänkirjautumisen ja pääsyn DokuWikin ylläpito -valikkoon,
- josta voidaan asentaa plugineja, hallita käyttäjätietoja, wiki-sivujen luku- ja
- kirjoitusoikeuksia sekä muita asetuksia. Käyttöoikeuksien käyttäminen ei ole pakollista,
- mutta se helpottaa DokuWikin ylläpitämistä.</p>
-
-<p>Kokeneille käyttäjille tai käyttäjille joilla on erityisvaatimuksia asennukselle
- löytyy lisätietoa <a href="http://wiki.splitbrain.org/wiki:install">asennuksesta</a> sekä
- <a href="http://wiki.splitbrain.org/wiki:config">asetuksista</a>.</p>
+<p>Tämä sivu avustaa <a href="http://wiki.splitbrain.org">Dokuwikin</a> ensiasennuksessa ja
+ asetuksissa. Lisätietoa asennusohjelmasta löytyy ohjelman
+ <a href="http://wiki.splitbrain.org/wiki:installer">dokumentaatiosta</a>.</p>
+
+<p>DokuWiki käyttää tavallisia tiedostoja wiki-sivujen, sekä muiden niihin liittyvien
+ tietojen kuten kuvien, hakuindeksien, versionhallinan jne. tallentamiseen. Toimiakseen
+ oikein DokuWikillä <strong>täytyy</strong> olla kirjoitusoikeus niihin hakemistoihin joissa nämä
+ tiedostot sijaitsevat. Asennusohjelma ei pysty asettamaan näitä oikeuksia. Tämä täytyy
+ useimmiten tehdä suoraan komentoriviltä tai muulla, esimerkiksi
+ internet-palveluntarjoajan määrittämällä tavalla, kuten FTP -ohjelmalla tai erillisen
+ asetusvalikon kautta. (cPanel).</p>
+
+<p>Asennusohjelma määrittelee DokuWikin <acronym title="kyttoikeudet">käyttöoikeudet (ACL)</acronym>,
+ jotka mahdollistavat ylläpitäjän sisäänkirjautumisen ja pääsyn DokuWikin ylläpito -valikkoon,
+ josta voidaan asentaa plugineja, hallita käyttäjätietoja, wiki-sivujen luku- ja
+ kirjoitusoikeuksia sekä muita asetuksia. Käyttöoikeuksien käyttäminen ei ole pakollista,
+ mutta se helpottaa DokuWikin ylläpitämistä.</p>
+
+<p>Kokeneille käyttäjille tai käyttäjille joilla on erityisvaatimuksia asennukselle
+ löytyy lisätietoa <a href="http://wiki.splitbrain.org/wiki:install">asennuksesta</a> sekä
+ <a href="http://wiki.splitbrain.org/wiki:config">asetuksista</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/fi/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,201 +1,201 @@
-<?php
-/**
- * Finnish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Petteri <petteri at gmail.com>
- * @author Matti Pöllä <mpo at iki.fi>
- * @author otto at valjakko.net
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Muokkaa tätä sivua';
-$lang['btn_source'] = 'Näytä sivun lähdekoodi';
-$lang['btn_show'] = 'Näytä sivu';
-$lang['btn_create'] = 'Luo tämä sivu';
-$lang['btn_search'] = 'Etsi';
-$lang['btn_save'] = 'Tallenna';
-$lang['btn_preview'] = 'Esikatselu';
-$lang['btn_top'] = 'Takaisin ylös';
-$lang['btn_newer'] = '<< uudemmat';
-$lang['btn_older'] = 'vanhemmat >>';
-$lang['btn_revs'] = 'Vanhat versiot';
-$lang['btn_recent'] = 'Viimeiset muutokset';
-$lang['btn_upload'] = 'Lähetä tiedosto';
-$lang['btn_cancel'] = 'Peru';
-$lang['btn_index'] = 'Hakemisto';
-$lang['btn_secedit'] = 'Muokkaa';
-$lang['btn_login'] = 'Kirjaudu sisään';
-$lang['btn_logout'] = 'Kirjaudu ulos';
-$lang['btn_admin'] = 'Ylläpito';
-$lang['btn_update'] = 'Päivitä';
-$lang['btn_delete'] = 'Poista';
-$lang['btn_back'] = 'Takaisin';
-$lang['btn_backlink'] = 'Paluulinkit';
-$lang['btn_backtomedia'] = 'Takaisin mediatiedostojen valintaan';
-$lang['btn_subscribe'] = 'Tilaa muutokset';
-$lang['btn_unsubscribe'] = 'Lopeta muutosten tilaus';
-$lang['btn_profile'] = 'Päivitä profiili';
-$lang['btn_reset'] = 'Tyhjennä';
-$lang['btn_resendpwd'] = 'Lähetä uusi salasana';
-$lang['btn_draft'] = 'Muokkaa luonnosta';
-$lang['btn_recover'] = 'Palauta luonnos';
-$lang['btn_draftdel'] = 'Poista luonnos';
-$lang['loggedinas'] = 'Kirjautunut nimellä';
-$lang['user'] = 'Käyttäjänimi';
-$lang['pass'] = 'Salasana';
-$lang['newpass'] = 'Uusi salasana';
-$lang['oldpass'] = 'Vahvista nykyinen salasana';
-$lang['passchk'] = 'uudelleen';
-$lang['remember'] = 'Muista minut';
-$lang['fullname'] = 'Koko nimi';
-$lang['email'] = 'Sähköposti';
-$lang['register'] = 'Rekisteröidy';
-$lang['profile'] = 'Käyttäjän profiili';
-$lang['badlogin'] = 'Käyttäjänimi tai salasana oli väärä.';
-$lang['minoredit'] = 'Pieni muutos';
-$lang['draftdate'] = 'Luonnos tallennettu automaattisesti';
-$lang['regmissing'] = 'Kaikki kentät tulee täyttää.';
-$lang['reguexists'] = 'Käyttäjä tällä käyttäjänimellä on jo olemassa.';
-$lang['regsuccess'] = 'Käyttäjä luotiin ja salasana lähetettiin sähköpostilla.';
-$lang['regsuccess2'] = 'Käyttäjänimi on luotu.';
-$lang['regmailfail'] = 'Näyttää siltä, että salasanan lähettämisessä tapahtui virhe. Ota yhteys ylläpitäjään!';
-$lang['regbadmail'] = 'Antamasi sähköpostiosoite näyttää epäkelvolta. Jos pidät tätä virheenä ota yhteys ylläpitäjään.';
-$lang['regbadpass'] = 'Annetut kaksi salasanaa eivät täsmää. Yritä uudelleen.';
-$lang['regpwmail'] = 'DokuWiki salasanasi';
-$lang['reghere'] = 'Puuttuuko sinulta käyttäjätili? Hanki sellainen';
-$lang['profna'] = 'Tässä wikissä profiilien muokkaaminen ei ole mahdollista';
-$lang['profnochange'] = 'Ei muutoksia.';
-$lang['profnoempty'] = 'Tyhjä nimi tai sähköpostiosoite ei ole sallittu.';
-$lang['profchanged'] = 'Käyttäjän profiilin päivitys onnistui.';
-$lang['pwdforget'] = 'Unohtuiko salasana? Hanki uusi';
-$lang['resendna'] = 'Tämä wiki ei tue salasanan uudelleenlähettämistä.';
-$lang['resendpwd'] = 'Lähetä uusi salasana käyttäjälle';
-$lang['resendpwdmissing'] = 'Kaikki kentät on täytettävä.';
-$lang['resendpwdnouser'] = 'Käyttäjää ei löydy tietokannastamme.';
-$lang['resendpwdbadauth'] = 'Tunnistuskoodi on virheellinen. Varmista, että käytit koko varmistuslinkkiä.';
-$lang['resendpwdconfirm'] = 'Varmistuslinkki on lähetetty sähköpostilla';
-$lang['resendpwdsuccess'] = 'Uusi salasanasi on lähetetty sähköpostilla.';
-$lang['txt_upload'] = 'Valitse tiedosto lähetettäväksi';
-$lang['txt_filename'] = 'Syötä wikinimi (valinnainen)';
-$lang['txt_overwrt'] = 'Ylikirjoita olemassa oleva';
-$lang['lockedby'] = 'Tällä hetkellä tiedoston on lukinnnut';
-$lang['lockexpire'] = 'Lukitus päättyy';
-$lang['willexpire'] = 'Lukituksesi tämän sivun muokkaukseen päättyy minuutin kuluttua.\nRistiriitojen välttämiseksi paina esikatselu-nappia nollataksesi lukitusajan.';
-$lang['notsavedyet'] = 'Dokumentissa on tallentamattomia muutoksia, jotka häviävät.\n Haluatko varmasti jatkaa?';
-$lang['rssfailed'] = 'Virhe tapahtui noudettaessa tätä syötettä: ';
-$lang['nothingfound'] = 'Mitään ei löytynyt.';
-$lang['mediaselect'] = 'Mediatiedoston valinta';
-$lang['fileupload'] = 'Mediatiedoston lähetys';
-$lang['uploadsucc'] = 'Tiedoston lähetys onnistui';
-$lang['uploadfail'] = 'Tiedoston lähetys epäonnistui. Syynä ehkä väärät oikeudet?';
-$lang['uploadwrong'] = 'Tiedoston lähetys evätty. Tämä tiedostopääte on kielletty';
-$lang['uploadexist'] = 'Tiedosto on jo olemassa. Mitään ei tehty.';
-$lang['uploadbadcontent'] = 'Tiedoston sisältö ei vastannut päätettä %s';
-$lang['uploadspam'] = 'Roskapostin estolista esti tiedoston lähetyksen.';
-$lang['uploadxss'] = 'Tiedoston lähetys estettiin mahdollisen haitallisen sisällön vuoksi.';
-$lang['deletesucc'] = 'Tiedosto "%s" on poistettu.';
-$lang['deletefail'] = 'Kohdetta "%s" poistaminen ei onnistunut - tarkista oikeudet.';
-$lang['mediainuse'] = 'Tiedostoa "%s" ei ole poistettu - se on vielä käytössä.';
-$lang['namespaces'] = 'Nimiavaruudet';
-$lang['mediafiles'] = 'Tarjolla olevat tiedostot';
-$lang['js']['keepopen'] = 'Pidä valinnan ikkuna avoinna.';
-$lang['js']['hidedetails'] = 'Piilota yksityiskohdat';
-$lang['mediausage'] = 'Käytä seuraavaa merkintätapaa viittausta tehtäessä:';
-$lang['mediaview'] = 'Katsele alkuperäistä tiedostoa';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Siirrä tiedosto nykyiseen nimiavaruuteen täällä. Voit luoda uusia alinimiavaruuksia käyttämällä kaksoispistettä tiedoston wikinimessä.';
-$lang['mediaextchange'] = 'Tiedoston pääte muutettu: .%s on nyt .%s!';
-$lang['reference'] = 'Viitteet';
-$lang['ref_inuse'] = 'Tiedostoa ei voi poistaa, koska seuraavat sivut käyttävät sitä:';
-$lang['ref_hidden'] = 'Osa viitteistä on sivuilla, joihin sinulla ei ole lukuoikeutta';
-$lang['hits'] = 'Osumia';
-$lang['quickhits'] = 'Sopivat sivunimet';
-$lang['toc'] = 'Sisällysluettelo';
-$lang['current'] = 'nykyinen';
-$lang['yours'] = 'Sinun versiosi';
-$lang['diff'] = 'Näytä eroavaisuudet nykyiseen versioon';
-$lang['diff2'] = 'Näytä eroavaisuudet valittuun versioon';
-$lang['line'] = 'Rivi';
-$lang['breadcrumb'] = 'Jäljet';
-$lang['youarehere'] = 'Olet täällä';
-$lang['lastmod'] = 'Viimeksi muutettu';
-$lang['deleted'] = 'poistettu';
-$lang['created'] = 'luotu';
-$lang['restored'] = 'vanhat versiot palautettu';
-$lang['external_edit'] = 'ulkoinen muokkaus';
-$lang['summary'] = 'Yhteenveto muokkauksesta';
-$lang['mail_newpage'] = 'sivu lisätty:';
-$lang['mail_changed'] = 'sivu muutettu:';
-$lang['mail_new_user'] = 'uusi käyttäjä:';
-$lang['mail_upload'] = 'tiedosto lähetetty:';
-$lang['nosmblinks'] = 'Linkit Windows-jakoihin toimivat vain Microsof Internet Explorerilla.\nVoit silti kopioida ja liittää linkin.';
-$lang['qb_alert'] = 'Syötä teksti jonka haluat muotoilla.\nSe lisätään dokumentin loppuun.';
-$lang['qb_bold'] = 'Lihavoitu teksti';
-$lang['qb_italic'] = 'Kursivoitu teksti';
-$lang['qb_underl'] = 'Alleviivattu teksti';
-$lang['qb_code'] = 'Kooditeksti';
-$lang['qb_strike'] = 'Yliviivattu teksti';
-$lang['qb_h1'] = 'Taso 1 otsikko';
-$lang['qb_h2'] = 'Taso 2 otsikko';
-$lang['qb_h3'] = 'Taso 3 otsikko';
-$lang['qb_h4'] = 'Taso 4 otsikko';
-$lang['qb_h5'] = 'Taso 5 otsikko';
-$lang['qb_link'] = 'Sisäinen linkki';
-$lang['qb_extlink'] = 'Ulkoinen linkki';
-$lang['qb_hr'] = 'Vaakaeroitin';
-$lang['qb_ol'] = 'Järjestetyn listan osa ';
-$lang['qb_ul'] = 'Epäjärjestetyn listan osa';
-$lang['qb_media'] = 'Lisää kuvia ja muita tiedostoja';
-$lang['qb_sig'] = 'Lisää allekirjoitus';
-$lang['qb_smileys'] = 'Hymiöt';
-$lang['qb_chars'] = 'Erikoismerkit';
-$lang['del_confirm'] = 'Haluatko todella poistaa valitut kohteet?';
-$lang['admin_register'] = 'Lisää uusi käyttäjä';
-$lang['metaedit'] = 'Muokkaa metadataa';
-$lang['metasaveerr'] = 'Metadatan kirjoittaminen epäonnistui';
-$lang['metasaveok'] = 'Metadata tallennettu';
-$lang['img_backto'] = 'Takaisin';
-$lang['img_title'] = 'Otsikko';
-$lang['img_caption'] = 'Kuvateksti';
-$lang['img_date'] = 'Päivämäärä';
-$lang['img_fname'] = 'Tiedoston nimi';
-$lang['img_fsize'] = 'Koko';
-$lang['img_artist'] = 'Kuvaaja';
-$lang['img_copyr'] = 'Tekijänoikeus';
-$lang['img_format'] = 'Formaatti';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Avainsanat';
-$lang['subscribe_success'] = '%s lisättiin käyttäjän %s seurattavien listaan';
-$lang['subscribe_error'] = 'Lisättäessä %s käyttäjän %s seurattavien listaan tapahtui virhe';
-$lang['subscribe_noaddress'] = 'Käyttäjänimelle ei löydy osoitetta. Seurattavien listaan lisääminen ei onnistu.';
-$lang['unsubscribe_success'] = '%s poistettiin käyttäjän %s seurattavien listasta';
-$lang['unsubscribe_error'] = 'Poistettaessa %s käyttäjän %s seurattavien listasta tapahtui virhe';
-$lang['authmodfailed'] = 'Käyttäjien autentikoinnin asetukset ovat virheelliset. Ilmoita asiasta wikin ylläpitäjälle.';
-$lang['authtempfail'] = 'Käyttäjien autentikointi ei tällä hetkellä onnistu. Jos ongelma jatkuu, ota yhteyttä wikin ylläpitäjään.';
-$lang['i_chooselang'] = 'Valitse kieli';
-$lang['i_installer'] = 'DokuWikin asentaja';
-$lang['i_wikiname'] = 'Wikin nimi';
-$lang['i_enableacl'] = 'Käytä käyttöoikeuksian hallintaa (ACL) (Suositeltu)';
-$lang['i_superuser'] = 'Pääkäyttäjä';
-$lang['i_problems'] = 'Asennusohjelma löysi alla listattuja ongelmia ongelmia. Et voi jatkaa ennenkuin ne on korjattu.';
-$lang['i_modified'] = 'Turvallisuussyistä tämä ohjelma toimii vain uusien ja muokkamattomian Dokuwiki asennusten kanssa. Pura tiedostot uudestaan asennuspaketista, tai lue <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki asennusohjeen (Englanniksi)</a>';
-$lang['i_funcna'] = 'PHP funktio <code>%s</code> ei ole käytettävissä. Ehkä palveluntarjoajasi on poistanut sen jostain syystä?';
-$lang['i_phpver'] = 'PHP versiosi <code>%s</code> on pienempi, kuin tarvitaan <code>%s</code>. PHP asennukseni pitää päivittää.';
-$lang['i_permfail'] = '<code>%s</code> ei ole DokuWikin kirjoitettavissa. Muokkaa hakemiston oikeuksia!';
-$lang['i_confexists'] = '<code>%s</code> on jo olemassa';
-$lang['i_writeerr'] = '<code>%s</code>n luonti epäonnistui. Tarkista hekmiston/tiedoston oikeudet ja luo tiedosto käsin.';
-$lang['i_badhash'] = 'tunnistamaton tai muokattu dokuwiki.php (tarkistusumma=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - väärä tai tyhjä arvo';
-$lang['i_success'] = 'Kokoonpano tehty onnistuneesti. Voit poistaa install.php tiedoston. Jatka <a href="doku.php">uuteen DokuWikiisi</a>.';
-$lang['i_failure'] = 'Joitain virheitä tapahtui kirjoitettaessa vaadittavia tiedostoja. Sinun pitää korjata ne käsin ennen kuin voit käyttää <a href="doku.php">uutta DokuWikiäsi</a>.';
-$lang['i_policy'] = 'Käyttöoikeuksien oletus menettelytapa';
-$lang['i_pol0'] = 'Avoin Wiki (luku, kirjoitus, tiedostojen lähetys kaikille)';
-$lang['i_pol1'] = 'Julkinen Wiki (luku kaikilla, kirjoitus ja tiedostojen lähetys rekisteröidyillä käyttäjilla)';
-$lang['i_pol2'] = 'Suljettu Wiki (luku, kirjoitus ja tiedostojen lähetys vain rekisteröityneillä käyttäjillä)';
-$lang['i_retry'] = 'Yritä uudelleen';
+<?php
+/**
+ * Finnish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Petteri <petteri at gmail.com>
+ * @author Matti Pöllä <mpo at iki.fi>
+ * @author otto at valjakko.net
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Muokkaa tätä sivua';
+$lang['btn_source'] = 'Näytä sivun lähdekoodi';
+$lang['btn_show'] = 'Näytä sivu';
+$lang['btn_create'] = 'Luo tämä sivu';
+$lang['btn_search'] = 'Etsi';
+$lang['btn_save'] = 'Tallenna';
+$lang['btn_preview'] = 'Esikatselu';
+$lang['btn_top'] = 'Takaisin ylös';
+$lang['btn_newer'] = '<< uudemmat';
+$lang['btn_older'] = 'vanhemmat >>';
+$lang['btn_revs'] = 'Vanhat versiot';
+$lang['btn_recent'] = 'Viimeiset muutokset';
+$lang['btn_upload'] = 'Lähetä tiedosto';
+$lang['btn_cancel'] = 'Peru';
+$lang['btn_index'] = 'Hakemisto';
+$lang['btn_secedit'] = 'Muokkaa';
+$lang['btn_login'] = 'Kirjaudu sisään';
+$lang['btn_logout'] = 'Kirjaudu ulos';
+$lang['btn_admin'] = 'Ylläpito';
+$lang['btn_update'] = 'Päivitä';
+$lang['btn_delete'] = 'Poista';
+$lang['btn_back'] = 'Takaisin';
+$lang['btn_backlink'] = 'Paluulinkit';
+$lang['btn_backtomedia'] = 'Takaisin mediatiedostojen valintaan';
+$lang['btn_subscribe'] = 'Tilaa muutokset';
+$lang['btn_unsubscribe'] = 'Lopeta muutosten tilaus';
+$lang['btn_profile'] = 'Päivitä profiili';
+$lang['btn_reset'] = 'Tyhjennä';
+$lang['btn_resendpwd'] = 'Lähetä uusi salasana';
+$lang['btn_draft'] = 'Muokkaa luonnosta';
+$lang['btn_recover'] = 'Palauta luonnos';
+$lang['btn_draftdel'] = 'Poista luonnos';
+$lang['loggedinas'] = 'Kirjautunut nimellä';
+$lang['user'] = 'Käyttäjänimi';
+$lang['pass'] = 'Salasana';
+$lang['newpass'] = 'Uusi salasana';
+$lang['oldpass'] = 'Vahvista nykyinen salasana';
+$lang['passchk'] = 'uudelleen';
+$lang['remember'] = 'Muista minut';
+$lang['fullname'] = 'Koko nimi';
+$lang['email'] = 'Sähköposti';
+$lang['register'] = 'Rekisteröidy';
+$lang['profile'] = 'Käyttäjän profiili';
+$lang['badlogin'] = 'Käyttäjänimi tai salasana oli väärä.';
+$lang['minoredit'] = 'Pieni muutos';
+$lang['draftdate'] = 'Luonnos tallennettu automaattisesti';
+$lang['regmissing'] = 'Kaikki kentät tulee täyttää.';
+$lang['reguexists'] = 'Käyttäjä tällä käyttäjänimellä on jo olemassa.';
+$lang['regsuccess'] = 'Käyttäjä luotiin ja salasana lähetettiin sähköpostilla.';
+$lang['regsuccess2'] = 'Käyttäjänimi on luotu.';
+$lang['regmailfail'] = 'Näyttää siltä, että salasanan lähettämisessä tapahtui virhe. Ota yhteys ylläpitäjään!';
+$lang['regbadmail'] = 'Antamasi sähköpostiosoite näyttää epäkelvolta. Jos pidät tätä virheenä ota yhteys ylläpitäjään.';
+$lang['regbadpass'] = 'Annetut kaksi salasanaa eivät täsmää. Yritä uudelleen.';
+$lang['regpwmail'] = 'DokuWiki salasanasi';
+$lang['reghere'] = 'Puuttuuko sinulta käyttäjätili? Hanki sellainen';
+$lang['profna'] = 'Tässä wikissä profiilien muokkaaminen ei ole mahdollista';
+$lang['profnochange'] = 'Ei muutoksia.';
+$lang['profnoempty'] = 'Tyhjä nimi tai sähköpostiosoite ei ole sallittu.';
+$lang['profchanged'] = 'Käyttäjän profiilin päivitys onnistui.';
+$lang['pwdforget'] = 'Unohtuiko salasana? Hanki uusi';
+$lang['resendna'] = 'Tämä wiki ei tue salasanan uudelleenlähettämistä.';
+$lang['resendpwd'] = 'Lähetä uusi salasana käyttäjälle';
+$lang['resendpwdmissing'] = 'Kaikki kentät on täytettävä.';
+$lang['resendpwdnouser'] = 'Käyttäjää ei löydy tietokannastamme.';
+$lang['resendpwdbadauth'] = 'Tunnistuskoodi on virheellinen. Varmista, että käytit koko varmistuslinkkiä.';
+$lang['resendpwdconfirm'] = 'Varmistuslinkki on lähetetty sähköpostilla';
+$lang['resendpwdsuccess'] = 'Uusi salasanasi on lähetetty sähköpostilla.';
+$lang['txt_upload'] = 'Valitse tiedosto lähetettäväksi';
+$lang['txt_filename'] = 'Syötä wikinimi (valinnainen)';
+$lang['txt_overwrt'] = 'Ylikirjoita olemassa oleva';
+$lang['lockedby'] = 'Tällä hetkellä tiedoston on lukinnnut';
+$lang['lockexpire'] = 'Lukitus päättyy';
+$lang['willexpire'] = 'Lukituksesi tämän sivun muokkaukseen päättyy minuutin kuluttua.\nRistiriitojen välttämiseksi paina esikatselu-nappia nollataksesi lukitusajan.';
+$lang['notsavedyet'] = 'Dokumentissa on tallentamattomia muutoksia, jotka häviävät.\n Haluatko varmasti jatkaa?';
+$lang['rssfailed'] = 'Virhe tapahtui noudettaessa tätä syötettä: ';
+$lang['nothingfound'] = 'Mitään ei löytynyt.';
+$lang['mediaselect'] = 'Mediatiedoston valinta';
+$lang['fileupload'] = 'Mediatiedoston lähetys';
+$lang['uploadsucc'] = 'Tiedoston lähetys onnistui';
+$lang['uploadfail'] = 'Tiedoston lähetys epäonnistui. Syynä ehkä väärät oikeudet?';
+$lang['uploadwrong'] = 'Tiedoston lähetys evätty. Tämä tiedostopääte on kielletty';
+$lang['uploadexist'] = 'Tiedosto on jo olemassa. Mitään ei tehty.';
+$lang['uploadbadcontent'] = 'Tiedoston sisältö ei vastannut päätettä %s';
+$lang['uploadspam'] = 'Roskapostin estolista esti tiedoston lähetyksen.';
+$lang['uploadxss'] = 'Tiedoston lähetys estettiin mahdollisen haitallisen sisällön vuoksi.';
+$lang['deletesucc'] = 'Tiedosto "%s" on poistettu.';
+$lang['deletefail'] = 'Kohdetta "%s" poistaminen ei onnistunut - tarkista oikeudet.';
+$lang['mediainuse'] = 'Tiedostoa "%s" ei ole poistettu - se on vielä käytössä.';
+$lang['namespaces'] = 'Nimiavaruudet';
+$lang['mediafiles'] = 'Tarjolla olevat tiedostot';
+$lang['js']['keepopen'] = 'Pidä valinnan ikkuna avoinna.';
+$lang['js']['hidedetails'] = 'Piilota yksityiskohdat';
+$lang['mediausage'] = 'Käytä seuraavaa merkintätapaa viittausta tehtäessä:';
+$lang['mediaview'] = 'Katsele alkuperäistä tiedostoa';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Siirrä tiedosto nykyiseen nimiavaruuteen täällä. Voit luoda uusia alinimiavaruuksia käyttämällä kaksoispistettä tiedoston wikinimessä.';
+$lang['mediaextchange'] = 'Tiedoston pääte muutettu: .%s on nyt .%s!';
+$lang['reference'] = 'Viitteet';
+$lang['ref_inuse'] = 'Tiedostoa ei voi poistaa, koska seuraavat sivut käyttävät sitä:';
+$lang['ref_hidden'] = 'Osa viitteistä on sivuilla, joihin sinulla ei ole lukuoikeutta';
+$lang['hits'] = 'Osumia';
+$lang['quickhits'] = 'Sopivat sivunimet';
+$lang['toc'] = 'Sisällysluettelo';
+$lang['current'] = 'nykyinen';
+$lang['yours'] = 'Sinun versiosi';
+$lang['diff'] = 'Näytä eroavaisuudet nykyiseen versioon';
+$lang['diff2'] = 'Näytä eroavaisuudet valittuun versioon';
+$lang['line'] = 'Rivi';
+$lang['breadcrumb'] = 'Jäljet';
+$lang['youarehere'] = 'Olet täällä';
+$lang['lastmod'] = 'Viimeksi muutettu';
+$lang['deleted'] = 'poistettu';
+$lang['created'] = 'luotu';
+$lang['restored'] = 'vanhat versiot palautettu';
+$lang['external_edit'] = 'ulkoinen muokkaus';
+$lang['summary'] = 'Yhteenveto muokkauksesta';
+$lang['mail_newpage'] = 'sivu lisätty:';
+$lang['mail_changed'] = 'sivu muutettu:';
+$lang['mail_new_user'] = 'uusi käyttäjä:';
+$lang['mail_upload'] = 'tiedosto lähetetty:';
+$lang['nosmblinks'] = 'Linkit Windows-jakoihin toimivat vain Microsof Internet Explorerilla.\nVoit silti kopioida ja liittää linkin.';
+$lang['qb_alert'] = 'Syötä teksti jonka haluat muotoilla.\nSe lisätään dokumentin loppuun.';
+$lang['qb_bold'] = 'Lihavoitu teksti';
+$lang['qb_italic'] = 'Kursivoitu teksti';
+$lang['qb_underl'] = 'Alleviivattu teksti';
+$lang['qb_code'] = 'Kooditeksti';
+$lang['qb_strike'] = 'Yliviivattu teksti';
+$lang['qb_h1'] = 'Taso 1 otsikko';
+$lang['qb_h2'] = 'Taso 2 otsikko';
+$lang['qb_h3'] = 'Taso 3 otsikko';
+$lang['qb_h4'] = 'Taso 4 otsikko';
+$lang['qb_h5'] = 'Taso 5 otsikko';
+$lang['qb_link'] = 'Sisäinen linkki';
+$lang['qb_extlink'] = 'Ulkoinen linkki';
+$lang['qb_hr'] = 'Vaakaeroitin';
+$lang['qb_ol'] = 'Järjestetyn listan osa ';
+$lang['qb_ul'] = 'Epäjärjestetyn listan osa';
+$lang['qb_media'] = 'Lisää kuvia ja muita tiedostoja';
+$lang['qb_sig'] = 'Lisää allekirjoitus';
+$lang['qb_smileys'] = 'Hymiöt';
+$lang['qb_chars'] = 'Erikoismerkit';
+$lang['del_confirm'] = 'Haluatko todella poistaa valitut kohteet?';
+$lang['admin_register'] = 'Lisää uusi käyttäjä';
+$lang['metaedit'] = 'Muokkaa metadataa';
+$lang['metasaveerr'] = 'Metadatan kirjoittaminen epäonnistui';
+$lang['metasaveok'] = 'Metadata tallennettu';
+$lang['img_backto'] = 'Takaisin';
+$lang['img_title'] = 'Otsikko';
+$lang['img_caption'] = 'Kuvateksti';
+$lang['img_date'] = 'Päivämäärä';
+$lang['img_fname'] = 'Tiedoston nimi';
+$lang['img_fsize'] = 'Koko';
+$lang['img_artist'] = 'Kuvaaja';
+$lang['img_copyr'] = 'Tekijänoikeus';
+$lang['img_format'] = 'Formaatti';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords'] = 'Avainsanat';
+$lang['subscribe_success'] = '%s lisättiin käyttäjän %s seurattavien listaan';
+$lang['subscribe_error'] = 'Lisättäessä %s käyttäjän %s seurattavien listaan tapahtui virhe';
+$lang['subscribe_noaddress'] = 'Käyttäjänimelle ei löydy osoitetta. Seurattavien listaan lisääminen ei onnistu.';
+$lang['unsubscribe_success'] = '%s poistettiin käyttäjän %s seurattavien listasta';
+$lang['unsubscribe_error'] = 'Poistettaessa %s käyttäjän %s seurattavien listasta tapahtui virhe';
+$lang['authmodfailed'] = 'Käyttäjien autentikoinnin asetukset ovat virheelliset. Ilmoita asiasta wikin ylläpitäjälle.';
+$lang['authtempfail'] = 'Käyttäjien autentikointi ei tällä hetkellä onnistu. Jos ongelma jatkuu, ota yhteyttä wikin ylläpitäjään.';
+$lang['i_chooselang'] = 'Valitse kieli';
+$lang['i_installer'] = 'DokuWikin asentaja';
+$lang['i_wikiname'] = 'Wikin nimi';
+$lang['i_enableacl'] = 'Käytä käyttöoikeuksian hallintaa (ACL) (Suositeltu)';
+$lang['i_superuser'] = 'Pääkäyttäjä';
+$lang['i_problems'] = 'Asennusohjelma löysi alla listattuja ongelmia ongelmia. Et voi jatkaa ennenkuin ne on korjattu.';
+$lang['i_modified'] = 'Turvallisuussyistä tämä ohjelma toimii vain uusien ja muokkamattomian Dokuwiki asennusten kanssa. Pura tiedostot uudestaan asennuspaketista, tai lue <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki asennusohjeen (Englanniksi)</a>';
+$lang['i_funcna'] = 'PHP funktio <code>%s</code> ei ole käytettävissä. Ehkä palveluntarjoajasi on poistanut sen jostain syystä?';
+$lang['i_phpver'] = 'PHP versiosi <code>%s</code> on pienempi, kuin tarvitaan <code>%s</code>. PHP asennukseni pitää päivittää.';
+$lang['i_permfail'] = '<code>%s</code> ei ole DokuWikin kirjoitettavissa. Muokkaa hakemiston oikeuksia!';
+$lang['i_confexists'] = '<code>%s</code> on jo olemassa';
+$lang['i_writeerr'] = '<code>%s</code>n luonti epäonnistui. Tarkista hekmiston/tiedoston oikeudet ja luo tiedosto käsin.';
+$lang['i_badhash'] = 'tunnistamaton tai muokattu dokuwiki.php (tarkistusumma=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - väärä tai tyhjä arvo';
+$lang['i_success'] = 'Kokoonpano tehty onnistuneesti. Voit poistaa install.php tiedoston. Jatka <a href="doku.php">uuteen DokuWikiisi</a>.';
+$lang['i_failure'] = 'Joitain virheitä tapahtui kirjoitettaessa vaadittavia tiedostoja. Sinun pitää korjata ne käsin ennen kuin voit käyttää <a href="doku.php">uutta DokuWikiäsi</a>.';
+$lang['i_policy'] = 'Käyttöoikeuksien oletus menettelytapa';
+$lang['i_pol0'] = 'Avoin Wiki (luku, kirjoitus, tiedostojen lähetys kaikille)';
+$lang['i_pol1'] = 'Julkinen Wiki (luku kaikilla, kirjoitus ja tiedostojen lähetys rekisteröidyillä käyttäjilla)';
+$lang['i_pol2'] = 'Suljettu Wiki (luku, kirjoitus ja tiedostojen lähetys vain rekisteröityneillä käyttäjillä)';
+$lang['i_retry'] = 'Yritä uudelleen';
Modified: site/trunk/www-root/wiki/inc/lang/fi/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Sivu lukittu ======
-
-Tämä sivu on tällä hetkellä lukittuna, koska se on toisen käyttäjän muokkauksessa. Joudut
-odottamaan, kunnes hän lopettaa muokkauksen, tai kunnes lukko aukeaa.
+====== Sivu lukittu ======
+
+Tämä sivu on tällä hetkellä lukittuna, koska se on toisen käyttäjän muokkauksessa. Joudut
+odottamaan, kunnes hän lopettaa muokkauksen, tai kunnes lukko aukeaa.
Modified: site/trunk/www-root/wiki/inc/lang/fi/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Sisäänkirjautuminen ======
-
-Et ole tällä hetkellä kirjautunut sisään!. Anna käyttäjätunnus ja salasana alle kirjautuaksesi
-sisään. Muista että evästeiden käyttö tulee olla päällä, jotta sisäänkirjautuminen onnistuu.
+====== Sisäänkirjautuminen ======
+
+Et ole tällä hetkellä kirjautunut sisään!. Anna käyttäjätunnus ja salasana alle kirjautuaksesi
+sisään. Muista että evästeiden käyttö tulee olla päällä, jotta sisäänkirjautuminen onnistuu.
Modified: site/trunk/www-root/wiki/inc/lang/fi/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-DokuWikiisi lisättiin tai siellä muutettiin sivua. Tässä yksityiskohdat
-
-Päivämäärä : @DATE@
-Selain : @BROWSER@
-IP-Osoite : @IPADDRESS@
-Isäntänimi : @HOSTNAME@
-Vanha versio : @OLDPAGE@
-Uusi versio : @NEWPAGE@
-Yhteenveto muokkauksesta : @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-Tämän postin generoi DokuWiki
- at DOKUWIKIURL@
+DokuWikiisi lisättiin tai siellä muutettiin sivua. Tässä yksityiskohdat
+
+Päivämäärä : @DATE@
+Selain : @BROWSER@
+IP-Osoite : @IPADDRESS@
+Isäntänimi : @HOSTNAME@
+Vanha versio : @OLDPAGE@
+Uusi versio : @NEWPAGE@
+Yhteenveto muokkauksesta : @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+Tämän postin generoi DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fi/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Tätä otsikkoa ei vielä ole ======
-
-Olet seurannut linkkiä otsikkoon jota ei vielä ole. Voit luoda tämän käyttämällä ''Luo tämä sivu'' -nappia.
+====== Tätä otsikkoa ei vielä ole ======
+
+Olet seurannut linkkiä otsikkoon jota ei vielä ole. Voit luoda tämän käyttämällä ''Luo tämä sivu'' -nappia.
Modified: site/trunk/www-root/wiki/inc/lang/fi/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-====== Ei tälläistä versiota ======
-Kyseistä versiota ei ole. Käytä ''Vanha versio''-nappia nähdäksesi listan tämän dokumentin vanhoista versioista
+====== Ei tälläistä versiota ======
+Kyseistä versiota ei ole. Käytä ''Vanha versio''-nappia nähdäksesi listan tämän dokumentin vanhoista versioista
Modified: site/trunk/www-root/wiki/inc/lang/fi/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Terve @FULLNAME@!
-
-Tässä käyttäjätietosi sivulla @TITLE@ osoitteessa @DOKUWIKIURL@
-
-Käyttäjätunnus : @LOGIN@
-Salasana : @PASSWORD@
-
---
-Tämän postin generoi DokuWiki
- at DOKUWIKIURL@
+Terve @FULLNAME@!
+
+Tässä käyttäjätietosi sivulla @TITLE@ osoitteessa @DOKUWIKIURL@
+
+Käyttäjätunnus : @LOGIN@
+Salasana : @PASSWORD@
+
+--
+Tämän postin generoi DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fi/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Esikatselu ======
-
-Tämä on esikatselu miltä tekstisi tulee näyttäämään. Muista tätä **ei ole tallennettu** vielä!
+====== Esikatselu ======
+
+Tämä on esikatselu miltä tekstisi tulee näyttäämään. Muista tätä **ei ole tallennettu** vielä!
Modified: site/trunk/www-root/wiki/inc/lang/fi/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Hei @FULLNAME@!
-
-Joku pyysi uutta salanaa login nimellesi @TITLE@ sivustolla @DOKUWIKIURL@
-
-Jos sinä ei pyytänyt uutta salasanaa, niin voit unohtaa tämän postin.
-
-Käytä alla olevaa linkkiä vahvistaaksesi, että pyynnön lähettäjä todella olet sinä.
-
- at CONFIRM@
-
---
-Tämän postin generoi DokuWiki
- at DOKUWIKIURL@
+Hei @FULLNAME@!
+
+Joku pyysi uutta salanaa login nimellesi @TITLE@ sivustolla @DOKUWIKIURL@
+
+Jos sinä ei pyytänyt uutta salasanaa, niin voit unohtaa tämän postin.
+
+Käytä alla olevaa linkkiä vahvistaaksesi, että pyynnön lähettäjä todella olet sinä.
+
+ at CONFIRM@
+
+--
+Tämän postin generoi DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fi/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Tämä sivu on vain luettavissa. Voit katsoa sen lähdekoodia, mutta et muuttaa sitä. Kysy ylläpitäjältä jos pidät tätä vääryytenä.
+Tämä sivu on vain luettavissa. Voit katsoa sen lähdekoodia, mutta et muuttaa sitä. Kysy ylläpitäjältä jos pidät tätä vääryytenä.
Modified: site/trunk/www-root/wiki/inc/lang/fi/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Viimeiset muutokset ======
-
-Seuraavat sivut ovat muuttuneet viimeaikoina.
-
+====== Viimeiset muutokset ======
+
+Seuraavat sivut ovat muuttuneet viimeaikoina.
+
Modified: site/trunk/www-root/wiki/inc/lang/fi/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Rekisteröi uusi käyttäjä ======
-
-Täytä alla olevat tiedot tehdäksesi uusi käyttäjätili tähän wikiin. Muista antaa **toimiva
-sähköpostiosoite**. Jos sinulta ei kysytä uutta salasanaa, niin uusi salasanasi lähetetään sinne. Käyttäjänimi pitää olla myös käypä [[doku>wiki:pagename|sivunimi]].
+====== Rekisteröi uusi käyttäjä ======
+
+Täytä alla olevat tiedot tehdäksesi uusi käyttäjätili tähän wikiin. Muista antaa **toimiva
+sähköpostiosoite**. Jos sinulta ei kysytä uutta salasanaa, niin uusi salasanasi lähetetään sinne. Käyttäjänimi pitää olla myös käypä [[doku>wiki:pagename|sivunimi]].
Modified: site/trunk/www-root/wiki/inc/lang/fi/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Uusi käyttäjä on rekisteröitynyt. Tässä tiedot:
-
-Käyttäjänimi : @NEWUSER@
-Kokonimi : @NEWNAME@
-Sähköposti : @NEWEMAIL@
-
-Päivämäärä : @DATE@
-Selain : @BROWSER@
-IP-osoite : @IPADDRESS@
-Hostname : @HOSTNAME@
-
---
-Tämän postin generoi DokuWiki osoitteessa
- at DOKUWIKIURL@
+Uusi käyttäjä on rekisteröitynyt. Tässä tiedot:
+
+Käyttäjänimi : @NEWUSER@
+Kokonimi : @NEWNAME@
+Sähköposti : @NEWEMAIL@
+
+Päivämäärä : @DATE@
+Selain : @BROWSER@
+IP-osoite : @IPADDRESS@
+Hostname : @HOSTNAME@
+
+--
+Tämän postin generoi DokuWiki osoitteessa
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fi/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Lähetä uusi salasana ======
-
-Täytä käyttäjätunnuksesi kaavakkeseen pyytääksesi uutta salasanaa wikin käyttäjätilillesi. Vahvistuslinkki lähetetään kirjautumisen yhteydessä antamaan sähköpostiosoitteeseen.
+====== Lähetä uusi salasana ======
+
+Täytä käyttäjätunnuksesi kaavakkeseen pyytääksesi uutta salasanaa wikin käyttäjätilillesi. Vahvistuslinkki lähetetään kirjautumisen yhteydessä antamaan sähköpostiosoitteeseen.
Modified: site/trunk/www-root/wiki/inc/lang/fi/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Vanha versio ======
-
-Nämä ovat vanhoja versioita nykyisestä dokumentista. Jos haluat palauttaa vanhan version
-valitse se alhaalta, paina ''Muokkaa tätä sivua'' ja tallenna se.
+====== Vanha versio ======
+
+Nämä ovat vanhoja versioita nykyisestä dokumentista. Jos haluat palauttaa vanhan version
+valitse se alhaalta, paina ''Muokkaa tätä sivua'' ja tallenna se.
Modified: site/trunk/www-root/wiki/inc/lang/fi/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Etsi ======
-
-Löydät etsinnän tulokset alta. Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.
-
-===== Tulokset =====
+====== Etsi ======
+
+Löydät etsinnän tulokset alta. Jos et löytänyt etsimääsi voit luoda uuden sivun tiedustelusi pohjalta käyttämällä ''Muokkaa tätä sivua'' -napilla.
+
+===== Tulokset =====
Modified: site/trunk/www-root/wiki/inc/lang/fi/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Tämä on vanha versio dokumentista!**
-----
+**Tämä on vanha versio dokumentista!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/fi/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-# Tämä on lista sanoista, jotka indeksoija ohittaa. Yksi sana riviä kohti
-# Kun muokkaat sivua, varmista että käytät UNIX rivinvaihtoa (yksi newline)
-# Ei tarvitse lisätä alle kolmen merkin sanoja. NE ohitetaan automaatisesti.
-# Jos wikissäsin muita kieliä, lisää sanoja listaan esim sivulta http://www.ranks.nl/stopwords/
-www
-eli
-tai
-sinä
-sinun
-com
-oli
+# Tämä on lista sanoista, jotka indeksoija ohittaa. Yksi sana riviä kohti
+# Kun muokkaat sivua, varmista että käytät UNIX rivinvaihtoa (yksi newline)
+# Ei tarvitse lisätä alle kolmen merkin sanoja. NE ohitetaan automaatisesti.
+# Jos wikissäsin muita kieliä, lisää sanoja listaan esim sivulta http://www.ranks.nl/stopwords/
+www
+eli
+tai
+sinä
+sinun
+com
+oli
Modified: site/trunk/www-root/wiki/inc/lang/fi/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Hei!
-
-Sivua @PAGE@ wiki-sivustolla @TITLE@ on muokattu.
-Tässä muutokset:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Poistaaksesi sivun seurannan, kirjaudu wikiin osoitteessa
- at DOKUWIKIURL@ ja siirry sivulle
- at NEWPAGE@
-ja valitse 'Lopeta tarkkailu'.
-
---
-Tämän viestin generoi DokuWiki osoitteessa
- at DOKUWIKIURL@
+Hei!
+
+Sivua @PAGE@ wiki-sivustolla @TITLE@ on muokattu.
+Tässä muutokset:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Poistaaksesi sivun seurannan, kirjaudu wikiin osoitteessa
+ at DOKUWIKIURL@ ja siirry sivulle
+ at NEWPAGE@
+ja valitse 'Lopeta tarkkailu'.
+
+--
+Tämän viestin generoi DokuWiki osoitteessa
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fi/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Päivitä käyttäjätilisi profiilia ======
-
+====== Päivitä käyttäjätilisi profiilia ======
+
Täytä vain ne kentät, joita haluat muuttaa. Käyttäjä tunnustasi et voi muuttaa.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/fi/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Tiedosto ladattiin DokuWikillesi. Tässä yksityiskohtaiset tiedot:
-
-Tiedosto : @MEDIA@
-PVM : @DATE@
-Selain : @BROWSER@
-IP-Osoite : @IPADDRESS@
-Hostname : @HOSTNAME@
-Koko : @SIZE@
-MIME Type : @MIME@
-Käyttäjä : @USER@
-
---
-Tämän postin generoi DokuWiki osoitteessa
+Tiedosto ladattiin DokuWikillesi. Tässä yksityiskohtaiset tiedot:
+
+Tiedosto : @MEDIA@
+PVM : @DATE@
+Selain : @BROWSER@
+IP-Osoite : @IPADDRESS@
+Hostname : @HOSTNAME@
+Koko : @SIZE@
+MIME Type : @MIME@
+Käyttäjä : @USER@
+
+--
+Tämän postin generoi DokuWiki osoitteessa
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/fi/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fi/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fi/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Roskaposti torjuttu ======
-
-Muutoksiasi **ei** talletettu, koska ne pitivät sisällään yhden tai useampia epäkelpoja sanoja.
-Jos yritit spämmätä Wikiä, häpeä! Jos pidät tätä virheenä ota yhtettä wikin ylläpitäjään.
+====== Roskaposti torjuttu ======
+
+Muutoksiasi **ei** talletettu, koska ne pitivät sisällään yhden tai useampia epäkelpoja sanoja.
+Jos yritit spämmätä Wikiä, häpeä! Jos pidät tätä virheenä ota yhtettä wikin ylläpitäjään.
Modified: site/trunk/www-root/wiki/inc/lang/fo/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Fyrisiting ======
-
-Niðanfyri kanst tú finna eina røð av amboðum til fyrisiting.
-
+====== Fyrisiting ======
+
+Niðanfyri kanst tú finna eina røð av amboðum til fyrisiting.
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÃvÃsing afturúr ======
-
-Hetta er ein listi yvur øll tey skjøl sum vÃsa aftur á tað núverandi skjali.
-
+====== ÃvÃsing afturúr ======
+
+Hetta er ein listi yvur øll tey skjøl sum vÃsa aftur á tað núverandi skjali.
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Ein nÃggjari útgáva av skjalinum er til ======
-
-Ein nýggjari útgáva av hesum skjalinum er til. Hetta hendur tá fleiri brúkarir rætta à skjalinum samstundis.
-
-Eftirkanna tær vÃstu broytingar nágreiniliga, og avgerð hvat fyri útgávu sum skal goymast. Um tú velur ''Goym'', verður tÃn útgáva av skalinum goymd. Velur tú ''Angra'' varðveittur tú tà núverandi útgávuna.
+====== Ein nÃggjari útgáva av skjalinum er til ======
+
+Ein nýggjari útgáva av hesum skjalinum er til. Hetta hendur tá fleiri brúkarir rætta à skjalinum samstundis.
+
+Eftirkanna tær vÃstu broytingar nágreiniliga, og avgerð hvat fyri útgávu sum skal goymast. Um tú velur ''Goym'', verður tÃn útgáva av skalinum goymd. Velur tú ''Angra'' varðveittur tú tà núverandi útgávuna.
Modified: site/trunk/www-root/wiki/inc/lang/fo/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Atgongd nokta! ======
-
-Tú hevur ikki rættindi til at halda áfram. Møguliga hevur tú ikki rita inn.
+====== Atgongd nokta! ======
+
+Tú hevur ikki rættindi til at halda áfram. Møguliga hevur tú ikki rita inn.
Modified: site/trunk/www-root/wiki/inc/lang/fo/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Munir ======
-
-Hetta vÃsur munir millum tà valdu og núverandu útgávu av skjalinum. Gular eru linjur sum er at finna à gomlu útgávuni, og grønar eru linjur sum eru at finna à núvarandi útgávuni.
-
+====== Munir ======
+
+Hetta vÃsur munir millum tà valdu og núverandu útgávu av skjalinum. Gular eru linjur sum er at finna à gomlu útgávuni, og grønar eru linjur sum eru at finna à núvarandi útgávuni.
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Rætta hetta skjal og trýst so á **''[Goym]''** knappin. Sà [[wiki:syntax|snið ábending]]
-fyri Wiki setningsbygnað. Rætta vinarliga bert hetta skjali um tú kanst **fyrireika** tað. Nýt vinarliga
-[[playground:playground|sandkassan]] til at testa áðrenn tú rættar à einum røttum skjali.
-Minst eisini til at brúkar **''[Forskoðan]''** áðrenn tú goymur skjalið.
-
+Rætta hetta skjal og trýst so á **''[Goym]''** knappin. Sà [[wiki:syntax|snið ábending]]
+fyri Wiki setningsbygnað. Rætta vinarliga bert hetta skjali um tú kanst **fyrireika** tað. Nýt vinarliga
+[[playground:playground|sandkassan]] til at testa áðrenn tú rættar à einum røttum skjali.
+Minst eisini til at brúkar **''[Forskoðan]''** áðrenn tú goymur skjalið.
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Tú hevur heinta eina gamla útgávu av hesum skjalinum!** Um tú goymur skjali vilt tú skriva útyvir núverandi við gomlu útgávuni.
-----
+**Tú hevur heinta eina gamla útgávu av hesum skjalinum!** Um tú goymur skjali vilt tú skriva útyvir núverandi við gomlu útgávuni.
+----
Modified: site/trunk/www-root/wiki/inc/lang/fo/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Evnisyvirlit ======
-
-Hetta er eitt yvirlit yvur øll atkomandi skjøl, flokka eftir
-[[doku>wiki:namespaces|navnarúm]].
+====== Evnisyvirlit ======
+
+Hetta er eitt yvirlit yvur øll atkomandi skjøl, flokka eftir
+[[doku>wiki:namespaces|navnarúm]].
Modified: site/trunk/www-root/wiki/inc/lang/fo/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,174 +1,174 @@
-<?php
-/**
- * faroese language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Poul J. Clementsen <poul at diku.dk>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = 'Rætta hetta skjal';
-$lang['btn_source'] = 'VÃs keldu';
-$lang['btn_show'] = 'VÃs skjal';
-$lang['btn_create'] = 'Býrja uppá hetta skjal';
-$lang['btn_search'] = 'Leita';
-$lang['btn_save'] = 'Goym';
-$lang['btn_preview']= 'Forskoðan';
-$lang['btn_top'] = 'Aftur til toppin';
-$lang['btn_newer'] = '<< undan sÃða';
-$lang['btn_older'] = 'næsta sÃðe >>';
-$lang['btn_revs'] = 'Gamlar útgávur';
-$lang['btn_recent'] = 'Nýggj broyting';
-$lang['btn_upload'] = 'Legg fÃlu upp';
-$lang['btn_cancel'] = 'Angra';
-$lang['btn_index'] = 'Evnisyvirlit';
-$lang['btn_secedit']= 'Rætta';
-$lang['btn_login'] = 'Rita inn';
-$lang['btn_logout'] = 'Rita út';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Dagfør';
-$lang['btn_delete'] = 'Strika';
-$lang['btn_back'] = 'Aftur';
-$lang['btn_backlink'] = "ÃvÃsingar afturúr";
-$lang['btn_backtomedia'] = 'Aftur til val av miðlafÃlu';
-$lang['btn_subscribe'] = 'Tilmelda broytingar';
-$lang['btn_unsubscribe'] = 'Strika tilmelding av broytingum';
-$lang['btn_profile'] = 'Dagføra vangamynd';
-$lang['btn_reset'] = 'Nullstilla';
-$lang['btn_resendpwd'] = 'Send nýtt loyniorð';
-
-$lang['loggedinas'] = 'Ritavur inn sum';
-$lang['user'] = 'Brúkaranavn';
-$lang['pass'] = 'Loyniorð';
-$lang['newpass'] = 'Nýtt loyniorð';
-$lang['oldpass'] = 'Vátta gamalt loyniorð';
-$lang['passchk'] = 'Endurtak nýtt loyniorð';
-$lang['remember'] = 'Minst til loyniorðið hjá mær';
-$lang['fullname'] = 'Navn';
-$lang['email'] = 'T-postur';
-$lang['register'] = 'Melda til';
-$lang['profile'] = 'Brúkara vangamynd';
-$lang['badlogin'] = 'Skeivt brúkaranavn ella loyniorð.';
-$lang['minoredit'] = 'Smærri broytingar';
-
-$lang['regmissing'] = 'Tú skalt fylla út øll øki.';
-$lang['reguexists'] = 'Hetta brúkaranavn er upptiki.';
-$lang['regsuccess'] = 'Tú ert nú stovnavur sum brúkari. TÃtt loyniorð verður sent til tÃn à einum T-posti.';
-$lang['regsuccess2']= 'Tú ert nú stovnavur sum brúkari.';
-$lang['regmailfail']= 'TÃtt loyniorð bleiv ikki sent. Fá vinarliga samband við administratorin.';
-$lang['regbadmail'] = 'T-post adressan er ógildig. Fá vinarliga samband við administratorin, um tú heldur at hetta er eitt brek.';
-$lang['regbadpass'] = 'Bæði loyniorðini eru ikki eins, royn vinarliga umaftur.';
-$lang['regpwmail'] = 'TÃtt DokuWiki loyniorð';
-$lang['reghere'] = 'Upprætta eina DokuWiki-konto her';
-
-$lang['profna'] = 'Tað er ikki møguligt at broyta tÃna vangamynd à hesu wiki';
-$lang['profnochange'] = 'Ongar broytingar, onki tillaga.';
-$lang['profnoempty'] = 'Tómt navn ella t-post adressa er ikki loyvt.';
-$lang['profchanged'] = 'Brúkara vangamynd dagført rætt.';
-
-$lang['pwdforget'] = 'Gloymt tÃtt loyniorð? Fá eitt nýtt';
-$lang['resendna'] = 'Tað er ikki møguligt at fá sent nýtt loyniorð við hesu wiki.';
-$lang['resendpwd'] = 'Send nýtt loyniorð til';
-$lang['resendpwdmissing'] = 'Tú skal filla út øll økir.';
-$lang['resendpwdnouser'] = 'Vit kunna ikki finna hendan brúkara à okkara dátagrunni.';
-$lang['resendpwdsuccess'] = 'TÃtt nýggja loyniorð er sent við t-posti.';
-
-$lang['txt_upload'] = 'Vel tà fÃlu sum skal leggjast upp';
-$lang['txt_filename'] = 'Sláa inn wikinavn (valfrÃtt)';
-$lang['txt_overwrt'] = 'Yvurskriva verandi fÃlu';
-$lang['lockedby'] = 'Fyribils læst av';
-$lang['lockexpire'] = 'Lásið ferð úr gildi kl.';
-$lang['willexpire'] = 'TÃtt lás á hetta skjalið ferð úr gildi um ein minnutt.\nTrýst á '.$lang['btn_preview'].'-knappin fyri at sleppa undan trupulleikum.';
-
-$lang['notsavedyet'] = 'Tað eru gjørdar broytingar à skjalinum, um tú haldur fram vilja broytingar fara fyri skeytið.\nYnskir tú at halda fram?';
-$lang['rssfailed'] = 'Eitt brek koma fyri tá roynt var at fáa: ';
-$lang['nothingfound']= 'Leiting gav onki úrslit.';
-
-$lang['mediaselect'] = 'Vel miðlafÃlu';
-$lang['fileupload'] = 'Legg miðla fÃlu upp';
-$lang['uploadsucc'] = 'Upp legg av fÃlu var væl eydna';
-$lang['uploadfail'] = 'Brek við upp legg av fÃlu. Tað er møguliga trupuleikar við rættindunum';
-$lang['uploadwrong'] = 'Upp legg av fÃlu vÃst burtur. FÃluslag er ikki loyvt';
-$lang['uploadexist'] = 'FÃlan er longu til.';
-$lang['deletesucc'] = 'FÃlan "%s" er nú strika.';
-$lang['deletefail'] = '"%s" kundi ikki strikast - kanna rættindini.';
-$lang['mediainuse'] = 'FÃla "%s" er ikki strika - hen verður enn nýtt.';
-$lang['namespaces'] = 'Navnarúm';
-$lang['mediafiles'] = 'Atkomandi fÃlur Ã';
-
-$lang['reference'] = 'ÃvÃsing til';
-$lang['ref_inuse'] = 'FÃlan kan ikki strikast, sÃðan hon enn verður nýtt á fylgjandi sÃðum:';
-$lang['ref_hidden'] = 'Nakrar ávÃsingar eru à skjølum sum tú ikki hevur lesi rættindi til';
-
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Samsvarandi skjøl';
-$lang['toc'] = 'Innihaldsyvirlit';
-$lang['current'] = 'núverandi';
-$lang['yours'] = 'TÃn útgáva';
-$lang['diff'] = 'vÃs broytingar à mun til núverandi útgávu';
-$lang['line'] = 'Linja';
-$lang['breadcrumb'] = 'Leið';
-$lang['youarehere'] = 'Tú ert her';
-$lang['lastmod'] = 'Seinast broytt';
-$lang['by'] = 'av';
-$lang['deleted'] = 'strika';
-$lang['created'] = 'stovna';
-$lang['restored'] = 'gomul útgáva endurstovna';
-$lang['summary'] = 'Samandráttur';
-
-$lang['mail_newpage'] = 'skjal skoyta uppÃ:';
-$lang['mail_changed'] = 'skjal broytt:';
-
-$lang['nosmblinks'] = 'ÃvÃsingar til Windows shares virka bert à Microsoft Internet Explorer.\nTú kanst enn avrita og sata inn slóðina.';
-
-$lang['qb_alert'] = 'Skriva tann tekst tú ynskir at forsniða.\nHann verður skoyttur uppà à endanum av skjalinum.';
-$lang['qb_bold'] = 'Feit';
-$lang['qb_italic'] = 'Skák';
-$lang['qb_underl'] = 'Undurstrika';
-$lang['qb_code'] = 'Skrivimaskinu tekstur';
-$lang['qb_strike'] = 'Gjøgnumstrika';
-$lang['qb_h1'] = 'Stig 1 yvirskrift';
-$lang['qb_h2'] = 'Stig 2 yvirskrift';
-$lang['qb_h3'] = 'Stig 3 yvirskrift';
-$lang['qb_h4'] = 'Stig 4 yvirskrift';
-$lang['qb_h5'] = 'Stig 5 yvirskrift';
-$lang['qb_link'] = 'Innanhýsis slóð';
-$lang['qb_extlink'] = 'Ãtvortis slóð';
-$lang['qb_hr'] = 'Vatnrætt linja';
-$lang['qb_ol'] = 'Talmerktur listi';
-$lang['qb_ul'] = 'Ãtalmerktur listi';
-$lang['qb_media'] = 'Leggja myndir og aðrar fÃlur afturat';
-$lang['qb_sig'] = 'Set inn undirskrift';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Sertekn';
-
-$lang['del_confirm']= 'Strika post(ar)?';
-$lang['admin_register']= 'Upprætta nýggjan brúkara';
-
-$lang['metaedit'] = 'Rætta metadáta';
-$lang['metasaveerr'] = 'Brek við skriving av metadáta';
-$lang['metasaveok'] = 'Metadáta goymt';
-$lang['img_backto'] = 'Aftur til';
-$lang['img_title'] = 'Heitið';
-$lang['img_caption'] = 'Myndatekstur';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'FÃlunavn';
-$lang['img_fsize'] = 'Stødd';
-$lang['img_artist'] = 'Myndafólk';
-$lang['img_copyr'] = 'Upphavsrættur';
-$lang['img_format'] = 'Snið';
-$lang['img_camera'] = 'Fototól';
-$lang['img_keywords']= 'Evnisorð';
-
-$lang['subscribe_success'] = 'Skoyt %s uppà tilmeldulistan fyri %s';
-$lang['subscribe_error'] = 'Brek við uppà skoyting av %s til tilmeldulistan fyri %s';
-$lang['subscribe_noaddress']= 'Ongin adressa er knýtt at tÃni inn ritan, tú kanst ikki skoytast uppà tilmeldulistan';
-$lang['unsubscribe_success']= 'Strika %s frá tilmeldulistan fyri %s';
-$lang['unsubscribe_error'] = 'Brek við burturtøku av %s frá tilmeldulista fyri %s';
-
-/* auth.class language support */
-$lang['authmodfailed'] = 'Brek við validering av brúkarasamansetingv. Fá samband við umboðsstjóran á hesi wiki.';
-$lang['authtempfail'] = 'Validering av brúkara virkar fyribils ikki. Um hetta er varandi, fá so samband við umboðsstjóran á hesi wiki.';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * faroese language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Poul J. Clementsen <poul at diku.dk>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = 'Rætta hetta skjal';
+$lang['btn_source'] = 'VÃs keldu';
+$lang['btn_show'] = 'VÃs skjal';
+$lang['btn_create'] = 'Býrja uppá hetta skjal';
+$lang['btn_search'] = 'Leita';
+$lang['btn_save'] = 'Goym';
+$lang['btn_preview']= 'Forskoðan';
+$lang['btn_top'] = 'Aftur til toppin';
+$lang['btn_newer'] = '<< undan sÃða';
+$lang['btn_older'] = 'næsta sÃðe >>';
+$lang['btn_revs'] = 'Gamlar útgávur';
+$lang['btn_recent'] = 'Nýggj broyting';
+$lang['btn_upload'] = 'Legg fÃlu upp';
+$lang['btn_cancel'] = 'Angra';
+$lang['btn_index'] = 'Evnisyvirlit';
+$lang['btn_secedit']= 'Rætta';
+$lang['btn_login'] = 'Rita inn';
+$lang['btn_logout'] = 'Rita út';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Dagfør';
+$lang['btn_delete'] = 'Strika';
+$lang['btn_back'] = 'Aftur';
+$lang['btn_backlink'] = "ÃvÃsingar afturúr";
+$lang['btn_backtomedia'] = 'Aftur til val av miðlafÃlu';
+$lang['btn_subscribe'] = 'Tilmelda broytingar';
+$lang['btn_unsubscribe'] = 'Strika tilmelding av broytingum';
+$lang['btn_profile'] = 'Dagføra vangamynd';
+$lang['btn_reset'] = 'Nullstilla';
+$lang['btn_resendpwd'] = 'Send nýtt loyniorð';
+
+$lang['loggedinas'] = 'Ritavur inn sum';
+$lang['user'] = 'Brúkaranavn';
+$lang['pass'] = 'Loyniorð';
+$lang['newpass'] = 'Nýtt loyniorð';
+$lang['oldpass'] = 'Vátta gamalt loyniorð';
+$lang['passchk'] = 'Endurtak nýtt loyniorð';
+$lang['remember'] = 'Minst til loyniorðið hjá mær';
+$lang['fullname'] = 'Navn';
+$lang['email'] = 'T-postur';
+$lang['register'] = 'Melda til';
+$lang['profile'] = 'Brúkara vangamynd';
+$lang['badlogin'] = 'Skeivt brúkaranavn ella loyniorð.';
+$lang['minoredit'] = 'Smærri broytingar';
+
+$lang['regmissing'] = 'Tú skalt fylla út øll øki.';
+$lang['reguexists'] = 'Hetta brúkaranavn er upptiki.';
+$lang['regsuccess'] = 'Tú ert nú stovnavur sum brúkari. TÃtt loyniorð verður sent til tÃn à einum T-posti.';
+$lang['regsuccess2']= 'Tú ert nú stovnavur sum brúkari.';
+$lang['regmailfail']= 'TÃtt loyniorð bleiv ikki sent. Fá vinarliga samband við administratorin.';
+$lang['regbadmail'] = 'T-post adressan er ógildig. Fá vinarliga samband við administratorin, um tú heldur at hetta er eitt brek.';
+$lang['regbadpass'] = 'Bæði loyniorðini eru ikki eins, royn vinarliga umaftur.';
+$lang['regpwmail'] = 'TÃtt DokuWiki loyniorð';
+$lang['reghere'] = 'Upprætta eina DokuWiki-konto her';
+
+$lang['profna'] = 'Tað er ikki møguligt at broyta tÃna vangamynd à hesu wiki';
+$lang['profnochange'] = 'Ongar broytingar, onki tillaga.';
+$lang['profnoempty'] = 'Tómt navn ella t-post adressa er ikki loyvt.';
+$lang['profchanged'] = 'Brúkara vangamynd dagført rætt.';
+
+$lang['pwdforget'] = 'Gloymt tÃtt loyniorð? Fá eitt nýtt';
+$lang['resendna'] = 'Tað er ikki møguligt at fá sent nýtt loyniorð við hesu wiki.';
+$lang['resendpwd'] = 'Send nýtt loyniorð til';
+$lang['resendpwdmissing'] = 'Tú skal filla út øll økir.';
+$lang['resendpwdnouser'] = 'Vit kunna ikki finna hendan brúkara à okkara dátagrunni.';
+$lang['resendpwdsuccess'] = 'TÃtt nýggja loyniorð er sent við t-posti.';
+
+$lang['txt_upload'] = 'Vel tà fÃlu sum skal leggjast upp';
+$lang['txt_filename'] = 'Sláa inn wikinavn (valfrÃtt)';
+$lang['txt_overwrt'] = 'Yvurskriva verandi fÃlu';
+$lang['lockedby'] = 'Fyribils læst av';
+$lang['lockexpire'] = 'Lásið ferð úr gildi kl.';
+$lang['willexpire'] = 'TÃtt lás á hetta skjalið ferð úr gildi um ein minnutt.\nTrýst á '.$lang['btn_preview'].'-knappin fyri at sleppa undan trupulleikum.';
+
+$lang['notsavedyet'] = 'Tað eru gjørdar broytingar à skjalinum, um tú haldur fram vilja broytingar fara fyri skeytið.\nYnskir tú at halda fram?';
+$lang['rssfailed'] = 'Eitt brek koma fyri tá roynt var at fáa: ';
+$lang['nothingfound']= 'Leiting gav onki úrslit.';
+
+$lang['mediaselect'] = 'Vel miðlafÃlu';
+$lang['fileupload'] = 'Legg miðla fÃlu upp';
+$lang['uploadsucc'] = 'Upp legg av fÃlu var væl eydna';
+$lang['uploadfail'] = 'Brek við upp legg av fÃlu. Tað er møguliga trupuleikar við rættindunum';
+$lang['uploadwrong'] = 'Upp legg av fÃlu vÃst burtur. FÃluslag er ikki loyvt';
+$lang['uploadexist'] = 'FÃlan er longu til.';
+$lang['deletesucc'] = 'FÃlan "%s" er nú strika.';
+$lang['deletefail'] = '"%s" kundi ikki strikast - kanna rættindini.';
+$lang['mediainuse'] = 'FÃla "%s" er ikki strika - hen verður enn nýtt.';
+$lang['namespaces'] = 'Navnarúm';
+$lang['mediafiles'] = 'Atkomandi fÃlur Ã';
+
+$lang['reference'] = 'ÃvÃsing til';
+$lang['ref_inuse'] = 'FÃlan kan ikki strikast, sÃðan hon enn verður nýtt á fylgjandi sÃðum:';
+$lang['ref_hidden'] = 'Nakrar ávÃsingar eru à skjølum sum tú ikki hevur lesi rættindi til';
+
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Samsvarandi skjøl';
+$lang['toc'] = 'Innihaldsyvirlit';
+$lang['current'] = 'núverandi';
+$lang['yours'] = 'TÃn útgáva';
+$lang['diff'] = 'vÃs broytingar à mun til núverandi útgávu';
+$lang['line'] = 'Linja';
+$lang['breadcrumb'] = 'Leið';
+$lang['youarehere'] = 'Tú ert her';
+$lang['lastmod'] = 'Seinast broytt';
+$lang['by'] = 'av';
+$lang['deleted'] = 'strika';
+$lang['created'] = 'stovna';
+$lang['restored'] = 'gomul útgáva endurstovna';
+$lang['summary'] = 'Samandráttur';
+
+$lang['mail_newpage'] = 'skjal skoyta uppÃ:';
+$lang['mail_changed'] = 'skjal broytt:';
+
+$lang['nosmblinks'] = 'ÃvÃsingar til Windows shares virka bert à Microsoft Internet Explorer.\nTú kanst enn avrita og sata inn slóðina.';
+
+$lang['qb_alert'] = 'Skriva tann tekst tú ynskir at forsniða.\nHann verður skoyttur uppà à endanum av skjalinum.';
+$lang['qb_bold'] = 'Feit';
+$lang['qb_italic'] = 'Skák';
+$lang['qb_underl'] = 'Undurstrika';
+$lang['qb_code'] = 'Skrivimaskinu tekstur';
+$lang['qb_strike'] = 'Gjøgnumstrika';
+$lang['qb_h1'] = 'Stig 1 yvirskrift';
+$lang['qb_h2'] = 'Stig 2 yvirskrift';
+$lang['qb_h3'] = 'Stig 3 yvirskrift';
+$lang['qb_h4'] = 'Stig 4 yvirskrift';
+$lang['qb_h5'] = 'Stig 5 yvirskrift';
+$lang['qb_link'] = 'Innanhýsis slóð';
+$lang['qb_extlink'] = 'Ãtvortis slóð';
+$lang['qb_hr'] = 'Vatnrætt linja';
+$lang['qb_ol'] = 'Talmerktur listi';
+$lang['qb_ul'] = 'Ãtalmerktur listi';
+$lang['qb_media'] = 'Leggja myndir og aðrar fÃlur afturat';
+$lang['qb_sig'] = 'Set inn undirskrift';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Sertekn';
+
+$lang['del_confirm']= 'Strika post(ar)?';
+$lang['admin_register']= 'Upprætta nýggjan brúkara';
+
+$lang['metaedit'] = 'Rætta metadáta';
+$lang['metasaveerr'] = 'Brek við skriving av metadáta';
+$lang['metasaveok'] = 'Metadáta goymt';
+$lang['img_backto'] = 'Aftur til';
+$lang['img_title'] = 'Heitið';
+$lang['img_caption'] = 'Myndatekstur';
+$lang['img_date'] = 'Dato';
+$lang['img_fname'] = 'FÃlunavn';
+$lang['img_fsize'] = 'Stødd';
+$lang['img_artist'] = 'Myndafólk';
+$lang['img_copyr'] = 'Upphavsrættur';
+$lang['img_format'] = 'Snið';
+$lang['img_camera'] = 'Fototól';
+$lang['img_keywords']= 'Evnisorð';
+
+$lang['subscribe_success'] = 'Skoyt %s uppà tilmeldulistan fyri %s';
+$lang['subscribe_error'] = 'Brek við uppà skoyting av %s til tilmeldulistan fyri %s';
+$lang['subscribe_noaddress']= 'Ongin adressa er knýtt at tÃni inn ritan, tú kanst ikki skoytast uppà tilmeldulistan';
+$lang['unsubscribe_success']= 'Strika %s frá tilmeldulistan fyri %s';
+$lang['unsubscribe_error'] = 'Brek við burturtøku av %s frá tilmeldulista fyri %s';
+
+/* auth.class language support */
+$lang['authmodfailed'] = 'Brek við validering av brúkarasamansetingv. Fá samband við umboðsstjóran á hesi wiki.';
+$lang['authtempfail'] = 'Validering av brúkara virkar fyribils ikki. Um hetta er varandi, fá so samband við umboðsstjóran á hesi wiki.';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/fo/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Læst skjal ======
-
-Hetta skjal er fyribils læst av einum øðrum brúkara. BÃða vinarliga til brúkarin er liðugur við at rætta skjali, ella at lásið er fara úr gildi.
+====== Læst skjal ======
+
+Hetta skjal er fyribils læst av einum øðrum brúkara. BÃða vinarliga til brúkarin er liðugur við at rætta skjali, ella at lásið er fara úr gildi.
Modified: site/trunk/www-root/wiki/inc/lang/fo/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Rita inn ======
-
-Tú hevur ikki rita inn! Slá inn brúkaranavn og loyniorð. TÃn kagi skal loyva at cookies verða goymdar fyri at tú kanst rita inn.
+====== Rita inn ======
+
+Tú hevur ikki rita inn! Slá inn brúkaranavn og loyniorð. TÃn kagi skal loyva at cookies verða goymdar fyri at tú kanst rita inn.
Modified: site/trunk/www-root/wiki/inc/lang/fo/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Eitt skjal à tÃni DokuWiki bleiv broytt ella skoytt uppÃ. Her er ein lýsing:
-
-Dato : @DATE@
-Browser : @BROWSER@
-IP-adressa : @IPADDRESS@
-Hostnavn : @HOSTNAME@
-Gomul útgáva : @OLDPAGE@
-Nýggj útgáva : @NEWPAGE@
-Rætti samandráttur : @SUMMARY@
-Brúkari : @USER@
-
- at DIFF@
-
-
---
-Hesin t-postur var skaptur av DokuWiki á:
- at DOKUWIKIURL@
+Eitt skjal à tÃni DokuWiki bleiv broytt ella skoytt uppÃ. Her er ein lýsing:
+
+Dato : @DATE@
+Browser : @BROWSER@
+IP-adressa : @IPADDRESS@
+Hostnavn : @HOSTNAME@
+Gomul útgáva : @OLDPAGE@
+Nýggj útgáva : @NEWPAGE@
+Rætti samandráttur : @SUMMARY@
+Brúkari : @USER@
+
+ at DIFF@
+
+
+--
+Hesin t-postur var skaptur av DokuWiki á:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fo/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Hetta skjal er ikki til (enn) ======
-
-Tú fylgdi ein ávÃsing til eitt skjal sum ikki er til (enn). Tú kanst stovna skjali við at trýsta á **''[Stovna hetta skjal]''** knappin.
+====== Hetta skjal er ikki til (enn) ======
+
+Tú fylgdi ein ávÃsing til eitt skjal sum ikki er til (enn). Tú kanst stovna skjali við at trýsta á **''[Stovna hetta skjal]''** knappin.
Modified: site/trunk/www-root/wiki/inc/lang/fo/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Valda útgávan er ikki til ======
-
-Valda útgávan av skjalinum er ikki til! Trýst á knappin **''[Gamlar útgávur]''** fyri at sÃggja ein lista yvur gamlar útgávur av hesum skjali.
-
+====== Valda útgávan er ikki til ======
+
+Valda útgávan av skjalinum er ikki til! Trýst á knappin **''[Gamlar útgávur]''** fyri at sÃggja ein lista yvur gamlar útgávur av hesum skjali.
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hey @FULLNAME@!
-
-Her eru tÃnar brúkaraupplýsingar @TITLE@ at @DOKUWIKIURL@
-
-Brúkaranavn : @LOGIN@
-Loyniorð : @PASSWORD@
-
---
-Hesin t-postur var skaptur av DokuWiki á:
- at DOKUWIKIURL@
+Hey @FULLNAME@!
+
+Her eru tÃnar brúkaraupplýsingar @TITLE@ at @DOKUWIKIURL@
+
+Brúkaranavn : @LOGIN@
+Loyniorð : @PASSWORD@
+
+--
+Hesin t-postur var skaptur av DokuWiki á:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fo/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Forskoðan ======
-
-Hetta er ein forskoðan skjalinum, sum vÃsur hvussi tað fer at sÃggja út. Minst til: Tað er //**IKKI**// goymt enn! Um tað sær rætt út, trýst so á **''[Goym]''** knappin
-
+====== Forskoðan ======
+
+Hetta er ein forskoðan skjalinum, sum vÃsur hvussi tað fer at sÃggja út. Minst til: Tað er //**IKKI**// goymt enn! Um tað sær rætt út, trýst so á **''[Goym]''** knappin
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Hetta skjal kan bert læsast. Tú kanst sÃggja kelduna, men ikki goyma broytingar à tÃ. Um tú heldur at hetta er eitt brek, skriva so vinarliga à [[wiki:brek-yvirlit]].
-
+Hetta skjal kan bert læsast. Tú kanst sÃggja kelduna, men ikki goyma broytingar à tÃ. Um tú heldur at hetta er eitt brek, skriva so vinarliga à [[wiki:brek-yvirlit]].
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Nýggjar broytingar ======
-
-Fylgjandi skjøl er broytt nýliga.
-
-
+====== Nýggjar broytingar ======
+
+Fylgjandi skjøl er broytt nýliga.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Upprætta eina wiki-konti ======
-
-Fylla út niðanfyrista skema fyri at upprætta eina konti à hesu wiki. Minst til at nýta eina **galdandi t-post-adressu** - tÃtt loyniorð verður sent til tÃn. TÃtt brúkaranavn skal verða galdandi [[doku>wiki:skjalanavn|skjalanavn]].
-
+====== Upprætta eina wiki-konti ======
+
+Fylla út niðanfyrista skema fyri at upprætta eina konti à hesu wiki. Minst til at nýta eina **galdandi t-post-adressu** - tÃtt loyniorð verður sent til tÃn. TÃtt brúkaranavn skal verða galdandi [[doku>wiki:skjalanavn|skjalanavn]].
+
Modified: site/trunk/www-root/wiki/inc/lang/fo/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Send nýtt loyniorð ======
-
-Fyll út øll niðanfyristandandi øki fyri at fáa sent eitt nýtt loyniorð til hesa wiki.
-TÃtt nýggja loyniorð verður sent til tà uppgivnu t-postadressu. Brúkaranavn eigur at verða tÃtt wiki brúkaranavn.
+====== Send nýtt loyniorð ======
+
+Fyll út øll niðanfyristandandi øki fyri at fáa sent eitt nýtt loyniorð til hesa wiki.
+TÃtt nýggja loyniorð verður sent til tà uppgivnu t-postadressu. Brúkaranavn eigur at verða tÃtt wiki brúkaranavn.
Modified: site/trunk/www-root/wiki/inc/lang/fo/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Gamlar útgávur ======
-
-Her eru tær gomlu útgávurnar av hesum skalinum. Tú kanst venda aftur til eina eldri útgávu av skjalinum við at velja tað niðanfyri, trýst á **''[Rætta hetta skjal]''** knappin, og til sÃðst goyma skjali.
+====== Gamlar útgávur ======
+
+Her eru tær gomlu útgávurnar av hesum skalinum. Tú kanst venda aftur til eina eldri útgávu av skjalinum við at velja tað niðanfyri, trýst á **''[Rætta hetta skjal]''** knappin, og til sÃðst goyma skjali.
Modified: site/trunk/www-root/wiki/inc/lang/fo/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Leiting ======
-
-Tú kanst sÃggja úrslitini av tÃni leiting niðanfyri. Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.
-
-===== Leitiúrslit =====
+====== Leiting ======
+
+Tú kanst sÃggja úrslitini av tÃni leiting niðanfyri. Um úrslitini ikki innihalda tað sum tú leitaði eftir kanst tú upprætta eitt nýtt skjal við sama navni sum leitingin við at trýsta á **''[Upprætta hetta skjal]''** knappin.
+
+===== Leitiúrslit =====
Modified: site/trunk/www-root/wiki/inc/lang/fo/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Hetta er ein gomul útgáva av skjalinum!**
-----
+**Hetta er ein gomul útgáva av skjalinum!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/fo/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,87 +1,87 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-annar
-báðir
-eg
-eingin
-einhvør
-eini
-eitt
-ella
-enn
-fim
-fleiri
-flestir
-frá
-fyri
-fyrr
-fýra
-góður
-hann
-hansara
-har
-hendan
-hennara
-her
-hetta
-hevur
-hon
-hvar
-hvat
-hvussi
-hvÃ
-hvør
-ikki
-inn
-kan
-koma
-lÃtil
-man
-maður
-meira
-men
-miðan
-niður
-nær
-næstan
-næsti
-nógv
-nýtt
-okkurt
-ongin
-onki
-onkur
-seks
-sindur
-sjey
-smáur
-stórur
-større
-størst
-sum
-sÃggjast
-tann
-tað
-teir
-tey
-til
-trÃggir
-trý
-tvey
-tykkara
-tær
-tÃ
-tÃn
-tó
-tú
-um
-undan
-var
-vera
-við
-yvur
-átta
-áðrenn
-øll
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+annar
+báðir
+eg
+eingin
+einhvør
+eini
+eitt
+ella
+enn
+fim
+fleiri
+flestir
+frá
+fyri
+fyrr
+fýra
+góður
+hann
+hansara
+har
+hendan
+hennara
+her
+hetta
+hevur
+hon
+hvar
+hvat
+hvussi
+hvÃ
+hvør
+ikki
+inn
+kan
+koma
+lÃtil
+man
+maður
+meira
+men
+miðan
+niður
+nær
+næstan
+næsti
+nógv
+nýtt
+okkurt
+ongin
+onki
+onkur
+seks
+sindur
+sjey
+smáur
+stórur
+større
+størst
+sum
+sÃggjast
+tann
+tað
+teir
+tey
+til
+trÃggir
+trý
+tvey
+tykkara
+tær
+tÃ
+tÃn
+tó
+tú
+um
+undan
+var
+vera
+við
+yvur
+átta
+áðrenn
+øll
Modified: site/trunk/www-root/wiki/inc/lang/fo/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Hey!
-
-SÃðan @PAGE@ á @TITLE@ wikiuni er blivin broytt.
-Her eru ein lýsing:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Fyri at avmelda broytinga upplýsingar fyri hesa sÃðu rita inn á wikiuna á
- at DOKUWIKIURL@ , vitja
- at NEWPAGE@
-og vel 'Strika til melda broytingar'.
-
---
-Hesin t-postur var skaptur av DokuWiki á:
- at DOKUWIKIURL@
+Hey!
+
+SÃðan @PAGE@ á @TITLE@ wikiuni er blivin broytt.
+Her eru ein lýsing:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Fyri at avmelda broytinga upplýsingar fyri hesa sÃðu rita inn á wikiuna á
+ at DOKUWIKIURL@ , vitja
+ at NEWPAGE@
+og vel 'Strika til melda broytingar'.
+
+--
+Hesin t-postur var skaptur av DokuWiki á:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fo/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Dagføra vangamynd fyri tÃna konti ======
-
-Tú nýtist bert at fylla út tey øki sum tú ynskjur at broyta. Tú kanst ikki broyta tÃtt brúkaranavn.
+====== Dagføra vangamynd fyri tÃna konti ======
+
+Tú nýtist bert at fylla út tey øki sum tú ynskjur at broyta. Tú kanst ikki broyta tÃtt brúkaranavn.
Modified: site/trunk/www-root/wiki/inc/lang/fo/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fo/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fo/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== SPAM banning ======
-
-TÃnar broytingar vóru **ikki** goymdar av tà at tær innihalda eitt ella fleiri óynskt orð. Fá vinarliga samband við admin, um tú heldur at hetta er eitt brek.
+====== SPAM banning ======
+
+TÃnar broytingar vóru **ikki** goymdar av tà at tær innihalda eitt ella fleiri óynskt orð. Fá vinarliga samband við admin, um tú heldur at hetta er eitt brek.
Modified: site/trunk/www-root/wiki/inc/lang/fr/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administration ======
-
-Ci-dessous, vous trouverez une liste des tâches administratives disponibles dans DokuWiki.
-
+====== Administration ======
+
+Ci-dessous, vous trouverez une liste des tâches administratives disponibles dans DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Pages pointant sur la page en cours (backlinks) ======
-
-Ceci est la liste des pages qui pointent sur la page en cours.
-
+====== Pages pointant sur la page en cours (backlinks) ======
+
+Ceci est la liste des pages qui pointent sur la page en cours.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Une version plus récente existe déjà ======
-
-Une version plus récente du document que vous avez édité existe déjà . Cela se produit lorsqu'un autre utilisateur enregistre le document pendant que vous l'éditez.
-
-Examinez attentivement les différences ci-dessous, et décidez quelle version conserver. Si vous choisissez ''Enregistrer'', votre version sera enregistrée. Cliquez sur ''Annuler'' pour conserver la version actuelle.
-
+====== Une version plus récente existe déjà ======
+
+Une version plus récente du document que vous avez édité existe déjà . Cela se produit lorsqu'un autre utilisateur enregistre le document pendant que vous l'éditez.
+
+Examinez attentivement les différences ci-dessous, et décidez quelle version conserver. Si vous choisissez ''Enregistrer'', votre version sera enregistrée. Cliquez sur ''Annuler'' pour conserver la version actuelle.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Autorisation refusée======
-
-Désolé, vous n'avez pas les droits pour continuer. Peut-être avez-vous oublié de vous identifier ?
+======Autorisation refusée======
+
+Désolé, vous n'avez pas les droits pour continuer. Peut-être avez-vous oublié de vous identifier ?
Modified: site/trunk/www-root/wiki/inc/lang/fr/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Différences ======
-
-Cette page vous donne les différences entre la révision choisie
-et la version actuelle de la page.
-
+====== Différences ======
+
+Cette page vous donne les différences entre la révision choisie
+et la version actuelle de la page.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-====== Un fichier brouillon a été trouvé ======
-
-La dernière édition de cette page ne s'est pas terminée proprement.
-Dokuwiki a enregistré automatiquement un brouillon de votre travail
-que vous pouvez utiliser pour votre édition. Ci-dessous figurent les
-données enregistrées lors de votre dernière session.
-
-à vous de décider si vous souhaitez //récupérer// votre session
-d'édition passée, //supprimer// le brouillon enregistré
-automatiquement ou //annuler// le processus d'édition.
-
+====== Un fichier brouillon a été trouvé ======
+
+La dernière édition de cette page ne s'est pas terminée proprement.
+Dokuwiki a enregistré automatiquement un brouillon de votre travail
+que vous pouvez utiliser pour votre édition. Ci-dessous figurent les
+données enregistrées lors de votre dernière session.
+
+à vous de décider si vous souhaitez //récupérer// votre session
+d'édition passée, //supprimer// le brouillon enregistré
+automatiquement ou //annuler// le processus d'édition.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Modifiez cette page et cliquez sur ''Enregistrer''. Voyez le [[wiki:syntax|Guide de la mise en page]]
-pour une aide à propos du format. Veuillez ne modifier cette page que si vous pouvez l'**améliorer**. Si vous souhaitez faire des tests, faites vos premiers pas dans le [[playground:playground|bac à sable]].
-
+Modifiez cette page et cliquez sur ''Enregistrer''. Voyez le [[wiki:syntax|Guide de la mise en page]]
+pour une aide à propos du format. Veuillez ne modifier cette page que si vous pouvez l'**améliorer**. Si vous souhaitez faire des tests, faites vos premiers pas dans le [[playground:playground|bac à sable]].
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Vous affichez une ancienne révision du document !** Si vous l'enregistrez vous créerez une nouvelle version avec ce contenu.
-----
+**Vous affichez une ancienne révision du document !** Si vous l'enregistrez vous créerez une nouvelle version avec ce contenu.
+----
Modified: site/trunk/www-root/wiki/inc/lang/fr/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Index ======
-
-Voici un index de toutes les pages disponibles, triées par
-[[doku>wiki:namespaces|catégorie]].
-
+====== Index ======
+
+Voici un index de toutes les pages disponibles, triées par
+[[doku>wiki:namespaces|catégorie]].
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,19 +1,19 @@
-<p>Cette page vous assiste dans la première installation et la
-configuration de <a href="http://wiki.splitbrain.org">DokuWiki</a>.
-Pour plus d'information sur cet installeur reportez vous à sa
-<a href="http://wiki.splitbrain.org/wiki:installer">page de
-documentation</a>.</p>
-
-<p>DokuWiki utilise des fichiers ordinaires pour stocker les pages du
-wiki et les autres informations associées à ces pages
-(tel que images, index de recherche, anciennes révisions, etc). Pour fonctionner correctement DokuWiki <strong>doit</strong> avoir accès en écriture aux différents répertoires qui contiennent ces fichiers. L'installeur n'est pas capable de modifier les permissions sur les répertoires. Ceci doit être effectué directement sur la ligne de commande de votre shell, ou, si vous êtes hébergé, via FTP ou votre panneau de contrôle (tel que cPanel).</p>
-
-<p>Cet installeur va paramétrer votre configuration de DokuWiki pour des <acronym title="access control list">ACL</acronym>, qui permettront l'accès à un login administrateur et l'accès au menu d'administration de DokuWiki pour l'ajout de plugins, la gestion d'utilisateurs, la gestion de l'accès aux pages du wiki et les changements de paramètres de configuration. Il n'est pas nécessaire au fonctionnement de DokuWiki, néanmoins il facilite l'administration de DokuWiki.</p>
-
-<p>Les utilisateurs expérimentés ou ceux
-nécessitant des paramétrages particuliers devraient se
-reporter aux liens suivants pour les détails concernant les <a
-href="http://wiki.splitbrain.org/wiki:install">instructions
-d'installation</a> et les <a
-href="http://wiki.splitbrain.org/wiki:config">paramètres de
-configuration</a>.</p>
+<p>Cette page vous assiste dans la première installation et la
+configuration de <a href="http://wiki.splitbrain.org">DokuWiki</a>.
+Pour plus d'information sur cet installeur reportez vous à sa
+<a href="http://wiki.splitbrain.org/wiki:installer">page de
+documentation</a>.</p>
+
+<p>DokuWiki utilise des fichiers ordinaires pour stocker les pages du
+wiki et les autres informations associées à ces pages
+(tel que images, index de recherche, anciennes révisions, etc). Pour fonctionner correctement DokuWiki <strong>doit</strong> avoir accès en écriture aux différents répertoires qui contiennent ces fichiers. L'installeur n'est pas capable de modifier les permissions sur les répertoires. Ceci doit être effectué directement sur la ligne de commande de votre shell, ou, si vous êtes hébergé, via FTP ou votre panneau de contrôle (tel que cPanel).</p>
+
+<p>Cet installeur va paramétrer votre configuration de DokuWiki pour des <acronym title="access control list">ACL</acronym>, qui permettront l'accès à un login administrateur et l'accès au menu d'administration de DokuWiki pour l'ajout de plugins, la gestion d'utilisateurs, la gestion de l'accès aux pages du wiki et les changements de paramètres de configuration. Il n'est pas nécessaire au fonctionnement de DokuWiki, néanmoins il facilite l'administration de DokuWiki.</p>
+
+<p>Les utilisateurs expérimentés ou ceux
+nécessitant des paramétrages particuliers devraient se
+reporter aux liens suivants pour les détails concernant les <a
+href="http://wiki.splitbrain.org/wiki:install">instructions
+d'installation</a> et les <a
+href="http://wiki.splitbrain.org/wiki:config">paramètres de
+configuration</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/fr/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,211 +1,211 @@
-<?php
-/**
- * french language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Sébastien Bauer <sebastien.bauer at advalvas.be>
- * @author Antoine Fixary <antoine.fixary at freesbee.fr>
- * @author cumulus <pta-n56 at myamail.com>
- * @author Gwenn Gueguen <contact at demisel.net>
- * @author Guy Brand <gb at isis.u-strasbg.fr>
- * @author Fabien Chabreuil <fabien at integralpersonality.com>
- * @author Stéphane Chamberland <stephane.chamberland at ec.gc.ca>
- * @author Delassaux Julien <julien at delassaux.fr>
- * @author Maurice A. LeBlanc <leblancma at cooptel.qc.ca>
- * @author gb at isis.u-strasbg.fr
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Ãditer cette page';
-$lang['btn_source'] = 'Afficher le texte source';
-$lang['btn_show'] = 'Afficher la page';
-$lang['btn_create'] = 'Créer cette page';
-$lang['btn_search'] = 'Rechercher';
-$lang['btn_save'] = 'Enregistrer';
-$lang['btn_preview'] = 'Aperçu';
-$lang['btn_top'] = 'Haut de page';
-$lang['btn_newer'] = '<< plus récent';
-$lang['btn_older'] = 'moins récent >>';
-$lang['btn_revs'] = 'Anciennes révisions';
-$lang['btn_recent'] = 'Derniers changements';
-$lang['btn_upload'] = 'Envoyer';
-$lang['btn_cancel'] = 'Annuler';
-$lang['btn_index'] = 'Index';
-$lang['btn_secedit'] = 'Ãditer';
-$lang['btn_login'] = 'Connexion';
-$lang['btn_logout'] = 'Déconnexion';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Rafraîchir';
-$lang['btn_delete'] = 'Effacer';
-$lang['btn_back'] = 'Retour';
-$lang['btn_backlink'] = 'Liens vers cette page';
-$lang['btn_backtomedia'] = 'Retour à la sélection du fichier média';
-$lang['btn_subscribe'] = 'S\'abonner à la page';
-$lang['btn_unsubscribe'] = 'Se désabonner de la page';
-$lang['btn_subscribens'] = 'S\'abonner à la catégorie';
-$lang['btn_unsubscribens'] = 'Se désabonner de la catégorie';
-$lang['btn_profile'] = 'Mettre à jour le profil';
-$lang['btn_reset'] = 'Réinitialiser';
-$lang['btn_resendpwd'] = 'Envoyer le mot de passe';
-$lang['btn_draft'] = 'Ãditer brouillon';
-$lang['btn_recover'] = 'Récupérer brouillon';
-$lang['btn_draftdel'] = 'Effacer brouillon';
-$lang['loggedinas'] = 'Connecté en tant que ';
-$lang['user'] = 'Utilisateur';
-$lang['pass'] = 'Mot de passe';
-$lang['newpass'] = 'Nouveau mot de passe';
-$lang['oldpass'] = 'Mot de passe actuel';
-$lang['passchk'] = 'Répéter nouveau mot de passe';
-$lang['remember'] = 'Mémoriser';
-$lang['fullname'] = 'Nom complet';
-$lang['email'] = 'Adresse de courriel';
-$lang['register'] = 'S\'enregistrer';
-$lang['profile'] = 'Profil utilisateur';
-$lang['badlogin'] = 'L\'utilisateur ou le mot de passe est incorrect.';
-$lang['minoredit'] = 'Mineur';
-$lang['draftdate'] = 'Brouillon auto-enregistré le';
-$lang['regmissing'] = 'Désolé, vous devez remplir tous les champs.';
-$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur appartient déjà à un autre utilisateur.';
-$lang['regsuccess'] = 'L\'utilisateur a été créé. Le mot de passe a été expédié par courriel.';
-$lang['regsuccess2'] = 'L\'utilisateur a été créé.';
-$lang['regmailfail'] = 'Il semble y avoir un problème à l\'envoi du courriel. Contactez l\'administrateur.';
-$lang['regbadmail'] = 'L\'adresse de courriel semble incorrecte - si vous pensez que c\'est une erreur, contactez l\'administrateur.';
-$lang['regbadpass'] = 'Les deux mots de passe fournis sont différents, recommencez SVP.';
-$lang['regpwmail'] = 'Votre mot de passe DokuWiki';
-$lang['reghere'] = 'Vous n\'avez pas encore de compte ? Enregistrez-vous ici ';
-$lang['profna'] = 'Ce wiki ne permet pas de modifier les profils';
-$lang['profnochange'] = 'Pas de changement, rien à faire.';
-$lang['profnoempty'] = 'Un nom ou une adresse de courriel vide n\'est pas permis.';
-$lang['profchanged'] = 'Mise à jour du profil réussie.';
-$lang['pwdforget'] = 'Mot de passe oublié ? Faites-vous envoyer votre mot de passe ';
-$lang['resendna'] = 'Ce wiki ne permet pas le renvoi de mot de passe.';
-$lang['resendpwd'] = 'Renvoyer le mot de passe de';
-$lang['resendpwdmissing'] = 'Désolé, vous devez remplir tous les champs.';
-$lang['resendpwdnouser'] = 'Désolé, cet utilisateur est introuvable dans notre base.';
-$lang['resendpwdbadauth'] = 'Désolé, ce code d\'authentification est invalide. Assurez vous d\'avoir utilisé le lien de confirmation.';
-$lang['resendpwdconfirm'] = 'Un lien de confirmation vous a été envoyé par courriel.';
-$lang['resendpwdsuccess'] = 'Votre nouveau mot de passe vous a été expédié par courriel.';
-$lang['txt_upload'] = 'Sélectionnez un fichier à envoyer ';
-$lang['txt_filename'] = 'Donnez un "wikiname" (optionnel) ';
-$lang['txt_overwrt'] = 'Ãcraser le fichier cible';
-$lang['lockedby'] = 'Actuellement bloqué par';
-$lang['lockexpire'] = 'Le blocage expire à ';
-$lang['willexpire'] = 'Votre blocage pour modifier cette page expire dans une minute.\nPour éviter les conflits, utiliser le bouton Aperçu pour réinitialiser le minuteur.';
-$lang['notsavedyet'] = 'Les changements non enregistrés seront perdus.\nVoulez-vous vraiment continuer ?';
-$lang['rssfailed'] = 'Une erreur s\'est produite en récupérant ce flux : ';
-$lang['nothingfound'] = 'Pas de réponse.';
-$lang['mediaselect'] = 'Sélection de fichier';
-$lang['fileupload'] = 'Envoi de fichier';
-$lang['uploadsucc'] = 'Envoi réussi';
-$lang['uploadfail'] = 'L\'envoi n\'a pas réussi. Les permissions sont-elles correctes ?';
-$lang['uploadwrong'] = 'Envoi refusé. Cette extension de fichier est interdite !';
-$lang['uploadexist'] = 'Le fichier existe. Envoi avorté.';
-$lang['uploadbadcontent'] = 'Le contenu envoyé ne correspond pas à l\'extension du fichier %s.';
-$lang['uploadspam'] = 'L\'envoi a été bloqué par la liste noire antispam.';
-$lang['uploadxss'] = 'L\'envoi a été bloqué car son contenu est peut-être malveillant.';
-$lang['deletesucc'] = 'Le fichier "%s" a été effacé.';
-$lang['deletefail'] = 'Le fichier "%s" n\'a pu être effacé - vérifier les permissions.';
-$lang['mediainuse'] = 'Le fichier "%s" n\'a pas été effacé - il est en cours d\'utilisation.';
-$lang['namespaces'] = 'Catégories';
-$lang['mediafiles'] = 'Fichiers disponibles dans';
-$lang['js']['keepopen'] = 'Gardez la fenêtre ouverte pendant la sélection';
-$lang['js']['hidedetails'] = 'Masquer détails';
-$lang['mediausage'] = 'Utilisez la syntaxe suivante pour faire référence à ce fichier :';
-$lang['mediaview'] = 'Voir fichier original';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Envoyer un fichier dans la catégorie courante ici. Pour créer des sous-catégories, préfixez le nom du fichier par le nom de la sous-catégorie séparée par un double point.';
-$lang['mediaextchange'] = 'Extension du fichier changée de .%s en .%s !';
-$lang['reference'] = 'Références pour';
-$lang['ref_inuse'] = 'Le fichier ne peut être effacé car il est utilisé par les pages suivantes :';
-$lang['ref_hidden'] = 'Des références existent dans des pages que vous n\'avez pas la permission de lire';
-$lang['hits'] = 'occurrences trouvées';
-$lang['quickhits'] = 'Pages trouvées ';
-$lang['toc'] = 'Table des matières';
-$lang['current'] = 'version actuelle';
-$lang['yours'] = 'Votre version';
-$lang['diff'] = 'Différences avec la version actuelle';
-$lang['diff2'] = 'Différences entre les versions sélectionnées';
-$lang['line'] = 'Ligne';
-$lang['breadcrumb'] = 'Piste';
-$lang['youarehere'] = 'Vous êtes ici';
-$lang['lastmod'] = 'Dernière modification';
-$lang['by'] = 'par';
-$lang['deleted'] = 'effacée';
-$lang['created'] = 'créée';
-$lang['restored'] = 'ancienne révision restaurée';
-$lang['external_edit'] = 'édition externe';
-$lang['summary'] = 'Résumé';
-$lang['mail_newpage'] = 'page ajoutée :';
-$lang['mail_changed'] = 'page changée :';
-$lang['mail_new_user'] = 'nouvel utilisateur :';
-$lang['mail_upload'] = 'fichier envoyé :';
-$lang['nosmblinks'] = 'Les liens vers les partages Windows ne fonctionnent qu\'avec Microsoft Internet Explorer.\nVous pouvez toujours faire un copier/coller du lien.';
-$lang['qb_alert'] = 'SVP, entrez le texte que vous souhaitez formater.\nIl sera ajouté à la fin du document.';
-$lang['qb_bold'] = 'Gras';
-$lang['qb_italic'] = 'Italique';
-$lang['qb_underl'] = 'Souligné';
-$lang['qb_code'] = 'Code';
-$lang['qb_strike'] = 'Texte barré';
-$lang['qb_h1'] = 'En-tête 1';
-$lang['qb_h2'] = 'En-tête 2';
-$lang['qb_h3'] = 'En-tête 3';
-$lang['qb_h4'] = 'En-tête 4';
-$lang['qb_h5'] = 'En-tête 5';
-$lang['qb_link'] = 'Lien interne';
-$lang['qb_extlink'] = 'Lien externe';
-$lang['qb_hr'] = 'Ligne horizontale';
-$lang['qb_ol'] = 'Liste numérotée';
-$lang['qb_ul'] = 'Liste à puce';
-$lang['qb_media'] = 'Ajouter des images et autres fichiers';
-$lang['qb_sig'] = 'Insérer une signature';
-$lang['qb_smileys'] = 'Ãmoticons';
-$lang['qb_chars'] = 'Caractères spéciaux';
-$lang['del_confirm'] = 'Effacer cette entrée ?';
-$lang['admin_register'] = 'Ajouter un nouvel utilisateur';
-$lang['metaedit'] = 'Ãditer les metadonnées';
-$lang['metasaveerr'] = 'Erreur à l\'écriture des metadonnées';
-$lang['metasaveok'] = 'Metadonnées enregistrées';
-$lang['img_backto'] = 'Retour à ';
-$lang['img_title'] = 'Titre';
-$lang['img_caption'] = 'Légende';
-$lang['img_date'] = 'Date';
-$lang['img_fname'] = 'Nom de fichier';
-$lang['img_fsize'] = 'Taille';
-$lang['img_artist'] = 'Auteur';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Appareil photo';
-$lang['img_keywords'] = 'Mots clef';
-$lang['subscribe_success'] = 'Ajout de %s à la liste d\'abonnés de %s';
-$lang['subscribe_error'] = 'Erreur à l\'ajout de %s à la liste d\'abonnés de %s';
-$lang['subscribe_noaddress'] = 'Aucune adresse associée à votre nom d\'utilisateur, impossible de vous ajouter à la liste d\'abonnés';
-$lang['unsubscribe_success'] = 'Suppression de %s de la liste d\'abonnés de %s';
-$lang['unsubscribe_error'] = 'Erreur à la suppression de %s de la liste d\'abonnés de %s';
-$lang['authmodfailed'] = 'Mauvais paramétrage de l\'authentification. Merci d\'informer l\'administrateur du Wiki.';
-$lang['authtempfail'] = 'L\'authentification est temporairement indisponible. Si cela perdure, merci d\'informer l\'administrateur du Wiki.';
-$lang['i_chooselang'] = 'Choisissez votre langue';
-$lang['i_installer'] = 'Installeur DokuWiki';
-$lang['i_wikiname'] = 'Nom du Wiki';
-$lang['i_enableacl'] = 'Activer les ACL (recommandé)';
-$lang['i_superuser'] = 'Super-utilisateur';
-$lang['i_problems'] = 'L\'installeur a détecté les problèmes indiqués ci-dessous. Vous ne pouvez poursuivre tant qu\'ils n\'auront pas été corrigés.';
-$lang['i_modified'] = 'Pour des raisons de sécurité ce script ne fonctionne qu\'avec une installation neuve et non modifiée de DokuWiki. Vous devriez ré-extraire les fichiers depuis le paquet téléchargé ou consulter les <a href="http://wiki.splitbrain.org/wiki:install">instructions d\'installation de DokuWiki</a>';
-$lang['i_funcna'] = 'La fonction PHP <code>%s</code> n\'est pas disponible. Peut-être que votre hébergeur l\'a désactivée ?';
-$lang['i_phpver'] = 'Votre version de PHP (<code>%s</code>) est antérieure à la version requise (<code>%s</code>. Vous devez mettre à jour votre installation de PHP.';
-$lang['i_permfail'] = '<code>%s</code> n\'est pas accessible en écriture pour DokuWiki. Vous devez corriger les permissions de ce répertoire !';
-$lang['i_confexists'] = '<code>%s</code> existe déjà ';
-$lang['i_writeerr'] = 'Impossible de créer <code>%s</code>. Vous devez vérifier les permissions des répertoires/fichiers et créer le fichier manuellement.';
-$lang['i_badhash'] = 'dokuwiki.php non reconnu ou modifié (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - valeur illégale ou vide';
-$lang['i_success'] = 'L\'installation s\'est terminée avec succès. Vous pouvez maintenant supprimer le fichier install.php. Continuer avec <a href="doku.php">votre nouveau DokuWiki</a>.';
-$lang['i_failure'] = 'Des erreurs sont survenues lors de l\'écriture des fichiers de configuration. Il vous faudra les corriger manuellement avant de pouvoir utiliser <a href="doku.php">votre nouveau DokuWiki</a>.';
-$lang['i_policy'] = 'Politique d\'ACL initiale';
-$lang['i_pol0'] = 'Wiki ouvert (lecture, écriture, envoi de fichiers pour tout le monde)';
-$lang['i_pol1'] = 'Wiki public (lecture pour tout le monde, écriture et envoi de fichiers pour les utilisateurs enregistrés)';
-$lang['i_pol2'] = 'Wiki fermé (lecture, écriture, envoi de fichiers pour les utilisateurs enregistrés uniquement)';
-$lang['i_retry'] = 'Réessayer';
+<?php
+/**
+ * french language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Sébastien Bauer <sebastien.bauer at advalvas.be>
+ * @author Antoine Fixary <antoine.fixary at freesbee.fr>
+ * @author cumulus <pta-n56 at myamail.com>
+ * @author Gwenn Gueguen <contact at demisel.net>
+ * @author Guy Brand <gb at isis.u-strasbg.fr>
+ * @author Fabien Chabreuil <fabien at integralpersonality.com>
+ * @author Stéphane Chamberland <stephane.chamberland at ec.gc.ca>
+ * @author Delassaux Julien <julien at delassaux.fr>
+ * @author Maurice A. LeBlanc <leblancma at cooptel.qc.ca>
+ * @author gb at isis.u-strasbg.fr
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Ãditer cette page';
+$lang['btn_source'] = 'Afficher le texte source';
+$lang['btn_show'] = 'Afficher la page';
+$lang['btn_create'] = 'Créer cette page';
+$lang['btn_search'] = 'Rechercher';
+$lang['btn_save'] = 'Enregistrer';
+$lang['btn_preview'] = 'Aperçu';
+$lang['btn_top'] = 'Haut de page';
+$lang['btn_newer'] = '<< plus récent';
+$lang['btn_older'] = 'moins récent >>';
+$lang['btn_revs'] = 'Anciennes révisions';
+$lang['btn_recent'] = 'Derniers changements';
+$lang['btn_upload'] = 'Envoyer';
+$lang['btn_cancel'] = 'Annuler';
+$lang['btn_index'] = 'Index';
+$lang['btn_secedit'] = 'Ãditer';
+$lang['btn_login'] = 'Connexion';
+$lang['btn_logout'] = 'Déconnexion';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Rafraîchir';
+$lang['btn_delete'] = 'Effacer';
+$lang['btn_back'] = 'Retour';
+$lang['btn_backlink'] = 'Liens vers cette page';
+$lang['btn_backtomedia'] = 'Retour à la sélection du fichier média';
+$lang['btn_subscribe'] = 'S\'abonner à la page';
+$lang['btn_unsubscribe'] = 'Se désabonner de la page';
+$lang['btn_subscribens'] = 'S\'abonner à la catégorie';
+$lang['btn_unsubscribens'] = 'Se désabonner de la catégorie';
+$lang['btn_profile'] = 'Mettre à jour le profil';
+$lang['btn_reset'] = 'Réinitialiser';
+$lang['btn_resendpwd'] = 'Envoyer le mot de passe';
+$lang['btn_draft'] = 'Ãditer brouillon';
+$lang['btn_recover'] = 'Récupérer brouillon';
+$lang['btn_draftdel'] = 'Effacer brouillon';
+$lang['loggedinas'] = 'Connecté en tant que ';
+$lang['user'] = 'Utilisateur';
+$lang['pass'] = 'Mot de passe';
+$lang['newpass'] = 'Nouveau mot de passe';
+$lang['oldpass'] = 'Mot de passe actuel';
+$lang['passchk'] = 'Répéter nouveau mot de passe';
+$lang['remember'] = 'Mémoriser';
+$lang['fullname'] = 'Nom complet';
+$lang['email'] = 'Adresse de courriel';
+$lang['register'] = 'S\'enregistrer';
+$lang['profile'] = 'Profil utilisateur';
+$lang['badlogin'] = 'L\'utilisateur ou le mot de passe est incorrect.';
+$lang['minoredit'] = 'Mineur';
+$lang['draftdate'] = 'Brouillon auto-enregistré le';
+$lang['regmissing'] = 'Désolé, vous devez remplir tous les champs.';
+$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur appartient déjà à un autre utilisateur.';
+$lang['regsuccess'] = 'L\'utilisateur a été créé. Le mot de passe a été expédié par courriel.';
+$lang['regsuccess2'] = 'L\'utilisateur a été créé.';
+$lang['regmailfail'] = 'Il semble y avoir un problème à l\'envoi du courriel. Contactez l\'administrateur.';
+$lang['regbadmail'] = 'L\'adresse de courriel semble incorrecte - si vous pensez que c\'est une erreur, contactez l\'administrateur.';
+$lang['regbadpass'] = 'Les deux mots de passe fournis sont différents, recommencez SVP.';
+$lang['regpwmail'] = 'Votre mot de passe DokuWiki';
+$lang['reghere'] = 'Vous n\'avez pas encore de compte ? Enregistrez-vous ici ';
+$lang['profna'] = 'Ce wiki ne permet pas de modifier les profils';
+$lang['profnochange'] = 'Pas de changement, rien à faire.';
+$lang['profnoempty'] = 'Un nom ou une adresse de courriel vide n\'est pas permis.';
+$lang['profchanged'] = 'Mise à jour du profil réussie.';
+$lang['pwdforget'] = 'Mot de passe oublié ? Faites-vous envoyer votre mot de passe ';
+$lang['resendna'] = 'Ce wiki ne permet pas le renvoi de mot de passe.';
+$lang['resendpwd'] = 'Renvoyer le mot de passe de';
+$lang['resendpwdmissing'] = 'Désolé, vous devez remplir tous les champs.';
+$lang['resendpwdnouser'] = 'Désolé, cet utilisateur est introuvable dans notre base.';
+$lang['resendpwdbadauth'] = 'Désolé, ce code d\'authentification est invalide. Assurez vous d\'avoir utilisé le lien de confirmation.';
+$lang['resendpwdconfirm'] = 'Un lien de confirmation vous a été envoyé par courriel.';
+$lang['resendpwdsuccess'] = 'Votre nouveau mot de passe vous a été expédié par courriel.';
+$lang['txt_upload'] = 'Sélectionnez un fichier à envoyer ';
+$lang['txt_filename'] = 'Donnez un "wikiname" (optionnel) ';
+$lang['txt_overwrt'] = 'Ãcraser le fichier cible';
+$lang['lockedby'] = 'Actuellement bloqué par';
+$lang['lockexpire'] = 'Le blocage expire à ';
+$lang['willexpire'] = 'Votre blocage pour modifier cette page expire dans une minute.\nPour éviter les conflits, utiliser le bouton Aperçu pour réinitialiser le minuteur.';
+$lang['notsavedyet'] = 'Les changements non enregistrés seront perdus.\nVoulez-vous vraiment continuer ?';
+$lang['rssfailed'] = 'Une erreur s\'est produite en récupérant ce flux : ';
+$lang['nothingfound'] = 'Pas de réponse.';
+$lang['mediaselect'] = 'Sélection de fichier';
+$lang['fileupload'] = 'Envoi de fichier';
+$lang['uploadsucc'] = 'Envoi réussi';
+$lang['uploadfail'] = 'L\'envoi n\'a pas réussi. Les permissions sont-elles correctes ?';
+$lang['uploadwrong'] = 'Envoi refusé. Cette extension de fichier est interdite !';
+$lang['uploadexist'] = 'Le fichier existe. Envoi avorté.';
+$lang['uploadbadcontent'] = 'Le contenu envoyé ne correspond pas à l\'extension du fichier %s.';
+$lang['uploadspam'] = 'L\'envoi a été bloqué par la liste noire antispam.';
+$lang['uploadxss'] = 'L\'envoi a été bloqué car son contenu est peut-être malveillant.';
+$lang['deletesucc'] = 'Le fichier "%s" a été effacé.';
+$lang['deletefail'] = 'Le fichier "%s" n\'a pu être effacé - vérifier les permissions.';
+$lang['mediainuse'] = 'Le fichier "%s" n\'a pas été effacé - il est en cours d\'utilisation.';
+$lang['namespaces'] = 'Catégories';
+$lang['mediafiles'] = 'Fichiers disponibles dans';
+$lang['js']['keepopen'] = 'Gardez la fenêtre ouverte pendant la sélection';
+$lang['js']['hidedetails'] = 'Masquer détails';
+$lang['mediausage'] = 'Utilisez la syntaxe suivante pour faire référence à ce fichier :';
+$lang['mediaview'] = 'Voir fichier original';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Envoyer un fichier dans la catégorie courante ici. Pour créer des sous-catégories, préfixez le nom du fichier par le nom de la sous-catégorie séparée par un double point.';
+$lang['mediaextchange'] = 'Extension du fichier changée de .%s en .%s !';
+$lang['reference'] = 'Références pour';
+$lang['ref_inuse'] = 'Le fichier ne peut être effacé car il est utilisé par les pages suivantes :';
+$lang['ref_hidden'] = 'Des références existent dans des pages que vous n\'avez pas la permission de lire';
+$lang['hits'] = 'occurrences trouvées';
+$lang['quickhits'] = 'Pages trouvées ';
+$lang['toc'] = 'Table des matières';
+$lang['current'] = 'version actuelle';
+$lang['yours'] = 'Votre version';
+$lang['diff'] = 'Différences avec la version actuelle';
+$lang['diff2'] = 'Différences entre les versions sélectionnées';
+$lang['line'] = 'Ligne';
+$lang['breadcrumb'] = 'Piste';
+$lang['youarehere'] = 'Vous êtes ici';
+$lang['lastmod'] = 'Dernière modification';
+$lang['by'] = 'par';
+$lang['deleted'] = 'effacée';
+$lang['created'] = 'créée';
+$lang['restored'] = 'ancienne révision restaurée';
+$lang['external_edit'] = 'édition externe';
+$lang['summary'] = 'Résumé';
+$lang['mail_newpage'] = 'page ajoutée :';
+$lang['mail_changed'] = 'page changée :';
+$lang['mail_new_user'] = 'nouvel utilisateur :';
+$lang['mail_upload'] = 'fichier envoyé :';
+$lang['nosmblinks'] = 'Les liens vers les partages Windows ne fonctionnent qu\'avec Microsoft Internet Explorer.\nVous pouvez toujours faire un copier/coller du lien.';
+$lang['qb_alert'] = 'SVP, entrez le texte que vous souhaitez formater.\nIl sera ajouté à la fin du document.';
+$lang['qb_bold'] = 'Gras';
+$lang['qb_italic'] = 'Italique';
+$lang['qb_underl'] = 'Souligné';
+$lang['qb_code'] = 'Code';
+$lang['qb_strike'] = 'Texte barré';
+$lang['qb_h1'] = 'En-tête 1';
+$lang['qb_h2'] = 'En-tête 2';
+$lang['qb_h3'] = 'En-tête 3';
+$lang['qb_h4'] = 'En-tête 4';
+$lang['qb_h5'] = 'En-tête 5';
+$lang['qb_link'] = 'Lien interne';
+$lang['qb_extlink'] = 'Lien externe';
+$lang['qb_hr'] = 'Ligne horizontale';
+$lang['qb_ol'] = 'Liste numérotée';
+$lang['qb_ul'] = 'Liste à puce';
+$lang['qb_media'] = 'Ajouter des images et autres fichiers';
+$lang['qb_sig'] = 'Insérer une signature';
+$lang['qb_smileys'] = 'Ãmoticons';
+$lang['qb_chars'] = 'Caractères spéciaux';
+$lang['del_confirm'] = 'Effacer cette entrée ?';
+$lang['admin_register'] = 'Ajouter un nouvel utilisateur';
+$lang['metaedit'] = 'Ãditer les metadonnées';
+$lang['metasaveerr'] = 'Erreur à l\'écriture des metadonnées';
+$lang['metasaveok'] = 'Metadonnées enregistrées';
+$lang['img_backto'] = 'Retour à ';
+$lang['img_title'] = 'Titre';
+$lang['img_caption'] = 'Légende';
+$lang['img_date'] = 'Date';
+$lang['img_fname'] = 'Nom de fichier';
+$lang['img_fsize'] = 'Taille';
+$lang['img_artist'] = 'Auteur';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Appareil photo';
+$lang['img_keywords'] = 'Mots clef';
+$lang['subscribe_success'] = 'Ajout de %s à la liste d\'abonnés de %s';
+$lang['subscribe_error'] = 'Erreur à l\'ajout de %s à la liste d\'abonnés de %s';
+$lang['subscribe_noaddress'] = 'Aucune adresse associée à votre nom d\'utilisateur, impossible de vous ajouter à la liste d\'abonnés';
+$lang['unsubscribe_success'] = 'Suppression de %s de la liste d\'abonnés de %s';
+$lang['unsubscribe_error'] = 'Erreur à la suppression de %s de la liste d\'abonnés de %s';
+$lang['authmodfailed'] = 'Mauvais paramétrage de l\'authentification. Merci d\'informer l\'administrateur du Wiki.';
+$lang['authtempfail'] = 'L\'authentification est temporairement indisponible. Si cela perdure, merci d\'informer l\'administrateur du Wiki.';
+$lang['i_chooselang'] = 'Choisissez votre langue';
+$lang['i_installer'] = 'Installeur DokuWiki';
+$lang['i_wikiname'] = 'Nom du Wiki';
+$lang['i_enableacl'] = 'Activer les ACL (recommandé)';
+$lang['i_superuser'] = 'Super-utilisateur';
+$lang['i_problems'] = 'L\'installeur a détecté les problèmes indiqués ci-dessous. Vous ne pouvez poursuivre tant qu\'ils n\'auront pas été corrigés.';
+$lang['i_modified'] = 'Pour des raisons de sécurité ce script ne fonctionne qu\'avec une installation neuve et non modifiée de DokuWiki. Vous devriez ré-extraire les fichiers depuis le paquet téléchargé ou consulter les <a href="http://wiki.splitbrain.org/wiki:install">instructions d\'installation de DokuWiki</a>';
+$lang['i_funcna'] = 'La fonction PHP <code>%s</code> n\'est pas disponible. Peut-être que votre hébergeur l\'a désactivée ?';
+$lang['i_phpver'] = 'Votre version de PHP (<code>%s</code>) est antérieure à la version requise (<code>%s</code>. Vous devez mettre à jour votre installation de PHP.';
+$lang['i_permfail'] = '<code>%s</code> n\'est pas accessible en écriture pour DokuWiki. Vous devez corriger les permissions de ce répertoire !';
+$lang['i_confexists'] = '<code>%s</code> existe déjà ';
+$lang['i_writeerr'] = 'Impossible de créer <code>%s</code>. Vous devez vérifier les permissions des répertoires/fichiers et créer le fichier manuellement.';
+$lang['i_badhash'] = 'dokuwiki.php non reconnu ou modifié (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - valeur illégale ou vide';
+$lang['i_success'] = 'L\'installation s\'est terminée avec succès. Vous pouvez maintenant supprimer le fichier install.php. Continuer avec <a href="doku.php">votre nouveau DokuWiki</a>.';
+$lang['i_failure'] = 'Des erreurs sont survenues lors de l\'écriture des fichiers de configuration. Il vous faudra les corriger manuellement avant de pouvoir utiliser <a href="doku.php">votre nouveau DokuWiki</a>.';
+$lang['i_policy'] = 'Politique d\'ACL initiale';
+$lang['i_pol0'] = 'Wiki ouvert (lecture, écriture, envoi de fichiers pour tout le monde)';
+$lang['i_pol1'] = 'Wiki public (lecture pour tout le monde, écriture et envoi de fichiers pour les utilisateurs enregistrés)';
+$lang['i_pol2'] = 'Wiki fermé (lecture, écriture, envoi de fichiers pour les utilisateurs enregistrés uniquement)';
+$lang['i_retry'] = 'Réessayer';
Modified: site/trunk/www-root/wiki/inc/lang/fr/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Page bloquée ======
-
-Cette page est actuellement bloquée pour édition par un autre utilisateur. Vous devez attendre que l'autre utilisateur ait terminé ou que le blocage de la page expire.
+====== Page bloquée ======
+
+Cette page est actuellement bloquée pour édition par un autre utilisateur. Vous devez attendre que l'autre utilisateur ait terminé ou que le blocage de la page expire.
Modified: site/trunk/www-root/wiki/inc/lang/fr/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Connexion ======
-
-Vous n'êtes pas connecté ! Entrez vos identifiants ci-dessous pour vous connecter. Votre navigateur doit accepter les cookies pour pouvoir vous connecter.
+====== Connexion ======
+
+Vous n'êtes pas connecté ! Entrez vos identifiants ci-dessous pour vous connecter. Votre navigateur doit accepter les cookies pour pouvoir vous connecter.
Modified: site/trunk/www-root/wiki/inc/lang/fr/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-Une page dans votre Wiki a été ajoutée ou modifiée. Voici les
-détails :
-
-Date : @DATE@
-Navigateur : @BROWSER@
-Adresse IP : @IPADDRESS@
-Nom d'hôte : @HOSTNAME@
-Ancienne révision : @OLDPAGE@
-Nouvelle révision : @NEWPAGE@
-Résumé : @SUMMARY@
-Utilisateur : @USER@
-
- at DIFF@
-
-
---
-Ce message a été généré par DokuWiki
- at DOKUWIKIURL@
+Une page dans votre Wiki a été ajoutée ou modifiée. Voici les
+détails :
+
+Date : @DATE@
+Navigateur : @BROWSER@
+Adresse IP : @IPADDRESS@
+Nom d'hôte : @HOSTNAME@
+Ancienne révision : @OLDPAGE@
+Nouvelle révision : @NEWPAGE@
+Résumé : @SUMMARY@
+Utilisateur : @USER@
+
+ at DIFF@
+
+
+--
+Ce message a été généré par DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fr/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Cette page n'existe pas encore ======
-
-Vous avez suivi un lien vers une page qui n'existe pas encore. Si vos droits sont suffisants, vous pouvez utiliser le bouton ''Créer cette page''.
+====== Cette page n'existe pas encore ======
+
+Vous avez suivi un lien vers une page qui n'existe pas encore. Si vos droits sont suffisants, vous pouvez utiliser le bouton ''Créer cette page''.
Modified: site/trunk/www-root/wiki/inc/lang/fr/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Révision non trouvée ======
-
-La révision demandée n'existe pas. Utilisez le bouton 'Anciennes révisions' pour une liste des révisions de ce document.
-
+====== Révision non trouvée ======
+
+La révision demandée n'existe pas. Utilisez le bouton 'Anciennes révisions' pour une liste des révisions de ce document.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Bonjour @FULLNAME@ !
-
-Voici vos identifiants pour @TITLE@ sur @DOKUWIKIURL@
-
-Utilisateur : @LOGIN@
-Mot de passe : @PASSWORD@
-
---
-Ce mail a été envoyé par DokuWiki de
- at DOKUWIKIURL@
+Bonjour @FULLNAME@ !
+
+Voici vos identifiants pour @TITLE@ sur @DOKUWIKIURL@
+
+Utilisateur : @LOGIN@
+Mot de passe : @PASSWORD@
+
+--
+Ce mail a été envoyé par DokuWiki de
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fr/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Aperçu ======
-
-Ceci est un aperçu de votre document. Attention ! Il n'est **pas encore
-enregistré** !
-
+====== Aperçu ======
+
+Ceci est un aperçu de votre document. Attention ! Il n'est **pas encore
+enregistré** !
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Bonjour @FULLNAME@ !
-
-Quelqu'un a demandé un nouveau mot de passe pour votre login
- at TITLE@ sur @DOKUWIKIURL@
-
-Si vous n'êtes pas à l'origine de cette requête d'un nouveau mot de
-passe, ignorez ce message.
-
-Pour confirmer que cette requête émane bien de vous, merci de suivre le lien ci-dessous.
-
- at CONFIRM@
-
---
-Ce message a été généré par DokuWiki
- at DOKUWIKIURL@
+Bonjour @FULLNAME@ !
+
+Quelqu'un a demandé un nouveau mot de passe pour votre login
+ at TITLE@ sur @DOKUWIKIURL@
+
+Si vous n'êtes pas à l'origine de cette requête d'un nouveau mot de
+passe, ignorez ce message.
+
+Pour confirmer que cette requête émane bien de vous, merci de suivre le lien ci-dessous.
+
+ at CONFIRM@
+
+--
+Ce message a été généré par DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fr/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Cette page est en lecture seule. Vous pouvez afficher le texte source, mais pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur.
-
+Cette page est en lecture seule. Vous pouvez afficher le texte source, mais pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Derniers changements ======
-
-Les pages suivantes ont été modifiées récemment.
-
-
+====== Derniers changements ======
+
+Les pages suivantes ont été modifiées récemment.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== S'enregistrer comme nouvel utilisateur ======
-
-Remplissez toutes les informations ci-dessous pour vous créer un compte sur ce Wiki. Assurez-vous de fournir une **adresse de courriel valide** car votre mot de passe sera envoyé à cette adresse. Le nom d'utilisateur doit être un [[doku>wiki:pagename|nom de page]] valide.
+====== S'enregistrer comme nouvel utilisateur ======
+
+Remplissez toutes les informations ci-dessous pour vous créer un compte sur ce Wiki. Assurez-vous de fournir une **adresse de courriel valide** car votre mot de passe sera envoyé à cette adresse. Le nom d'utilisateur doit être un [[doku>wiki:pagename|nom de page]] valide.
Modified: site/trunk/www-root/wiki/inc/lang/fr/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Un nouvel utilisateur s'est enregistré. Voici les détails :
-
-Utilisateur : @NEWUSER@
-Nom complet : @NEWNAME@
-Adresse de courriel : @NEWEMAIL@
-
-Date : @DATE@
-Navigateur : @BROWSER@
-Adresse IP : @IPADDRESS@
-Nom d'hôte : @HOSTNAME@
-
---
-Ce message a été généré par DokuWiki
- at DOKUWIKIURL@
+Un nouvel utilisateur s'est enregistré. Voici les détails :
+
+Utilisateur : @NEWUSER@
+Nom complet : @NEWNAME@
+Adresse de courriel : @NEWEMAIL@
+
+Date : @DATE@
+Navigateur : @BROWSER@
+Adresse IP : @IPADDRESS@
+Nom d'hôte : @HOSTNAME@
+
+--
+Ce message a été généré par DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fr/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Envoyer un nouveau mot de passe ======
-
-Veuillez compléter les champs ci dessous pour obtenir un nouveau mot de passe pour votre compte dans ce wiki. Un lien de confirmation vous sera envoyé à l'adresse de courriel utilisée lors de votre
-enregistrement.
-
+====== Envoyer un nouveau mot de passe ======
+
+Veuillez compléter les champs ci dessous pour obtenir un nouveau mot de passe pour votre compte dans ce wiki. Un lien de confirmation vous sera envoyé à l'adresse de courriel utilisée lors de votre
+enregistrement.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Anciennes révisions ======
-
-Voici les anciennes révisions de la page en cours. Pour revenir à une
-ancienne révision, sélectionnez-la ci-dessous, cliquez sur le bouton ''Ãditer cette page'' et enregistrez-la.
-
+====== Anciennes révisions ======
+
+Voici les anciennes révisions de la page en cours. Pour revenir à une
+ancienne révision, sélectionnez-la ci-dessous, cliquez sur le bouton ''Ãditer cette page'' et enregistrez-la.
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Recherche ======
-
-Voici les résultats de votre recherche. Si vous n'avez pas trouvé ce
-que vous cherchiez, vous pouvez créer ou éditer la page correspondante
-à votre requête en cliquant sur le bouton approprié.
-
-===== Résultats =====
+====== Recherche ======
+
+Voici les résultats de votre recherche. Si vous n'avez pas trouvé ce
+que vous cherchiez, vous pouvez créer ou éditer la page correspondante
+à votre requête en cliquant sur le bouton approprié.
+
+===== Résultats =====
Modified: site/trunk/www-root/wiki/inc/lang/fr/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Ceci est une ancienne révision du document !**
-----
+**Ceci est une ancienne révision du document !**
+----
Modified: site/trunk/www-root/wiki/inc/lang/fr/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,112 +1,112 @@
-# Cette liste regroupe des mots ignorés par l'indexeur
-# Chaque ligne comporte un mot
-# Les fins de ligne de ce fichier doivent être de type UNIX
-# Les mots de moins de 3 lettres sont ignorés par défaut.
-# Cette liste est basée sur http://www.ranks.nl/stopwords/
-alors
-aucuns
-aussi
-autre
-avant
-avec
-avoir
-bon
-car
-cela
-ces
-ceux
-chaque
-comme
-comment
-dans
-des
-dedans
-dehors
-depuis
-deux
-devrait
-doit
-donc
-dos
-droite
-début
-elle
-elles
-encore
-essai
-est
-fait
-faites
-fois
-font
-force
-haut
-hors
-ici
-ils
-juste
-les
-leur
-lÃ
-maintenant
-mais
-mes
-mine
-moins
-mon
-mot
-même
-nommés
-notre
-nous
-nouveaux
-où
-par
-parce
-parole
-pas
-personnes
-peut
-peu
-pièce
-plupart
-pour
-pourquoi
-quand
-que
-quel
-quelle
-quelles
-quels
-qui
-sans
-ses
-seulement
-sien
-son
-sont
-sous
-soyez
-sujet
-sur
-tandis
-tellement
-tels
-tes
-ton
-tous
-tout
-trop
-très
-valeur
-voie
-voient
-vont
-votre
-vous
-ça
-étaient
-état
-étions
-été
-être
+# Cette liste regroupe des mots ignorés par l'indexeur
+# Chaque ligne comporte un mot
+# Les fins de ligne de ce fichier doivent être de type UNIX
+# Les mots de moins de 3 lettres sont ignorés par défaut.
+# Cette liste est basée sur http://www.ranks.nl/stopwords/
+alors
+aucuns
+aussi
+autre
+avant
+avec
+avoir
+bon
+car
+cela
+ces
+ceux
+chaque
+comme
+comment
+dans
+des
+dedans
+dehors
+depuis
+deux
+devrait
+doit
+donc
+dos
+droite
+début
+elle
+elles
+encore
+essai
+est
+fait
+faites
+fois
+font
+force
+haut
+hors
+ici
+ils
+juste
+les
+leur
+lÃ
+maintenant
+mais
+mes
+mine
+moins
+mon
+mot
+même
+nommés
+notre
+nous
+nouveaux
+où
+par
+parce
+parole
+pas
+personnes
+peut
+peu
+pièce
+plupart
+pour
+pourquoi
+quand
+que
+quel
+quelle
+quelles
+quels
+qui
+sans
+ses
+seulement
+sien
+son
+sont
+sous
+soyez
+sujet
+sur
+tandis
+tellement
+tels
+tes
+ton
+tous
+tout
+trop
+très
+valeur
+voie
+voient
+vont
+votre
+vous
+ça
+étaient
+état
+étions
+été
+être
Modified: site/trunk/www-root/wiki/inc/lang/fr/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Bonjour !
-
-La page @PAGE@ dans le wiki @TITLE@ a changé.
-Voici les modifications :
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Pour vous désabonner de cette page, connectez vous via
- at DOKUWIKIURL@ et visualisez la page
- at NEWPAGE@
-puis choisissez 'Ne pas notifier les modifications'.
-
---
-Ce message a été généré par Dokuwiki
- at DOKUWIKIURL@
+Bonjour !
+
+La page @PAGE@ dans le wiki @TITLE@ a changé.
+Voici les modifications :
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Pour vous désabonner de cette page, connectez vous via
+ at DOKUWIKIURL@ et visualisez la page
+ at NEWPAGE@
+puis choisissez 'Ne pas notifier les modifications'.
+
+--
+Ce message a été généré par Dokuwiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fr/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Mise à jour de votre profil ======
-
-Ne complétez que les champs que vous souhaitez modifier. Vous ne
-pouvez pas modifier votre nom d'utilisateur.
-
-
+====== Mise à jour de votre profil ======
+
+Ne complétez que les champs que vous souhaitez modifier. Vous ne
+pouvez pas modifier votre nom d'utilisateur.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/fr/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Un fichier a été envoyé dans votre DokuWiki. En voici les détails :
-
-Fichier : @MEDIA@
-Date : @DATE@
-Navigateur : @BROWSER@
-Adresse IP : @IPADDRESS@
-Nom d'hôte : @HOSTNAME@
-Taille : @SIZE@
-Type MIME : @MIME@
-Utilisateur : @USER@
-
---
-Ce message a été généré par DokuWiki
- at DOKUWIKIURL@
+Un fichier a été envoyé dans votre DokuWiki. En voici les détails :
+
+Fichier : @MEDIA@
+Date : @DATE@
+Navigateur : @BROWSER@
+Adresse IP : @IPADDRESS@
+Nom d'hôte : @HOSTNAME@
+Taille : @SIZE@
+Type MIME : @MIME@
+Utilisateur : @USER@
+
+--
+Ce message a été généré par DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/fr/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/fr/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/fr/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Changement bloqué ======
-
-Vos changements n'ont **pas été enregistrés** car ils contiennent un ou plusieurs mots bloqués. Si vous avez essayé de spammer le Wiki -- mauvaise idée ! Si vous pensez que c'est une erreur, contactez l'administrateur de ce Wiki.
-
+====== Changement bloqué ======
+
+Vos changements n'ont **pas été enregistrés** car ils contiennent un ou plusieurs mots bloqués. Si vous avez essayé de spammer le Wiki -- mauvaise idée ! Si vous pensez que c'est une erreur, contactez l'administrateur de ce Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Administración ======
-
-De seguido podes atopar unha lista de tarefas administrativas dispoñibles no
-DokuWiki.
-
+====== Administración ======
+
+De seguido podes atopar unha lista de tarefas administrativas dispoñibles no
+DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Ligazóns con Isto ======
-
-Isto é unha lista de páxinas que semellan ligar coa páxina actual.
-
+====== Ligazóns con Isto ======
+
+Isto é unha lista de páxinas que semellan ligar coa páxina actual.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Hai unha versión máis nova ======
-
-Hai unha versión máis nova do documento que editaches. Isto sucede cando outro
-usuario mudou o documento mentres ti estabas a editalo.
-
-Examina as diferenzas amosadas embaixo polo miúdo, e logo decide que versión
-manter. Se escolles ''gardar'', gardarase a túa versión. Preme en ''cancelar''
-para manter a versión actual.
-
+====== Hai unha versión máis nova ======
+
+Hai unha versión máis nova do documento que editaches. Isto sucede cando outro
+usuario mudou o documento mentres ti estabas a editalo.
+
+Examina as diferenzas amosadas embaixo polo miúdo, e logo decide que versión
+manter. Se escolles ''gardar'', gardarase a túa versión. Preme en ''cancelar''
+para manter a versión actual.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Permiso Denegado======
-
-SentÃmolo, pero non tes dereitos de abondo para continuar. Pode que esqueceses iniciar a sesión?
-
+======Permiso Denegado======
+
+SentÃmolo, pero non tes dereitos de abondo para continuar. Pode que esqueceses iniciar a sesión?
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Diferenzas======
-
-Isto amosa as diferenzas entre a revisión seleccionada e
-a versión actual da páxina.
-
+======Diferenzas======
+
+Isto amosa as diferenzas entre a revisión seleccionada e
+a versión actual da páxina.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Arquivo de borrador atopado ======
-
-A túa última sesión de edición desta páxina non foi completada de xeito correcto.
-O DokuWiki gravou automaticamente un borrador durante o teu traballo que agora
-podes usar para continuar coa edición. De seguido podes ver os datos que foron
-gardados da túa última sesión.
-
-Por favor, escolle se queres //recuperar// a túa sesión de edición perdida, //eliminar//
-o borrador autogardado ou //cancelar// o proceso de edición.
-
+====== Arquivo de borrador atopado ======
+
+A túa última sesión de edición desta páxina non foi completada de xeito correcto.
+O DokuWiki gravou automaticamente un borrador durante o teu traballo que agora
+podes usar para continuar coa edición. De seguido podes ver os datos que foron
+gardados da túa última sesión.
+
+Por favor, escolle se queres //recuperar// a túa sesión de edición perdida, //eliminar//
+o borrador autogardado ou //cancelar// o proceso de edición.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Edita a páxina e preme en ''Gardar''. Bótalle un ollo á [[wiki:syntax|sintaxe]]
-para ver a sintaxe da Wiki. Por favor, edita a páxina só se podes **mellorala**. Se
-queres facer probas, aprende como levar a cabo os teus primeiros pasos na
-[[playground:playground|eira]].
-
+Edita a páxina e preme en ''Gardar''. Bótalle un ollo á [[wiki:syntax|sintaxe]]
+para ver a sintaxe da Wiki. Por favor, edita a páxina só se podes **mellorala**. Se
+queres facer probas, aprende como levar a cabo os teus primeiros pasos na
+[[playground:playground|eira]].
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Cargaches unha revisión antiga do documento!** Se o gardas, crearás
-unha nova versión con estes datos.
+**Cargaches unha revisión antiga do documento!** Se o gardas, crearás
+unha nova versión con estes datos.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/gl/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Ãndice ======
-
-Isto é un Ãndice de todas as páxinas dispoñibles ordenadas por [[doku>wiki:namespaces|nomes de espazo]].
-
+====== Ãndice ======
+
+Isto é un Ãndice de todas as páxinas dispoñibles ordenadas por [[doku>wiki:namespaces|nomes de espazo]].
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,25 +1,25 @@
-<p>Esta páxina é unha axuda na primeira vez que se instala e configura o
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Se queres máis información
-verbo deste instalador está dispoñible na súa propia
-<a href="http://wiki.splitbrain.org/wiki:installer">páxina de documentación</a>.</p>
-
-<p>O DokuWiki usa arquivos normais para a almacenaxe das páxinas do wiki
-e outra información asociada coas mesmas (p.e. imaxes, Ãndices de procura,
-revisións antigas, etc). Por iso, para poder operar correctamente, o DokuWiki
-<strong>precisa</strong> ter acceso de escritura aos directorios que conteñen
-eses arquivos. Este instalador non é quen de configurar os permisos dos directorios.
-Isto debe facerse normalmente de xeito directo na liña de comandos ou, se estás a
-usar un hospedaxe, a través do FTP ou do panel de control da túa hospedaxe (p.e.
-o cPanel).</p>
-
-<p>Este instalador configurará o teu DokuWiki para o uso do
-<acronym title="access control list">ACL</acronym>, o cal permitirá ao administrador
-iniciar sesión e acceder ao menú de administración do DokuWiki para instalar plugins,
-xestionar usuarios e accesos ás páxinas do wiki, ademais de modificar a configuración.
-Non é imprescindible para o funcionamento do DokuWiki, pero fai moito máis doada a
-administración do mesmo.</p>
-
-<p>Os usuarios expertos ou con requisitos especiais de configuración poden visitar
-as seguintes ligazóns para obter pormenores relativos ás
-<a href="http://wiki.splitbrain.org/wiki:install">instruccións de instalación</a>
-e á <a href="http://wiki.splitbrain.org/wiki:config">configuración</a>.</p>
+<p>Esta páxina é unha axuda na primeira vez que se instala e configura o
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Se queres máis información
+verbo deste instalador está dispoñible na súa propia
+<a href="http://wiki.splitbrain.org/wiki:installer">páxina de documentación</a>.</p>
+
+<p>O DokuWiki usa arquivos normais para a almacenaxe das páxinas do wiki
+e outra información asociada coas mesmas (p.e. imaxes, Ãndices de procura,
+revisións antigas, etc). Por iso, para poder operar correctamente, o DokuWiki
+<strong>precisa</strong> ter acceso de escritura aos directorios que conteñen
+eses arquivos. Este instalador non é quen de configurar os permisos dos directorios.
+Isto debe facerse normalmente de xeito directo na liña de comandos ou, se estás a
+usar un hospedaxe, a través do FTP ou do panel de control da túa hospedaxe (p.e.
+o cPanel).</p>
+
+<p>Este instalador configurará o teu DokuWiki para o uso do
+<acronym title="access control list">ACL</acronym>, o cal permitirá ao administrador
+iniciar sesión e acceder ao menú de administración do DokuWiki para instalar plugins,
+xestionar usuarios e accesos ás páxinas do wiki, ademais de modificar a configuración.
+Non é imprescindible para o funcionamento do DokuWiki, pero fai moito máis doada a
+administración do mesmo.</p>
+
+<p>Os usuarios expertos ou con requisitos especiais de configuración poden visitar
+as seguintes ligazóns para obter pormenores relativos ás
+<a href="http://wiki.splitbrain.org/wiki:install">instruccións de instalación</a>
+e á <a href="http://wiki.splitbrain.org/wiki:config">configuración</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/gl/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,206 +1,206 @@
-<?php
-/**
- * galician language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author CiberIrmandade da Fala <infoxeral at ciberirmandade.org>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Editar esta páxina';
-$lang['btn_source'] = 'Amosar a fonte da páxina';
-$lang['btn_show'] = 'Amosar páxina';
-$lang['btn_create'] = 'Crear esta páxina';
-$lang['btn_search'] = 'Procurar';
-$lang['btn_save'] = 'Gardar';
-$lang['btn_preview'] = 'Previsualizar';
-$lang['btn_top'] = 'Comezo da páxina';
-$lang['btn_newer'] = '<< máis recente';
-$lang['btn_older'] = 'menos recente >>';
-$lang['btn_revs'] = 'Revisións antigas';
-$lang['btn_recent'] = 'Trocos recentes';
-$lang['btn_upload'] = 'Subir';
-$lang['btn_cancel'] = 'Cancelar';
-$lang['btn_index'] = 'Ãndice';
-$lang['btn_secedit'] = 'Editar';
-$lang['btn_login'] = 'Iniciar sesión';
-$lang['btn_logout'] = 'Rematar sesión';
-$lang['btn_admin'] = 'Administración';
-$lang['btn_update'] = 'Actualizar';
-$lang['btn_delete'] = 'Borrar';
-$lang['btn_back'] = 'Atrás';
-$lang['btn_backlink'] = 'Ligazóns con isto';
-$lang['btn_backtomedia'] = 'Volver á Selección de Arquivos-Media';
-$lang['btn_subscribe'] = 'AvÃsame dos trocos na páxina';
-$lang['btn_unsubscribe'] = 'Xa non me avises dos trocos na páxina';
-$lang['btn_subscribens'] = 'AvÃsame dos trocos de Nomes de Espazo';
-$lang['btn_unsubscribens'] = 'Xa non me avises dos trocos de Nomes de Espazo';
-$lang['btn_profile'] = 'Actualizar Perfil';
-$lang['btn_reset'] = 'Reiniciar';
-$lang['btn_resendpwd'] = 'EnvÃame un novo contrasinal';
-$lang['btn_draft'] = 'Editar borrador';
-$lang['btn_recover'] = 'Recuperar borrador';
-$lang['btn_draftdel'] = 'Eliminar borrador';
-$lang['loggedinas'] = 'Iniciaches sesión coma';
-$lang['user'] = 'Nome de Usuario';
-$lang['pass'] = 'Contrasinal';
-$lang['newpass'] = 'Novo Contrasinal';
-$lang['oldpass'] = 'Confirmar contrasinal actual';
-$lang['passchk'] = 'de novo';
-$lang['remember'] = 'Lémbrame';
-$lang['fullname'] = 'Nome Completo';
-$lang['email'] = 'Correo-e';
-$lang['register'] = 'RexÃstrate';
-$lang['profile'] = 'Perfil de Usuario';
-$lang['badlogin'] = 'SentÃmolo, pero o nome de usuario ou o contrasinal non son correctos.';
-$lang['minoredit'] = 'Trocos Menores';
-$lang['draftdate'] = 'Borrador gardado automaticamente en';
-$lang['regmissing'] = 'SentÃmolo, pero tes que cubrir todos os campos.';
-$lang['reguexists'] = 'SentÃmolo, pero xa existe un usuario con ese nome.';
-$lang['regsuccess'] = 'O usuario foi creado e o contrasinal enviado por correo-e.';
-$lang['regsuccess2'] = 'O usuario foi creado.';
-$lang['regmailfail'] = 'Semella que houbo un erro ao tentar enviar o correo-e co contrasinal. Por favor, contacto co administrador!';
-$lang['regbadmail'] = 'O enderezo de correo-e proporcionado semella incorrecto - se consideras que isto é un erro, contacta co administrador';
-$lang['regbadpass'] = 'Os dous contrasinais inseridos non coinciden, por favor téntao de novo.';
-$lang['regpwmail'] = 'O teu contrasinal do DokuWiki';
-$lang['reghere'] = 'AÃnda non tes unha conta? Crea a túa';
-$lang['profna'] = 'Esta wiki non permite modificacións dos perfÃs';
-$lang['profnochange'] = 'Non hai trocos, nada que facer.';
-$lang['profnoempty'] = 'Non se permite un nome ou un enderezo de correo-e baleiros.';
-$lang['profchanged'] = 'Perfil de usuario actualizado correctamente.';
-$lang['pwdforget'] = 'Esqueceches o teu contrasinal? Consigue un novo';
-$lang['resendna'] = 'Esta wiki non permite reenvÃo de contrasinais.';
-$lang['resendpwd'] = 'Enviar novo contrasinal a';
-$lang['resendpwdmissing'] = 'SentÃmolo, tes que cubrir todos os campos.';
-$lang['resendpwdnouser'] = 'SentÃmolo, non atopamos este usuario no noso banco de datos.';
-$lang['resendpwdbadauth'] = 'SentÃmolo, pero este código de autorización non é válido. Asegúrate de que usaches a ligazón completa de confirmación.';
-$lang['resendpwdconfirm'] = 'Enviouse unha ligazón de confirmación por correo-e.';
-$lang['resendpwdsuccess'] = 'O teu novo contrasinal foi enviado por correo-e.';
-$lang['txt_upload'] = 'Selecciona o arquivo a subir';
-$lang['txt_filename'] = 'Subir como (opcional)';
-$lang['txt_overwrt'] = 'Sobrescribir arquivo existente';
-$lang['lockedby'] = 'Bloqueado actualmente por';
-$lang['lockexpire'] = 'O bloqueo remata o';
-$lang['willexpire'] = 'O teu bloqueo para editar esta páxina vai rematar nun minuto.\nCo fin de evitar conflitos, usa o botón de previsualización para reiniciar o contador do tempo de bloqueo.';
-$lang['notsavedyet'] = 'Perderanse os trocos non gardados.\nQueres continuar realmente?';
-$lang['rssfailed'] = 'Houbo un erro ao tentar adquirir este fluxo: ';
-$lang['nothingfound'] = 'Non se atopou nada.';
-$lang['mediaselect'] = 'Arquivos-Media';
-$lang['fileupload'] = 'Subida de Arquivos-Media';
-$lang['uploadsucc'] = 'Subida correcta';
-$lang['uploadfail'] = 'Fallou a subida. Pode que sexa problema de permisos?';
-$lang['uploadwrong'] = 'Subida denegada. Esta extensión de arquivo non está permitida!';
-$lang['uploadexist'] = 'Xa existe o arquivo. Non se fixo nada.';
-$lang['uploadbadcontent'] = 'O contido subido non concorda coa extensión do arquivo %s.';
-$lang['uploadspam'] = 'A subida foi bloqueada pola lista negra de spam.';
-$lang['uploadxss'] = 'A subida foi bloqueada por posible contido malicioso.';
-$lang['deletesucc'] = 'O arquivo "%s" foi eliminado.';
-$lang['deletefail'] = '"%s" non puido ser eliminado - comproba os permisos.';
-$lang['mediainuse'] = 'O arquivo "%s" non foi eliminado - aÃnda está en uso.';
-$lang['namespaces'] = 'Nomes de espazos';
-$lang['mediafiles'] = 'Arquivos dispoñibles en';
-$lang['js']['keepopen'] = 'Manter a xanela aberta na selección';
-$lang['js']['hidedetails'] = 'Agochar Pormenores';
-$lang['mediausage'] = 'Utilizar a seguinte sintaxe para referenciar este arquivo:';
-$lang['mediaview'] = 'Ver arquivo orixinal';
-$lang['mediaroot'] = 'raigaña';
-$lang['mediaupload'] = 'Sube un arquivo ao nome de espazo actual aquÃ. Para crear sub-nomes de espazos deberás antepoñelos ao nome indicado en "Subir como" separados por dous puntos.';
-$lang['mediaextchange'] = 'Extensión de arquivo mudada de .%s a .%s!';
-$lang['reference'] = 'Referencias para';
-$lang['ref_inuse'] = 'o arquivo non pode ser eliminado, xa que aÃnda está a ser usado polas seguintes páxinas:';
-$lang['ref_hidden'] = 'Algunhas referencias están en páxinas para as cales non tes permisos de lectura';
-$lang['hits'] = 'Vistas';
-$lang['quickhits'] = 'Nomes de páxinas coincidentes';
-$lang['toc'] = 'Táboa de Contidos';
-$lang['current'] = 'actual';
-$lang['yours'] = 'A túa Versión';
-$lang['diff'] = 'amosar diferenzas coa versión actual';
-$lang['diff2'] = 'Amosar diferenzas entre as revisións seleccionadas';
-$lang['line'] = 'Liña';
-$lang['breadcrumb'] = 'Trazado';
-$lang['youarehere'] = 'Estás aquÃ';
-$lang['lastmod'] = 'Ãltima modificación';
-$lang['by'] = 'por';
-$lang['deleted'] = 'eliminado';
-$lang['created'] = 'creado';
-$lang['restored'] = 'revisión antiga restaurada';
-$lang['external_edit'] = 'edición externa';
-$lang['summary'] = 'Resumo da edición';
-$lang['mail_newpage'] = 'páxina engadida:';
-$lang['mail_changed'] = 'páxina mudada:';
-$lang['mail_new_user'] = 'Novo usuario:';
-$lang['mail_upload'] = 'arquivo subido:';
-$lang['nosmblinks'] = 'A ligazón aos compartidos do Windows só funciona no Microsoft Internet Explorer.\nSempre podes copiar e colar a ligazón.';
-$lang['qb_alert'] = 'Por favor, insire o texto que queres formatear.\nSerá engadido ao remate do documento.';
-$lang['qb_bold'] = 'Texto Resaltado';
-$lang['qb_italic'] = 'Texto en Cursiva';
-$lang['qb_underl'] = 'Texto Subliñado';
-$lang['qb_code'] = 'Texto de Código';
-$lang['qb_strike'] = 'Texto Riscado';
-$lang['qb_h1'] = 'Liña de Cabeceira de Nivel 1';
-$lang['qb_h2'] = 'Liña de Cabeceira de Nivel 2';
-$lang['qb_h3'] = 'Liña de Cabeceira de Nivel 3';
-$lang['qb_h4'] = 'Liña de Cabeceira de Nivel 4';
-$lang['qb_h5'] = 'Liña de Cabeceira de Nivel 5';
-$lang['qb_link'] = 'Ligazón Interna';
-$lang['qb_extlink'] = 'Ligazón Externa';
-$lang['qb_hr'] = 'Liña Horizontal';
-$lang['qb_ol'] = 'Elemento de Lista Ordenada';
-$lang['qb_ul'] = 'Elemento de Lista Desordenada';
-$lang['qb_media'] = 'Engadir Imaxes e outros arquivos';
-$lang['qb_sig'] = 'Inserir Sinatura';
-$lang['qb_smileys'] = 'Risoños';
-$lang['qb_chars'] = 'Caracteres Especiais';
-$lang['del_confirm'] = 'Eliminar o(s) elemento(s) seleccionado(s) realmente?';
-$lang['admin_register'] = 'Engadir novo usuario';
-$lang['metaedit'] = 'Editar Metadatos';
-$lang['metasaveerr'] = 'Non se puideron escribir os metadatos';
-$lang['metasaveok'] = 'Metadatos gardados';
-$lang['img_backto'] = 'Volver a';
-$lang['img_title'] = 'TÃtulo';
-$lang['img_caption'] = 'Lenda';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nome de arquivo';
-$lang['img_fsize'] = 'Tamaño';
-$lang['img_artist'] = 'Fotógrafo';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Cámara';
-$lang['img_keywords'] = 'Chaves';
-$lang['subscribe_success'] = 'Engadiuse %s á lista de subscrición dos trocos de %s';
-$lang['subscribe_error'] = 'Erro ao tentar engadir %s á lista de subscrición dos trocos de %s';
-$lang['subscribe_noaddress'] = 'Non hai enderezo ningún asociado co teu usuario, non podes ser engadido á lista de subscrición';
-$lang['unsubscribe_success'] = 'Eliminouse %s da lista de subscrición dos trocos de %s';
-$lang['unsubscribe_error'] = 'Erro ao tentar eliminar %s da lista de subscrición dos trocos de %s';
-$lang['authmodfailed'] = 'Configuración de autenticación de usuario incorrecta. Por favor, informa ao Administrador do teu Wiki.';
-$lang['authtempfail'] = 'A autenticación de usuario non está dispoñible de xeito temporal. Se esta situación persiste, por favor, informa ao Administrador do teu Wiki.';
-$lang['i_chooselang'] = 'Escolle o teu idioma';
-$lang['i_installer'] = 'Instalador do DokuWiki';
-$lang['i_wikiname'] = 'Nome do Wiki';
-$lang['i_enableacl'] = 'Activar ACL (recomendado)';
-$lang['i_superuser'] = 'Super-usuario';
-$lang['i_problems'] = 'O instalador atopou algúns problemas amosados de seguido. Non poderás continuar ata que os soluciones.';
-$lang['i_modified'] = 'Por razóns de seguridade este script só funcionará cunha instalación nova e sen modificar do Dokuwiki.
- Podes ou ben re-extraer os arquivos dende o paquete descargado ou consultar as
- <a href="http://wiki.splitbrain.org/wiki:install">instruccións completas de instalación do Dokuwiki</a>';
-$lang['i_funcna'] = 'A función <code>%s</code> do PHP non está dispoñible. Pode que o teu provedor de hospedaxe a desactivase por algún motivo?';
-$lang['i_phpver'] = 'A túa versión <code>%s</code> do PHP é inferior á <code>%s</code> precisa. Debes actualizar a túa instalación do PHP.';
-$lang['i_permfail'] = '<code>%s</code> non é escribible polo DokuWiki. Debes corrixir a configuración de permisos deste directorio!';
-$lang['i_confexists'] = '<code>%s</code> xa existe';
-$lang['i_writeerr'] = 'Non se puido crear <code>%s</code>. Terás que comprobar os permisos do directorio/arquivo e crear o ficheiro de xeito manual.';
-$lang['i_badhash'] = 'dokuwiki.php irrecoñecible ou modificado (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - ilegal ou valor baleiro';
-$lang['i_success'] = 'A configuración rematou correctamente. Agora podes borrar o arquivo install.php. Continúa deica o
- <a href="doku.php">teu novo DokuWiki</a>.';
-$lang['i_failure'] = 'Houbo algúns erros ao tentar escribir os arquivos de configuración. Pode que precises solucionalos de xeito manual antes
- de que poidas usar <a href="doku.php">o teu novo DokuWiki</a>.';
-$lang['i_policy'] = 'Regras iniciais do ACL';
-$lang['i_pol0'] = 'Wiki Aberto (lectura, escritura, subida de arquivos para todo o mundo)';
-$lang['i_pol1'] = 'Wiki Público (lectura para todo o mundo, escritura e subida de arquivos para usuarios rexistrados)';
-$lang['i_pol2'] = 'Wiki Pechado (lectura, escritura, subida de arquivos só para usuarios rexistrados)';
-$lang['i_retry'] = 'Probar de novo';
+<?php
+/**
+ * galician language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author CiberIrmandade da Fala <infoxeral at ciberirmandade.org>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Editar esta páxina';
+$lang['btn_source'] = 'Amosar a fonte da páxina';
+$lang['btn_show'] = 'Amosar páxina';
+$lang['btn_create'] = 'Crear esta páxina';
+$lang['btn_search'] = 'Procurar';
+$lang['btn_save'] = 'Gardar';
+$lang['btn_preview'] = 'Previsualizar';
+$lang['btn_top'] = 'Comezo da páxina';
+$lang['btn_newer'] = '<< máis recente';
+$lang['btn_older'] = 'menos recente >>';
+$lang['btn_revs'] = 'Revisións antigas';
+$lang['btn_recent'] = 'Trocos recentes';
+$lang['btn_upload'] = 'Subir';
+$lang['btn_cancel'] = 'Cancelar';
+$lang['btn_index'] = 'Ãndice';
+$lang['btn_secedit'] = 'Editar';
+$lang['btn_login'] = 'Iniciar sesión';
+$lang['btn_logout'] = 'Rematar sesión';
+$lang['btn_admin'] = 'Administración';
+$lang['btn_update'] = 'Actualizar';
+$lang['btn_delete'] = 'Borrar';
+$lang['btn_back'] = 'Atrás';
+$lang['btn_backlink'] = 'Ligazóns con isto';
+$lang['btn_backtomedia'] = 'Volver á Selección de Arquivos-Media';
+$lang['btn_subscribe'] = 'AvÃsame dos trocos na páxina';
+$lang['btn_unsubscribe'] = 'Xa non me avises dos trocos na páxina';
+$lang['btn_subscribens'] = 'AvÃsame dos trocos de Nomes de Espazo';
+$lang['btn_unsubscribens'] = 'Xa non me avises dos trocos de Nomes de Espazo';
+$lang['btn_profile'] = 'Actualizar Perfil';
+$lang['btn_reset'] = 'Reiniciar';
+$lang['btn_resendpwd'] = 'EnvÃame un novo contrasinal';
+$lang['btn_draft'] = 'Editar borrador';
+$lang['btn_recover'] = 'Recuperar borrador';
+$lang['btn_draftdel'] = 'Eliminar borrador';
+$lang['loggedinas'] = 'Iniciaches sesión coma';
+$lang['user'] = 'Nome de Usuario';
+$lang['pass'] = 'Contrasinal';
+$lang['newpass'] = 'Novo Contrasinal';
+$lang['oldpass'] = 'Confirmar contrasinal actual';
+$lang['passchk'] = 'de novo';
+$lang['remember'] = 'Lémbrame';
+$lang['fullname'] = 'Nome Completo';
+$lang['email'] = 'Correo-e';
+$lang['register'] = 'RexÃstrate';
+$lang['profile'] = 'Perfil de Usuario';
+$lang['badlogin'] = 'SentÃmolo, pero o nome de usuario ou o contrasinal non son correctos.';
+$lang['minoredit'] = 'Trocos Menores';
+$lang['draftdate'] = 'Borrador gardado automaticamente en';
+$lang['regmissing'] = 'SentÃmolo, pero tes que cubrir todos os campos.';
+$lang['reguexists'] = 'SentÃmolo, pero xa existe un usuario con ese nome.';
+$lang['regsuccess'] = 'O usuario foi creado e o contrasinal enviado por correo-e.';
+$lang['regsuccess2'] = 'O usuario foi creado.';
+$lang['regmailfail'] = 'Semella que houbo un erro ao tentar enviar o correo-e co contrasinal. Por favor, contacto co administrador!';
+$lang['regbadmail'] = 'O enderezo de correo-e proporcionado semella incorrecto - se consideras que isto é un erro, contacta co administrador';
+$lang['regbadpass'] = 'Os dous contrasinais inseridos non coinciden, por favor téntao de novo.';
+$lang['regpwmail'] = 'O teu contrasinal do DokuWiki';
+$lang['reghere'] = 'AÃnda non tes unha conta? Crea a túa';
+$lang['profna'] = 'Esta wiki non permite modificacións dos perfÃs';
+$lang['profnochange'] = 'Non hai trocos, nada que facer.';
+$lang['profnoempty'] = 'Non se permite un nome ou un enderezo de correo-e baleiros.';
+$lang['profchanged'] = 'Perfil de usuario actualizado correctamente.';
+$lang['pwdforget'] = 'Esqueceches o teu contrasinal? Consigue un novo';
+$lang['resendna'] = 'Esta wiki non permite reenvÃo de contrasinais.';
+$lang['resendpwd'] = 'Enviar novo contrasinal a';
+$lang['resendpwdmissing'] = 'SentÃmolo, tes que cubrir todos os campos.';
+$lang['resendpwdnouser'] = 'SentÃmolo, non atopamos este usuario no noso banco de datos.';
+$lang['resendpwdbadauth'] = 'SentÃmolo, pero este código de autorización non é válido. Asegúrate de que usaches a ligazón completa de confirmación.';
+$lang['resendpwdconfirm'] = 'Enviouse unha ligazón de confirmación por correo-e.';
+$lang['resendpwdsuccess'] = 'O teu novo contrasinal foi enviado por correo-e.';
+$lang['txt_upload'] = 'Selecciona o arquivo a subir';
+$lang['txt_filename'] = 'Subir como (opcional)';
+$lang['txt_overwrt'] = 'Sobrescribir arquivo existente';
+$lang['lockedby'] = 'Bloqueado actualmente por';
+$lang['lockexpire'] = 'O bloqueo remata o';
+$lang['willexpire'] = 'O teu bloqueo para editar esta páxina vai rematar nun minuto.\nCo fin de evitar conflitos, usa o botón de previsualización para reiniciar o contador do tempo de bloqueo.';
+$lang['notsavedyet'] = 'Perderanse os trocos non gardados.\nQueres continuar realmente?';
+$lang['rssfailed'] = 'Houbo un erro ao tentar adquirir este fluxo: ';
+$lang['nothingfound'] = 'Non se atopou nada.';
+$lang['mediaselect'] = 'Arquivos-Media';
+$lang['fileupload'] = 'Subida de Arquivos-Media';
+$lang['uploadsucc'] = 'Subida correcta';
+$lang['uploadfail'] = 'Fallou a subida. Pode que sexa problema de permisos?';
+$lang['uploadwrong'] = 'Subida denegada. Esta extensión de arquivo non está permitida!';
+$lang['uploadexist'] = 'Xa existe o arquivo. Non se fixo nada.';
+$lang['uploadbadcontent'] = 'O contido subido non concorda coa extensión do arquivo %s.';
+$lang['uploadspam'] = 'A subida foi bloqueada pola lista negra de spam.';
+$lang['uploadxss'] = 'A subida foi bloqueada por posible contido malicioso.';
+$lang['deletesucc'] = 'O arquivo "%s" foi eliminado.';
+$lang['deletefail'] = '"%s" non puido ser eliminado - comproba os permisos.';
+$lang['mediainuse'] = 'O arquivo "%s" non foi eliminado - aÃnda está en uso.';
+$lang['namespaces'] = 'Nomes de espazos';
+$lang['mediafiles'] = 'Arquivos dispoñibles en';
+$lang['js']['keepopen'] = 'Manter a xanela aberta na selección';
+$lang['js']['hidedetails'] = 'Agochar Pormenores';
+$lang['mediausage'] = 'Utilizar a seguinte sintaxe para referenciar este arquivo:';
+$lang['mediaview'] = 'Ver arquivo orixinal';
+$lang['mediaroot'] = 'raigaña';
+$lang['mediaupload'] = 'Sube un arquivo ao nome de espazo actual aquÃ. Para crear sub-nomes de espazos deberás antepoñelos ao nome indicado en "Subir como" separados por dous puntos.';
+$lang['mediaextchange'] = 'Extensión de arquivo mudada de .%s a .%s!';
+$lang['reference'] = 'Referencias para';
+$lang['ref_inuse'] = 'o arquivo non pode ser eliminado, xa que aÃnda está a ser usado polas seguintes páxinas:';
+$lang['ref_hidden'] = 'Algunhas referencias están en páxinas para as cales non tes permisos de lectura';
+$lang['hits'] = 'Vistas';
+$lang['quickhits'] = 'Nomes de páxinas coincidentes';
+$lang['toc'] = 'Táboa de Contidos';
+$lang['current'] = 'actual';
+$lang['yours'] = 'A túa Versión';
+$lang['diff'] = 'amosar diferenzas coa versión actual';
+$lang['diff2'] = 'Amosar diferenzas entre as revisións seleccionadas';
+$lang['line'] = 'Liña';
+$lang['breadcrumb'] = 'Trazado';
+$lang['youarehere'] = 'Estás aquÃ';
+$lang['lastmod'] = 'Ãltima modificación';
+$lang['by'] = 'por';
+$lang['deleted'] = 'eliminado';
+$lang['created'] = 'creado';
+$lang['restored'] = 'revisión antiga restaurada';
+$lang['external_edit'] = 'edición externa';
+$lang['summary'] = 'Resumo da edición';
+$lang['mail_newpage'] = 'páxina engadida:';
+$lang['mail_changed'] = 'páxina mudada:';
+$lang['mail_new_user'] = 'Novo usuario:';
+$lang['mail_upload'] = 'arquivo subido:';
+$lang['nosmblinks'] = 'A ligazón aos compartidos do Windows só funciona no Microsoft Internet Explorer.\nSempre podes copiar e colar a ligazón.';
+$lang['qb_alert'] = 'Por favor, insire o texto que queres formatear.\nSerá engadido ao remate do documento.';
+$lang['qb_bold'] = 'Texto Resaltado';
+$lang['qb_italic'] = 'Texto en Cursiva';
+$lang['qb_underl'] = 'Texto Subliñado';
+$lang['qb_code'] = 'Texto de Código';
+$lang['qb_strike'] = 'Texto Riscado';
+$lang['qb_h1'] = 'Liña de Cabeceira de Nivel 1';
+$lang['qb_h2'] = 'Liña de Cabeceira de Nivel 2';
+$lang['qb_h3'] = 'Liña de Cabeceira de Nivel 3';
+$lang['qb_h4'] = 'Liña de Cabeceira de Nivel 4';
+$lang['qb_h5'] = 'Liña de Cabeceira de Nivel 5';
+$lang['qb_link'] = 'Ligazón Interna';
+$lang['qb_extlink'] = 'Ligazón Externa';
+$lang['qb_hr'] = 'Liña Horizontal';
+$lang['qb_ol'] = 'Elemento de Lista Ordenada';
+$lang['qb_ul'] = 'Elemento de Lista Desordenada';
+$lang['qb_media'] = 'Engadir Imaxes e outros arquivos';
+$lang['qb_sig'] = 'Inserir Sinatura';
+$lang['qb_smileys'] = 'Risoños';
+$lang['qb_chars'] = 'Caracteres Especiais';
+$lang['del_confirm'] = 'Eliminar o(s) elemento(s) seleccionado(s) realmente?';
+$lang['admin_register'] = 'Engadir novo usuario';
+$lang['metaedit'] = 'Editar Metadatos';
+$lang['metasaveerr'] = 'Non se puideron escribir os metadatos';
+$lang['metasaveok'] = 'Metadatos gardados';
+$lang['img_backto'] = 'Volver a';
+$lang['img_title'] = 'TÃtulo';
+$lang['img_caption'] = 'Lenda';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Nome de arquivo';
+$lang['img_fsize'] = 'Tamaño';
+$lang['img_artist'] = 'Fotógrafo';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Formato';
+$lang['img_camera'] = 'Cámara';
+$lang['img_keywords'] = 'Chaves';
+$lang['subscribe_success'] = 'Engadiuse %s á lista de subscrición dos trocos de %s';
+$lang['subscribe_error'] = 'Erro ao tentar engadir %s á lista de subscrición dos trocos de %s';
+$lang['subscribe_noaddress'] = 'Non hai enderezo ningún asociado co teu usuario, non podes ser engadido á lista de subscrición';
+$lang['unsubscribe_success'] = 'Eliminouse %s da lista de subscrición dos trocos de %s';
+$lang['unsubscribe_error'] = 'Erro ao tentar eliminar %s da lista de subscrición dos trocos de %s';
+$lang['authmodfailed'] = 'Configuración de autenticación de usuario incorrecta. Por favor, informa ao Administrador do teu Wiki.';
+$lang['authtempfail'] = 'A autenticación de usuario non está dispoñible de xeito temporal. Se esta situación persiste, por favor, informa ao Administrador do teu Wiki.';
+$lang['i_chooselang'] = 'Escolle o teu idioma';
+$lang['i_installer'] = 'Instalador do DokuWiki';
+$lang['i_wikiname'] = 'Nome do Wiki';
+$lang['i_enableacl'] = 'Activar ACL (recomendado)';
+$lang['i_superuser'] = 'Super-usuario';
+$lang['i_problems'] = 'O instalador atopou algúns problemas amosados de seguido. Non poderás continuar ata que os soluciones.';
+$lang['i_modified'] = 'Por razóns de seguridade este script só funcionará cunha instalación nova e sen modificar do Dokuwiki.
+ Podes ou ben re-extraer os arquivos dende o paquete descargado ou consultar as
+ <a href="http://wiki.splitbrain.org/wiki:install">instruccións completas de instalación do Dokuwiki</a>';
+$lang['i_funcna'] = 'A función <code>%s</code> do PHP non está dispoñible. Pode que o teu provedor de hospedaxe a desactivase por algún motivo?';
+$lang['i_phpver'] = 'A túa versión <code>%s</code> do PHP é inferior á <code>%s</code> precisa. Debes actualizar a túa instalación do PHP.';
+$lang['i_permfail'] = '<code>%s</code> non é escribible polo DokuWiki. Debes corrixir a configuración de permisos deste directorio!';
+$lang['i_confexists'] = '<code>%s</code> xa existe';
+$lang['i_writeerr'] = 'Non se puido crear <code>%s</code>. Terás que comprobar os permisos do directorio/arquivo e crear o ficheiro de xeito manual.';
+$lang['i_badhash'] = 'dokuwiki.php irrecoñecible ou modificado (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - ilegal ou valor baleiro';
+$lang['i_success'] = 'A configuración rematou correctamente. Agora podes borrar o arquivo install.php. Continúa deica o
+ <a href="doku.php">teu novo DokuWiki</a>.';
+$lang['i_failure'] = 'Houbo algúns erros ao tentar escribir os arquivos de configuración. Pode que precises solucionalos de xeito manual antes
+ de que poidas usar <a href="doku.php">o teu novo DokuWiki</a>.';
+$lang['i_policy'] = 'Regras iniciais do ACL';
+$lang['i_pol0'] = 'Wiki Aberto (lectura, escritura, subida de arquivos para todo o mundo)';
+$lang['i_pol1'] = 'Wiki Público (lectura para todo o mundo, escritura e subida de arquivos para usuarios rexistrados)';
+$lang['i_pol2'] = 'Wiki Pechado (lectura, escritura, subida de arquivos só para usuarios rexistrados)';
+$lang['i_retry'] = 'Probar de novo';
Modified: site/trunk/www-root/wiki/inc/lang/gl/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Páxina bloqueada ======
-
-Esta páxina está actualmente bloqueada para a edición por outro usuario. Terás que agardar
-deica este usuario remate coa edición ou expire o bloqueo.
+====== Páxina bloqueada ======
+
+Esta páxina está actualmente bloqueada para a edición por outro usuario. Terás que agardar
+deica este usuario remate coa edición ou expire o bloqueo.
Modified: site/trunk/www-root/wiki/inc/lang/gl/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Inicio de Sesión ======
-
-Actualmente non iniciaches sesión ningunha! Insire as túas credenciais de autenticación para iniciar a sesión.
-Debes ter as cookies activadas para poder iniciar unha sesión.
-
+====== Inicio de Sesión ======
+
+Actualmente non iniciaches sesión ningunha! Insire as túas credenciais de autenticación para iniciar a sesión.
+Debes ter as cookies activadas para poder iniciar unha sesión.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Engadiuse ou mudouse unha páxina no teu DokuWiki. Aquà van os pormenores:
-
-Data : @DATE@
-Navegador : @BROWSER@
-Enderezo IP : @IPADDRESS@
-Nome de Host : @HOSTNAME@
-Antiga Revisión : @OLDPAGE@
-Nova Revision : @NEWPAGE@
-Resumo da Edción: @SUMMARY@
-Usuario : @USER@
-
- at DIFF@
-
-
---
-Este correo foi xerado polo DokuWiki en
- at DOKUWIKIURL@
+Engadiuse ou mudouse unha páxina no teu DokuWiki. Aquà van os pormenores:
+
+Data : @DATE@
+Navegador : @BROWSER@
+Enderezo IP : @IPADDRESS@
+Nome de Host : @HOSTNAME@
+Antiga Revisión : @OLDPAGE@
+Nova Revision : @NEWPAGE@
+Resumo da Edción: @SUMMARY@
+Usuario : @USER@
+
+ at DIFF@
+
+
+--
+Este correo foi xerado polo DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/gl/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Este tema aÃnda non existe======
-
-Seguiches unha ligazón deica un tema que aÃnda non existe.
-Se tes permisos axeitados, podes crealo ti premendo no botón
-''Crear esta páxina''.
-
+======Este tema aÃnda non existe======
+
+Seguiches unha ligazón deica un tema que aÃnda non existe.
+Se tes permisos axeitados, podes crealo ti premendo no botón
+''Crear esta páxina''.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Non hai tal revisión======
-
-A revisión especificada non existe. Utiliza o botón de ''Revisións Antigas'' para obter un listado das revisións antigas deste documento.
-
+======Non hai tal revisión======
+
+A revisión especificada non existe. Utiliza o botón de ''Revisións Antigas'' para obter un listado das revisións antigas deste documento.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Ola @FULLNAME@!
-
-Aquà tes os teus datos de usuario para @TITLE@ en @DOKUWIKIURL@
-
-Usuario : @LOGIN@
-Contrasinal : @PASSWORD@
-
---
-Este correo foi xerado polo DokuWiki en
- at DOKUWIKIURL@
+Ola @FULLNAME@!
+
+Aquà tes os teus datos de usuario para @TITLE@ en @DOKUWIKIURL@
+
+Usuario : @LOGIN@
+Contrasinal : @PASSWORD@
+
+--
+Este correo foi xerado polo DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/gl/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Previsualización======
-
-Isto é unha previsualización de como aparecerá o teu texto. Lembra: **Non está gardado** aÃnda!
-
+======Previsualización======
+
+Isto é unha previsualización de como aparecerá o teu texto. Lembra: **Non está gardado** aÃnda!
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Ola @FULLNAME@!
-
-Alguén solicitou un novo contrasinal para o teu inicio de sesión
- at TITLE@ en @DOKUWIKIURL@
-
-Se non fuches ti quen o fixo podes ignorar este correo-e.
-
-Para confirmar que esta solicitude foi realmente enviada por ti
-por favor visita a seguinte ligazón.
-
- at CONFIRM@
-
---
-Este correo-e foi xerador polo DokuWiki de
- at DOKUWIKIURL@
+Ola @FULLNAME@!
+
+Alguén solicitou un novo contrasinal para o teu inicio de sesión
+ at TITLE@ en @DOKUWIKIURL@
+
+Se non fuches ti quen o fixo podes ignorar este correo-e.
+
+Para confirmar que esta solicitude foi realmente enviada por ti
+por favor visita a seguinte ligazón.
+
+ at CONFIRM@
+
+--
+Este correo-e foi xerador polo DokuWiki de
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/gl/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Esta páxina é de lectura só. Podes ver a fonte, pero non podes mudala. Coméntallo ao teu administrador se consideras que é un erro.
-
+Esta páxina é de lectura só. Podes ver a fonte, pero non podes mudala. Coméntallo ao teu administrador se consideras que é un erro.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Trocos Recentes======
-
-As páxinas seguintes foron mudadas recentemente.
-
-
+======Trocos Recentes======
+
+As páxinas seguintes foron mudadas recentemente.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Rexistro como novo usuario ======
-
-Cubre toda a información requirida a continuación para crear unha nova conta nesta wiki.
-Asegúrate de fornecer un **enderezo de correo-e válido** - se non se che pide aquà que
-insiras un contrasinal, recibirás un novo nese enderezo.
-O nome de usuario deberá ser un [[doku>wiki:pagename|nome de páxina]] válido.
-
+====== Rexistro como novo usuario ======
+
+Cubre toda a información requirida a continuación para crear unha nova conta nesta wiki.
+Asegúrate de fornecer un **enderezo de correo-e válido** - se non se che pide aquà que
+insiras un contrasinal, recibirás un novo nese enderezo.
+O nome de usuario deberá ser un [[doku>wiki:pagename|nome de páxina]] válido.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Rexistrouse un novo usuario. Aquà van os pormenores:
-
-Nome de usuario : @NEWUSER@
-Nome completo : @NEWNAME@
-Correo-e : @NEWEMAIL@
-
-Data : @DATE@
-Navegador : @BROWSER@
-Enderezo IP : @IPADDRESS@
-Nome de host : @HOSTNAME@
-
---
-Este correo-e foi xerado polo DokuWiki de
- at DOKUWIKIURL@
+Rexistrouse un novo usuario. Aquà van os pormenores:
+
+Nome de usuario : @NEWUSER@
+Nome completo : @NEWNAME@
+Correo-e : @NEWEMAIL@
+
+Data : @DATE@
+Navegador : @BROWSER@
+Enderezo IP : @IPADDRESS@
+Nome de host : @HOSTNAME@
+
+--
+Este correo-e foi xerado polo DokuWiki de
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/gl/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Enviar novo contrasinal ======
-
-Insire o teu nome de usuario no seguinte formulario para obter un novo contrasinal da túa
-conta nesta wiki. Enviarase unha ligazón de confirmación ao teu enderezo rexistrado
-de correo-e.
+====== Enviar novo contrasinal ======
+
+Insire o teu nome de usuario no seguinte formulario para obter un novo contrasinal da túa
+conta nesta wiki. Enviarase unha ligazón de confirmación ao teu enderezo rexistrado
+de correo-e.
Modified: site/trunk/www-root/wiki/inc/lang/gl/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Revisións Antigas======
-
-Estas son as revisións antigas do documento actual. Para retomar unha revisión antiga, selecciónaa na seguinte lista, preme en ''Editar esta páxina'' e gárdaa.
-
+======Revisións Antigas======
+
+Estas son as revisións antigas do documento actual. Para retomar unha revisión antiga, selecciónaa na seguinte lista, preme en ''Editar esta páxina'' e gárdaa.
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======Procura======
-
-Podes atopar os resultados da túa procura a continuación. Se non atopaches
-o que estabas a procurar, podes crear ou editar a páxina co nome verbo da
-túa procura co botón axeitado.
-
-=====Resultados=====
+======Procura======
+
+Podes atopar os resultados da túa procura a continuación. Se non atopaches
+o que estabas a procurar, podes crear ou editar a páxina co nome verbo da
+túa procura co botón axeitado.
+
+=====Resultados=====
Modified: site/trunk/www-root/wiki/inc/lang/gl/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Esta é unha revisión antiga do documento!**
-----
+**Esta é unha revisión antiga do documento!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/gl/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,31 +1,31 @@
-# Isto é unha lista das verbas que o indexador ignora, unha por liña
-# Cando edites este arquivo asegúrate de usar remates de liña UNIX (nova liña única)
-# Non precisas incluÃr verbas de menos de 3 caracteres - estas son ignoradas de todas formas
-# Esta lista está baseada nas atopadas en http://www.ranks.nl/stopwords/ (en proceso aÃnda)
-aÃnda
-por
-para
-unhas
-unhas
-tamén
-todo
-outro
-outra
-algún
-algunha
-algúns
-algunhas
-está
-están
-estamos
-estades
-estaba
-como
-temos
-tedes
-porén
-antes
-logo
-agás
-pero
-porque
+# Isto é unha lista das verbas que o indexador ignora, unha por liña
+# Cando edites este arquivo asegúrate de usar remates de liña UNIX (nova liña única)
+# Non precisas incluÃr verbas de menos de 3 caracteres - estas son ignoradas de todas formas
+# Esta lista está baseada nas atopadas en http://www.ranks.nl/stopwords/ (en proceso aÃnda)
+aÃnda
+por
+para
+unhas
+unhas
+tamén
+todo
+outro
+outra
+algún
+algunha
+algúns
+algunhas
+está
+están
+estamos
+estades
+estaba
+como
+temos
+tedes
+porén
+antes
+logo
+agás
+pero
+porque
Modified: site/trunk/www-root/wiki/inc/lang/gl/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,19 +1,19 @@
-Ola!
-
-A páxina @PAGE@ na wiki @TITLE@ foi mudada.
-Aquà van os trocos:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Para desubscribirte deste rexistro de trocos de páxina
-na wiki en
- at DOKUWIKIURL@
-fai unha visita a
- at NEWPAGE@
-e escolle 'Xa non me avises dos trocos'.
-
---
-Este correo foi xerado polo DokuWiki en
- at DOKUWIKIURL@
+Ola!
+
+A páxina @PAGE@ na wiki @TITLE@ foi mudada.
+Aquà van os trocos:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Para desubscribirte deste rexistro de trocos de páxina
+na wiki en
+ at DOKUWIKIURL@
+fai unha visita a
+ at NEWPAGE@
+e escolle 'Xa non me avises dos trocos'.
+
+--
+Este correo foi xerado polo DokuWiki en
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/gl/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Actualizar o perfil da túa conta ======
-
-Só precisas cubrir os campos que desexes mudar. Non podes mudar o teu nome de usuario.
-
-
+====== Actualizar o perfil da túa conta ======
+
+Só precisas cubrir os campos que desexes mudar. Non podes mudar o teu nome de usuario.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/gl/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Subiuse un arquivo ao teu DokuWiki. Aquà van os pormenores:
-
-Arquivo : @MEDIA@
-Data : @DATE@
-Navegador : @BROWSER@
-Enderezo IP : @IPADDRESS@
-Nome de Host : @HOSTNAME@
-Tamaño : @SIZE@
-Tipo MIME : @MIME@
-Usuario : @USER@
-
---
-Este correo foi xerado polo DokuWiki en
+Subiuse un arquivo ao teu DokuWiki. Aquà van os pormenores:
+
+Arquivo : @MEDIA@
+Data : @DATE@
+Navegador : @BROWSER@
+Enderezo IP : @IPADDRESS@
+Nome de Host : @HOSTNAME@
+Tamaño : @SIZE@
+Tipo MIME : @MIME@
+Usuario : @USER@
+
+--
+Este correo foi xerado polo DokuWiki en
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/gl/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/gl/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/gl/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Bloqueo por SPAM======
-
-Os teus trocos **non** foron gardados porque conteñen unha ou varias verbas bloqueadas.
-Se tentaches deixar spam no wiki -- EstÃvoche ben! Se consideras que é un erro, contacta
-co administrador deste Wiki.
-
+======Bloqueo por SPAM======
+
+Os teus trocos **non** foron gardados porque conteñen unha ou varias verbas bloqueadas.
+Se tentaches deixar spam no wiki -- EstÃvoche ben! Se consideras que é un erro, contacta
+co administrador deste Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/he/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== × ×××× ======
-
-× ××ª× ××צ×× ××× ×¨×©××× ×©× ×ש×××ת × ×××× ×××× ×ת ×-DokuWiki.
-
+====== × ×××× ======
+
+× ××ª× ××צ×× ××× ×¨×©××× ×©× ×ש×××ת × ×××× ×××× ×ת ×-DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/he/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ×§×ש×ר×× ××××ר ======
-
-×××× ×¨×©××ת ×פ×× ×שר × ×¨×× ×× ×× ×קשר×× ×××£ ××× × ××עת.
+====== ×§×ש×ר×× ××××ר ======
+
+×××× ×¨×©××ת ×פ×× ×שר × ×¨×× ×× ×× ×קשר×× ×××£ ××× × ××עת.
Modified: site/trunk/www-root/wiki/inc/lang/he/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== ×××¨×¡× ×¢××× ×ת ××תר ×©× ××§×××¥ ×§×××ת ======
-
-×××¨×¡× ×¢××× ×ת ××תר ×©× ××ס×× ×§×××ת. ××ר ×× ×§××¨× ××שר ×שת×ש ××ר ש×× × ×ת ××ס×× ×××× ×©×¢×¨×ת ××ת×.
-
-×××××¥ ××¢××× ××××××× ×ª×ת ××××¢× ××××ר ××× ×××××× ×××× ×××¨×¡× ×××× ×ש××ר. ××××¦× ×¢× ××פת×ר "ש××ר" תש××ר ×ת ×××¨×¡× ×©×¢×¨×ת. ××××¦× ×¢× ××פת×ר "×××" תש××ר ×ת ×××¨×¡× ××§×××ת.
-
+====== ×××¨×¡× ×¢××× ×ת ××תר ×©× ××§×××¥ ×§×××ת ======
+
+×××¨×¡× ×¢××× ×ת ××תר ×©× ××ס×× ×§×××ת. ××ר ×× ×§××¨× ××שר ×שת×ש ××ר ש×× × ×ת ××ס×× ×××× ×©×¢×¨×ת ××ת×.
+
+×××××¥ ××¢××× ××××××× ×ª×ת ××××¢× ××××ר ××× ×××××× ×××× ×××¨×¡× ×××× ×ש××ר. ××××¦× ×¢× ××פת×ר "ש××ר" תש××ר ×ת ×××¨×¡× ×©×¢×¨×ת. ××××¦× ×¢× ××פת×ר "×××" תש××ר ×ת ×××¨×¡× ××§×××ת.
+
Modified: site/trunk/www-root/wiki/inc/lang/he/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ×רש×× × ×××ª× ======
-
+====== ×רש×× × ×××ª× ======
+
×× × ×צ×ער×× ×× ××× ×× ×רש××ת ×ת××××ת ××× ×××ש××. ×××× ×©××ת ×××× ×¡ ××ער×ת?
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======××××××======
-
-××× ××צ××× ××××××× ××× ×××¨×¡× ×©× ×××¨× ××××¨×¡× ×× ××××ת ×©× ×××£.
-
+======××××××======
+
+××× ××צ××× ××××××× ××× ×××¨×¡× ×©× ×××¨× ××××¨×¡× ×× ××××ת ×©× ×××£.
+
Modified: site/trunk/www-root/wiki/inc/lang/he/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== × ××¦× ×§×××¥ ××××× ======
-
-×ער××× ×××ר×× × ×©×××¦×¢× ×××£ ×× ×× ×סת××× ×××××. DokuWiki ש×ר ××××¤× ××××××× ××××× ×©× ××¢×××× ×××פשר××ª× ××שת×ש ×× ××× ×××ש×× ×ת ×ער×××. × ××ª× ×ר××ת ××× ×ת ×××××¢ ×©× ×©×ר ×××¤×¢× ××§×××ת.
-
+====== × ××¦× ×§×××¥ ××××× ======
+
+×ער××× ×××ר×× × ×©×××¦×¢× ×××£ ×× ×× ×סת××× ×××××. DokuWiki ש×ר ××××¤× ××××××× ××××× ×©× ××¢×××× ×××פשר××ª× ××שת×ש ×× ××× ×××ש×× ×ת ×ער×××. × ××ª× ×ר××ת ××× ×ת ×××××¢ ×©× ×©×ר ×××¤×¢× ××§×××ת.
+
××פשר××ª× ××××ר ×//ש×××ר ××××××// ×©× ×××ª× ×¢×¨××× //×××קת ××××××// ×× //×××××// ×ער××× ××××.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-ער××ת ×××£ ×××××¦× ×¢× ××פת×ר "ש××ר" תע××× ×ת ת××× ×. ×××××¥ ××¢××× ×××£ ×[[wiki:syntax|ת×××ר]] ××× ××××ר ×ת ×××× ×ª×××ר ××××§×. × × ×ער×× ×ת ×××£ רק ×× ×××ר × ×¢×©× ××× **×שפר** ××ת×. ×× ×ער××× ××× ×צ××¨× ××ª× ×¡×ת ×××××¥ ××קר ×[[playground:playground|×ר×× ××××]].
+ער××ת ×××£ ×××××¦× ×¢× ××פת×ר "ש××ר" תע××× ×ת ת××× ×. ×××××¥ ××¢××× ×××£ ×[[wiki:syntax|ת×××ר]] ××× ××××ר ×ת ×××× ×ª×××ר ××××§×. × × ×ער×× ×ת ×××£ רק ×× ×××ר × ×¢×©× ××× **×שפר** ××ת×. ×× ×ער××× ××× ×צ××¨× ××ª× ×¡×ת ×××××¥ ××קר ×[[playground:playground|×ר×× ××××]].
Modified: site/trunk/www-root/wiki/inc/lang/he/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**×××£ ×©× ×¤×ª× ××× ××¨×¡× ××©× × ×©× ××ס××!** ××××¦× ×¢× ××פת×ר "ש××ר" תש××ר ×ת ××ס×× ×××¨×¡× ×××צ×ת ×עת.
+**×××£ ×©× ×¤×ª× ××× ××¨×¡× ××©× × ×©× ××ס××!** ××××¦× ×¢× ××פת×ר "ש××ר" תש××ר ×ת ××ס×× ×××¨×¡× ×××צ×ת ×עת.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ××× ×קס ======
-
-××× ×§×××¥ ××× ×קס ×× ××¦× ××¢× ××× ××פ×× ××××ר×× ×× ×[[×××§×:×××§×××××§×]].
-
+====== ××× ×קס ======
+
+××× ×§×××¥ ××× ×קס ×× ××¦× ××¢× ××× ××פ×× ××××ר×× ×× ×[[×××§×:×××§×××××§×]].
+
Modified: site/trunk/www-root/wiki/inc/lang/he/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-<p>××£ ×× ×ס×××¢ ×××ª×§× × ××××××¨× ×ר×ש×× ××ת ש×
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. ××××¢ × ×סף ×¢× ×תק×× ×× ×××× ×××£
-<a href="http://wiki.splitbrain.org/wiki:installer">×ת××¢×× ×©××</a>.</p>
-
-<p>DokuWiki ×¢××©× ×©×××ש ××§×צ×× ×¨××××× ×ש××רת ××¤× ×××§× ×××××¢ × ×סף ×קש×ר ××פ×× ××× (×××××× ×ª××× ×ת, רש×××ת ××פ×ש, ×רס××ת ×§××××ת ×××').
-×תפק×× ×ª×§×× DokuWiki <strong>××××</strong> ×××©× ××ת××× ×ת××§××ת ××××××ת ×§×צ×× ×××. ×תק×× ×× ××× × ×××× ××§×××¢ ×רש××ת ×ת××§××ת.
-פע××× ×× ×¦×¨××× ××"× ××ת×צע ×ש×ר×ת ×ש×רת ×פק××× ×× ×××§×¨× ×©× ×¢×©× ×©×××ש ×שרת ×××¨× ××¨× FTP ×× ×× ×©×§ ×× ×××× ×©× ××××¨× (cPanell ××××××).</p>
-
-<p>×תק×× ×× ××××ר ×ת תצ×רת ×-<acronym title="access control list">ACL</acronym> ×-DokuWiki ש××
-, ×× ×ת××¨× ××פשר ××שת ×× ×× ×תפר×× ×× ×××× ×©× DokuWiki ××× ××תק×× ×ר×××ת, ×× ×× ×שת×ש××, ×× ×× ××ש×ת ×××¤× ×××§× ×ש×× ×××× ××××ר×ת ×תצ×ר×.
-××× ××× ××ר×× ×תפק×× DokuWiki ×× ××× ××פ×× ×ת Dokuwiki ×§× ××תר ×× ××××.</p>
-
-<p>×¢× ×שת×ש×× ×× ×ס×× ×× ×××× ×¢× ×ר×ש×ת ××××××ת ×××ª×§× × ××שת×ש ××§×ש×ר×× ××× ×פר××× ×× ×××¢ ×<a href="http://wiki.splitbrain.org/wiki:install">××ר××ת ××ª×§× ×</a> ×<a href="http://wiki.splitbrain.org/wiki:config">×××ר×ת תצ×ר×</a>.</p>
+<p>××£ ×× ×ס×××¢ ×××ª×§× × ××××××¨× ×ר×ש×× ××ת ש×
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. ××××¢ × ×סף ×¢× ×תק×× ×× ×××× ×××£
+<a href="http://wiki.splitbrain.org/wiki:installer">×ת××¢×× ×©××</a>.</p>
+
+<p>DokuWiki ×¢××©× ×©×××ש ××§×צ×× ×¨××××× ×ש××רת ××¤× ×××§× ×××××¢ × ×סף ×קש×ר ××פ×× ××× (×××××× ×ª××× ×ת, רש×××ת ××פ×ש, ×רס××ת ×§××××ת ×××').
+×תפק×× ×ª×§×× DokuWiki <strong>××××</strong> ×××©× ××ת××× ×ת××§××ת ××××××ת ×§×צ×× ×××. ×תק×× ×× ××× × ×××× ××§×××¢ ×רש××ת ×ת××§××ת.
+פע××× ×× ×¦×¨××× ××"× ××ת×צע ×ש×ר×ת ×ש×רת ×פק××× ×× ×××§×¨× ×©× ×¢×©× ×©×××ש ×שרת ×××¨× ××¨× FTP ×× ×× ×©×§ ×× ×××× ×©× ××××¨× (cPanell ××××××).</p>
+
+<p>×תק×× ×× ××××ר ×ת תצ×רת ×-<acronym title="access control list">ACL</acronym> ×-DokuWiki ש××
+, ×× ×ת××¨× ××פשר ××שת ×× ×× ×תפר×× ×× ×××× ×©× DokuWiki ××× ××תק×× ×ר×××ת, ×× ×× ×שת×ש××, ×× ×× ××ש×ת ×××¤× ×××§× ×ש×× ×××× ××××ר×ת ×תצ×ר×.
+××× ××× ××ר×× ×תפק×× DokuWiki ×× ××× ××פ×× ×ת Dokuwiki ×§× ××תר ×× ××××.</p>
+
+<p>×¢× ×שת×ש×× ×× ×ס×× ×× ×××× ×¢× ×ר×ש×ת ××××××ת ×××ª×§× × ××שת×ש ××§×ש×ר×× ××× ×פר××× ×× ×××¢ ×<a href="http://wiki.splitbrain.org/wiki:install">××ר××ת ××ª×§× ×</a> ×<a href="http://wiki.splitbrain.org/wiki:config">×××ר×ת תצ×ר×</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/he/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,208 +1,208 @@
-<?php
-/**
- * Hebrew language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @link http://sourceforge.net/projects/hebdokuwiki/
- * @author ××× ×©×¤×¨ <guysoft at ort.org.il>
- * @author Denis Simakov <akinoame1 at gmail.com>
- * @author DoK <kamberd at yahoo.com>
- * @author Dotan Kamber <kamberd at yahoo.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'rtl';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'ער×××';
-$lang['btn_source'] = '××¦× ×ת ××§×ר ×××£';
-$lang['btn_show'] = '××¦× ××£';
-$lang['btn_create'] = '×צ×רת ××£';
-$lang['btn_search'] = '×פש';
-$lang['btn_save'] = 'ש××ר';
-$lang['btn_preview'] = 'תצ××× ××§××××';
-$lang['btn_top'] = '×××ר ×××¢××';
-$lang['btn_newer'] = '<< ××תר ××ש';
-$lang['btn_older'] = 'פ××ת ××ש >>';
-$lang['btn_revs'] = '×רס××ת ×§××××ת';
-$lang['btn_recent'] = 'ש×× ×××× ××ר×× ××';
-$lang['btn_upload'] = '××¢××';
-$lang['btn_cancel'] = '×××';
-$lang['btn_index'] = '××× ×קס';
-$lang['btn_secedit'] = 'ער×××';
-$lang['btn_login'] = '×× ×ס×';
-$lang['btn_logout'] = '×צ×××';
-$lang['btn_admin'] = '×× ××';
-$lang['btn_update'] = '×¢×××';
-$lang['btn_delete'] = '×××§';
-$lang['btn_back'] = '×××ר';
-$lang['btn_backlink'] = '×§×ש×ר×× ××××';
-$lang['btn_backtomedia'] = '××××ר ××××רת ×§×××¥ ××××';
-$lang['btn_subscribe'] = '×¢×§×× ×××¨× ×©×× ×××';
-$lang['btn_unsubscribe'] = '×פסק ××¢×§××';
-$lang['btn_subscribens'] = '×רש×× ×ש×× ×××× ××ר×× ×ש×';
-$lang['btn_unsubscribens'] = '×סרת ×רש×× ×ש×× ×××× ×××× ×ש×';
-$lang['btn_profile'] = '×¢××× ×¤×¨×פ××';
-$lang['btn_reset'] = '××פ×ס';
-$lang['btn_resendpwd'] = 'ש×× ×¡×ס×× ××ש×';
-$lang['btn_draft'] = 'ער××ת ×××××';
-$lang['btn_recover'] = 'ש×××ר ×××××';
-$lang['btn_draftdel'] = '×××קת ×××××';
-$lang['loggedinas'] = 'רש×× ×-';
-$lang['user'] = '×©× ×שת×ש';
-$lang['pass'] = 'ס×ס××';
-$lang['newpass'] = 'ס×ס×× ××ש×';
-$lang['oldpass'] = '×שר ×ת ×ס×ס×× ×× ××××ת';
-$lang['passchk'] = 'ש××';
-$lang['remember'] = '×××ר ××ת×';
-$lang['fullname'] = '×©× ×××';
-$lang['email'] = '×××"×';
-$lang['register'] = '×רש××';
-$lang['profile'] = 'פר×פ××';
-$lang['badlogin'] = 'ס××××, ×©× ××שת×ש ×× ×ס×ס×× ×©×××××';
-$lang['minoredit'] = 'ש×× ××× ××× ×ר×××';
-$lang['draftdate'] = '××××× × ×©××¨× ×-';
-$lang['regmissing'] = 'ס××××, ×¢××× ×××× ×ת ×× ×ש××ת';
-$lang['reguexists'] = 'ס××××, ×שת×ש ××©× ×× ××ר × ×¨×©×';
-$lang['regsuccess'] = '×רש×× ×צ××××, ××שת×ש × ×¨×©× ×××××¢× × ×©××× ××××ר';
-$lang['regsuccess2'] = '×רש×× ×צ××××, ××שת×ש × ×¨×©×.';
-$lang['regmailfail'] = 'ש×××ת ×××עת ××××ר ×ש××, × × ××צ×ר קשר ×¢× ×× ×× ××תר';
-$lang['regbadmail'] = '×ת××ת ×××ר ×× ×¨×× ×× ×ª×§×¤×, ×× ×× ×× ××× ×ש ××צ×ר קשר ×¢× ×× ×× ××תר';
-$lang['regbadpass'] = '×©×ª× ×ס×ס××ת ×× ×× ×××ת, × × ×× ×¡×ת ש××';
-$lang['regpwmail'] = 'ס×ס×ת ××××§××××§× ×©××';
-$lang['reghere'] = '×¢×××× ××× ×©×-×שת×ש? ××רש×× ×××';
-$lang['profna'] = '×××××§× ××× ×× × ××ª× ××©× ×ת פר×פ××';
-$lang['profnochange'] = '××× ×©×× ×××, פר×פ×× ×× ×¢××××';
-$lang['profnoempty'] = '×©× ××ת××ת ×××"× ×× ×××××× ××××ת ר××§××';
-$lang['profchanged'] = 'פר×פ×× ×¢×××× ××צ×××';
-$lang['pwdforget'] = 'ש××ת ס×ס××? ×§×× ××ש×';
-$lang['resendna'] = '×××××§× ××× ×× ×ª××× ×××××ש ס×ס××';
-$lang['resendpwd'] = 'ש×× ×¡×ס×× ×××©× ×¢××ר';
-$lang['resendpwdmissing'] = 'ס××××, ×¢××× ×××× ×ת ×× ×ש××ת';
-$lang['resendpwdnouser'] = 'ס××××, ×שת×ש ××©× ×× ×× × ×צ×';
-$lang['resendpwdbadauth'] = 'ס××××, ×§×× ××××ת ×× ××× × ×ª×§×£. ×ש ×××× ×× × ×¢×©× ×©×××ש ××××× ×§×ש×ר ×××××ת.';
-$lang['resendpwdconfirm'] = '×§×ש×ר ××××ת × ×©×× ××××"×.';
-$lang['resendpwdsuccess'] = 'ס×ס×× ×××©× × ×©××× ××××ר';
-$lang['txt_upload'] = '××ר ×§×××¥ ×××¢××ת';
-$lang['txt_filename'] = '××× ×¡ ×©× ×××××§× (×××ר×)';
-$lang['txt_overwrt'] = '××ת×× ×××§×× ×§×××¥ ×§×××';
-$lang['lockedby'] = '× ×¢×× ×¢× ×××';
-$lang['lockexpire'] = '× ×¢××× ×¤××';
-$lang['willexpire'] = '× ×¢××× ×ª××××£ ×¢×× ××× ×§×¦×¨. \n××× ×עת ××ª× ×ש×××ת ×ש ××שת×ש ××פת×ר ××¨×¢× ×× ××× ××× ××ת×× ×ת ×× ×¢××× ×©× ×ת';
-$lang['notsavedyet'] = '×§××××× ×©×× ×××× ×©××¨× × ×©××¨× ××שר ××××× \n ××× ×××ש××?';
-$lang['rssfailed'] = '××©× ×-RSS';
-$lang['nothingfound'] = '×× × ×צ×× ×ª×צ××ת';
-$lang['mediaselect'] = '×××רת ×§×××¥ ××××';
-$lang['fileupload'] = '××¢××ת ×§×××¥ ××××';
-$lang['uploadsucc'] = '××¢××ת ××§×××¥ ×××¦×¢× ××צ×××';
-$lang['uploadfail'] = '×§×¨×ª× ×©×××× ×עת ××¢××ת ××§×××¥. ת×ת×× ×××¢××× ×× × ××¦×¨× ×¢×§× ×רש××ת ש×××ת.';
-$lang['uploadwrong'] = '××¢××× ×× ××שר×. ×§×צ×× ×ס×××ת ×× ×ס×ר××';
-$lang['uploadexist'] = '××§×××¥ ××ר ×§×××. פע××× ×××××';
-$lang['uploadbadcontent'] = '×ת××× ×©×××¢×× ×× ×ª×× ×ת ×ס×××ת %s ×©× ××§×××¥.';
-$lang['uploadspam'] = '×××¢××× × ×ס×× ×¢× ××× ×רש××× ×ש×××¨× ×©× ×ספ××.';
-$lang['uploadxss'] = '×××¢××× × ×ס×× ××©× ××©× ×ת××× ×××× ×.';
-$lang['deletesucc'] = '×§×××¥ %s × ×××§';
-$lang['deletefail'] = '×× ×××××ª× ×××××§ "%s" -- ×××§× ×רש××ת';
-$lang['mediainuse'] = '×§×××¥ "%s" ×× × ×××§ - ××× ×¢×××× ×ש×××ש';
-$lang['namespaces'] = 'ש××ת ×ת××';
-$lang['mediafiles'] = '×§×צ×× ×××× ×× ×-';
-$lang['js']['keepopen'] = '×ש×ר ×××× ×¤×ª×× ××××ר×';
-$lang['js']['hidedetails'] = '×סתר פר×××';
-$lang['mediausage'] = '×שת×ש ×ת×××ר ××× ××ת××ס×ת ×× ×§×××¥ ××:';
-$lang['mediaview'] = '××¦× ×ת ××§×××¥ ×××§×ר×';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = '××× × ××ª× ×××¢××ת ×§×××¥ ××ר×× ×ש××ת ×× ××××. ××צ×רת תת×-×ר××× ×©××ת ×¦×¨×¤× ×-"××¢××" ×ת×××ת ×©× ××§×××¥ ××פר××× ×פס××§××';
-$lang['mediaextchange'] = 'ס×××ת ××§×××¥ ××©×ª× ×ª× ×-.%s ×-.%s!';
-$lang['reference'] = '×§×ש×ר×× ×';
-$lang['ref_inuse'] = '×× ×××××ª× ×××××§ ×§×××¥, ××פ×× ××××× ×¢×××× ×שת×ש×× ××:';
-$lang['ref_hidden'] = '×ש ×§×ש×ר×× ××פ×× ××× ×רש×ת קר×××';
-$lang['hits'] = 'פ×××¢×ת';
-$lang['quickhits'] = '×פ×× ×©× ×צ××';
-$lang['toc'] = 'ת××× ×¢× ××× ××';
-$lang['current'] = '×××¨×¡× × ××××ת';
-$lang['yours'] = '×××¨×¡× ×©××';
-$lang['diff'] = '××¦× ×©×× ××× ×××¨×¡× ×× ××¢× ×× ××××ת';
-$lang['diff2'] = '×צ×ת ×××××× ××× ××רס××ת ×©× ××ר×';
-$lang['line'] = 'ש×ר×';
-$lang['breadcrumb'] = '×××§×ר×× ××ר×× ××';
-$lang['youarehere'] = '××ª× × ××¦× ×××';
-$lang['lastmod'] = 'ש×× × ×××ר×× × ×';
-$lang['by'] = '×¢× ×××';
-$lang['deleted'] = '× ×××§';
-$lang['created'] = '× ×צר';
-$lang['restored'] = 'ש×××ר';
-$lang['external_edit'] = 'ער××× ××צ×× ×ת';
-$lang['summary'] = 'תקצ×ר ×ער×××';
-$lang['mail_newpage'] = '××£ × ×סף:';
-$lang['mail_changed'] = '××£ ש×× ×:';
-$lang['mail_new_user'] = '×שת×ש ××ש:';
-$lang['mail_upload'] = '×§×××¥ ×××¢××:';
-$lang['nosmblinks'] = ':( ×§×ש×ר ××ער×ת ×§×צ×× ×©× ×××× ×ת פ××¢× ×¨×§ ××פ××¤× ××× ××¨× × ×קספ××רר.\n ×× ×ס×ר, ××× ×¦××¨× ××¢××ר. ×פשר ××עת××§ ×××××××§ ×ת ××§×ש×ר';
-$lang['qb_alert'] = '× × ××××× ×ת ×××§×¡× ×ער×××. \n ×××§×¡× ××סף ××§×¦× ××ס××';
-$lang['qb_bold'] = '××§×¡× ××××ש';
-$lang['qb_italic'] = '××§×¡× × ×××';
-$lang['qb_underl'] = '××§×¡× ×¢× ×§× ×ª×ת××';
-$lang['qb_code'] = '×§××';
-$lang['qb_strike'] = '××§×¡× ××××§';
-$lang['qb_h1'] = '××תרת ר×× 1';
-$lang['qb_h2'] = '××תרת ר×× 2';
-$lang['qb_h3'] = '××תרת ר×× 3';
-$lang['qb_h4'] = '××תרת ר×× 4';
-$lang['qb_h5'] = '××תרת ר×× 5';
-$lang['qb_link'] = '×§×ש×ר ×¤× ×××';
-$lang['qb_extlink'] = '×§×ש×ר ××צ×× ×';
-$lang['qb_hr'] = '×§× ××פק×';
-$lang['qb_ol'] = '×××ר ×רש××× ×××ספרת';
-$lang['qb_ul'] = '××ר ×רש××× ×× ×××ספרת';
-$lang['qb_media'] = 'ת××× ×ת ×× ×§×××¥ ××ר';
-$lang['qb_sig'] = '××× ×ª ×ת×××';
-$lang['qb_smileys'] = 'פרצ×פ×× ××';
-$lang['qb_chars'] = 'ס××× ×× ×××××××';
-$lang['del_confirm'] = '×××ת ×××××§?';
-$lang['admin_register'] = '×××ס××£ ×שת×ש ××ש';
-$lang['metaedit'] = 'ער×× × ×ª×× ××';
-$lang['metasaveerr'] = '××©× ×ש××רת × ×ª×× ××';
-$lang['metasaveok'] = '× ×ª×× ×× × ×©×ר×';
-$lang['img_backto'] = '×××ר ×';
-$lang['img_title'] = '××תרת';
-$lang['img_caption'] = 'ת×××ר';
-$lang['img_date'] = 'ת×ר××';
-$lang['img_fname'] = '×©× ××§×××¥';
-$lang['img_fsize'] = '××××';
-$lang['img_artist'] = 'צ××';
-$lang['img_copyr'] = '×××××ת';
-$lang['img_format'] = 'פ×ר××';
-$lang['img_camera'] = '×צ×××';
-$lang['img_keywords'] = '××××ת ×פת×';
-$lang['subscribe_success'] = '%s × ×סף ×רש××ת ××××ת××× ×¢××ר %s';
-$lang['subscribe_error'] = 'ש×××× ×××ספת %s ×רש××ת ××××ת××× ×¢××ר %s';
-$lang['subscribe_noaddress'] = '××× ×ת××ת ××ש×××ת ×ר×ש×× ×©×× ×××× ××× ××פשר××ª× ××צ×רף ×רש××ת ××××ת×××';
-$lang['unsubscribe_success'] = '%s ××סר ×רש××ת ××××ת××× ×¢××ר %s';
-$lang['unsubscribe_error'] = 'ש×××× ××סרת %s ×רש××ת ××××ת××× ×¢××ר %s';
-$lang['authmodfailed'] = 'תצ×רת ××××ת ×שת×ש×× ×ר××¢×. × × ××××× ××× ×× ××××§×.';
-$lang['authtempfail'] = '××××ת ×שת×ש×× ××× × ×××× ×ר××¢. ×× ××¦× ×× × ××©× × × ××××××¢ ××× ×× ××××§×.';
-$lang['i_chooselang'] = '× × ××××ר שפ×';
-$lang['i_installer'] = 'DokuWiki Installer';
-$lang['i_wikiname'] = '×©× ××××§×';
-$lang['i_enableacl'] = '×פשר ACL (×××××¥)';
-$lang['i_superuser'] = '×שת×ש-×¢×';
-$lang['i_problems'] = '××תק×× ×××× ×ספר ××¢××ת ××צ××× ×ת ×××. ××× ××פשר××ª× ×××ש×× ××¤× × ×ª××§×× ×.';
-$lang['i_modified'] = '×ש××§××× ××××× ×ª×¡×¨×× ×× ××¢××× ×× ×רק ×¢× ××ª×§× ×ª DokuWiki ×××©× ×©×× ×¢××¨× ×× ×©×× ××.
- ×¢××× ××××¥ ×©× ×ת ×ת ××§×צ×× ××××××× ×©××ר×× ×× ×××¢×ר ×××£
- <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installation instructions</a>';
-$lang['i_funcna'] = 'פ×× ×§×¦×ת ×-PHP <code>%s</code> ××× × ×××× ×. ×ת×× ×× ×××¨× ××תר ××¡× ×××ª× ×ס××× ××ש××?';
-$lang['i_phpver'] = '×רסת ×-PHP ש×× <code>%s</code> × ×××× ×××ר×ש. ×¢××× ×ש××¨× ×ת ××ª×§× ×ª ×-PHP';
-$lang['i_permfail'] = '<code>%s</code> ××× × ×רת ×ת××× ×¢× ××× DokuWiki. ×¢××× ××©× ×ת ×רש××ת ספר×× ××!';
-$lang['i_confexists'] = '<code>%s</code> ××ר ×§×××';
-$lang['i_writeerr'] = '××× ×פשר×ת ××צ×ר ×ת <code>%s</code>. × × ×××××§ ×ת ×רש××ת ××§×××¥/ספר×× ×××צ×ר ×ת ××§×××¥ ××× ×ת.';
-$lang['i_badhash'] = '×§×××¥ Dokuwiki.php ×× ××××× ×× ×©×¢×ר ש×× ×××× (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - ×¢×¨× ×× ×××§× ×× ×¨××§';
-$lang['i_success'] = '×××××¨× ×סת××× ××צ×××. ××פשר××ª× ×××××§ ×¢×ª× ×ת ××§×××¥ install.php ××××ש×× ×× <a href="doku.php">DokuWiki ×××ש ש××</a>.';
-$lang['i_failure'] = '×ספר ש××××ת ××¨×¢× ×עת ×ת××ת ×§××¦× ×תצ×ר×. ××ת×× ×× ×××× ×¦××¨× ××ª×§× × ××× ×ת ××¤× × ×©× ××ª× ×××× ××שת×ש ×<a href="doku.php">DokuWiki ×××ש ש××</a>.';
-$lang['i_policy'] = '×××× ××ת ACL ת××××ת';
-$lang['i_pol0'] = '×××§× ×¤×ª×× (קר×××, ×ת××× ×××¢××× ×××××)';
-$lang['i_pol1'] = ' ×××§× ×¦××××¨× (קר××× ×××××, ×ת××× ×××¢××× ××שת×ש×× ×¨×©××××)';
-$lang['i_pol2'] = '×××§× ×¡××ר (קר×××, ×ת××× ×××¢××× ××שת×ש×× ×¨×©×××× ××××)';
-$lang['i_retry'] = '× ×¡××× × ×סף';
+<?php
+/**
+ * Hebrew language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @link http://sourceforge.net/projects/hebdokuwiki/
+ * @author ××× ×©×¤×¨ <guysoft at ort.org.il>
+ * @author Denis Simakov <akinoame1 at gmail.com>
+ * @author DoK <kamberd at yahoo.com>
+ * @author Dotan Kamber <kamberd at yahoo.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'rtl';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'ער×××';
+$lang['btn_source'] = '××¦× ×ת ××§×ר ×××£';
+$lang['btn_show'] = '××¦× ××£';
+$lang['btn_create'] = '×צ×רת ××£';
+$lang['btn_search'] = '×פש';
+$lang['btn_save'] = 'ש××ר';
+$lang['btn_preview'] = 'תצ××× ××§××××';
+$lang['btn_top'] = '×××ר ×××¢××';
+$lang['btn_newer'] = '<< ××תר ××ש';
+$lang['btn_older'] = 'פ××ת ××ש >>';
+$lang['btn_revs'] = '×רס××ת ×§××××ת';
+$lang['btn_recent'] = 'ש×× ×××× ××ר×× ××';
+$lang['btn_upload'] = '××¢××';
+$lang['btn_cancel'] = '×××';
+$lang['btn_index'] = '××× ×קס';
+$lang['btn_secedit'] = 'ער×××';
+$lang['btn_login'] = '×× ×ס×';
+$lang['btn_logout'] = '×צ×××';
+$lang['btn_admin'] = '×× ××';
+$lang['btn_update'] = '×¢×××';
+$lang['btn_delete'] = '×××§';
+$lang['btn_back'] = '×××ר';
+$lang['btn_backlink'] = '×§×ש×ר×× ××××';
+$lang['btn_backtomedia'] = '××××ר ××××רת ×§×××¥ ××××';
+$lang['btn_subscribe'] = '×¢×§×× ×××¨× ×©×× ×××';
+$lang['btn_unsubscribe'] = '×פסק ××¢×§××';
+$lang['btn_subscribens'] = '×רש×× ×ש×× ×××× ××ר×× ×ש×';
+$lang['btn_unsubscribens'] = '×סרת ×רש×× ×ש×× ×××× ×××× ×ש×';
+$lang['btn_profile'] = '×¢××× ×¤×¨×פ××';
+$lang['btn_reset'] = '××פ×ס';
+$lang['btn_resendpwd'] = 'ש×× ×¡×ס×× ××ש×';
+$lang['btn_draft'] = 'ער××ת ×××××';
+$lang['btn_recover'] = 'ש×××ר ×××××';
+$lang['btn_draftdel'] = '×××קת ×××××';
+$lang['loggedinas'] = 'רש×× ×-';
+$lang['user'] = '×©× ×שת×ש';
+$lang['pass'] = 'ס×ס××';
+$lang['newpass'] = 'ס×ס×× ××ש×';
+$lang['oldpass'] = '×שר ×ת ×ס×ס×× ×× ××××ת';
+$lang['passchk'] = 'ש××';
+$lang['remember'] = '×××ר ××ת×';
+$lang['fullname'] = '×©× ×××';
+$lang['email'] = '×××"×';
+$lang['register'] = '×רש××';
+$lang['profile'] = 'פר×פ××';
+$lang['badlogin'] = 'ס××××, ×©× ××שת×ש ×× ×ס×ס×× ×©×××××';
+$lang['minoredit'] = 'ש×× ××× ××× ×ר×××';
+$lang['draftdate'] = '××××× × ×©××¨× ×-';
+$lang['regmissing'] = 'ס××××, ×¢××× ×××× ×ת ×× ×ש××ת';
+$lang['reguexists'] = 'ס××××, ×שת×ש ××©× ×× ××ר × ×¨×©×';
+$lang['regsuccess'] = '×רש×× ×צ××××, ××שת×ש × ×¨×©× ×××××¢× × ×©××× ××××ר';
+$lang['regsuccess2'] = '×רש×× ×צ××××, ××שת×ש × ×¨×©×.';
+$lang['regmailfail'] = 'ש×××ת ×××עת ××××ר ×ש××, × × ××צ×ר קשר ×¢× ×× ×× ××תר';
+$lang['regbadmail'] = '×ת××ת ×××ר ×× ×¨×× ×× ×ª×§×¤×, ×× ×× ×× ××× ×ש ××צ×ר קשר ×¢× ×× ×× ××תר';
+$lang['regbadpass'] = '×©×ª× ×ס×ס××ת ×× ×× ×××ת, × × ×× ×¡×ת ש××';
+$lang['regpwmail'] = 'ס×ס×ת ××××§××××§× ×©××';
+$lang['reghere'] = '×¢×××× ××× ×©×-×שת×ש? ××רש×× ×××';
+$lang['profna'] = '×××××§× ××× ×× × ××ª× ××©× ×ת פר×פ××';
+$lang['profnochange'] = '××× ×©×× ×××, פר×פ×× ×× ×¢××××';
+$lang['profnoempty'] = '×©× ××ת××ת ×××"× ×× ×××××× ××××ת ר××§××';
+$lang['profchanged'] = 'פר×פ×× ×¢×××× ××צ×××';
+$lang['pwdforget'] = 'ש××ת ס×ס××? ×§×× ××ש×';
+$lang['resendna'] = '×××××§× ××× ×× ×ª××× ×××××ש ס×ס××';
+$lang['resendpwd'] = 'ש×× ×¡×ס×× ×××©× ×¢××ר';
+$lang['resendpwdmissing'] = 'ס××××, ×¢××× ×××× ×ת ×× ×ש××ת';
+$lang['resendpwdnouser'] = 'ס××××, ×שת×ש ××©× ×× ×× × ×צ×';
+$lang['resendpwdbadauth'] = 'ס××××, ×§×× ××××ת ×× ××× × ×ª×§×£. ×ש ×××× ×× × ×¢×©× ×©×××ש ××××× ×§×ש×ר ×××××ת.';
+$lang['resendpwdconfirm'] = '×§×ש×ר ××××ת × ×©×× ××××"×.';
+$lang['resendpwdsuccess'] = 'ס×ס×× ×××©× × ×©××× ××××ר';
+$lang['txt_upload'] = '××ר ×§×××¥ ×××¢××ת';
+$lang['txt_filename'] = '××× ×¡ ×©× ×××××§× (×××ר×)';
+$lang['txt_overwrt'] = '××ת×× ×××§×× ×§×××¥ ×§×××';
+$lang['lockedby'] = '× ×¢×× ×¢× ×××';
+$lang['lockexpire'] = '× ×¢××× ×¤××';
+$lang['willexpire'] = '× ×¢××× ×ª××××£ ×¢×× ××× ×§×¦×¨. \n××× ×עת ××ª× ×ש×××ת ×ש ××שת×ש ××פת×ר ××¨×¢× ×× ××× ××× ××ת×× ×ת ×× ×¢××× ×©× ×ת';
+$lang['notsavedyet'] = '×§××××× ×©×× ×××× ×©××¨× × ×©××¨× ××שר ××××× \n ××× ×××ש××?';
+$lang['rssfailed'] = '××©× ×-RSS';
+$lang['nothingfound'] = '×× × ×צ×× ×ª×צ××ת';
+$lang['mediaselect'] = '×××רת ×§×××¥ ××××';
+$lang['fileupload'] = '××¢××ת ×§×××¥ ××××';
+$lang['uploadsucc'] = '××¢××ת ××§×××¥ ×××¦×¢× ××צ×××';
+$lang['uploadfail'] = '×§×¨×ª× ×©×××× ×עת ××¢××ת ××§×××¥. ת×ת×× ×××¢××× ×× × ××¦×¨× ×¢×§× ×רש××ת ש×××ת.';
+$lang['uploadwrong'] = '××¢××× ×× ××שר×. ×§×צ×× ×ס×××ת ×× ×ס×ר××';
+$lang['uploadexist'] = '××§×××¥ ××ר ×§×××. פע××× ×××××';
+$lang['uploadbadcontent'] = '×ת××× ×©×××¢×× ×× ×ª×× ×ת ×ס×××ת %s ×©× ××§×××¥.';
+$lang['uploadspam'] = '×××¢××× × ×ס×× ×¢× ××× ×רש××× ×ש×××¨× ×©× ×ספ××.';
+$lang['uploadxss'] = '×××¢××× × ×ס×× ××©× ××©× ×ת××× ×××× ×.';
+$lang['deletesucc'] = '×§×××¥ %s × ×××§';
+$lang['deletefail'] = '×× ×××××ª× ×××××§ "%s" -- ×××§× ×רש××ת';
+$lang['mediainuse'] = '×§×××¥ "%s" ×× × ×××§ - ××× ×¢×××× ×ש×××ש';
+$lang['namespaces'] = 'ש××ת ×ת××';
+$lang['mediafiles'] = '×§×צ×× ×××× ×× ×-';
+$lang['js']['keepopen'] = '×ש×ר ×××× ×¤×ª×× ××××ר×';
+$lang['js']['hidedetails'] = '×סתר פר×××';
+$lang['mediausage'] = '×שת×ש ×ת×××ר ××× ××ת××ס×ת ×× ×§×××¥ ××:';
+$lang['mediaview'] = '××¦× ×ת ××§×××¥ ×××§×ר×';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = '××× × ××ª× ×××¢××ת ×§×××¥ ××ר×× ×ש××ת ×× ××××. ××צ×רת תת×-×ר××× ×©××ת ×¦×¨×¤× ×-"××¢××" ×ת×××ת ×©× ××§×××¥ ××פר××× ×פס××§××';
+$lang['mediaextchange'] = 'ס×××ת ××§×××¥ ××©×ª× ×ª× ×-.%s ×-.%s!';
+$lang['reference'] = '×§×ש×ר×× ×';
+$lang['ref_inuse'] = '×× ×××××ª× ×××××§ ×§×××¥, ××פ×× ××××× ×¢×××× ×שת×ש×× ××:';
+$lang['ref_hidden'] = '×ש ×§×ש×ר×× ××פ×× ××× ×רש×ת קר×××';
+$lang['hits'] = 'פ×××¢×ת';
+$lang['quickhits'] = '×פ×× ×©× ×צ××';
+$lang['toc'] = 'ת××× ×¢× ××× ××';
+$lang['current'] = '×××¨×¡× × ××××ת';
+$lang['yours'] = '×××¨×¡× ×©××';
+$lang['diff'] = '××¦× ×©×× ××× ×××¨×¡× ×× ××¢× ×× ××××ת';
+$lang['diff2'] = '×צ×ת ×××××× ××× ××רס××ת ×©× ××ר×';
+$lang['line'] = 'ש×ר×';
+$lang['breadcrumb'] = '×××§×ר×× ××ר×× ××';
+$lang['youarehere'] = '××ª× × ××¦× ×××';
+$lang['lastmod'] = 'ש×× × ×××ר×× × ×';
+$lang['by'] = '×¢× ×××';
+$lang['deleted'] = '× ×××§';
+$lang['created'] = '× ×צר';
+$lang['restored'] = 'ש×××ר';
+$lang['external_edit'] = 'ער××× ××צ×× ×ת';
+$lang['summary'] = 'תקצ×ר ×ער×××';
+$lang['mail_newpage'] = '××£ × ×סף:';
+$lang['mail_changed'] = '××£ ש×× ×:';
+$lang['mail_new_user'] = '×שת×ש ××ש:';
+$lang['mail_upload'] = '×§×××¥ ×××¢××:';
+$lang['nosmblinks'] = ':( ×§×ש×ר ××ער×ת ×§×צ×× ×©× ×××× ×ת פ××¢× ×¨×§ ××פ××¤× ××× ××¨× × ×קספ××רר.\n ×× ×ס×ר, ××× ×¦××¨× ××¢××ר. ×פשר ××עת××§ ×××××××§ ×ת ××§×ש×ר';
+$lang['qb_alert'] = '× × ××××× ×ת ×××§×¡× ×ער×××. \n ×××§×¡× ××סף ××§×¦× ××ס××';
+$lang['qb_bold'] = '××§×¡× ××××ש';
+$lang['qb_italic'] = '××§×¡× × ×××';
+$lang['qb_underl'] = '××§×¡× ×¢× ×§× ×ª×ת××';
+$lang['qb_code'] = '×§××';
+$lang['qb_strike'] = '××§×¡× ××××§';
+$lang['qb_h1'] = '××תרת ר×× 1';
+$lang['qb_h2'] = '××תרת ר×× 2';
+$lang['qb_h3'] = '××תרת ר×× 3';
+$lang['qb_h4'] = '××תרת ר×× 4';
+$lang['qb_h5'] = '××תרת ר×× 5';
+$lang['qb_link'] = '×§×ש×ר ×¤× ×××';
+$lang['qb_extlink'] = '×§×ש×ר ××צ×× ×';
+$lang['qb_hr'] = '×§× ××פק×';
+$lang['qb_ol'] = '×××ר ×רש××× ×××ספרת';
+$lang['qb_ul'] = '××ר ×רש××× ×× ×××ספרת';
+$lang['qb_media'] = 'ת××× ×ת ×× ×§×××¥ ××ר';
+$lang['qb_sig'] = '××× ×ª ×ת×××';
+$lang['qb_smileys'] = 'פרצ×פ×× ××';
+$lang['qb_chars'] = 'ס××× ×× ×××××××';
+$lang['del_confirm'] = '×××ת ×××××§?';
+$lang['admin_register'] = '×××ס××£ ×שת×ש ××ש';
+$lang['metaedit'] = 'ער×× × ×ª×× ××';
+$lang['metasaveerr'] = '××©× ×ש××רת × ×ª×× ××';
+$lang['metasaveok'] = '× ×ª×× ×× × ×©×ר×';
+$lang['img_backto'] = '×××ר ×';
+$lang['img_title'] = '××תרת';
+$lang['img_caption'] = 'ת×××ר';
+$lang['img_date'] = 'ת×ר××';
+$lang['img_fname'] = '×©× ××§×××¥';
+$lang['img_fsize'] = '××××';
+$lang['img_artist'] = 'צ××';
+$lang['img_copyr'] = '×××××ת';
+$lang['img_format'] = 'פ×ר××';
+$lang['img_camera'] = '×צ×××';
+$lang['img_keywords'] = '××××ת ×פת×';
+$lang['subscribe_success'] = '%s × ×סף ×רש××ת ××××ת××× ×¢××ר %s';
+$lang['subscribe_error'] = 'ש×××× ×××ספת %s ×רש××ת ××××ת××× ×¢××ר %s';
+$lang['subscribe_noaddress'] = '××× ×ת××ת ××ש×××ת ×ר×ש×× ×©×× ×××× ××× ××פשר××ª× ××צ×רף ×רש××ת ××××ת×××';
+$lang['unsubscribe_success'] = '%s ××סר ×רש××ת ××××ת××× ×¢××ר %s';
+$lang['unsubscribe_error'] = 'ש×××× ××סרת %s ×רש××ת ××××ת××× ×¢××ר %s';
+$lang['authmodfailed'] = 'תצ×רת ××××ת ×שת×ש×× ×ר××¢×. × × ××××× ××× ×× ××××§×.';
+$lang['authtempfail'] = '××××ת ×שת×ש×× ××× × ×××× ×ר××¢. ×× ××¦× ×× × ××©× × × ××××××¢ ××× ×× ××××§×.';
+$lang['i_chooselang'] = '× × ××××ר שפ×';
+$lang['i_installer'] = 'DokuWiki Installer';
+$lang['i_wikiname'] = '×©× ××××§×';
+$lang['i_enableacl'] = '×פשר ACL (×××××¥)';
+$lang['i_superuser'] = '×שת×ש-×¢×';
+$lang['i_problems'] = '××תק×× ×××× ×ספר ××¢××ת ××צ××× ×ת ×××. ××× ××פשר××ª× ×××ש×× ××¤× × ×ª××§×× ×.';
+$lang['i_modified'] = '×ש××§××× ××××× ×ª×¡×¨×× ×× ××¢××× ×× ×רק ×¢× ××ª×§× ×ª DokuWiki ×××©× ×©×× ×¢××¨× ×× ×©×× ××.
+ ×¢××× ××××¥ ×©× ×ת ×ת ××§×צ×× ××××××× ×©××ר×× ×× ×××¢×ר ×××£
+ <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installation instructions</a>';
+$lang['i_funcna'] = 'פ×× ×§×¦×ת ×-PHP <code>%s</code> ××× × ×××× ×. ×ת×× ×× ×××¨× ××תר ××¡× ×××ª× ×ס××× ××ש××?';
+$lang['i_phpver'] = '×רסת ×-PHP ש×× <code>%s</code> × ×××× ×××ר×ש. ×¢××× ×ש××¨× ×ת ××ª×§× ×ª ×-PHP';
+$lang['i_permfail'] = '<code>%s</code> ××× × ×רת ×ת××× ×¢× ××× DokuWiki. ×¢××× ××©× ×ת ×רש××ת ספר×× ××!';
+$lang['i_confexists'] = '<code>%s</code> ××ר ×§×××';
+$lang['i_writeerr'] = '××× ×פשר×ת ××צ×ר ×ת <code>%s</code>. × × ×××××§ ×ת ×רש××ת ××§×××¥/ספר×× ×××צ×ר ×ת ××§×××¥ ××× ×ת.';
+$lang['i_badhash'] = '×§×××¥ Dokuwiki.php ×× ××××× ×× ×©×¢×ר ש×× ×××× (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - ×¢×¨× ×× ×××§× ×× ×¨××§';
+$lang['i_success'] = '×××××¨× ×סת××× ××צ×××. ××פשר××ª× ×××××§ ×¢×ª× ×ת ××§×××¥ install.php ××××ש×× ×× <a href="doku.php">DokuWiki ×××ש ש××</a>.';
+$lang['i_failure'] = '×ספר ש××××ת ××¨×¢× ×עת ×ת××ת ×§××¦× ×תצ×ר×. ××ת×× ×× ×××× ×¦××¨× ××ª×§× × ××× ×ת ××¤× × ×©× ××ª× ×××× ××שת×ש ×<a href="doku.php">DokuWiki ×××ש ש××</a>.';
+$lang['i_policy'] = '×××× ××ת ACL ת××××ת';
+$lang['i_pol0'] = '×××§× ×¤×ª×× (קר×××, ×ת××× ×××¢××× ×××××)';
+$lang['i_pol1'] = ' ×××§× ×¦××××¨× (קר××× ×××××, ×ת××× ×××¢××× ××שת×ש×× ×¨×©××××)';
+$lang['i_pol2'] = '×××§× ×¡××ר (קר×××, ×ת××× ×××¢××× ××שת×ש×× ×¨×©×××× ××××)';
+$lang['i_retry'] = '× ×¡××× × ×סף';
Modified: site/trunk/www-root/wiki/inc/lang/he/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ××£ × ×¢×× ======
-
-××£ ×× × ×¢×× ×ר××¢ ×ער××× ×¢× ××× ×שת×ש ××ר.
+====== ××£ × ×¢×× ======
+
+××£ ×× × ×¢×× ×ר××¢ ×ער××× ×¢× ××× ×שת×ש ××ר.
×¢××× ×××ת×× ×¢× ×©××שת×ש ×ס××× ×ת ×ער××× ×× ×¢× ×©×× ×¢××× ×ª×¤××.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ×× ××¡× ======
-
-××× × ×רש×××ת ××ער×ת ×ר××¢! ×ש ××××× ×ת × ×ª×× × ××××××ת ××× ××× ×ס×.
-×ש ××פשר ×¢××××ת (cookies) ××× ×××× ×¡.
+====== ×× ××¡× ======
+
+××× × ×רש×××ת ××ער×ת ×ר××¢! ×ש ××××× ×ת × ×ª×× × ××××××ת ××× ××× ×ס×.
+×ש ××פשר ×¢××××ת (cookies) ××× ×××× ×¡.
Modified: site/trunk/www-root/wiki/inc/lang/he/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-××£ ×DokuWiki × ×סף ×× ×©×× ×. ×× × ×פר×××:
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-Old Revision: @OLDPAGE@
-New Revision: @NEWPAGE@
-Edit Summary: @SUMMARY@
-User : @USER@
-
- at DIFF@
-
---
-
-××£ ×× × ×צר ×¢"× DokuWiki ×-
- at DOKUWIKIURL@
+××£ ×DokuWiki × ×סף ×× ×©×× ×. ×× × ×פר×××:
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+Old Revision: @OLDPAGE@
+New Revision: @NEWPAGE@
+Edit Summary: @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+--
+
+××£ ×× × ×צר ×¢"× DokuWiki ×-
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/he/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======××£ ×× ×¢×××× ×× ×§×××======
-
+======××£ ×× ×¢×××× ×× ×§×××======
+
×××£ ×××× ××עת ×¢×××× ×× ×§×××. ××××¦× ×¢× ××פת×ר "×צ×רת ××£" תצ×ר ××ת×.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======××¨×¡× ×× ×§×××ת======
-
-×××¨×¡× ×©×××× × ××× × ×§×××ת. × × ××שת×ש ××פת×ר ''×רס××ת ×§××××ת'' ××צ×ת רש××ת ××רס××ת ×©× ×ס×× ××.
-
+======××¨×¡× ×× ×§×××ת======
+
+×××¨×¡× ×©×××× × ××× × ×§×××ת. × × ××שת×ש ××פת×ר ''×רס××ת ×§××××ת'' ××צ×ת רש××ת ××רס××ת ×©× ×ס×× ××.
+
Modified: site/trunk/www-root/wiki/inc/lang/he/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-ש××× @FULLNAME@!
-
-×× × × ×ª×× × ××שת×ש ש×× ×¢××ר @TITLE@ ×- @DOKUWIKIURL@
-
-×× ××¡× : @LOGIN@
-ס×ס×× : @PASSWORD@
-
---
-×××ª× ×× × ×צר ×¢× ××× ×××§××××§× ×-
+ש××× @FULLNAME@!
+
+×× × × ×ª×× × ××שת×ש ש×× ×¢××ר @TITLE@ ×- @DOKUWIKIURL@
+
+×× ××¡× : @LOGIN@
+ס×ס×× : @PASSWORD@
+
+--
+×××ª× ×× × ×צר ×¢× ××× ×××§××××§× ×-
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======תצ××× ××§××××======
-
-×× ×ª×¦××× ××§×××× ×©× ×××£ ×עת××. ×××××ר×: **×××£ ×¢×××× ×× × ×©×ר!**
-
+======תצ××× ××§××××======
+
+×× ×ª×¦××× ××§×××× ×©× ×××£ ×עת××. ×××××ר×: **×××£ ×¢×××× ×× × ×©×ר!**
+
Modified: site/trunk/www-root/wiki/inc/lang/he/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-ש××× @FULLNAME@!
-
-××ש×× ××קש ס×ס×× ×××©× ×¢××ר ××× ××¡× ×©×× ×- at TITLE@ ×- at DOKUWIKIURL@
-
-×× ×× ××קשת ס×ס×× ×××©× ×¤×©×× ×תע×× ××××"× ××.
-
-××× ××שר ש×××§×©× ×××ת × ×©××× ×¢× ××× × × ×שת×ש ××§×ש×ר ×××.
-
- at CONFIRM@
-
---
-×××ר ×× × ×צר ×¢× ××× DokuWiki ×-
- at DOKUWIKIURL@
+ש××× @FULLNAME@!
+
+××ש×× ××קש ס×ס×× ×××©× ×¢××ר ××× ××¡× ×©×× ×- at TITLE@ ×- at DOKUWIKIURL@
+
+×× ×× ××קשת ס×ס×× ×××©× ×¤×©×× ×תע×× ××××"× ××.
+
+××× ××שר ש×××§×©× ×××ת × ×©××× ×¢× ××× × × ×שת×ש ××§×ש×ר ×××.
+
+ at CONFIRM@
+
+--
+×××ר ×× × ×צר ×¢× ××× DokuWiki ×-
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/he/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/he/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ש×× ×××× ××ר×× ××======
-
-××פ×× ××××× ×¢××¨× ×©×× ×××× ×××ר×× ×.
-
-
+======ש×× ×××× ××ר×× ××======
+
+××פ×× ××××× ×¢××¨× ×©×× ×××× ×××ר×× ×.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/he/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ×רש×× ××שת×ש ××ש ======
-
-×ש ×××× ×ת ×× ×××××¢ ××× ××× ××צ×ר ×ש××× ××ש ××××§× ××.
-×ש ×××× ×× ×××× ×ª **×ת××ת ×××"× ×ª×§×¤×**- ס×ס××ª× ××××©× ×ª×©×× ××ת××ת ××\\
-×¢× ×©× ××שת×ש ××××ת [[hdoku>×××§×:×©× ××£|×©× ××£]] תקף.
+====== ×רש×× ××שת×ש ××ש ======
+
+×ש ×××× ×ת ×× ×××××¢ ××× ××× ××צ×ר ×ש××× ××ש ××××§× ××.
+×ש ×××× ×× ×××× ×ª **×ת××ת ×××"× ×ª×§×¤×**- ס×ס××ª× ××××©× ×ª×©×× ××ת××ת ××\\
+×¢× ×©× ××שת×ש ××××ת [[hdoku>×××§×:×©× ××£|×©× ××£]] תקף.
Modified: site/trunk/www-root/wiki/inc/lang/he/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-×שת×ש ××ש × ×¨×©×. ×× × ×פר×××:
-
-×©× ×שת×ש : @NEWUSER@
-×©× ××× : @NEWNAME@
-×××"× : @NEWEMAIL@
-
-ת×ר×× : @DATE@
-×פ××¤× : @BROWSER@
-×ת××ת רשת : @IPADDRESS@
-×©× ××××©× : @HOSTNAME@
-
---
-×××"× ×× × ×צר ×¢× ××× DokuWiki ×-
- at DOKUWIKIURL@
+×שת×ש ××ש × ×¨×©×. ×× × ×פר×××:
+
+×©× ×שת×ש : @NEWUSER@
+×©× ××× : @NEWNAME@
+×××"× : @NEWEMAIL@
+
+ת×ר×× : @DATE@
+×פ××¤× : @BROWSER@
+×ת××ת רשת : @IPADDRESS@
+×©× ××××©× : @HOSTNAME@
+
+--
+×××"× ×× × ×צר ×¢× ××× DokuWiki ×-
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/he/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ש×××ת ס×ס×× ×××©× ======
-
-×ש ××××× ×ת ×©× ××שת×ש ×××פס ××× ×××קש ס×ס×× ×××©× ××ש××× ×©×× ××××§× ××. ×§×ש×ר ×××××ת ×ש×× ××ת××ת ×××"× ×××ª× × ×¨×©×ת.
-
+====== ש×××ת ס×ס×× ×××©× ======
+
+×ש ××××× ×ת ×©× ××שת×ש ×××פס ××× ×××קש ס×ס×× ×××©× ××ש××× ×©×× ××××§× ××. ×§×ש×ר ×××××ת ×ש×× ××ת××ת ×××"× ×××ª× × ×¨×©×ת.
+
Modified: site/trunk/www-root/wiki/inc/lang/he/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======×רס××ת ××©× ×ת======
-
-××× ×רס××ת ×××§×××ת ××תר ×©× ××ס×× ×× ××××. ××× ×ש××ר ××¨×¡× ×××§××ת ××תר ×ש ×××××¥ ×¢× ××פת×ר ''ער×××'' ××ש××ר ×ת ×××£.
-
+======×רס××ת ××©× ×ת======
+
+××× ×רס××ת ×××§×××ת ××תר ×©× ××ס×× ×× ××××. ××× ×ש××ר ××¨×¡× ×××§××ת ××תר ×ש ×××××¥ ×¢× ××פת×ר ''ער×××'' ××ש××ר ×ת ×××£.
+
Modified: site/trunk/www-root/wiki/inc/lang/he/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======××פ×ש======
-
-× ××ª× ×ר××ת ×ת ת×צ××ת ×××פ×ש ××××. ×× ×× × ×צ×× ×פ×× ×××פ×ש, ××××¦× ×¢× ××פת×ר "ער×××" ת×צ×ר ××£ ××ש ×¢× ×©× ×××ת ×××פ×ש ש×××× ×.
-
+======××פ×ש======
+
+× ××ª× ×ר××ת ×ת ת×צ××ת ×××פ×ש ××××. ×× ×× × ×צ×× ×פ×× ×××פ×ש, ××××¦× ×¢× ××פת×ר "ער×××" ת×צ×ר ××£ ××ש ×¢× ×©× ×××ת ×××פ×ש ש×××× ×.
+
=====ת×צ××ת=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**×× ××¨×¡× ××©× × ×©× ××ס××!** ××××¦× ×¢× ××תרת ××ס×× ×ª×¦×× ×ת ××¨×¡×ª× ×× ××××ת.
+**×× ××¨×¡× ××©× × ×©× ××ס××!** ××××¦× ×¢× ××תרת ××ס×× ×ª×¦×× ×ת ××¨×¡×ª× ×× ××××ת.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# ×××× ×¨×©××ת ××××× ××× × ×תע×× ×¡×רק ×ת×××, ××ת ××× ×©×ר×
-# ××¢×ר×× ×§×××¥ ×× ×¢××× ×××× ×× × ×¢×©× ×©×××ש ×ס××× × ×¡××£ ש××¨× ×©× UNIX (ש××¨× ×××©× ××× ×××רת ×ס××)
-# ××× ×¦××¨× ××××× ××××× ×× ×ת פ××ת ×ש××ש ××ת××ת - ××× × ×¤×¡××ת ××× ×קר×
-# רש××× ×× ×××ססת ×¢× ××× ×× ×צ××ת ×- http://www.ranks.nl/stopwords
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# ×××× ×¨×©××ת ××××× ××× × ×תע×× ×¡×רק ×ת×××, ××ת ××× ×©×ר×
+# ××¢×ר×× ×§×××¥ ×× ×¢××× ×××× ×× × ×¢×©× ×©×××ש ×ס××× × ×¡××£ ש××¨× ×©× UNIX (ש××¨× ×××©× ××× ×××רת ×ס××)
+# ××× ×¦××¨× ××××× ××××× ×× ×ת פ××ת ×ש××ש ××ת××ת - ××× × ×¤×¡××ת ××× ×קר×
+# רש××× ×× ×××ססת ×¢× ××× ×× ×צ××ת ×- http://www.ranks.nl/stopwords
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/he/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-ש×××!
-
-×××£ @PAGE@ ××××§× @TITLE@ ××©×ª× ×.
-×× × ×ש×× ××××:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-××× ××פס××§ ×ת ××רש×× ×××£ ×× ×ש ×××× ×¡ ××××§× ×-
- at DOKUWIKIURL@ ××קר ×××£
- at NEWPAGE@
-×××××ר '×פסק ××¢×§××'.
-
---
-×××"× ×× × ×צר ×¢× ××× DokuWiki ×-
- at DOKUWIKIURL@
+ש×××!
+
+×××£ @PAGE@ ××××§× @TITLE@ ××©×ª× ×.
+×× × ×ש×× ××××:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+××× ××פס××§ ×ת ××רש×× ×××£ ×× ×ש ×××× ×¡ ××××§× ×-
+ at DOKUWIKIURL@ ××קר ×××£
+ at NEWPAGE@
+×××××ר '×פסק ××¢×§××'.
+
+--
+×××"× ×× × ×צר ×¢× ××× DokuWiki ×-
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/he/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ×¢××××× ×¤×¨×× ×ש××× × ======
-
-××× ×¦××¨× ×××× ××¢×ר ×פר××× ×××××¢××× ×ש×× ××. ×× × ××ª× ××©× ×ת ×ת ×©× ××שת×ש.
-
-
+====== ×¢××××× ×¤×¨×× ×ש××× × ======
+
+××× ×¦××¨× ×××× ××¢×ר ×פר××× ×××××¢××× ×ש×× ××. ×× × ××ª× ××©× ×ת ×ת ×©× ××שת×ש.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/he/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-×§×××¥ ×××¢×× ×× ××××§××××§× ×©××. ×× × ×¤×¨×××:
-
-×§×××¥ : @MEDIA@
-ת×ר×× : @DATE@
-×פ××¤× : @BROWSER@
-×ת××ת IP : @IPADDRESS@
-×××¨× : @HOSTNAME@
-×××× : @SIZE@
-ס×××× : @MIME@
-×שת×ש : @USER@
-
---
-×××ר ×× × ×צר ×¢× ××× ×××§××××§× ×ת××ת
+×§×××¥ ×××¢×× ×× ××××§××××§× ×©××. ×× × ×¤×¨×××:
+
+×§×××¥ : @MEDIA@
+ת×ר×× : @DATE@
+×פ××¤× : @BROWSER@
+×ת××ת IP : @IPADDRESS@
+×××¨× : @HOSTNAME@
+×××× : @SIZE@
+ס×××× : @MIME@
+×שת×ש : @USER@
+
+--
+×××ר ×× × ×צר ×¢× ××× ×××§××××§× ×ת××ת
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/he/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/he/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/he/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======××¦×¤× × ×ס××======
-
-××©× ×××× ×©×× **××** × ×©××¨× ××¤× × ×©×× ×××××× ×××× ×ס××× ×× ××תר.
-×× ×××ת × ×ס×ת ××צ××£ ×ת ××××§× -- ××× ×¨×¢! ×× × ×¨×× ×× ×× ×× ××¢×ת,× ××ª× ××צ×ר קשר ×¢× ×× ×× ××××§× (××¤× × ×©×× ×× × ×× ×¨×צ×× ×קר×× ××× ×©×× ××××× ×××× ×, ×× ×¤×××¢ ××××××).
-
+======××¦×¤× × ×ס××======
+
+××©× ×××× ×©×× **××** × ×©××¨× ××¤× × ×©×× ×××××× ×××× ×ס××× ×× ××תר.
+×× ×××ת × ×ס×ת ××צ××£ ×ת ××××§× -- ××× ×¨×¢! ×× × ×¨×× ×× ×× ×× ××¢×ת,× ××ª× ××צ×ר קשר ×¢× ×× ×× ××××§× (××¤× × ×©×× ×× × ×× ×¨×צ×× ×קר×× ××× ×©×× ××××× ×××× ×, ×× ×¤×××¢ ××××××).
+
Modified: site/trunk/www-root/wiki/inc/lang/hr/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Administracija ======
-
-Slijedi spisak svih administracijskih poslova koji su trenutno dostupni.
+====== Administracija ======
+
+Slijedi spisak svih administracijskih poslova koji su trenutno dostupni.
Modified: site/trunk/www-root/wiki/inc/lang/hr/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Linkovi na stranicu ======
-
-Slijedi spisak svih dokumenata koji imaju link na trenutni.
+====== Linkovi na stranicu ======
+
+Slijedi spisak svih dokumenata koji imaju link na trenutni.
Modified: site/trunk/www-root/wiki/inc/lang/hr/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Postoji novija verzija ======
-
-VeÄ postoji novija verzija dokumenta kojeg ste mijenjali. To se deÅ¡ava jer je neki drugi korisnik snimio dokument za vrijeme dok ste ga Vi mijenjali.
-
-ProuÄite promjene koje slijede i odaberite koje želite preuzeti. Odaberite ''Snimi'' da biste snimili VaÅ¡u verziju ili ''PoniÅ¡ti'' da ostavite saÄuvanu trenutnu verziju dokumenta.
+====== Postoji novija verzija ======
+
+VeÄ postoji novija verzija dokumenta kojeg ste mijenjali. To se deÅ¡ava jer je neki drugi korisnik snimio dokument za vrijeme dok ste ga Vi mijenjali.
+
+ProuÄite promjene koje slijede i odaberite koje želite preuzeti. Odaberite ''Snimi'' da biste snimili VaÅ¡u verziju ili ''PoniÅ¡ti'' da ostavite saÄuvanu trenutnu verziju dokumenta.
Modified: site/trunk/www-root/wiki/inc/lang/hr/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Niste autorizirani ======
-
-Nemate autorizaciju.
-
-Niste li se možda zaboravili prijaviti u aplikaciju?
+====== Niste autorizirani ======
+
+Nemate autorizaciju.
+
+Niste li se možda zaboravili prijaviti u aplikaciju?
Modified: site/trunk/www-root/wiki/inc/lang/hr/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Razlike ======
-
-Slijede sve razlike izmeÄu odabrane i trenutne verzije dokumenta
+====== Razlike ======
+
+Slijede sve razlike izmeÄu odabrane i trenutne verzije dokumenta
Modified: site/trunk/www-root/wiki/inc/lang/hr/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Nakon što ste napravili sve potrebne promjene - odaberite ''Snimi'' za snimanje dokumenta.
+Nakon što ste napravili sve potrebne promjene - odaberite ''Snimi'' za snimanje dokumenta.
Modified: site/trunk/www-root/wiki/inc/lang/hr/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**UÄitali ste stariju verziju dokumenta!** Ukoliko je snimite - biti Äe kreirana nova verzija dokumenta.
+**UÄitali ste stariju verziju dokumenta!** Ukoliko je snimite - biti Äe kreirana nova verzija dokumenta.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hr/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-====== Indeks ======
+====== Indeks ======
Modified: site/trunk/www-root/wiki/inc/lang/hr/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,174 +1,174 @@
-<?php
-/**
- * croatian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Tomo Krajina <aaa at puzz.info>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = 'Izmijeni dokument';
-$lang['btn_source'] = 'Prikaži kod';
-$lang['btn_show'] = 'Prikaži dokument';
-$lang['btn_create'] = 'Novi dokument';
-$lang['btn_search'] = 'Pretraživanje';
-$lang['btn_save'] = 'Snimi';
-$lang['btn_preview']= 'Prikaži';
-$lang['btn_top'] = 'Na vrh';
-$lang['btn_newer'] = '<< noviji';
-$lang['btn_older'] = 'stariji >>';
-$lang['btn_revs'] = 'Stare verzije';
-$lang['btn_recent'] = 'Nedavne izmjene';
-$lang['btn_upload'] = 'Upload';
-$lang['btn_cancel'] = 'Poništi';
-$lang['btn_index'] = 'Indeks';
-$lang['btn_secedit']= 'Izmjena';
-$lang['btn_login'] = 'Prijava';
-$lang['btn_logout'] = 'Odjava';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Update'; // ODO
-$lang['btn_delete'] = 'Brisanje';
-$lang['btn_back'] = 'Povratak';
-$lang['btn_backlink'] = "Povratni linkovi";
-$lang['btn_backtomedia'] = 'Povratak na Mediafile izbornik'; // TODO
-$lang['btn_subscribe'] = 'Pretplati se na promjene';
-$lang['btn_unsubscribe'] = 'Odjavi pretplatu o promjenama';
-$lang['btn_profile'] = 'Izmjena profila';
-$lang['btn_reset'] = 'Reset';
-$lang['btn_resendpwd'] = 'Pošalji lozinku';
-
-$lang['loggedinas'] = 'Prijavljen kao';
-$lang['user'] = 'KorisniÄko ime';
-$lang['pass'] = 'Lozinka';
-$lang['newpass'] = 'Nova lozinka';
-$lang['oldpass'] = 'Confirm current password';
-$lang['passchk'] = 'Ponovi';
-$lang['remember'] = 'Zapamti me';
-$lang['fullname'] = 'Ime i prezime';
-$lang['email'] = 'Email';
-$lang['register'] = 'Registracija';
-$lang['profile'] = 'Profil korisnika';
-$lang['badlogin'] = 'Krivo korisniÄko ime ili lozinka.';
-$lang['minoredit'] = 'Manja promjena';
-
-$lang['regmissing'] = 'Morate popuniti sva polja.';
-$lang['reguexists'] = 'Korisnik s tim korisniÄkim imenom veÄ postoji.';
-$lang['regsuccess'] = 'Novi korisnik je uspješno unesen i poslana mu je lozinka mailom.';
-$lang['regsuccess2']= 'Korisnik je uspješno.';
-$lang['regmailfail']= 'Došlo je do greške pri slanju lozinke. Molimo Vas da kontaktirate administratora!';
-$lang['regbadmail'] = 'Email adreasa nije ispravna';
-$lang['regbadpass'] = 'Unesene lozinke nisu jednake!';
-$lang['regpwmail'] = 'Vaša DokuWiki lozinka';
-$lang['reghere'] = 'Nemate joÅ¡ korisniÄko ime? Registrirajte se.';
-
-$lang['profna'] = 'Nije dopušteno mijenjati korisnikov profil';
-$lang['profnochange'] = 'Nije bilo izmjena.';
-$lang['profnoempty'] = 'Nije ispunjeno polje za ime i/ili email.';
-$lang['profchanged'] = 'Korisnikov profil uredno izmijenjen.';
-
-$lang['pwdforget'] = 'Izgubili ste lozinku?';
-$lang['resendna'] = 'Nije dopušteno slanje lozinke emailom.';
-$lang['resendpwd'] = 'Slanje nove lozinke za';
-$lang['resendpwdmissing'] = 'Molimo Vas da ispunite sva polja.';
-$lang['resendpwdnouser'] = 'Korisnik nije naÄen.';
-$lang['resendpwdsuccess'] = 'Nova lozinka je poslana emailom.';
-
-$lang['txt_upload'] = 'Odaberite datoteku za upload';
-$lang['txt_filename'] = 'Upload kao (nije obavezno)';
-$lang['txt_overwrt'] = 'Preko veÄ postojeÄe datoteke';
-$lang['lockedby'] = 'ZakljuÄano od strane korisnika';
-$lang['lockexpire'] = 'ZakljuÄano do';
-$lang['willexpire'] = 'Dokument kojeg mijenjate Äe biti zakljuÄan joÅ¡ 1 minutu. Ukoliko želite i dalje raditi izmjene na dokumentu - molimo Vas da kliknete na "Pregled".'; // TODO
-
-$lang['notsavedyet'] = 'Vaše izmjene že ostati izgubljene.\nZaista želite nastaviti?';
-$lang['rssfailed'] = 'Došlo je do greške prilikom preuzimanja ovog feed-a: ';
-$lang['nothingfound']= 'NiÅ¡ta nije naÄeno.';
-
-$lang['mediaselect'] = 'Mediafile izbor';
-$lang['fileupload'] = 'Mediafile upload';
-$lang['uploadsucc'] = 'Upload uspješan';
-$lang['uploadfail'] = 'Upload neuspješan. Možda nešto ne valja s dozvolama na serveru?';
-$lang['uploadwrong'] = 'Upload nije dopušten - nedozvoljena ekstenzija!';
-$lang['uploadexist'] = 'Datoteka veÄ postoji.';
-$lang['deletesucc'] = 'Datoteka "%s" je obrisana.';
-$lang['deletefail'] = '"%s" ne može biti obrisana - provjerite dozvole na serveru.';
-$lang['mediainuse'] = 'Datoteka "%s" nije obrisana - još uvijek se koristi.';
-$lang['namespaces'] = 'Namespaces';
-$lang['mediafiles'] = 'Datoteke u';
-
-$lang['reference'] = 'Reference za';
-$lang['ref_inuse'] = 'Datoteka ne može biti obrisana jer se joÅ¡ uvijek koristi u sljedeÄim stranicama:';
-$lang['ref_hidden'] = 'Neke reference su na stranicama koje nemate dozvolu Äitati';
-
-$lang['hits'] = 'NaÄeno';
-$lang['quickhits'] = 'NaÄeno po imenima stranica';
-$lang['toc'] = 'Sadržaj';
-$lang['current'] = 'trenutno';
-$lang['yours'] = 'Vaša verzija';
-$lang['diff'] = 'prikaži razlike u odnosu na trenutnu verziju';
-$lang['line'] = 'Redak';
-$lang['breadcrumb'] = 'Trace';
-$lang['youarehere'] = 'Vi ste ovdje';
-$lang['lastmod'] = 'Zadnja izmjena';
-$lang['by'] = 'od';
-$lang['deleted'] = 'obrisano';
-$lang['created'] = 'kreirano';
-$lang['restored'] = 'old revision restored';
-$lang['summary'] = 'Sažetak izmjena';
-
-$lang['mail_newpage'] = 'stranica dodana:';
-$lang['mail_changed'] = 'stranica kreirana:';
-
-$lang['nosmblinks'] = 'Linkovi na share-ane foldere rade samo s Internet Explorerom. ';
-
-$lang['qb_alert'] = 'Unesite tekst kojeg želite formatirati.\nBiti Äe dodan na kraju dokumenta.';
-$lang['qb_bold'] = 'Podebljani tekst';
-$lang['qb_italic'] = 'Ukošeni tekst';
-$lang['qb_underl'] = 'Potcrtani tekst';
-$lang['qb_code'] = 'Kod';
-$lang['qb_strike'] = 'Precrtani tekst';
-$lang['qb_h1'] = 'Naslov - nivo 1';
-$lang['qb_h2'] = 'Naslov - nivo 2';
-$lang['qb_h3'] = 'Naslov - nivo 3';
-$lang['qb_h4'] = 'Naslov - nivo 4';
-$lang['qb_h5'] = 'Naslov - nivo 5';
-$lang['qb_link'] = 'Interni link';
-$lang['qb_extlink'] = 'Eksterni link';
-$lang['qb_hr'] = 'Vodoravna crta';
-$lang['qb_ol'] = 'Pobrojana lista';
-$lang['qb_ul'] = 'Lista';
-$lang['qb_media'] = 'Slike';
-$lang['qb_sig'] = 'Potpis';
-$lang['qb_smileys'] = 'Smile-ovi';
-$lang['qb_chars'] = 'Posebni znakovi';
-
-$lang['del_confirm']= 'Jeste li sigurni da Äelite obrisati?';
-$lang['admin_register']= 'Dodavanje korisnika';
-
-$lang['metaedit'] = 'Izmjena metapodataka';
-$lang['metasaveerr'] = 'Izmjena metapodataka nije uspjela';
-$lang['metasaveok'] = 'Meta';
-$lang['img_backto'] = 'Povratak na';
-$lang['img_title'] = 'Naslov';
-$lang['img_caption'] = 'Caption';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Ime datoteke';
-$lang['img_fsize'] = 'VeliÄina';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords']= 'KljuÄne rijeÄi';
-
-$lang['subscribe_success'] = 'Dodan korisnik %s kao pretplatnik na %s';
-$lang['subscribe_error'] = 'Greška pri dodavanju korisnika %s kao pretplatnika na %s';
-$lang['subscribe_noaddress']= 'Nema email adrese za vaÅ¡e korisniÄko ime, ne možete biti dodani na listu pretplatnika';
-$lang['unsubscribe_success']= 'Maknut %s sa liste pretplatnika %s';
-$lang['unsubscribe_error'] = 'Greška pri micanju korisnika %s s liste pretplatnika za %s';
-
-/* auth.class language support */
-$lang['authmodfailed'] = 'Greška pri konfiguraciji za autentifikaciju. Molimo Vas da kontaktirate administratora.';
-$lang['authtempfail'] = 'Autentifikacija korisnika je privremeno nedostupna. Molimo Vas da kontaktirate administratora.';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * croatian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Tomo Krajina <aaa at puzz.info>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = 'Izmijeni dokument';
+$lang['btn_source'] = 'Prikaži kod';
+$lang['btn_show'] = 'Prikaži dokument';
+$lang['btn_create'] = 'Novi dokument';
+$lang['btn_search'] = 'Pretraživanje';
+$lang['btn_save'] = 'Snimi';
+$lang['btn_preview']= 'Prikaži';
+$lang['btn_top'] = 'Na vrh';
+$lang['btn_newer'] = '<< noviji';
+$lang['btn_older'] = 'stariji >>';
+$lang['btn_revs'] = 'Stare verzije';
+$lang['btn_recent'] = 'Nedavne izmjene';
+$lang['btn_upload'] = 'Upload';
+$lang['btn_cancel'] = 'Poništi';
+$lang['btn_index'] = 'Indeks';
+$lang['btn_secedit']= 'Izmjena';
+$lang['btn_login'] = 'Prijava';
+$lang['btn_logout'] = 'Odjava';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Update'; // ODO
+$lang['btn_delete'] = 'Brisanje';
+$lang['btn_back'] = 'Povratak';
+$lang['btn_backlink'] = "Povratni linkovi";
+$lang['btn_backtomedia'] = 'Povratak na Mediafile izbornik'; // TODO
+$lang['btn_subscribe'] = 'Pretplati se na promjene';
+$lang['btn_unsubscribe'] = 'Odjavi pretplatu o promjenama';
+$lang['btn_profile'] = 'Izmjena profila';
+$lang['btn_reset'] = 'Reset';
+$lang['btn_resendpwd'] = 'Pošalji lozinku';
+
+$lang['loggedinas'] = 'Prijavljen kao';
+$lang['user'] = 'KorisniÄko ime';
+$lang['pass'] = 'Lozinka';
+$lang['newpass'] = 'Nova lozinka';
+$lang['oldpass'] = 'Confirm current password';
+$lang['passchk'] = 'Ponovi';
+$lang['remember'] = 'Zapamti me';
+$lang['fullname'] = 'Ime i prezime';
+$lang['email'] = 'Email';
+$lang['register'] = 'Registracija';
+$lang['profile'] = 'Profil korisnika';
+$lang['badlogin'] = 'Krivo korisniÄko ime ili lozinka.';
+$lang['minoredit'] = 'Manja promjena';
+
+$lang['regmissing'] = 'Morate popuniti sva polja.';
+$lang['reguexists'] = 'Korisnik s tim korisniÄkim imenom veÄ postoji.';
+$lang['regsuccess'] = 'Novi korisnik je uspješno unesen i poslana mu je lozinka mailom.';
+$lang['regsuccess2']= 'Korisnik je uspješno.';
+$lang['regmailfail']= 'Došlo je do greške pri slanju lozinke. Molimo Vas da kontaktirate administratora!';
+$lang['regbadmail'] = 'Email adreasa nije ispravna';
+$lang['regbadpass'] = 'Unesene lozinke nisu jednake!';
+$lang['regpwmail'] = 'Vaša DokuWiki lozinka';
+$lang['reghere'] = 'Nemate joÅ¡ korisniÄko ime? Registrirajte se.';
+
+$lang['profna'] = 'Nije dopušteno mijenjati korisnikov profil';
+$lang['profnochange'] = 'Nije bilo izmjena.';
+$lang['profnoempty'] = 'Nije ispunjeno polje za ime i/ili email.';
+$lang['profchanged'] = 'Korisnikov profil uredno izmijenjen.';
+
+$lang['pwdforget'] = 'Izgubili ste lozinku?';
+$lang['resendna'] = 'Nije dopušteno slanje lozinke emailom.';
+$lang['resendpwd'] = 'Slanje nove lozinke za';
+$lang['resendpwdmissing'] = 'Molimo Vas da ispunite sva polja.';
+$lang['resendpwdnouser'] = 'Korisnik nije naÄen.';
+$lang['resendpwdsuccess'] = 'Nova lozinka je poslana emailom.';
+
+$lang['txt_upload'] = 'Odaberite datoteku za upload';
+$lang['txt_filename'] = 'Upload kao (nije obavezno)';
+$lang['txt_overwrt'] = 'Preko veÄ postojeÄe datoteke';
+$lang['lockedby'] = 'ZakljuÄano od strane korisnika';
+$lang['lockexpire'] = 'ZakljuÄano do';
+$lang['willexpire'] = 'Dokument kojeg mijenjate Äe biti zakljuÄan joÅ¡ 1 minutu. Ukoliko želite i dalje raditi izmjene na dokumentu - molimo Vas da kliknete na "Pregled".'; // TODO
+
+$lang['notsavedyet'] = 'Vaše izmjene že ostati izgubljene.\nZaista želite nastaviti?';
+$lang['rssfailed'] = 'Došlo je do greške prilikom preuzimanja ovog feed-a: ';
+$lang['nothingfound']= 'NiÅ¡ta nije naÄeno.';
+
+$lang['mediaselect'] = 'Mediafile izbor';
+$lang['fileupload'] = 'Mediafile upload';
+$lang['uploadsucc'] = 'Upload uspješan';
+$lang['uploadfail'] = 'Upload neuspješan. Možda nešto ne valja s dozvolama na serveru?';
+$lang['uploadwrong'] = 'Upload nije dopušten - nedozvoljena ekstenzija!';
+$lang['uploadexist'] = 'Datoteka veÄ postoji.';
+$lang['deletesucc'] = 'Datoteka "%s" je obrisana.';
+$lang['deletefail'] = '"%s" ne može biti obrisana - provjerite dozvole na serveru.';
+$lang['mediainuse'] = 'Datoteka "%s" nije obrisana - još uvijek se koristi.';
+$lang['namespaces'] = 'Namespaces';
+$lang['mediafiles'] = 'Datoteke u';
+
+$lang['reference'] = 'Reference za';
+$lang['ref_inuse'] = 'Datoteka ne može biti obrisana jer se joÅ¡ uvijek koristi u sljedeÄim stranicama:';
+$lang['ref_hidden'] = 'Neke reference su na stranicama koje nemate dozvolu Äitati';
+
+$lang['hits'] = 'NaÄeno';
+$lang['quickhits'] = 'NaÄeno po imenima stranica';
+$lang['toc'] = 'Sadržaj';
+$lang['current'] = 'trenutno';
+$lang['yours'] = 'Vaša verzija';
+$lang['diff'] = 'prikaži razlike u odnosu na trenutnu verziju';
+$lang['line'] = 'Redak';
+$lang['breadcrumb'] = 'Trace';
+$lang['youarehere'] = 'Vi ste ovdje';
+$lang['lastmod'] = 'Zadnja izmjena';
+$lang['by'] = 'od';
+$lang['deleted'] = 'obrisano';
+$lang['created'] = 'kreirano';
+$lang['restored'] = 'old revision restored';
+$lang['summary'] = 'Sažetak izmjena';
+
+$lang['mail_newpage'] = 'stranica dodana:';
+$lang['mail_changed'] = 'stranica kreirana:';
+
+$lang['nosmblinks'] = 'Linkovi na share-ane foldere rade samo s Internet Explorerom. ';
+
+$lang['qb_alert'] = 'Unesite tekst kojeg želite formatirati.\nBiti Äe dodan na kraju dokumenta.';
+$lang['qb_bold'] = 'Podebljani tekst';
+$lang['qb_italic'] = 'Ukošeni tekst';
+$lang['qb_underl'] = 'Potcrtani tekst';
+$lang['qb_code'] = 'Kod';
+$lang['qb_strike'] = 'Precrtani tekst';
+$lang['qb_h1'] = 'Naslov - nivo 1';
+$lang['qb_h2'] = 'Naslov - nivo 2';
+$lang['qb_h3'] = 'Naslov - nivo 3';
+$lang['qb_h4'] = 'Naslov - nivo 4';
+$lang['qb_h5'] = 'Naslov - nivo 5';
+$lang['qb_link'] = 'Interni link';
+$lang['qb_extlink'] = 'Eksterni link';
+$lang['qb_hr'] = 'Vodoravna crta';
+$lang['qb_ol'] = 'Pobrojana lista';
+$lang['qb_ul'] = 'Lista';
+$lang['qb_media'] = 'Slike';
+$lang['qb_sig'] = 'Potpis';
+$lang['qb_smileys'] = 'Smile-ovi';
+$lang['qb_chars'] = 'Posebni znakovi';
+
+$lang['del_confirm']= 'Jeste li sigurni da Äelite obrisati?';
+$lang['admin_register']= 'Dodavanje korisnika';
+
+$lang['metaedit'] = 'Izmjena metapodataka';
+$lang['metasaveerr'] = 'Izmjena metapodataka nije uspjela';
+$lang['metasaveok'] = 'Meta';
+$lang['img_backto'] = 'Povratak na';
+$lang['img_title'] = 'Naslov';
+$lang['img_caption'] = 'Caption';
+$lang['img_date'] = 'Datum';
+$lang['img_fname'] = 'Ime datoteke';
+$lang['img_fsize'] = 'VeliÄina';
+$lang['img_artist'] = 'Fotograf';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords']= 'KljuÄne rijeÄi';
+
+$lang['subscribe_success'] = 'Dodan korisnik %s kao pretplatnik na %s';
+$lang['subscribe_error'] = 'Greška pri dodavanju korisnika %s kao pretplatnika na %s';
+$lang['subscribe_noaddress']= 'Nema email adrese za vaÅ¡e korisniÄko ime, ne možete biti dodani na listu pretplatnika';
+$lang['unsubscribe_success']= 'Maknut %s sa liste pretplatnika %s';
+$lang['unsubscribe_error'] = 'Greška pri micanju korisnika %s s liste pretplatnika za %s';
+
+/* auth.class language support */
+$lang['authmodfailed'] = 'Greška pri konfiguraciji za autentifikaciju. Molimo Vas da kontaktirate administratora.';
+$lang['authtempfail'] = 'Autentifikacija korisnika je privremeno nedostupna. Molimo Vas da kontaktirate administratora.';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/hr/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Dokument zakljuÄan ======
-
-Mijenjanje ovog dokumenta je trenutno onemoguÄeno jer je otvoren od strane nekog drugog korisnika. Morate priÄekati da on zavrÅ¡i sa svojim izmjenama.
+====== Dokument zakljuÄan ======
+
+Mijenjanje ovog dokumenta je trenutno onemoguÄeno jer je otvoren od strane nekog drugog korisnika. Morate priÄekati da on zavrÅ¡i sa svojim izmjenama.
Modified: site/trunk/www-root/wiki/inc/lang/hr/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Prijava ======
-
-UpiÅ¡ite korisniÄko ime i lozinku da biste se prijavili.
+====== Prijava ======
+
+UpiÅ¡ite korisniÄko ime i lozinku da biste se prijavili.
Modified: site/trunk/www-root/wiki/inc/lang/hr/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Dokument na Vašem wiki-ju je promijenjen ili dodan:
-
-Datum : @DATE@
-Preglednik : @BROWSER@
-IP-Adresa : @IPADDRESS@
-Host : @HOSTNAME@
-Prijašnja verzija : @OLDPAGE@
-Nova verzija : @NEWPAGE@
-Opis izmjene : @SUMMARY@
-Korisnik : @USER@
-
- at DIFF@
-
-
---
-Ovaj email je poslan na: @DOKUWIKIURL@
+Dokument na Vašem wiki-ju je promijenjen ili dodan:
+
+Datum : @DATE@
+Preglednik : @BROWSER@
+IP-Adresa : @IPADDRESS@
+Host : @HOSTNAME@
+Prijašnja verzija : @OLDPAGE@
+Nova verzija : @NEWPAGE@
+Opis izmjene : @SUMMARY@
+Korisnik : @USER@
+
+ at DIFF@
+
+
+--
+Ovaj email je poslan na: @DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/hr/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Dokument ne postoji ======
-
-Traženi dokument (još) ne postoji. Ukoliko ga želite otvoriti kliknite na ''Novi dokument''.
+====== Dokument ne postoji ======
+
+Traženi dokument (još) ne postoji. Ukoliko ga želite otvoriti kliknite na ''Novi dokument''.
Modified: site/trunk/www-root/wiki/inc/lang/hr/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== NepostojeÄa verzija ======
-
-Tražena verzija dokumenta ne postoji.
+====== NepostojeÄa verzija ======
+
+Tražena verzija dokumenta ne postoji.
Modified: site/trunk/www-root/wiki/inc/lang/hr/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-Pozdrav @FULLNAME@!
-
-Slijede podaci za @TITLE@ sa @DOKUWIKIURL@
-
-KorisniÄko ime : @LOGIN@
-Lozinka : @PASSWORD@
-
---
- at DOKUWIKIURL@
+Pozdrav @FULLNAME@!
+
+Slijede podaci za @TITLE@ sa @DOKUWIKIURL@
+
+KorisniÄko ime : @LOGIN@
+Lozinka : @PASSWORD@
+
+--
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/hr/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Pregled ======
-
-Ovo je pregled kako Äe izgledati VaÅ¡ dokument nakon Å¡to se snimi.
+====== Pregled ======
+
+Ovo je pregled kako Äe izgledati VaÅ¡ dokument nakon Å¡to se snimi.
Modified: site/trunk/www-root/wiki/inc/lang/hr/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Nije dopušteno mijenjati sadržaj ove stranice.
+Nije dopušteno mijenjati sadržaj ove stranice.
Modified: site/trunk/www-root/wiki/inc/lang/hr/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Nedavne izmjene ======
-
-Stranice koje su nedavno promijenjene.
+====== Nedavne izmjene ======
+
+Stranice koje su nedavno promijenjene.
Modified: site/trunk/www-root/wiki/inc/lang/hr/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Prijava novog korisnika ======
-
-Ispunite potrebne podatke da biste dobili korisniÄki raÄun na wikiju. Posebno obratite pažnju da ste unijeli valjani email.
+====== Prijava novog korisnika ======
+
+Ispunite potrebne podatke da biste dobili korisniÄki raÄun na wikiju. Posebno obratite pažnju da ste unijeli valjani email.
Modified: site/trunk/www-root/wiki/inc/lang/hr/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Slanje nove lozinke ======
-
-Ispunite potrebne podatke da biste dobili novu lozinku za VaÅ¡ korisniÄki raÄun.
+====== Slanje nove lozinke ======
+
+Ispunite potrebne podatke da biste dobili novu lozinku za VaÅ¡ korisniÄki raÄun.
Modified: site/trunk/www-root/wiki/inc/lang/hr/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Stare verzije ======
-
-Slijedi spisak starih verzija za traženi dokument.
+====== Stare verzije ======
+
+Slijedi spisak starih verzija za traženi dokument.
Modified: site/trunk/www-root/wiki/inc/lang/hr/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-====== Rezultati pretraživanja ======
+====== Rezultati pretraživanja ======
Modified: site/trunk/www-root/wiki/inc/lang/hr/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Ovo je stara verzija dokumenta!**
-----
+**Ovo je stara verzija dokumenta!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/hr/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/hr/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Pozdrav!
-
-Stranica @PAGE@ na @TITLE@ je promijenjena.
-Slijede promjene:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Ukoliko se želite odjaviti s ove pretplate - prijavite se na:
- at DOKUWIKIURL@ zatim odite na
- at NEWPAGE@
-i odaberite 'Odjava'.
-
---
- at DOKUWIKIURL@
+Pozdrav!
+
+Stranica @PAGE@ na @TITLE@ je promijenjena.
+Slijede promjene:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Ukoliko se želite odjaviti s ove pretplate - prijavite se na:
+ at DOKUWIKIURL@ zatim odite na
+ at NEWPAGE@
+i odaberite 'Odjava'.
+
+--
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/hr/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Izmjena korisniÄkog profila ======
-
-Ispunite samo polja koja želite mijenjati. Ne može se mijenjati korisniÄko ime.
+====== Izmjena korisniÄkog profila ======
+
+Ispunite samo polja koja želite mijenjati. Ne može se mijenjati korisniÄko ime.
Modified: site/trunk/www-root/wiki/inc/lang/hr/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hr/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hr/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== SPAM blokiranje ======
-
-VaÅ¡e izmjene **nisu** snimljene jer sadrže jednu ili viÅ¡e blokiranih/zabranjenih rijeÄi. Ukoliko mislite da je to greÅ¡ka - molimo Vas da kontaktirate administratora.
+====== SPAM blokiranje ======
+
+VaÅ¡e izmjene **nisu** snimljene jer sadrže jednu ili viÅ¡e blokiranih/zabranjenih rijeÄi. Ukoliko mislite da je to greÅ¡ka - molimo Vas da kontaktirate administratora.
Modified: site/trunk/www-root/wiki/inc/lang/hu/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-===== Adminisztrálás ======
-
-Itt találod a DokuWiki adminisztrálási lehetÅségeit.
+===== Adminisztrálás ======
+
+Itt találod a DokuWiki adminisztrálási lehetÅségeit.
Modified: site/trunk/www-root/wiki/inc/lang/hu/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Hivatkozások ======
-
-Ez azoknak az oldalaknak a listája, amelyek erre az oldalra
-"visszamutatnak" (hivatkoznak).
-
-
+====== Hivatkozások ======
+
+Ez azoknak az oldalaknak a listája, amelyek erre az oldalra
+"visszamutatnak" (hivatkoznak).
+
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Ãjabb változat létezik ======
-
-Az általad szerkesztett dokumentumnak egy újabb változata létezik. Ez
-akkor történik, ha egy másik felhasználó megváltoztatta a dokumentumot, amÃg szerkesztetted.
-
-Nézd át gondosan a lenti eltéréseket, aztán dönts arról, melyik változatot tartod meg. Ha ''Mentés'' gombot választod, akkor a Te változatod kerül mentésre. Nyomj ''Mégsem'' gombot a jelenlegi változat megtartásához.
-
-
+====== Ãjabb változat létezik ======
+
+Az általad szerkesztett dokumentumnak egy újabb változata létezik. Ez
+akkor történik, ha egy másik felhasználó megváltoztatta a dokumentumot, amÃg szerkesztetted.
+
+Nézd át gondosan a lenti eltéréseket, aztán dönts arról, melyik változatot tartod meg. Ha ''Mentés'' gombot választod, akkor a Te változatod kerül mentésre. Nyomj ''Mégsem'' gombot a jelenlegi változat megtartásához.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Hozzáférés megtagadva======
-
-Sajnáljuk, nincs jogod a folytatáshoz. Esetleg elfelejtettél bejelentkezni?
-
+======Hozzáférés megtagadva======
+
+Sajnáljuk, nincs jogod a folytatáshoz. Esetleg elfelejtettél bejelentkezni?
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Különbségek======
-
-A kiválasztott változat és az aktuális verzió közötti különbséget mutatjuk.
-
+======Különbségek======
+
+A kiválasztott változat és az aktuális verzió közötti különbséget mutatjuk.
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-===== Pisztozatot találtunk =====
-
-Az oldal utolsó szerkesztését nem fejezted be rendesen. A DokuWiki elmentette piszkozatként, Ãgy most folytathatod a szerkesztést. Lent látható, amit az utolsó szerkesztésbÅl elmentettünk.
-
+===== Pisztozatot találtunk =====
+
+Az oldal utolsó szerkesztését nem fejezted be rendesen. A DokuWiki elmentette piszkozatként, Ãgy most folytathatod a szerkesztést. Lent látható, amit az utolsó szerkesztésbÅl elmentettünk.
+
Válassz a //helyreállÃtás// vagy a //törlés// opciók közül a piszkozat sorsát illetÅen.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hu/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Szerkeszd az oldalt majd üsd le a ''Mentés'' gombot. Lásd a [[wiki:syntax|nyelvtan]] oldalt a formázási lehetÅségekért.
-Kérünk, hogy csak akkor szerkeszd az oldalt ha **jobbÃtani** tudod.
-Ha ki akarsz próbálni dolgokat akkor az elsŠlépéseid a [[playground:playground|játszótéren]] (playground) tedd.
+Szerkeszd az oldalt majd üsd le a ''Mentés'' gombot. Lásd a [[wiki:syntax|nyelvtan]] oldalt a formázási lehetÅségekért.
+Kérünk, hogy csak akkor szerkeszd az oldalt ha **jobbÃtani** tudod.
+Ha ki akarsz próbálni dolgokat akkor az elsŠlépéseid a [[playground:playground|játszótéren]] (playground) tedd.
Modified: site/trunk/www-root/wiki/inc/lang/hu/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Egy korábbi változatot töltöttél be!** Ha elmented, akkor egy újabb
-aktuális verzió jön létre ezzel a tartalommal.
+**Egy korábbi változatot töltöttél be!** Ha elmented, akkor egy újabb
+aktuális verzió jön létre ezzel a tartalommal.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hu/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÃttekintÅ (index) ======
-
-Az összes elérhetŠoldal áttekintése [[doku>wiki:namespaces|névterek]]
-szerint rendezve.
-
+====== ÃttekintÅ (index) ======
+
+Az összes elérhetŠoldal áttekintése [[doku>wiki:namespaces|névterek]]
+szerint rendezve.
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,26 +1,26 @@
-<p>Ez az oldal segÃt a <a href="http://wiki.splitbrain.org">DokuWiki</a> kezdeti
-beállÃtásában és a konfigurálásban. További információ
-<a href="http://wiki.splitbrain.org/wiki:installer">ezen az oldalon</a>
-található.</p>
-
-<p>A DokuWiki hagyományos fájlokat használ a wiki oldalak és a hozzájuk
-kapcsolódó információk (pl. képek, keresési indexek, korábbi változatok stb.)
-tárolásához. Emiatt a sikeres működés érdekében a DokuWikinek Ãrási joggal
-<strong>kell</strong> rendelkeznie azokon a könyvtárakon, ahová ezek a
-fájlok kerülnek. Ez a BeállÃtó Varázsló nem képes beállÃtani a könyvtárakhoz
-a szükséges jogosultságokat, azokat közvetlenül parancssorból kell megtenni,
-illetve tárhelyszolgáltatás igénybevétele esetén FTP kliens segÃtségével,
-vagy a tárhelyszolgáltató által rendelkezésre bocsátott beállÃtóeszköz
-(pl. cPanel) segÃtségével.</p>
-
-<p>A BeállÃtó Varázsló felkészÃti ezt a DokuWikit a hozzáférési listák
-(<acronym title="access control list">ACL</acronym>-ek) használatára. Ãgy
-a Wiki-gazda felhasználóval hozzáférünk az admin menühöz, mellyel
-bÅvÃtményeket telepÃthetünk, felhasználókat és hozzáférési jogokat
-kezelhetünk, valamint változtathatunk a konfigurációs beállÃtásokon.
-Ez tulajdonképpen nem szükséges a DokuWiki működéséhez, de megkönnyÃti
-az adminisztrációt.</p>
-
-<p>SzakértÅk illetve speciális beállÃtást igénylÅ felhasználók további információkat
-találnak a következÅ oldalakon <a href="http://wiki.splitbrain.org/wiki:install">telepÃtéssel</a>
-és <a href="http://wiki.splitbrain.org/wiki:config">konfigurálási lehetÅségekkel</a> kapcsolatban.</p>
+<p>Ez az oldal segÃt a <a href="http://wiki.splitbrain.org">DokuWiki</a> kezdeti
+beállÃtásában és a konfigurálásban. További információ
+<a href="http://wiki.splitbrain.org/wiki:installer">ezen az oldalon</a>
+található.</p>
+
+<p>A DokuWiki hagyományos fájlokat használ a wiki oldalak és a hozzájuk
+kapcsolódó információk (pl. képek, keresési indexek, korábbi változatok stb.)
+tárolásához. Emiatt a sikeres működés érdekében a DokuWikinek Ãrási joggal
+<strong>kell</strong> rendelkeznie azokon a könyvtárakon, ahová ezek a
+fájlok kerülnek. Ez a BeállÃtó Varázsló nem képes beállÃtani a könyvtárakhoz
+a szükséges jogosultságokat, azokat közvetlenül parancssorból kell megtenni,
+illetve tárhelyszolgáltatás igénybevétele esetén FTP kliens segÃtségével,
+vagy a tárhelyszolgáltató által rendelkezésre bocsátott beállÃtóeszköz
+(pl. cPanel) segÃtségével.</p>
+
+<p>A BeállÃtó Varázsló felkészÃti ezt a DokuWikit a hozzáférési listák
+(<acronym title="access control list">ACL</acronym>-ek) használatára. Ãgy
+a Wiki-gazda felhasználóval hozzáférünk az admin menühöz, mellyel
+bÅvÃtményeket telepÃthetünk, felhasználókat és hozzáférési jogokat
+kezelhetünk, valamint változtathatunk a konfigurációs beállÃtásokon.
+Ez tulajdonképpen nem szükséges a DokuWiki működéséhez, de megkönnyÃti
+az adminisztrációt.</p>
+
+<p>SzakértÅk illetve speciális beállÃtást igénylÅ felhasználók további információkat
+találnak a következÅ oldalakon <a href="http://wiki.splitbrain.org/wiki:install">telepÃtéssel</a>
+és <a href="http://wiki.splitbrain.org/wiki:config">konfigurálási lehetÅségekkel</a> kapcsolatban.</p>
Modified: site/trunk/www-root/wiki/inc/lang/hu/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/**
- * Hungarian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Ziegler Gábor <gziegler at freemail.hu>
- * @author Sandor TIHANYI <stihanyi at gmail.com>
- * @author SandorTIHANYI <stihanyi at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Oldal szerkesztése';
-$lang['btn_source'] = 'Oldalforrás megtekintése';
-$lang['btn_show'] = 'Oldal megtekintése';
-$lang['btn_create'] = 'Oldal létrehozása';
-$lang['btn_search'] = 'Keresés';
-$lang['btn_save'] = 'Mentés';
-$lang['btn_preview'] = 'ElÅnézet';
-$lang['btn_top'] = 'Vissza a tetejére';
-$lang['btn_newer'] = '<< Ãjabb változat';
-$lang['btn_older'] = 'Régebbi változat >>';
-$lang['btn_revs'] = 'Korábbi változatok';
-$lang['btn_recent'] = 'Legfrissebb változások';
-$lang['btn_upload'] = 'Feltöltés';
-$lang['btn_cancel'] = 'Mégsem';
-$lang['btn_index'] = 'ÃttekintÅ';
-$lang['btn_secedit'] = 'Szerkesztés';
-$lang['btn_login'] = 'Bejelentkezés';
-$lang['btn_logout'] = 'Kijelentkezés';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'FrissÃtés';
-$lang['btn_delete'] = 'Törlés';
-$lang['btn_back'] = 'Vissza';
-$lang['btn_backlink'] = 'Hivatkozások';
-$lang['btn_backtomedia'] = 'Vissza a médiafájlok kezeléséhez';
-$lang['btn_subscribe'] = 'Oldalváltozások-hÃrlevél feliratkozás';
-$lang['btn_unsubscribe'] = 'Oldalváltozások-hÃrlevél leiratkozás';
-$lang['btn_subscribens'] = 'Névtér-változás hÃrlevél feliratkozás';
-$lang['btn_unsubscribens'] = 'Névtér-változás hÃrlevél leiratkozás';
-$lang['btn_profile'] = 'Személyes beállÃtások';
-$lang['btn_reset'] = 'Alaphelyzet';
-$lang['btn_resendpwd'] = 'Ãj jelszó küldése';
-$lang['btn_draft'] = 'Piszkozat szerkesztése';
-$lang['btn_recover'] = 'Piszkozat folytatása';
-$lang['btn_draftdel'] = 'Piszkozat törlése';
-$lang['loggedinas'] = 'Belépett felhasználó: ';
-$lang['user'] = 'AzonosÃtó';
-$lang['pass'] = 'Jelszó';
-$lang['newpass'] = 'Ãj jelszó';
-$lang['oldpass'] = 'Régi jelszó';
-$lang['passchk'] = 'még egyszer';
-$lang['remember'] = 'Emlékezz rám';
-$lang['fullname'] = 'Teljes név';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Regisztráció';
-$lang['profile'] = 'Személyes beállÃtások';
-$lang['badlogin'] = 'Sajnáljuk, az azonosÃtó, vagy a jelszó nem jó.';
-$lang['minoredit'] = 'Apróbb változások';
-$lang['draftdate'] = 'Piszkozat elmentve:';
-$lang['regmissing'] = 'Sajnáljuk, az összes mezÅt ki kell töltened.';
-$lang['reguexists'] = 'Sajnáljuk, ilyen azonosÃtójú felhasználónk már van.';
-$lang['regsuccess'] = 'A felhasználói azonosÃtót létrehoztuk. A jelszót postáztuk.';
-$lang['regsuccess2'] = 'A felhasználói azonosÃtót létrehoztuk.';
-$lang['regmailfail'] = 'Ãgy tűnik hiba történt a jelszó postázása során. Kérjük lépj kapcsolatba a Wiki-gazdával!!';
-$lang['regbadmail'] = 'A megadott e-mail cÃm érvénytelennek tűnik. Ha úgy gondolod ez hiba, lépj kapcsolatba Wiki-gazdával!';
-$lang['regbadpass'] = 'A két megadott jelszó nem egyezik, próbáld újra!';
-$lang['regpwmail'] = 'A DokuWiki jelszavad';
-$lang['reghere'] = 'Még nincs azonosÃtód? Itt kérhetsz';
-$lang['profna'] = 'Ez a wiki nem támogatja a személyes beállÃtások módosÃtását.';
-$lang['profnochange'] = 'Nem történt változás.';
-$lang['profnoempty'] = 'A név és e-mail mezŠnem maradhat üresen!';
-$lang['profchanged'] = 'A személyes beállÃtások változtatása megtörtént.';
-$lang['pwdforget'] = 'Elfelejtetted a jelszavad? Itt kérhetsz újat';
-$lang['resendna'] = 'Ez a wiki nem támogatja a jelszó újraküldést.';
-$lang['resendpwd'] = 'Ãj jelszó kiküldése ennek a felhasználónak';
-$lang['resendpwdmissing'] = 'Sajnáljuk, az összes mezÅt ki kell töltened.';
-$lang['resendpwdnouser'] = 'Sajnáljuk, ilyen azonosÃtójú felhasználónk nem létezik.';
-$lang['resendpwdbadauth'] = 'Sajnáljuk, ez a megerÅsÃtÅ kód nem helyes. Biztos, hogy a teljes megerÅsÃtés linket beÃrtad pontosan?';
-$lang['resendpwdconfirm'] = 'A megerÅsÃtés linket e-mailben elküldtük.';
-$lang['resendpwdsuccess'] = 'Az új jelszavadat elküldtük e-mailben.';
-$lang['txt_upload'] = 'Válaszd ki a feltöltendŠfájlt';
-$lang['txt_filename'] = 'feltöltési név (elhagyható)';
-$lang['txt_overwrt'] = 'LétezÅ fájl felülÃrása';
-$lang['lockedby'] = 'Jelenleg zárolta:';
-$lang['lockexpire'] = 'A zárolás lejár:';
-$lang['willexpire'] = 'Az oldalszerkesztési zárolásod körülbelül egy percen belül lejár.\nAz ütközések elkerülése végett használd az elÅnézet gombot a zárolási idÅzÃtés frissÃtéséhez.';
-$lang['notsavedyet'] = 'Elmentetlen változások vannak, amelyek el fognak veszni.\nTényleg ezt akarod?';
-$lang['rssfailed'] = 'Hiba történt ennek a betöltésekor: ';
-$lang['nothingfound'] = 'Semmit sem találtam.';
-$lang['mediaselect'] = 'Médiafájl kiválasztása';
-$lang['fileupload'] = 'Médiafájl feltöltése';
-$lang['uploadsucc'] = 'A feltöltés sikerült';
-$lang['uploadfail'] = 'A feltöltés nem sikerült. Talán rosszak a jogosultságok?';
-$lang['uploadwrong'] = 'A feltölés megtagadva. Ez a fájl kiterjesztés tiltott.';
-$lang['uploadexist'] = 'A fájl már létezik, nem történt semmi.';
-$lang['uploadbadcontent'] = 'A feltöltött tartalom nem egyezik a %s fájl kiterjesztéssel.';
-$lang['uploadspam'] = 'A feltöltést visszautasÃtottuk spam-gyanú miatt.';
-$lang['uploadxss'] = 'A feltöltést visszautasÃtottuk, mert lehetséges, hogy kártékony kódot tartalmaz.';
-$lang['deletesucc'] = 'A "%s" fájlt töröltük.';
-$lang['deletefail'] = 'A "%s" fájl nem törölhetÅ. - EllenÅrizd a jogosultságokat!';
-$lang['mediainuse'] = 'A "%s" fájl nem törlÅdött - még használat alatt van.';
-$lang['namespaces'] = 'Névtér';
-$lang['mediafiles'] = 'ElérhetŠfájlok itt:';
-$lang['js']['keepopen'] = 'Tartsd nyitva ezt az ablakot a kijelöléshez!';
-$lang['js']['hidedetails'] = 'Részletek elrejtése';
-$lang['mediausage'] = 'A következŠformában hivatkozhatsz erre az állományra:';
-$lang['mediaview'] = 'Eredeti állomány megtekintése';
-$lang['mediaroot'] = 'kiindulási hely';
-$lang['mediaupload'] = 'Itt tölthetsz fel állományt az aktuális névtérbe. Al-névtér létrehozásához a "Feltöltési név" mezÅben kell kettÅsponttal elválasztva megadnod azt.';
-$lang['mediaextchange'] = 'Az álllomány kiterjesztése errÅl: .%s erre: .%s változott!';
-$lang['reference'] = 'Hivatkozások';
-$lang['ref_inuse'] = 'A fájl nem törölhetÅ, mert a következÅ oldalakon használják:';
-$lang['ref_hidden'] = 'Van néhány hivatkozás az oldalakon, amelyekhez nincs olvasási jogosultságod';
-$lang['hits'] = 'Találatok';
-$lang['quickhits'] = 'IlleszkedÅ oldalnevek';
-$lang['toc'] = 'Tartalomjegyzék';
-$lang['current'] = 'aktuális';
-$lang['yours'] = 'A te változatod';
-$lang['diff'] = 'a különbségeket mutatja az aktuális változathoz képest';
-$lang['diff2'] = 'a különbségeket mutatja a kiválasztott változatok között';
-$lang['line'] = 'sorszám';
-$lang['breadcrumb'] = 'Nyomvonal';
-$lang['youarehere'] = 'Itt vagy';
-$lang['lastmod'] = 'Utolsó módosÃtás';
-$lang['by'] = 'szerkesztette:';
-$lang['deleted'] = 'eltávolÃtva';
-$lang['created'] = 'létrehozva';
-$lang['restored'] = 'az elÅzÅ változat helyreállÃtva';
-$lang['external_edit'] = 'külsŠszerkesztés';
-$lang['summary'] = 'A változások összefoglalása';
-$lang['mail_newpage'] = 'új oldal jött létre:';
-$lang['mail_changed'] = 'oldal megváltozott:';
-$lang['mail_new_user'] = 'Ãj felhasználó:';
-$lang['mail_upload'] = 'állományt töltöttek fel:';
-$lang['nosmblinks'] = 'A Windows megosztott könyvtárak kereszthivatkozása csak Microsoft Internet Explorerben működik közvetlenül.\nA hivatkozást másolni és beszúrni ettÅl fügetlenül mndig tudod.';
-$lang['qb_alert'] = 'Ãrd be a formázandó szöveget.\nEz a dokumentum szövegének végéhez fog hozzáadódni.';
-$lang['qb_bold'] = 'Félkövér szöveg';
-$lang['qb_italic'] = 'DÅlt szöveg';
-$lang['qb_underl'] = 'Aláhúzott szöveg';
-$lang['qb_code'] = 'Forráskód szöveg';
-$lang['qb_strike'] = 'Ãthúzott szöveg';
-$lang['qb_h1'] = '1. szÃntű cÃmsor';
-$lang['qb_h2'] = '2. szÃntű cÃmsor';
-$lang['qb_h3'] = '3. szÃntű cÃmsor';
-$lang['qb_h4'] = '4. szÃntű cÃmsor';
-$lang['qb_h5'] = '5. szÃntű cÃmsor';
-$lang['qb_link'] = 'BelsŠhivatkozás';
-$lang['qb_extlink'] = 'KülsŠhivatkozás';
-$lang['qb_hr'] = 'VÃzszintes elválasztó vonal';
-$lang['qb_ol'] = 'Sorszámozott lista elem';
-$lang['qb_ul'] = 'Felsorolás lista elem';
-$lang['qb_media'] = 'Képek és más fájlok hozzáadása';
-$lang['qb_sig'] = 'AláÃrás beszúrása';
-$lang['qb_smileys'] = 'Szmájlik';
-$lang['qb_chars'] = 'Speciális karakterek';
-$lang['del_confirm'] = 'Valóban törölni akarod a kiválasztott elem(ek)et?';
-$lang['admin_register'] = 'Ãj felhasználó';
-$lang['metaedit'] = 'Meta-adatok szerkesztése';
-$lang['metasaveerr'] = 'A meta-adatok Ãrása meghiúsult ';
-$lang['metasaveok'] = 'Meta-adatok elmentve';
-$lang['img_backto'] = 'Vissza';
-$lang['img_title'] = 'CÃm';
-$lang['img_caption'] = 'KépaláÃrás';
-$lang['img_date'] = 'Dátum';
-$lang['img_fname'] = 'Fájlnév';
-$lang['img_fsize'] = 'Méret';
-$lang['img_artist'] = 'KészÃtette';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formátum';
-$lang['img_camera'] = 'FényképezÅ tÃpusa';
-$lang['img_keywords'] = 'Kulcsszavak';
-$lang['subscribe_success'] = '%s feliratkozott a(z) %s oldal változás-követÅ hÃrlevelére';
-$lang['subscribe_error'] = 'Hiba történt, miközben %s feliratkozni próbált a(z) %s oldal változás-követÅ hÃrlevelére';
-$lang['subscribe_noaddress'] = 'Nincs beállÃtva az e-mail cÃmed, Ãgy nem tudsz feliratkozni az oldal változás-követÅ hÃrlevelére';
-$lang['unsubscribe_success'] = '%s leiratkozott az oldal változás-követÅ hÃrlevelérÅl';
-$lang['unsubscribe_error'] = 'Hiba történt, miközben %s leiratkozni próbált az oldal változás-követÅ hÃrlevelérÅl';
-$lang['authmodfailed'] = 'Hibás felhasználó-aznosÃtási módszer van beállÃtva. Légy szÃves értesÃtsd a Wiki-gazdát!';
-$lang['authtempfail'] = 'A felhasználó azonosÃtás átmenetileg nem működik. Ha sokáig Ãgy lenne, légy szÃves értesÃtsd a Wiki-gazdát!';
-$lang['i_chooselang'] = 'Válassz nyelvet';
-$lang['i_installer'] = 'DokuWiki BeállÃtó Varázsló';
-$lang['i_wikiname'] = 'A Wiki neve';
-$lang['i_enableacl'] = 'Hozzáférési listák engedélyezése (ajánlott)';
-$lang['i_superuser'] = 'Wiki-gazda';
-$lang['i_problems'] = 'A BeállÃtó Varázsló a következÅ problémák miatt megakadt. Nem tudjuk folytatni, amÃg ezek nincsenek elhárÃtva!';
-$lang['i_modified'] = 'Biztonsági okokból ez a Varázsló csak új és módosÃtatlan DokuWiki változaton működik.
-Csomagold ki újra a fájlokat a letöltött csomagból, vagy nézd meg a teljes <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki telepÃtési útmutatót</a>.';
-$lang['i_funcna'] = 'A <code>%s</code> PHP funkció nem elérhetÅ. Esetleg a tárhelyszolgáltató letiltotta biztonsági okok miatt?';
-$lang['i_phpver'] = 'A PHP <code>%s</code> verziója alacsonyabb, mint ami szükséges lenne: <code>%s</code>. FrissÃtsd a PHP-det újabb verzióra!';
-$lang['i_permfail'] = 'A DokiWiki nem tudja Ãrni a <code>%s</code> könyvtárat. Be kell állÃtanod ehhez a könyvtárhoz a megfelelÅ jogosultságokat!';
-$lang['i_confexists'] = '<code>%s</code> már létezik.';
-$lang['i_writeerr'] = 'Nem tudom ezt létrehozni: <code>%s</code>. EllenÅrizd a könyvtár/fájl jogosultságokat, és hozd létre az állományt kézzel.';
-$lang['i_badhash'] = 'A dokuwiki.php nem felismerhetÅ vagy módosÃtott (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - nem helyes vagy üres érték';
-$lang['i_success'] = 'A beállÃtás sikeresen befejezÅdött. Most már letörölhetÅ az install.php fájl. Látogasd meg az <a href="doku.php">új DokuWikidet</a>!';
-$lang['i_failure'] = 'Hiba lépett fel a konfigurációs állományok Ãrásakor. Ki kell javÃtanod kézzel, mielÅtt használni kezded az <a href="doku.php">új DokuWikidet</a>.';
-$lang['i_policy'] = 'Kezdeti hozzáférési politika';
-$lang['i_pol0'] = 'Nyitott Wiki (mindenki olvashatja, Ãrhatja, és fájlokat tölthet fel)';
-$lang['i_pol1'] = 'Publikus Wiki (mindenki olvashatja, de csak regisztrált felhasználók Ãrhatják, és tölthetnek fel fáljokat)';
-$lang['i_pol2'] = 'Zárt Wiki (csak regisztrált felhasználók olvashatják, Ãrhatják és tölthetnek fel fájlokat)';
-$lang['i_retry'] = 'Ãjra';
+<?php
+/**
+ * Hungarian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Ziegler Gábor <gziegler at freemail.hu>
+ * @author Sandor TIHANYI <stihanyi at gmail.com>
+ * @author SandorTIHANYI <stihanyi at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Oldal szerkesztése';
+$lang['btn_source'] = 'Oldalforrás megtekintése';
+$lang['btn_show'] = 'Oldal megtekintése';
+$lang['btn_create'] = 'Oldal létrehozása';
+$lang['btn_search'] = 'Keresés';
+$lang['btn_save'] = 'Mentés';
+$lang['btn_preview'] = 'ElÅnézet';
+$lang['btn_top'] = 'Vissza a tetejére';
+$lang['btn_newer'] = '<< Ãjabb változat';
+$lang['btn_older'] = 'Régebbi változat >>';
+$lang['btn_revs'] = 'Korábbi változatok';
+$lang['btn_recent'] = 'Legfrissebb változások';
+$lang['btn_upload'] = 'Feltöltés';
+$lang['btn_cancel'] = 'Mégsem';
+$lang['btn_index'] = 'ÃttekintÅ';
+$lang['btn_secedit'] = 'Szerkesztés';
+$lang['btn_login'] = 'Bejelentkezés';
+$lang['btn_logout'] = 'Kijelentkezés';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'FrissÃtés';
+$lang['btn_delete'] = 'Törlés';
+$lang['btn_back'] = 'Vissza';
+$lang['btn_backlink'] = 'Hivatkozások';
+$lang['btn_backtomedia'] = 'Vissza a médiafájlok kezeléséhez';
+$lang['btn_subscribe'] = 'Oldalváltozások-hÃrlevél feliratkozás';
+$lang['btn_unsubscribe'] = 'Oldalváltozások-hÃrlevél leiratkozás';
+$lang['btn_subscribens'] = 'Névtér-változás hÃrlevél feliratkozás';
+$lang['btn_unsubscribens'] = 'Névtér-változás hÃrlevél leiratkozás';
+$lang['btn_profile'] = 'Személyes beállÃtások';
+$lang['btn_reset'] = 'Alaphelyzet';
+$lang['btn_resendpwd'] = 'Ãj jelszó küldése';
+$lang['btn_draft'] = 'Piszkozat szerkesztése';
+$lang['btn_recover'] = 'Piszkozat folytatása';
+$lang['btn_draftdel'] = 'Piszkozat törlése';
+$lang['loggedinas'] = 'Belépett felhasználó: ';
+$lang['user'] = 'AzonosÃtó';
+$lang['pass'] = 'Jelszó';
+$lang['newpass'] = 'Ãj jelszó';
+$lang['oldpass'] = 'Régi jelszó';
+$lang['passchk'] = 'még egyszer';
+$lang['remember'] = 'Emlékezz rám';
+$lang['fullname'] = 'Teljes név';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Regisztráció';
+$lang['profile'] = 'Személyes beállÃtások';
+$lang['badlogin'] = 'Sajnáljuk, az azonosÃtó, vagy a jelszó nem jó.';
+$lang['minoredit'] = 'Apróbb változások';
+$lang['draftdate'] = 'Piszkozat elmentve:';
+$lang['regmissing'] = 'Sajnáljuk, az összes mezÅt ki kell töltened.';
+$lang['reguexists'] = 'Sajnáljuk, ilyen azonosÃtójú felhasználónk már van.';
+$lang['regsuccess'] = 'A felhasználói azonosÃtót létrehoztuk. A jelszót postáztuk.';
+$lang['regsuccess2'] = 'A felhasználói azonosÃtót létrehoztuk.';
+$lang['regmailfail'] = 'Ãgy tűnik hiba történt a jelszó postázása során. Kérjük lépj kapcsolatba a Wiki-gazdával!!';
+$lang['regbadmail'] = 'A megadott e-mail cÃm érvénytelennek tűnik. Ha úgy gondolod ez hiba, lépj kapcsolatba Wiki-gazdával!';
+$lang['regbadpass'] = 'A két megadott jelszó nem egyezik, próbáld újra!';
+$lang['regpwmail'] = 'A DokuWiki jelszavad';
+$lang['reghere'] = 'Még nincs azonosÃtód? Itt kérhetsz';
+$lang['profna'] = 'Ez a wiki nem támogatja a személyes beállÃtások módosÃtását.';
+$lang['profnochange'] = 'Nem történt változás.';
+$lang['profnoempty'] = 'A név és e-mail mezŠnem maradhat üresen!';
+$lang['profchanged'] = 'A személyes beállÃtások változtatása megtörtént.';
+$lang['pwdforget'] = 'Elfelejtetted a jelszavad? Itt kérhetsz újat';
+$lang['resendna'] = 'Ez a wiki nem támogatja a jelszó újraküldést.';
+$lang['resendpwd'] = 'Ãj jelszó kiküldése ennek a felhasználónak';
+$lang['resendpwdmissing'] = 'Sajnáljuk, az összes mezÅt ki kell töltened.';
+$lang['resendpwdnouser'] = 'Sajnáljuk, ilyen azonosÃtójú felhasználónk nem létezik.';
+$lang['resendpwdbadauth'] = 'Sajnáljuk, ez a megerÅsÃtÅ kód nem helyes. Biztos, hogy a teljes megerÅsÃtés linket beÃrtad pontosan?';
+$lang['resendpwdconfirm'] = 'A megerÅsÃtés linket e-mailben elküldtük.';
+$lang['resendpwdsuccess'] = 'Az új jelszavadat elküldtük e-mailben.';
+$lang['txt_upload'] = 'Válaszd ki a feltöltendŠfájlt';
+$lang['txt_filename'] = 'feltöltési név (elhagyható)';
+$lang['txt_overwrt'] = 'LétezÅ fájl felülÃrása';
+$lang['lockedby'] = 'Jelenleg zárolta:';
+$lang['lockexpire'] = 'A zárolás lejár:';
+$lang['willexpire'] = 'Az oldalszerkesztési zárolásod körülbelül egy percen belül lejár.\nAz ütközések elkerülése végett használd az elÅnézet gombot a zárolási idÅzÃtés frissÃtéséhez.';
+$lang['notsavedyet'] = 'Elmentetlen változások vannak, amelyek el fognak veszni.\nTényleg ezt akarod?';
+$lang['rssfailed'] = 'Hiba történt ennek a betöltésekor: ';
+$lang['nothingfound'] = 'Semmit sem találtam.';
+$lang['mediaselect'] = 'Médiafájl kiválasztása';
+$lang['fileupload'] = 'Médiafájl feltöltése';
+$lang['uploadsucc'] = 'A feltöltés sikerült';
+$lang['uploadfail'] = 'A feltöltés nem sikerült. Talán rosszak a jogosultságok?';
+$lang['uploadwrong'] = 'A feltölés megtagadva. Ez a fájl kiterjesztés tiltott.';
+$lang['uploadexist'] = 'A fájl már létezik, nem történt semmi.';
+$lang['uploadbadcontent'] = 'A feltöltött tartalom nem egyezik a %s fájl kiterjesztéssel.';
+$lang['uploadspam'] = 'A feltöltést visszautasÃtottuk spam-gyanú miatt.';
+$lang['uploadxss'] = 'A feltöltést visszautasÃtottuk, mert lehetséges, hogy kártékony kódot tartalmaz.';
+$lang['deletesucc'] = 'A "%s" fájlt töröltük.';
+$lang['deletefail'] = 'A "%s" fájl nem törölhetÅ. - EllenÅrizd a jogosultságokat!';
+$lang['mediainuse'] = 'A "%s" fájl nem törlÅdött - még használat alatt van.';
+$lang['namespaces'] = 'Névtér';
+$lang['mediafiles'] = 'ElérhetŠfájlok itt:';
+$lang['js']['keepopen'] = 'Tartsd nyitva ezt az ablakot a kijelöléshez!';
+$lang['js']['hidedetails'] = 'Részletek elrejtése';
+$lang['mediausage'] = 'A következŠformában hivatkozhatsz erre az állományra:';
+$lang['mediaview'] = 'Eredeti állomány megtekintése';
+$lang['mediaroot'] = 'kiindulási hely';
+$lang['mediaupload'] = 'Itt tölthetsz fel állományt az aktuális névtérbe. Al-névtér létrehozásához a "Feltöltési név" mezÅben kell kettÅsponttal elválasztva megadnod azt.';
+$lang['mediaextchange'] = 'Az álllomány kiterjesztése errÅl: .%s erre: .%s változott!';
+$lang['reference'] = 'Hivatkozások';
+$lang['ref_inuse'] = 'A fájl nem törölhetÅ, mert a következÅ oldalakon használják:';
+$lang['ref_hidden'] = 'Van néhány hivatkozás az oldalakon, amelyekhez nincs olvasási jogosultságod';
+$lang['hits'] = 'Találatok';
+$lang['quickhits'] = 'IlleszkedÅ oldalnevek';
+$lang['toc'] = 'Tartalomjegyzék';
+$lang['current'] = 'aktuális';
+$lang['yours'] = 'A te változatod';
+$lang['diff'] = 'a különbségeket mutatja az aktuális változathoz képest';
+$lang['diff2'] = 'a különbségeket mutatja a kiválasztott változatok között';
+$lang['line'] = 'sorszám';
+$lang['breadcrumb'] = 'Nyomvonal';
+$lang['youarehere'] = 'Itt vagy';
+$lang['lastmod'] = 'Utolsó módosÃtás';
+$lang['by'] = 'szerkesztette:';
+$lang['deleted'] = 'eltávolÃtva';
+$lang['created'] = 'létrehozva';
+$lang['restored'] = 'az elÅzÅ változat helyreállÃtva';
+$lang['external_edit'] = 'külsŠszerkesztés';
+$lang['summary'] = 'A változások összefoglalása';
+$lang['mail_newpage'] = 'új oldal jött létre:';
+$lang['mail_changed'] = 'oldal megváltozott:';
+$lang['mail_new_user'] = 'Ãj felhasználó:';
+$lang['mail_upload'] = 'állományt töltöttek fel:';
+$lang['nosmblinks'] = 'A Windows megosztott könyvtárak kereszthivatkozása csak Microsoft Internet Explorerben működik közvetlenül.\nA hivatkozást másolni és beszúrni ettÅl fügetlenül mndig tudod.';
+$lang['qb_alert'] = 'Ãrd be a formázandó szöveget.\nEz a dokumentum szövegének végéhez fog hozzáadódni.';
+$lang['qb_bold'] = 'Félkövér szöveg';
+$lang['qb_italic'] = 'DÅlt szöveg';
+$lang['qb_underl'] = 'Aláhúzott szöveg';
+$lang['qb_code'] = 'Forráskód szöveg';
+$lang['qb_strike'] = 'Ãthúzott szöveg';
+$lang['qb_h1'] = '1. szÃntű cÃmsor';
+$lang['qb_h2'] = '2. szÃntű cÃmsor';
+$lang['qb_h3'] = '3. szÃntű cÃmsor';
+$lang['qb_h4'] = '4. szÃntű cÃmsor';
+$lang['qb_h5'] = '5. szÃntű cÃmsor';
+$lang['qb_link'] = 'BelsŠhivatkozás';
+$lang['qb_extlink'] = 'KülsŠhivatkozás';
+$lang['qb_hr'] = 'VÃzszintes elválasztó vonal';
+$lang['qb_ol'] = 'Sorszámozott lista elem';
+$lang['qb_ul'] = 'Felsorolás lista elem';
+$lang['qb_media'] = 'Képek és más fájlok hozzáadása';
+$lang['qb_sig'] = 'AláÃrás beszúrása';
+$lang['qb_smileys'] = 'Szmájlik';
+$lang['qb_chars'] = 'Speciális karakterek';
+$lang['del_confirm'] = 'Valóban törölni akarod a kiválasztott elem(ek)et?';
+$lang['admin_register'] = 'Ãj felhasználó';
+$lang['metaedit'] = 'Meta-adatok szerkesztése';
+$lang['metasaveerr'] = 'A meta-adatok Ãrása meghiúsult ';
+$lang['metasaveok'] = 'Meta-adatok elmentve';
+$lang['img_backto'] = 'Vissza';
+$lang['img_title'] = 'CÃm';
+$lang['img_caption'] = 'KépaláÃrás';
+$lang['img_date'] = 'Dátum';
+$lang['img_fname'] = 'Fájlnév';
+$lang['img_fsize'] = 'Méret';
+$lang['img_artist'] = 'KészÃtette';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Formátum';
+$lang['img_camera'] = 'FényképezÅ tÃpusa';
+$lang['img_keywords'] = 'Kulcsszavak';
+$lang['subscribe_success'] = '%s feliratkozott a(z) %s oldal változás-követÅ hÃrlevelére';
+$lang['subscribe_error'] = 'Hiba történt, miközben %s feliratkozni próbált a(z) %s oldal változás-követÅ hÃrlevelére';
+$lang['subscribe_noaddress'] = 'Nincs beállÃtva az e-mail cÃmed, Ãgy nem tudsz feliratkozni az oldal változás-követÅ hÃrlevelére';
+$lang['unsubscribe_success'] = '%s leiratkozott az oldal változás-követÅ hÃrlevelérÅl';
+$lang['unsubscribe_error'] = 'Hiba történt, miközben %s leiratkozni próbált az oldal változás-követÅ hÃrlevelérÅl';
+$lang['authmodfailed'] = 'Hibás felhasználó-aznosÃtási módszer van beállÃtva. Légy szÃves értesÃtsd a Wiki-gazdát!';
+$lang['authtempfail'] = 'A felhasználó azonosÃtás átmenetileg nem működik. Ha sokáig Ãgy lenne, légy szÃves értesÃtsd a Wiki-gazdát!';
+$lang['i_chooselang'] = 'Válassz nyelvet';
+$lang['i_installer'] = 'DokuWiki BeállÃtó Varázsló';
+$lang['i_wikiname'] = 'A Wiki neve';
+$lang['i_enableacl'] = 'Hozzáférési listák engedélyezése (ajánlott)';
+$lang['i_superuser'] = 'Wiki-gazda';
+$lang['i_problems'] = 'A BeállÃtó Varázsló a következÅ problémák miatt megakadt. Nem tudjuk folytatni, amÃg ezek nincsenek elhárÃtva!';
+$lang['i_modified'] = 'Biztonsági okokból ez a Varázsló csak új és módosÃtatlan DokuWiki változaton működik.
+Csomagold ki újra a fájlokat a letöltött csomagból, vagy nézd meg a teljes <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki telepÃtési útmutatót</a>.';
+$lang['i_funcna'] = 'A <code>%s</code> PHP funkció nem elérhetÅ. Esetleg a tárhelyszolgáltató letiltotta biztonsági okok miatt?';
+$lang['i_phpver'] = 'A PHP <code>%s</code> verziója alacsonyabb, mint ami szükséges lenne: <code>%s</code>. FrissÃtsd a PHP-det újabb verzióra!';
+$lang['i_permfail'] = 'A DokiWiki nem tudja Ãrni a <code>%s</code> könyvtárat. Be kell állÃtanod ehhez a könyvtárhoz a megfelelÅ jogosultságokat!';
+$lang['i_confexists'] = '<code>%s</code> már létezik.';
+$lang['i_writeerr'] = 'Nem tudom ezt létrehozni: <code>%s</code>. EllenÅrizd a könyvtár/fájl jogosultságokat, és hozd létre az állományt kézzel.';
+$lang['i_badhash'] = 'A dokuwiki.php nem felismerhetÅ vagy módosÃtott (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - nem helyes vagy üres érték';
+$lang['i_success'] = 'A beállÃtás sikeresen befejezÅdött. Most már letörölhetÅ az install.php fájl. Látogasd meg az <a href="doku.php">új DokuWikidet</a>!';
+$lang['i_failure'] = 'Hiba lépett fel a konfigurációs állományok Ãrásakor. Ki kell javÃtanod kézzel, mielÅtt használni kezded az <a href="doku.php">új DokuWikidet</a>.';
+$lang['i_policy'] = 'Kezdeti hozzáférési politika';
+$lang['i_pol0'] = 'Nyitott Wiki (mindenki olvashatja, Ãrhatja, és fájlokat tölthet fel)';
+$lang['i_pol1'] = 'Publikus Wiki (mindenki olvashatja, de csak regisztrált felhasználók Ãrhatják, és tölthetnek fel fáljokat)';
+$lang['i_pol2'] = 'Zárt Wiki (csak regisztrált felhasználók olvashatják, Ãrhatják és tölthetnek fel fájlokat)';
+$lang['i_retry'] = 'Ãjra';
Modified: site/trunk/www-root/wiki/inc/lang/hu/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Az oldal zárolva ======
-
-Ezt az oldalt épp szerkeszti egy másik felhasználó. Várnod kell, amÃg
-a másik felhasználó befejezi, vagy amÃg a zárolási idÅzÃtÅ le nem jár.
-
+====== Az oldal zárolva ======
+
+Ezt az oldalt épp szerkeszti egy másik felhasználó. Várnod kell, amÃg
+a másik felhasználó befejezi, vagy amÃg a zárolási idÅzÃtÅ le nem jár.
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Belépés ======
-
-Nem vagy bejelentkezve! Add meg az azonosÃtási adataid a belépéshez lentebb!
-A böngészÅdben engedélyezned kell a sütik (cookies) fogadását a belépéshez.
-
-
+====== Belépés ======
+
+Nem vagy bejelentkezve! Add meg az azonosÃtási adataid a belépéshez lentebb!
+A böngészÅdben engedélyezned kell a sütik (cookies) fogadását a belépéshez.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-A DokuWikidben egy oldalt létrejött, vagy megváltozott. A részletek:
-
-Dátum: @DATE@
-BöngészÅ: @BROWSER@
-IP-cÃm: @IPADDRESS@
-Gép neve: @HOSTNAME@
-ElÅzÅ változat: @OLDPAGE@
-Ãj változat: @NEWPAGE@
-Ãsszefoglaló: @SUMMARY@
-Felhasználó: @USER@
-
- at DIFF@
-
-
---
-Ezt a levelet a @DOKUWIKIURL@ DokuWiki generálta.
+A DokuWikidben egy oldalt létrejött, vagy megváltozott. A részletek:
+
+Dátum: @DATE@
+BöngészÅ: @BROWSER@
+IP-cÃm: @IPADDRESS@
+Gép neve: @HOSTNAME@
+ElÅzÅ változat: @OLDPAGE@
+Ãj változat: @NEWPAGE@
+Ãsszefoglaló: @SUMMARY@
+Felhasználó: @USER@
+
+ at DIFF@
+
+
+--
+Ezt a levelet a @DOKUWIKIURL@ DokuWiki generálta.
Modified: site/trunk/www-root/wiki/inc/lang/hu/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Ilyen oldal még nem létezik======
-
+======Ilyen oldal még nem létezik======
+
Egy nem létezŠoldalra tévedtél. Létrehozhatod az ''Oldal létrehozása'' gombra kattintva.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hu/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Nincs ilyen változat======
-
-A megadott változat nem létezik. Használd az ''ElÅzÅ változatok'' nyomógombot az elÅzmények listájának megtekintéséhez.
-
-
+======Nincs ilyen változat======
+
+A megadott változat nem létezik. Használd az ''ElÅzÅ változatok'' nyomógombot az elÅzmények listájának megtekintéséhez.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Kedves @FULLNAME@!
-
-A felhasználói adataid a @TITLE@ wikihez, a következŠhelyen: @DOKUWIKIURL@
-
-AzonosÃtó: @LOGIN@
-Jelszó: @PASSWORD@
-
---
-Ezt a levelet @DOKUWIKIURL@ DokuWiki generálta.
-
+Kedves @FULLNAME@!
+
+A felhasználói adataid a @TITLE@ wikihez, a következŠhelyen: @DOKUWIKIURL@
+
+AzonosÃtó: @LOGIN@
+Jelszó: @PASSWORD@
+
+--
+Ezt a levelet @DOKUWIKIURL@ DokuWiki generálta.
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ElÅnézet======
-
-Ez a szöveged elÅnézete, Ãgy fog kinézni. Figyelj jól: ez **még nincs elmentve**!
-
+======ElÅnézet======
+
+Ez a szöveged elÅnézete, Ãgy fog kinézni. Figyelj jól: ez **még nincs elmentve**!
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Szia @FULLNAME@!
-
-Te vagy más valaki kért egy új jelszót a @DOKUWIKIURL@
-cÃmen lévÅ @TITLE@ wiki felhasználódhoz.
-
-Ha nem kértél ilyet, hagyd figyelmen kÃvül ezt a levelet.
-
-Ha Te voltál, az új jelszó kérelmed megerÅsÃtéséhez a
-következÅ linkre kattints, vagy másold a böngészÅdbe:
-
- at CONFIRM@
-
---
-Ezt a levelet a @DOKUWIKIURL@ cÃmen lévÅ DokuWiki generálta.
+Szia @FULLNAME@!
+
+Te vagy más valaki kért egy új jelszót a @DOKUWIKIURL@
+cÃmen lévÅ @TITLE@ wiki felhasználódhoz.
+
+Ha nem kértél ilyet, hagyd figyelmen kÃvül ezt a levelet.
+
+Ha Te voltál, az új jelszó kérelmed megerÅsÃtéséhez a
+következÅ linkre kattints, vagy másold a böngészÅdbe:
+
+ at CONFIRM@
+
+--
+Ezt a levelet a @DOKUWIKIURL@ cÃmen lévÅ DokuWiki generálta.
Modified: site/trunk/www-root/wiki/inc/lang/hu/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Ez az oldal csak olvasható. Megtekintheted a forrását, de nem változtathatod meg. Ha úgy gondolod, hogy ez helytelen, kérdezd a Wiki-gazdát.
-
+Ez az oldal csak olvasható. Megtekintheted a forrását, de nem változtathatod meg. Ha úgy gondolod, hogy ez helytelen, kérdezd a Wiki-gazdát.
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Legutóbbi változások======
-
-Az alábbi oldalak változtak legutoljára.
-
-
+======Legutóbbi változások======
+
+Az alábbi oldalak változtak legutoljára.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Ãj felhasználó regisztrálása ======
-
-Töltsd ki az összes alábbi adatot az új Wiki felhasználói azonosÃtód létrehozásához.
-GyÅzÅdj meg róla, hogy **érvényes e-mail cÃmet** adtál meg -- az új jelszavad erre a cÃmre küldjük el.
-Az azonosÃtód érvényes [[doku>wiki:pagename|oldalnév]] kell legyen.
-
+====== Ãj felhasználó regisztrálása ======
+
+Töltsd ki az összes alábbi adatot az új Wiki felhasználói azonosÃtód létrehozásához.
+GyÅzÅdj meg róla, hogy **érvényes e-mail cÃmet** adtál meg -- az új jelszavad erre a cÃmre küldjük el.
+Az azonosÃtód érvényes [[doku>wiki:pagename|oldalnév]] kell legyen.
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Egy új felhasználó regisztrált a következŠadatokkal:
-
-Felhasználói név: @NEWUSER@
-Teljes név: @NEWNAME@
-E-mail: @NEWEMAIL@
-
-Dátum: @DATE@
-BöngészÅ: @BROWSER@
-IP-cÃm : @IPADDRESS@
-Gép neve: @HOSTNAME@
-
---
+Egy új felhasználó regisztrált a következŠadatokkal:
+
+Felhasználói név: @NEWUSER@
+Teljes név: @NEWNAME@
+E-mail: @NEWEMAIL@
+
+Dátum: @DATE@
+BöngészÅ: @BROWSER@
+IP-cÃm : @IPADDRESS@
+Gép neve: @HOSTNAME@
+
+--
Ezt a levelet @DOKUWIKIURL@ DokuWiki generálta.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hu/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-===== Ãj jelszó kérése =====
-
+===== Ãj jelszó kérése =====
+
Kérlek add meg a felhasználó neved az új jelszó elküldéséhez. A jelszó cseréjéhez szükséges megerÅsÃtÅ linket a regisztrált e-mail cÃmedre küldjük.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hu/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ElÅzÅ változatok======
-
-Ezek az elÅzÅ változatai az aktuális dokumentumnak. Egy elÅzÅ
-változathoz való visszatéréshez nyomd meg az ''Oldal szerkesztése'' gombot, majd mentsd el.
+======ElÅzÅ változatok======
+
+Ezek az elÅzÅ változatai az aktuális dokumentumnak. Egy elÅzÅ
+változathoz való visszatéréshez nyomd meg az ''Oldal szerkesztése'' gombot, majd mentsd el.
Modified: site/trunk/www-root/wiki/inc/lang/hu/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Keresés======
-
-A keresés eredményét lentebb láthatod. Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.
-
+======Keresés======
+
+A keresés eredményét lentebb láthatod. Ha nem találtad meg amit kerestél, akkor létrehozhatsz egy új oldalt a keresésed alapján ''Az oldal szerkesztése'' gombbal.
+
=====Eredmény(ek)=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hu/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Ez a dokumentum egy elÅzÅ változata!**
-----
+**Ez a dokumentum egy elÅzÅ változata!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/hu/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,39 +1,39 @@
-# Ez egy szó-lista (soronként egy szóval), amelyeket az index készÃtésekor nem veszünk figyelembe.
-# Ha szerkeszted ezt a fájlt, gyÅzÅdj meg arról, hogy UNIX sorvég-jeleket használj! (csak NL karakter)
-# Nincs szükség 3 karakternél rövidebb szavak felsorolására, ezeket egyébként sem vesszük figyelembe.
-# Ez a lista a http://www.ranks.nl/stopwords/ oldalon szereplŠalapján készült
-a
-az
-egy
-be
-ki
-le
-fel
-meg
-el
-át
-rá
-ide
-oda
-szét
-össze
-vissza
-de
-hát
-és
-vagy
-hogy
-van
-lesz
-volt
-csak
-nem
-igen
-mint
-én
-te
-Å
-mi
-ti
-Åk
-ön
+# Ez egy szó-lista (soronként egy szóval), amelyeket az index készÃtésekor nem veszünk figyelembe.
+# Ha szerkeszted ezt a fájlt, gyÅzÅdj meg arról, hogy UNIX sorvég-jeleket használj! (csak NL karakter)
+# Nincs szükség 3 karakternél rövidebb szavak felsorolására, ezeket egyébként sem vesszük figyelembe.
+# Ez a lista a http://www.ranks.nl/stopwords/ oldalon szereplŠalapján készült
+a
+az
+egy
+be
+ki
+le
+fel
+meg
+el
+át
+rá
+ide
+oda
+szét
+össze
+vissza
+de
+hát
+és
+vagy
+hogy
+van
+lesz
+volt
+csak
+nem
+igen
+mint
+én
+te
+Å
+mi
+ti
+Åk
+ön
Modified: site/trunk/www-root/wiki/inc/lang/hu/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-Szia!
-
-A(z) @PAGE@ oldal a(z) @TITLE@ wikiben megváltozott.
-Itt vannak a változások:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Ha le szeretnél iratkozni ennek az oldalnak a változás-követésérÅl,
-lépj be a wikibe ezen a cÃmen:
- at DOKUWIKIURL@, majd keresd meg a(z)
- at NEWPAGE@ oldalt
-és válaszd a 'Oldalváltozások-hÃrlevél leiratkozás' gombot.
-
---
-Ezt a levelet a @DOKUWIKIURL@ cÃmen lévÅ DokuWiki alkalmazás generálta.
-
+Szia!
+
+A(z) @PAGE@ oldal a(z) @TITLE@ wikiben megváltozott.
+Itt vannak a változások:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Ha le szeretnél iratkozni ennek az oldalnak a változás-követésérÅl,
+lépj be a wikibe ezen a cÃmen:
+ at DOKUWIKIURL@, majd keresd meg a(z)
+ at NEWPAGE@ oldalt
+és válaszd a 'Oldalváltozások-hÃrlevél leiratkozás' gombot.
+
+--
+Ezt a levelet a @DOKUWIKIURL@ cÃmen lévÅ DokuWiki alkalmazás generálta.
+
Modified: site/trunk/www-root/wiki/inc/lang/hu/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-===== Felhasználói adatok megváltoztatása =====
-
-Csak azt a mezÅt kell kitöltened, amit változtatni szeretnél. A felhasználói nevet nem lehet megváltoztatni.
+===== Felhasználói adatok megváltoztatása =====
+
+Csak azt a mezÅt kell kitöltened, amit változtatni szeretnél. A felhasználói nevet nem lehet megváltoztatni.
Modified: site/trunk/www-root/wiki/inc/lang/hu/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Fájlfeltöltés történt a DokuWikidben. Részletek:
-
-Ãllomány: @MEDIA@
-Dátum: @DATE@
-BöngészÅ: @BROWSER@
-IP-cÃm: @IPADDRESS@
-Gépnév: @HOSTNAME@
-Méret: @SIZE@
-MIME-tÃpus: @MIME@
-Felhasználó: @USER@
-
---
+Fájlfeltöltés történt a DokuWikidben. Részletek:
+
+Ãllomány: @MEDIA@
+Dátum: @DATE@
+BöngészÅ: @BROWSER@
+IP-cÃm: @IPADDRESS@
+Gépnév: @HOSTNAME@
+Méret: @SIZE@
+MIME-tÃpus: @MIME@
+Felhasználó: @USER@
+
+--
Ezt a levelet @DOKUWIKIURL@ DokuWiki generálta.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/hu/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/hu/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/hu/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======SPAM szűrés======
-
-A változtatásaid **nem** mentettük, mert egy vagy több tiltott szót tartalmaz. Ha kéretlen reklám anyagot ("SPAM") próbáltál erre a Wikire rakni, akkor szégyelld magad.
-
-Ha azt gondolod, hogy valami hibáról, vagy félreértésrÅl van szó,
-akkor lépj kapcsolatba a Wiki-gazdával.
-
+======SPAM szűrés======
+
+A változtatásaid **nem** mentettük, mert egy vagy több tiltott szót tartalmaz. Ha kéretlen reklám anyagot ("SPAM") próbáltál erre a Wikire rakni, akkor szégyelld magad.
+
+Ha azt gondolod, hogy valami hibáról, vagy félreértésrÅl van szó,
+akkor lépj kapcsolatba a Wiki-gazdával.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administrasi ======
-
-Berikut ini adalah daftar pekerjaan administratif yang dapat Anda temukan di DokuWiki.
-
+====== Administrasi ======
+
+Berikut ini adalah daftar pekerjaan administratif yang dapat Anda temukan di DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Backlinks ======
-
-Daftar dibawah ini adalah halaman-halaman (lain) yang terhubung ke halaman ini.
+====== Backlinks ======
+
+Daftar dibawah ini adalah halaman-halaman (lain) yang terhubung ke halaman ini.
Modified: site/trunk/www-root/wiki/inc/lang/id/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Versi terbaru telah Ada ======
-
-Versi terbaru dari dokumen yang baru saja Anda Edit telah ada. Ini terjadi ketika user lain telah selesai mengubah halaman, saat Anda sedang meng-edit.
-
-Pertimbangkan perbedaan yang ditampilkan dibawah ini, kemudian putuskan versi mana yang harus disimpan. Jika Anda memilih "Simpan", versi (tulisan terbaru) Andalah yang akan disimpan. Tekan "Batal" to menggunakan versi tulisan yang telah ada.
-
+====== Versi terbaru telah Ada ======
+
+Versi terbaru dari dokumen yang baru saja Anda Edit telah ada. Ini terjadi ketika user lain telah selesai mengubah halaman, saat Anda sedang meng-edit.
+
+Pertimbangkan perbedaan yang ditampilkan dibawah ini, kemudian putuskan versi mana yang harus disimpan. Jika Anda memilih "Simpan", versi (tulisan terbaru) Andalah yang akan disimpan. Tekan "Batal" to menggunakan versi tulisan yang telah ada.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Akses Ditolak======
-
-Maaf, Anda tidak mempunyai hak akses untuk melanjutkan. Apakah Anda belum login?
-
+======Akses Ditolak======
+
+Maaf, Anda tidak mempunyai hak akses untuk melanjutkan. Apakah Anda belum login?
+
Modified: site/trunk/www-root/wiki/inc/lang/id/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Perbedaan======
-
-Ini menunjukkan perbedaan antara versi yang terpilih dengan versi yang sedang aktif.
-
+======Perbedaan======
+
+Ini menunjukkan perbedaan antara versi yang terpilih dengan versi yang sedang aktif.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== File Draft ditemukan ======
-
-Proses pengeditan Anda sebelumnya tidak selesai dengan sempurna. DokuWiki secara otomatis meyimpan draft yang dapat Anda pakai untuk melanjutkan pengeditan. Dibawah ini Anda dapat melihat data yang disimpan pada sesi sebelumnya.
-
-Silahkan pilih jika Anda ingin //recover// sesi pengeditan terakhir atau //hapus// draft, atau //batalkan// proses pengeditan.
+====== File Draft ditemukan ======
+
+Proses pengeditan Anda sebelumnya tidak selesai dengan sempurna. DokuWiki secara otomatis meyimpan draft yang dapat Anda pakai untuk melanjutkan pengeditan. Dibawah ini Anda dapat melihat data yang disimpan pada sesi sebelumnya.
+
+Silahkan pilih jika Anda ingin //recover// sesi pengeditan terakhir atau //hapus// draft, atau //batalkan// proses pengeditan.
Modified: site/trunk/www-root/wiki/inc/lang/id/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Ubah isi halaman kemudian tekan "Simpan". Lihat [[wiki:syntax]] untuk
-sintaks-sintaks Wiki. Mohon edit/ubah halaman sesuai dengan judul halamannya. Bila Anda masih ragu untuk menulis di halaman ini, silahkan bermain-main di [[playground:playground|tamanbermain]].
-
+Ubah isi halaman kemudian tekan "Simpan". Lihat [[wiki:syntax]] untuk
+sintaks-sintaks Wiki. Mohon edit/ubah halaman sesuai dengan judul halamannya. Bila Anda masih ragu untuk menulis di halaman ini, silahkan bermain-main di [[playground:playground|tamanbermain]].
+
Modified: site/trunk/www-root/wiki/inc/lang/id/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Anda telah membuka dokumen versi lama!** Jika menyimpannya, berarti Anda akan membuat versi baru dari data ini.
+**Anda telah membuka dokumen versi lama!** Jika menyimpannya, berarti Anda akan membuat versi baru dari data ini.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/id/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Index ======
-
-Berikut ini adalah index dari keseluruhan halaman yang ada, diurutkan berdasar [[doku>wiki:namespaces|namespaces]].
-
+====== Index ======
+
+Berikut ini adalah index dari keseluruhan halaman yang ada, diurutkan berdasar [[doku>wiki:namespaces|namespaces]].
+
Modified: site/trunk/www-root/wiki/inc/lang/id/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,25 +1,25 @@
-<p>Halaman ini membatu Anda dalam proses instalasi dan konfigurasi pertama kali
-untuk <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Informasi lebih lanjut
-tentang alat instalasi ini tersedia dalam
-<a href="http://wiki.splitbrain.org/wiki:installer">halaman dokumentasi</a> sendiri.</p>
-
-<p>DokuWIki menggunakan berkas biasa sebagai media penyimpanan halaman wiki
-dan informasi lainnya yang berhubungan dengan halaman tersebut (contoh: gambar,
-indeks pencarian, revisi lama, dll). Agar bisa menggunakannya DokuWiki
-<strong>harus</strong> memiliki hak akses tulis pada direktori yang menyimpan
-berkas-berkas tersebut. Alat instalasi ini tidak dapat melakukan perubahan
-konfigurasi hak akses pada direktori. Biasanya harus menggunakan command shell
-atau jika Anda pengguna layanan hosting, melalui FTP atau control panel layanan
-hosting Anda (misalnya: cPanel). </p>
-
-Alat instalasi ini akan mengatur konfigurasi DokuWiki Anda untuk
-<acronym title="access control list">ACL</acronym>, yang selanjutnya akan
-memperbolehkan administrator untuk login dan mengakses menu Admin DokuWiki
-untuk menginstal plugin, mengatur pengguna (user), mengatur hak akses ke
-halaman wiki dan perubahan konfigurasi. Ini tidak diawajibkan dalam pengoperasian
-DokuWiki, tetapi dapat membuat DokuWiki lebih mudah untuk dipelihara.
-
-Pengguna berpengalaman atau pengguna dengan kebutuhan instalasi khusus silahkan
-melihat link <a href="http://wiki.splitbrain.org/wiki:install">Panduan Instalasi</a>
-and <a href="http://wiki.splitbrain.org/wiki:config">Konfigurasi WIki</a>.
-untuk hal-hal yang berhubungan dengan instalasi dan konfigurasi.</p>
+<p>Halaman ini membatu Anda dalam proses instalasi dan konfigurasi pertama kali
+untuk <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Informasi lebih lanjut
+tentang alat instalasi ini tersedia dalam
+<a href="http://wiki.splitbrain.org/wiki:installer">halaman dokumentasi</a> sendiri.</p>
+
+<p>DokuWIki menggunakan berkas biasa sebagai media penyimpanan halaman wiki
+dan informasi lainnya yang berhubungan dengan halaman tersebut (contoh: gambar,
+indeks pencarian, revisi lama, dll). Agar bisa menggunakannya DokuWiki
+<strong>harus</strong> memiliki hak akses tulis pada direktori yang menyimpan
+berkas-berkas tersebut. Alat instalasi ini tidak dapat melakukan perubahan
+konfigurasi hak akses pada direktori. Biasanya harus menggunakan command shell
+atau jika Anda pengguna layanan hosting, melalui FTP atau control panel layanan
+hosting Anda (misalnya: cPanel). </p>
+
+Alat instalasi ini akan mengatur konfigurasi DokuWiki Anda untuk
+<acronym title="access control list">ACL</acronym>, yang selanjutnya akan
+memperbolehkan administrator untuk login dan mengakses menu Admin DokuWiki
+untuk menginstal plugin, mengatur pengguna (user), mengatur hak akses ke
+halaman wiki dan perubahan konfigurasi. Ini tidak diawajibkan dalam pengoperasian
+DokuWiki, tetapi dapat membuat DokuWiki lebih mudah untuk dipelihara.
+
+Pengguna berpengalaman atau pengguna dengan kebutuhan instalasi khusus silahkan
+melihat link <a href="http://wiki.splitbrain.org/wiki:install">Panduan Instalasi</a>
+and <a href="http://wiki.splitbrain.org/wiki:config">Konfigurasi WIki</a>.
+untuk hal-hal yang berhubungan dengan instalasi dan konfigurasi.</p>
Modified: site/trunk/www-root/wiki/inc/lang/id/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,199 +1,199 @@
-<?php
-/**
- * Indonesian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author mubaidillah <mubaidillah at gmail.com>
- * @author Irwan Butar Butar <irwansah.putra at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '"';
-$lang['doublequoteclosing'] = '"';
-$lang['singlequoteopening'] = '\'';
-$lang['singlequoteclosing'] = '\'';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Edit halaman ini';
-$lang['btn_source'] = 'Lihat sumber halaman';
-$lang['btn_show'] = 'Tampilkan halaman';
-$lang['btn_create'] = 'Buat halaman baru';
-$lang['btn_search'] = 'Cari';
-$lang['btn_save'] = 'Simpan';
-$lang['btn_preview'] = 'Preview';
-$lang['btn_top'] = 'kembali ke atas';
-$lang['btn_newer'] = '<< lebih lanjut';
-$lang['btn_older'] = 'sebelumnya >>';
-$lang['btn_revs'] = 'Revisi-revisi lama';
-$lang['btn_recent'] = 'Perubahan terbaru';
-$lang['btn_upload'] = 'Upload';
-$lang['btn_cancel'] = 'Batal';
-$lang['btn_index'] = 'Indeks';
-$lang['btn_secedit'] = 'Edit';
-$lang['btn_login'] = 'Login';
-$lang['btn_logout'] = 'Keluar';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Ubah';
-$lang['btn_delete'] = 'Hapus';
-$lang['btn_back'] = 'Kembali';
-$lang['btn_backlink'] = 'Backlinks';
-$lang['btn_backtomedia'] = 'Kembali ke Pilihan Mediafile';
-$lang['btn_subscribe'] = 'Ikuti Perubahan';
-$lang['btn_unsubscribe'] = 'Berhenti Ikuti Perubahan';
-$lang['btn_profile'] = 'Ubah Profil';
-$lang['btn_reset'] = 'Reset';
-$lang['btn_resendpwd'] = 'Kirim password baru';
-$lang['btn_draft'] = 'Edit draft';
-$lang['btn_draftdel'] = 'Hapus draft';
-$lang['loggedinas'] = 'Login sebagai ';
-$lang['user'] = 'Username';
-$lang['pass'] = 'Password';
-$lang['newpass'] = 'Password baru';
-$lang['oldpass'] = 'Konfirmasi password';
-$lang['passchk'] = 'sekali lagi';
-$lang['remember'] = 'Ingat saya';
-$lang['fullname'] = 'Nama lengkap';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Daftar';
-$lang['profile'] = 'Profil User';
-$lang['badlogin'] = 'Maaf, username atau password salah.';
-$lang['minoredit'] = 'Perubahan Minor';
-$lang['draftdate'] = 'Simpan draft secara otomatis';
-$lang['regmissing'] = 'Maaf, Anda harus mengisi semua field.';
-$lang['reguexists'] = 'Maaf, user dengan user login ini telah ada.';
-$lang['regsuccess'] = 'User telah didaftarkan dan password telah dikirim ke email Anda.';
-$lang['regsuccess2'] = 'User telah dibuatkan.';
-$lang['regmailfail'] = 'Kami menemukan kesalahan saat mengirimkan password ke alamat email Anda. Mohon hubungi administrator.';
-$lang['regbadmail'] = 'Alamat email yang Anda masukkan tidak valid - jika menurut Anda hal ini adalah kesalahan sistem, mohon hubungi admin.';
-$lang['regbadpass'] = 'Passwod yang dimasukkan tidak sama. Silahkan ulangi lagi.';
-$lang['regpwmail'] = 'Password DokuWiki Anda';
-$lang['reghere'] = 'Anda belum mempunyai account? silahkan ';
-$lang['profna'] = 'Wiki ini tidak mengijinkan perubahan profil.';
-$lang['profnochange'] = 'Tidak ada perubahan.';
-$lang['profnoempty'] = 'Mohon mengisikan nama atau alamat email.';
-$lang['profchanged'] = 'Profil User berhasil diubah.';
-$lang['pwdforget'] = 'Lupa Password? Dapatkan yang baru';
-$lang['resendna'] = 'Wiki ini tidak mendukung pengiriman ulang password.';
-$lang['resendpwd'] = 'Kirim password baru untuk';
-$lang['resendpwdmissing'] = 'Maaf, Anda harus mengisikan semua field.';
-$lang['resendpwdnouser'] = 'Maaf, user ini tidak ditemukan.';
-$lang['resendpwdbadauth'] = 'Maaf, kode autentikasi tidak valid. Pastikan Anda menggunakan keseluruhan link konfirmasi.';
-$lang['resendpwdconfirm'] = 'Link konfirmasi telah dikirim melalui email.';
-$lang['resendpwdsuccess'] = 'Password baru Anda telah dikirim melalui email.';
-$lang['txt_upload'] = 'File yang akan diupload';
-$lang['txt_filename'] = 'Masukkan nama wiki (opsional)';
-$lang['txt_overwrt'] = 'File yang telah ada akan ditindih';
-$lang['lockedby'] = 'Sedang dikunci oleh';
-$lang['lockexpire'] = 'Penguncian artikel sampai dengan';
-$lang['willexpire'] = 'Halaman yang sedang Anda kunci akan berakhir dalam waktu kurang lebih satu menit.\nUntuk menghindari konflik, gunakan tombol Preview untuk me-reset timer pengunci.';
-$lang['notsavedyet'] = 'Perubahan yang belum disimpan akan hilang.\nYakin akan dilanjutkan?';
-$lang['rssfailed'] = 'Error terjadi saat mengambil feed: ';
-$lang['nothingfound'] = 'Tidak menemukan samasekali.';
-$lang['mediaselect'] = 'Pilihan Mediafile';
-$lang['fileupload'] = 'Mediafile Upload';
-$lang['uploadsucc'] = 'Upload sukses';
-$lang['uploadfail'] = 'Upload gagal. Apakah hak ijinnya salah?';
-$lang['uploadwrong'] = 'Upload ditolak. Ekstensi file ini tidak diperbolehkan!';
-$lang['uploadexist'] = 'File telah ada. Tidak mengerjakan apa-apa.';
-$lang['uploadbadcontent'] = 'Isi file yang diupload tidak cocok dengan ekstensi file %s.';
-$lang['uploadspam'] = 'File yang diupload diblok oleh spam blacklist.';
-$lang['uploadxss'] = 'File yang diupload diblok karena kemungkinan isi yang berbahaya.';
-$lang['deletesucc'] = 'File "%s" telah dihapus.';
-$lang['deletefail'] = '"%s" tidak dapat dihapus - cek hak aksesnya.';
-$lang['mediainuse'] = 'File "%s" belum dihapus - file ini sedang digunakan.';
-$lang['namespaces'] = 'Namespaces';
-$lang['mediafiles'] = 'File tersedia didalam';
-$lang['js']['keepopen'] = 'Biarkan window terbuka dalam pemilihan';
-$lang['js']['hidedetails'] = 'Sembunyikan detil';
-$lang['mediausage'] = 'Gunakan sintaks berikut untuk me-refer ke file ini';
-$lang['mediaview'] = 'Tampilkan file asli';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Upload file ke namespace ini. Untuk menbuat namespace baru, tambahkan namanya didepanpada nama file "Upload as" dipisahkan dengan titik dua (:).';
-$lang['mediaextchange'] = 'Ektensi file berubah dari .%s ke .%s';
-$lang['reference'] = 'Referensi untuk';
-$lang['ref_inuse'] = 'File tidak dapat dihapus karena sedang digunakan oleh halaman:';
-$lang['ref_hidden'] = 'Beberapa referensi ada didalam halaman yang tidak diijinkan untuk Anda baca.';
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Matching pagenames';
-$lang['toc'] = 'Daftar isi';
-$lang['current'] = 'sekarang';
-$lang['yours'] = 'Versi Anda';
-$lang['diff'] = 'Tampilkan perbedaan dengan versi sekarang';
-$lang['diff2'] = 'Tampilkan perbedaan diantara revisi terpilih';
-$lang['line'] = 'Baris';
-$lang['breadcrumb'] = 'Jejak';
-$lang['youarehere'] = 'Anda disini';
-$lang['lastmod'] = 'Terakhir diubah';
-$lang['by'] = 'oleh';
-$lang['deleted'] = 'terhapus';
-$lang['created'] = 'dibuat';
-$lang['restored'] = 'revisi lama ditampilkan kembali';
-$lang['external_edit'] = 'Perubahan eksternal';
-$lang['summary'] = 'Edit summary';
-$lang['mail_newpage'] = 'Halaman ditambahkan:';
-$lang['mail_changed'] = 'Halaman diubah:';
-$lang['mail_new_user'] = 'User baru:';
-$lang['mail_upload'] = 'Berkas di-upload:';
-$lang['nosmblinks'] = 'Link ke share Windows hanya bekerja di Microsoft Internet Explorer.\nAnda masih dapat mengcopy and paste linknya.';
-$lang['qb_alert'] = 'Masukkan text yang akan diformat.\n Text ini akan ditambahkan di akhir dokumen.';
-$lang['qb_bold'] = 'Tebal';
-$lang['qb_italic'] = 'Miring';
-$lang['qb_underl'] = 'Garis Bawah';
-$lang['qb_code'] = 'Kode';
-$lang['qb_strike'] = 'Text Tercoret';
-$lang['qb_h1'] = 'Level 1 Headline';
-$lang['qb_h2'] = 'Level 2 Headline';
-$lang['qb_h3'] = 'Level 3 Headline';
-$lang['qb_h4'] = 'Level 4 Headline';
-$lang['qb_h5'] = 'Level 5 Headline';
-$lang['qb_link'] = 'Link Internal';
-$lang['qb_extlink'] = 'Link External';
-$lang['qb_hr'] = 'Garis Horisontal';
-$lang['qb_ol'] = 'Item Berurutan';
-$lang['qb_ul'] = 'Item Tidak Berurutan';
-$lang['qb_media'] = 'Tambahkan gambar atau file lain';
-$lang['qb_sig'] = 'Sisipkan tanda tangan';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Karakter Khusus';
-$lang['del_confirm'] = 'Hapus tulisan ini?';
-$lang['admin_register'] = 'Tambah user baru';
-$lang['metaedit'] = 'Edit Metadata';
-$lang['metasaveerr'] = 'Gagal menulis metadata';
-$lang['metasaveok'] = 'Metadata tersimpan';
-$lang['img_backto'] = 'Kembali ke';
-$lang['img_title'] = 'Judul';
-$lang['img_caption'] = 'Label';
-$lang['img_date'] = 'Tanggal';
-$lang['img_fname'] = 'Nama file';
-$lang['img_fsize'] = 'Ukuran';
-$lang['img_artist'] = 'Tukang foto';
-$lang['img_copyr'] = 'Hakcipta';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Katakunci';
-$lang['subscribe_success'] = 'Penambahan %s ke data subsripsi untuk %s';
-$lang['subscribe_error'] = 'Gagal menambahkan %s ke data subsripsi untuk %s';
-$lang['subscribe_noaddress'] = 'Tidak ditemukan alamat yang berhubungan dengan login Anda, Anda tidak dapat menambahkan daftar subscription';
-$lang['unsubscribe_success'] = 'Menghapus %s dari daftar subscription untuk %s';
-$lang['unsubscribe_error'] = 'Gagal menghapus %s dari daftar subscription untuk %s';
-$lang['authmodfailed'] = 'Konfigurasi autentikasi user tidak valid. Harap informasikan admin Wiki Anda.';
-$lang['authtempfail'] = 'Autentikasi user saat ini sedang tidak dapat digunakan. Jika kejadian ini berlanjut, Harap informasikan admin Wiki Anda.';
-$lang['i_chooselang'] = 'Pilih bahasa';
-$lang['i_installer'] = 'Instalasi DokuWiki';
-$lang['i_wikiname'] = 'Nama Wiki';
-$lang['i_enableacl'] = 'Aktifkan ACL (disarankan)';
-$lang['i_problems'] = 'Terdapat beberapa kesalahan seperti berikut. Anda tidak dapat melanjutkan sampai kesalahan tersebut diperbaiki.';
-$lang['i_modified'] = 'Untuk alasan keamanan, skrip ini hanya dapat dijalankan pada instalasi DikuWiki baru dan belum di modifikasi. Silahkan meng-ekstrak kembali berkasi dari halaman dowload, atau lihat <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installation instructions</a> ';
-$lang['i_funcna'] = 'Fungsi PHP <code>%s</code> tidak tersedia. Mungkin dinonaktifkan oleh layanan hosting Anda?';
-$lang['i_phpver'] = 'Versi PHP Anda <code>%s</code> lebih rendah dari yang dibutuhkan <code>%s</code>. Mohon melakukan upgrade.';
-$lang['i_permfail'] = '<code>%s</code> tidak dapat ditulis oleh DokuWiki. Anda harus memperbaiki konfigurasi hak akses untuk direktori tersebut.';
-$lang['i_confexists'] = '<code>%s</code> sudah ada';
-$lang['i_writeerr'] = 'Tidak dapat membuat <code>%s</code>. Anda harus memeriksa konfigurasi hak akses direktori/berkas dan membuatnya secara manual.';
-$lang['i_badhash'] = 'dokuwiki.php tidak dikenal atau sudah diubah (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - tidak valid atau belum diisi';
-$lang['i_success'] = 'Konfigurasi telah berhasil. Anda boleh menghapus berkas install.php sekarang. Lanjutkan ke <a href="doku.php">DokuWiki baru Anda</a>.';
-$lang['i_failure'] = 'Terdapat beberapa kesalahan dalam menulis berkas konfigurasi. Anda harus memperbaikinnya sendiri sebelum dapat menggunakan <a href="doku.php">DokuWiki baru Anda</a>.';
-$lang['i_policy'] = 'Policy ACL awal';
-$lang['i_pol0'] = 'Wiki Terbuka (baca, tulis, upload untuk semua orang)';
-$lang['i_pol1'] = 'Wiki Publik (baca untuk semua orang, tulis dan upload untuk pengguna terdaftar)';
-$lang['i_pol2'] = 'Wiki Privat (baca, tulis dan upload hanya untuk pengguna terdaftar)';
-$lang['i_retry'] = 'Coba Lagi';
+<?php
+/**
+ * Indonesian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author mubaidillah <mubaidillah at gmail.com>
+ * @author Irwan Butar Butar <irwansah.putra at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = '"';
+$lang['doublequoteclosing'] = '"';
+$lang['singlequoteopening'] = '\'';
+$lang['singlequoteclosing'] = '\'';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Edit halaman ini';
+$lang['btn_source'] = 'Lihat sumber halaman';
+$lang['btn_show'] = 'Tampilkan halaman';
+$lang['btn_create'] = 'Buat halaman baru';
+$lang['btn_search'] = 'Cari';
+$lang['btn_save'] = 'Simpan';
+$lang['btn_preview'] = 'Preview';
+$lang['btn_top'] = 'kembali ke atas';
+$lang['btn_newer'] = '<< lebih lanjut';
+$lang['btn_older'] = 'sebelumnya >>';
+$lang['btn_revs'] = 'Revisi-revisi lama';
+$lang['btn_recent'] = 'Perubahan terbaru';
+$lang['btn_upload'] = 'Upload';
+$lang['btn_cancel'] = 'Batal';
+$lang['btn_index'] = 'Indeks';
+$lang['btn_secedit'] = 'Edit';
+$lang['btn_login'] = 'Login';
+$lang['btn_logout'] = 'Keluar';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Ubah';
+$lang['btn_delete'] = 'Hapus';
+$lang['btn_back'] = 'Kembali';
+$lang['btn_backlink'] = 'Backlinks';
+$lang['btn_backtomedia'] = 'Kembali ke Pilihan Mediafile';
+$lang['btn_subscribe'] = 'Ikuti Perubahan';
+$lang['btn_unsubscribe'] = 'Berhenti Ikuti Perubahan';
+$lang['btn_profile'] = 'Ubah Profil';
+$lang['btn_reset'] = 'Reset';
+$lang['btn_resendpwd'] = 'Kirim password baru';
+$lang['btn_draft'] = 'Edit draft';
+$lang['btn_draftdel'] = 'Hapus draft';
+$lang['loggedinas'] = 'Login sebagai ';
+$lang['user'] = 'Username';
+$lang['pass'] = 'Password';
+$lang['newpass'] = 'Password baru';
+$lang['oldpass'] = 'Konfirmasi password';
+$lang['passchk'] = 'sekali lagi';
+$lang['remember'] = 'Ingat saya';
+$lang['fullname'] = 'Nama lengkap';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Daftar';
+$lang['profile'] = 'Profil User';
+$lang['badlogin'] = 'Maaf, username atau password salah.';
+$lang['minoredit'] = 'Perubahan Minor';
+$lang['draftdate'] = 'Simpan draft secara otomatis';
+$lang['regmissing'] = 'Maaf, Anda harus mengisi semua field.';
+$lang['reguexists'] = 'Maaf, user dengan user login ini telah ada.';
+$lang['regsuccess'] = 'User telah didaftarkan dan password telah dikirim ke email Anda.';
+$lang['regsuccess2'] = 'User telah dibuatkan.';
+$lang['regmailfail'] = 'Kami menemukan kesalahan saat mengirimkan password ke alamat email Anda. Mohon hubungi administrator.';
+$lang['regbadmail'] = 'Alamat email yang Anda masukkan tidak valid - jika menurut Anda hal ini adalah kesalahan sistem, mohon hubungi admin.';
+$lang['regbadpass'] = 'Passwod yang dimasukkan tidak sama. Silahkan ulangi lagi.';
+$lang['regpwmail'] = 'Password DokuWiki Anda';
+$lang['reghere'] = 'Anda belum mempunyai account? silahkan ';
+$lang['profna'] = 'Wiki ini tidak mengijinkan perubahan profil.';
+$lang['profnochange'] = 'Tidak ada perubahan.';
+$lang['profnoempty'] = 'Mohon mengisikan nama atau alamat email.';
+$lang['profchanged'] = 'Profil User berhasil diubah.';
+$lang['pwdforget'] = 'Lupa Password? Dapatkan yang baru';
+$lang['resendna'] = 'Wiki ini tidak mendukung pengiriman ulang password.';
+$lang['resendpwd'] = 'Kirim password baru untuk';
+$lang['resendpwdmissing'] = 'Maaf, Anda harus mengisikan semua field.';
+$lang['resendpwdnouser'] = 'Maaf, user ini tidak ditemukan.';
+$lang['resendpwdbadauth'] = 'Maaf, kode autentikasi tidak valid. Pastikan Anda menggunakan keseluruhan link konfirmasi.';
+$lang['resendpwdconfirm'] = 'Link konfirmasi telah dikirim melalui email.';
+$lang['resendpwdsuccess'] = 'Password baru Anda telah dikirim melalui email.';
+$lang['txt_upload'] = 'File yang akan diupload';
+$lang['txt_filename'] = 'Masukkan nama wiki (opsional)';
+$lang['txt_overwrt'] = 'File yang telah ada akan ditindih';
+$lang['lockedby'] = 'Sedang dikunci oleh';
+$lang['lockexpire'] = 'Penguncian artikel sampai dengan';
+$lang['willexpire'] = 'Halaman yang sedang Anda kunci akan berakhir dalam waktu kurang lebih satu menit.\nUntuk menghindari konflik, gunakan tombol Preview untuk me-reset timer pengunci.';
+$lang['notsavedyet'] = 'Perubahan yang belum disimpan akan hilang.\nYakin akan dilanjutkan?';
+$lang['rssfailed'] = 'Error terjadi saat mengambil feed: ';
+$lang['nothingfound'] = 'Tidak menemukan samasekali.';
+$lang['mediaselect'] = 'Pilihan Mediafile';
+$lang['fileupload'] = 'Mediafile Upload';
+$lang['uploadsucc'] = 'Upload sukses';
+$lang['uploadfail'] = 'Upload gagal. Apakah hak ijinnya salah?';
+$lang['uploadwrong'] = 'Upload ditolak. Ekstensi file ini tidak diperbolehkan!';
+$lang['uploadexist'] = 'File telah ada. Tidak mengerjakan apa-apa.';
+$lang['uploadbadcontent'] = 'Isi file yang diupload tidak cocok dengan ekstensi file %s.';
+$lang['uploadspam'] = 'File yang diupload diblok oleh spam blacklist.';
+$lang['uploadxss'] = 'File yang diupload diblok karena kemungkinan isi yang berbahaya.';
+$lang['deletesucc'] = 'File "%s" telah dihapus.';
+$lang['deletefail'] = '"%s" tidak dapat dihapus - cek hak aksesnya.';
+$lang['mediainuse'] = 'File "%s" belum dihapus - file ini sedang digunakan.';
+$lang['namespaces'] = 'Namespaces';
+$lang['mediafiles'] = 'File tersedia didalam';
+$lang['js']['keepopen'] = 'Biarkan window terbuka dalam pemilihan';
+$lang['js']['hidedetails'] = 'Sembunyikan detil';
+$lang['mediausage'] = 'Gunakan sintaks berikut untuk me-refer ke file ini';
+$lang['mediaview'] = 'Tampilkan file asli';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Upload file ke namespace ini. Untuk menbuat namespace baru, tambahkan namanya didepanpada nama file "Upload as" dipisahkan dengan titik dua (:).';
+$lang['mediaextchange'] = 'Ektensi file berubah dari .%s ke .%s';
+$lang['reference'] = 'Referensi untuk';
+$lang['ref_inuse'] = 'File tidak dapat dihapus karena sedang digunakan oleh halaman:';
+$lang['ref_hidden'] = 'Beberapa referensi ada didalam halaman yang tidak diijinkan untuk Anda baca.';
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Matching pagenames';
+$lang['toc'] = 'Daftar isi';
+$lang['current'] = 'sekarang';
+$lang['yours'] = 'Versi Anda';
+$lang['diff'] = 'Tampilkan perbedaan dengan versi sekarang';
+$lang['diff2'] = 'Tampilkan perbedaan diantara revisi terpilih';
+$lang['line'] = 'Baris';
+$lang['breadcrumb'] = 'Jejak';
+$lang['youarehere'] = 'Anda disini';
+$lang['lastmod'] = 'Terakhir diubah';
+$lang['by'] = 'oleh';
+$lang['deleted'] = 'terhapus';
+$lang['created'] = 'dibuat';
+$lang['restored'] = 'revisi lama ditampilkan kembali';
+$lang['external_edit'] = 'Perubahan eksternal';
+$lang['summary'] = 'Edit summary';
+$lang['mail_newpage'] = 'Halaman ditambahkan:';
+$lang['mail_changed'] = 'Halaman diubah:';
+$lang['mail_new_user'] = 'User baru:';
+$lang['mail_upload'] = 'Berkas di-upload:';
+$lang['nosmblinks'] = 'Link ke share Windows hanya bekerja di Microsoft Internet Explorer.\nAnda masih dapat mengcopy and paste linknya.';
+$lang['qb_alert'] = 'Masukkan text yang akan diformat.\n Text ini akan ditambahkan di akhir dokumen.';
+$lang['qb_bold'] = 'Tebal';
+$lang['qb_italic'] = 'Miring';
+$lang['qb_underl'] = 'Garis Bawah';
+$lang['qb_code'] = 'Kode';
+$lang['qb_strike'] = 'Text Tercoret';
+$lang['qb_h1'] = 'Level 1 Headline';
+$lang['qb_h2'] = 'Level 2 Headline';
+$lang['qb_h3'] = 'Level 3 Headline';
+$lang['qb_h4'] = 'Level 4 Headline';
+$lang['qb_h5'] = 'Level 5 Headline';
+$lang['qb_link'] = 'Link Internal';
+$lang['qb_extlink'] = 'Link External';
+$lang['qb_hr'] = 'Garis Horisontal';
+$lang['qb_ol'] = 'Item Berurutan';
+$lang['qb_ul'] = 'Item Tidak Berurutan';
+$lang['qb_media'] = 'Tambahkan gambar atau file lain';
+$lang['qb_sig'] = 'Sisipkan tanda tangan';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Karakter Khusus';
+$lang['del_confirm'] = 'Hapus tulisan ini?';
+$lang['admin_register'] = 'Tambah user baru';
+$lang['metaedit'] = 'Edit Metadata';
+$lang['metasaveerr'] = 'Gagal menulis metadata';
+$lang['metasaveok'] = 'Metadata tersimpan';
+$lang['img_backto'] = 'Kembali ke';
+$lang['img_title'] = 'Judul';
+$lang['img_caption'] = 'Label';
+$lang['img_date'] = 'Tanggal';
+$lang['img_fname'] = 'Nama file';
+$lang['img_fsize'] = 'Ukuran';
+$lang['img_artist'] = 'Tukang foto';
+$lang['img_copyr'] = 'Hakcipta';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords'] = 'Katakunci';
+$lang['subscribe_success'] = 'Penambahan %s ke data subsripsi untuk %s';
+$lang['subscribe_error'] = 'Gagal menambahkan %s ke data subsripsi untuk %s';
+$lang['subscribe_noaddress'] = 'Tidak ditemukan alamat yang berhubungan dengan login Anda, Anda tidak dapat menambahkan daftar subscription';
+$lang['unsubscribe_success'] = 'Menghapus %s dari daftar subscription untuk %s';
+$lang['unsubscribe_error'] = 'Gagal menghapus %s dari daftar subscription untuk %s';
+$lang['authmodfailed'] = 'Konfigurasi autentikasi user tidak valid. Harap informasikan admin Wiki Anda.';
+$lang['authtempfail'] = 'Autentikasi user saat ini sedang tidak dapat digunakan. Jika kejadian ini berlanjut, Harap informasikan admin Wiki Anda.';
+$lang['i_chooselang'] = 'Pilih bahasa';
+$lang['i_installer'] = 'Instalasi DokuWiki';
+$lang['i_wikiname'] = 'Nama Wiki';
+$lang['i_enableacl'] = 'Aktifkan ACL (disarankan)';
+$lang['i_problems'] = 'Terdapat beberapa kesalahan seperti berikut. Anda tidak dapat melanjutkan sampai kesalahan tersebut diperbaiki.';
+$lang['i_modified'] = 'Untuk alasan keamanan, skrip ini hanya dapat dijalankan pada instalasi DikuWiki baru dan belum di modifikasi. Silahkan meng-ekstrak kembali berkasi dari halaman dowload, atau lihat <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installation instructions</a> ';
+$lang['i_funcna'] = 'Fungsi PHP <code>%s</code> tidak tersedia. Mungkin dinonaktifkan oleh layanan hosting Anda?';
+$lang['i_phpver'] = 'Versi PHP Anda <code>%s</code> lebih rendah dari yang dibutuhkan <code>%s</code>. Mohon melakukan upgrade.';
+$lang['i_permfail'] = '<code>%s</code> tidak dapat ditulis oleh DokuWiki. Anda harus memperbaiki konfigurasi hak akses untuk direktori tersebut.';
+$lang['i_confexists'] = '<code>%s</code> sudah ada';
+$lang['i_writeerr'] = 'Tidak dapat membuat <code>%s</code>. Anda harus memeriksa konfigurasi hak akses direktori/berkas dan membuatnya secara manual.';
+$lang['i_badhash'] = 'dokuwiki.php tidak dikenal atau sudah diubah (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - tidak valid atau belum diisi';
+$lang['i_success'] = 'Konfigurasi telah berhasil. Anda boleh menghapus berkas install.php sekarang. Lanjutkan ke <a href="doku.php">DokuWiki baru Anda</a>.';
+$lang['i_failure'] = 'Terdapat beberapa kesalahan dalam menulis berkas konfigurasi. Anda harus memperbaikinnya sendiri sebelum dapat menggunakan <a href="doku.php">DokuWiki baru Anda</a>.';
+$lang['i_policy'] = 'Policy ACL awal';
+$lang['i_pol0'] = 'Wiki Terbuka (baca, tulis, upload untuk semua orang)';
+$lang['i_pol1'] = 'Wiki Publik (baca untuk semua orang, tulis dan upload untuk pengguna terdaftar)';
+$lang['i_pol2'] = 'Wiki Privat (baca, tulis dan upload hanya untuk pengguna terdaftar)';
+$lang['i_retry'] = 'Coba Lagi';
Modified: site/trunk/www-root/wiki/inc/lang/id/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Halaman Terkunci ======
-
-Halaman ini tertutup (terkunci) untuk diedit oleh user lain. Anda harus menunggu sampai user ini menyelesaikan pengeditan, atau masa berlaku penguncian telah berakhir.
+====== Halaman Terkunci ======
+
+Halaman ini tertutup (terkunci) untuk diedit oleh user lain. Anda harus menunggu sampai user ini menyelesaikan pengeditan, atau masa berlaku penguncian telah berakhir.
Modified: site/trunk/www-root/wiki/inc/lang/id/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Login ======
-
-Anda belum login! Masukkan data autentifikasi dibawah ini untuk masuk log (login).
-Cookies harus diaktifkan agar bisa login.
-
+====== Login ======
+
+Anda belum login! Masukkan data autentifikasi dibawah ini untuk masuk log (login).
+Cookies harus diaktifkan agar bisa login.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Halaman di DokuWiki Anda telah bertamah atau berubah, dengan detil sebagai berikut:
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-Old Revision: @OLDPAGE@
-New Revision: @NEWPAGE@
-Edit Summary: @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-Email ini digenerate oleh DokuWiki di
- at DOKUWIKIURL@
+Halaman di DokuWiki Anda telah bertamah atau berubah, dengan detil sebagai berikut:
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+Old Revision: @OLDPAGE@
+New Revision: @NEWPAGE@
+Edit Summary: @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+Email ini digenerate oleh DokuWiki di
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/id/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Topik ini belum tersedia======
-
-Belum ada artikel di halaman ini. Anda dapat membuat tulisan-tulisan baru di halaman ini dengan menekan tombol "Buat Halaman Baru" (lihat dibagian bawah...!)
+======Topik ini belum tersedia======
+
+Belum ada artikel di halaman ini. Anda dapat membuat tulisan-tulisan baru di halaman ini dengan menekan tombol "Buat Halaman Baru" (lihat dibagian bawah...!)
Modified: site/trunk/www-root/wiki/inc/lang/id/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Revisi tidak tersedia======
-
-Revisi yang diinginkan tidak ada. Gunakan tombol ''Revisi Lama'' untuk menampilkan daftar revisi lama dari dokumen ini.
-
+======Revisi tidak tersedia======
+
+Revisi yang diinginkan tidak ada. Gunakan tombol ''Revisi Lama'' untuk menampilkan daftar revisi lama dari dokumen ini.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hi @FULLNAME@!
-
-Berikut data Anda untuk @TITLE@ di @DOKUWIKIURL@
-
-Login : @LOGIN@
-Password : @PASSWORD@
-
---
-Email ini dibuat otomatis oleh DokuWiki
- at DOKUWIKIURL@
+Hi @FULLNAME@!
+
+Berikut data Anda untuk @TITLE@ di @DOKUWIKIURL@
+
+Login : @LOGIN@
+Password : @PASSWORD@
+
+--
+Email ini dibuat otomatis oleh DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/id/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Preview======
-
-Ini adalah preview tentang bagimana tulisan Anda akan ditampilkan. Ingat: tulisan ini **belum disimpan**!
-
+======Preview======
+
+Ini adalah preview tentang bagimana tulisan Anda akan ditampilkan. Ingat: tulisan ini **belum disimpan**!
+
Modified: site/trunk/www-root/wiki/inc/lang/id/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Hai @FULLNAME@!
-
-Seseorang telah meminta password baru untuk @TITLE@ Anda login ke @DOKUWIKIURL@
-
-Jika Anda tidak meminta password baru, mohon mengacuhkan email ini.
-
-Untuk mengkonfirmasi bahwa permintaan tersebut adalah benar dari Anda, silahkan gunakan link dibawah.
-
- at CONFIRM@
-
---
-Email ini dibuat otomatis oleh DokuWiki
+Hai @FULLNAME@!
+
+Seseorang telah meminta password baru untuk @TITLE@ Anda login ke @DOKUWIKIURL@
+
+Jika Anda tidak meminta password baru, mohon mengacuhkan email ini.
+
+Untuk mengkonfirmasi bahwa permintaan tersebut adalah benar dari Anda, silahkan gunakan link dibawah.
+
+ at CONFIRM@
+
+--
+Email ini dibuat otomatis oleh DokuWiki
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/id/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Halaman ini hanya bisa dibaca. Anda bisa melihat sumbernya, tetapi tidak diperkenankan untuk mengubah. Hubungi administrator jika menemukan kesalahan pada halaman ini.
-
+Halaman ini hanya bisa dibaca. Anda bisa melihat sumbernya, tetapi tidak diperkenankan untuk mengubah. Hubungi administrator jika menemukan kesalahan pada halaman ini.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Perubahan======
-
-Berikut ini adalah halaman-halaman yang baru saja diubah.
-
-
+======Perubahan======
+
+Berikut ini adalah halaman-halaman yang baru saja diubah.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/id/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Mendaftar sebagai anggota baru ======
-
-Isikan semua informasi dibawah ini untuk membuat account baru di wiki ini.
-Pastikan Anda telah mengisikan **alamat email yang valid**, karena password akan dikirim melalui email ini. Nama login harus sesuai dengan aturan [[doku>wiki:pagename|pagename]].
-
+====== Mendaftar sebagai anggota baru ======
+
+Isikan semua informasi dibawah ini untuk membuat account baru di wiki ini.
+Pastikan Anda telah mengisikan **alamat email yang valid**, karena password akan dikirim melalui email ini. Nama login harus sesuai dengan aturan [[doku>wiki:pagename|pagename]].
+
Modified: site/trunk/www-root/wiki/inc/lang/id/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-User baru telah mendaftar. Berikut detailnya:
-
-User name : @NEWUSER@
-Full name : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-
---
-Email ini dibuat otomatis oleh DokuWIki
+User baru telah mendaftar. Berikut detailnya:
+
+User name : @NEWUSER@
+Full name : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+
+--
+Email ini dibuat otomatis oleh DokuWIki
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/id/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Kirim Password Baru ======
-
-Masukkan nama user Anda pada form dibawah untuk permintaan perubahan password account Anda di Wiki ini. Link konfirmasi akan dikirimkan melalui alamat email Anda sewaktu registrasi.
+====== Kirim Password Baru ======
+
+Masukkan nama user Anda pada form dibawah untuk permintaan perubahan password account Anda di Wiki ini. Link konfirmasi akan dikirimkan melalui alamat email Anda sewaktu registrasi.
Modified: site/trunk/www-root/wiki/inc/lang/id/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Revisi Lama======
-
-Ini adalah revisi-revisi lama dari dokumen ini. Untuk mengaktifkan kembali revisi lama, pilih dokumen revisi, kemudikan tekan "Edit halaman ini" lalu Simpan.
-
+======Revisi Lama======
+
+Ini adalah revisi-revisi lama dari dokumen ini. Untuk mengaktifkan kembali revisi lama, pilih dokumen revisi, kemudikan tekan "Edit halaman ini" lalu Simpan.
+
Modified: site/trunk/www-root/wiki/inc/lang/id/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Pencarian======
-
-Anda dapat menemukan hasil pencarian dibawah ini. Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".
-
+======Pencarian======
+
+Anda dapat menemukan hasil pencarian dibawah ini. Jika Anda tidak menemukan apa yang diinginkan, Anda dapat membuat halaman baru, dengan nama sesuai "text pencarian" Anda. Gunakan tombol "Edit halaman ini".
+
=====Hasil Pencarian=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/id/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Ini adalah dokumen versi lama!**
-----
+**Ini adalah dokumen versi lama!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/id/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,37 +1,37 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
-yang
-dan
-adalah
-untuk
-lalu
-maka
-kemudian
-jika
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
+yang
+dan
+adalah
+untuk
+lalu
+maka
+kemudian
+jika
Modified: site/trunk/www-root/wiki/inc/lang/id/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Halo Dunia!
-
-Halaman @PAGE@ di @TITLE@ wiki telah berubah.
-Perubahannya adalah sebagai berikut:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Untuk unsubscribe dari halaman ini, silahkan login ke wiki di
- at DOKUWIKIURL@ lalu buka
- at NEWPAGE@
-dan pilih 'Unsubscribe Changes'.
-
---
-Email ini telah digenerate oleh DokuWiki
- at DOKUWIKIURL@
+Halo Dunia!
+
+Halaman @PAGE@ di @TITLE@ wiki telah berubah.
+Perubahannya adalah sebagai berikut:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Untuk unsubscribe dari halaman ini, silahkan login ke wiki di
+ at DOKUWIKIURL@ lalu buka
+ at NEWPAGE@
+dan pilih 'Unsubscribe Changes'.
+
+--
+Email ini telah digenerate oleh DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/id/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ubah Profil Account Anda ======
-
-Anda hanya perlu mengisikan field yang ingin Anda ubah. Anda tidak dapat mengubah username Anda.
+====== Ubah Profil Account Anda ======
+
+Anda hanya perlu mengisikan field yang ingin Anda ubah. Anda tidak dapat mengubah username Anda.
Modified: site/trunk/www-root/wiki/inc/lang/id/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Sebuah file telah diupload di DokuWiki Anda. Berikut detailnya:
-
-File : @MEDIA@
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-Size : @SIZE@
-MIME Type : @MIME@
-User : @USER@
-
---
-Email ini dibuat otomatis oleh DokuWiki
+Sebuah file telah diupload di DokuWiki Anda. Berikut detailnya:
+
+File : @MEDIA@
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+Size : @SIZE@
+MIME Type : @MIME@
+User : @USER@
+
+--
+Email ini dibuat otomatis oleh DokuWiki
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/id/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/id/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/id/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======SPAM blocked======
-
-Maaf, tulisan Anda **tidak disimpan** karena terdapat satu atau lebih kata-kata yang **tabu**. Jika Anda mencoba melakukan SPAM wiki ini -- Bangsat lu! Tetapi, jika Anda pikir ini adalah kesalahan sistem, harap hubungi administrator wiki ini.
-
+======SPAM blocked======
+
+Maaf, tulisan Anda **tidak disimpan** karena terdapat satu atau lebih kata-kata yang **tabu**. Jika Anda mencoba melakukan SPAM wiki ini -- Bangsat lu! Tetapi, jika Anda pikir ini adalah kesalahan sistem, harap hubungi administrator wiki ini.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Amministrazione ======
-
-Qui sotto puoi trovare una lista delle possibili azioni amministrative
-attualmente disponibili in Dokuwiki.
-
+====== Amministrazione ======
+
+Qui sotto puoi trovare una lista delle possibili azioni amministrative
+attualmente disponibili in Dokuwiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Puntano qui ======
-
-Questa è una lista delle pagine che sembrano avere un collegamento alla pagina corrente.
-
+====== Puntano qui ======
+
+Questa è una lista delle pagine che sembrano avere un collegamento alla pagina corrente.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Esiste una versione più recente ======
-
-Esiste una versione più recente del documento che hai modificato.
-Questo può accadere quando un altro utente ha già modificato il
-documento durante le tue modifiche.
-
-Esamina le differenze mostrate di seguito, quindi decidi quale
-versione mantenere. Se scegli ''salva'', la tua versione verrÃ
-salvata. Clicca su ''annulla'' per mantenere la versione corrente.
-
+====== Esiste una versione più recente ======
+
+Esiste una versione più recente del documento che hai modificato.
+Questo può accadere quando un altro utente ha già modificato il
+documento durante le tue modifiche.
+
+Esamina le differenze mostrate di seguito, quindi decidi quale
+versione mantenere. Se scegli ''salva'', la tua versione verrÃ
+salvata. Clicca su ''annulla'' per mantenere la versione corrente.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Accesso negato======
-
-Non hai i diritti per continuare. Hai forse dimenticato di
-effettuare il login?
-
-
+======Accesso negato======
+
+Non hai i diritti per continuare. Hai forse dimenticato di
+effettuare il login?
+
+
Modified: site/trunk/www-root/wiki/inc/lang/it/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Differenze======
-
-Queste sono le differenze tra la revisione selezionata e la versione
-corrente della pagina.
-
+======Differenze======
+
+Queste sono le differenze tra la revisione selezionata e la versione
+corrente della pagina.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Trovata Bozza ======
-
-La tua ultima sessione di modifica su questa pagina non è stata completata correttamente.
-DokuWiki ha salvato in automatico una bozza durante il tuo lavoro, che puoi ora utilizzare
-per continuare le tue modifiche. Di seguito puoi trovare i dati che sono stati salvati dalla
-tua ultima sessione.
-
-Decidi se vuoi //recuperare// la sessione di modifica, //cancellare//
-la bozza salavata in automatico oppure //annullare// le modifiche.
-
+====== Trovata Bozza ======
+
+La tua ultima sessione di modifica su questa pagina non è stata completata correttamente.
+DokuWiki ha salvato in automatico una bozza durante il tuo lavoro, che puoi ora utilizzare
+per continuare le tue modifiche. Di seguito puoi trovare i dati che sono stati salvati dalla
+tua ultima sessione.
+
+Decidi se vuoi //recuperare// la sessione di modifica, //cancellare//
+la bozza salavata in automatico oppure //annullare// le modifiche.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Modifica la pagina e clicca su ''Salva''. Vedi [[wiki:syntax]] per la sintassi
-riconosciuta da Wiki. Modifica questa pagina solo se puoi
-**apportare dei miglioramenti**. Se vuoi solo fare degli esperimenti ed imparare
-come fare i primi passi usa [[playground:playground]].
-
+Modifica la pagina e clicca su ''Salva''. Vedi [[wiki:syntax]] per la sintassi
+riconosciuta da Wiki. Modifica questa pagina solo se puoi
+**apportare dei miglioramenti**. Se vuoi solo fare degli esperimenti ed imparare
+come fare i primi passi usa [[playground:playground]].
+
Modified: site/trunk/www-root/wiki/inc/lang/it/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Hai caricato una precedente revisione del documento!** Se salvi questa pagina creerai una nuova versione con questi dati.
+**Hai caricato una precedente revisione del documento!** Se salvi questa pagina creerai una nuova versione con questi dati.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/it/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Indice ======
-
-Questo è un indice di tutte le pagine disponibili ordinate per [[doku>wiki:namespaces|categoria]].
-
+====== Indice ======
+
+Questo è un indice di tutte le pagine disponibili ordinate per [[doku>wiki:namespaces|categoria]].
+
Modified: site/trunk/www-root/wiki/inc/lang/it/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,24 +1,24 @@
-<p>Questa pagina ti assisterà durante la prima installazione e configurazione di
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Ulteriori informazioni sulla
-procedura di installazione sono reperibili nella
-<a href="http://wiki.splitbrain.org/wiki:installer">pagina di documentazione</a>.</p>
-
-<p>DokuWiki utilizza normali file per la memorizzazione di pagine wiki ed altre
-informazioni associate a tali pagine (es. immagini, indici per la ricerca, vecchie
-revisioni, ecc.). Per poter operare correttamente DokuWiki
-<strong>deve</strong> accedere in scrittura alle directory che contengono tali
-file. La procedura di installazione non è in grado di impostare i permessi sulle directory. Questo
-deve normalmente essere fatto direttamente da linea di comando oppure, se stai usando un servizio di hosting,
-attraverso FTP o dal pannello di controllo del servizio di hosting (es. cPanel).</p>
-
-<p>Questa procedura di installazione imposterà la configurazione di DokuWiki per l'uso di
-<acronym title="lista controllo accessi">ACL</acronym>, che consente all'amministratore di
-collegarsi e accedere al menu di amministrazione di DokuWiki per installare plugin, gestire
-utenti, gestire gli accessi alle pagine wiki e modificare le impostazioni del wiki.
-Non è necessario per il funzionamento di DokuWiki, ma renderà Dokuwiki più facile
-da amministrare.</p>
-
-<p>Gli utenti esperti o con particolari esigenze di installazione dovrebbero far riferimento ai
-seguenti link per i dettagli riguardanti
-<a href="http://wiki.splitbrain.org/wiki:install">istruzioni per l'installazione</a>
-and <a href="http://wiki.splitbrain.org/wiki:config">parametri di configurazione</a>.</p>
+<p>Questa pagina ti assisterà durante la prima installazione e configurazione di
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Ulteriori informazioni sulla
+procedura di installazione sono reperibili nella
+<a href="http://wiki.splitbrain.org/wiki:installer">pagina di documentazione</a>.</p>
+
+<p>DokuWiki utilizza normali file per la memorizzazione di pagine wiki ed altre
+informazioni associate a tali pagine (es. immagini, indici per la ricerca, vecchie
+revisioni, ecc.). Per poter operare correttamente DokuWiki
+<strong>deve</strong> accedere in scrittura alle directory che contengono tali
+file. La procedura di installazione non è in grado di impostare i permessi sulle directory. Questo
+deve normalmente essere fatto direttamente da linea di comando oppure, se stai usando un servizio di hosting,
+attraverso FTP o dal pannello di controllo del servizio di hosting (es. cPanel).</p>
+
+<p>Questa procedura di installazione imposterà la configurazione di DokuWiki per l'uso di
+<acronym title="lista controllo accessi">ACL</acronym>, che consente all'amministratore di
+collegarsi e accedere al menu di amministrazione di DokuWiki per installare plugin, gestire
+utenti, gestire gli accessi alle pagine wiki e modificare le impostazioni del wiki.
+Non è necessario per il funzionamento di DokuWiki, ma renderà Dokuwiki più facile
+da amministrare.</p>
+
+<p>Gli utenti esperti o con particolari esigenze di installazione dovrebbero far riferimento ai
+seguenti link per i dettagli riguardanti
+<a href="http://wiki.splitbrain.org/wiki:install">istruzioni per l'installazione</a>
+and <a href="http://wiki.splitbrain.org/wiki:config">parametri di configurazione</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/it/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,209 +1,209 @@
-<?php
-/**
- * Italian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Giorgio Vecchiocattivi <giorgio at vecchio.it>
- * @author Roberto Bolli <http://www.rbnet.it/>
- * @author Silvia Sargentoni <polinnia at tin.it>
- * @author Diego Pierotto <ita.translations at tiscali.it>
- * @author Diego Pierotto ita.translations at tiscali.it
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Modifica questa pagina';
-$lang['btn_source'] = 'Mostra sorgente';
-$lang['btn_show'] = 'Mostra pagina';
-$lang['btn_create'] = 'Crea questa pagina';
-$lang['btn_search'] = 'Cerca';
-$lang['btn_save'] = 'Salva';
-$lang['btn_preview'] = 'Anteprima';
-$lang['btn_top'] = 'Torna su';
-$lang['btn_newer'] = '<< più recenti';
-$lang['btn_older'] = 'meno recenti >>';
-$lang['btn_revs'] = 'Revisioni precedenti';
-$lang['btn_recent'] = 'Ultime modifiche';
-$lang['btn_upload'] = 'Invia file';
-$lang['btn_cancel'] = 'Annulla';
-$lang['btn_index'] = 'Indice';
-$lang['btn_secedit'] = 'Modifica';
-$lang['btn_login'] = 'Entra';
-$lang['btn_logout'] = 'Esci';
-$lang['btn_admin'] = 'Amministrazione';
-$lang['btn_update'] = 'Aggiorna';
-$lang['btn_delete'] = 'Cancella';
-$lang['btn_back'] = 'Indietro';
-$lang['btn_backlink'] = 'Backlinks';
-$lang['btn_backtomedia'] = 'Torna alla selezione file';
-$lang['btn_subscribe'] = 'Sottoscrivi modifiche';
-$lang['btn_unsubscribe'] = 'Cancella sottoscrizione';
-$lang['btn_subscribens'] = 'Sottoscrivi modifiche della categoria';
-$lang['btn_unsubscribens'] = 'Cancella sottoscrizione modifiche della categoria';
-$lang['btn_profile'] = 'Aggiorna profilo';
-$lang['btn_reset'] = 'Annulla';
-$lang['btn_resendpwd'] = 'Invia nuova password';
-$lang['btn_draft'] = 'Modifica bozza';
-$lang['btn_recover'] = 'Ripristina bozza';
-$lang['btn_draftdel'] = 'Cancella bozza';
-$lang['loggedinas'] = 'Collegato come';
-$lang['user'] = 'Nome utente';
-$lang['pass'] = 'Password';
-$lang['newpass'] = 'Nuova password';
-$lang['oldpass'] = 'Conferma password corrente';
-$lang['passchk'] = 'Ripeti password';
-$lang['remember'] = 'Ricorda automaticamente';
-$lang['fullname'] = 'Nome completo';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Registrazione';
-$lang['profile'] = 'Profilo utente';
-$lang['badlogin'] = 'Il nome utente o la password non sono validi.';
-$lang['minoredit'] = 'Modifiche minori';
-$lang['draftdate'] = 'Bozza salvata in automatico il';
-$lang['regmissing'] = 'Devi riempire tutti i campi.';
-$lang['reguexists'] = 'Il nome utente inserito esiste già .';
-$lang['regsuccess'] = 'L\'utente è stato creato. La password è stata spedita via e-mail.';
-$lang['regsuccess2'] = 'L\'utente è stato creato.';
-$lang['regmailfail'] = 'Sembra che ci sia stato un errore nell\'invio della e-mail. Per favore contatta il tuo amministratore!';
-$lang['regbadmail'] = 'L\'indirizzo e-mail fornito sembra essere non valido - se pensi che ci sia un errore contatta il tuo amministratore';
-$lang['regbadpass'] = 'Le due password inserite non coincidono, prova di nuovo.';
-$lang['regpwmail'] = 'La tua password DokuWiki';
-$lang['reghere'] = 'Non hai ancora un accesso? Registrati qui.';
-$lang['profna'] = 'Questo wiki non supporta modifiche al profilo';
-$lang['profnochange'] = 'Nessuna modifica, niente da aggiornare.';
-$lang['profnoempty'] = 'Nome o indirizzo email vuoti non sono consentiti.';
-$lang['profchanged'] = 'Aggiornamento del profilo utente riuscito.';
-$lang['pwdforget'] = 'Hai dimenticato la password? Richiedine una nuova';
-$lang['resendna'] = 'Questo wiki non supporta l\'invio di nuove password.';
-$lang['resendpwd'] = 'Invia nuova password per';
-$lang['resendpwdmissing'] = 'Devi riempire tutti i campi.';
-$lang['resendpwdnouser'] = 'Impossibile trovare questo utente nel database.';
-$lang['resendpwdbadauth'] = 'Spiacente, questo codice di autorizzazione non è valido. Assicurati di aver usato il link completo di conferma.';
-$lang['resendpwdconfirm'] = 'Un link di conferma è stato spedito via email.';
-$lang['resendpwdsuccess'] = 'La nuova password è stata spedita via email.';
-$lang['txt_upload'] = 'Seleziona un file da caricare';
-$lang['txt_filename'] = 'Inserisci un "wikiname" (opzionale)';
-$lang['txt_overwrt'] = 'Sovrascrivi file esistente';
-$lang['lockedby'] = 'Attualmente bloccato da';
-$lang['lockexpire'] = 'Il blocco scade alle';
-$lang['willexpire'] = 'Il tuo blocco su questa pagina scadrà tra circa un minuto.\nPer evitare incongruenze usa il pulsante di anteprima per prolungare il periodo di blocco.';
-$lang['notsavedyet'] = 'Le modifiche non salvate andranno perse.\nContinuare?';
-$lang['rssfailed'] = 'Si è verificato un errore cercando questo feed: ';
-$lang['nothingfound'] = 'Nessun risultato trovato.';
-$lang['mediaselect'] = 'Selezione dei file';
-$lang['fileupload'] = 'File caricato';
-$lang['uploadsucc'] = 'Invio riuscito';
-$lang['uploadfail'] = 'Invio fallito. Contatta l\'amministratore.';
-$lang['uploadwrong'] = 'Invio rifiutato. Questa estensione di file non è ammessa';
-$lang['uploadexist'] = 'Il file esiste già . Invio annullato.';
-$lang['uploadbadcontent'] = 'Il contenuto caricato non corrisponde all\'estensione del file %s.';
-$lang['uploadspam'] = 'Il caricamento è stato bloccato dalla lista nera di spam.';
-$lang['uploadxss'] = 'Il caricamento è stato bloccato perchè il contenuto potrebbe essere malizioso.';
-$lang['deletesucc'] = 'Il file "%s" è stato cancellato.';
-$lang['deletefail'] = '"%s" non può essere cancellato - verifica i permessi.';
-$lang['mediainuse'] = 'Il file "%s" non è stato cancellato - è ancora in uso.';
-$lang['namespaces'] = 'Categorie';
-$lang['mediafiles'] = 'File disponibili in';
-$lang['js']['keepopen'] = 'Tieni la finestra aperta durante la selezione';
-$lang['js']['hidedetails'] = 'Nascondi Dettagli';
-$lang['mediausage'] = 'Usa la seguente sintassi per riferirti a questo file:';
-$lang['mediaview'] = 'Mostra file originale';
-$lang['mediaroot'] = 'directory principale';
-$lang['mediaupload'] = 'Carica un file nella categoria corrente. Per creare sottocategorie, falle precedere al nome del file nella casella "Carica come", separandole da due punti (:).';
-$lang['mediaextchange'] = 'Estensione del file modificata da .%s a .%s!';
-$lang['reference'] = 'Riferimenti a';
-$lang['ref_inuse'] = 'Il file non può essere cancellato in quanto è ancora utilizzato dalle seguenti pagine:';
-$lang['ref_hidden'] = 'Sono presenti alcuni riferimenti a pagine per le quali non hai i permessi di lettura';
-$lang['hits'] = 'Occorrenze trovate';
-$lang['quickhits'] = 'Pagine trovate';
-$lang['toc'] = 'Indice';
-$lang['current'] = 'versione corrente';
-$lang['yours'] = 'la tua versione';
-$lang['diff'] = 'differenze con la versione attuale';
-$lang['diff2'] = 'differenze tra le versioni selezionate';
-$lang['line'] = 'Linea';
-$lang['breadcrumb'] = 'Traccia';
-$lang['youarehere'] = 'Ti trovi qui';
-$lang['lastmod'] = 'Ultima modifica';
-$lang['by'] = 'da';
-$lang['deleted'] = 'cancellata';
-$lang['created'] = 'creata';
-$lang['restored'] = 'versione precedente ripristinata';
-$lang['external_edit'] = 'modifica esterna';
-$lang['summary'] = 'Oggetto della modifica';
-$lang['mail_newpage'] = 'pagina aggiunta:';
-$lang['mail_changed'] = 'pagina modificata:';
-$lang['mail_new_user'] = 'Nuovo utente:';
-$lang['mail_upload'] = 'file caricato:';
-$lang['nosmblinks'] = 'I collegamenti con le risorse condivise di Windows funzionano solo con Microsoft Internet Explorer.\nPuoi fare un copia/incolla di questo collegamento.';
-$lang['qb_alert'] = 'Puoi inserire il testo che vuoi formattare.\nSarà aggiunto alla fine del documento.';
-$lang['qb_bold'] = 'Grassetto';
-$lang['qb_italic'] = 'Corsivo';
-$lang['qb_underl'] = 'Sottolineato';
-$lang['qb_code'] = 'Codice';
-$lang['qb_strike'] = 'Barrato';
-$lang['qb_h1'] = 'Intestazione di livello 1';
-$lang['qb_h2'] = 'Intestazione di livello 2';
-$lang['qb_h3'] = 'Intestazione di livello 3';
-$lang['qb_h4'] = 'Intestazione di livello 4';
-$lang['qb_h5'] = 'Intestazione di livello 5';
-$lang['qb_link'] = 'Collegamento interno';
-$lang['qb_extlink'] = 'Collegamento esterno';
-$lang['qb_hr'] = 'Riga orizzontale';
-$lang['qb_ol'] = 'Elenco numerato';
-$lang['qb_ul'] = 'Elenco puntato';
-$lang['qb_media'] = 'Inserisci immagini o altri file';
-$lang['qb_sig'] = 'Inserisci la firma';
-$lang['qb_smileys'] = 'Smiley';
-$lang['qb_chars'] = 'Caratteri speciali';
-$lang['del_confirm'] = 'Cancellare questa voce?';
-$lang['admin_register'] = 'Aggiungi un nuovo utente';
-$lang['metaedit'] = 'Modifica metadati';
-$lang['metasaveerr'] = 'Scrittura metadati fallita';
-$lang['metasaveok'] = 'Metadati salvati';
-$lang['img_backto'] = 'Torna a';
-$lang['img_title'] = 'Titolo';
-$lang['img_caption'] = 'Descrizione';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nome File';
-$lang['img_fsize'] = 'Dimensione';
-$lang['img_artist'] = 'Autore';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Parole chiave';
-$lang['subscribe_success'] = '%s è stato aggiunto alla lista di sottoscrizione per la pagina %s';
-$lang['subscribe_error'] = 'Si è verificato un errore durante l\'aggiunta di %s alla lista di sottoscrizione per la pagina %s';
-$lang['subscribe_noaddress'] = 'Non c\'è alcun indirizzo associato con il tuo profilo, non puoi sottoscriverti ad alcuna lista';
-$lang['unsubscribe_success'] = '%s è stato rimosso dalla lista di sottoscrizione per la pagina %s';
-$lang['unsubscribe_error'] = 'Si è verificato un errore durante la rimozione di %s dalla lista di sottoscrizione per la pagina %s';
-$lang['authmodfailed'] = 'La configurazione dell\'autenticazione non è corretta. Per favore informa l\'amministratore di questo Wiki.';
-$lang['authtempfail'] = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, per favore informa l\'amministratore di questo Wiki.';
-$lang['i_chooselang'] = 'Scegli la lingua';
-$lang['i_installer'] = 'Installazione DokuWiki';
-$lang['i_wikiname'] = 'Nome Wiki';
-$lang['i_enableacl'] = 'Abilita ACL (consigliato)';
-$lang['i_superuser'] = 'Amministratore';
-$lang['i_problems'] = 'Si sono verificati problemi durante l\'installazione, indicati di seguito. Non è possibile continuare finché non saranno risolti.';
-$lang['i_modified'] = 'Per motivi di sicurezza questa procedura funziona solamente con un\'installazione Dokuwiki nuova e non modificata.
- Dovresti ri-estrarre i file dal pacchetto scaricato oppure consultare tutte le
- <a href="http://wiki.splitbrain.org/wiki:install">istruzioni per l\'installazione di Dokuwiki</a>';
-$lang['i_funcna'] = 'La funzione PHP <code>%s</code> non è disponibile. Forse il tuo provider l\'ha disabilitata per qualche motivo?';
-$lang['i_phpver'] = 'La versione di PHP <code>%s</code> è inferiore a quella richiesta <code>%s</code>. Devi aggiornare l\'installazione di PHP.';
-$lang['i_permfail'] = 'DokuWiki non può scrivere <code>%s</code>. E\' necessario correggere i permessi per questa directory!';
-$lang['i_confexists'] = '<code>%s</code> esiste già ';
-$lang['i_writeerr'] = 'Impossibile creare <code>%s</code>. E\' necessario verificare i permessi della directory/file e creare il file manualmente.';
-$lang['i_badhash'] = 'dokuwiki.php (hash=<code>%s</code>) non riconosciuto o modificato';
-$lang['i_badval'] = '<code>%s</code> - valore vuoto o non valido';
-$lang['i_success'] = 'La configurazione è stata completata correttamente. E\' ora possibile cancellare il file install.php. Continuare con
- <a href="doku.php">il nuovo DokuWiki</a>.';
-$lang['i_failure'] = 'Si sono verificati errori durante la scrittura dei file di configurazione. Potrebbe essere necessario correggerli manualmente prima di poter utilizzare <a href="doku.php">il nuovo DokuWiki</a>.';
-$lang['i_policy'] = 'Policy di accesso iniziali';
-$lang['i_pol0'] = 'Wiki Aperto (lettura, scrittura, caricamento file per tutti)';
-$lang['i_pol1'] = 'Wiki Pubblico (lettura per tutti, scrittura e caricamento file per gli utenti registrati)';
-$lang['i_pol2'] = 'Wiki Chiuso (lettura, scrittura, caricamento file solamente per gli utenti registrati)';
-$lang['i_retry'] = 'Riprova';
+<?php
+/**
+ * Italian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Giorgio Vecchiocattivi <giorgio at vecchio.it>
+ * @author Roberto Bolli <http://www.rbnet.it/>
+ * @author Silvia Sargentoni <polinnia at tin.it>
+ * @author Diego Pierotto <ita.translations at tiscali.it>
+ * @author Diego Pierotto ita.translations at tiscali.it
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Modifica questa pagina';
+$lang['btn_source'] = 'Mostra sorgente';
+$lang['btn_show'] = 'Mostra pagina';
+$lang['btn_create'] = 'Crea questa pagina';
+$lang['btn_search'] = 'Cerca';
+$lang['btn_save'] = 'Salva';
+$lang['btn_preview'] = 'Anteprima';
+$lang['btn_top'] = 'Torna su';
+$lang['btn_newer'] = '<< più recenti';
+$lang['btn_older'] = 'meno recenti >>';
+$lang['btn_revs'] = 'Revisioni precedenti';
+$lang['btn_recent'] = 'Ultime modifiche';
+$lang['btn_upload'] = 'Invia file';
+$lang['btn_cancel'] = 'Annulla';
+$lang['btn_index'] = 'Indice';
+$lang['btn_secedit'] = 'Modifica';
+$lang['btn_login'] = 'Entra';
+$lang['btn_logout'] = 'Esci';
+$lang['btn_admin'] = 'Amministrazione';
+$lang['btn_update'] = 'Aggiorna';
+$lang['btn_delete'] = 'Cancella';
+$lang['btn_back'] = 'Indietro';
+$lang['btn_backlink'] = 'Backlinks';
+$lang['btn_backtomedia'] = 'Torna alla selezione file';
+$lang['btn_subscribe'] = 'Sottoscrivi modifiche';
+$lang['btn_unsubscribe'] = 'Cancella sottoscrizione';
+$lang['btn_subscribens'] = 'Sottoscrivi modifiche della categoria';
+$lang['btn_unsubscribens'] = 'Cancella sottoscrizione modifiche della categoria';
+$lang['btn_profile'] = 'Aggiorna profilo';
+$lang['btn_reset'] = 'Annulla';
+$lang['btn_resendpwd'] = 'Invia nuova password';
+$lang['btn_draft'] = 'Modifica bozza';
+$lang['btn_recover'] = 'Ripristina bozza';
+$lang['btn_draftdel'] = 'Cancella bozza';
+$lang['loggedinas'] = 'Collegato come';
+$lang['user'] = 'Nome utente';
+$lang['pass'] = 'Password';
+$lang['newpass'] = 'Nuova password';
+$lang['oldpass'] = 'Conferma password corrente';
+$lang['passchk'] = 'Ripeti password';
+$lang['remember'] = 'Ricorda automaticamente';
+$lang['fullname'] = 'Nome completo';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Registrazione';
+$lang['profile'] = 'Profilo utente';
+$lang['badlogin'] = 'Il nome utente o la password non sono validi.';
+$lang['minoredit'] = 'Modifiche minori';
+$lang['draftdate'] = 'Bozza salvata in automatico il';
+$lang['regmissing'] = 'Devi riempire tutti i campi.';
+$lang['reguexists'] = 'Il nome utente inserito esiste già .';
+$lang['regsuccess'] = 'L\'utente è stato creato. La password è stata spedita via e-mail.';
+$lang['regsuccess2'] = 'L\'utente è stato creato.';
+$lang['regmailfail'] = 'Sembra che ci sia stato un errore nell\'invio della e-mail. Per favore contatta il tuo amministratore!';
+$lang['regbadmail'] = 'L\'indirizzo e-mail fornito sembra essere non valido - se pensi che ci sia un errore contatta il tuo amministratore';
+$lang['regbadpass'] = 'Le due password inserite non coincidono, prova di nuovo.';
+$lang['regpwmail'] = 'La tua password DokuWiki';
+$lang['reghere'] = 'Non hai ancora un accesso? Registrati qui.';
+$lang['profna'] = 'Questo wiki non supporta modifiche al profilo';
+$lang['profnochange'] = 'Nessuna modifica, niente da aggiornare.';
+$lang['profnoempty'] = 'Nome o indirizzo email vuoti non sono consentiti.';
+$lang['profchanged'] = 'Aggiornamento del profilo utente riuscito.';
+$lang['pwdforget'] = 'Hai dimenticato la password? Richiedine una nuova';
+$lang['resendna'] = 'Questo wiki non supporta l\'invio di nuove password.';
+$lang['resendpwd'] = 'Invia nuova password per';
+$lang['resendpwdmissing'] = 'Devi riempire tutti i campi.';
+$lang['resendpwdnouser'] = 'Impossibile trovare questo utente nel database.';
+$lang['resendpwdbadauth'] = 'Spiacente, questo codice di autorizzazione non è valido. Assicurati di aver usato il link completo di conferma.';
+$lang['resendpwdconfirm'] = 'Un link di conferma è stato spedito via email.';
+$lang['resendpwdsuccess'] = 'La nuova password è stata spedita via email.';
+$lang['txt_upload'] = 'Seleziona un file da caricare';
+$lang['txt_filename'] = 'Inserisci un "wikiname" (opzionale)';
+$lang['txt_overwrt'] = 'Sovrascrivi file esistente';
+$lang['lockedby'] = 'Attualmente bloccato da';
+$lang['lockexpire'] = 'Il blocco scade alle';
+$lang['willexpire'] = 'Il tuo blocco su questa pagina scadrà tra circa un minuto.\nPer evitare incongruenze usa il pulsante di anteprima per prolungare il periodo di blocco.';
+$lang['notsavedyet'] = 'Le modifiche non salvate andranno perse.\nContinuare?';
+$lang['rssfailed'] = 'Si è verificato un errore cercando questo feed: ';
+$lang['nothingfound'] = 'Nessun risultato trovato.';
+$lang['mediaselect'] = 'Selezione dei file';
+$lang['fileupload'] = 'File caricato';
+$lang['uploadsucc'] = 'Invio riuscito';
+$lang['uploadfail'] = 'Invio fallito. Contatta l\'amministratore.';
+$lang['uploadwrong'] = 'Invio rifiutato. Questa estensione di file non è ammessa';
+$lang['uploadexist'] = 'Il file esiste già . Invio annullato.';
+$lang['uploadbadcontent'] = 'Il contenuto caricato non corrisponde all\'estensione del file %s.';
+$lang['uploadspam'] = 'Il caricamento è stato bloccato dalla lista nera di spam.';
+$lang['uploadxss'] = 'Il caricamento è stato bloccato perchè il contenuto potrebbe essere malizioso.';
+$lang['deletesucc'] = 'Il file "%s" è stato cancellato.';
+$lang['deletefail'] = '"%s" non può essere cancellato - verifica i permessi.';
+$lang['mediainuse'] = 'Il file "%s" non è stato cancellato - è ancora in uso.';
+$lang['namespaces'] = 'Categorie';
+$lang['mediafiles'] = 'File disponibili in';
+$lang['js']['keepopen'] = 'Tieni la finestra aperta durante la selezione';
+$lang['js']['hidedetails'] = 'Nascondi Dettagli';
+$lang['mediausage'] = 'Usa la seguente sintassi per riferirti a questo file:';
+$lang['mediaview'] = 'Mostra file originale';
+$lang['mediaroot'] = 'directory principale';
+$lang['mediaupload'] = 'Carica un file nella categoria corrente. Per creare sottocategorie, falle precedere al nome del file nella casella "Carica come", separandole da due punti (:).';
+$lang['mediaextchange'] = 'Estensione del file modificata da .%s a .%s!';
+$lang['reference'] = 'Riferimenti a';
+$lang['ref_inuse'] = 'Il file non può essere cancellato in quanto è ancora utilizzato dalle seguenti pagine:';
+$lang['ref_hidden'] = 'Sono presenti alcuni riferimenti a pagine per le quali non hai i permessi di lettura';
+$lang['hits'] = 'Occorrenze trovate';
+$lang['quickhits'] = 'Pagine trovate';
+$lang['toc'] = 'Indice';
+$lang['current'] = 'versione corrente';
+$lang['yours'] = 'la tua versione';
+$lang['diff'] = 'differenze con la versione attuale';
+$lang['diff2'] = 'differenze tra le versioni selezionate';
+$lang['line'] = 'Linea';
+$lang['breadcrumb'] = 'Traccia';
+$lang['youarehere'] = 'Ti trovi qui';
+$lang['lastmod'] = 'Ultima modifica';
+$lang['by'] = 'da';
+$lang['deleted'] = 'cancellata';
+$lang['created'] = 'creata';
+$lang['restored'] = 'versione precedente ripristinata';
+$lang['external_edit'] = 'modifica esterna';
+$lang['summary'] = 'Oggetto della modifica';
+$lang['mail_newpage'] = 'pagina aggiunta:';
+$lang['mail_changed'] = 'pagina modificata:';
+$lang['mail_new_user'] = 'Nuovo utente:';
+$lang['mail_upload'] = 'file caricato:';
+$lang['nosmblinks'] = 'I collegamenti con le risorse condivise di Windows funzionano solo con Microsoft Internet Explorer.\nPuoi fare un copia/incolla di questo collegamento.';
+$lang['qb_alert'] = 'Puoi inserire il testo che vuoi formattare.\nSarà aggiunto alla fine del documento.';
+$lang['qb_bold'] = 'Grassetto';
+$lang['qb_italic'] = 'Corsivo';
+$lang['qb_underl'] = 'Sottolineato';
+$lang['qb_code'] = 'Codice';
+$lang['qb_strike'] = 'Barrato';
+$lang['qb_h1'] = 'Intestazione di livello 1';
+$lang['qb_h2'] = 'Intestazione di livello 2';
+$lang['qb_h3'] = 'Intestazione di livello 3';
+$lang['qb_h4'] = 'Intestazione di livello 4';
+$lang['qb_h5'] = 'Intestazione di livello 5';
+$lang['qb_link'] = 'Collegamento interno';
+$lang['qb_extlink'] = 'Collegamento esterno';
+$lang['qb_hr'] = 'Riga orizzontale';
+$lang['qb_ol'] = 'Elenco numerato';
+$lang['qb_ul'] = 'Elenco puntato';
+$lang['qb_media'] = 'Inserisci immagini o altri file';
+$lang['qb_sig'] = 'Inserisci la firma';
+$lang['qb_smileys'] = 'Smiley';
+$lang['qb_chars'] = 'Caratteri speciali';
+$lang['del_confirm'] = 'Cancellare questa voce?';
+$lang['admin_register'] = 'Aggiungi un nuovo utente';
+$lang['metaedit'] = 'Modifica metadati';
+$lang['metasaveerr'] = 'Scrittura metadati fallita';
+$lang['metasaveok'] = 'Metadati salvati';
+$lang['img_backto'] = 'Torna a';
+$lang['img_title'] = 'Titolo';
+$lang['img_caption'] = 'Descrizione';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Nome File';
+$lang['img_fsize'] = 'Dimensione';
+$lang['img_artist'] = 'Autore';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Formato';
+$lang['img_camera'] = 'Camera';
+$lang['img_keywords'] = 'Parole chiave';
+$lang['subscribe_success'] = '%s è stato aggiunto alla lista di sottoscrizione per la pagina %s';
+$lang['subscribe_error'] = 'Si è verificato un errore durante l\'aggiunta di %s alla lista di sottoscrizione per la pagina %s';
+$lang['subscribe_noaddress'] = 'Non c\'è alcun indirizzo associato con il tuo profilo, non puoi sottoscriverti ad alcuna lista';
+$lang['unsubscribe_success'] = '%s è stato rimosso dalla lista di sottoscrizione per la pagina %s';
+$lang['unsubscribe_error'] = 'Si è verificato un errore durante la rimozione di %s dalla lista di sottoscrizione per la pagina %s';
+$lang['authmodfailed'] = 'La configurazione dell\'autenticazione non è corretta. Per favore informa l\'amministratore di questo Wiki.';
+$lang['authtempfail'] = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, per favore informa l\'amministratore di questo Wiki.';
+$lang['i_chooselang'] = 'Scegli la lingua';
+$lang['i_installer'] = 'Installazione DokuWiki';
+$lang['i_wikiname'] = 'Nome Wiki';
+$lang['i_enableacl'] = 'Abilita ACL (consigliato)';
+$lang['i_superuser'] = 'Amministratore';
+$lang['i_problems'] = 'Si sono verificati problemi durante l\'installazione, indicati di seguito. Non è possibile continuare finché non saranno risolti.';
+$lang['i_modified'] = 'Per motivi di sicurezza questa procedura funziona solamente con un\'installazione Dokuwiki nuova e non modificata.
+ Dovresti ri-estrarre i file dal pacchetto scaricato oppure consultare tutte le
+ <a href="http://wiki.splitbrain.org/wiki:install">istruzioni per l\'installazione di Dokuwiki</a>';
+$lang['i_funcna'] = 'La funzione PHP <code>%s</code> non è disponibile. Forse il tuo provider l\'ha disabilitata per qualche motivo?';
+$lang['i_phpver'] = 'La versione di PHP <code>%s</code> è inferiore a quella richiesta <code>%s</code>. Devi aggiornare l\'installazione di PHP.';
+$lang['i_permfail'] = 'DokuWiki non può scrivere <code>%s</code>. E\' necessario correggere i permessi per questa directory!';
+$lang['i_confexists'] = '<code>%s</code> esiste già ';
+$lang['i_writeerr'] = 'Impossibile creare <code>%s</code>. E\' necessario verificare i permessi della directory/file e creare il file manualmente.';
+$lang['i_badhash'] = 'dokuwiki.php (hash=<code>%s</code>) non riconosciuto o modificato';
+$lang['i_badval'] = '<code>%s</code> - valore vuoto o non valido';
+$lang['i_success'] = 'La configurazione è stata completata correttamente. E\' ora possibile cancellare il file install.php. Continuare con
+ <a href="doku.php">il nuovo DokuWiki</a>.';
+$lang['i_failure'] = 'Si sono verificati errori durante la scrittura dei file di configurazione. Potrebbe essere necessario correggerli manualmente prima di poter utilizzare <a href="doku.php">il nuovo DokuWiki</a>.';
+$lang['i_policy'] = 'Policy di accesso iniziali';
+$lang['i_pol0'] = 'Wiki Aperto (lettura, scrittura, caricamento file per tutti)';
+$lang['i_pol1'] = 'Wiki Pubblico (lettura per tutti, scrittura e caricamento file per gli utenti registrati)';
+$lang['i_pol2'] = 'Wiki Chiuso (lettura, scrittura, caricamento file solamente per gli utenti registrati)';
+$lang['i_retry'] = 'Riprova';
Modified: site/trunk/www-root/wiki/inc/lang/it/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Pagina bloccata ======
-
-Questa pagina è attualmente bloccata poiché un altro utente sta effettuando delle modifiche.
+====== Pagina bloccata ======
+
+Questa pagina è attualmente bloccata poiché un altro utente sta effettuando delle modifiche.
Devi attendere che l'utente concluda le modifiche o che il blocco scada.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/it/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Login ======
-
-Non sei ancora collegato! Inserisci il tuo nome utente e la tua
-password per autenticarti. E' necessario che il tuo browser abbia i
-cookie abilitati.
-
+====== Login ======
+
+Non sei ancora collegato! Inserisci il tuo nome utente e la tua
+password per autenticarti. E' necessario che il tuo browser abbia i
+cookie abilitati.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Una pagina su DokuWiki è stata aggiunta o modificata. Questi sono i dettagli:
-
-Data : @DATE@
-Browser : @BROWSER@
-Indirizzo IP : @IPADDRESS@
-Nome host : @HOSTNAME@
-Vecchia revisione : @OLDPAGE@
-Nuova revisione : @NEWPAGE@
-Oggetto della modifica : @SUMMARY@
-
- at DIFF@
-
-
---
-Questa e-mail è stata generata da DokuWiki su
- at DOKUWIKIURL@
+Una pagina su DokuWiki è stata aggiunta o modificata. Questi sono i dettagli:
+
+Data : @DATE@
+Browser : @BROWSER@
+Indirizzo IP : @IPADDRESS@
+Nome host : @HOSTNAME@
+Vecchia revisione : @OLDPAGE@
+Nuova revisione : @NEWPAGE@
+Oggetto della modifica : @SUMMARY@
+
+ at DIFF@
+
+
+--
+Questa e-mail è stata generata da DokuWiki su
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/it/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Questo argomento non esiste ancora======
-
-Hai seguito un collegamento ad un argomento che non è ancora stato creato. Se vuoi puoi crearlo tu stesso usando
+======Questo argomento non esiste ancora======
+
+Hai seguito un collegamento ad un argomento che non è ancora stato creato. Se vuoi puoi crearlo tu stesso usando
il pulsante ''Crea questa pagina''.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/it/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Revisione inesistente======
-
-La revisione richiesta non esiste. Usa il pulsante ''Revisioni precedenti''
-per ottenere una lista di revisioni precedenti di questo documento.
+======Revisione inesistente======
+
+La revisione richiesta non esiste. Usa il pulsante ''Revisioni precedenti''
+per ottenere una lista di revisioni precedenti di questo documento.
Modified: site/trunk/www-root/wiki/inc/lang/it/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Ciao, @FULLNAME@!
-
-Questi sono i tuoi dati di accesso per @TITLE@ su @DOKUWIKIURL@
-
-Nome utente : @LOGIN@
-Password : @PASSWORD@
-
---
-Questa e-mail è stata generata da DokuWiki su
- at DOKUWIKIURL@
+Ciao, @FULLNAME@!
+
+Questi sono i tuoi dati di accesso per @TITLE@ su @DOKUWIKIURL@
+
+Nome utente : @LOGIN@
+Password : @PASSWORD@
+
+--
+Questa e-mail è stata generata da DokuWiki su
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/it/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Anteprima======
-
-Questa è un'anteprima di come apparirà il tuo testo. Attenzione: **la pagina non è ancora stata salvata**!.
-
-
+======Anteprima======
+
+Questa è un'anteprima di come apparirà il tuo testo. Attenzione: **la pagina non è ancora stata salvata**!.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/it/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Ciao @FULLNAME@!
-
-Qualcuno ha richiesto una nuova password per il tuo @TITLE@
-login su @DOKUWIKIURL@
-
-Se non hai richiesto tu la nuova password ignora questa email.
-
-Per confermare che la richiesta è stata realmente inviata da te per favore usa il
-seguente link.
-
- at CONFIRM@
-
---
-Questa mail è stata generata da DokuWiki su
- at DOKUWIKIURL@
+Ciao @FULLNAME@!
+
+Qualcuno ha richiesto una nuova password per il tuo @TITLE@
+login su @DOKUWIKIURL@
+
+Se non hai richiesto tu la nuova password ignora questa email.
+
+Per confermare che la richiesta è stata realmente inviata da te per favore usa il
+seguente link.
+
+ at CONFIRM@
+
+--
+Questa mail è stata generata da DokuWiki su
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/it/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Questa pagina è in sola lettura. Puoi visualizzare il sorgente, ma non puoi
-modificarlo. Contatta l'amministratore se pensi che ci sia un errore.
+Questa pagina è in sola lettura. Puoi visualizzare il sorgente, ma non puoi
+modificarlo. Contatta l'amministratore se pensi che ci sia un errore.
Modified: site/trunk/www-root/wiki/inc/lang/it/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Ultime modifiche======
-
-Queste sono le ultime pagine modificate.
-
+======Ultime modifiche======
+
+Queste sono le ultime pagine modificate.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Registrazione nuovo utente ======
-
-Riempi tutte le informazioni seguenti per creare un nuovo account in
-questo wiki. Assicurati di inserire un **indirizzo e-mail valido** -
-la tua nuova password ti sarà inviata con un messaggio di posta
-elettronica. La login dovrebbe essere un [[doku>wiki:pagename|nome di
-pagina]] valido.
-
+====== Registrazione nuovo utente ======
+
+Riempi tutte le informazioni seguenti per creare un nuovo account in
+questo wiki. Assicurati di inserire un **indirizzo e-mail valido** -
+la tua nuova password ti sarà inviata con un messaggio di posta
+elettronica. La login dovrebbe essere un [[doku>wiki:pagename|nome di
+pagina]] valido.
+
Modified: site/trunk/www-root/wiki/inc/lang/it/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Un nuovo utente è stato registrato. Ecco i dettagli:
-
-Nome utente : @NEWUSER@
-Nome completo : @NEWNAME@
-E-Mail : @NEWEMAIL@
-
-Data : @DATE@
-Browser : @BROWSER@
-Indirizzo IP : @IPADDRESS@
-Nome macchina : @HOSTNAME@
-
---
-Questa mail è stata generata da DokuWiki su
- at DOKUWIKIURL@
+Un nuovo utente è stato registrato. Ecco i dettagli:
+
+Nome utente : @NEWUSER@
+Nome completo : @NEWNAME@
+E-Mail : @NEWEMAIL@
+
+Data : @DATE@
+Browser : @BROWSER@
+Indirizzo IP : @IPADDRESS@
+Nome macchina : @HOSTNAME@
+
+--
+Questa mail è stata generata da DokuWiki su
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/it/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Invia nuova password ======
-
-Riempi tutte le informazioni seguenti per ottenere una nuova password per il tuo account su questo wiki.
-La nuova password sarà inviata al tuo indirizzo di posta elettronica registrato.
-Il nome utente deve essere il tuo nome utente di questo wiki.
+====== Invia nuova password ======
+
+Riempi tutte le informazioni seguenti per ottenere una nuova password per il tuo account su questo wiki.
+La nuova password sarà inviata al tuo indirizzo di posta elettronica registrato.
+Il nome utente deve essere il tuo nome utente di questo wiki.
Modified: site/trunk/www-root/wiki/inc/lang/it/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Versione precedente======
-
-Queste sono le precedenti versioni del documento corrente.
-Per ripristinare una versione precedente, seleziona la versione, modificala usando il pulsante ''Modifica questa pagina'' e salvala.
+======Versione precedente======
+
+Queste sono le precedenti versioni del documento corrente.
+Per ripristinare una versione precedente, seleziona la versione, modificala usando il pulsante ''Modifica questa pagina'' e salvala.
Modified: site/trunk/www-root/wiki/inc/lang/it/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Cerca======
-
-Questi sono i risultati della ricerca. Se non hai trovato quello che cercavi, puoi creare una nuova pagina
-con questo titolo usando il pulsante ''Crea questa pagina''.
-
-=====Risultati=====
+======Cerca======
+
+Questi sono i risultati della ricerca. Se non hai trovato quello che cercavi, puoi creare una nuova pagina
+con questo titolo usando il pulsante ''Crea questa pagina''.
+
+=====Risultati=====
Modified: site/trunk/www-root/wiki/inc/lang/it/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Questa è una vecchia versione del documento!**
-----
+**Questa è una vecchia versione del documento!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/it/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,119 +1,119 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-adesso
-alla
-allo
-allora
-altre
-altri
-altro
-anche
-ancora
-avere
-aveva
-avevano
-ben
-buono
-che
-chi
-cinque
-comprare
-con
-consecutivi
-consecutivo
-cosa
-cui
-del
-della
-dello
-dentro
-deve
-devo
-doppio
-due
-ecco
-fare
-fine
-fino
-fra
-gente
-giu
-hai
-hanno
-indietro
-invece
-lavoro
-lei
-loro
-lui
-lungo
-meglio
-molta
-molti
-molto
-nei
-nella
-noi
-nome
-nostro
-nove
-nuovi
-nuovo
-oltre
-ora
-otto
-peggio
-pero
-persone
-piu
-poco
-primo
-promesso
-qua
-quarto
-quasi
-quattro
-quello
-questo
-qui
-quindi
-quinto
-rispetto
-sara
-secondo
-sei
-sembra
-sembrava
-senza
-sette
-sia
-siamo
-siete
-solo
-sono
-sopra
-soprattutto
-sotto
-stati
-stato
-stesso
-su
-subito
-sul
-sulla
-tanto
-tempo
-terzo
-tra
-tre
-triplo
-ultimo
-una
-uno
-va
-vai
-voi
-volte
-vostro
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+adesso
+alla
+allo
+allora
+altre
+altri
+altro
+anche
+ancora
+avere
+aveva
+avevano
+ben
+buono
+che
+chi
+cinque
+comprare
+con
+consecutivi
+consecutivo
+cosa
+cui
+del
+della
+dello
+dentro
+deve
+devo
+doppio
+due
+ecco
+fare
+fine
+fino
+fra
+gente
+giu
+hai
+hanno
+indietro
+invece
+lavoro
+lei
+loro
+lui
+lungo
+meglio
+molta
+molti
+molto
+nei
+nella
+noi
+nome
+nostro
+nove
+nuovi
+nuovo
+oltre
+ora
+otto
+peggio
+pero
+persone
+piu
+poco
+primo
+promesso
+qua
+quarto
+quasi
+quattro
+quello
+questo
+qui
+quindi
+quinto
+rispetto
+sara
+secondo
+sei
+sembra
+sembrava
+senza
+sette
+sia
+siamo
+siete
+solo
+sono
+sopra
+soprattutto
+sotto
+stati
+stato
+stesso
+su
+subito
+sul
+sulla
+tanto
+tempo
+terzo
+tra
+tre
+triplo
+ultimo
+una
+uno
+va
+vai
+voi
+volte
+vostro
Modified: site/trunk/www-root/wiki/inc/lang/it/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-Ciao!
-
-La pagina @PAGE@ di @TITLE@ wiki è stata aggiornata.
-Qui sotto sono elencate le modifiche apportate:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Per cancellare la tua sottoscrizione alla lista di controllo
-per questa pagina collegati al wiki
- at DOKUWIKIURL@ poi spostati su
- at NEWPAGE@
-e seleziona 'Cancella sottoscrizione'.
-
---
-Questa email è stata generata da DokuWiki su
- at DOKUWIKIURL@
+Ciao!
+
+La pagina @PAGE@ di @TITLE@ wiki è stata aggiornata.
+Qui sotto sono elencate le modifiche apportate:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Per cancellare la tua sottoscrizione alla lista di controllo
+per questa pagina collegati al wiki
+ at DOKUWIKIURL@ poi spostati su
+ at NEWPAGE@
+e seleziona 'Cancella sottoscrizione'.
+
+--
+Questa email è stata generata da DokuWiki su
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/it/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Aggiorna il profilo del tuo account ======
-
-E' necessario compilare solo i campi che desideri modificare. Non puoi cambiare il tuo nome utente.
+====== Aggiorna il profilo del tuo account ======
+
+E' necessario compilare solo i campi che desideri modificare. Non puoi cambiare il tuo nome utente.
Modified: site/trunk/www-root/wiki/inc/lang/it/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Un file è stato caricato sul tuo DokuWiki. Seguono i dettagli:
-
-File : @MEDIA@
-Data : @DATE@
-Browser : @BROWSER@
-Indirizzo IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-Dimensione : @SIZE@
-MIME Type : @MIME@
-Utente : @USER@
-
---
-Questa email è stata generata dal DokuWiki di
+Un file è stato caricato sul tuo DokuWiki. Seguono i dettagli:
+
+File : @MEDIA@
+Data : @DATE@
+Browser : @BROWSER@
+Indirizzo IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+Dimensione : @SIZE@
+MIME Type : @MIME@
+Utente : @USER@
+
+--
+Questa email è stata generata dal DokuWiki di
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/it/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/it/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/it/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Modifica bloccata======
-
-Le tue modifiche **non sono state salvate** perché contengono una o
-più parole vietate. Se hai cercato di spammare il Wiki -- bambino cattivo!
-Se pensi che sia un errore contatta l'amministratore di questo Wiki.
-
+======Modifica bloccata======
+
+Le tue modifiche **non sono state salvate** perché contengono una o
+più parole vietate. Se hai cercato di spammare il Wiki -- bambino cattivo!
+Se pensi che sia un errore contatta l'amministratore di questo Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== 管çè
ã¡ãã¥ã¼ ======
-
-DokuWikiã§ç®¡çã§ããã¿ã¹ã¯ã®ä¸è¦§ã§ã
-
+====== 管çè
ã¡ãã¥ã¼ ======
+
+DokuWikiã§ç®¡çã§ããã¿ã¹ã¯ã®ä¸è¦§ã§ã
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ããã¯ãªã³ã¯ ======
-
-å
ã»ã©ã®ææ¸ã«ãªã³ã¯ãã¦ããææ¸ã®ãªã¹ãã§ãã
-
+====== ããã¯ãªã³ã¯ ======
+
+å
ã»ã©ã®ææ¸ã«ãªã³ã¯ãã¦ããææ¸ã®ãªã¹ãã§ãã
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/denied.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== å·®å ======
-
-ãã®ææ¸ã®ç¾å¨ã®ãã¼ã¸ã§ã³ã¨é¸æãããã¼ã¸ã§ã³ã®å·®åã表示ãã¾ãã
-
+====== å·®å ======
+
+ãã®ææ¸ã®ç¾å¨ã®ãã¼ã¸ã§ã³ã¨é¸æãããã¼ã¸ã§ã³ã®å·®åã表示ãã¾ãã
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/draft.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-ç·¨éãã¦''ä¿å''ãã¯ãªãã¯ãã¦ãã ãããWikiã®æ§æã«ã¤ãã¦ã¯ [[wiki:syntax]] ãåèã«ãã¦ãã ãã
-
-å½ç¶ã®ãã¨ã§ããããã®ææ¸ã®è³ªã **åä¸** ãããå ´åã®ã¿ç·¨éãã¦ãã ãããããç·¨éæ¹æ³ãæ§æãç·´ç¿ãããã®ã§ããã° [[playground:playground]] ãå©ç¨ãã¦ãã ããã
-
+ç·¨éãã¦''ä¿å''ãã¯ãªãã¯ãã¦ãã ãããWikiã®æ§æã«ã¤ãã¦ã¯ [[wiki:syntax]] ãåèã«ãã¦ãã ãã
+
+å½ç¶ã®ãã¨ã§ããããã®ææ¸ã®è³ªã **åä¸** ãããå ´åã®ã¿ç·¨éãã¦ãã ãããããç·¨éæ¹æ³ãæ§æãç·´ç¿ãããã®ã§ããã° [[playground:playground]] ãå©ç¨ãã¦ãã ããã
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/editrev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ç´¢å¼ ======
-
-[[doku>wiki:namespaces|åå空é]] ã«åºã¥ããå
¨ã¦ã®ææ¸ã®ç´¢å¼ã§ãã
-
+====== ç´¢å¼ ======
+
+[[doku>wiki:namespaces|åå空é]] ã«åºã¥ããå
¨ã¦ã®ææ¸ã®ç´¢å¼ã§ãã
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-<p>ãã®ãã¼ã¸ã¯ã<a href="http://wiki.splitbrain.org">Dokuwiki</a>ã®ã¤ã³ã¹ãã¼ã«ã¨åæè¨å®ããµãã¼ããã¾ãã
-ãã®ã¤ã³ã¹ãã¼ã©ã¼ã«é¢ãã詳細㯠<a href="http://wiki.splitbrain.org/wiki:installer">documentation page</a> ãåèã«ãã¦ãã ããã</p>
-
-<p>DokuWikiã¯ãé常ã®ãã¡ã¤ã«ã«Wikiãã¼ã¸ã®å
容ã¨é¢é£ããæ
å ±ï¼ä¾ãã°ãç»åãæ¤ç´¢ã¤ã³ããã¯ã¹ãå¤ããªãã¸ã§ã³ãªã©ï¼ãä¿åãã¾ãã
-ãã®ãããDokuWikiã使ç¨ããããã«ã¯ããããã®ãã¡ã¤ã«ãä¿åãããã£ã¬ã¯ããªã«æ¸ãè¾¼ã¿ã®æ¨©éã<strong>å¿
ã</strong>å¿
è¦ã¨ãªãã¾ãã
-ãã®ã¤ã³ã¹ãã¼ã©ã¼ã§ã¯ãã£ã¬ã¯ããªã®æ¨©éã®å¤æ´ã¯è¡ããªããããã³ãã³ãã·ã§ã«ã§æ¨©éã®å¤æ´ãç´æ¥è¡ããã
-ãã¹ãã£ã³ã°ãµã¼ãã¹ãå©ç¨ãã¦ããå ´åã¯ãã®ã³ã³ããã¼ã«ããã«ãããã¯FTPãéãã¦ã権éã®å¤æ´ãè¡ã£ã¦ãã ããã</p>
-
-<p>DokuWikiã¯ããã©ã°ã¤ã³ãã¦ã¼ã¶ã¼ãWikiãã¼ã¸ã¸ã®ã¢ã¯ã»ã¹å¶éãè¨å®ã®å¤æ´ã管çããæ©è½ãæãã¦ããã
-ãã®æ©è½ãæå¹ã«ããããã«å¿
è¦ãª <acronym title="access control list">ACL</acronym> ã®è¨å®ãããã®ã¤ã³ã¹ãã¼ã©ã¼ã«ãã£ã¦è¡ããã¾ãã
-ãã®ç®¡çæ©è½ã¯ãDokuWikiã使ç¨ããä¸ã§å¿
è¦ã§ã¯ããã¾ããããDokuWikiã®ç®¡çãç°¡åã«ãã¦ããã¾ãã</p>
-
-<p>徿¥ã®ãã¼ã¸ã§ã³ã使ç¨ãã¦ããã¦ã¼ã¶ã¼ãç¹å¥ãªã»ããã¢ãããå¿
è¦ãªå ´åã¯ã次ã®ãªã³ã¯å
ãåèã«ãã¦ä¸ãã
-ï¼<a href="http://wiki.splitbrain.org/wiki:install">installation instructions</a>, <a href="http://wiki.splitbrain.org/wiki:config">configuration settings</a>ï¼ã</p>
+<p>ãã®ãã¼ã¸ã¯ã<a href="http://wiki.splitbrain.org">Dokuwiki</a>ã®ã¤ã³ã¹ãã¼ã«ã¨åæè¨å®ããµãã¼ããã¾ãã
+ãã®ã¤ã³ã¹ãã¼ã©ã¼ã«é¢ãã詳細㯠<a href="http://wiki.splitbrain.org/wiki:installer">documentation page</a> ãåèã«ãã¦ãã ããã</p>
+
+<p>DokuWikiã¯ãé常ã®ãã¡ã¤ã«ã«Wikiãã¼ã¸ã®å
容ã¨é¢é£ããæ
å ±ï¼ä¾ãã°ãç»åãæ¤ç´¢ã¤ã³ããã¯ã¹ãå¤ããªãã¸ã§ã³ãªã©ï¼ãä¿åãã¾ãã
+ãã®ãããDokuWikiã使ç¨ããããã«ã¯ããããã®ãã¡ã¤ã«ãä¿åãããã£ã¬ã¯ããªã«æ¸ãè¾¼ã¿ã®æ¨©éã<strong>å¿
ã</strong>å¿
è¦ã¨ãªãã¾ãã
+ãã®ã¤ã³ã¹ãã¼ã©ã¼ã§ã¯ãã£ã¬ã¯ããªã®æ¨©éã®å¤æ´ã¯è¡ããªããããã³ãã³ãã·ã§ã«ã§æ¨©éã®å¤æ´ãç´æ¥è¡ããã
+ãã¹ãã£ã³ã°ãµã¼ãã¹ãå©ç¨ãã¦ããå ´åã¯ãã®ã³ã³ããã¼ã«ããã«ãããã¯FTPãéãã¦ã権éã®å¤æ´ãè¡ã£ã¦ãã ããã</p>
+
+<p>DokuWikiã¯ããã©ã°ã¤ã³ãã¦ã¼ã¶ã¼ãWikiãã¼ã¸ã¸ã®ã¢ã¯ã»ã¹å¶éãè¨å®ã®å¤æ´ã管çããæ©è½ãæãã¦ããã
+ãã®æ©è½ãæå¹ã«ããããã«å¿
è¦ãª <acronym title="access control list">ACL</acronym> ã®è¨å®ãããã®ã¤ã³ã¹ãã¼ã©ã¼ã«ãã£ã¦è¡ããã¾ãã
+ãã®ç®¡çæ©è½ã¯ãDokuWikiã使ç¨ããä¸ã§å¿
è¦ã§ã¯ããã¾ããããDokuWikiã®ç®¡çãç°¡åã«ãã¦ããã¾ãã</p>
+
+<p>徿¥ã®ãã¼ã¸ã§ã³ã使ç¨ãã¦ããã¦ã¼ã¶ã¼ãç¹å¥ãªã»ããã¢ãããå¿
è¦ãªå ´åã¯ã次ã®ãªã³ã¯å
ãåèã«ãã¦ä¸ãã
+ï¼<a href="http://wiki.splitbrain.org/wiki:install">installation instructions</a>, <a href="http://wiki.splitbrain.org/wiki:config">configuration settings</a>ï¼ã</p>
Modified: site/trunk/www-root/wiki/inc/lang/ja/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,204 +1,204 @@
-<?php
-/**
- * japanese language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Yuji Takenaka <webmaster at davilin.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'ææ¸ã®ç·¨é';
-$lang['btn_source'] = 'ã½ã¼ã¹ã®è¡¨ç¤º';
-$lang['btn_show'] = 'ææ¸ã®è¡¨ç¤º';
-$lang['btn_create'] = 'ææ¸ã®ä½æ';
-$lang['btn_search'] = 'æ¤ç´¢';
-$lang['btn_save'] = 'ä¿å';
-$lang['btn_preview'] = '確èª';
-$lang['btn_top'] = 'ææ¸ã®å
é ã¸';
-$lang['btn_newer'] = '<< ããæ°ãã';
-$lang['btn_older'] = 'ããå¤ã >>';
-$lang['btn_revs'] = '以åã®ãªãã¸ã§ã³';
-$lang['btn_recent'] = 'æè¿ã®å¤æ´';
-$lang['btn_upload'] = 'ã¢ãããã¼ã';
-$lang['btn_cancel'] = 'ãã£ã³ã»ã«';
-$lang['btn_index'] = 'ç´¢å¼';
-$lang['btn_secedit'] = 'ç·¨é';
-$lang['btn_login'] = 'ãã°ã¤ã³';
-$lang['btn_logout'] = 'ãã°ã¢ã¦ã';
-$lang['btn_admin'] = '管ç';
-$lang['btn_update'] = 'æ´æ°';
-$lang['btn_delete'] = 'åé¤';
-$lang['btn_back'] = 'æ»ã';
-$lang['btn_backlink'] = 'ããã¯ãªã³ã¯';
-$lang['btn_backtomedia'] = 'ã¡ãã£ã¢ãã¡ã¤ã«é¸æã«æ»ã';
-$lang['btn_subscribe'] = '夿´å±¥æ´é
ä¿¡ã®ç»é²';
-$lang['btn_unsubscribe'] = '夿´å±¥æ´é
ä¿¡ã®è§£é¤';
-$lang['btn_subscribens'] = 'åå空é夿´é
ä¿¡ã®ç»é²';
-$lang['btn_unsubscribens'] = 'åå空é夿´é
ä¿¡ã®è§£é¤';
-$lang['btn_profile'] = 'ã¦ã¼ã¶ã¼æ
å ±ã®æ´æ°';
-$lang['btn_reset'] = 'ãªã»ãã';
-$lang['btn_resendpwd'] = 'ãã¹ã¯ã¼ãåçºè¡';
-$lang['btn_draft'] = 'ãã©ãããç·¨é';
-$lang['btn_recover'] = 'ãã©ããã復å
';
-$lang['btn_draftdel'] = 'ãã©ãããåé¤';
-$lang['loggedinas'] = 'ãããã';
-$lang['user'] = 'ã¦ã¼ã¶ã¼å';
-$lang['pass'] = 'ãã¹ã¯ã¼ã';
-$lang['newpass'] = 'æ°ãããã¹ã¯ã¼ã';
-$lang['oldpass'] = 'ç¾å¨ã®ãã¹ã¯ã¼ã';
-$lang['passchk'] = '確èª';
-$lang['remember'] = 'ã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ããè¨æ¶ãã';
-$lang['fullname'] = 'ãã«ãã¼ã ';
-$lang['email'] = 'ã¡ã¼ã«ã¢ãã¬ã¹';
-$lang['register'] = 'ã¦ã¼ã¶ã¼ç»é²';
-$lang['profile'] = 'ã¦ã¼ã¶ã¼æ
å ±';
-$lang['badlogin'] = 'ã¦ã¼ã¶ã¼åããã¹ã¯ã¼ããéãã¾ãã';
-$lang['minoredit'] = 'å°å¤æ´';
-$lang['draftdate'] = 'ãã©ããä¿åæ¥æï¼';
-$lang['regmissing'] = 'å
¨ã¦ã®é
ç®ãå
¥åãã¦ãã ããã';
-$lang['reguexists'] = 'ãã®ã¦ã¼ã¶ã¼åã¯æ¢ã«åå¨ãã¦ãã¾ãã';
-$lang['regsuccess'] = 'æ°ããã¦ã¼ã¶ã¼ã使ããã¾ããããã¹ã¯ã¼ãã¯ç»é²ããã¡ã¼ã«ã¢ãã¬ã¹å®ã¦ã«éä»ããã¾ãã';
-$lang['regsuccess2'] = 'æ°ããã¦ã¼ã¶ã¼ã使ããã¾ããã';
-$lang['regmailfail'] = 'ãã¹ã¯ã¼ãã®ã¡ã¼ã«éä¿¡ã«å¤±æãã¾ããããææ°ã§ãã管çè
ã¾ã§é£çµ¡ããé¡ããã¾ãã';
-$lang['regbadmail'] = 'ã¡ã¼ã«ã¢ãã¬ã¹ãæå¹ã§ã¯ããã¾ããã';
-$lang['regbadpass'] = '確èªç¨ã®ãã¹ã¯ã¼ããæ£ããããã¾ããã';
-$lang['regpwmail'] = 'ããªãã® DokuWiki ãã¹ã¯ã¼ã';
-$lang['reghere'] = 'ãèªåç¨ã®ã¢ã«ã¦ã³ããåã£ã¦ã¿ã¦ã¯å¦ä½ã§ããï¼';
-$lang['profna'] = 'ã¦ã¼ã¶ã¼æ
å ±ã®å¤æ´ã¯åºæ¥ã¾ãã';
-$lang['profnochange'] = '夿´ç¹ã¯ããã¾ããã§ããã';
-$lang['profnoempty'] = 'ã¦ã¼ã¶ã¼åã¨ã¡ã¼ã«ã¢ãã¬ã¹ãå
¥åãã¦ä¸ããã';
-$lang['profchanged'] = 'ã¦ã¼ã¶ã¼æ
å ±ã¯æ´æ°ããã¾ããã';
-$lang['pwdforget'] = 'ãã¹ã¯ã¼ãããå¿ãã§ããï¼ãã¹ã¯ã¼ãåçºè¡';
-$lang['resendna'] = 'ãã¹ã¯ã¼ãã®åçºè¡ã¯åºæ¥ã¾ããã';
-$lang['resendpwd'] = 'æ°ãããã¹ã¯ã¼ããéä¿¡ãã¾ãï¼';
-$lang['resendpwdmissing'] = 'å
¨ã¦ã®é
ç®ãå
¥åãã¦ä¸ããã';
-$lang['resendpwdnouser'] = 'å
¥åãããã¦ã¼ã¶ã¼ãè¦ã¤ããã¾ããã§ããã';
-$lang['resendpwdbadauth'] = 'ç³ã訳ããã¾ããããã®ç¢ºèªã³ã¼ãã¯æå¹ã§ã¯ããã¾ãããã¡ã¼ã«å
ã«è¨è¼ããããªã³ã¯ã確èªãã¦ãã ããã';
-$lang['resendpwdconfirm'] = '確èªç¨ã®ãªã³ã¯ãå«ãã ã¡ã¼ã«ãéä¿¡ãã¾ããã';
-$lang['resendpwdsuccess'] = 'æ°ãããã¹ã¯ã¼ããã¡ã¼ã«ã§éä¿¡ããã¾ããã';
-$lang['txt_upload'] = 'ã¢ãããã¼ããããã¡ã¤ã«ãé¸ãã§ãã ããã';
-$lang['txt_filename'] = 'ååã夿´ãã¦ã¢ãããã¼ãï¼ãªãã·ã§ã³ï¼';
-$lang['txt_overwrt'] = 'æ¢åã®ãã¡ã¤ã«ã䏿¸ã';
-$lang['lockedby'] = 'ãã®ææ¸ã¯æ¬¡ã®ã¦ã¼ã¶ã«ãã£ã¦ããã¯ããã¦ãã¾ã';
-$lang['lockexpire'] = 'ããã¯æéï¼';
-$lang['willexpire'] = 'ç·¨éä¸ã®ææ¸ã¯ããã¯æéãéãããã¨ãã¦ãã¾ãããã®ã¾ã¾ããã¯ããå ´åã¯ãä¸åº¦ææ¸ã®ç¢ºèªãè¡ã£ã¦æéããªã»ãããã¦ãã ããã';
-$lang['notsavedyet'] = '夿´ã¯ä¿åããã¾ããããã®ã¾ã¾å¦çãç¶ãã¦ããããã§ããï¼';
-$lang['rssfailed'] = 'RSSã®åãåºãã«å¤±æãã¾ããï¼';
-$lang['nothingfound'] = 'è©²å½ææ¸ã¯ããã¾ããã§ããã';
-$lang['mediaselect'] = 'ã¡ãã£ã¢ãã¡ã¤ã«ã鏿';
-$lang['fileupload'] = 'ã¡ãã£ã¢ãã¡ã¤ã«ãã¢ãããã¼ã';
-$lang['uploadsucc'] = 'ã¢ãããã¼ãå®äº';
-$lang['uploadfail'] = 'ã¢ãããã¼ãã«å¤±æãã¾ãããæ¨©éãããã¾ããã';
-$lang['uploadwrong'] = 'ã¢ãããã¼ãã¯æå¦ããã¾ããããã®æ¡å¼µåã¯è¨±å¯ããã¦ãã¾ããã';
-$lang['uploadexist'] = 'ååã®ãã¡ã¤ã«ãåå¨ãããããã¢ãããã¼ãã§ãã¾ããã';
-$lang['uploadbadcontent'] = 'ã¢ãããã¼ãããããã¡ã¤ã«ã®å
容ã¯ãæ¡å¼µå %s ã¨ä¸è´ãã¾ããã';
-$lang['uploadspam'] = 'ã¹ãã ãã©ãã¯ãªã¹ãã«ããã¢ãããã¼ãã鮿ããã¾ããã';
-$lang['uploadxss'] = 'æªæã®ããå
容ã§ããå¯è½æ§ã«ãããã¢ãããã¼ãã鮿ããã¾ããã';
-$lang['deletesucc'] = 'ãã¡ã¤ã« "%s" ã¯åé¤ããã¾ããã';
-$lang['deletefail'] = 'ãã¡ã¤ã« "%s" ãåé¤ã§ãã¾ãããæ¨©éã確èªãã¦ä¸ããã';
-$lang['mediainuse'] = 'ãã¡ã¤ã« "%s" ã¯ä½¿ç¨ä¸ã®ãããåé¤ããã¾ããã§ããã';
-$lang['namespaces'] = 'åå空é';
-$lang['mediafiles'] = 'æå¹ãªãã¡ã¤ã«ï¼';
-$lang['js']['keepopen'] = '鏿ä¸ã¯ã¦ã£ã³ãã¦ãéããªã';
-$lang['js']['hidedetails'] = '詳細ãé表示';
-$lang['mediausage'] = 'ãã®ãã¡ã¤ã«ã使ç¨ããããã«ã¯æ¬¡ã®ææ³ã使ç¨ããï¼';
-$lang['mediaview'] = 'ãªãªã¸ãã«ãã¡ã¤ã«ãé²è¦§';
-$lang['mediaroot'] = 'ã«ã¼ã';
-$lang['mediaupload'] = 'ãã¡ã¤ã«ãç¾å¨ã®åå空éã«ã¢ãããã¼ããã¾ããå¯åå空éã使ç¨ããå ´åã«ã¯ããã¡ã¤ã«åã®åã«ã³ãã³ã§åºåã£ã¦è¿½å ãã¦ãã ããã';
-$lang['mediaextchange'] = 'æ¡å¼µåã .%s ãã .%s ã¸å¤æ´ããã¾ããã';
-$lang['reference'] = 'åç
§å
';
-$lang['ref_inuse'] = 'ãã®ãã¡ã¤ã«ã¯ã次ã®ãã¼ã¸ã§ä½¿ç¨ä¸ã®ããåé¤ã§ãã¾ããã';
-$lang['ref_hidden'] = 'ãã®ãã¼ã¸ã«åå¨ããããã¤ãã®åç
§å
ã¯ã権éãç¡ãããèªããã¨ãã§ãã¾ããã';
-$lang['hits'] = 'ããã';
-$lang['quickhits'] = 'ãããããææ¸å';
-$lang['toc'] = 'ç®æ¬¡';
-$lang['current'] = 'ç¾å¨';
-$lang['yours'] = 'ããªãã®ãã¼ã¸ã§ã³';
-$lang['diff'] = 'ç¾å¨ã®ãªãã¸ã§ã³ã¨ã®å·®åã表示';
-$lang['diff2'] = '鏿ãããªãã¸ã§ã³éã®å·®åã表示';
-$lang['line'] = 'ã©ã¤ã³';
-$lang['breadcrumb'] = 'ãã¬ã¼ã¹';
-$lang['youarehere'] = 'ç¾å¨ä½ç½®';
-$lang['lastmod'] = 'æçµæ´æ°';
-$lang['by'] = 'by';
-$lang['deleted'] = 'åé¤';
-$lang['created'] = '使';
-$lang['restored'] = '以åã®ãã¼ã¸ã§ã³ã復å
';
-$lang['external_edit'] = 'å¤é¨ç·¨é';
-$lang['summary'] = 'ãµããªã¼ãç·¨é';
-$lang['mail_newpage'] = 'ææ¸ã®è¿½å ï¼';
-$lang['mail_changed'] = 'ææ¸ã®å¤æ´ï¼';
-$lang['mail_new_user'] = 'æ°è¦ã¦ã¼ã¶ã¼ï¼';
-$lang['mail_upload'] = 'ãã¡ã¤ã«ã®ã¢ãããã¼ãï¼';
-$lang['nosmblinks'] = 'ã¦ã£ã³ãã¦ãºã®å
±æãã©ã«ãã¸ãªã³ã¯ã¯ Microsoft Internet Explorer ã§ã®ã¿å¯è½ã¨ãªãã¾ãã\nå½ç¶ãã«ããã¢ã³ããã¼ã¹ãã使ç¨ã§ãã¾ãã';
-$lang['qb_alert'] = 'ææ¸ã®æå¾ã«æ¿å
¥ãããå®åææ¸ãå
¥åãã¦ä¸ããã';
-$lang['qb_bold'] = '太å';
-$lang['qb_italic'] = 'æä½';
-$lang['qb_underl'] = 'ä¸ç·';
-$lang['qb_code'] = 'ã³ã¼ã';
-$lang['qb_strike'] = 'ææ¶ç·';
-$lang['qb_h1'] = '第ä¸è¦åºã';
-$lang['qb_h2'] = '第äºè¦åºã';
-$lang['qb_h3'] = '第ä¸è¦åºã';
-$lang['qb_h4'] = '第åè¦åºã';
-$lang['qb_h5'] = '第äºè¦åºã';
-$lang['qb_link'] = 'å
é¨ãªã³ã¯';
-$lang['qb_extlink'] = 'å¤é¨ãªã³ã¯';
-$lang['qb_hr'] = '横罫ç·';
-$lang['qb_ol'] = 'è¨å·ä»ããªã¹ã';
-$lang['qb_ul'] = 'è¨å·ãªããªã¹ã';
-$lang['qb_media'] = 'ã¤ã¡ã¼ã¸ããã¡ã¤ã«ã®è¿½å ';
-$lang['qb_sig'] = 'ç½²åã®æ¿å
¥';
-$lang['qb_smileys'] = 'ã¹ãã¤ãªã¼';
-$lang['qb_chars'] = 'ç¹æ®æå';
-$lang['del_confirm'] = '鏿ããé
ç®ãæ¬å½ã«åé¤ãã¾ããï¼';
-$lang['admin_register'] = 'æ°è¦ã¦ã¼ã¶ã¼ä½æ';
-$lang['metaedit'] = 'ã¡ã¿ãã¼ã¿ç·¨é';
-$lang['metasaveerr'] = 'ã¡ã¿ãã¼ã¿ã®æ¸ãè¾¼ã¿ã«å¤±æãã¾ãã';
-$lang['metasaveok'] = 'ã¡ã¿ãã¼ã¿ã¯ä¿åããã¾ãã';
-$lang['img_backto'] = 'æ»ã';
-$lang['img_title'] = 'ã¿ã¤ãã«';
-$lang['img_caption'] = 'è¦åºã';
-$lang['img_date'] = 'æ¥ä»';
-$lang['img_fname'] = 'ãã¡ã¤ã«å';
-$lang['img_fsize'] = 'ãµã¤ãº';
-$lang['img_artist'] = '使è
';
-$lang['img_copyr'] = 'è使¨©';
-$lang['img_format'] = 'ãã©ã¼ããã';
-$lang['img_camera'] = '使ç¨ã«ã¡ã©';
-$lang['img_keywords'] = 'ãã¼ã¯ã¼ã';
-$lang['subscribe_success'] = '夿´å±¥æ´é
ä¿¡ã®ç»é²ãå®äºãã¾ããã';
-$lang['subscribe_error'] = '夿´å±¥æ´é
ä¿¡ã®ç»é²ã«å¤±æãã¾ããã';
-$lang['subscribe_noaddress'] = 'ãã°ã¤ã³ãã¦ããªãããã夿´å±¥æ´é
ä¿¡ã«ç»é²ãããã¨ã¯ã§ãã¾ããã';
-$lang['unsubscribe_success'] = '夿´å±¥æ´é
ä¿¡ã®è§£é¤ãå®äºãã¾ããã';
-$lang['unsubscribe_error'] = '夿´å±¥æ´é
ä¿¡ã®è§£é¤ã«å¤±æãã¾ããã';
-$lang['authmodfailed'] = 'ã¦ã¼ã¶ã¼èªè¨¼ã®è¨å®ãæ£ããããã¾ãããWikiã®ç®¡çè
ã«é£çµ¡ãã¦ä¸ããã';
-$lang['authtempfail'] = 'ã¦ã¼ã¶ã¼èªè¨¼ã䏿çã«ä½¿ç¨ã§ããªããªã£ã¦ãã¾ãããã®ç¶æ
ãç¶ãã¦ããããã§ããã°ãWikiã®ç®¡çè
ã«é£çµ¡ãã¦ä¸ããã';
-$lang['i_chooselang'] = '使ç¨è¨èªã鏿ãã¦ãã ãã';
-$lang['i_installer'] = 'DokuWiki ã¤ã³ã¹ãã¼ã©ã¼';
-$lang['i_wikiname'] = 'Wikiå';
-$lang['i_enableacl'] = 'ACLï¼ã¢ã¯ã»ã¹ç®¡çï¼ã使ç¨ããï¼æ¨å¥¨ï¼';
-$lang['i_superuser'] = 'ã¹ã¼ãã¼ã¦ã¼ã¶ã¼';
-$lang['i_problems'] = 'åé¡ãçºè¦ããã¾ããã以ä¸ã«ç¤ºãåé¡ã解決ããã¾ã§ãã¤ã³ã¹ãã¼ã«ãç¶è¡ã§ãã¾ããã';
-$lang['i_modified'] = 'ã»ãã¥ãªãã£ã®çç±ãããæ°è¦ãããã¯ã«ã¹ã¿ãã¤ãºãã¦ããªã DokuWiki ã«å¯¾ãã¦ã®ã¿ããã®ã¹ã¯ãªããã¯æå¹ã§ãã
- ãã¦ã³ãã¼ãããããã±ã¼ã¸ãåè§£åãã¦ä½¿ç¨ãããã
- <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki ã¤ã³ã¹ãã¼ã«ã¬ã¤ã</a>ãåèã«ãã¦ã¤ã³ã¹ãã¼ã«ãã¦ãã ããã';
-$lang['i_funcna'] = 'PHPã®é¢æ° <code>%s</code> ã使ç¨ã§ãã¾ããããã¹ãã£ã³ã°ä¼ç¤¾ãä½ããã®çç±ã§ç¡å¹ã«ãã¦ããæããããã¾ãã';
-$lang['i_phpver'] = 'PHPã®ãã¼ã¸ã§ã³ <code>%s</code> ãå¿
è¦ãªãã¼ã¸ã§ã³ <code>%s</code> ãã以åã®ãã®ã§ããPHPã®ã¢ããã°ã¬ã¼ããå¿
è¦ã§ãã';
-$lang['i_permfail'] = '<code>%s</code> ã«æ¸ãè¾¼ã¿ã§ãã¾ããããã®ãã£ã¬ã¯ããªã®æ¨©éã確èªãã¦ä¸ããã';
-$lang['i_confexists'] = '<code>%s</code> ã¯æ¢ã«åå¨ãã¾ã';
-$lang['i_writeerr'] = '<code>%s</code> ã使ã§ãã¾ããããã£ã¬ã¯ããªã¨ãã¡ã¤ã«ã®æ¨©éã確èªããããããæåã§ä½æããå¿
è¦ãããã¾ãã';
-$lang['i_badhash'] = 'dokuwiki.php ãèªèã§ããªãããç·¨éããã¦ãã¾ãï¼hash=<code>%s</code>ï¼';
-$lang['i_badval'] = '<code>%s</code> - æ£ãããªãããããã¯å¤ã空ã§ã';
-$lang['i_success'] = 'è¨å®ãã¡ã¤ã«ã¯æ£ãã使ããã¾ããã<a href="doku.php">使ãã DokuWiki</a>ã使ç¨ããã«ã¯ install.php ãåé¤ãã¦ãã ããã';
-$lang['i_failure'] = 'è¨å®ãã¡ã¤ã«ã®ä½æä¸ã«ã¨ã©ã¼ãçºçãã¾ããã<a href="doku.php">使ãã DokuWiki</a>ã使ç¨ããåã«ããããã®åé¡ãæåã§ä¿®æ£ããå¿
è¦ãããã¾ãã';
-$lang['i_policy'] = 'ACLåæè¨å®';
-$lang['i_pol0'] = 'ãªã¼ãã³ Wikiï¼å
¨ã¦ã®äººã«ãé²è¦§ã»æ¸ãè¾¼ã¿ã»ã¢ãããã¼ãã許å¯ï¼';
-$lang['i_pol1'] = 'ãããªã㯠Wikiï¼é²è¦§ã¯å
¨ã¦ã®äººãå¯è½ãæ¸ãè¾¼ã¿ã»ã¢ãããã¼ãã¯ç»é²ã¦ã¼ã¶ã¼ã®ã¿ï¼';
-$lang['i_pol2'] = 'ã¯ãã¼ãºã Wiki (ç»é²ã¦ã¼ã¶ã¼ã«ã®ã¿ä½¿ç¨ã許å¯)';
-$lang['i_retry'] = 'å試è¡';
+<?php
+/**
+ * japanese language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Yuji Takenaka <webmaster at davilin.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'ææ¸ã®ç·¨é';
+$lang['btn_source'] = 'ã½ã¼ã¹ã®è¡¨ç¤º';
+$lang['btn_show'] = 'ææ¸ã®è¡¨ç¤º';
+$lang['btn_create'] = 'ææ¸ã®ä½æ';
+$lang['btn_search'] = 'æ¤ç´¢';
+$lang['btn_save'] = 'ä¿å';
+$lang['btn_preview'] = '確èª';
+$lang['btn_top'] = 'ææ¸ã®å
é ã¸';
+$lang['btn_newer'] = '<< ããæ°ãã';
+$lang['btn_older'] = 'ããå¤ã >>';
+$lang['btn_revs'] = '以åã®ãªãã¸ã§ã³';
+$lang['btn_recent'] = 'æè¿ã®å¤æ´';
+$lang['btn_upload'] = 'ã¢ãããã¼ã';
+$lang['btn_cancel'] = 'ãã£ã³ã»ã«';
+$lang['btn_index'] = 'ç´¢å¼';
+$lang['btn_secedit'] = 'ç·¨é';
+$lang['btn_login'] = 'ãã°ã¤ã³';
+$lang['btn_logout'] = 'ãã°ã¢ã¦ã';
+$lang['btn_admin'] = '管ç';
+$lang['btn_update'] = 'æ´æ°';
+$lang['btn_delete'] = 'åé¤';
+$lang['btn_back'] = 'æ»ã';
+$lang['btn_backlink'] = 'ããã¯ãªã³ã¯';
+$lang['btn_backtomedia'] = 'ã¡ãã£ã¢ãã¡ã¤ã«é¸æã«æ»ã';
+$lang['btn_subscribe'] = '夿´å±¥æ´é
ä¿¡ã®ç»é²';
+$lang['btn_unsubscribe'] = '夿´å±¥æ´é
ä¿¡ã®è§£é¤';
+$lang['btn_subscribens'] = 'åå空é夿´é
ä¿¡ã®ç»é²';
+$lang['btn_unsubscribens'] = 'åå空é夿´é
ä¿¡ã®è§£é¤';
+$lang['btn_profile'] = 'ã¦ã¼ã¶ã¼æ
å ±ã®æ´æ°';
+$lang['btn_reset'] = 'ãªã»ãã';
+$lang['btn_resendpwd'] = 'ãã¹ã¯ã¼ãåçºè¡';
+$lang['btn_draft'] = 'ãã©ãããç·¨é';
+$lang['btn_recover'] = 'ãã©ããã復å
';
+$lang['btn_draftdel'] = 'ãã©ãããåé¤';
+$lang['loggedinas'] = 'ãããã';
+$lang['user'] = 'ã¦ã¼ã¶ã¼å';
+$lang['pass'] = 'ãã¹ã¯ã¼ã';
+$lang['newpass'] = 'æ°ãããã¹ã¯ã¼ã';
+$lang['oldpass'] = 'ç¾å¨ã®ãã¹ã¯ã¼ã';
+$lang['passchk'] = '確èª';
+$lang['remember'] = 'ã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ããè¨æ¶ãã';
+$lang['fullname'] = 'ãã«ãã¼ã ';
+$lang['email'] = 'ã¡ã¼ã«ã¢ãã¬ã¹';
+$lang['register'] = 'ã¦ã¼ã¶ã¼ç»é²';
+$lang['profile'] = 'ã¦ã¼ã¶ã¼æ
å ±';
+$lang['badlogin'] = 'ã¦ã¼ã¶ã¼åããã¹ã¯ã¼ããéãã¾ãã';
+$lang['minoredit'] = 'å°å¤æ´';
+$lang['draftdate'] = 'ãã©ããä¿åæ¥æï¼';
+$lang['regmissing'] = 'å
¨ã¦ã®é
ç®ãå
¥åãã¦ãã ããã';
+$lang['reguexists'] = 'ãã®ã¦ã¼ã¶ã¼åã¯æ¢ã«åå¨ãã¦ãã¾ãã';
+$lang['regsuccess'] = 'æ°ããã¦ã¼ã¶ã¼ã使ããã¾ããããã¹ã¯ã¼ãã¯ç»é²ããã¡ã¼ã«ã¢ãã¬ã¹å®ã¦ã«éä»ããã¾ãã';
+$lang['regsuccess2'] = 'æ°ããã¦ã¼ã¶ã¼ã使ããã¾ããã';
+$lang['regmailfail'] = 'ãã¹ã¯ã¼ãã®ã¡ã¼ã«éä¿¡ã«å¤±æãã¾ããããææ°ã§ãã管çè
ã¾ã§é£çµ¡ããé¡ããã¾ãã';
+$lang['regbadmail'] = 'ã¡ã¼ã«ã¢ãã¬ã¹ãæå¹ã§ã¯ããã¾ããã';
+$lang['regbadpass'] = '確èªç¨ã®ãã¹ã¯ã¼ããæ£ããããã¾ããã';
+$lang['regpwmail'] = 'ããªãã® DokuWiki ãã¹ã¯ã¼ã';
+$lang['reghere'] = 'ãèªåç¨ã®ã¢ã«ã¦ã³ããåã£ã¦ã¿ã¦ã¯å¦ä½ã§ããï¼';
+$lang['profna'] = 'ã¦ã¼ã¶ã¼æ
å ±ã®å¤æ´ã¯åºæ¥ã¾ãã';
+$lang['profnochange'] = '夿´ç¹ã¯ããã¾ããã§ããã';
+$lang['profnoempty'] = 'ã¦ã¼ã¶ã¼åã¨ã¡ã¼ã«ã¢ãã¬ã¹ãå
¥åãã¦ä¸ããã';
+$lang['profchanged'] = 'ã¦ã¼ã¶ã¼æ
å ±ã¯æ´æ°ããã¾ããã';
+$lang['pwdforget'] = 'ãã¹ã¯ã¼ãããå¿ãã§ããï¼ãã¹ã¯ã¼ãåçºè¡';
+$lang['resendna'] = 'ãã¹ã¯ã¼ãã®åçºè¡ã¯åºæ¥ã¾ããã';
+$lang['resendpwd'] = 'æ°ãããã¹ã¯ã¼ããéä¿¡ãã¾ãï¼';
+$lang['resendpwdmissing'] = 'å
¨ã¦ã®é
ç®ãå
¥åãã¦ä¸ããã';
+$lang['resendpwdnouser'] = 'å
¥åãããã¦ã¼ã¶ã¼ãè¦ã¤ããã¾ããã§ããã';
+$lang['resendpwdbadauth'] = 'ç³ã訳ããã¾ããããã®ç¢ºèªã³ã¼ãã¯æå¹ã§ã¯ããã¾ãããã¡ã¼ã«å
ã«è¨è¼ããããªã³ã¯ã確èªãã¦ãã ããã';
+$lang['resendpwdconfirm'] = '確èªç¨ã®ãªã³ã¯ãå«ãã ã¡ã¼ã«ãéä¿¡ãã¾ããã';
+$lang['resendpwdsuccess'] = 'æ°ãããã¹ã¯ã¼ããã¡ã¼ã«ã§éä¿¡ããã¾ããã';
+$lang['txt_upload'] = 'ã¢ãããã¼ããããã¡ã¤ã«ãé¸ãã§ãã ããã';
+$lang['txt_filename'] = 'ååã夿´ãã¦ã¢ãããã¼ãï¼ãªãã·ã§ã³ï¼';
+$lang['txt_overwrt'] = 'æ¢åã®ãã¡ã¤ã«ã䏿¸ã';
+$lang['lockedby'] = 'ãã®ææ¸ã¯æ¬¡ã®ã¦ã¼ã¶ã«ãã£ã¦ããã¯ããã¦ãã¾ã';
+$lang['lockexpire'] = 'ããã¯æéï¼';
+$lang['willexpire'] = 'ç·¨éä¸ã®ææ¸ã¯ããã¯æéãéãããã¨ãã¦ãã¾ãããã®ã¾ã¾ããã¯ããå ´åã¯ãä¸åº¦ææ¸ã®ç¢ºèªãè¡ã£ã¦æéããªã»ãããã¦ãã ããã';
+$lang['notsavedyet'] = '夿´ã¯ä¿åããã¾ããããã®ã¾ã¾å¦çãç¶ãã¦ããããã§ããï¼';
+$lang['rssfailed'] = 'RSSã®åãåºãã«å¤±æãã¾ããï¼';
+$lang['nothingfound'] = 'è©²å½ææ¸ã¯ããã¾ããã§ããã';
+$lang['mediaselect'] = 'ã¡ãã£ã¢ãã¡ã¤ã«ã鏿';
+$lang['fileupload'] = 'ã¡ãã£ã¢ãã¡ã¤ã«ãã¢ãããã¼ã';
+$lang['uploadsucc'] = 'ã¢ãããã¼ãå®äº';
+$lang['uploadfail'] = 'ã¢ãããã¼ãã«å¤±æãã¾ãããæ¨©éãããã¾ããã';
+$lang['uploadwrong'] = 'ã¢ãããã¼ãã¯æå¦ããã¾ããããã®æ¡å¼µåã¯è¨±å¯ããã¦ãã¾ããã';
+$lang['uploadexist'] = 'ååã®ãã¡ã¤ã«ãåå¨ãããããã¢ãããã¼ãã§ãã¾ããã';
+$lang['uploadbadcontent'] = 'ã¢ãããã¼ãããããã¡ã¤ã«ã®å
容ã¯ãæ¡å¼µå %s ã¨ä¸è´ãã¾ããã';
+$lang['uploadspam'] = 'ã¹ãã ãã©ãã¯ãªã¹ãã«ããã¢ãããã¼ãã鮿ããã¾ããã';
+$lang['uploadxss'] = 'æªæã®ããå
容ã§ããå¯è½æ§ã«ãããã¢ãããã¼ãã鮿ããã¾ããã';
+$lang['deletesucc'] = 'ãã¡ã¤ã« "%s" ã¯åé¤ããã¾ããã';
+$lang['deletefail'] = 'ãã¡ã¤ã« "%s" ãåé¤ã§ãã¾ãããæ¨©éã確èªãã¦ä¸ããã';
+$lang['mediainuse'] = 'ãã¡ã¤ã« "%s" ã¯ä½¿ç¨ä¸ã®ãããåé¤ããã¾ããã§ããã';
+$lang['namespaces'] = 'åå空é';
+$lang['mediafiles'] = 'æå¹ãªãã¡ã¤ã«ï¼';
+$lang['js']['keepopen'] = '鏿ä¸ã¯ã¦ã£ã³ãã¦ãéããªã';
+$lang['js']['hidedetails'] = '詳細ãé表示';
+$lang['mediausage'] = 'ãã®ãã¡ã¤ã«ã使ç¨ããããã«ã¯æ¬¡ã®ææ³ã使ç¨ããï¼';
+$lang['mediaview'] = 'ãªãªã¸ãã«ãã¡ã¤ã«ãé²è¦§';
+$lang['mediaroot'] = 'ã«ã¼ã';
+$lang['mediaupload'] = 'ãã¡ã¤ã«ãç¾å¨ã®åå空éã«ã¢ãããã¼ããã¾ããå¯åå空éã使ç¨ããå ´åã«ã¯ããã¡ã¤ã«åã®åã«ã³ãã³ã§åºåã£ã¦è¿½å ãã¦ãã ããã';
+$lang['mediaextchange'] = 'æ¡å¼µåã .%s ãã .%s ã¸å¤æ´ããã¾ããã';
+$lang['reference'] = 'åç
§å
';
+$lang['ref_inuse'] = 'ãã®ãã¡ã¤ã«ã¯ã次ã®ãã¼ã¸ã§ä½¿ç¨ä¸ã®ããåé¤ã§ãã¾ããã';
+$lang['ref_hidden'] = 'ãã®ãã¼ã¸ã«åå¨ããããã¤ãã®åç
§å
ã¯ã権éãç¡ãããèªããã¨ãã§ãã¾ããã';
+$lang['hits'] = 'ããã';
+$lang['quickhits'] = 'ãããããææ¸å';
+$lang['toc'] = 'ç®æ¬¡';
+$lang['current'] = 'ç¾å¨';
+$lang['yours'] = 'ããªãã®ãã¼ã¸ã§ã³';
+$lang['diff'] = 'ç¾å¨ã®ãªãã¸ã§ã³ã¨ã®å·®åã表示';
+$lang['diff2'] = '鏿ãããªãã¸ã§ã³éã®å·®åã表示';
+$lang['line'] = 'ã©ã¤ã³';
+$lang['breadcrumb'] = 'ãã¬ã¼ã¹';
+$lang['youarehere'] = 'ç¾å¨ä½ç½®';
+$lang['lastmod'] = 'æçµæ´æ°';
+$lang['by'] = 'by';
+$lang['deleted'] = 'åé¤';
+$lang['created'] = '使';
+$lang['restored'] = '以åã®ãã¼ã¸ã§ã³ã復å
';
+$lang['external_edit'] = 'å¤é¨ç·¨é';
+$lang['summary'] = 'ãµããªã¼ãç·¨é';
+$lang['mail_newpage'] = 'ææ¸ã®è¿½å ï¼';
+$lang['mail_changed'] = 'ææ¸ã®å¤æ´ï¼';
+$lang['mail_new_user'] = 'æ°è¦ã¦ã¼ã¶ã¼ï¼';
+$lang['mail_upload'] = 'ãã¡ã¤ã«ã®ã¢ãããã¼ãï¼';
+$lang['nosmblinks'] = 'ã¦ã£ã³ãã¦ãºã®å
±æãã©ã«ãã¸ãªã³ã¯ã¯ Microsoft Internet Explorer ã§ã®ã¿å¯è½ã¨ãªãã¾ãã\nå½ç¶ãã«ããã¢ã³ããã¼ã¹ãã使ç¨ã§ãã¾ãã';
+$lang['qb_alert'] = 'ææ¸ã®æå¾ã«æ¿å
¥ãããå®åææ¸ãå
¥åãã¦ä¸ããã';
+$lang['qb_bold'] = '太å';
+$lang['qb_italic'] = 'æä½';
+$lang['qb_underl'] = 'ä¸ç·';
+$lang['qb_code'] = 'ã³ã¼ã';
+$lang['qb_strike'] = 'ææ¶ç·';
+$lang['qb_h1'] = '第ä¸è¦åºã';
+$lang['qb_h2'] = '第äºè¦åºã';
+$lang['qb_h3'] = '第ä¸è¦åºã';
+$lang['qb_h4'] = '第åè¦åºã';
+$lang['qb_h5'] = '第äºè¦åºã';
+$lang['qb_link'] = 'å
é¨ãªã³ã¯';
+$lang['qb_extlink'] = 'å¤é¨ãªã³ã¯';
+$lang['qb_hr'] = '横罫ç·';
+$lang['qb_ol'] = 'è¨å·ä»ããªã¹ã';
+$lang['qb_ul'] = 'è¨å·ãªããªã¹ã';
+$lang['qb_media'] = 'ã¤ã¡ã¼ã¸ããã¡ã¤ã«ã®è¿½å ';
+$lang['qb_sig'] = 'ç½²åã®æ¿å
¥';
+$lang['qb_smileys'] = 'ã¹ãã¤ãªã¼';
+$lang['qb_chars'] = 'ç¹æ®æå';
+$lang['del_confirm'] = '鏿ããé
ç®ãæ¬å½ã«åé¤ãã¾ããï¼';
+$lang['admin_register'] = 'æ°è¦ã¦ã¼ã¶ã¼ä½æ';
+$lang['metaedit'] = 'ã¡ã¿ãã¼ã¿ç·¨é';
+$lang['metasaveerr'] = 'ã¡ã¿ãã¼ã¿ã®æ¸ãè¾¼ã¿ã«å¤±æãã¾ãã';
+$lang['metasaveok'] = 'ã¡ã¿ãã¼ã¿ã¯ä¿åããã¾ãã';
+$lang['img_backto'] = 'æ»ã';
+$lang['img_title'] = 'ã¿ã¤ãã«';
+$lang['img_caption'] = 'è¦åºã';
+$lang['img_date'] = 'æ¥ä»';
+$lang['img_fname'] = 'ãã¡ã¤ã«å';
+$lang['img_fsize'] = 'ãµã¤ãº';
+$lang['img_artist'] = '使è
';
+$lang['img_copyr'] = 'è使¨©';
+$lang['img_format'] = 'ãã©ã¼ããã';
+$lang['img_camera'] = '使ç¨ã«ã¡ã©';
+$lang['img_keywords'] = 'ãã¼ã¯ã¼ã';
+$lang['subscribe_success'] = '夿´å±¥æ´é
ä¿¡ã®ç»é²ãå®äºãã¾ããã';
+$lang['subscribe_error'] = '夿´å±¥æ´é
ä¿¡ã®ç»é²ã«å¤±æãã¾ããã';
+$lang['subscribe_noaddress'] = 'ãã°ã¤ã³ãã¦ããªãããã夿´å±¥æ´é
ä¿¡ã«ç»é²ãããã¨ã¯ã§ãã¾ããã';
+$lang['unsubscribe_success'] = '夿´å±¥æ´é
ä¿¡ã®è§£é¤ãå®äºãã¾ããã';
+$lang['unsubscribe_error'] = '夿´å±¥æ´é
ä¿¡ã®è§£é¤ã«å¤±æãã¾ããã';
+$lang['authmodfailed'] = 'ã¦ã¼ã¶ã¼èªè¨¼ã®è¨å®ãæ£ããããã¾ãããWikiã®ç®¡çè
ã«é£çµ¡ãã¦ä¸ããã';
+$lang['authtempfail'] = 'ã¦ã¼ã¶ã¼èªè¨¼ã䏿çã«ä½¿ç¨ã§ããªããªã£ã¦ãã¾ãããã®ç¶æ
ãç¶ãã¦ããããã§ããã°ãWikiã®ç®¡çè
ã«é£çµ¡ãã¦ä¸ããã';
+$lang['i_chooselang'] = '使ç¨è¨èªã鏿ãã¦ãã ãã';
+$lang['i_installer'] = 'DokuWiki ã¤ã³ã¹ãã¼ã©ã¼';
+$lang['i_wikiname'] = 'Wikiå';
+$lang['i_enableacl'] = 'ACLï¼ã¢ã¯ã»ã¹ç®¡çï¼ã使ç¨ããï¼æ¨å¥¨ï¼';
+$lang['i_superuser'] = 'ã¹ã¼ãã¼ã¦ã¼ã¶ã¼';
+$lang['i_problems'] = 'åé¡ãçºè¦ããã¾ããã以ä¸ã«ç¤ºãåé¡ã解決ããã¾ã§ãã¤ã³ã¹ãã¼ã«ãç¶è¡ã§ãã¾ããã';
+$lang['i_modified'] = 'ã»ãã¥ãªãã£ã®çç±ãããæ°è¦ãããã¯ã«ã¹ã¿ãã¤ãºãã¦ããªã DokuWiki ã«å¯¾ãã¦ã®ã¿ããã®ã¹ã¯ãªããã¯æå¹ã§ãã
+ ãã¦ã³ãã¼ãããããã±ã¼ã¸ãåè§£åãã¦ä½¿ç¨ãããã
+ <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki ã¤ã³ã¹ãã¼ã«ã¬ã¤ã</a>ãåèã«ãã¦ã¤ã³ã¹ãã¼ã«ãã¦ãã ããã';
+$lang['i_funcna'] = 'PHPã®é¢æ° <code>%s</code> ã使ç¨ã§ãã¾ããããã¹ãã£ã³ã°ä¼ç¤¾ãä½ããã®çç±ã§ç¡å¹ã«ãã¦ããæããããã¾ãã';
+$lang['i_phpver'] = 'PHPã®ãã¼ã¸ã§ã³ <code>%s</code> ãå¿
è¦ãªãã¼ã¸ã§ã³ <code>%s</code> ãã以åã®ãã®ã§ããPHPã®ã¢ããã°ã¬ã¼ããå¿
è¦ã§ãã';
+$lang['i_permfail'] = '<code>%s</code> ã«æ¸ãè¾¼ã¿ã§ãã¾ããããã®ãã£ã¬ã¯ããªã®æ¨©éã確èªãã¦ä¸ããã';
+$lang['i_confexists'] = '<code>%s</code> ã¯æ¢ã«åå¨ãã¾ã';
+$lang['i_writeerr'] = '<code>%s</code> ã使ã§ãã¾ããããã£ã¬ã¯ããªã¨ãã¡ã¤ã«ã®æ¨©éã確èªããããããæåã§ä½æããå¿
è¦ãããã¾ãã';
+$lang['i_badhash'] = 'dokuwiki.php ãèªèã§ããªãããç·¨éããã¦ãã¾ãï¼hash=<code>%s</code>ï¼';
+$lang['i_badval'] = '<code>%s</code> - æ£ãããªãããããã¯å¤ã空ã§ã';
+$lang['i_success'] = 'è¨å®ãã¡ã¤ã«ã¯æ£ãã使ããã¾ããã<a href="doku.php">使ãã DokuWiki</a>ã使ç¨ããã«ã¯ install.php ãåé¤ãã¦ãã ããã';
+$lang['i_failure'] = 'è¨å®ãã¡ã¤ã«ã®ä½æä¸ã«ã¨ã©ã¼ãçºçãã¾ããã<a href="doku.php">使ãã DokuWiki</a>ã使ç¨ããåã«ããããã®åé¡ãæåã§ä¿®æ£ããå¿
è¦ãããã¾ãã';
+$lang['i_policy'] = 'ACLåæè¨å®';
+$lang['i_pol0'] = 'ãªã¼ãã³ Wikiï¼å
¨ã¦ã®äººã«ãé²è¦§ã»æ¸ãè¾¼ã¿ã»ã¢ãããã¼ãã許å¯ï¼';
+$lang['i_pol1'] = 'ãããªã㯠Wikiï¼é²è¦§ã¯å
¨ã¦ã®äººãå¯è½ãæ¸ãè¾¼ã¿ã»ã¢ãããã¼ãã¯ç»é²ã¦ã¼ã¶ã¼ã®ã¿ï¼';
+$lang['i_pol2'] = 'ã¯ãã¼ãºã Wiki (ç»é²ã¦ã¼ã¶ã¼ã«ã®ã¿ä½¿ç¨ã許å¯)';
+$lang['i_retry'] = 'å試è¡';
Modified: site/trunk/www-root/wiki/inc/lang/ja/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/login.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-DokuWiki å
ã®ææ¸ã追å ãããã¯å¤æ´ããã¾ããã詳細ã¯ä»¥ä¸ã®éãã§ãã
-
-æ¥ä» : @DATE@
-ãã©ã¦ã¶ : @BROWSER@
-IPã¢ãã¬ã¹ : @IPADDRESS@
-ãã¹ãå : @HOSTNAME@
-åãªãã¸ã§ã³: @OLDPAGE@
-æ°ãªãã¸ã§ã³: @NEWPAGE@
-ç·¨éã®ãµããª: @SUMMARY@
-ã¦ã¼ã¶ã¼å : @USER@
-
- at DIFF@
-
-
---
-ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
- at DOKUWIKIURL@
+DokuWiki å
ã®ææ¸ã追å ãããã¯å¤æ´ããã¾ããã詳細ã¯ä»¥ä¸ã®éãã§ãã
+
+æ¥ä» : @DATE@
+ãã©ã¦ã¶ : @BROWSER@
+IPã¢ãã¬ã¹ : @IPADDRESS@
+ãã¹ãå : @HOSTNAME@
+åãªãã¸ã§ã³: @OLDPAGE@
+æ°ãªãã¸ã§ã³: @NEWPAGE@
+ç·¨éã®ãµããª: @SUMMARY@
+ã¦ã¼ã¶ã¼å : @USER@
+
+ at DIFF@
+
+
+--
+ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ja/newpage.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/norev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-ããã«ã¡ã¯ @FULLNAME@! ãã
-
- at TITLE@ï¼@DOKUWIKIURL@ï¼ã«ç»é²ãããã¦ã¼ã¶ã¼æ
å ±ã¯ä»¥ä¸ã®éãã§ãã
-
-ã¦ã¼ã¶ã¼å : @LOGIN@
-ãã¹ã¯ã¼ã : @PASSWORD@
-
---
-ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
- at DOKUWIKIURL@
+ããã«ã¡ã¯ @FULLNAME@! ãã
+
+ at TITLE@ï¼@DOKUWIKIURL@ï¼ã«ç»é²ãããã¦ã¼ã¶ã¼æ
å ±ã¯ä»¥ä¸ã®éãã§ãã
+
+ã¦ã¼ã¶ã¼å : @LOGIN@
+ãã¹ã¯ã¼ã : @PASSWORD@
+
+--
+ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ja/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ãã¬ãã¥ã¼ ======
-
-ç·¨éä¸ã®ææ¸ã®ãã¬ãã¥ã¼ã§ãã確èªç¨ãªã®ã§**ä¿åããã¦ããªã**ãã¨ã«æ³¨æãã¦ãã ããã
-
+====== ãã¬ãã¥ã¼ ======
+
+ç·¨éä¸ã®ææ¸ã®ãã¬ãã¥ã¼ã§ãã確èªç¨ãªã®ã§**ä¿åããã¦ããªã**ãã¨ã«æ³¨æãã¦ãã ããã
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-ããã«ã¡ã¯ @FULLNAME@ ãã
-
- at TITLE@ï¼@DOKUWIKIURL@ï¼ã«æ°è¦ãã¹ã¯ã¼ãçºè¡ã®ãªã¯ã¨ã¹ããããã¾ããã
-
-ãããã®ãªã¯ã¨ã¹ãã«è¦ããç¡ããã°ããã®ã¡ã¼ã«ã¯ç¡è¦ãã¦ãã ããã
-
-ãã®ãªã¯ã¨ã¹ããè¡ã£ãæ¬äººã§ããã°ã以ä¸ã®ãªã³ã¯ãã使¥ãå®äºããã¦ãã ããã
-
- at CONFIRM@
-
---
-ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
- at DOKUWIKIURL@
+ããã«ã¡ã¯ @FULLNAME@ ãã
+
+ at TITLE@ï¼@DOKUWIKIURL@ï¼ã«æ°è¦ãã¹ã¯ã¼ãçºè¡ã®ãªã¯ã¨ã¹ããããã¾ããã
+
+ãããã®ãªã¯ã¨ã¹ãã«è¦ããç¡ããã°ããã®ã¡ã¼ã«ã¯ç¡è¦ãã¦ãã ããã
+
+ãã®ãªã¯ã¨ã¹ããè¡ã£ãæ¬äººã§ããã°ã以ä¸ã®ãªã³ã¯ãã使¥ãå®äºããã¦ãã ããã
+
+ at CONFIRM@
+
+--
+ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ja/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== æè¿ã®å¤æ´ ======
-
-以ä¸ã®ææ¸ã¯æè¿æ´æ°ããããã®ã§ãã
-
-
+====== æè¿ã®å¤æ´ ======
+
+以ä¸ã®ææ¸ã¯æè¿æ´æ°ããããã®ã§ãã
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== æ°è¦ã¦ã¼ã¶ã¼ç»é² ======
-
-ãã®Wikiã®ã¦ã¼ã¶ã¼ç»é²ãè¡ãããã«ã¯ã以ä¸ã®æ
å ±ãå
¨ã¦å
¥åãã¦ä¸ããã
-ãã以ä¸ã®é
ç®ã«ãã¹ã¯ã¼ããåå¨ããªãå ´åããã¹ã¯ã¼ãã¯ã¡ã¼ã«ã«ã¦éä¿¡ããã¾ãã®ã§ã
-å¿
ã**æå¹ãª**ã¡ã¼ã«ã¢ãã¬ã¹ãå
¥åãã¦ãã ããã
-ã¾ãããã°ã¤ã³å㯠[[doku>wiki:pagename|pagename]] ã«æºæ ãã¦ããªããã°ãªãã¾ããã
-
+====== æ°è¦ã¦ã¼ã¶ã¼ç»é² ======
+
+ãã®Wikiã®ã¦ã¼ã¶ã¼ç»é²ãè¡ãããã«ã¯ã以ä¸ã®æ
å ±ãå
¨ã¦å
¥åãã¦ä¸ããã
+ãã以ä¸ã®é
ç®ã«ãã¹ã¯ã¼ããåå¨ããªãå ´åããã¹ã¯ã¼ãã¯ã¡ã¼ã«ã«ã¦éä¿¡ããã¾ãã®ã§ã
+å¿
ã**æå¹ãª**ã¡ã¼ã«ã¢ãã¬ã¹ãå
¥åãã¦ãã ããã
+ã¾ãããã°ã¤ã³å㯠[[doku>wiki:pagename|pagename]] ã«æºæ ãã¦ããªããã°ãªãã¾ããã
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-æ°ããã¦ã¼ã¶ã¼ãç»é²ããã¾ãããã¦ã¼ã¶ã¼æ
å ±ã¯ä»¥ä¸ã®éãã§ãã
-
-ã¦ã¼ã¶ã¼å : @NEWUSER@
-ãã«ãã¼ã : @NEWNAME@
-ã¡ã¼ã«ã¢ãã¬ã¹ : @NEWEMAIL@
-
-ç»é²æ¥ : @DATE@
-ãã©ã¦ã¶ : @BROWSER@
-IPã¢ãã¬ã¹ : @IPADDRESS@
-ãã¹ãå : @HOSTNAME@
-
---
-ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
- at DOKUWIKIURL@
+æ°ããã¦ã¼ã¶ã¼ãç»é²ããã¾ãããã¦ã¼ã¶ã¼æ
å ±ã¯ä»¥ä¸ã®éãã§ãã
+
+ã¦ã¼ã¶ã¼å : @NEWUSER@
+ãã«ãã¼ã : @NEWNAME@
+ã¡ã¼ã«ã¢ãã¬ã¹ : @NEWEMAIL@
+
+ç»é²æ¥ : @DATE@
+ãã©ã¦ã¶ : @BROWSER@
+IPã¢ãã¬ã¹ : @IPADDRESS@
+ãã¹ãå : @HOSTNAME@
+
+--
+ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ja/resendpwd.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/revisions.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/searchpage.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ja/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**以åã®ãªãã¸ã§ã³ã®ææ¸ã§ã**
-----
+**以åã®ãªãã¸ã§ã³ã®ææ¸ã§ã**
+----
Modified: site/trunk/www-root/wiki/inc/lang/ja/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# 以ä¸ã¯ãã¤ã³ããã¯ã¹ä½ææã«ç¡è¦ããèªå¥ã®ãªã¹ãã§ããä¸è¡ã«ä¸åèªãã¤è¨å
¥ãã¦ãã ããã
-# UNIXã§ç¨ããããæ¹è¡ã³ã¼ãï¼LFï¼ã使ç¨ãã¦ãã ãã
-# 3æåããçãèªå¥ã¯èªåçã«ç¡è¦ãããã®ã§ããªã¹ãã«å ããå¿
è¦ã¯ããã¾ããã
-# ãã®ãªã¹ãã¯æ¬¡ã®ãµã¤ãããã¨ã«ä½æããã¦ãã¾ãï¼http://www.ranks.nl/stopwords/ï¼
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# 以ä¸ã¯ãã¤ã³ããã¯ã¹ä½ææã«ç¡è¦ããèªå¥ã®ãªã¹ãã§ããä¸è¡ã«ä¸åèªãã¤è¨å
¥ãã¦ãã ããã
+# UNIXã§ç¨ããããæ¹è¡ã³ã¼ãï¼LFï¼ã使ç¨ãã¦ãã ãã
+# 3æåããçãèªå¥ã¯èªåçã«ç¡è¦ãããã®ã§ããªã¹ãã«å ããå¿
è¦ã¯ããã¾ããã
+# ãã®ãªã¹ãã¯æ¬¡ã®ãµã¤ãããã¨ã«ä½æããã¦ãã¾ãï¼http://www.ranks.nl/stopwords/ï¼
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/ja/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-ããã«ã¡ã¯
-
- at TITLE@ å
ã®ãã¼ã¸ @PAGE@ ã¯å¤æ´ããã¾ããã
-夿´å
容ã¯ä»¥ä¸ã®éãã§ãã
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-ãã¼ã¸å¤æ´å±¥æ´é
ä¿¡ãµã¼ãã¹ã®è§£é¤ã¯ã
- at DOKUWIKIURL@ ã® @NEWPAGE@
-ã«ãã'夿´å±¥æ´é
ä¿¡ã®è§£é¤'ã§è¡ããã¨ãã§ãã¾ãã
-
---
-ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
- at DOKUWIKIURL@
+ããã«ã¡ã¯
+
+ at TITLE@ å
ã®ãã¼ã¸ @PAGE@ ã¯å¤æ´ããã¾ããã
+夿´å
容ã¯ä»¥ä¸ã®éãã§ãã
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+ãã¼ã¸å¤æ´å±¥æ´é
ä¿¡ãµã¼ãã¹ã®è§£é¤ã¯ã
+ at DOKUWIKIURL@ ã® @NEWPAGE@
+ã«ãã'夿´å±¥æ´é
ä¿¡ã®è§£é¤'ã§è¡ããã¨ãã§ãã¾ãã
+
+--
+ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ja/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ã¢ã«ã¦ã³ãæ
å ±æ´æ° ======
-
-夿´ãããé
ç®ãå
¥åãã¦ä¸ãããã¦ã¼ã¶ã¼åã¯å¤æ´ã§ãã¾ããã
-
-
+====== ã¢ã«ã¦ã³ãæ
å ±æ´æ° ======
+
+夿´ãããé
ç®ãå
¥åãã¦ä¸ãããã¦ã¼ã¶ã¼åã¯å¤æ´ã§ãã¾ããã
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ja/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ja/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ja/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-ã使ãã®DokuWikiã«ãã¡ã¤ã«ãã¢ãããã¼ãããã¾ããã詳細ã¯ä»¥ä¸ã®éãã§ãã
-
-ãã¡ã¤ã« : @MEDIA@
-æ¥ä» : @DATE@
-ãã©ã¦ã¶ : @BROWSER@
-IPã¢ãã¬ã¹ : @IPADDRESS@
-ãã¹ãå : @HOSTNAME@
-ãµã¤ãº : @SIZE@
-MIMEã¿ã¤ã : @MIME@
-ã¦ã¼ã¶ã¼å : @USER@
-
---
-ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
- at DOKUWIKIURL@
+ã使ãã®DokuWikiã«ãã¡ã¤ã«ãã¢ãããã¼ãããã¾ããã詳細ã¯ä»¥ä¸ã®éãã§ãã
+
+ãã¡ã¤ã« : @MEDIA@
+æ¥ä» : @DATE@
+ãã©ã¦ã¶ : @BROWSER@
+IPã¢ãã¬ã¹ : @IPADDRESS@
+ãã¹ãå : @HOSTNAME@
+ãµã¤ãº : @SIZE@
+MIMEã¿ã¤ã : @MIME@
+ã¦ã¼ã¶ã¼å : @USER@
+
+--
+ãã®ã¡ã¼ã«ã¯æ¬¡ã®DokuWikiããèªåçã«éä¿¡ããã¦ãã¾ãã
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ja/wordblock.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ko/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ê´ë¦¬ ìì
======
-
-DokuWikiìì ì¬ì©ê°ë¥í ê´ë¦¬ ìì
목ë¡ì ìëìì ì°¾ì ì ììµëë¤.
-
+====== ê´ë¦¬ ìì
======
+
+DokuWikiìì ì¬ì©ê°ë¥í ê´ë¦¬ ìì
목ë¡ì ìëìì ì°¾ì ì ììµëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ë°±ë§í¬ ======
-
-íì¬ íì´ì§ë¡ ë§í¬ë°±ëë íì´ì§ 목ë¡ì
ëë¤. ì¹´ë©ì¼ì´ì¤ ë§í¬ë ë°±ë§í¬ë¡
-ì·¨ê¸ëì§ ììµëë¤.
-
+====== ë°±ë§í¬ ======
+
+íì¬ íì´ì§ë¡ ë§í¬ë°±ëë íì´ì§ 목ë¡ì
ëë¤. ì¹´ë©ì¼ì´ì¤ ë§í¬ë ë°±ë§í¬ë¡
+ì·¨ê¸ëì§ ììµëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== ì ë²ì ìì ======
-
-í¸ì§íì ì ë²ì ì 문ìê° ììµëë¤. ë¹ì ì´ í¸ì§íê³ ìë ëì ë¤ë¥¸ ì¬ëì´
-ëì¼í íì¼ì í¸ì§íìì ê²½ì° ì´ë° ì¼ì´ ì길 ì ììµëë¤.
-
-ìëì ì°¨ì´ì ì ë©´ë°í ê²í íìê³ , ì´ë¤ ë²ì ì ì ì¥íì¤ì§ ê²°ì íììì¤.
-**ì ì¥**ì ì ííìë©´, ë¹ì ì ë²ì ì´ ì ì¥ë©ëë¤. **ì·¨ì** 를 ì ííìë©´
-íì¬ ë²ì ì´ ì ì§ë©ëë¤.
-
+====== ì ë²ì ìì ======
+
+í¸ì§íì ì ë²ì ì 문ìê° ììµëë¤. ë¹ì ì´ í¸ì§íê³ ìë ëì ë¤ë¥¸ ì¬ëì´
+ëì¼í íì¼ì í¸ì§íìì ê²½ì° ì´ë° ì¼ì´ ì길 ì ììµëë¤.
+
+ìëì ì°¨ì´ì ì ë©´ë°í ê²í íìê³ , ì´ë¤ ë²ì ì ì ì¥íì¤ì§ ê²°ì íììì¤.
+**ì ì¥**ì ì ííìë©´, ë¹ì ì ë²ì ì´ ì ì¥ë©ëë¤. **ì·¨ì** 를 ì ííìë©´
+íì¬ ë²ì ì´ ì ì§ë©ëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ê¶í ê±°ì ======
-
-ê³ìí ì ìë ê¶íì´ ììµëë¤. ë¡ê·¸ì¸íììì¤.
-
+======ê¶í ê±°ì ======
+
+ê³ìí ì ìë ê¶íì´ ììµëë¤. ë¡ê·¸ì¸íììì¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ì°¨ì´ì ======
-
-ì´ íì´ì§ì ì íí ë²ì ê³¼ íì¬ ë²ì ì¬ì´ì ì°¨ì´ì ì ë³´ì¬ì¤ëë¤.
-
-
+======ì°¨ì´ì ======
+
+ì´ íì´ì§ì ì íí ë²ì ê³¼ íì¬ ë²ì ì¬ì´ì ì°¨ì´ì ì ë³´ì¬ì¤ëë¤.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== 문ì ì´ìì´ ììµëë¤. ======
-
-ì´ íì´ì§ì ë§ì§ë§ í¸ì§ ì¸ì
ì ì ìì ì¼ë¡ ëëì§ ìììµëë¤.
-DokuWikië ìì
ëì¤ ìëì¼ë¡ ì ì¥ë 문ì ì´ìì ì¬ì©íì¬ í¸ì§ì ê³ì í ì ììµëë¤.
-ë§ì§ë§ ì¸ì
ëì ì ì¥ë 문ì ì´ìì ìëìì ë³¼ ì ììµëë¤.
-
-íì¤íê² ë¹ì ìì ì¼ë¡ ì¢
ë£ë ì¸ì
ì //복구//í ì§ ì¬ë¶ë¥¼ ê²°ì íê³ ,
-ìëì¼ë¡ ì ì¥ëìë ì´ìì //ìì //íê±°ë í¸ì§ ê³¼ì ì ì·¨ìí기 ë°ëëë¤.
-
+====== 문ì ì´ìì´ ììµëë¤. ======
+
+ì´ íì´ì§ì ë§ì§ë§ í¸ì§ ì¸ì
ì ì ìì ì¼ë¡ ëëì§ ìììµëë¤.
+DokuWikië ìì
ëì¤ ìëì¼ë¡ ì ì¥ë 문ì ì´ìì ì¬ì©íì¬ í¸ì§ì ê³ì í ì ììµëë¤.
+ë§ì§ë§ ì¸ì
ëì ì ì¥ë 문ì ì´ìì ìëìì ë³¼ ì ììµëë¤.
+
+íì¤íê² ë¹ì ìì ì¼ë¡ ì¢
ë£ë ì¸ì
ì //복구//í ì§ ì¬ë¶ë¥¼ ê²°ì íê³ ,
+ìëì¼ë¡ ì ì¥ëìë ì´ìì //ìì //íê±°ë í¸ì§ ê³¼ì ì ì·¨ìí기 ë°ëëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-íì´ì§ë¥¼ í¸ì§íê³ **ì ì¥**ì ë르ììì¤. ìí¤ êµ¬ë¬¸ì [[wiki:syntax]] í¹ì [[syntax|(íê¸) 구문]]ì
-ì°¸ê³ íììì¤. ì´ íì´ì§ë¥¼ **ë ë«ê² ë§ë¤ ìì ì´ ìì** ëìë§ í¸ì§íììì¤. ì¤íì
-íê³ ì¶ì ëìë, 먼ì [[playground:playground|ì°ìµì¥]] ì ê°ì ì°ìµí´ ë³´ììì¤.
-
+íì´ì§ë¥¼ í¸ì§íê³ **ì ì¥**ì ë르ììì¤. ìí¤ êµ¬ë¬¸ì [[wiki:syntax]] í¹ì [[syntax|(íê¸) 구문]]ì
+ì°¸ê³ íììì¤. ì´ íì´ì§ë¥¼ **ë ë«ê² ë§ë¤ ìì ì´ ìì** ëìë§ í¸ì§íììì¤. ì¤íì
+íê³ ì¶ì ëìë, 먼ì [[playground:playground|ì°ìµì¥]] ì ê°ì ì°ìµí´ ë³´ììì¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**문ìì ì´ì ë²ì ì ì ííììµëë¤!** ì ì¥í ê²½ì° ì´ ìë£ì ì ë²ì ì ë§ëëë¤.
+**문ìì ì´ì ë²ì ì ì ííììµëë¤!** ì ì¥í ê²½ì° ì´ ìë£ì ì ë²ì ì ë§ëëë¤.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ko/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Index ======
-
-ì´ íì´ì§ë [[doku>wiki:namespaces|ë¤ìì¤íì´ì¤]] ìì ì ë ¬í 모ë íì´ì§ì 목ë¡ì
ëë¤.
-
+====== Index ======
+
+ì´ íì´ì§ë [[doku>wiki:namespaces|ë¤ìì¤íì´ì¤]] ìì ì ë ¬í 모ë íì´ì§ì 목ë¡ì
ëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-<p>ì´ íì´ì§ë <a href="http://wiki.splitbrain.org">Dokuwiki</a> ì¤ì¹ì íê²½ ì¤ì ì ëìì¤ëë¤.
-. ì¤ì¹ ê³¼ì ì ëí ë ìì¸í ì ë³´ë <a href="http://wiki.splitbrain.org/wiki:ko:install">íê¸ ì¤ì¹ë¬¸ì</a>ì
-<a href="http://wiki.splitbrain.org/wiki:install">ì문 ì¤ì¹ë¬¸ì</a>를 ì°¸ê³ í기 ë°ëëë¤.
-</p>
-
-<p>DokuWikië ìí¤ íì´ì§ì íì´ì§ì ê´ë ¨ë ì ë³´(그림,ìì¸, ì´ì ë²ì 문ì ë±ë±)를 ì ì¥í기 ìí´ ì¼ë°ì ì¸ í
ì¤í¸ íì¼ë¤ì ì¬ì©í©ëë¤. ì ìì ì¼ë¡ DokuWiki를 ì¬ì©íë ¤ë©´ ì´ íì¼ë¤ì ë´ê³ ìë ëë í 리ë¤ì ëí ì°ê¸° ê¶íì ê°ì§ê³ ìì´ì¼ í©ëë¤.
-íì¬ ì¤ì¹ ê³¼ì ì¤ìë ëë í 리 ê¶í ì¤ì ì´ ë¶ê°ë¥í©ëë¤. ë³´íµ ì§ì ì ëª
ë ¹ì´ë¥¼ ì¬ì©íê±°ë, í¸ì¤í
ì ì¬ì©íë¤ë©´ FTPë í¸ì¤í
ì ì´í(ì. CPanel)ì ì¬ì©í´ì ì¤ì í´ì¼ í©ëë¤.</p>
-
-<p>íì¬ ì¤ì¹ ê³¼ì ì¤ì ê´ë¦¬ìë¡ ë¡ê·¸ì¸ í DokuWikiì ê´ë¦¬ ë©ë´(íë¬ê·¸ì¸ ì¤ì¹, ì¬ì©ì ê´ë¦¬, ìí¤ íì´ì§ ì ê·¼ ê¶í ê´ë¦¬, ìµì
ì¤ì )를 ê°ë¥íê² <acronym title="ì ê·¼ ì ì´ ëª©ë¡">ACL</acronym>ì ëí íê²½ ì¤ì ì ìíí©ëë¤.
-ì´ ê²ì DokuWikiê° ëìíëë° íìí ì¬íì ìëì§ë§, ì´ì°ëìë ë ì½ê² ê´ë¦¬ìê° ê´ë¦¬í ì ìëë¡ í´ì¤ëë¤.</p>
-
-<p>ìë ¨ë ì¬ì©ìë¤ì´ë í¹ë³í ì¤ì¹ ê³¼ì ì´ íìí ê²½ì°ì ë¤ì ë§í¬ë¤ì 참조í기 ë°ëëë¤:
-<a href="http://wiki.splitbrain.org/wiki:ko:install">ì¤ì¹ ê³¼ì (íê¸)</a>
-ê³¼ <a href="http://wiki.splitbrain.org/wiki:ko:config">íê²½ ì¤ì (íê¸),</a>
-<a href="http://wiki.splitbrain.org/wiki:install">ì¤ì¹ ê³¼ì (ì문)</a>
-ê³¼ <a href="http://wiki.splitbrain.org/wiki:config">íê²½ ì¤ì (ì문)</a>
-</p>
+<p>ì´ íì´ì§ë <a href="http://wiki.splitbrain.org">Dokuwiki</a> ì¤ì¹ì íê²½ ì¤ì ì ëìì¤ëë¤.
+. ì¤ì¹ ê³¼ì ì ëí ë ìì¸í ì ë³´ë <a href="http://wiki.splitbrain.org/wiki:ko:install">íê¸ ì¤ì¹ë¬¸ì</a>ì
+<a href="http://wiki.splitbrain.org/wiki:install">ì문 ì¤ì¹ë¬¸ì</a>를 ì°¸ê³ í기 ë°ëëë¤.
+</p>
+
+<p>DokuWikië ìí¤ íì´ì§ì íì´ì§ì ê´ë ¨ë ì ë³´(그림,ìì¸, ì´ì ë²ì 문ì ë±ë±)를 ì ì¥í기 ìí´ ì¼ë°ì ì¸ í
ì¤í¸ íì¼ë¤ì ì¬ì©í©ëë¤. ì ìì ì¼ë¡ DokuWiki를 ì¬ì©íë ¤ë©´ ì´ íì¼ë¤ì ë´ê³ ìë ëë í 리ë¤ì ëí ì°ê¸° ê¶íì ê°ì§ê³ ìì´ì¼ í©ëë¤.
+íì¬ ì¤ì¹ ê³¼ì ì¤ìë ëë í 리 ê¶í ì¤ì ì´ ë¶ê°ë¥í©ëë¤. ë³´íµ ì§ì ì ëª
ë ¹ì´ë¥¼ ì¬ì©íê±°ë, í¸ì¤í
ì ì¬ì©íë¤ë©´ FTPë í¸ì¤í
ì ì´í(ì. CPanel)ì ì¬ì©í´ì ì¤ì í´ì¼ í©ëë¤.</p>
+
+<p>íì¬ ì¤ì¹ ê³¼ì ì¤ì ê´ë¦¬ìë¡ ë¡ê·¸ì¸ í DokuWikiì ê´ë¦¬ ë©ë´(íë¬ê·¸ì¸ ì¤ì¹, ì¬ì©ì ê´ë¦¬, ìí¤ íì´ì§ ì ê·¼ ê¶í ê´ë¦¬, ìµì
ì¤ì )를 ê°ë¥íê² <acronym title="ì ê·¼ ì ì´ ëª©ë¡">ACL</acronym>ì ëí íê²½ ì¤ì ì ìíí©ëë¤.
+ì´ ê²ì DokuWikiê° ëìíëë° íìí ì¬íì ìëì§ë§, ì´ì°ëìë ë ì½ê² ê´ë¦¬ìê° ê´ë¦¬í ì ìëë¡ í´ì¤ëë¤.</p>
+
+<p>ìë ¨ë ì¬ì©ìë¤ì´ë í¹ë³í ì¤ì¹ ê³¼ì ì´ íìí ê²½ì°ì ë¤ì ë§í¬ë¤ì 참조í기 ë°ëëë¤:
+<a href="http://wiki.splitbrain.org/wiki:ko:install">ì¤ì¹ ê³¼ì (íê¸)</a>
+ê³¼ <a href="http://wiki.splitbrain.org/wiki:ko:config">íê²½ ì¤ì (íê¸),</a>
+<a href="http://wiki.splitbrain.org/wiki:install">ì¤ì¹ ê³¼ì (ì문)</a>
+ê³¼ <a href="http://wiki.splitbrain.org/wiki:config">íê²½ ì¤ì (ì문)</a>
+</p>
Modified: site/trunk/www-root/wiki/inc/lang/ko/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,224 +1,224 @@
-<?php
-/**
- * korean language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Hyun Kim <lawfully at gmail.com>
- * @author jk Lee <bootmeta at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = 'íì´ì§ í¸ì§';
-$lang['btn_source'] = 'ìì¤ ë³´ê¸°';
-$lang['btn_show'] = 'íì´ì§ 보기';
-$lang['btn_create'] = 'íì´ì§ ë§ë¤ê¸°';
-$lang['btn_search'] = '찾기';
-$lang['btn_save'] = 'ì ì¥';
-$lang['btn_preview']= '미리보기';
-$lang['btn_top'] = '맨ìë¡';
-$lang['btn_newer'] = '<< ìµê·¼';
-$lang['btn_older'] = 'ì´ì >>';
-$lang['btn_revs'] = 'ì´ì ë²ì ë¤';
-$lang['btn_recent'] = 'ìµê·¼ì ë°ë ê²';
-$lang['btn_upload'] = 'ì
ë¡ë';
-$lang['btn_cancel'] = 'ì·¨ì';
-$lang['btn_index'] = 'ìì¸';
-$lang['btn_secedit']= 'í¸ì§';
-$lang['btn_login'] = 'ë¡ê·¸ì¸';
-$lang['btn_logout'] = 'ë¡ê·¸ìì';
-$lang['btn_admin'] = 'ê´ë¦¬';
-$lang['btn_update'] = 'ë³ê²½';
-$lang['btn_delete'] = 'ìì ';
-$lang['btn_back'] = 'ë¤ë¡';
-$lang['btn_backlink'] = "ì´ì ë§í¬";
-$lang['btn_backtomedia'] = '미ëì´ íì¼ ì íì¼ë¡ ëìê°ê¸°';
-$lang['btn_subscribe'] = '구ë
ì ì²';
-$lang['btn_unsubscribe'] = '구ë
ì ì² í´ì§';
-$lang['btn_profile'] = 'ê°ì¸ì ë³´ ë³ê²½';
-$lang['btn_reset'] = 'ì´ê¸°í';
-$lang['btn_resendpwd'] = 'ì í¨ì¤ìë ë³´ë´ê¸°';
-$lang['btn_draft'] = '문ìì´ì í¸ì§';
-$lang['btn_recover'] = '문ìì´ì 복구';
-$lang['btn_draftdel'] = '문ìì´ì ìì ';
-
-$lang['loggedinas'] = 'ë¤ì ì¬ì©ìë¡ ë¡ê·¸ì¸';
-$lang['user'] = 'ì¬ì©ì';
-$lang['pass'] = 'í¨ì¤ìë';
-$lang['newpass'] = 'ìë¡ì´ í¨ì¤ìë';
-$lang['oldpass'] = 'íì¬ í¨ì¤ìë íì¸';
-$lang['passchk'] = 'í¨ì¤ìë ë¤ì íì¸';
-$lang['remember'] = '기ìµí기';
-$lang['fullname'] = 'ì¤ì ì´ë¦';
-$lang['email'] = 'ì´ë©ì¼';
-$lang['register'] = 'ë±ë¡';
-$lang['profile'] = 'ê°ì¸ ì ë³´';
-$lang['badlogin'] = 'ì못ë ì¬ì©ì ì´ë¦ì´ê±°ë í¨ì¤ìëì
ëë¤.';
-$lang['minoredit'] = 'ì¼ë¶ ë³ê²½';
-$lang['draftdate'] = '문ì ì´ì ìëì ì¥ ìê°'; // full dformat date will be added
-
-$lang['regmissing'] = '모ë í목ì ì
ë ¥í´ì¼ í©ëë¤.';
-$lang['reguexists'] = 'ê°ì ì´ë¦ì ì¬ì©íë ì¬ì©ìê° ììµëë¤.';
-$lang['regsuccess'] = 'ì¬ì©ì를 ë§ë¤ììµëë¤. í¨ì¤ìëë ì´ë©ì¼ë¡ ë³´ëìµëë¤.';
-$lang['regsuccess2']= 'ì¬ì©ì를 ë§ë¤ììµëë¤.';
-$lang['regmailfail']= 'í¨ì¤ìë를 ì´ë©ì¼ë¡ ì ì¡í ë ì¤ë¥ê° ë°ìíìµëë¤. ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤!';
-$lang['regbadmail'] = 'ì´ë©ì¼ 주ìê° íë ¸ìµëë¤. - ì¤ë¥ë¼ê³ ìê°ëë©´ ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤.';
-$lang['regbadpass'] = 'ìë¡ì´ í¨ì¤ìëë¤ì´ ì¼ì¹íì§ ììµëë¤. ë¤ì ì
ë ¥í기 ë°ëëë¤.';
-$lang['regpwmail'] = 'DokuWiki í¨ì¤ìë';
-$lang['reghere'] = 'ìì§ ë±ë¡íì§ ììë¤ë©´ ë±ë¡í기 ë°ëëë¤.';
-
-$lang['profna'] = 'ì´ ìí¤ë ê°ì¸ ì ë³´ ìì ì íì©íì§ ììµëë¤.';
-$lang['profnochange'] = 'ë³ê²½ì¬íì´ ììµëë¤.';
-$lang['profnoempty'] = 'ì´ë¦ì´ë ì´ë©ì¼ 주ìê° ë¹ììµëë¤.';
-$lang['profchanged'] = 'ê°ì¸ì ë³´ ë³ê²½ì´ ì±ê³µíìµëë¤.';
-
-$lang['pwdforget'] = 'í¨ì¤ìë를 ìì´ë²ë¦° ê²½ì° ìë¡ ë°ê¸ë°ì ì ììµëë¤.';
-$lang['resendna'] = 'ì´ ìí¤ë í¨ì¤ìë ì¬ë°ê¸ì ì§ìíì§ ììµëë¤.';
-$lang['resendpwd'] = 'ìë¡ì´ í¨ì¤ìë를 ë³´ë
ëë¤.';
-$lang['resendpwdmissing'] = 'ìë¡ì´ í¨ì¤ìë를 ì
ë ¥í´ì¼í¡ëë¤.';
-$lang['resendpwdnouser'] = 'ë±ë¡ë ì¬ì©ìê° ìëëë¤. ë¤ì íì¸ ë°ëëë¤.';
-$lang['resendpwdbadauth'] = 'ì¸ì¦ ì½ëê° í립ëë¤. ì못ë ë§í¬ì¸ì§ íì¸ ë°ëëë¤.';
-$lang['resendpwdconfirm'] = 'íì¸ ë§í¬ë¥¼ ì´ë©ì¼ë¡ ë³´ëìµëë¤.';
-$lang['resendpwdsuccess'] = 'ìë¡ì´ í¨ì¤ìëë ì´ë©ì¼ë¡ ë³´ë´ë립ëë¤.';
-
-$lang['txt_upload'] = 'ì
ë¡ë íì¼ ì í';
-$lang['txt_filename'] = 'íì¼ ì´ë¦ ì
ë ¥(ì í ì¬í)';
-$lang['txt_overwrt'] = 'ìë¡ì´ íì¼ë¡ ì´ì íì¼ì êµì²´í©ëë¤.';
-$lang['lockedby'] = 'íì¬ ë¤ì ì¬ì©ìê° ì ê¸';
-$lang['lockexpire'] = 'ë¤ì ìê°ì ì ê¸ í´ì ';
-$lang['willexpire'] = 'ì ì í í¸ì§ ì ê¸ì´ í´ì ë©ëë¤.\ní¸ì§ ì¶©ëì í¼íë ¤ë©´ 미리보기를 ëë¬ ì ê¸ ìê°ì ë¤ì ì¤ì í기 ë°ëëë¤.';
-
-$lang['notsavedyet'] = 'ì ì¥íì§ ìì ë³ê²½ì ì§ìì§ëë¤.\nê³ìíìê² ìµëê¹?';
-$lang['rssfailed'] = 'feed ê°ì ¸ì¤ê¸° ì¤í¨: ';
-$lang['nothingfound']= 'ì무 ê²ë ììµëë¤.';
-
-$lang['mediaselect'] = '미ëì´ íì¼ ì í';
-$lang['fileupload'] = '미ëì´ íì¼ ì
ë¡ë';
-$lang['uploadsucc'] = 'ì
ë¡ë ì±ê³µ';
-$lang['uploadfail'] = 'ì
ë¡ë ì¤í¨. ì못ë ê¶í ë문ì¼ì§ë 모ë¦
ëë¤.';
-$lang['uploadwrong'] = 'ì
ë¡ë ê±°ë¶. ê¸ì§ë íì¥ìì
ëë¤!';
-$lang['uploadexist'] = 'ì´ë¯¸ íì¼ì´ ì¡´ì¬í©ëë¤.';
-$lang['uploadbadcontent'] = 'ì
ë¡ëë íì¼ì´ íì¼ íì¥ì %sì ì¼ì¹íì§ ììµëë¤.';
-$lang['uploadspam'] = 'ì¤í¸ ì°¨ë¨ê¸°ê° ì
ë¡ë를 ì·¨ìíììµëë¤.';
-$lang['uploadxss'] = 'ì
ì± ì½ëì ê°ë¥ì±ì´ ìì´ ì
ë¡ë를 ì·¨ìíììµëë¤.';
-$lang['deletesucc'] = '"%s" íì¼ì´ ìì ëììµëë¤.';
-$lang['deletefail'] = '"%s" íì¼ì ìì í ì ììµëë¤. - ìì ê¶íì´ ìëì§ íì¸í기 ë°ëëë¤.';
-$lang['mediainuse'] = '"%s" íì¼ì ìì í ì ììµëë¤. - ìì§ ì¬ì© ì¤ì
ëë¤.';
-$lang['namespaces'] = 'ë¤ìì¤íì´ì¤';
-$lang['mediafiles'] = 'ì¬ì© ê°ë¥í íì¼ ëª©ë¡';
-
-$lang['js']['keepopen'] = 'ì íí ë ìëì°ë¥¼ ì´ì´ëì¼ì기 ë°ëëë¤.';
-$lang['js']['hidedetails'] = 'ìì¸í ì ë³´ ê°ì¶ê¸°';
-$lang['mediausage'] = 'ì´ íì¼ì 참조íë ¤ë©´ ë¤ì 문ë²ì ì¬ì©í기 ë°ëëë¤:';
-$lang['mediaview'] = 'ì본 íì¼ ë³´ê¸°';
-$lang['mediaroot'] = '루í¸(root)';
-$lang['mediaupload'] = 'íì¼ì íì¬ ë¤ìì¤íì´ì¤ë¡ ì
ë¡ëí©ëë¤. íì ë¤ìì¤íì´ì¤ë¥¼ ë§ë¤ë ¤ë©´ íì¼ ì´ë¦ ìì ì½ë¡ (:)ì¼ë¡ 구ë¶ëë ì´ë¦ì ë¶ì´ë©´ ë©ëë¤.';
-$lang['mediaextchange'] = 'íì¼ íì¥ìê° .%sìì .%sì¼ë¡ ë³ê²½ëìµëë¤!';
-
-$lang['reference'] = 'ì ëí 참조';
-$lang['ref_inuse'] = 'ë¤ì íì´ì§ë¤ìì ìì§ ì¬ì© ì¤ì´ë¯ë¡ íì¼ì ìì í ì ììµëë¤:';
-$lang['ref_hidden'] = 'íì´ì§ë¤ì ëªëª 참조ë ì½ì ì ìë ê¶íì´ ììµëë¤.';
-
-$lang['hits'] = 'íí¸ ì';
-$lang['quickhits'] = 'ì¼ì¹íë íì´ì§ ì´ë¦';
-$lang['toc'] = '목차';
-$lang['current'] = 'íì¬';
-$lang['yours'] = 'ë²ì ';
-$lang['diff'] = 'íì¬ ë²ì ê³¼ì ì°¨ì´ ë³´ê¸°';
-$lang['line'] = 'ì¤';
-$lang['breadcrumb'] = 'ì¶ì ';
-$lang['youarehere'] = 'íì¬ ìì¹';
-$lang['lastmod'] = 'ë§ì§ë§ ìì ';
-$lang['by'] = 'ìì±ì';
-$lang['deleted'] = 'ìì ';
-$lang['created'] = 'ìë¡ ë§ë¬';
-$lang['restored'] = 'ì ë²ì 복구';
-$lang['summary'] = 'í¸ì§ ìì½';
-$lang['external_edit'] = 'ì¸ë¶ í¸ì§ê¸°';
-
-$lang['mail_newpage'] = 'íì´ì§ ì¶ê°:';
-$lang['mail_changed'] = 'íì´ì§ ë³ê²½:';
-$lang['mail_new_user'] = 'ìë¡ì´ ì¬ì©ì:';
-$lang['mail_upload'] = 'íì¼ ì²¨ë¶:';
-
-$lang['nosmblinks'] = 'ìëì° ê³µì íì¼ê³¼ì ì°ê²°ì MS ì¸í°ë· ìµì¤íë¡ë¬ììë§ ëìí©ëë¤.\nê·¸ë¬ë ë§í¬ë¥¼ ë³µì¬íê±°ë ë¶ì¬ë£ê¸°ë¥¼ í ì ììµëë¤.';
-
-$lang['qb_alert'] = 'í¬ë§·íë ¤ë í
ì¤í¸ë¥¼ ì ííì¸ì.\n문ì 맨 ëì ì¶ê°ë©ëë¤.';
-$lang['qb_bold'] = 'êµµì ê¸';
-$lang['qb_italic'] = 'ì´í¤ë¦ì²´ ê¸';
-$lang['qb_underl'] = 'ë°ì¤ ê·¸ì´ì§ ê¸';
-$lang['qb_code'] = 'ì½ëë¡ íìë ê¸';
-$lang['qb_strike'] = 'ì·¨ì íìë ê¸';
-$lang['qb_h1'] = '1ë¨ê³ í¤ëë¼ì¸';
-$lang['qb_h2'] = '2ë¨ê³ í¤ëë¼ì¸';
-$lang['qb_h3'] = '3ë¨ê³ í¤ëë¼ì¸';
-$lang['qb_h4'] = '4ë¨ê³ í¤ëë¼ì¸';
-$lang['qb_h5'] = '5ë¨ê³ í¤ëë¼ì¸';
-$lang['qb_link'] = 'ë´ë¶ ë§í¬';
-$lang['qb_extlink'] = 'ì¸ë¶ ë§í¬';
-$lang['qb_hr'] = 'ìíì ';
-$lang['qb_ol'] = 'ì«ì 목ë¡';
-$lang['qb_ul'] = '목ë¡';
-$lang['qb_media'] = 'ì´ë¯¸ì§ì 기í íì¼ ì¶ê°';
-$lang['qb_sig'] = 'ìëª
ì¶ê°';
-$lang['qb_smileys'] = 'ì´ëª¨í°ì½';
-$lang['qb_chars'] = 'í¹ì문ì';
-
-$lang['del_confirm']= 'ì ë§ë¡ ì íë í목(ë¤)ì ìì íìê² ìµëê¹?';
-$lang['admin_register']= 'ìë¡ì´ ì¬ì©ì ì¶ê°';
-
-$lang['metaedit'] = 'ë©í ë°ì´í를 í¸ì§í©ëë¤.';
-$lang['metasaveerr'] = 'ë©í ë°ì´í ì°ê¸°ê° ì¤í¨íìµëë¤.';
-$lang['metasaveok'] = 'ë©í ë°ì´íê° ì ì¥ëììµëë¤.';
-$lang['img_backto'] = 'ë¤ë¡';
-$lang['img_title'] = 'ì´ë¦';
-$lang['img_caption'] = 'ì¤ëª
';
-$lang['img_date'] = 'ë ì§';
-$lang['img_fname'] = 'íì¼ ì´ë¦';
-$lang['img_fsize'] = 'í¬ê¸°';
-$lang['img_artist'] = 'ë§ë ì´';
-$lang['img_copyr'] = 'ì ìê¶';
-$lang['img_format'] = 'í¬ë§·';
-$lang['img_camera'] = 'ì¹´ë©ë¼';
-$lang['img_keywords']= 'í¤ìë';
-
-$lang['subscribe_success'] = '%s를 ì¶ê°íìµëë¤. (%sì 구ë
목ë¡)';
-$lang['subscribe_error'] = '%s를 ì¶ê°íëë° ì¤í¨íìµëë¤.(%sì 구ë
목ë¡)';
-$lang['subscribe_noaddress']= 'ë¡ê·¸ì¸ ì ë³´ì ì´ë©ì¼ 주ìê° ììµëë¤, 구ë
목ë¡ì ì¶ê°í ì ììµëë¤.';
-$lang['unsubscribe_success']= '%s를 ì ì¸ìì¼°ìµëë¤. (%sì 구ë
목ë¡)';
-$lang['unsubscribe_error'] = '%s를 ì ì¸ìí¤ëë° ì¤í¨íìµëë¤.(%sì 구ë
목ë¡)';
-
-/* auth.class language support */
-$lang['authmodfailed'] = 'ì못ë ì¬ì©ì ì¸ì¦ ì¤ì ì
ëë¤. ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤.';
-$lang['authtempfail'] = 'ì¬ì©ì ì¸ì¦ì´ ì¼ìì ì¼ë¡ ë¶ê°ë¥í©ëë¤. ë§ì¼ ê³ìí´ì 문ì ê° ë°ìíë©´ ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤.';
-
-/* installer strings */
-$lang['i_chooselang'] = 'ì¬ì©íë ì¸ì´ë¥¼ ì íí©ëë¤.';
-$lang['i_installer'] = 'DokuWiki ì¤ì¹';
-$lang['i_wikiname'] = 'ìí¤ ì´ë¦';
-$lang['i_enableacl'] = 'ACLê¸°ë¥ ì¬ì©(ê¶ì¥ ì¬í)';
-$lang['i_superuser'] = 'ìí¼ ì ì ';
-$lang['i_problems'] = 'ì¤ì¹ ì¤ ìëì ê°ì 문ì ê° ë°ìíìµëë¤. 문ì 를 í´ê²°í í ì¤ì¹ë¥¼ ê³ìí기 ë°ëëë¤.';
-$lang['i_modified'] = 'ë³´ììì ì´ì ë¡ ìë ì¤í¬ë¦½í¸ë ìì ëì§ ìì ì Dokuwikiì¤ì¹ììë§ ëìë©ëë¤.
- ë¤ì´ë¡ëë í¨í¤ì§ë¥¼ ì¬ì©íê±°ë <a href="http://wiki.splitbrain.org/wiki:install">
- DokuWiki ì¤ì¹ ê³¼ì </a>ì ì°¸ê³ í´ì ì¤ì¹í기 ë°ëëë¤.';
-$lang['i_funcna'] = 'PHPí¨ì <code>%s</code> ì¬ì©ì´ ë¶ê°ë¥í©ëë¤. í¸ì¤í¸ ì ê³µìê° ì´ë¤ ì´ì ììì¸ì§ ë§ì ëììì§ ëª¨ë¦
ëë¤.';
-$lang['i_phpver'] = 'PHP <code>%s</code>ë²ì ì íìí <code>%s</code>ë²ì ë³´ë¤ ì¤ëëììµëë¤.PHP를 ì
ê·¸ë ì´ëí íìê° ììµëë¤.';
-$lang['i_permfail'] = 'DokuWikië <code>%s</code>ì ì°ê¸° ê°ë¥ ê¶íì´ ììµëë¤. 먼ì ì´ ëë í 리ì ì°ê¸° ê¶íì´ ì¤ì ëì´ì¼ í©ëë¤!';
-$lang['i_confexists'] = '<code>%s</code>ë ì´ë¯¸ ì¡´ì¬í©ëë¤.';
-$lang['i_writeerr'] = '<code>%s</code>ì ë§ë¤ ì ììµëë¤. 먼ì ëë í 리/íì¼ ê¶íì íì¸íê³ íì¼ì ìëì¼ë¡ ë§ë¤ê¸° ë°ëëë¤.';
-$lang['i_badhash'] = 'dokuwiki.php를 ì¸ìí ì ìê±°ë ì본 íì¼ì´ ìëëë¤. (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - ì í¨íì§ ìê±°ë ë¹ ê°ì
ëë¤.';
-$lang['i_success'] = 'íê²½ ì¤ì ì´ ì±ê³µì ì¼ë¡ ëë¬ìµëë¤. install.php를 ì§ìë ìê´ììµëë¤.
- <a href="doku.php">ìë¡ì´ DokuWiki</a>.';
-$lang['i_failure'] = 'íê²½ ì¤ì íì¼ì ì°ë ëì¤ ìë¬ê° ë°ìíìµëë¤.
- <a href="doku.php">ìë¡ì´ DokuWiki</a>를 ì¬ì©í기 ì ì
- ìëì¼ë¡ 문ì 를 í´ê²°í íìê° ììµëë¤.';
-$lang['i_policy'] = 'ì´ê¸° ACL ì ì±
';
-$lang['i_pol0'] = 'ê°ë°©í ìí¤ (ë구ë ì½ê¸°/ì°ê¸°/ì
ë¡ëê° ê°ë¥í©ëë¤.)';
-$lang['i_pol1'] = 'ê³µê°í ìí¤ (ë구ë ì½ì ì ìì§ë§, ë±ë¡ë ì¬ì©ìë§ ì°ê¸°/ì
ë¡ëê° ê°ë¥í©ëë¤.)';
-$lang['i_pol2'] = 'íìí ìí¤ (ë±ë¡ë ì¬ì©ìë§ ì½ê¸°/ì°ê¸°/ì
ë¡ëê° ê°ë¥í©ëë¤.)';
-
-$lang['i_retry'] = 'ë¤ì ìë';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * korean language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Hyun Kim <lawfully at gmail.com>
+ * @author jk Lee <bootmeta at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = 'íì´ì§ í¸ì§';
+$lang['btn_source'] = 'ìì¤ ë³´ê¸°';
+$lang['btn_show'] = 'íì´ì§ 보기';
+$lang['btn_create'] = 'íì´ì§ ë§ë¤ê¸°';
+$lang['btn_search'] = '찾기';
+$lang['btn_save'] = 'ì ì¥';
+$lang['btn_preview']= '미리보기';
+$lang['btn_top'] = '맨ìë¡';
+$lang['btn_newer'] = '<< ìµê·¼';
+$lang['btn_older'] = 'ì´ì >>';
+$lang['btn_revs'] = 'ì´ì ë²ì ë¤';
+$lang['btn_recent'] = 'ìµê·¼ì ë°ë ê²';
+$lang['btn_upload'] = 'ì
ë¡ë';
+$lang['btn_cancel'] = 'ì·¨ì';
+$lang['btn_index'] = 'ìì¸';
+$lang['btn_secedit']= 'í¸ì§';
+$lang['btn_login'] = 'ë¡ê·¸ì¸';
+$lang['btn_logout'] = 'ë¡ê·¸ìì';
+$lang['btn_admin'] = 'ê´ë¦¬';
+$lang['btn_update'] = 'ë³ê²½';
+$lang['btn_delete'] = 'ìì ';
+$lang['btn_back'] = 'ë¤ë¡';
+$lang['btn_backlink'] = "ì´ì ë§í¬";
+$lang['btn_backtomedia'] = '미ëì´ íì¼ ì íì¼ë¡ ëìê°ê¸°';
+$lang['btn_subscribe'] = '구ë
ì ì²';
+$lang['btn_unsubscribe'] = '구ë
ì ì² í´ì§';
+$lang['btn_profile'] = 'ê°ì¸ì ë³´ ë³ê²½';
+$lang['btn_reset'] = 'ì´ê¸°í';
+$lang['btn_resendpwd'] = 'ì í¨ì¤ìë ë³´ë´ê¸°';
+$lang['btn_draft'] = '문ìì´ì í¸ì§';
+$lang['btn_recover'] = '문ìì´ì 복구';
+$lang['btn_draftdel'] = '문ìì´ì ìì ';
+
+$lang['loggedinas'] = 'ë¤ì ì¬ì©ìë¡ ë¡ê·¸ì¸';
+$lang['user'] = 'ì¬ì©ì';
+$lang['pass'] = 'í¨ì¤ìë';
+$lang['newpass'] = 'ìë¡ì´ í¨ì¤ìë';
+$lang['oldpass'] = 'íì¬ í¨ì¤ìë íì¸';
+$lang['passchk'] = 'í¨ì¤ìë ë¤ì íì¸';
+$lang['remember'] = '기ìµí기';
+$lang['fullname'] = 'ì¤ì ì´ë¦';
+$lang['email'] = 'ì´ë©ì¼';
+$lang['register'] = 'ë±ë¡';
+$lang['profile'] = 'ê°ì¸ ì ë³´';
+$lang['badlogin'] = 'ì못ë ì¬ì©ì ì´ë¦ì´ê±°ë í¨ì¤ìëì
ëë¤.';
+$lang['minoredit'] = 'ì¼ë¶ ë³ê²½';
+$lang['draftdate'] = '문ì ì´ì ìëì ì¥ ìê°'; // full dformat date will be added
+
+$lang['regmissing'] = '모ë í목ì ì
ë ¥í´ì¼ í©ëë¤.';
+$lang['reguexists'] = 'ê°ì ì´ë¦ì ì¬ì©íë ì¬ì©ìê° ììµëë¤.';
+$lang['regsuccess'] = 'ì¬ì©ì를 ë§ë¤ììµëë¤. í¨ì¤ìëë ì´ë©ì¼ë¡ ë³´ëìµëë¤.';
+$lang['regsuccess2']= 'ì¬ì©ì를 ë§ë¤ììµëë¤.';
+$lang['regmailfail']= 'í¨ì¤ìë를 ì´ë©ì¼ë¡ ì ì¡í ë ì¤ë¥ê° ë°ìíìµëë¤. ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤!';
+$lang['regbadmail'] = 'ì´ë©ì¼ 주ìê° íë ¸ìµëë¤. - ì¤ë¥ë¼ê³ ìê°ëë©´ ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤.';
+$lang['regbadpass'] = 'ìë¡ì´ í¨ì¤ìëë¤ì´ ì¼ì¹íì§ ììµëë¤. ë¤ì ì
ë ¥í기 ë°ëëë¤.';
+$lang['regpwmail'] = 'DokuWiki í¨ì¤ìë';
+$lang['reghere'] = 'ìì§ ë±ë¡íì§ ììë¤ë©´ ë±ë¡í기 ë°ëëë¤.';
+
+$lang['profna'] = 'ì´ ìí¤ë ê°ì¸ ì ë³´ ìì ì íì©íì§ ììµëë¤.';
+$lang['profnochange'] = 'ë³ê²½ì¬íì´ ììµëë¤.';
+$lang['profnoempty'] = 'ì´ë¦ì´ë ì´ë©ì¼ 주ìê° ë¹ììµëë¤.';
+$lang['profchanged'] = 'ê°ì¸ì ë³´ ë³ê²½ì´ ì±ê³µíìµëë¤.';
+
+$lang['pwdforget'] = 'í¨ì¤ìë를 ìì´ë²ë¦° ê²½ì° ìë¡ ë°ê¸ë°ì ì ììµëë¤.';
+$lang['resendna'] = 'ì´ ìí¤ë í¨ì¤ìë ì¬ë°ê¸ì ì§ìíì§ ììµëë¤.';
+$lang['resendpwd'] = 'ìë¡ì´ í¨ì¤ìë를 ë³´ë
ëë¤.';
+$lang['resendpwdmissing'] = 'ìë¡ì´ í¨ì¤ìë를 ì
ë ¥í´ì¼í¡ëë¤.';
+$lang['resendpwdnouser'] = 'ë±ë¡ë ì¬ì©ìê° ìëëë¤. ë¤ì íì¸ ë°ëëë¤.';
+$lang['resendpwdbadauth'] = 'ì¸ì¦ ì½ëê° í립ëë¤. ì못ë ë§í¬ì¸ì§ íì¸ ë°ëëë¤.';
+$lang['resendpwdconfirm'] = 'íì¸ ë§í¬ë¥¼ ì´ë©ì¼ë¡ ë³´ëìµëë¤.';
+$lang['resendpwdsuccess'] = 'ìë¡ì´ í¨ì¤ìëë ì´ë©ì¼ë¡ ë³´ë´ë립ëë¤.';
+
+$lang['txt_upload'] = 'ì
ë¡ë íì¼ ì í';
+$lang['txt_filename'] = 'íì¼ ì´ë¦ ì
ë ¥(ì í ì¬í)';
+$lang['txt_overwrt'] = 'ìë¡ì´ íì¼ë¡ ì´ì íì¼ì êµì²´í©ëë¤.';
+$lang['lockedby'] = 'íì¬ ë¤ì ì¬ì©ìê° ì ê¸';
+$lang['lockexpire'] = 'ë¤ì ìê°ì ì ê¸ í´ì ';
+$lang['willexpire'] = 'ì ì í í¸ì§ ì ê¸ì´ í´ì ë©ëë¤.\ní¸ì§ ì¶©ëì í¼íë ¤ë©´ 미리보기를 ëë¬ ì ê¸ ìê°ì ë¤ì ì¤ì í기 ë°ëëë¤.';
+
+$lang['notsavedyet'] = 'ì ì¥íì§ ìì ë³ê²½ì ì§ìì§ëë¤.\nê³ìíìê² ìµëê¹?';
+$lang['rssfailed'] = 'feed ê°ì ¸ì¤ê¸° ì¤í¨: ';
+$lang['nothingfound']= 'ì무 ê²ë ììµëë¤.';
+
+$lang['mediaselect'] = '미ëì´ íì¼ ì í';
+$lang['fileupload'] = '미ëì´ íì¼ ì
ë¡ë';
+$lang['uploadsucc'] = 'ì
ë¡ë ì±ê³µ';
+$lang['uploadfail'] = 'ì
ë¡ë ì¤í¨. ì못ë ê¶í ë문ì¼ì§ë 모ë¦
ëë¤.';
+$lang['uploadwrong'] = 'ì
ë¡ë ê±°ë¶. ê¸ì§ë íì¥ìì
ëë¤!';
+$lang['uploadexist'] = 'ì´ë¯¸ íì¼ì´ ì¡´ì¬í©ëë¤.';
+$lang['uploadbadcontent'] = 'ì
ë¡ëë íì¼ì´ íì¼ íì¥ì %sì ì¼ì¹íì§ ììµëë¤.';
+$lang['uploadspam'] = 'ì¤í¸ ì°¨ë¨ê¸°ê° ì
ë¡ë를 ì·¨ìíììµëë¤.';
+$lang['uploadxss'] = 'ì
ì± ì½ëì ê°ë¥ì±ì´ ìì´ ì
ë¡ë를 ì·¨ìíììµëë¤.';
+$lang['deletesucc'] = '"%s" íì¼ì´ ìì ëììµëë¤.';
+$lang['deletefail'] = '"%s" íì¼ì ìì í ì ììµëë¤. - ìì ê¶íì´ ìëì§ íì¸í기 ë°ëëë¤.';
+$lang['mediainuse'] = '"%s" íì¼ì ìì í ì ììµëë¤. - ìì§ ì¬ì© ì¤ì
ëë¤.';
+$lang['namespaces'] = 'ë¤ìì¤íì´ì¤';
+$lang['mediafiles'] = 'ì¬ì© ê°ë¥í íì¼ ëª©ë¡';
+
+$lang['js']['keepopen'] = 'ì íí ë ìëì°ë¥¼ ì´ì´ëì¼ì기 ë°ëëë¤.';
+$lang['js']['hidedetails'] = 'ìì¸í ì ë³´ ê°ì¶ê¸°';
+$lang['mediausage'] = 'ì´ íì¼ì 참조íë ¤ë©´ ë¤ì 문ë²ì ì¬ì©í기 ë°ëëë¤:';
+$lang['mediaview'] = 'ì본 íì¼ ë³´ê¸°';
+$lang['mediaroot'] = '루í¸(root)';
+$lang['mediaupload'] = 'íì¼ì íì¬ ë¤ìì¤íì´ì¤ë¡ ì
ë¡ëí©ëë¤. íì ë¤ìì¤íì´ì¤ë¥¼ ë§ë¤ë ¤ë©´ íì¼ ì´ë¦ ìì ì½ë¡ (:)ì¼ë¡ 구ë¶ëë ì´ë¦ì ë¶ì´ë©´ ë©ëë¤.';
+$lang['mediaextchange'] = 'íì¼ íì¥ìê° .%sìì .%sì¼ë¡ ë³ê²½ëìµëë¤!';
+
+$lang['reference'] = 'ì ëí 참조';
+$lang['ref_inuse'] = 'ë¤ì íì´ì§ë¤ìì ìì§ ì¬ì© ì¤ì´ë¯ë¡ íì¼ì ìì í ì ììµëë¤:';
+$lang['ref_hidden'] = 'íì´ì§ë¤ì ëªëª 참조ë ì½ì ì ìë ê¶íì´ ììµëë¤.';
+
+$lang['hits'] = 'íí¸ ì';
+$lang['quickhits'] = 'ì¼ì¹íë íì´ì§ ì´ë¦';
+$lang['toc'] = '목차';
+$lang['current'] = 'íì¬';
+$lang['yours'] = 'ë²ì ';
+$lang['diff'] = 'íì¬ ë²ì ê³¼ì ì°¨ì´ ë³´ê¸°';
+$lang['line'] = 'ì¤';
+$lang['breadcrumb'] = 'ì¶ì ';
+$lang['youarehere'] = 'íì¬ ìì¹';
+$lang['lastmod'] = 'ë§ì§ë§ ìì ';
+$lang['by'] = 'ìì±ì';
+$lang['deleted'] = 'ìì ';
+$lang['created'] = 'ìë¡ ë§ë¬';
+$lang['restored'] = 'ì ë²ì 복구';
+$lang['summary'] = 'í¸ì§ ìì½';
+$lang['external_edit'] = 'ì¸ë¶ í¸ì§ê¸°';
+
+$lang['mail_newpage'] = 'íì´ì§ ì¶ê°:';
+$lang['mail_changed'] = 'íì´ì§ ë³ê²½:';
+$lang['mail_new_user'] = 'ìë¡ì´ ì¬ì©ì:';
+$lang['mail_upload'] = 'íì¼ ì²¨ë¶:';
+
+$lang['nosmblinks'] = 'ìëì° ê³µì íì¼ê³¼ì ì°ê²°ì MS ì¸í°ë· ìµì¤íë¡ë¬ììë§ ëìí©ëë¤.\nê·¸ë¬ë ë§í¬ë¥¼ ë³µì¬íê±°ë ë¶ì¬ë£ê¸°ë¥¼ í ì ììµëë¤.';
+
+$lang['qb_alert'] = 'í¬ë§·íë ¤ë í
ì¤í¸ë¥¼ ì ííì¸ì.\n문ì 맨 ëì ì¶ê°ë©ëë¤.';
+$lang['qb_bold'] = 'êµµì ê¸';
+$lang['qb_italic'] = 'ì´í¤ë¦ì²´ ê¸';
+$lang['qb_underl'] = 'ë°ì¤ ê·¸ì´ì§ ê¸';
+$lang['qb_code'] = 'ì½ëë¡ íìë ê¸';
+$lang['qb_strike'] = 'ì·¨ì íìë ê¸';
+$lang['qb_h1'] = '1ë¨ê³ í¤ëë¼ì¸';
+$lang['qb_h2'] = '2ë¨ê³ í¤ëë¼ì¸';
+$lang['qb_h3'] = '3ë¨ê³ í¤ëë¼ì¸';
+$lang['qb_h4'] = '4ë¨ê³ í¤ëë¼ì¸';
+$lang['qb_h5'] = '5ë¨ê³ í¤ëë¼ì¸';
+$lang['qb_link'] = 'ë´ë¶ ë§í¬';
+$lang['qb_extlink'] = 'ì¸ë¶ ë§í¬';
+$lang['qb_hr'] = 'ìíì ';
+$lang['qb_ol'] = 'ì«ì 목ë¡';
+$lang['qb_ul'] = '목ë¡';
+$lang['qb_media'] = 'ì´ë¯¸ì§ì 기í íì¼ ì¶ê°';
+$lang['qb_sig'] = 'ìëª
ì¶ê°';
+$lang['qb_smileys'] = 'ì´ëª¨í°ì½';
+$lang['qb_chars'] = 'í¹ì문ì';
+
+$lang['del_confirm']= 'ì ë§ë¡ ì íë í목(ë¤)ì ìì íìê² ìµëê¹?';
+$lang['admin_register']= 'ìë¡ì´ ì¬ì©ì ì¶ê°';
+
+$lang['metaedit'] = 'ë©í ë°ì´í를 í¸ì§í©ëë¤.';
+$lang['metasaveerr'] = 'ë©í ë°ì´í ì°ê¸°ê° ì¤í¨íìµëë¤.';
+$lang['metasaveok'] = 'ë©í ë°ì´íê° ì ì¥ëììµëë¤.';
+$lang['img_backto'] = 'ë¤ë¡';
+$lang['img_title'] = 'ì´ë¦';
+$lang['img_caption'] = 'ì¤ëª
';
+$lang['img_date'] = 'ë ì§';
+$lang['img_fname'] = 'íì¼ ì´ë¦';
+$lang['img_fsize'] = 'í¬ê¸°';
+$lang['img_artist'] = 'ë§ë ì´';
+$lang['img_copyr'] = 'ì ìê¶';
+$lang['img_format'] = 'í¬ë§·';
+$lang['img_camera'] = 'ì¹´ë©ë¼';
+$lang['img_keywords']= 'í¤ìë';
+
+$lang['subscribe_success'] = '%s를 ì¶ê°íìµëë¤. (%sì 구ë
목ë¡)';
+$lang['subscribe_error'] = '%s를 ì¶ê°íëë° ì¤í¨íìµëë¤.(%sì 구ë
목ë¡)';
+$lang['subscribe_noaddress']= 'ë¡ê·¸ì¸ ì ë³´ì ì´ë©ì¼ 주ìê° ììµëë¤, 구ë
목ë¡ì ì¶ê°í ì ììµëë¤.';
+$lang['unsubscribe_success']= '%s를 ì ì¸ìì¼°ìµëë¤. (%sì 구ë
목ë¡)';
+$lang['unsubscribe_error'] = '%s를 ì ì¸ìí¤ëë° ì¤í¨íìµëë¤.(%sì 구ë
목ë¡)';
+
+/* auth.class language support */
+$lang['authmodfailed'] = 'ì못ë ì¬ì©ì ì¸ì¦ ì¤ì ì
ëë¤. ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤.';
+$lang['authtempfail'] = 'ì¬ì©ì ì¸ì¦ì´ ì¼ìì ì¼ë¡ ë¶ê°ë¥í©ëë¤. ë§ì¼ ê³ìí´ì 문ì ê° ë°ìíë©´ ê´ë¦¬ììê² ë¬¸ìí기 ë°ëëë¤.';
+
+/* installer strings */
+$lang['i_chooselang'] = 'ì¬ì©íë ì¸ì´ë¥¼ ì íí©ëë¤.';
+$lang['i_installer'] = 'DokuWiki ì¤ì¹';
+$lang['i_wikiname'] = 'ìí¤ ì´ë¦';
+$lang['i_enableacl'] = 'ACLê¸°ë¥ ì¬ì©(ê¶ì¥ ì¬í)';
+$lang['i_superuser'] = 'ìí¼ ì ì ';
+$lang['i_problems'] = 'ì¤ì¹ ì¤ ìëì ê°ì 문ì ê° ë°ìíìµëë¤. 문ì 를 í´ê²°í í ì¤ì¹ë¥¼ ê³ìí기 ë°ëëë¤.';
+$lang['i_modified'] = 'ë³´ììì ì´ì ë¡ ìë ì¤í¬ë¦½í¸ë ìì ëì§ ìì ì Dokuwikiì¤ì¹ììë§ ëìë©ëë¤.
+ ë¤ì´ë¡ëë í¨í¤ì§ë¥¼ ì¬ì©íê±°ë <a href="http://wiki.splitbrain.org/wiki:install">
+ DokuWiki ì¤ì¹ ê³¼ì </a>ì ì°¸ê³ í´ì ì¤ì¹í기 ë°ëëë¤.';
+$lang['i_funcna'] = 'PHPí¨ì <code>%s</code> ì¬ì©ì´ ë¶ê°ë¥í©ëë¤. í¸ì¤í¸ ì ê³µìê° ì´ë¤ ì´ì ììì¸ì§ ë§ì ëììì§ ëª¨ë¦
ëë¤.';
+$lang['i_phpver'] = 'PHP <code>%s</code>ë²ì ì íìí <code>%s</code>ë²ì ë³´ë¤ ì¤ëëììµëë¤.PHP를 ì
ê·¸ë ì´ëí íìê° ììµëë¤.';
+$lang['i_permfail'] = 'DokuWikië <code>%s</code>ì ì°ê¸° ê°ë¥ ê¶íì´ ììµëë¤. 먼ì ì´ ëë í 리ì ì°ê¸° ê¶íì´ ì¤ì ëì´ì¼ í©ëë¤!';
+$lang['i_confexists'] = '<code>%s</code>ë ì´ë¯¸ ì¡´ì¬í©ëë¤.';
+$lang['i_writeerr'] = '<code>%s</code>ì ë§ë¤ ì ììµëë¤. 먼ì ëë í 리/íì¼ ê¶íì íì¸íê³ íì¼ì ìëì¼ë¡ ë§ë¤ê¸° ë°ëëë¤.';
+$lang['i_badhash'] = 'dokuwiki.php를 ì¸ìí ì ìê±°ë ì본 íì¼ì´ ìëëë¤. (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - ì í¨íì§ ìê±°ë ë¹ ê°ì
ëë¤.';
+$lang['i_success'] = 'íê²½ ì¤ì ì´ ì±ê³µì ì¼ë¡ ëë¬ìµëë¤. install.php를 ì§ìë ìê´ììµëë¤.
+ <a href="doku.php">ìë¡ì´ DokuWiki</a>.';
+$lang['i_failure'] = 'íê²½ ì¤ì íì¼ì ì°ë ëì¤ ìë¬ê° ë°ìíìµëë¤.
+ <a href="doku.php">ìë¡ì´ DokuWiki</a>를 ì¬ì©í기 ì ì
+ ìëì¼ë¡ 문ì 를 í´ê²°í íìê° ììµëë¤.';
+$lang['i_policy'] = 'ì´ê¸° ACL ì ì±
';
+$lang['i_pol0'] = 'ê°ë°©í ìí¤ (ë구ë ì½ê¸°/ì°ê¸°/ì
ë¡ëê° ê°ë¥í©ëë¤.)';
+$lang['i_pol1'] = 'ê³µê°í ìí¤ (ë구ë ì½ì ì ìì§ë§, ë±ë¡ë ì¬ì©ìë§ ì°ê¸°/ì
ë¡ëê° ê°ë¥í©ëë¤.)';
+$lang['i_pol2'] = 'íìí ìí¤ (ë±ë¡ë ì¬ì©ìë§ ì½ê¸°/ì°ê¸°/ì
ë¡ëê° ê°ë¥í©ëë¤.)';
+
+$lang['i_retry'] = 'ë¤ì ìë';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/ko/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== íì´ì§ ì ê¸ ======
-
-ë¤ë¥¸ ì¬ì©ìê° ì´ íì´ì§ í¸ì§ì ìí´ ì ê¸ì ì¤ííììµëë¤. í´ë¹ ì¬ì©ìê°
-í¸ì§ì ëë´ê±°ë ì ê¸ì´ í´ì ë ëê¹ì§ 기ë¤ë¦¬ììì¤.
+====== íì´ì§ ì ê¸ ======
+
+ë¤ë¥¸ ì¬ì©ìê° ì´ íì´ì§ í¸ì§ì ìí´ ì ê¸ì ì¤ííììµëë¤. í´ë¹ ì¬ì©ìê°
+í¸ì§ì ëë´ê±°ë ì ê¸ì´ í´ì ë ëê¹ì§ 기ë¤ë¦¬ììì¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ë¡ê·¸ì¸ ======
-
-ë¡ê·¸ì¸íì§ ìììµëë¤! ìëìì ë¡ê·¸ì¸íììì¤.
-ë¡ê·¸ì¸íë ¤ë©´ ì¿ í¤ë¥¼ ë°ëë¡ ì¤ì íì¬ì¼ í©ëë¤.
-
+====== ë¡ê·¸ì¸ ======
+
+ë¡ê·¸ì¸íì§ ìììµëë¤! ìëìì ë¡ê·¸ì¸íììì¤.
+ë¡ê·¸ì¸íë ¤ë©´ ì¿ í¤ë¥¼ ë°ëë¡ ì¤ì íì¬ì¼ í©ëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-DokuWiki íì´ì§ê° ìì í¹ì ì¶ê°ëììµëë¤. ìì¸í ì ë³´ë ë¤ìê³¼ ê°ìµëë¤.
-
-ë ì§ : @DATE@
-ë¸ë¼ì°ì : @BROWSER@
-IP 주ì : @IPADDRESS@
-í¸ì¤í¸ëª
: @HOSTNAME@
-ìë ë²ì : @OLDPAGE@
-ìë²ì : @NEWPAGE@
-í¸ì§ ìì½ : @SUMMARY@
-ì¬ì©ì : @USER@
-
- at DIFF@
-
-
---
-ì´ ë©ì¼ì @DOKUWIKIURL@ ì DokuWiki ê° ìì±í
-ì´ë©ì¼ì
ëë¤.
+DokuWiki íì´ì§ê° ìì í¹ì ì¶ê°ëììµëë¤. ìì¸í ì ë³´ë ë¤ìê³¼ ê°ìµëë¤.
+
+ë ì§ : @DATE@
+ë¸ë¼ì°ì : @BROWSER@
+IP 주ì : @IPADDRESS@
+í¸ì¤í¸ëª
: @HOSTNAME@
+ìë ë²ì : @OLDPAGE@
+ìë²ì : @NEWPAGE@
+í¸ì§ ìì½ : @SUMMARY@
+ì¬ì©ì : @USER@
+
+ at DIFF@
+
+
+--
+ì´ ë©ì¼ì @DOKUWIKIURL@ ì DokuWiki ê° ìì±í
+ì´ë©ì¼ì
ëë¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ì´ í í½ì ìì§ ììµëë¤======
-
-ìì§ ìë í í½ ë§í¬ë¥¼ ë°ë¼ì¤ì
¨ìµëë¤. **íì´ì§ ë§ë¤ê¸°** ë²í¼ì
-ì´ì©íì¬ ìë¡ ë§ë¤ ì ììµëë¤.
+======ì´ í í½ì ìì§ ììµëë¤======
+
+ìì§ ìë í í½ ë§í¬ë¥¼ ë°ë¼ì¤ì
¨ìµëë¤. **íì´ì§ ë§ë¤ê¸°** ë²í¼ì
+ì´ì©íì¬ ìë¡ ë§ë¤ ì ììµëë¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======ì§ì í ë²ì ìì======
-
-ì§ì í ë²ì ì´ ììµëë¤. **과거 ë²ì ** ë²í¼ì ì¬ì©íì¬ ì´ ë¬¸ìì ë²ì 목ë¡ì ë³´ììì¤.
+======ì§ì í ë²ì ìì======
+
+ì§ì í ë²ì ì´ ììµëë¤. **과거 ë²ì ** ë²í¼ì ì¬ì©íì¬ ì´ ë¬¸ìì ë²ì 목ë¡ì ë³´ììì¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-ìë
íì¸ì, @FULLNAME@!
-
- at DOKUWIKIURL@ ì @TITLE@ ì ì¬ì©ì ìë£ì
ëë¤.
-
-ì¬ì©ìëª
: @LOGIN@
-í¨ì¤ìë : @PASSWORD@
-
---
-ì´ ì´ë©ì¼ì @DOKUWIKIURL@ ì DokuWiki ê°
-ìì±í ê²ì
ëë¤.
+ìë
íì¸ì, @FULLNAME@!
+
+ at DOKUWIKIURL@ ì @TITLE@ ì ì¬ì©ì ìë£ì
ëë¤.
+
+ì¬ì©ìëª
: @LOGIN@
+í¨ì¤ìë : @PASSWORD@
+
+--
+ì´ ì´ë©ì¼ì @DOKUWIKIURL@ ì DokuWiki ê°
+ìì±í ê²ì
ëë¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======미리보기======
-
-ì´ê²ì ì
ë ¥íì ë´ì©ì´ ì´ë»ê² ë³´ì¼ì§ 미리보기íë ê³³ì
ëë¤. ìì§ì **ì ì¥ëì§ ììë¤**ë ì ì 기ìµíììì¤.
-
+======미리보기======
+
+ì´ê²ì ì
ë ¥íì ë´ì©ì´ ì´ë»ê² ë³´ì¼ì§ 미리보기íë ê³³ì
ëë¤. ìì§ì **ì ì¥ëì§ ììë¤**ë ì ì 기ìµíììì¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-ìë
íì¸ì. @FULLNAME@!
-
- at DOKUWIKIURL@ì ìì±íì @TITLE@ì ë³´ë ¤ë©´ ì í¨ì¤ìëê° íìíë¤ë ìì²ì ëêµ°ê° ë°ìë¤ê³ í©ëë¤.
-
-ìë¡ì´ í¨ì¤ìë를 ìì²í ì ì´ ìë¤ë©´ ì´ ì´ë©ì¼ì 무ìí´ë²ë¦¬ì¸ì.
-
- at CONFIRM@ìì ì ë§ë¡ 본ì¸ì´ ê·¸ë° ìì²ì íìëì§ íì¸í´ 보기 ë°ëëë¤.
-
---
-
- at DOKUWIKIURL@ì DokuWikiê° ìëì¼ë¡ ë§ë¤ì´ë¸ ë©ì¼ì
ëë¤.
+ìë
íì¸ì. @FULLNAME@!
+
+ at DOKUWIKIURL@ì ìì±íì @TITLE@ì ë³´ë ¤ë©´ ì í¨ì¤ìëê° íìíë¤ë ìì²ì ëêµ°ê° ë°ìë¤ê³ í©ëë¤.
+
+ìë¡ì´ í¨ì¤ìë를 ìì²í ì ì´ ìë¤ë©´ ì´ ì´ë©ì¼ì 무ìí´ë²ë¦¬ì¸ì.
+
+ at CONFIRM@ìì ì ë§ë¡ 본ì¸ì´ ê·¸ë° ìì²ì íìëì§ íì¸í´ 보기 ë°ëëë¤.
+
+--
+
+ at DOKUWIKIURL@ì DokuWikiê° ìëì¼ë¡ ë§ë¤ì´ë¸ ë©ì¼ì
ëë¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-ì´ íì´ì§ë ì½ê¸° ì ì©ì
ëë¤. ìì¤ë¥¼ ë³¼ ìë ìì§ë§, ìì í ìë ììµëë¤. ì°ìµì [[public:playground|ì°ìµì¥]]ìì íììì¤.
-문ì ê° ìë¤ê³ ìê°íìë©´ ê´ë¦¬ììê² ë¬¸ìíììì¤.
-
+ì´ íì´ì§ë ì½ê¸° ì ì©ì
ëë¤. ìì¤ë¥¼ ë³¼ ìë ìì§ë§, ìì í ìë ììµëë¤. ì°ìµì [[public:playground|ì°ìµì¥]]ìì íììì¤.
+문ì ê° ìë¤ê³ ìê°íìë©´ ê´ë¦¬ììê² ë¬¸ìíììì¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ìµê·¼ ë³ê²½======
-
-ìëì íì´ì§ë ìµê·¼ì ë³ê²½ë ê²ì
ëë¤.
-
-
+======ìµê·¼ ë³ê²½======
+
+ìëì íì´ì§ë ìµê·¼ì ë³ê²½ë ê²ì
ëë¤.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== ì ì¬ì©ì ë±ë¡ ======
-
-ì´ ìí¤ì ì ê³ì ì ë§ë¤ë ¤ë©´ ìëì 모ë ë´ì©ì ì
ë ¥íììì¤.
-**ì ëë¡ ë ì´ë©ì¼ 주ì**를 ì¬ì©íììì¤.
-ê·¸ë¬ë, ìë ë´ì©ì ì
ë ¥íë¤ê³ í´ì ê³ì ì ë§ë¤ ì ìì¼ë¦¬ë¼ê³ ë ë¯¿ì§ ë§ììì¤.
-ì´ê³³ì ë´ê° ê°ì¸ì ì¼ë¡ ì¬ì©íë ê³³ì´ë©°, ê³ì ì ë§ë¤ì´ ì£¼ê³ ìì£¼ê³ ë ë´ ë§ìì
ëë¤.
-ì°¨ë¼ë¦¬, ë´ê² ì´ë©ì¼ì ë³´ë´ì ì ì²íë í¸ì´ ë ëì ê²ì
ëë¤.
-í¨ì¤ìëë ì´ ì´ë©ì¼ë¡ ë³´ë´ì§ëë¤.
-ì¬ì©ìëª
ì ì¬ë°ë¥¸ [[doku>wiki:pagename|pagename]] ì´ì´ì¼ í©ëë¤.
-
+====== ì ì¬ì©ì ë±ë¡ ======
+
+ì´ ìí¤ì ì ê³ì ì ë§ë¤ë ¤ë©´ ìëì 모ë ë´ì©ì ì
ë ¥íììì¤.
+**ì ëë¡ ë ì´ë©ì¼ 주ì**를 ì¬ì©íììì¤.
+ê·¸ë¬ë, ìë ë´ì©ì ì
ë ¥íë¤ê³ í´ì ê³ì ì ë§ë¤ ì ìì¼ë¦¬ë¼ê³ ë ë¯¿ì§ ë§ììì¤.
+ì´ê³³ì ë´ê° ê°ì¸ì ì¼ë¡ ì¬ì©íë ê³³ì´ë©°, ê³ì ì ë§ë¤ì´ ì£¼ê³ ìì£¼ê³ ë ë´ ë§ìì
ëë¤.
+ì°¨ë¼ë¦¬, ë´ê² ì´ë©ì¼ì ë³´ë´ì ì ì²íë í¸ì´ ë ëì ê²ì
ëë¤.
+í¨ì¤ìëë ì´ ì´ë©ì¼ë¡ ë³´ë´ì§ëë¤.
+ì¬ì©ìëª
ì ì¬ë°ë¥¸ [[doku>wiki:pagename|pagename]] ì´ì´ì¼ í©ëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-ìë¡ì´ ì¬ì©ìê° ë±ë¡ëììµëë¤:
-
-ì¬ì©ì ì´ë¦ : @NEWUSER@
-ì¬ì©ì ì¤ì ì´ë¦ : @NEWNAME@
-ì´ë©ì¼ : @NEWEMAIL@
-
-ë ì§ : @DATE@
-ë¸ë¼ì°ì : @BROWSER@
-IP주ì : @IPADDRESS@
-í¸ì¤í¸ ì´ë¦ : @HOSTNAME@
-
---
-
- at DOKUWIKIURL@ì DokuWikiê° ìëì¼ë¡ ë§ë¤ì´ë¸ ë©ì¼ì
ëë¤.
+ìë¡ì´ ì¬ì©ìê° ë±ë¡ëììµëë¤:
+
+ì¬ì©ì ì´ë¦ : @NEWUSER@
+ì¬ì©ì ì¤ì ì´ë¦ : @NEWNAME@
+ì´ë©ì¼ : @NEWEMAIL@
+
+ë ì§ : @DATE@
+ë¸ë¼ì°ì : @BROWSER@
+IP주ì : @IPADDRESS@
+í¸ì¤í¸ ì´ë¦ : @HOSTNAME@
+
+--
+
+ at DOKUWIKIURL@ì DokuWikiê° ìëì¼ë¡ ë§ë¤ì´ë¸ ë©ì¼ì
ëë¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ìë¡ì´ í¨ì¤ìë ì ì¡ ======
-
-ì´ ìí¤ ê³ì ì ëí ì í¨ì¤ìë를 ì구í기 ìí´ ìë í¼ìì ì¬ì©ì ì´ë¦ì ì
ë ¥íì¸ì.
-íì¸ ë§í¬ë ìë¡ ë±ë¡ë ì´ë©ì¼ 주ìë¡ ë°ì¡ë©ëë¤.
-
+====== ìë¡ì´ í¨ì¤ìë ì ì¡ ======
+
+ì´ ìí¤ ê³ì ì ëí ì í¨ì¤ìë를 ì구í기 ìí´ ìë í¼ìì ì¬ì©ì ì´ë¦ì ì
ë ¥íì¸ì.
+íì¸ ë§í¬ë ìë¡ ë±ë¡ë ì´ë©ì¼ 주ìë¡ ë°ì¡ë©ëë¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ì´ì ë²ì ======
-
-ì´ ë¬¸ìì ìë ë²ì ì ë¤ìê³¼ ê°ìµëë¤. ì´ì ë²ì ì¼ë¡ ëìê°ë ¤ë©´, ìëìì ì íí ë¤ì, **íì´ì§ í¸ì§**ì í´ë¦í ìí ì ì¥íììì¤.
-
+======ì´ì ë²ì ======
+
+ì´ ë¬¸ìì ìë ë²ì ì ë¤ìê³¼ ê°ìµëë¤. ì´ì ë²ì ì¼ë¡ ëìê°ë ¤ë©´, ìëìì ì íí ë¤ì, **íì´ì§ í¸ì§**ì í´ë¦í ìí ì ì¥íììì¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======찾기======
-
-찾기 결과를 ìëìì ë³¼ ì ììµëë¤. ë§ì¼ ìíë ê²ì ì°¾ì§ ëª»íìë¤ë©´, **íì´ì§ í¸ì§**
-ë²í¼ì ì´ì©íì¬ ì§ì ë´ì©ê³¼ ê°ì ì´ë¦ì íì´ì§ë¥¼ ë§ë¤ ì ììµëë¤.
-
+======찾기======
+
+찾기 결과를 ìëìì ë³¼ ì ììµëë¤. ë§ì¼ ìíë ê²ì ì°¾ì§ ëª»íìë¤ë©´, **íì´ì§ í¸ì§**
+ë²í¼ì ì´ì©íì¬ ì§ì ë´ì©ê³¼ ê°ì ì´ë¦ì íì´ì§ë¥¼ ë§ë¤ ì ììµëë¤.
+
=====ê²°ê³¼=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ko/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**ì´ê²ì 문ìì ì´ì ë²ì ì
ëë¤!**
-----
+**ì´ê²ì 문ìì ì´ì ë²ì ì
ëë¤!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/ko/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# ìì¸ì´ ë§ë¤ì´ ì§ì§ ìë ë¨ì´ 목ë¡ì
ëë¤.(íì¤ì íë¨ì´)
-# ì´ íì¼ì í¸ì§íë¤ë©´ UNIXì¤ ì¢
ë£ë¬¸ì를 ì¬ì©í´ì¼í©ëë¤.(ë¨ì¼ ê°í문ì)
-# 3문ìì´í ë¨ì´ë ìëì¼ë¡ 무ìëë¯ë¡ 3문ìë³´ë¤ ì§§ì ë¨ì´ë í¬í¨ìí¬ íìê° ììµëë¤.
-# http://www.ranks.nl/stopwords/ì 기ì¤ì¼ë¡ ë§ë¤ì´ì§ 목ë¡ì
ëë¤.
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# ìì¸ì´ ë§ë¤ì´ ì§ì§ ìë ë¨ì´ 목ë¡ì
ëë¤.(íì¤ì íë¨ì´)
+# ì´ íì¼ì í¸ì§íë¤ë©´ UNIXì¤ ì¢
ë£ë¬¸ì를 ì¬ì©í´ì¼í©ëë¤.(ë¨ì¼ ê°í문ì)
+# 3문ìì´í ë¨ì´ë ìëì¼ë¡ 무ìëë¯ë¡ 3문ìë³´ë¤ ì§§ì ë¨ì´ë í¬í¨ìí¬ íìê° ììµëë¤.
+# http://www.ranks.nl/stopwords/ì 기ì¤ì¼ë¡ ë§ë¤ì´ì§ 목ë¡ì
ëë¤.
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/ko/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-ìë
íì¸ì!
-
- at TITLE@ ìí¤ì @PAGE@ íì´ì§ê° ë³ê²½ë¬ìµëë¤.
-
-ë³ê²½ ë´ì©ì ìëì ê°ìµëë¤.
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
- at DOKUWIKIURL@ì ì´ íì´ì§ 구ë
ì ì²ì í´ì§íë ¤ë©´ @NEWPAGE@를 방문íì¬
-'구ë
ì ì² í´ì§'를 ì ííì¸ì.
-
---
-
- at DOKUWIKIURL@ì DokuWikiê° ìëì¼ë¡ ë§ë¤ì´ë¸ ë©ì¼ì
ëë¤.
+ìë
íì¸ì!
+
+ at TITLE@ ìí¤ì @PAGE@ íì´ì§ê° ë³ê²½ë¬ìµëë¤.
+
+ë³ê²½ ë´ì©ì ìëì ê°ìµëë¤.
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+ at DOKUWIKIURL@ì ì´ íì´ì§ 구ë
ì ì²ì í´ì§íë ¤ë©´ @NEWPAGE@를 방문íì¬
+'구ë
ì ì² í´ì§'를 ì ííì¸ì.
+
+--
+
+ at DOKUWIKIURL@ì DokuWikiê° ìëì¼ë¡ ë§ë¤ì´ë¸ ë©ì¼ì
ëë¤.
Modified: site/trunk/www-root/wiki/inc/lang/ko/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ê°ì¸ ì ë³´ ìì ======
-
-ë³ê²½íê³ ì¶ì í목ì ì
ë ¥í기 ë°ëëë¤. ì¬ì©ì ì´ë¦ì ë°ê¾¸ê³ ì¶ì§ ìê² ì§ì?
-
-
+====== ê°ì¸ ì ë³´ ìì ======
+
+ë³ê²½íê³ ì¶ì í목ì ì
ë ¥í기 ë°ëëë¤. ì¬ì©ì ì´ë¦ì ë°ê¾¸ê³ ì¶ì§ ìê² ì§ì?
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ko/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-DokuWikiê° íì¼ì ì
ë¡ëíììµëë¤.
-
-ìì¸í ì ë³´:
-
-íì¼ : @MEDIA@
-ë ì§ : @DATE@
-ì¹ ë¸ë¼ì°ì : @BROWSER@
-IP 주ì : @IPADDRESS@
-í¸ì¤í¸ëª
: @HOSTNAME@
-í¬ê¸° : @SIZE@
-íì¼ ì¢
ë¥ : @MIME@
-ì¬ì©ì : @USER@
-
---
+DokuWikiê° íì¼ì ì
ë¡ëíììµëë¤.
+
+ìì¸í ì ë³´:
+
+íì¼ : @MEDIA@
+ë ì§ : @DATE@
+ì¹ ë¸ë¼ì°ì : @BROWSER@
+IP 주ì : @IPADDRESS@
+í¸ì¤í¸ëª
: @HOSTNAME@
+í¬ê¸° : @SIZE@
+íì¼ ì¢
ë¥ : @MIME@
+ì¬ì©ì : @USER@
+
+--
ì´ ë©ì¼ì @DOKUWIKIURL@ì DokuWikiê° ìì±í ë©ì¼ì
ëë¤.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ko/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ko/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ko/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======ì¤í¸ ì°¨ë¨======
-
-íë í¹ì ê·¸ ì´ìì ì°¨ë¨ë ë¨ì´ê° í¬í¨ëì´ ìì¼ë¯ë¡ ë³ê²½ ë´ì©ì´ ì ì¥ëì§ **ìììµëë¤.**
-ëì ë¡ë´ ê°ì¼ë! ì¤í¸ì´ë ì¶ê°íë ¤ íê³ ! ë§ì¼ ë¡ë´ì´ ìëë¼ ì¬ëì´ê³ , ì¤ë¥ë¼ê³ ìê°íì ë¤ë©´,
-ê´ë¦¬ììê² ë¬¸ìíììì¤.
-
+======ì¤í¸ ì°¨ë¨======
+
+íë í¹ì ê·¸ ì´ìì ì°¨ë¨ë ë¨ì´ê° í¬í¨ëì´ ìì¼ë¯ë¡ ë³ê²½ ë´ì©ì´ ì ì¥ëì§ **ìììµëë¤.**
+ëì ë¡ë´ ê°ì¼ë! ì¤í¸ì´ë ì¶ê°íë ¤ íê³ ! ë§ì¼ ë¡ë´ì´ ìëë¼ ì¬ëì´ê³ , ì¤ë¥ë¼ê³ ìê°íì ë¤ë©´,
+ê´ë¦¬ììê² ë¬¸ìíììì¤.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Administration ======
-
-Below you can find a list of administrative tasks available in
-DokuWiki.
-
+====== Administration ======
+
+Below you can find a list of administrative tasks available in
+DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/admin_acl.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/admin_acl.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/admin_acl.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-====== Access Control List Management ======
-
-On this page you can add and remove permissions for the current
-page and all the [[doku>wiki:namespaces|namespaces]] it is in.
-You should read the [[doku>wiki:acl|official documentation on ACL]]
-to fully understand how access control works.
-
-The page displays all permissions that are significant for the
-current page. Permissions regarding other pages are not shown -- to
-edit them [[this>doku.php?do=index|browse]] to the according page
-first, then change to the ACL Administration.
-
+====== Access Control List Management ======
+
+On this page you can add and remove permissions for the current
+page and all the [[doku>wiki:namespaces|namespaces]] it is in.
+You should read the [[doku>wiki:acl|official documentation on ACL]]
+to fully understand how access control works.
+
+The page displays all permissions that are significant for the
+current page. Permissions regarding other pages are not shown -- to
+edit them [[this>doku.php?do=index|browse]] to the according page
+first, then change to the ACL Administration.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Girêdanên paŠ======
-
-Di rûpelên di vê lîsteyê de girêdanên ji vê rûpelê re hene.
-
+====== Girêdanên paŠ======
+
+Di rûpelên di vê lîsteyê de girêdanên ji vê rûpelê re hene.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Guhertoyeke nûtir heye ======
-
-Guhertoyeke nûtir a belgeya ku tu biguherînî heye. Sedema wê, bikarhênerkê/î din di hema demê de belge diguherîne.
-
-Examine the differences shown below thoroughly, then decide which version to
-keep. If you choose ''save'', your version will be saved. Hit ''cancel'' to
-keep the current version.
-
+====== Guhertoyeke nûtir heye ======
+
+Guhertoyeke nûtir a belgeya ku tu biguherînî heye. Sedema wê, bikarhênerkê/î din di hema demê de belge diguherîne.
+
+Examine the differences shown below thoroughly, then decide which version to
+keep. If you choose ''save'', your version will be saved. Hit ''cancel'' to
+keep the current version.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Permission Denied======
-
-Sorry, you don't have enough rights to continue. Perhaps you forgot to login?
-
+======Permission Denied======
+
+Sorry, you don't have enough rights to continue. Perhaps you forgot to login?
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Cuyawazî======
-
-Li vê derê cuyawaziyên nav revîziyona hilbijartî û verziyona aniha tên nîÅan dan.
-
+======Cuyawazî======
+
+Li vê derê cuyawaziyên nav revîziyona hilbijartî û verziyona aniha tên nîÅan dan.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Rûpelê biguherîne û ''Tomar bike'' bitikîne. Ji bo sîntaksa wîkiyê binihêre [[wiki:syntax]]. Ji kerema xwe rûpelê bi tenê biguherîne, heke tû dikarî **baÅtir** bikî. Heke tu dixwazî çend tiÅtan biceribînî, biçe [[wiki:playground]]. Li vê derê tu dikarî her tiÅtî biceribînî.
-
+Rûpelê biguherîne û ''Tomar bike'' bitikîne. Ji bo sîntaksa wîkiyê binihêre [[wiki:syntax]]. Ji kerema xwe rûpelê bi tenê biguherîne, heke tû dikarî **baÅtir** bikî. Heke tu dixwazî çend tiÅtan biceribînî, biçe [[wiki:playground]]. Li vê derê tu dikarî her tiÅtî biceribînî.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**You've loaded an old revision of the document!** If you save it, you will create a new version with this data.
+**You've loaded an old revision of the document!** If you save it, you will create a new version with this data.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ku/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ãndeks ======
-
+====== Ãndeks ======
+
Ev îndeksa hemû rûpelên heyî ye. Rûpel li gora [[doku>wiki:namespaces|namespace]] hatin birêzkirin.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ku/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,164 +1,164 @@
-<?php
-/**
- * kurdish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @translator Erdal Ronahî <erdal.ronahi at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = 'Vê rûpelê biguherîne';
-$lang['btn_source'] = 'Ãavkaniya rûpelê nîÅan bide';
-$lang['btn_show'] = 'Rûpelê nîÅan bide';
-$lang['btn_create'] = 'Vê rûpelê biafirîne';
-$lang['btn_search'] = 'Lêbigere';
-$lang['btn_save'] = 'Tomar bike';
-$lang['btn_preview']= 'PêÅdîtin';
-$lang['btn_top'] = 'Biçe ser';
-$lang['btn_newer'] = '<< nûtir';
-$lang['btn_older'] = 'kevntir >>';
-$lang['btn_revs'] = 'Revîziyonên kevn';
-$lang['btn_recent'] = 'Guherandinên dawî';
-$lang['btn_upload'] = 'Bar bike';
-$lang['btn_cancel'] = 'Betal';
-$lang['btn_index'] = 'Ãndeks';
-$lang['btn_secedit']= 'Biguherîne';
-$lang['btn_login'] = 'Têkeve';
-$lang['btn_logout'] = 'Derkeve';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Rojanekirin';
-$lang['btn_delete'] = 'Jê bibe';
-$lang['btn_back'] = 'PaÅ';
-$lang['btn_backlink'] = "Girêdanên paÅ";
-$lang['btn_backtomedia'] = 'Back to Mediafile Selection';
-$lang['btn_subscribe'] = 'Subscribe Changes';
-$lang['btn_unsubscribe'] = 'Unsubscribe Changes';
-
-$lang['loggedinas'] = 'Logged in as';
-$lang['user'] = 'Username';
-$lang['pass'] = 'Password';
-$lang['passchk'] = 'once again';
-$lang['remember'] = 'Remember me';
-$lang['fullname'] = 'Full name';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Register';
-$lang['badlogin'] = 'Sorry, username or password was wrong.';
-
-$lang['regmissing'] = 'Sorry, you must fill in all fields.';
-$lang['reguexists'] = 'Sorry, a user with this login already exists.';
-$lang['regsuccess'] = 'The user has been created and the password was sent by email.';
-$lang['regsuccess2']= 'The user has been created.';
-$lang['regmailfail']= 'Looks like there was an error on sending the password mail. Please contact the admin!';
-$lang['regbadmail'] = 'The given email address looks invalid - if you think this is an error, contact the admin';
-$lang['regbadpass'] = 'The two given passwords are not identically, please try again.';
-$lang['regpwmail'] = 'Your DokuWiki password';
-$lang['reghere'] = 'You don\'t have an account yet? Just get one';
-
-$lang['txt_upload'] = 'Select file to upload';
-$lang['txt_filename'] = 'Enter wikiname (optional)';
-$lang['txt_overwrt'] = 'Overwrite existing file';
-$lang['lockedby'] = 'Currently locked by';
-$lang['lockexpire'] = 'Lock expires at';
-$lang['willexpire'] = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.';
-
-$lang['notsavedyet'] = 'Unsaved changes will be lost.\nReally continue?';
-
-$lang['rssfailed'] = 'An error occured while fetching this feed: ';
-$lang['nothingfound']= 'TiÅtek nehat dîtin.';
-
-$lang['mediaselect'] = 'Mediafile Selection';
-$lang['fileupload'] = 'Mediafile Upload';
-$lang['uploadsucc'] = 'Upload successful';
-$lang['uploadfail'] = 'Upload failed. Maybe wrong permissions?';
-$lang['uploadwrong'] = 'Upload denied. This file extension is forbidden!';
-$lang['uploadexist'] = 'File already exists. Nothing done.';
-$lang['deletesucc'] = 'The file "%s" has been deleted.';
-$lang['deletefail'] = '"%s" couldn\'t be deleted - check permissions.';
-$lang['mediainuse'] = 'The file "%s" hasn\'t been deleted - it is still in use.';
-$lang['namespaces'] = 'Namespace';
-$lang['mediafiles'] = 'Available files in';
-
-$lang['reference'] = 'Referansa';
-$lang['ref_inuse'] = 'The file can\'t be deleted, because it\'s still used by the following pages:';
-$lang['ref_hidden'] = 'Some references are on pages you don\'t have permission to read';
-
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Matching pagenames';
-$lang['toc'] = 'Tabloya Navêrokê';
-$lang['current'] = 'current';
-$lang['yours'] = 'Your Version';
-$lang['diff'] = 'show differences to current version';
-$lang['line'] = 'Rêz';
-$lang['breadcrumb'] = 'Åop';
-$lang['lastmod'] = 'Guherandina dawî';
-$lang['by'] = 'by';
-$lang['deleted'] = 'hat jê birin';
-$lang['created'] = 'hat afirandin';
-$lang['restored'] = 'old revision restored';
-$lang['summary'] = 'Kurteya guhartinê';
-
-$lang['mail_newpage'] = 'page added:';
-$lang['mail_changed'] = 'page changed:';
-
-$lang['nosmblinks'] = 'Linking to Windows shares only works in Microsoft Internet Explorer.\nYou still can copy and paste the link.';
-
-$lang['qb_alert'] = 'Please enter the text you want to format.\nIt will be appended to the end of the document.';
-$lang['qb_bold'] = 'Bold Text';
-$lang['qb_italic'] = 'Italic Text';
-$lang['qb_underl'] = 'Underlined Text';
-$lang['qb_code'] = 'Code Text';
-$lang['qb_strike'] = 'Strike-through Text';
-$lang['qb_h1'] = 'Level 1 Headline';
-$lang['qb_h2'] = 'Level 2 Headline';
-$lang['qb_h3'] = 'Level 3 Headline';
-$lang['qb_h4'] = 'Level 4 Headline';
-$lang['qb_h5'] = 'Level 5 Headline';
-$lang['qb_link'] = 'Internal Link';
-$lang['qb_extlink'] = 'External Link';
-$lang['qb_hr'] = 'Horizontal Rule';
-$lang['qb_ol'] = 'Ordered List Item';
-$lang['qb_ul'] = 'Unordered List Item';
-$lang['qb_media'] = 'Add Images and other files';
-$lang['qb_sig'] = 'Insert Signature';
-
-$lang['del_confirm']= 'Delete this entry?';
-
-$lang['admin_acl'] = 'Access Control List Management...';
-$lang['admin_register']= 'Add new user...';
-
-$lang['acl_group'] = 'Group';
-$lang['acl_user'] = 'User';
-$lang['acl_perms'] = 'Permissions for';
-$lang['page'] = 'Rûpel';
-$lang['namespace'] = 'Namespace';
-
-$lang['acl_perm1'] = 'Bixwîne';
-$lang['acl_perm2'] = 'Biguherîne';
-$lang['acl_perm4'] = 'Biafirîne';
-$lang['acl_perm8'] = 'Upload';
-$lang['acl_perm16'] = 'Jê bibe';
-$lang['acl_new'] = 'Add new Entry';
-
-$lang['metaedit'] = 'Edit Metadata';
-$lang['metasaveerr'] = 'Writing metadata failed';
-$lang['metasaveok'] = 'Metadata saved';
-$lang['img_backto'] = 'Back to';
-$lang['img_title'] = 'Title';
-$lang['img_caption'] = 'Caption';
-$lang['img_date'] = 'Date';
-$lang['img_fname'] = 'Filename';
-$lang['img_fsize'] = 'Size';
-$lang['img_artist'] = 'Photographer';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords']= 'Keywords';
-
-$lang['subscribe_success'] = 'Added %s to subscription list for %s';
-$lang['subscribe_error'] = 'Error adding %s to subscription list for %s';
-$lang['subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list';
-$lang['unsubscribe_success']= 'Removed %s from subscription list for %s';
-$lang['unsubscribe_error'] = 'Error removing %s from subscription list for %s';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * kurdish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @translator Erdal Ronahî <erdal.ronahi at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = 'Vê rûpelê biguherîne';
+$lang['btn_source'] = 'Ãavkaniya rûpelê nîÅan bide';
+$lang['btn_show'] = 'Rûpelê nîÅan bide';
+$lang['btn_create'] = 'Vê rûpelê biafirîne';
+$lang['btn_search'] = 'Lêbigere';
+$lang['btn_save'] = 'Tomar bike';
+$lang['btn_preview']= 'PêÅdîtin';
+$lang['btn_top'] = 'Biçe ser';
+$lang['btn_newer'] = '<< nûtir';
+$lang['btn_older'] = 'kevntir >>';
+$lang['btn_revs'] = 'Revîziyonên kevn';
+$lang['btn_recent'] = 'Guherandinên dawî';
+$lang['btn_upload'] = 'Bar bike';
+$lang['btn_cancel'] = 'Betal';
+$lang['btn_index'] = 'Ãndeks';
+$lang['btn_secedit']= 'Biguherîne';
+$lang['btn_login'] = 'Têkeve';
+$lang['btn_logout'] = 'Derkeve';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Rojanekirin';
+$lang['btn_delete'] = 'Jê bibe';
+$lang['btn_back'] = 'PaÅ';
+$lang['btn_backlink'] = "Girêdanên paÅ";
+$lang['btn_backtomedia'] = 'Back to Mediafile Selection';
+$lang['btn_subscribe'] = 'Subscribe Changes';
+$lang['btn_unsubscribe'] = 'Unsubscribe Changes';
+
+$lang['loggedinas'] = 'Logged in as';
+$lang['user'] = 'Username';
+$lang['pass'] = 'Password';
+$lang['passchk'] = 'once again';
+$lang['remember'] = 'Remember me';
+$lang['fullname'] = 'Full name';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Register';
+$lang['badlogin'] = 'Sorry, username or password was wrong.';
+
+$lang['regmissing'] = 'Sorry, you must fill in all fields.';
+$lang['reguexists'] = 'Sorry, a user with this login already exists.';
+$lang['regsuccess'] = 'The user has been created and the password was sent by email.';
+$lang['regsuccess2']= 'The user has been created.';
+$lang['regmailfail']= 'Looks like there was an error on sending the password mail. Please contact the admin!';
+$lang['regbadmail'] = 'The given email address looks invalid - if you think this is an error, contact the admin';
+$lang['regbadpass'] = 'The two given passwords are not identically, please try again.';
+$lang['regpwmail'] = 'Your DokuWiki password';
+$lang['reghere'] = 'You don\'t have an account yet? Just get one';
+
+$lang['txt_upload'] = 'Select file to upload';
+$lang['txt_filename'] = 'Enter wikiname (optional)';
+$lang['txt_overwrt'] = 'Overwrite existing file';
+$lang['lockedby'] = 'Currently locked by';
+$lang['lockexpire'] = 'Lock expires at';
+$lang['willexpire'] = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.';
+
+$lang['notsavedyet'] = 'Unsaved changes will be lost.\nReally continue?';
+
+$lang['rssfailed'] = 'An error occured while fetching this feed: ';
+$lang['nothingfound']= 'TiÅtek nehat dîtin.';
+
+$lang['mediaselect'] = 'Mediafile Selection';
+$lang['fileupload'] = 'Mediafile Upload';
+$lang['uploadsucc'] = 'Upload successful';
+$lang['uploadfail'] = 'Upload failed. Maybe wrong permissions?';
+$lang['uploadwrong'] = 'Upload denied. This file extension is forbidden!';
+$lang['uploadexist'] = 'File already exists. Nothing done.';
+$lang['deletesucc'] = 'The file "%s" has been deleted.';
+$lang['deletefail'] = '"%s" couldn\'t be deleted - check permissions.';
+$lang['mediainuse'] = 'The file "%s" hasn\'t been deleted - it is still in use.';
+$lang['namespaces'] = 'Namespace';
+$lang['mediafiles'] = 'Available files in';
+
+$lang['reference'] = 'Referansa';
+$lang['ref_inuse'] = 'The file can\'t be deleted, because it\'s still used by the following pages:';
+$lang['ref_hidden'] = 'Some references are on pages you don\'t have permission to read';
+
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Matching pagenames';
+$lang['toc'] = 'Tabloya Navêrokê';
+$lang['current'] = 'current';
+$lang['yours'] = 'Your Version';
+$lang['diff'] = 'show differences to current version';
+$lang['line'] = 'Rêz';
+$lang['breadcrumb'] = 'Åop';
+$lang['lastmod'] = 'Guherandina dawî';
+$lang['by'] = 'by';
+$lang['deleted'] = 'hat jê birin';
+$lang['created'] = 'hat afirandin';
+$lang['restored'] = 'old revision restored';
+$lang['summary'] = 'Kurteya guhartinê';
+
+$lang['mail_newpage'] = 'page added:';
+$lang['mail_changed'] = 'page changed:';
+
+$lang['nosmblinks'] = 'Linking to Windows shares only works in Microsoft Internet Explorer.\nYou still can copy and paste the link.';
+
+$lang['qb_alert'] = 'Please enter the text you want to format.\nIt will be appended to the end of the document.';
+$lang['qb_bold'] = 'Bold Text';
+$lang['qb_italic'] = 'Italic Text';
+$lang['qb_underl'] = 'Underlined Text';
+$lang['qb_code'] = 'Code Text';
+$lang['qb_strike'] = 'Strike-through Text';
+$lang['qb_h1'] = 'Level 1 Headline';
+$lang['qb_h2'] = 'Level 2 Headline';
+$lang['qb_h3'] = 'Level 3 Headline';
+$lang['qb_h4'] = 'Level 4 Headline';
+$lang['qb_h5'] = 'Level 5 Headline';
+$lang['qb_link'] = 'Internal Link';
+$lang['qb_extlink'] = 'External Link';
+$lang['qb_hr'] = 'Horizontal Rule';
+$lang['qb_ol'] = 'Ordered List Item';
+$lang['qb_ul'] = 'Unordered List Item';
+$lang['qb_media'] = 'Add Images and other files';
+$lang['qb_sig'] = 'Insert Signature';
+
+$lang['del_confirm']= 'Delete this entry?';
+
+$lang['admin_acl'] = 'Access Control List Management...';
+$lang['admin_register']= 'Add new user...';
+
+$lang['acl_group'] = 'Group';
+$lang['acl_user'] = 'User';
+$lang['acl_perms'] = 'Permissions for';
+$lang['page'] = 'Rûpel';
+$lang['namespace'] = 'Namespace';
+
+$lang['acl_perm1'] = 'Bixwîne';
+$lang['acl_perm2'] = 'Biguherîne';
+$lang['acl_perm4'] = 'Biafirîne';
+$lang['acl_perm8'] = 'Upload';
+$lang['acl_perm16'] = 'Jê bibe';
+$lang['acl_new'] = 'Add new Entry';
+
+$lang['metaedit'] = 'Edit Metadata';
+$lang['metasaveerr'] = 'Writing metadata failed';
+$lang['metasaveok'] = 'Metadata saved';
+$lang['img_backto'] = 'Back to';
+$lang['img_title'] = 'Title';
+$lang['img_caption'] = 'Caption';
+$lang['img_date'] = 'Date';
+$lang['img_fname'] = 'Filename';
+$lang['img_fsize'] = 'Size';
+$lang['img_artist'] = 'Photographer';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Camera';
+$lang['img_keywords']= 'Keywords';
+
+$lang['subscribe_success'] = 'Added %s to subscription list for %s';
+$lang['subscribe_error'] = 'Error adding %s to subscription list for %s';
+$lang['subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list';
+$lang['unsubscribe_success']= 'Removed %s from subscription list for %s';
+$lang['unsubscribe_error'] = 'Error removing %s from subscription list for %s';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/ku/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Page locked ======
-
-This page is currently locked for editing by another user. You have to wait
-until this user finishes editing or the lock expires.
+====== Page locked ======
+
+This page is currently locked for editing by another user. You have to wait
+until this user finishes editing or the lock expires.
Modified: site/trunk/www-root/wiki/inc/lang/ku/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Login ======
-
-You are currently not logged in! Enter your authentication credentials below to log in.
-You need to have cookies enabled to log in.
-
+====== Login ======
+
+You are currently not logged in! Enter your authentication credentials below to log in.
+You need to have cookies enabled to log in.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-A page in your DokuWiki was added or changed. Here are the details:
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-Old Revision: @OLDPAGE@
-New Revision: @NEWPAGE@
-Edit Summary: @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+A page in your DokuWiki was added or changed. Here are the details:
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+Old Revision: @OLDPAGE@
+New Revision: @NEWPAGE@
+Edit Summary: @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ku/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Ev rûpel hîn nehat nivîsandin======
-
-Rûpela tu hatî hîn nehat nivîsandin. Tu dikarî niha dest bi nivîsandina vê rûpelê bikî. Ji bo vê, ''Dest pê bike'' bitikîne.
+======Ev rûpel hîn nehat nivîsandin======
+
+Rûpela tu hatî hîn nehat nivîsandin. Tu dikarî niha dest bi nivîsandina vê rûpelê bikî. Ji bo vê, ''Dest pê bike'' bitikîne.
Modified: site/trunk/www-root/wiki/inc/lang/ku/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======No such revision======
-
-The specified revision doesn't exist. Use the ''Old revisions'' button for a list of old revisions of this document.
-
+======No such revision======
+
+The specified revision doesn't exist. Use the ''Old revisions'' button for a list of old revisions of this document.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hi @FULLNAME@!
-
-Here is your userdata for @TITLE@ at @DOKUWIKIURL@
-
-Login : @LOGIN@
-Password : @PASSWORD@
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+Hi @FULLNAME@!
+
+Here is your userdata for @TITLE@ at @DOKUWIKIURL@
+
+Login : @LOGIN@
+Password : @PASSWORD@
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ku/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======PêÅdîtin======
-
+======PêÅdîtin======
+
Li vê derê tu dikarî bibîni ku nivîsa te dê çawa xuya bibe. Ji bîr neke: Hîn **nehat tomar kirin**!
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ku/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong.
-
+This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Guherandinên dawî======
-
-Ev rûpel di dema nêzîk de hatin guherandin.
+======Guherandinên dawî======
+
+Ev rûpel di dema nêzîk de hatin guherandin.
Modified: site/trunk/www-root/wiki/inc/lang/ku/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Register as new user ======
-
-Fill in all the information below to create a new account in this wiki.
-Make sure you supply a **valid e-mail address** - your new password will
-be sent to it. The login name should be a valid [[doku>wiki:pagename|pagename]].
-
+====== Register as new user ======
+
+Fill in all the information below to create a new account in this wiki.
+Make sure you supply a **valid e-mail address** - your new password will
+be sent to it. The login name should be a valid [[doku>wiki:pagename|pagename]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Old Revisions======
-
-These are the older revisons of the current document. To revert to an old revision, select it from below, click ''Edit this page'' and save it.
-
+======Old Revisions======
+
+These are the older revisons of the current document. To revert to an old revision, select it from below, click ''Edit this page'' and save it.
+
Modified: site/trunk/www-root/wiki/inc/lang/ku/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Lêbigere======
-
-Jêr encamên lêgerandina te tên nîÅan dan. Heke tiÅtek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.
-
+======Lêbigere======
+
+Jêr encamên lêgerandina te tên nîÅan dan. Heke tiÅtek nehatibe dîtin, tu dikarî dest bi nivîsandina rûpelekê nû bikî. Ji bo vê, ''Vê rûpelê biguherîne'' bitikîne.
+
=====Encam=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ku/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**This is an old revision of the document!**
-----
+**This is an old revision of the document!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/ku/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/ku/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Hello!
-
-The page @PAGE@ in the @TITLE@ wiki changed.
-Here are the changes:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-To unsubscribe from this page log into the wiki at
- at DOKUWIKIURL@ then visit
- at NEWPAGE@
-and choose 'Unsubscribe Changes'.
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+Hello!
+
+The page @PAGE@ in the @TITLE@ wiki changed.
+Here are the changes:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+To unsubscribe from this page log into the wiki at
+ at DOKUWIKIURL@ then visit
+ at NEWPAGE@
+and choose 'Unsubscribe Changes'.
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ku/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ku/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ku/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======SPAM blocked======
-
-Your changes were **not** saved because it contains one or more blocked words.
-If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact
-the administrator of this Wiki.
-
+======SPAM blocked======
+
+Your changes were **not** saved because it contains one or more blocked words.
+If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact
+the administrator of this Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administracija ======
-
-Žemiau matote veiksmų, kuriuos gali atlikti administratorius, sÄ
raÅ¡Ä
.
-
+====== Administracija ======
+
+Žemiau matote veiksmų, kuriuos gali atlikti administratorius, sÄ
raÅ¡Ä
.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== AtgalinÄs nuorodos ======
-
-Äia matote sÄ
raÅ¡Ä
puslapių, kuriuose yra nuorodos į esamÄ
puslapį.
-
+====== AtgalinÄs nuorodos ======
+
+Äia matote sÄ
raÅ¡Ä
puslapių, kuriuose yra nuorodos į esamÄ
puslapį.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Egzistuoja naujesnÄ versija ======
-
-Rasta naujesnÄ dokumento, kurį redagavote, versija. Tai atsitinka tada, kai kitas vartotojas modifikuoja dokumentÄ
tuo metu, kai jūs jį redaguojate.
-
-Atidžiai peržvelkite žemiau esanÄius skirtumus ir nusprÄskite, kuriÄ
versijÄ
iÅ¡saugoti. Paspausdami ''IÅ¡saugoti'' iÅ¡saugosite saviÅ¡kÄ versijÄ
. Paspausdami ''AtÅ¡aukti'' iÅ¡saugosite esamÄ
versijÄ
.
-
+====== Egzistuoja naujesnÄ versija ======
+
+Rasta naujesnÄ dokumento, kurį redagavote, versija. Tai atsitinka tada, kai kitas vartotojas modifikuoja dokumentÄ
tuo metu, kai jūs jį redaguojate.
+
+Atidžiai peržvelkite žemiau esanÄius skirtumus ir nusprÄskite, kuriÄ
versijÄ
iÅ¡saugoti. Paspausdami ''IÅ¡saugoti'' iÅ¡saugosite saviÅ¡kÄ versijÄ
. Paspausdami ''AtÅ¡aukti'' iÅ¡saugosite esamÄ
versijÄ
.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== PriÄjimas uždraustas ======
-
-JÅ«s neturite reikiamų teisių, kad galÄtumÄte tÄsti. TurbÅ«t pamirÅ¡ote prisijungti :-).
-
+====== PriÄjimas uždraustas ======
+
+JÅ«s neturite reikiamų teisių, kad galÄtumÄte tÄsti. TurbÅ«t pamirÅ¡ote prisijungti :-).
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Skirtumai ======
-
-Äia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.
-
+====== Skirtumai ======
+
+Äia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Modifikuokite šį puslapį ir paspauskite ''IÅ¡saugoti''. Apie wiki sintaksÄ galite paskaityti [[wiki:syntax|Äia]].
-PraÅ¡ome redaguoti šį puslapį tik tada, kai galite jį **patobulinti**. Jei tik norite iÅ¡bandyti wiki galimybes, praÅ¡ytume tai daryti [[playground:playground|Äia]].
-
+Modifikuokite šį puslapį ir paspauskite ''IÅ¡saugoti''. Apie wiki sintaksÄ galite paskaityti [[wiki:syntax|Äia]].
+PraÅ¡ome redaguoti šį puslapį tik tada, kai galite jį **patobulinti**. Jei tik norite iÅ¡bandyti wiki galimybes, praÅ¡ytume tai daryti [[playground:playground|Äia]].
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**JÅ«s naudojate senÄ
Å¡io dokumento versijÄ
!** jei jÄ
iÅ¡saugosite, su Å¡iais duomenimis sukursite naujÄ
versijÄ
.
+**JÅ«s naudojate senÄ
Å¡io dokumento versijÄ
!** jei jÄ
iÅ¡saugosite, su Å¡iais duomenimis sukursite naujÄ
versijÄ
.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/lt/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Indeksas ======
-
-Äia matote visų Å¡iuo metu egzistuojanÄių puslapių sÄ
raÅ¡Ä
. Jie iÅ¡rūšiuoti pagal [[doku>wiki:namespaces|pavadinimÄ
]].
-
+====== Indeksas ======
+
+Äia matote visų Å¡iuo metu egzistuojanÄių puslapių sÄ
raÅ¡Ä
. Jie iÅ¡rūšiuoti pagal [[doku>wiki:namespaces|pavadinimÄ
]].
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,183 +1,183 @@
-<?php
-/**
- * lithuanian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Linas Valiukas <shirshegsm at gmail.com>
- * @author Edmondas Girkantas <eg at zemaitija.net>
- * @author Arūnas Vaitekūnas <aras at fan.lt>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';//„
-$lang['doublequoteclosing'] = 'â';//“
-$lang['singlequoteopening'] = 'â';//‚
-$lang['singlequoteclosing'] = 'â';//‘
-
-$lang['btn_edit'] = 'Redaguoti šį puslapį';
-$lang['btn_source'] = 'Parodyti puslapio kodÄ
';
-$lang['btn_show'] = 'Parodyti puslapį';
-$lang['btn_create'] = 'Sukurti šį puslapį';
-$lang['btn_search'] = 'Paieška';
-$lang['btn_save'] = 'Išsaugoti';
-$lang['btn_preview']= 'Peržiūra';
-$lang['btn_top'] = 'Į viršų';
-$lang['btn_newer'] = '<< naujesnÄ';
-$lang['btn_older'] = 'senesnÄ >>';
-$lang['btn_revs'] = 'Senos versijos';
-$lang['btn_recent'] = 'Naujausi keitimai';
-$lang['btn_upload'] = 'Atsiųsti bylÄ
';
-$lang['btn_cancel'] = 'Atšaukti';
-$lang['btn_index'] = 'Indeksas';
-$lang['btn_secedit']= 'Redaguoti';
-$lang['btn_login'] = 'Prisijungti';
-$lang['btn_logout'] = 'Atsijungti';
-$lang['btn_admin'] = 'Administracija';
-$lang['btn_update'] = 'Atnaujinti';
-$lang['btn_delete'] = 'Ištrinti';
-$lang['btn_back'] = 'Atgal';
-$lang['btn_backlink'] = 'AtgalinÄs nuorodos';
-$lang['btn_backtomedia'] = 'Atgal į Mediabylos iÅ¡sirinkimÄ
';
-$lang['btn_subscribe'] = 'Užsisakyti keitimų prenumeratÄ
';
-$lang['btn_unsubscribe'] = 'Atsisakyti keitimų prenumeratos';
-$lang['btn_profile'] = 'Atnaujinti profilį';
-$lang['btn_reset'] = 'Atstata';
-$lang['btn_resendpwd'] = 'IÅ¡siųsti naujÄ
slaptažodį';
-$lang['btn_draft'] = 'Redaguoti juodraštį';
-$lang['btn_recover'] = 'Atkurti juodraštį';
-$lang['btn_draftdel'] = 'Šalinti juodraštį';
-$lang['draftdate'] = 'Juodraštis automatiškai išsaugotas';
-
-$lang['loggedinas'] = 'PrisijungÄs kaip';
-$lang['user'] = 'Vartotojo vardas';
-$lang['pass'] = 'Slaptažodis';
-$lang['newpass'] = 'Naujas slaptažodis';
-$lang['oldpass'] = 'Patvirtinti esamÄ
slaptažodį';
-$lang['passchk'] = 'dar kartÄ
';
-$lang['remember'] = 'Prisiminti mane';
-$lang['fullname'] = 'Visas vardas';
-$lang['email'] = 'El. pašto adresas';
-$lang['register'] = 'Registruotis';
-$lang['profile'] = 'Vartotojo profilis';
-$lang['badlogin'] = 'NurodÄte blogÄ
vartotojo vardÄ
arba slaptažodį.';
-$lang['minoredit'] = 'Nedidelis pataisymas';
-
-$lang['regmissing'] = 'Turite užpildyti visus laukus.';
-$lang['reguexists'] = 'Vartotojas su pasirinktu prisijungimo vardu jau egzistuoja.';
-$lang['regsuccess'] = 'Vartotojas sukurtas, slaptažodis išsiųstas el. paštu.';
-$lang['regsuccess2']= 'Vartotojas sukurtas.';
-$lang['regmailfail']= 'SiunÄiant slaptažodį el. paÅ¡tu įvyko klaida - susisiekite su administracija!';
-$lang['regbadmail'] = 'Nurodytas el. pašto adresas yra neteisingas - jei manote, kad tai klaida, susisiekite su administracija';
-$lang['regbadpass'] = 'Ä®vesti slaptažodžiai nesutampa, bandykite dar kartÄ
.';
-$lang['regpwmail'] = 'Jūsų DokuWiki slaptažodis';
-$lang['reghere'] = 'Dar neužsiregistravote? Padarykite tai dabar';
-
-$lang['profna'] = 'Å i vikisvetainÄ neleidžia pakeisti profilio';
-$lang['profnochange'] = 'NÄra pakeitimų, todÄl nÄra kÄ
atlikti.';
-$lang['profnoempty'] = 'TuÅ¡Äias vardo arba el. paÅ¡to adreso laukas nÄra leidžiamas.';
-$lang['profchanged'] = 'Vartotojo profilis sÄkmingai atnaujintas.';
-
-$lang['pwdforget'] = 'PamirÅ¡ote slaptažodį? Gaukite naujÄ
';
-$lang['resendna'] = 'Å i vikisvetainÄ neleidžia persiųsti slaptažodžių.';
-$lang['resendpwd'] = 'Atsiųsti naujÄ
slaptažodį';
-$lang['resendpwdmissing'] = 'Jūs turite užpildyti visus laukus.';
-$lang['resendpwdnouser'] = 'Tokio vartotojo nÄra duomenų bazÄje.';
-$lang['resendpwdsuccess'] = 'Jūsų naujas slaptažodis buvo išsiųstas el. paštu.';
-
-$lang['txt_upload'] = 'IÅ¡sirinkite atsiunÄiamÄ
bylÄ
';
-$lang['txt_filename'] = 'Ä®veskite wikivardÄ
(nebūtina)';
-$lang['txt_overwrt'] = 'PerraÅ¡yti egzistuojanÄiÄ
bylÄ
';
-$lang['lockedby'] = 'Užrakintas vartotojo';
-$lang['lockexpire'] = 'Užraktas bus nuimtas';
-$lang['willexpire'] = 'Å io puslapio redagavimo užrakto galiojimo laikas baigsis po minutÄs.\nNorÄdami iÅ¡vengti nesklandumų naudokite peržiÅ«ros mygtukÄ
ir užraktas atsinaujins.';
-
-$lang['notsavedyet'] = 'Pakeitimai nebus iÅ¡saugoti.\nTikrai tÄsti?';
-$lang['rssfailed'] = 'SiunÄiant šį feed\'Ä
įvyko klaida: ';
-$lang['nothingfound']= 'PaieÅ¡kos rezultatų nÄra.';
-
-$lang['mediaselect'] = 'Mediabylos išsirinkimas';
-$lang['fileupload'] = 'Mediabylos atsiuntimas';
-$lang['uploadsucc'] = 'Atsiuntimas pavyko';
-$lang['uploadfail'] = 'Atsiuntimas nepavyko. Blogi priÄjimo leidimai??';
-$lang['uploadwrong'] = 'Atsiuntimas atmestas. Bylos tipas neleistinas';
-$lang['uploadexist'] = 'Tokia byla jau egzistuoja. Veiksmai atšaukti.';
-$lang['deletesucc'] = 'Byla "%s" ištrinta.';
-$lang['deletefail'] = 'Byla "%s" negali būti ištrinta - patikrinkite leidimus.';
-$lang['mediainuse'] = 'Byla "%s" nebuvo ištrinta - ji vis dar naudojama.';
-$lang['namespaces'] = 'Pavadinimai';
-$lang['mediafiles'] = 'Prieinamos bylos';
-
-$lang['reference'] = 'PaminÄjimai';
-$lang['ref_inuse'] = 'Byla negali būti ištrinta, nes ji vis dar yra naudojama šiuose puslapiuose:';
-$lang['ref_hidden'] = 'Kai kurie paminÄjimai yra puslapiuose, kurių jums neleista skaityti.';
-
-$lang['hits'] = 'Atidarymai';
-$lang['quickhits'] = 'Sutampantys pavadinimai';
-$lang['toc'] = 'Turinys';
-$lang['current'] = 'esamas';
-$lang['yours'] = 'Jūsų versija';
-$lang['diff'] = 'rodyti skirtumus tarp šios ir esamos versijos';
-$lang['line'] = 'Linija';
-$lang['breadcrumb'] = 'Kelias';
-$lang['youarehere'] = 'JÅ«s esate Äia';
-$lang['lastmod'] = 'Keista';
-$lang['by'] = 'vartotojo';
-$lang['deleted'] = 'ištrintas';
-$lang['created'] = 'sukurtas';
-$lang['restored'] = 'atstatyta sena versija';
-$lang['summary'] = 'Redaguoti santraukÄ
';
-
-$lang['mail_newpage'] = '[DokuWiki] puslapis pridÄtas:';
-$lang['mail_changed'] = '[DokuWiki] puslapis pakeistas:';
-
-$lang['nosmblinks'] = 'Nurodos į "Windows shares" veikia tik su Microsoft Internet Explorer narÅ¡ykle.\nVis dÄlto, jÅ«s galite nukopijuoti Å¡iÄ
nuorodÄ
.';
-
-$lang['qb_alert'] = 'Ä®veskite formatuojamÄ
tekstÄ
.\nJis bus pridÄtas dokumento apaÄioje.';
-$lang['qb_bold'] = 'Pusjuodis';
-$lang['qb_italic'] = 'Kursyvas';
-$lang['qb_underl'] = 'Pabrauktas';
-$lang['qb_code'] = 'Kodas';
-$lang['qb_strike'] = 'Perbraukta';
-$lang['qb_h1'] = 'Pirmo lygio antraÅ¡tÄ';
-$lang['qb_h2'] = 'Antro lygio antraÅ¡tÄ';
-$lang['qb_h3'] = 'TreÄio lygio antraÅ¡tÄ';
-$lang['qb_h4'] = 'Ketvirto lygio antraÅ¡tÄ';
-$lang['qb_h5'] = 'Penkto lygio antraÅ¡tÄ';
-$lang['qb_link'] = 'VidinÄ nuoroda';
-$lang['qb_extlink'] = 'IÅ¡orinÄ nuoroda';
-$lang['qb_hr'] = 'Horizontali linija';
-$lang['qb_ol'] = 'Numeruotas sÄ
rašas';
-$lang['qb_ul'] = 'Nenumetuotas sÄ
rašas';
-$lang['qb_media'] = 'PaveikslÄliai ir kitos bylos';
-$lang['qb_sig'] = 'Ä®terpti paraÅ¡Ä
';
-$lang['qb_smileys'] = 'Å ypsenÄlÄs';
-$lang['qb_chars'] = 'Specialūs simboliai';
-
-$lang['del_confirm']= 'Ar tikrai iÅ¡trinti pažymÄtÄ
(us) įraÅ¡Ä
(us)?';
-$lang['admin_register']= 'Sukurti naujÄ
vartotojÄ
';
-
-$lang['metaedit'] = 'Redaguoti metaduomenis';
-$lang['metasaveerr'] = 'Nepavyko išsaugoti metaduomenų';
-$lang['metasaveok'] = 'Metaduomenys išsaugoti';
-$lang['img_backto'] = 'Atgal į';
-$lang['img_title'] = 'Pavadinimas';
-$lang['img_caption'] = 'AntraÅ¡tÄ';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Bylos pavadinimas';
-$lang['img_fsize'] = 'Dydis';
-$lang['img_artist'] = 'Fotografas';
-$lang['img_copyr'] = 'AutorinÄs teisÄs';
-$lang['img_format'] = 'Formatas';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Raktiniai žodžiai';
-
-$lang['subscribe_success'] = '%s užsakyta "%s" prenumerata';
-$lang['subscribe_error'] = '%s užsakant "%s" prenumeratÄ
įvyko klaida';
-$lang['subscribe_noaddress']= 'JÅ«s nesatÄ nurodÄs el. paÅ¡to adreso, todÄl negalima Jums užsakyti prenumeratos';
-$lang['unsubscribe_success']= '%s ištrintas iš "%s" prenumeratos';
-$lang['unsubscribe_error'] = '%s trinant iš "%s" prenumeratos įvyko klaida';
-
-$lang['authmodfailed'] = 'Bloga vartotojo tapatumo nustatymo konfigūracija. Praneškite apie tai savo administratoriui.';
-$lang['authtempfail'] = 'Vartotojo tapatumo nustatymas laikinai nepasiekiamas. Jei ši situacija kartojasi, tai praneškite savo administratoriui.';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * lithuanian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Linas Valiukas <shirshegsm at gmail.com>
+ * @author Edmondas Girkantas <eg at zemaitija.net>
+ * @author Arūnas Vaitekūnas <aras at fan.lt>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';//„
+$lang['doublequoteclosing'] = 'â';//“
+$lang['singlequoteopening'] = 'â';//‚
+$lang['singlequoteclosing'] = 'â';//‘
+
+$lang['btn_edit'] = 'Redaguoti šį puslapį';
+$lang['btn_source'] = 'Parodyti puslapio kodÄ
';
+$lang['btn_show'] = 'Parodyti puslapį';
+$lang['btn_create'] = 'Sukurti šį puslapį';
+$lang['btn_search'] = 'Paieška';
+$lang['btn_save'] = 'Išsaugoti';
+$lang['btn_preview']= 'Peržiūra';
+$lang['btn_top'] = 'Į viršų';
+$lang['btn_newer'] = '<< naujesnÄ';
+$lang['btn_older'] = 'senesnÄ >>';
+$lang['btn_revs'] = 'Senos versijos';
+$lang['btn_recent'] = 'Naujausi keitimai';
+$lang['btn_upload'] = 'Atsiųsti bylÄ
';
+$lang['btn_cancel'] = 'Atšaukti';
+$lang['btn_index'] = 'Indeksas';
+$lang['btn_secedit']= 'Redaguoti';
+$lang['btn_login'] = 'Prisijungti';
+$lang['btn_logout'] = 'Atsijungti';
+$lang['btn_admin'] = 'Administracija';
+$lang['btn_update'] = 'Atnaujinti';
+$lang['btn_delete'] = 'Ištrinti';
+$lang['btn_back'] = 'Atgal';
+$lang['btn_backlink'] = 'AtgalinÄs nuorodos';
+$lang['btn_backtomedia'] = 'Atgal į Mediabylos iÅ¡sirinkimÄ
';
+$lang['btn_subscribe'] = 'Užsisakyti keitimų prenumeratÄ
';
+$lang['btn_unsubscribe'] = 'Atsisakyti keitimų prenumeratos';
+$lang['btn_profile'] = 'Atnaujinti profilį';
+$lang['btn_reset'] = 'Atstata';
+$lang['btn_resendpwd'] = 'IÅ¡siųsti naujÄ
slaptažodį';
+$lang['btn_draft'] = 'Redaguoti juodraštį';
+$lang['btn_recover'] = 'Atkurti juodraštį';
+$lang['btn_draftdel'] = 'Šalinti juodraštį';
+$lang['draftdate'] = 'Juodraštis automatiškai išsaugotas';
+
+$lang['loggedinas'] = 'PrisijungÄs kaip';
+$lang['user'] = 'Vartotojo vardas';
+$lang['pass'] = 'Slaptažodis';
+$lang['newpass'] = 'Naujas slaptažodis';
+$lang['oldpass'] = 'Patvirtinti esamÄ
slaptažodį';
+$lang['passchk'] = 'dar kartÄ
';
+$lang['remember'] = 'Prisiminti mane';
+$lang['fullname'] = 'Visas vardas';
+$lang['email'] = 'El. pašto adresas';
+$lang['register'] = 'Registruotis';
+$lang['profile'] = 'Vartotojo profilis';
+$lang['badlogin'] = 'NurodÄte blogÄ
vartotojo vardÄ
arba slaptažodį.';
+$lang['minoredit'] = 'Nedidelis pataisymas';
+
+$lang['regmissing'] = 'Turite užpildyti visus laukus.';
+$lang['reguexists'] = 'Vartotojas su pasirinktu prisijungimo vardu jau egzistuoja.';
+$lang['regsuccess'] = 'Vartotojas sukurtas, slaptažodis išsiųstas el. paštu.';
+$lang['regsuccess2']= 'Vartotojas sukurtas.';
+$lang['regmailfail']= 'SiunÄiant slaptažodį el. paÅ¡tu įvyko klaida - susisiekite su administracija!';
+$lang['regbadmail'] = 'Nurodytas el. pašto adresas yra neteisingas - jei manote, kad tai klaida, susisiekite su administracija';
+$lang['regbadpass'] = 'Ä®vesti slaptažodžiai nesutampa, bandykite dar kartÄ
.';
+$lang['regpwmail'] = 'Jūsų DokuWiki slaptažodis';
+$lang['reghere'] = 'Dar neužsiregistravote? Padarykite tai dabar';
+
+$lang['profna'] = 'Å i vikisvetainÄ neleidžia pakeisti profilio';
+$lang['profnochange'] = 'NÄra pakeitimų, todÄl nÄra kÄ
atlikti.';
+$lang['profnoempty'] = 'TuÅ¡Äias vardo arba el. paÅ¡to adreso laukas nÄra leidžiamas.';
+$lang['profchanged'] = 'Vartotojo profilis sÄkmingai atnaujintas.';
+
+$lang['pwdforget'] = 'PamirÅ¡ote slaptažodį? Gaukite naujÄ
';
+$lang['resendna'] = 'Å i vikisvetainÄ neleidžia persiųsti slaptažodžių.';
+$lang['resendpwd'] = 'Atsiųsti naujÄ
slaptažodį';
+$lang['resendpwdmissing'] = 'Jūs turite užpildyti visus laukus.';
+$lang['resendpwdnouser'] = 'Tokio vartotojo nÄra duomenų bazÄje.';
+$lang['resendpwdsuccess'] = 'Jūsų naujas slaptažodis buvo išsiųstas el. paštu.';
+
+$lang['txt_upload'] = 'IÅ¡sirinkite atsiunÄiamÄ
bylÄ
';
+$lang['txt_filename'] = 'Ä®veskite wikivardÄ
(nebūtina)';
+$lang['txt_overwrt'] = 'PerraÅ¡yti egzistuojanÄiÄ
bylÄ
';
+$lang['lockedby'] = 'Užrakintas vartotojo';
+$lang['lockexpire'] = 'Užraktas bus nuimtas';
+$lang['willexpire'] = 'Å io puslapio redagavimo užrakto galiojimo laikas baigsis po minutÄs.\nNorÄdami iÅ¡vengti nesklandumų naudokite peržiÅ«ros mygtukÄ
ir užraktas atsinaujins.';
+
+$lang['notsavedyet'] = 'Pakeitimai nebus iÅ¡saugoti.\nTikrai tÄsti?';
+$lang['rssfailed'] = 'SiunÄiant šį feed\'Ä
įvyko klaida: ';
+$lang['nothingfound']= 'PaieÅ¡kos rezultatų nÄra.';
+
+$lang['mediaselect'] = 'Mediabylos išsirinkimas';
+$lang['fileupload'] = 'Mediabylos atsiuntimas';
+$lang['uploadsucc'] = 'Atsiuntimas pavyko';
+$lang['uploadfail'] = 'Atsiuntimas nepavyko. Blogi priÄjimo leidimai??';
+$lang['uploadwrong'] = 'Atsiuntimas atmestas. Bylos tipas neleistinas';
+$lang['uploadexist'] = 'Tokia byla jau egzistuoja. Veiksmai atšaukti.';
+$lang['deletesucc'] = 'Byla "%s" ištrinta.';
+$lang['deletefail'] = 'Byla "%s" negali būti ištrinta - patikrinkite leidimus.';
+$lang['mediainuse'] = 'Byla "%s" nebuvo ištrinta - ji vis dar naudojama.';
+$lang['namespaces'] = 'Pavadinimai';
+$lang['mediafiles'] = 'Prieinamos bylos';
+
+$lang['reference'] = 'PaminÄjimai';
+$lang['ref_inuse'] = 'Byla negali būti ištrinta, nes ji vis dar yra naudojama šiuose puslapiuose:';
+$lang['ref_hidden'] = 'Kai kurie paminÄjimai yra puslapiuose, kurių jums neleista skaityti.';
+
+$lang['hits'] = 'Atidarymai';
+$lang['quickhits'] = 'Sutampantys pavadinimai';
+$lang['toc'] = 'Turinys';
+$lang['current'] = 'esamas';
+$lang['yours'] = 'Jūsų versija';
+$lang['diff'] = 'rodyti skirtumus tarp šios ir esamos versijos';
+$lang['line'] = 'Linija';
+$lang['breadcrumb'] = 'Kelias';
+$lang['youarehere'] = 'JÅ«s esate Äia';
+$lang['lastmod'] = 'Keista';
+$lang['by'] = 'vartotojo';
+$lang['deleted'] = 'ištrintas';
+$lang['created'] = 'sukurtas';
+$lang['restored'] = 'atstatyta sena versija';
+$lang['summary'] = 'Redaguoti santraukÄ
';
+
+$lang['mail_newpage'] = '[DokuWiki] puslapis pridÄtas:';
+$lang['mail_changed'] = '[DokuWiki] puslapis pakeistas:';
+
+$lang['nosmblinks'] = 'Nurodos į "Windows shares" veikia tik su Microsoft Internet Explorer narÅ¡ykle.\nVis dÄlto, jÅ«s galite nukopijuoti Å¡iÄ
nuorodÄ
.';
+
+$lang['qb_alert'] = 'Ä®veskite formatuojamÄ
tekstÄ
.\nJis bus pridÄtas dokumento apaÄioje.';
+$lang['qb_bold'] = 'Pusjuodis';
+$lang['qb_italic'] = 'Kursyvas';
+$lang['qb_underl'] = 'Pabrauktas';
+$lang['qb_code'] = 'Kodas';
+$lang['qb_strike'] = 'Perbraukta';
+$lang['qb_h1'] = 'Pirmo lygio antraÅ¡tÄ';
+$lang['qb_h2'] = 'Antro lygio antraÅ¡tÄ';
+$lang['qb_h3'] = 'TreÄio lygio antraÅ¡tÄ';
+$lang['qb_h4'] = 'Ketvirto lygio antraÅ¡tÄ';
+$lang['qb_h5'] = 'Penkto lygio antraÅ¡tÄ';
+$lang['qb_link'] = 'VidinÄ nuoroda';
+$lang['qb_extlink'] = 'IÅ¡orinÄ nuoroda';
+$lang['qb_hr'] = 'Horizontali linija';
+$lang['qb_ol'] = 'Numeruotas sÄ
rašas';
+$lang['qb_ul'] = 'Nenumetuotas sÄ
rašas';
+$lang['qb_media'] = 'PaveikslÄliai ir kitos bylos';
+$lang['qb_sig'] = 'Ä®terpti paraÅ¡Ä
';
+$lang['qb_smileys'] = 'Å ypsenÄlÄs';
+$lang['qb_chars'] = 'Specialūs simboliai';
+
+$lang['del_confirm']= 'Ar tikrai iÅ¡trinti pažymÄtÄ
(us) įraÅ¡Ä
(us)?';
+$lang['admin_register']= 'Sukurti naujÄ
vartotojÄ
';
+
+$lang['metaedit'] = 'Redaguoti metaduomenis';
+$lang['metasaveerr'] = 'Nepavyko išsaugoti metaduomenų';
+$lang['metasaveok'] = 'Metaduomenys išsaugoti';
+$lang['img_backto'] = 'Atgal į';
+$lang['img_title'] = 'Pavadinimas';
+$lang['img_caption'] = 'AntraÅ¡tÄ';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Bylos pavadinimas';
+$lang['img_fsize'] = 'Dydis';
+$lang['img_artist'] = 'Fotografas';
+$lang['img_copyr'] = 'AutorinÄs teisÄs';
+$lang['img_format'] = 'Formatas';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords'] = 'Raktiniai žodžiai';
+
+$lang['subscribe_success'] = '%s užsakyta "%s" prenumerata';
+$lang['subscribe_error'] = '%s užsakant "%s" prenumeratÄ
įvyko klaida';
+$lang['subscribe_noaddress']= 'JÅ«s nesatÄ nurodÄs el. paÅ¡to adreso, todÄl negalima Jums užsakyti prenumeratos';
+$lang['unsubscribe_success']= '%s ištrintas iš "%s" prenumeratos';
+$lang['unsubscribe_error'] = '%s trinant iš "%s" prenumeratos įvyko klaida';
+
+$lang['authmodfailed'] = 'Bloga vartotojo tapatumo nustatymo konfigūracija. Praneškite apie tai savo administratoriui.';
+$lang['authtempfail'] = 'Vartotojo tapatumo nustatymas laikinai nepasiekiamas. Jei ši situacija kartojasi, tai praneškite savo administratoriui.';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/lt/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Puslapis užrakintas ======
-
-Å is puslapis yra apsaugotas (užrakintas) nuo kitų vartotojų pakeitimų. NorÄdami redaguoti puslapį, turÄsite palaukti, kol kitas vartotojas baigs tai daryti arba âužraktoâ galiojimo laikas pasibaigs.
+====== Puslapis užrakintas ======
+
+Å is puslapis yra apsaugotas (užrakintas) nuo kitų vartotojų pakeitimų. NorÄdami redaguoti puslapį, turÄsite palaukti, kol kitas vartotojas baigs tai daryti arba âužraktoâ galiojimo laikas pasibaigs.
Modified: site/trunk/www-root/wiki/inc/lang/lt/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Prisijungimas ======
-
-Å iuo metu jÅ«s nesate prisijungÄs. Ä®veskite savo prisijungimo duomenis žemiau.
-âCookiesâ palaikymas jÅ«sų narÅ¡yklÄje turi bÅ«ti įjungtas.
-
-
+====== Prisijungimas ======
+
+Å iuo metu jÅ«s nesate prisijungÄs. Ä®veskite savo prisijungimo duomenis žemiau.
+âCookiesâ palaikymas jÅ«sų narÅ¡yklÄje turi bÅ«ti įjungtas.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-JÅ«sų DokuWiki buvo sukurtas arba pakeistas puslapis. DetalÄs:
-
-Data : @DATE@
-NarÅ¡yklÄ : @BROWSER@
-IP adresas : @IPADDRESS@
-Host'as : @HOSTNAME@
-Sena versija: @OLDPAGE@
-Nauja versija: @NEWPAGE@
-Redagavimo aprašas: @SUMMARY@
-Vartotojas : @USER@
-
-Pakeitimo diff'as:
-
- at DIFF@
-
-
---
-Šis laiškas buvo sugeneruotas DokuWiki (@DOKUWIKIURL@).
+JÅ«sų DokuWiki buvo sukurtas arba pakeistas puslapis. DetalÄs:
+
+Data : @DATE@
+NarÅ¡yklÄ : @BROWSER@
+IP adresas : @IPADDRESS@
+Host'as : @HOSTNAME@
+Sena versija: @OLDPAGE@
+Nauja versija: @NEWPAGE@
+Redagavimo aprašas: @SUMMARY@
+Vartotojas : @USER@
+
+Pakeitimo diff'as:
+
+ at DIFF@
+
+
+--
+Šis laiškas buvo sugeneruotas DokuWiki (@DOKUWIKIURL@).
Modified: site/trunk/www-root/wiki/inc/lang/lt/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Å is puslapis dar neegzistuoja======
-
-Nuoroda, kuriÄ
jÅ«s paspaudÄte, atvedÄ Ä¯ dar neegzistuojantį puslapį. JÅ«s galite jį sukurti paspausdami ''Sukurti šį puslapį'' mygtukÄ
.
-
+======Å is puslapis dar neegzistuoja======
+
+Nuoroda, kuriÄ
jÅ«s paspaudÄte, atvedÄ Ä¯ dar neegzistuojantį puslapį. JÅ«s galite jį sukurti paspausdami ''Sukurti šį puslapį'' mygtukÄ
.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Tokios versijos nÄra======
-
-Nurodyta versija neegzistuoja. NorÄdami pamatyti visas dokumento versijas, paspauskite ''Senos versijos'' mygtukÄ
-
-
+======Tokios versijos nÄra======
+
+Nurodyta versija neegzistuoja. NorÄdami pamatyti visas dokumento versijas, paspauskite ''Senos versijos'' mygtukÄ
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-Labas, @FULLNAME@!
-
-Äia yra jÅ«sų prisijungimo duomenys prie tinklalapio @TITLE@ (@DOKUWIKIURL@):
-
-Prisijungimo vardas: @LOGIN@
-Slaptažodis: @PASSWORD@
-
---
-Šis laiškas sugeneruotas DokuWiki sistemos (@DOKUWIKIURL@).
+Labas, @FULLNAME@!
+
+Äia yra jÅ«sų prisijungimo duomenys prie tinklalapio @TITLE@ (@DOKUWIKIURL@):
+
+Prisijungimo vardas: @LOGIN@
+Slaptažodis: @PASSWORD@
+
+--
+Šis laiškas sugeneruotas DokuWiki sistemos (@DOKUWIKIURL@).
Modified: site/trunk/www-root/wiki/inc/lang/lt/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Peržiūra======
-
-Äia matote, kaip atrodo jÅ«sų pakeitimai. **Pakeitimai dar nÄra iÅ¡saugoti!**
-
-
+======Peržiūra======
+
+Äia matote, kaip atrodo jÅ«sų pakeitimai. **Pakeitimai dar nÄra iÅ¡saugoti!**
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Šį puslapį galima tik skaityti. JÅ«s galite peržvelgti jo kodÄ
(source), bet negalite jo keisti. Jei manote, kad tai klaida - susisiekite su administratoriumi.
-
-
+Šį puslapį galima tik skaityti. JÅ«s galite peržvelgti jo kodÄ
(source), bet negalite jo keisti. Jei manote, kad tai klaida - susisiekite su administratoriumi.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Naujausi keitimai======
-
-Å ie puslapiai buvo neseniai pakeisti.
-
-
+======Naujausi keitimai======
+
+Å ie puslapiai buvo neseniai pakeisti.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Naujo vartotojo registracija ======
-
-NorÄdami tapti nauju registruotu Å¡io tinklalapio vartotoju, užpildykite žemiau esanÄiÄ
formÄ
. BÅ«tinai turite nurodyti **veikiantį el. paÅ¡to adresÄ
**, nes jÅ«sų slaptažodis bus iÅ¡siųstas pastaruoju adresu. Prisijungimo vardas turÄtų bÅ«ti sukurtas pagal [[doku>wiki:pagename|puslapio pavadinimo]] taisykles.
-
+====== Naujo vartotojo registracija ======
+
+NorÄdami tapti nauju registruotu Å¡io tinklalapio vartotoju, užpildykite žemiau esanÄiÄ
formÄ
. BÅ«tinai turite nurodyti **veikiantį el. paÅ¡to adresÄ
**, nes jÅ«sų slaptažodis bus iÅ¡siųstas pastaruoju adresu. Prisijungimo vardas turÄtų bÅ«ti sukurtas pagal [[doku>wiki:pagename|puslapio pavadinimo]] taisykles.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Siųsti naujÄ
slaptažodį ======
-
-Naujo slaptažodžio gavimui, užpildykite visus žemiau esanÄius laukus.
-Naujas slaptažodis bus atsiųstas į jÅ«sų užregistruotÄ
el. paÅ¡to adresÄ
.
-Vartotojo vardas turi būti toks pat kaip ir wiki sistemoje.
+====== Siųsti naujÄ
slaptažodį ======
+
+Naujo slaptažodžio gavimui, užpildykite visus žemiau esanÄius laukus.
+Naujas slaptažodis bus atsiųstas į jÅ«sų užregistruotÄ
el. paÅ¡to adresÄ
.
+Vartotojo vardas turi būti toks pat kaip ir wiki sistemoje.
Modified: site/trunk/www-root/wiki/inc/lang/lt/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Senos versijos======
-
-Äia matote senas Å¡io dokumento versijas. Jei norite atstatyti dokumentÄ
į jo senesniÄ
jÄ
versijÄ
, paspauskite "Redaguoti šį puslapį" prie norimos versijos ir iÅ¡saugokite jÄ
.
-
+======Senos versijos======
+
+Äia matote senas Å¡io dokumento versijas. Jei norite atstatyti dokumentÄ
į jo senesniÄ
jÄ
versijÄ
, paspauskite "Redaguoti šį puslapį" prie norimos versijos ir iÅ¡saugokite jÄ
.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Paieška======
-
-Žemiau matote JÅ«sų atliktos paieÅ¡kos rezultatus. Jeigu neradote to, ko ieÅ¡kojote, galite sukurti naujÄ
puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".
-
+======Paieška======
+
+Žemiau matote JÅ«sų atliktos paieÅ¡kos rezultatus. Jeigu neradote to, ko ieÅ¡kojote, galite sukurti naujÄ
puslapį šiuo pavadinimu paspausdami "Redaguoti šį puslapį".
+
=====Rezultatai=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/lt/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Äia yra sena dokumento versija!**
-----
+**Äia yra sena dokumento versija!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/lt/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Sveiki!
-
-Pranešame, kad Wiki tinklalapyje @TITLE@ pakeistas puslapis @PAGE at .
-Å tai pakeitimai:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-NorÄdami nutraukti Å¡iÄ
prenumeratÄ
, apsilankykite
- at DOKUWIKIURL@, tada atverkite
- at NEWPAGE@
-ir išsirinkite 'Atsisakyti keitimų prenumeratos'.
-
---
-Šis laiškas sugeneruotas DokuWiki (@DOKUWIKIURL@).
-
+Sveiki!
+
+Pranešame, kad Wiki tinklalapyje @TITLE@ pakeistas puslapis @PAGE at .
+Å tai pakeitimai:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+NorÄdami nutraukti Å¡iÄ
prenumeratÄ
, apsilankykite
+ at DOKUWIKIURL@, tada atverkite
+ at NEWPAGE@
+ir išsirinkite 'Atsisakyti keitimų prenumeratos'.
+
+--
+Šis laiškas sugeneruotas DokuWiki (@DOKUWIKIURL@).
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Redaguoti savo profilį ======
-
-Užpildykite tik tuos laukus, kuriuos norite pakeisti. Vartotojo vardo keisti nebūtina.
-
+====== Redaguoti savo profilį ======
+
+Užpildykite tik tuos laukus, kuriuos norite pakeisti. Vartotojo vardo keisti nebūtina.
+
Modified: site/trunk/www-root/wiki/inc/lang/lt/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lt/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lt/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======NESPAM'INK!======
-
-Jūsų pakeitimai **nebuvo išsaugoti**, nes juose rasta vienas ar daugiau užblokuotų žodžių.
-Jeigu manote, kad tai klaida, susisiekite su administracija.
-Jeigu sugalvojote Äia spam'inti - pyzdink nachui iÅ¡ Äia, byby bled!
-
+======NESPAM'INK!======
+
+Jūsų pakeitimai **nebuvo išsaugoti**, nes juose rasta vienas ar daugiau užblokuotų žodžių.
+Jeigu manote, kad tai klaida, susisiekite su administracija.
+Jeigu sugalvojote Äia spam'inti - pyzdink nachui iÅ¡ Äia, byby bled!
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== AdministrÄÅ¡ana ======
-
-DokuWiki pieejamas Å¡Ädas administrÄÅ¡anas iespÄjas:
-
-
-
+====== AdministrÄÅ¡ana ======
+
+DokuWiki pieejamas Å¡Ädas administrÄÅ¡anas iespÄjas:
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== SaistÄ«tÄs lapas ======
-
-NorÄde uz Å¡o lapu ir atrodama dokumentos:
-
-
+====== SaistÄ«tÄs lapas ======
+
+NorÄde uz Å¡o lapu ir atrodama dokumentos:
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Ir jaunÄka versija ======
-
-Tevis labotajam dokumentam jau ir jaunÄka versija. TÄ gadÄs, ja cits lietotÄjs tavas laboÅ¡anas laikÄ ir paguvis veikt savus labojumus.
-
-RÅ«pÄ«gi pÄrlÅ«ko Å¡eit parÄdÄ«tÄs atšķirÄ«bas un tad izlem, kuru variantu paturÄt. Ja nospiedÄ«si ''SaglabÄt'', saglabÄsies tavs teksts. Ja nospiedÄ«si ''Atlikt'' paliks paÅ¡reizÄjais variants.
-
-
-
+====== Ir jaunÄka versija ======
+
+Tevis labotajam dokumentam jau ir jaunÄka versija. TÄ gadÄs, ja cits lietotÄjs tavas laboÅ¡anas laikÄ ir paguvis veikt savus labojumus.
+
+RÅ«pÄ«gi pÄrlÅ«ko Å¡eit parÄdÄ«tÄs atšķirÄ«bas un tad izlem, kuru variantu paturÄt. Ja nospiedÄ«si ''SaglabÄt'', saglabÄsies tavs teksts. Ja nospiedÄ«si ''Atlikt'' paliks paÅ¡reizÄjais variants.
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Piekļuve aizliegta======
-
-Atvaino, tev nav tiesÄ«bu turpinÄt. VarbÅ«t aizmirsi ielogoties?
-
-
-
+======Piekļuve aizliegta======
+
+Atvaino, tev nav tiesÄ«bu turpinÄt. VarbÅ«t aizmirsi ielogoties?
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======Atšķirības======
-
-NorÄdÄ«tais vecais variants no patreizÄjÄs lapas atšķiras ar:
-
-
-
-
+======Atšķirības======
+
+NorÄdÄ«tais vecais variants no patreizÄjÄs lapas atšķiras ar:
+
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Atrasts melnraksta fails ======
-
-IepriekÅ¡ÄjÄ Å¡Ä«s lapas laboÅ¡ana nav pabeigta. DokuWiki
-darba laikÄ automÄtiski saglabÄja melnrakstu, kuru tagad var labot tÄlÄk. ZemÄk redzami iepriekÅ¡ÄjÄs laboÅ¡anas dati.
-
-Nolem, vai vajag //atjaunot// zuduÅ¡os labojumus, //dzÄst//
+====== Atrasts melnraksta fails ======
+
+IepriekÅ¡ÄjÄ Å¡Ä«s lapas laboÅ¡ana nav pabeigta. DokuWiki
+darba laikÄ automÄtiski saglabÄja melnrakstu, kuru tagad var labot tÄlÄk. ZemÄk redzami iepriekÅ¡ÄjÄs laboÅ¡anas dati.
+
+Nolem, vai vajag //atjaunot// zuduÅ¡os labojumus, //dzÄst//
saglabÄto melnrakstu vai //atlikt// laboÅ¡anu.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/lv/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Labo lapu un uzklikšķini uz ''SaglabÄt''. Par lietojamo sintaksi skaties rakstu [[wiki:syntax]]. LÅ«dzu labo tika tad, ja vari lapu **uzlabot**. Ja gribi tikai kaut ko izmÄÄ£inÄt, izmanto [[wiki:playground|smilÅ¡ukasti]].
-
+Labo lapu un uzklikšķini uz ''SaglabÄt''. Par lietojamo sintaksi skaties rakstu [[wiki:syntax]]. LÅ«dzu labo tika tad, ja vari lapu **uzlabot**. Ja gribi tikai kaut ko izmÄÄ£inÄt, izmanto [[wiki:playground|smilÅ¡ukasti]].
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
----- **Tu skaties vecu dokumenta versiju!** Ja to saglabÄsi, tad izveidosies jauns dokuments ar Å¡o veco saturu. ----
+---- **Tu skaties vecu dokumenta versiju!** Ja to saglabÄsi, tad izveidosies jauns dokuments ar Å¡o veco saturu. ----
Modified: site/trunk/www-root/wiki/inc/lang/lv/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== RÄdÄ«tÄjs ======
-
-Visu pieejamo lapu rÄdÄ«tÄjs. SakÄrtots pÄc [[doku>wiki:namespaces|sadaļÄm]].
-
+====== RÄdÄ«tÄjs ======
+
+Visu pieejamo lapu rÄdÄ«tÄjs. SakÄrtots pÄc [[doku>wiki:namespaces|sadaļÄm]].
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-<p>Å Ä« lapa palÄ«dz <a href="http://wiki.splitbrain.org">Dokuwiki</a>pirmajÄ instalÄcijÄ un konfigurÄÅ¡anÄ.
-VairÄk par instalatoru var lasÄ«t tÄ
-<a href="http://wiki.splitbrain.org/wiki:installer">documentÄcijas lapÄ</a>.</p>
-
-<p>DokuWiki lapu un ar to saistÄ«to datu (piem.: attÄlu, meklÄÅ¡anas indeksu, veco versiju utt.) glabÄÅ¡anai lieto parastus failus. Lai Dokuwiki veiksmÄ«gi darbotos <strong>vajag</strong> rakstīšanas tiesÄ«bas direktorijÄs, kur Å¡ie faili glabÄjas. Instalators tiesÄ«bas nomainÄ«t nespÄj. Tas parasti jums jÄizdara komandrindÄ vai ar FTP vadÄ«bas paneli (piem. cPanel).</p>
-
-<p>Instalators konfigurÄs DokuWiki <acronym title="access control list">ACL</acronym> lietoÅ¡anai, kas ļauj administratoram ielogoties un piekļūt DokuWiki administrÄÅ¡anas izvÄlnei, lai instalÄtu moduļus, pÄrvaldÄ«tu lietotÄjus, notiektu piekļuves tiesÄ«bas Wiki lapÄm un mainÄ«tu DokuWiki konfigurÄciju.
-Tas nav vajadzÄ«gs, lai DokuWiki darbotos, bet ar to var vieglÄk administrÄt.</p>
-
-<p>PieredzÄjuÅ¡iem lietotÄjiem ar Ä«paÅ¡Äm prasÄ«bÄm jÄmeklÄ sÄ«kÄkas ziÅas
-<a href="http://wiki.splitbrain.org/wiki:install">uzstÄdīšanas instrukcijÄ</a>
+<p>Å Ä« lapa palÄ«dz <a href="http://wiki.splitbrain.org">Dokuwiki</a>pirmajÄ instalÄcijÄ un konfigurÄÅ¡anÄ.
+VairÄk par instalatoru var lasÄ«t tÄ
+<a href="http://wiki.splitbrain.org/wiki:installer">documentÄcijas lapÄ</a>.</p>
+
+<p>DokuWiki lapu un ar to saistÄ«to datu (piem.: attÄlu, meklÄÅ¡anas indeksu, veco versiju utt.) glabÄÅ¡anai lieto parastus failus. Lai Dokuwiki veiksmÄ«gi darbotos <strong>vajag</strong> rakstīšanas tiesÄ«bas direktorijÄs, kur Å¡ie faili glabÄjas. Instalators tiesÄ«bas nomainÄ«t nespÄj. Tas parasti jums jÄizdara komandrindÄ vai ar FTP vadÄ«bas paneli (piem. cPanel).</p>
+
+<p>Instalators konfigurÄs DokuWiki <acronym title="access control list">ACL</acronym> lietoÅ¡anai, kas ļauj administratoram ielogoties un piekļūt DokuWiki administrÄÅ¡anas izvÄlnei, lai instalÄtu moduļus, pÄrvaldÄ«tu lietotÄjus, notiektu piekļuves tiesÄ«bas Wiki lapÄm un mainÄ«tu DokuWiki konfigurÄciju.
+Tas nav vajadzÄ«gs, lai DokuWiki darbotos, bet ar to var vieglÄk administrÄt.</p>
+
+<p>PieredzÄjuÅ¡iem lietotÄjiem ar Ä«paÅ¡Äm prasÄ«bÄm jÄmeklÄ sÄ«kÄkas ziÅas
+<a href="http://wiki.splitbrain.org/wiki:install">uzstÄdīšanas instrukcijÄ</a>
un <a href="http://wiki.splitbrain.org/wiki:config">konfigurÄÅ¡anas padomos</a>.</p>
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/lv/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/**
- * latvian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Aivars Miška <allefm at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Labot lapu';
-$lang['btn_source'] = 'ParÄdÄ«t lapas kodu';
-$lang['btn_show'] = 'ParÄdÄ«t lapu';
-$lang['btn_create'] = 'Izveidot lapu';
-$lang['btn_search'] = 'MeklÄt';
-$lang['btn_save'] = 'SaglabÄt';
-$lang['btn_preview'] = 'Priekšskats';
-$lang['btn_top'] = 'Atpakaļ uz sÄkumu';
-$lang['btn_newer'] = '<< jaunÄki';
-$lang['btn_older'] = 'vecÄki >>';
-$lang['btn_revs'] = 'VecÄs versijas';
-$lang['btn_recent'] = 'JaunÄkie grozÄ«jumi';
-$lang['btn_upload'] = 'AugÅ¡upielÄdÄt';
-$lang['btn_cancel'] = 'Atlikt';
-$lang['btn_index'] = 'RÄdÄ«tÄjs';
-$lang['btn_secedit'] = 'Labot';
-$lang['btn_login'] = 'Ieiet';
-$lang['btn_logout'] = 'Iziet';
-$lang['btn_admin'] = 'AdministrÄt';
-$lang['btn_update'] = 'Atjaunot';
-$lang['btn_delete'] = 'DzÄst';
-$lang['btn_back'] = 'Atpakaļ';
-$lang['btn_backlink'] = 'NorÄdes uz lapu';
-$lang['btn_backtomedia'] = 'Atpakaļ uz mÄdiju failu izvÄli';
-$lang['btn_subscribe'] = 'AbonÄt izmaiÅu paziÅojumus';
-$lang['btn_unsubscribe'] = 'Atteikties no izmaiÅu paziÅojumiem';
-$lang['btn_subscribens'] = 'AbonÄt nodaļas izmaiÅu paziÅojumus';
-$lang['btn_unsubscribens'] = 'Atteikties no nodaļas izmaiÅu paziÅojumiem';
-$lang['btn_profile'] = 'Labot savu profilu';
-$lang['btn_reset'] = 'Atsaukt izmaiÅas';
-$lang['btn_resendpwd'] = 'Nosūtīt jaunu paroli';
-$lang['btn_draft'] = 'Labot melnrakstu';
-$lang['btn_recover'] = 'Atjaunot melnrakstu';
-$lang['btn_draftdel'] = 'DzÄst melnrakstu';
-$lang['loggedinas'] = 'Pieteicies kÄ';
-$lang['user'] = 'LietotÄjvÄrds';
-$lang['pass'] = 'Parole';
-$lang['newpass'] = 'JaunÄ parole';
-$lang['oldpass'] = 'AtkÄrto patreizÄjo paroli';
-$lang['passchk'] = 'vÄlreiz';
-$lang['remember'] = 'Atceries mani';
-$lang['fullname'] = 'Pilns vÄrds';
-$lang['email'] = 'E-pasts';
-$lang['register'] = 'ReÄ£istrÄties';
-$lang['profile'] = 'LietotÄja vÄrds';
-$lang['badlogin'] = 'Atvaino, lietotÄjvÄrds vai parole aplama.';
-$lang['minoredit'] = 'Sīki labojumi';
-$lang['draftdate'] = 'Melnraksts automÄtiski saglabÄts';
-$lang['regmissing'] = 'Atvaino, jÄaizpilda visas ailes.';
-$lang['reguexists'] = 'Atvaino, tÄds lietotÄjs jau ir.';
-$lang['regsuccess'] = 'LietotÄjs izveidots. Parole nosÅ«tÄ«ta pa pastu.';
-$lang['regsuccess2'] = 'LietotÄjs izveidots.';
-$lang['regmailfail'] = 'Å Ä·iet, ka ir problÄmas nosÅ«tÄ«t pastu. LÅ«dzu sazinies ar administratoru!';
-$lang['regbadmail'] = 'UzdotÄ epasta adrese izskatÄs aplama. Ja tas nav tiesa, sazinies ar administratoru.';
-$lang['regbadpass'] = 'Abas ierakstÄ«tÄs paroles nav vienÄdas, lÅ«duz atkÄrto.';
-$lang['regpwmail'] = 'Tava DokuWiki parole';
-$lang['reghere'] = 'Tev vÄl nav sava konta? Izveido!';
-$lang['profna'] = 'Labot profilu nav iespÄjams';
-$lang['profnochange'] = 'IzmaiÅu nav. Nav, ko darÄ«t.';
-$lang['profnoempty'] = 'Bez vÄrda vai e-pasta adreses nevar.';
-$lang['profchanged'] = 'Profils veiksmīgi izlabots.';
-$lang['pwdforget'] = 'Aizmirsi paroli? SaÅem jaunu';
-$lang['resendna'] = 'Paroļu izsÄ«tīšanu nepiedÄvÄju.';
-$lang['resendpwd'] = 'NosÅ«tÄ«t jaunu paroli lietotÄjam';
-$lang['resendpwdmissing'] = 'Atvaino, jÄizpilda visas ailes.';
-$lang['resendpwdnouser'] = 'Atvaino, tÄda lietotÄja nav.';
-$lang['resendpwdbadauth'] = 'Atvaino, Å¡is autorizÄcijas kods nav derÄ«gs. PÄrliecinies, ka lietoji pilnu apstiprinÄÅ¡anas adresi.';
-$lang['resendpwdconfirm'] = 'ApstiprinÄÅ¡anas adrese nosÅ«tÄ«ta pa epastu.';
-$lang['resendpwdsuccess'] = 'JaunÄ parole nosÅ«tÄ«ta pa e-pastu.';
-$lang['txt_upload'] = 'NorÄdi augÅ¡upielÄdÄjamo failu';
-$lang['txt_filename'] = 'Ievadi wikivÄrdu (nav obligÄts)';
-$lang['txt_overwrt'] = 'AizstÄt esoÅ¡o failu';
-$lang['lockedby'] = 'Patlaban bloÄ·Äjis ';
-$lang['lockexpire'] = 'BloÄ·Äjums beigsies ';
-$lang['willexpire'] = 'Tavs bloÄ·Äjums uz Å¡o lapu pÄc minÅ«tes beigsies.\nLai izvairÄ«tos no konflikta, nospied IepriekÅ¡apskata pogu\n un bloÄ·Äjuma laiku sÄks skaitÄ«t no jauna.';
-$lang['notsavedyet'] = 'Veiktas bet nav saglabÄtas izmaiÅas.\nVai tieÅ¡Äm tÄs nevajag?';
-$lang['rssfailed'] = 'Kļūda saÅemot saturu no ';
-$lang['nothingfound'] = 'Nekas nav atrasts.';
-$lang['mediaselect'] = 'MÄdiju faila izvÄle';
-$lang['fileupload'] = 'MÄdiju faila augÅ¡upielÄde';
-$lang['uploadsucc'] = 'VeiksmÄ«gi ielÄdÄts';
-$lang['uploadfail'] = 'IelÄdes kļūme. VarbÅ«t aplamas tiesÄ«bas?';
-$lang['uploadwrong'] = 'IelÄde aizliegta. Neatļauts faila palÅ¡inÄjums';
-$lang['uploadexist'] = 'Neko nedarīju, jo fails jau ir.';
-$lang['uploadbadcontent'] = 'AugÅ¡upielÄdÄtÄ saturs neatbilst faila paplaÅ¡inÄjumam %s.';
-$lang['uploadspam'] = 'AugÅ¡upielÄde bloÄ·Äta ar melno sarakstu.';
-$lang['uploadxss'] = 'AugÅ¡upielÄde bloÄ·Äta iespÄjama slikta satura dÄļ.';
-$lang['deletesucc'] = 'Fails "%s" dzÄsts.';
-$lang['deletefail'] = 'Nevar dzÄst "%s". PÄrbaudi tiesÄ«bas.';
-$lang['mediainuse'] = 'Fails "%s" nav izdzÄsts, to lieto.';
-$lang['namespaces'] = 'Nodaļas';
-$lang['mediafiles'] = 'Pieejamie faili';
-$lang['js']['keepopen'] = 'PÄc faila izvÄles logu paturÄt atvÄrtu';
-$lang['js']['hidedetails'] = 'SlÄpt detaļas';
-$lang['mediausage'] = 'Atsaucei uz failu lietot Å¡Ädu sintaksi:';
-$lang['mediaview'] = 'SkatÄ«t oriÄ£inÄlo failu';
-$lang['mediaroot'] = 'sakne';
-$lang['mediaupload'] = 'AugÅ¡upielÄdÄt failu patreizÄjÄ sadaļÄ. Lai izveidotu dziļÄku sadaļu, pieraksti to, atdalot ar kolu, pirms augÅ¡upielÄdÄjamÄ faila vÄrda.';
-$lang['mediaextchange'] = 'Faila paplaÅ¡inÄjums mainÄ«ts no .%s uz .%s!';
-$lang['reference'] = 'NorÄdes uz failu';
-$lang['ref_inuse'] = 'Failu nevar dzÄst, jo izmanto Å¡Ädas lapas:';
-$lang['ref_hidden'] = 'Dažas norÄdes ir lapÄs, ko nav tiesÄ«bu skatÄ«t';
-$lang['hits'] = 'ApmeklÄjumi';
-$lang['quickhits'] = 'AtbilstoÅ¡Äs lapas';
-$lang['toc'] = 'Satura rÄdÄ«tÄjs';
-$lang['current'] = 'patlaban';
-$lang['yours'] = 'Tava versija';
-$lang['diff'] = 'atšķirÄ«bas no patreizÄjas versijas';
-$lang['diff2'] = 'norÄdÄ«to versiju atšķirÄ«bas';
-$lang['line'] = 'Rinda';
-$lang['breadcrumb'] = 'Ceļš';
-$lang['youarehere'] = 'Tu atrodies šeit';
-$lang['lastmod'] = 'Labota';
-$lang['by'] = ', labojis';
-$lang['deleted'] = 'dzÄsts';
-$lang['created'] = 'izveidots';
-$lang['restored'] = 'vecÄ versija atjaunota';
-$lang['external_edit'] = 'ÄrpussistÄmas labojums';
-$lang['summary'] = 'AnotÄcija';
-$lang['mail_newpage'] = 'lapa pievienota:';
-$lang['mail_changed'] = 'lapa mainīta:';
-$lang['mail_new_user'] = 'Jauns lietotÄjs:';
-$lang['mail_upload'] = 'augÅ¡upielÄdÄtais fails:';
-$lang['nosmblinks'] = 'Saites uz Windows resursiem darbojas tikai Microsoft Internet Explorer.\nProtams, ka vari saiti kopÄt un iespraust citÄ programmÄ.';
-$lang['qb_alert'] = 'LÅ«dzu ieraksti formatÄjamo teku.\nTo pievienos dokumenta galÄ.';
-$lang['qb_bold'] = 'TrekninÄjums';
-$lang['qb_italic'] = 'Kursīvs';
-$lang['qb_underl'] = 'Pasvītrojums';
-$lang['qb_code'] = 'Vienplatuma burti';
-$lang['qb_strike'] = 'PÄrsvÄ«trots teksts';
-$lang['qb_h1'] = '1. lÄ«meÅa virsraksts';
-$lang['qb_h2'] = '2. lÄ«meÅa virsraksts';
-$lang['qb_h3'] = '3. lÄ«meÅa virsraksts';
-$lang['qb_h4'] = '4. lÄ«meÅa virsraksts';
-$lang['qb_h5'] = '5. lÄ«meÅa virsraksts';
-$lang['qb_link'] = 'IekÅ¡Äja saite';
-$lang['qb_extlink'] = 'ÄrÄja saite';
-$lang['qb_hr'] = 'HorizontÄla lÄ«nija';
-$lang['qb_ol'] = 'NumurÄts saraksts';
-$lang['qb_ul'] = 'NenumurÄts saraksts';
-$lang['qb_media'] = 'Pielikt attÄlus un citus failus.';
-$lang['qb_sig'] = 'Ievietot parakstu';
-$lang['qb_smileys'] = 'Emotikoni';
-$lang['qb_chars'] = 'ĪpaÅ¡Äs zÄ«mes';
-$lang['del_confirm'] = 'DzÄst Å¡o šķirkli?';
-$lang['admin_register'] = 'Pievienot jaunu lietotÄju';
-$lang['metaedit'] = 'Labot metadatus';
-$lang['metasaveerr'] = 'Metadati nav saglabÄti';
-$lang['metasaveok'] = 'Metadati saglabÄti';
-$lang['img_backto'] = 'Atpakaļ uz';
-$lang['img_title'] = 'Virsraksts';
-$lang['img_caption'] = 'Apraksts';
-$lang['img_date'] = 'Datums';
-$lang['img_fname'] = 'Faila vÄrds';
-$lang['img_fsize'] = 'IzmÄrs';
-$lang['img_artist'] = 'FotogrÄfs';
-$lang['img_copyr'] = 'Autortiesības';
-$lang['img_format'] = 'FormÄts';
-$lang['img_camera'] = 'FotoaparÄts';
-$lang['img_keywords'] = 'AtslÄgvÄrdi';
-$lang['subscribe_success'] = '%s pievienots %s abonentu sarakstam';
-$lang['subscribe_error'] = 'Kļūme pievienojot %s %s abonentu sarakstam';
-$lang['subscribe_noaddress'] = 'Nav zinÄma adrese, ko pievienot abonentu sarakstam';
-$lang['unsubscribe_success'] = ' %s svītrots no %s abonentu saraksta';
-$lang['unsubscribe_error'] = 'Kļūme svītrojot %s no %s abonentu saraksta';
-$lang['authmodfailed'] = 'Aplami konfigurÄta lietotÄju autentifikÄcija. LÅ«dzo ziÅo Wiki administratoram.';
-$lang['authtempfail'] = 'LietotÄju autentifikÄcija paÅ¡laik nedarbojas. Ja tas turpinÄs ilgstoÅ¡i, lÅ«duz ziÅo Wiki administratoram.';
-$lang['i_chooselang'] = 'IzvÄlies valodu';
-$lang['i_installer'] = 'DokuWiki instalÄtÄjs';
-$lang['i_wikiname'] = 'Wiki vÄrds';
-$lang['i_enableacl'] = 'Lietot ACL (ieteikts)';
-$lang['i_superuser'] = 'Superuser';
-$lang['i_problems'] = 'InstalÄtÄjs atrada zemÄk minÄtÄs problÄmas. KamÄr tÄs nenovÄrÅ¡, nav iespÄjam turpinÄt.';
-$lang['i_modified'] = 'Drošības nolÅ«kos Å¡is skripts darbosies tika ar jaunu nemodificÄtu Dokuwiki instalÄciju.
- Vai nu no jauna jÄatarhifÄ fail ino lejupielÄdÄtÄs pakas vai jÄraugÄs pÄc padoma pilnÄ Dokuwiki instalÄcijas instrukcijÄ
- <a href="http://wiki.splitbrain.org/wiki:install"></a>';
-$lang['i_funcna'] = 'PHP funkcija <code>%s</code> nav pieejama. VarbÅ«t jÅ«su servera Ä«paÅ¡nieks to kÄda iemesla dÄļ atslÄdzis?';
-$lang['i_phpver'] = 'JÅ«su PHP versija <code>%s</code> ir par vecu. Vajag versiju <code>%s</code>. Atjaunojiet savu PHP instalÄciju.';
-$lang['i_permfail'] = 'Dokuwiki nevar ierakstÄ«t <code>%s</code>. JÄlabo direktorijas tiesÄ«bas!';
-$lang['i_confexists'] = '<code>%s</code> jau ir';
-$lang['i_writeerr'] = 'Nevar izveidot <code>%s</code>. JÄpÄrbauda direktorijas/faila tiesÄ«bas un fails jÄizveido paÅ¡am.';
-$lang['i_badhash'] = 'nepazīstams via izmainīts dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - neatļauta vai tukÅ¡a vÄrtÄ«ba';
-$lang['i_success'] = 'KonfigurÄÅ¡ana veiksmÄ«gi pabeigta. Tagad vari nodzÄst failu install.php. TÄlÄ turpini <a href="doku.php">savÄ jaunajÄ DokuWiki</a>.';
-$lang['i_failure'] = 'Rakstot konfigurÄcijas failu, gadÄ«jÄs dažas kļūmes.
- Pirms lieto <a href="doku.php">savu jauno DokuWiki</a>, tÄs varbÅ«t jÄizlabo.';
-$lang['i_policy'] = 'SÄkotnÄjÄ ACL politika';
-$lang['i_pol0'] = 'AtvÄrts Wiki (raksta, lasa un augÅ¡upielÄdÄ ikviens)';
-$lang['i_pol1'] = 'Publisks Wiki (lasa ikviens, raksta un augÅ¡upielÄdÄ reÄ£istrÄti lietotÄji)';
-$lang['i_pol2'] = 'SlÄgts Wiki (raksta, lasa un augÅ¡upielÄdÄ tikai reÄ£istrÄti lietotÄji)';
-$lang['i_retry'] = 'AtkÄrtot';
+<?php
+/**
+ * latvian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Aivars Miška <allefm at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Labot lapu';
+$lang['btn_source'] = 'ParÄdÄ«t lapas kodu';
+$lang['btn_show'] = 'ParÄdÄ«t lapu';
+$lang['btn_create'] = 'Izveidot lapu';
+$lang['btn_search'] = 'MeklÄt';
+$lang['btn_save'] = 'SaglabÄt';
+$lang['btn_preview'] = 'Priekšskats';
+$lang['btn_top'] = 'Atpakaļ uz sÄkumu';
+$lang['btn_newer'] = '<< jaunÄki';
+$lang['btn_older'] = 'vecÄki >>';
+$lang['btn_revs'] = 'VecÄs versijas';
+$lang['btn_recent'] = 'JaunÄkie grozÄ«jumi';
+$lang['btn_upload'] = 'AugÅ¡upielÄdÄt';
+$lang['btn_cancel'] = 'Atlikt';
+$lang['btn_index'] = 'RÄdÄ«tÄjs';
+$lang['btn_secedit'] = 'Labot';
+$lang['btn_login'] = 'Ieiet';
+$lang['btn_logout'] = 'Iziet';
+$lang['btn_admin'] = 'AdministrÄt';
+$lang['btn_update'] = 'Atjaunot';
+$lang['btn_delete'] = 'DzÄst';
+$lang['btn_back'] = 'Atpakaļ';
+$lang['btn_backlink'] = 'NorÄdes uz lapu';
+$lang['btn_backtomedia'] = 'Atpakaļ uz mÄdiju failu izvÄli';
+$lang['btn_subscribe'] = 'AbonÄt izmaiÅu paziÅojumus';
+$lang['btn_unsubscribe'] = 'Atteikties no izmaiÅu paziÅojumiem';
+$lang['btn_subscribens'] = 'AbonÄt nodaļas izmaiÅu paziÅojumus';
+$lang['btn_unsubscribens'] = 'Atteikties no nodaļas izmaiÅu paziÅojumiem';
+$lang['btn_profile'] = 'Labot savu profilu';
+$lang['btn_reset'] = 'Atsaukt izmaiÅas';
+$lang['btn_resendpwd'] = 'Nosūtīt jaunu paroli';
+$lang['btn_draft'] = 'Labot melnrakstu';
+$lang['btn_recover'] = 'Atjaunot melnrakstu';
+$lang['btn_draftdel'] = 'DzÄst melnrakstu';
+$lang['loggedinas'] = 'Pieteicies kÄ';
+$lang['user'] = 'LietotÄjvÄrds';
+$lang['pass'] = 'Parole';
+$lang['newpass'] = 'JaunÄ parole';
+$lang['oldpass'] = 'AtkÄrto patreizÄjo paroli';
+$lang['passchk'] = 'vÄlreiz';
+$lang['remember'] = 'Atceries mani';
+$lang['fullname'] = 'Pilns vÄrds';
+$lang['email'] = 'E-pasts';
+$lang['register'] = 'ReÄ£istrÄties';
+$lang['profile'] = 'LietotÄja vÄrds';
+$lang['badlogin'] = 'Atvaino, lietotÄjvÄrds vai parole aplama.';
+$lang['minoredit'] = 'Sīki labojumi';
+$lang['draftdate'] = 'Melnraksts automÄtiski saglabÄts';
+$lang['regmissing'] = 'Atvaino, jÄaizpilda visas ailes.';
+$lang['reguexists'] = 'Atvaino, tÄds lietotÄjs jau ir.';
+$lang['regsuccess'] = 'LietotÄjs izveidots. Parole nosÅ«tÄ«ta pa pastu.';
+$lang['regsuccess2'] = 'LietotÄjs izveidots.';
+$lang['regmailfail'] = 'Å Ä·iet, ka ir problÄmas nosÅ«tÄ«t pastu. LÅ«dzu sazinies ar administratoru!';
+$lang['regbadmail'] = 'UzdotÄ epasta adrese izskatÄs aplama. Ja tas nav tiesa, sazinies ar administratoru.';
+$lang['regbadpass'] = 'Abas ierakstÄ«tÄs paroles nav vienÄdas, lÅ«duz atkÄrto.';
+$lang['regpwmail'] = 'Tava DokuWiki parole';
+$lang['reghere'] = 'Tev vÄl nav sava konta? Izveido!';
+$lang['profna'] = 'Labot profilu nav iespÄjams';
+$lang['profnochange'] = 'IzmaiÅu nav. Nav, ko darÄ«t.';
+$lang['profnoempty'] = 'Bez vÄrda vai e-pasta adreses nevar.';
+$lang['profchanged'] = 'Profils veiksmīgi izlabots.';
+$lang['pwdforget'] = 'Aizmirsi paroli? SaÅem jaunu';
+$lang['resendna'] = 'Paroļu izsÄ«tīšanu nepiedÄvÄju.';
+$lang['resendpwd'] = 'NosÅ«tÄ«t jaunu paroli lietotÄjam';
+$lang['resendpwdmissing'] = 'Atvaino, jÄizpilda visas ailes.';
+$lang['resendpwdnouser'] = 'Atvaino, tÄda lietotÄja nav.';
+$lang['resendpwdbadauth'] = 'Atvaino, Å¡is autorizÄcijas kods nav derÄ«gs. PÄrliecinies, ka lietoji pilnu apstiprinÄÅ¡anas adresi.';
+$lang['resendpwdconfirm'] = 'ApstiprinÄÅ¡anas adrese nosÅ«tÄ«ta pa epastu.';
+$lang['resendpwdsuccess'] = 'JaunÄ parole nosÅ«tÄ«ta pa e-pastu.';
+$lang['txt_upload'] = 'NorÄdi augÅ¡upielÄdÄjamo failu';
+$lang['txt_filename'] = 'Ievadi wikivÄrdu (nav obligÄts)';
+$lang['txt_overwrt'] = 'AizstÄt esoÅ¡o failu';
+$lang['lockedby'] = 'Patlaban bloÄ·Äjis ';
+$lang['lockexpire'] = 'BloÄ·Äjums beigsies ';
+$lang['willexpire'] = 'Tavs bloÄ·Äjums uz Å¡o lapu pÄc minÅ«tes beigsies.\nLai izvairÄ«tos no konflikta, nospied IepriekÅ¡apskata pogu\n un bloÄ·Äjuma laiku sÄks skaitÄ«t no jauna.';
+$lang['notsavedyet'] = 'Veiktas bet nav saglabÄtas izmaiÅas.\nVai tieÅ¡Äm tÄs nevajag?';
+$lang['rssfailed'] = 'Kļūda saÅemot saturu no ';
+$lang['nothingfound'] = 'Nekas nav atrasts.';
+$lang['mediaselect'] = 'MÄdiju faila izvÄle';
+$lang['fileupload'] = 'MÄdiju faila augÅ¡upielÄde';
+$lang['uploadsucc'] = 'VeiksmÄ«gi ielÄdÄts';
+$lang['uploadfail'] = 'IelÄdes kļūme. VarbÅ«t aplamas tiesÄ«bas?';
+$lang['uploadwrong'] = 'IelÄde aizliegta. Neatļauts faila palÅ¡inÄjums';
+$lang['uploadexist'] = 'Neko nedarīju, jo fails jau ir.';
+$lang['uploadbadcontent'] = 'AugÅ¡upielÄdÄtÄ saturs neatbilst faila paplaÅ¡inÄjumam %s.';
+$lang['uploadspam'] = 'AugÅ¡upielÄde bloÄ·Äta ar melno sarakstu.';
+$lang['uploadxss'] = 'AugÅ¡upielÄde bloÄ·Äta iespÄjama slikta satura dÄļ.';
+$lang['deletesucc'] = 'Fails "%s" dzÄsts.';
+$lang['deletefail'] = 'Nevar dzÄst "%s". PÄrbaudi tiesÄ«bas.';
+$lang['mediainuse'] = 'Fails "%s" nav izdzÄsts, to lieto.';
+$lang['namespaces'] = 'Nodaļas';
+$lang['mediafiles'] = 'Pieejamie faili';
+$lang['js']['keepopen'] = 'PÄc faila izvÄles logu paturÄt atvÄrtu';
+$lang['js']['hidedetails'] = 'SlÄpt detaļas';
+$lang['mediausage'] = 'Atsaucei uz failu lietot Å¡Ädu sintaksi:';
+$lang['mediaview'] = 'SkatÄ«t oriÄ£inÄlo failu';
+$lang['mediaroot'] = 'sakne';
+$lang['mediaupload'] = 'AugÅ¡upielÄdÄt failu patreizÄjÄ sadaļÄ. Lai izveidotu dziļÄku sadaļu, pieraksti to, atdalot ar kolu, pirms augÅ¡upielÄdÄjamÄ faila vÄrda.';
+$lang['mediaextchange'] = 'Faila paplaÅ¡inÄjums mainÄ«ts no .%s uz .%s!';
+$lang['reference'] = 'NorÄdes uz failu';
+$lang['ref_inuse'] = 'Failu nevar dzÄst, jo izmanto Å¡Ädas lapas:';
+$lang['ref_hidden'] = 'Dažas norÄdes ir lapÄs, ko nav tiesÄ«bu skatÄ«t';
+$lang['hits'] = 'ApmeklÄjumi';
+$lang['quickhits'] = 'AtbilstoÅ¡Äs lapas';
+$lang['toc'] = 'Satura rÄdÄ«tÄjs';
+$lang['current'] = 'patlaban';
+$lang['yours'] = 'Tava versija';
+$lang['diff'] = 'atšķirÄ«bas no patreizÄjas versijas';
+$lang['diff2'] = 'norÄdÄ«to versiju atšķirÄ«bas';
+$lang['line'] = 'Rinda';
+$lang['breadcrumb'] = 'Ceļš';
+$lang['youarehere'] = 'Tu atrodies šeit';
+$lang['lastmod'] = 'Labota';
+$lang['by'] = ', labojis';
+$lang['deleted'] = 'dzÄsts';
+$lang['created'] = 'izveidots';
+$lang['restored'] = 'vecÄ versija atjaunota';
+$lang['external_edit'] = 'ÄrpussistÄmas labojums';
+$lang['summary'] = 'AnotÄcija';
+$lang['mail_newpage'] = 'lapa pievienota:';
+$lang['mail_changed'] = 'lapa mainīta:';
+$lang['mail_new_user'] = 'Jauns lietotÄjs:';
+$lang['mail_upload'] = 'augÅ¡upielÄdÄtais fails:';
+$lang['nosmblinks'] = 'Saites uz Windows resursiem darbojas tikai Microsoft Internet Explorer.\nProtams, ka vari saiti kopÄt un iespraust citÄ programmÄ.';
+$lang['qb_alert'] = 'LÅ«dzu ieraksti formatÄjamo teku.\nTo pievienos dokumenta galÄ.';
+$lang['qb_bold'] = 'TrekninÄjums';
+$lang['qb_italic'] = 'Kursīvs';
+$lang['qb_underl'] = 'Pasvītrojums';
+$lang['qb_code'] = 'Vienplatuma burti';
+$lang['qb_strike'] = 'PÄrsvÄ«trots teksts';
+$lang['qb_h1'] = '1. lÄ«meÅa virsraksts';
+$lang['qb_h2'] = '2. lÄ«meÅa virsraksts';
+$lang['qb_h3'] = '3. lÄ«meÅa virsraksts';
+$lang['qb_h4'] = '4. lÄ«meÅa virsraksts';
+$lang['qb_h5'] = '5. lÄ«meÅa virsraksts';
+$lang['qb_link'] = 'IekÅ¡Äja saite';
+$lang['qb_extlink'] = 'ÄrÄja saite';
+$lang['qb_hr'] = 'HorizontÄla lÄ«nija';
+$lang['qb_ol'] = 'NumurÄts saraksts';
+$lang['qb_ul'] = 'NenumurÄts saraksts';
+$lang['qb_media'] = 'Pielikt attÄlus un citus failus.';
+$lang['qb_sig'] = 'Ievietot parakstu';
+$lang['qb_smileys'] = 'Emotikoni';
+$lang['qb_chars'] = 'ĪpaÅ¡Äs zÄ«mes';
+$lang['del_confirm'] = 'DzÄst Å¡o šķirkli?';
+$lang['admin_register'] = 'Pievienot jaunu lietotÄju';
+$lang['metaedit'] = 'Labot metadatus';
+$lang['metasaveerr'] = 'Metadati nav saglabÄti';
+$lang['metasaveok'] = 'Metadati saglabÄti';
+$lang['img_backto'] = 'Atpakaļ uz';
+$lang['img_title'] = 'Virsraksts';
+$lang['img_caption'] = 'Apraksts';
+$lang['img_date'] = 'Datums';
+$lang['img_fname'] = 'Faila vÄrds';
+$lang['img_fsize'] = 'IzmÄrs';
+$lang['img_artist'] = 'FotogrÄfs';
+$lang['img_copyr'] = 'Autortiesības';
+$lang['img_format'] = 'FormÄts';
+$lang['img_camera'] = 'FotoaparÄts';
+$lang['img_keywords'] = 'AtslÄgvÄrdi';
+$lang['subscribe_success'] = '%s pievienots %s abonentu sarakstam';
+$lang['subscribe_error'] = 'Kļūme pievienojot %s %s abonentu sarakstam';
+$lang['subscribe_noaddress'] = 'Nav zinÄma adrese, ko pievienot abonentu sarakstam';
+$lang['unsubscribe_success'] = ' %s svītrots no %s abonentu saraksta';
+$lang['unsubscribe_error'] = 'Kļūme svītrojot %s no %s abonentu saraksta';
+$lang['authmodfailed'] = 'Aplami konfigurÄta lietotÄju autentifikÄcija. LÅ«dzo ziÅo Wiki administratoram.';
+$lang['authtempfail'] = 'LietotÄju autentifikÄcija paÅ¡laik nedarbojas. Ja tas turpinÄs ilgstoÅ¡i, lÅ«duz ziÅo Wiki administratoram.';
+$lang['i_chooselang'] = 'IzvÄlies valodu';
+$lang['i_installer'] = 'DokuWiki instalÄtÄjs';
+$lang['i_wikiname'] = 'Wiki vÄrds';
+$lang['i_enableacl'] = 'Lietot ACL (ieteikts)';
+$lang['i_superuser'] = 'Superuser';
+$lang['i_problems'] = 'InstalÄtÄjs atrada zemÄk minÄtÄs problÄmas. KamÄr tÄs nenovÄrÅ¡, nav iespÄjam turpinÄt.';
+$lang['i_modified'] = 'Drošības nolÅ«kos Å¡is skripts darbosies tika ar jaunu nemodificÄtu Dokuwiki instalÄciju.
+ Vai nu no jauna jÄatarhifÄ fail ino lejupielÄdÄtÄs pakas vai jÄraugÄs pÄc padoma pilnÄ Dokuwiki instalÄcijas instrukcijÄ
+ <a href="http://wiki.splitbrain.org/wiki:install"></a>';
+$lang['i_funcna'] = 'PHP funkcija <code>%s</code> nav pieejama. VarbÅ«t jÅ«su servera Ä«paÅ¡nieks to kÄda iemesla dÄļ atslÄdzis?';
+$lang['i_phpver'] = 'JÅ«su PHP versija <code>%s</code> ir par vecu. Vajag versiju <code>%s</code>. Atjaunojiet savu PHP instalÄciju.';
+$lang['i_permfail'] = 'Dokuwiki nevar ierakstÄ«t <code>%s</code>. JÄlabo direktorijas tiesÄ«bas!';
+$lang['i_confexists'] = '<code>%s</code> jau ir';
+$lang['i_writeerr'] = 'Nevar izveidot <code>%s</code>. JÄpÄrbauda direktorijas/faila tiesÄ«bas un fails jÄizveido paÅ¡am.';
+$lang['i_badhash'] = 'nepazīstams via izmainīts dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - neatļauta vai tukÅ¡a vÄrtÄ«ba';
+$lang['i_success'] = 'KonfigurÄÅ¡ana veiksmÄ«gi pabeigta. Tagad vari nodzÄst failu install.php. TÄlÄk turpini <a href="doku.php">savÄ jaunajÄ DokuWiki</a>.';
+$lang['i_failure'] = 'Rakstot konfigurÄcijas failu, gadÄ«jÄs dažas kļūmes.
+ Pirms lieto <a href="doku.php">savu jauno DokuWiki</a>, tÄs varbÅ«t jÄizlabo.';
+$lang['i_policy'] = 'SÄkotnÄjÄ ACL politika';
+$lang['i_pol0'] = 'AtvÄrts Wiki (raksta, lasa un augÅ¡upielÄdÄ ikviens)';
+$lang['i_pol1'] = 'Publisks Wiki (lasa ikviens, raksta un augÅ¡upielÄdÄ reÄ£istrÄti lietotÄji)';
+$lang['i_pol2'] = 'SlÄgts Wiki (raksta, lasa un augÅ¡upielÄdÄ tikai reÄ£istrÄti lietotÄji)';
+$lang['i_retry'] = 'AtkÄrtot';
Modified: site/trunk/www-root/wiki/inc/lang/lv/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Lapa aizÅemta ======
-
-Lapa aizÅemta, to patlaban labo cits lietotÄjs. Tev ir jÄgaida, kamÄr to pabeigs labot vai arÄ« iztecÄs labotÄjam atvÄlÄtais laiks.
-
-
+====== Lapa aizÅemta ======
+
+Lapa aizÅemta, to patlaban labo cits lietotÄjs. Tev ir jÄgaida, kamÄr to pabeigs labot vai arÄ« iztecÄs labotÄjam atvÄlÄtais laiks.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Login ======
-Tu neesi ielogojies! Ievadi savu lietotÄjvÄrdu un paroli.
-PÄrlÅ«kprogrammai jÄpieÅem //cookies//.
-
+====== Login ======
+Tu neesi ielogojies! Ievadi savu lietotÄjvÄrdu un paroli.
+PÄrlÅ«kprogrammai jÄpieÅem //cookies//.
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-TavÄ DokuWiki pievienota vai labota lapa. Å eit ir sÄ«kÄkas ziÅas:
-
-Datums : @DATE@
-PÄrlÅ«ks : @BROWSER@
-IP adrese : @IPADDRESS@
-Dators : @HOSTNAME@
-VecÄ versija : @OLDPAGE@
-JaunÄ versija: @NEWPAGE@
-AnotÄcija : @SUMMARY@
-LietotÄjs : @USER@
-
- at DIFF@
-
-
---
-VÄstuli nosÅ«tÄ«jusi DokuWiki programma no
- at DOKUWIKIURL@ datora
-
+TavÄ DokuWiki pievienota vai labota lapa. Å eit ir sÄ«kÄkas ziÅas:
+
+Datums : @DATE@
+PÄrlÅ«ks : @BROWSER@
+IP adrese : @IPADDRESS@
+Dators : @HOSTNAME@
+VecÄ versija : @OLDPAGE@
+JaunÄ versija: @NEWPAGE@
+AnotÄcija : @SUMMARY@
+LietotÄjs : @USER@
+
+ at DIFF@
+
+
+--
+VÄstuli nosÅ«tÄ«jusi DokuWiki programma no
+ at DOKUWIKIURL@ datora
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Å Ä·irklis vÄl nav izveidots======
-
-Tu izvÄlÄjies saiti uz vÄl neizveidotu šķirkli. Ja tiesÄ«bas ļauj, vari to izveidot, uzklikšķinot uz pogas ''Izveidot lapu''.
-
-
+======Å Ä·irklis vÄl nav izveidots======
+
+Tu izvÄlÄjies saiti uz vÄl neizveidotu šķirkli. Ja tiesÄ«bas ļauj, vari to izveidot, uzklikšķinot uz pogas ''Izveidot lapu''.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Nav Å¡Ädas versijas======
-
-NorÄdÄ«tÄs lapas versijas nav. Lieto pogu ''VecÄs versijas'', lai redzÄtu dokumenta veco versiju sarakstu.
-
-
+======Nav Å¡Ädas versijas======
+
+NorÄdÄ«tÄs lapas versijas nav. Lieto pogu ''VecÄs versijas'', lai redzÄtu dokumenta veco versiju sarakstu.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-Sveiki, @FULLNAME@!
-
-Tavi dati @TITLE@ lapÄm uz servera @DOKUWIKIURL@ ir
-
-LietotÄjvÄrds: @LOGIN@
-Parole: @PASSWORD@
-
---
-Å o dokumentu izveidojusi DokuWiki programma uz servera @DOKUWIKIURL@
+Sveiki, @FULLNAME@!
+
+Tavi dati @TITLE@ lapÄm uz servera @DOKUWIKIURL@ ir
+
+LietotÄjvÄrds: @LOGIN@
+Parole: @PASSWORD@
+
+--
+Å o dokumentu izveidojusi DokuWiki programma uz servera @DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/lv/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Priekšskats======
-
-Tavs teksts izskatÄ«sies Å¡Ädi. IevÄro, tas vÄl **nav saglabÄts** !
-
-
+======Priekšskats======
+
+Tavs teksts izskatÄ«sies Å¡Ädi. IevÄro, tas vÄl **nav saglabÄts** !
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Sveiki, @FULLNAME@!
-
-KÄds pieprasÄ«jis jaunu paroli tavam @TITLE@ kontam
- at DOKUWIKIURL@ sistÄmÄ.
-
-Ja paroli neesi prasÄ«jis, ignorÄ Å¡o vÄstuli.
-
-Lai apstiprinÄtu, ka esi paroli pieprasÄ«jis lieto norÄdÄ«to saiti.
-
- at CONFIRM@
-
---
-Å o vÄstuli Ä£enerÄjusi DokuWiki no
+Sveiki, @FULLNAME@!
+
+KÄds pieprasÄ«jis jaunu paroli tavam @TITLE@ kontam
+ at DOKUWIKIURL@ sistÄmÄ.
+
+Ja paroli neesi prasÄ«jis, ignorÄ Å¡o vÄstuli.
+
+Lai apstiprinÄtu, ka esi paroli pieprasÄ«jis lieto norÄdÄ«to saiti.
+
+ at CONFIRM@
+
+--
+Å o vÄstuli Ä£enerÄjusi DokuWiki no
@DOKUWIKIURL
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/lv/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-Å Ä« lapa ir tikai lasÄma. Vari apskatÄ«t izejas kodu, bet nevari to mainÄ«t. Ja domÄ, ka tas nav pareizi, vaicÄ administratoram.
-
-
-
+Å Ä« lapa ir tikai lasÄma. Vari apskatÄ«t izejas kodu, bet nevari to mainÄ«t. Ja domÄ, ka tas nav pareizi, vaicÄ administratoram.
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-======JaunÄkie grozÄ«jumi======
-
-JaunÄkie labojumi ir:
-
-
-
-
-
+======JaunÄkie grozÄ«jumi======
+
+JaunÄkie labojumi ir:
+
+
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Jauna lietotÄja reÄ£istrÄcija ======
-
-Lai izveidotu jaunu kontu, aizpildi visas prasÄ«tÄs ailes.
-PÄrliecinies, ka uzdod **derÄ«gu pasta adresi**, jo jauno paroli tev nosÅ«tÄ«s pa pastu. LietotÄjvÄrdam jÄatbilst [[doku>wiki:pagename|wiki vÄrdu nosacÄ«jumiem]].
-
+====== Jauna lietotÄja reÄ£istrÄcija ======
+
+Lai izveidotu jaunu kontu, aizpildi visas prasÄ«tÄs ailes.
+PÄrliecinies, ka uzdod **derÄ«gu pasta adresi**, jo jauno paroli tev nosÅ«tÄ«s pa pastu. LietotÄjvÄrdam jÄatbilst [[doku>wiki:pagename|wiki vÄrdu nosacÄ«jumiem]].
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-ReÄ£istrÄts jauns lietotÄjs. TÄ dati:
-
-LietotÄjvÄrds : @NEWUSER@
-Pilns vÄrds : @NEWNAME@
-E-pasts : @NEWEMAIL@
-
-Datums : @DATE@
-PÄrlÅ«ks : @BROWSER@
-IP aderese : @IPADDRESS@
-Datora vÄrds: @HOSTNAME@
-
---
-Å o vÄstuli Ä£enerÄjis DokuWiki no
+ReÄ£istrÄts jauns lietotÄjs. TÄ dati:
+
+LietotÄjvÄrds : @NEWUSER@
+Pilns vÄrds : @NEWNAME@
+E-pasts : @NEWEMAIL@
+
+Datums : @DATE@
+PÄrlÅ«ks : @BROWSER@
+IP aderese : @IPADDRESS@
+Datora vÄrds: @HOSTNAME@
+
+--
+Å o vÄstuli Ä£enerÄjis DokuWiki no
@DOKUWIKIURL
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/lv/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Nosūtīt jaunu paroli ======
-
-Azipildi zemÄk prasÄ«to, lai saÅemtu savam kontam jaunu paroli.
-Jauno paroli nosÅ«tÄ«s uz reÄ£istrÄto e-pasta adresi. LietotÄja vÄrdam jÄbÅ«t tavam //wiki sistÄmas// lietotÄjavÄrdam.
+====== Nosūtīt jaunu paroli ======
+
+Azipildi zemÄk prasÄ«to, lai saÅemtu savam kontam jaunu paroli.
+Jauno paroli nosÅ«tÄ«s uz reÄ£istrÄto e-pasta adresi. LietotÄja vÄrdam jÄbÅ«t tavam //wiki sistÄmas// lietotÄjavÄrdam.
Modified: site/trunk/www-root/wiki/inc/lang/lv/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======VecÄs versijas======
-
-Dokumentam ir Å¡Ädas vecÄs versijas. Lai atgrieztos pie vecÄ varianta, izvÄlies to no saraksta, uzklikšķini uz "Labot Å¡o lapu" un saglabÄ to.
-
-
+======VecÄs versijas======
+
+Dokumentam ir Å¡Ädas vecÄs versijas. Lai atgrieztos pie vecÄ varianta, izvÄlies to no saraksta, uzklikšķini uz "Labot Å¡o lapu" un saglabÄ to.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======MeklÄÅ¡ana======
-
-Te vari redzÄt meklÄÅ¡anas rezultÄtus. Ja neatradi meklÄto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklÄtajiem atslÄgvÄrdiem nosaukumÄ.
-
-=====Atrasts======
+======MeklÄÅ¡ana======
+
+Te vari redzÄt meklÄÅ¡anas rezultÄtus. Ja neatradi meklÄto, nospiežot pogu "Labot lapu", vari izveidot jaunu lapu ar tevis meklÄtajiem atslÄgvÄrdiem nosaukumÄ.
+
+=====Atrasts======
Modified: site/trunk/www-root/wiki/inc/lang/lv/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Å Ä« ir veca dokumenta versija!**
-----
+**Å Ä« ir veca dokumenta versija!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/lv/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,25 +1,25 @@
-# Å is ir to vÄrdu sarakstus, kurus indeksÄtÄjs neÅem vÄrÄ. Katru vÄrdu savÄ rindÄ!
-# Labojot failu ievÄro, ja jÄlieto UNIX rindu aplauzumi (single newline)
-# Nevajag likst sarakstÄ par 3 burtiem Ä«sÄkus vÄrdus, tos tÄ pat neÅem vÄrÄ
-# Angļu valodai saraksts Åemts no http://www.ranks.nl/stopwords/
-gar
-par
-pÄr
-pret
-starp
-caur
-vai
-nav
-aiz
-apakš
-bez
-dÄļ
-pÄc
-pie
-pirms
-priekš
-
-
-
-
-
+# Å is ir to vÄrdu sarakstus, kurus indeksÄtÄjs neÅem vÄrÄ. Katru vÄrdu savÄ rindÄ!
+# Labojot failu ievÄro, ja jÄlieto UNIX rindu aplauzumi (single newline)
+# Nevajag likt sarakstÄ par 3 burtiem Ä«sÄkus vÄrdus, tos tÄ pat neÅem vÄrÄ
+# Angļu valodai saraksts Åemts no http://www.ranks.nl/stopwords/
+gar
+par
+pÄr
+pret
+starp
+caur
+vai
+nav
+aiz
+apakš
+bez
+dÄļ
+pÄc
+pie
+pirms
+priekš
+
+
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Sveiki!
-
- at TITLE@ wiki ir mainījusies lapa @PAGE@ .
-
-Atšķirības ir:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Lai atteiktos no šīm vÄstulÄm, ielogojies wiki sistÄmÄ
- at DOKUWIKIURL@, tad apmeklÄ @NEWPAGE@
-uz izvÄlies 'Atteikties no izmaiÅu paziÅojumiem'.
-
---
-Vestuli izveidoja
- at DOKUWIKIURL@
+Sveiki!
+
+ at TITLE@ wiki ir mainījusies lapa @PAGE@ .
+
+Atšķirības ir:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Lai atteiktos no šīm vÄstulÄm, ielogojies wiki sistÄmÄ
+ at DOKUWIKIURL@, tad apmeklÄ @NEWPAGE@
+uz izvÄlies 'Atteikties no izmaiÅu paziÅojumiem'.
+
+--
+Vestuli izveidoja
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/lv/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Atjaunot sava konta datus ======
-
-JÄaizpilda tikai tie lauki, kuru saturu vÄlies mainÄ«t. Nav iespÄjams mainÄ«t savu lietotÄjvÄrdu.
-
-
-
-
-
+====== Atjaunot sava konta datus ======
+
+JÄaizpilda tikai tie lauki, kuru saturu vÄlies mainÄ«t. Nav iespÄjams mainÄ«t savu lietotÄjvÄrdu.
+
+
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/lv/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Fails augÅ¡upielÄdÄts DokuWiki. SÄ«kÄkas ziÅas:
-
-Fails : @MEDIA@
-Datums : @DATE@
-PÄrlÅ«ks : @BROWSER@
-IP adrese : @IPADDRESS@
-Datora vÄrds : @HOSTNAME@
-IzmÄrs : @SIZE@
-MIME tips : @MIME@
-LietotÄjs : @USER@
-
---
-VÄstuli nosÅ«tÄ«jusi DokuWiki programma no
+Fails augÅ¡upielÄdÄts DokuWiki. SÄ«kÄkas ziÅas:
+
+Fails : @MEDIA@
+Datums : @DATE@
+PÄrlÅ«ks : @BROWSER@
+IP adrese : @IPADDRESS@
+Datora vÄrds : @HOSTNAME@
+IzmÄrs : @SIZE@
+MIME tips : @MIME@
+LietotÄjs : @USER@
+
+--
+VÄstuli nosÅ«tÄ«jusi DokuWiki programma no
@DOKUWIKIURL@ datora.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/lv/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/lv/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/lv/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======SPAMs bloÄ·Äts======
-
-Tavas izmaiÅas **nav** saglabÄtas, jo satur vienu vai vairÄkus aizliegtos vÄrdus.
-Ja uzskati, ka tÄ ir kļūda, sazinies ar administratoru.
-
+======SPAMs bloÄ·Äts======
+
+Tavas izmaiÅas **nav** saglabÄtas, jo satur vienu vai vairÄkus aizliegtos vÄrdus.
+Ja uzskati, ka tÄ ir kļūda, sazinies ar administratoru.
+
Modified: site/trunk/www-root/wiki/inc/lang/mg/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/mg/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/mg/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -132,5 +132,6 @@
$lang['acl_perm8'] = 'Mandefa rakitra';
$lang['acl_perm16'] = 'Mamafa';
$lang['acl_new'] = 'Ampio andalana vaovao';
+
//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/nl/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Beheer ======
-
-Hieronder is een lijst van beheertaken beschikbaar in DokuWiki.
+====== Beheer ======
+
+Hieronder is een lijst van beheertaken beschikbaar in DokuWiki.
Modified: site/trunk/www-root/wiki/inc/lang/nl/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Backlinks ======
-
-Dit is een lijst van pagina's die terug lijken te wijzen naar de huidige pagina.
-
+====== Backlinks ======
+
+Dit is een lijst van pagina's die terug lijken te wijzen naar de huidige pagina.
+
Modified: site/trunk/www-root/wiki/inc/lang/nl/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Er bestaat een nieuwere versie ======
-
-Er bestaat een nieuwere versie van het document dat aangepast wordt. Dit komt voor als een andere gebruiker dit document wijzigde samen met een andere gebruiker.
-
-Bekijk de verschillen die beneden weergegeven worden uitvoerig, beslis dan welke versie de beste is en dus bewaard moet worden. Klik op ''opslaan'' om de eigen versie te bewaren. Klik op ''annuleren'' om de huidige versie te bewaren.
+====== Er bestaat een nieuwere versie ======
+
+Er bestaat een nieuwere versie van het document dat aangepast wordt. Dit komt voor als een andere gebruiker dit document wijzigde samen met een andere gebruiker.
+
+Bekijk de verschillen die beneden weergegeven worden uitvoerig, beslis dan welke versie de beste is en dus bewaard moet worden. Klik op ''opslaan'' om de eigen versie te bewaren. Klik op ''annuleren'' om de huidige versie te bewaren.
Modified: site/trunk/www-root/wiki/inc/lang/nl/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Toegang geweigerd======
-
-Sorry: je hebt niet voldoende rechten om verder te gaan. Misschien ben je vergeten in te loggen?
+======Toegang geweigerd======
+
+Sorry: je hebt niet voldoende rechten om verder te gaan. Misschien ben je vergeten in te loggen?
Modified: site/trunk/www-root/wiki/inc/lang/nl/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Verschillen======
-
-Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.
+======Verschillen======
+
+Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.
Modified: site/trunk/www-root/wiki/inc/lang/nl/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-===== Concept bestand gevonden =====
-
-Uw laatste bewerking op deze pagina is niet volledig afgerond. DokuWiki heeft automatisch een concept van uw werk opgeslagen welke u nu kunt hervatten. Hieronder treft u uw concept aan.
-
+===== Concept bestand gevonden =====
+
+Uw laatste bewerking op deze pagina is niet volledig afgerond. DokuWiki heeft automatisch een concept van uw werk opgeslagen welke u nu kunt hervatten. Hieronder treft u uw concept aan.
+
Kiest u of u het concept wilt //herstellen//, //verwijderen// of //annuleren//.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/nl/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Pas de pagina aan en klik op ''Opslaan''. Zie [[wiki:syntax]] voor de Wiki syntax. Pas alleen de pagina aan als hij **verbeterd** kan worden. Spelen kan steeds in de [[playground:playground|zandbak]].
+Pas de pagina aan en klik op ''Opslaan''. Zie [[wiki:syntax]] voor de Wiki syntax. Pas alleen de pagina aan als hij **verbeterd** kan worden. Spelen kan steeds in de [[playground:playground|zandbak]].
Modified: site/trunk/www-root/wiki/inc/lang/nl/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Er is een oude revisie van het document geladen!** Nu opslaan zorgt ervoor dat de nieuwe revisie opgeslagen wordt en de oude wijzigingen gaan verloren.
-----
+**Er is een oude revisie van het document geladen!** Nu opslaan zorgt ervoor dat de nieuwe revisie opgeslagen wordt en de oude wijzigingen gaan verloren.
+----
Modified: site/trunk/www-root/wiki/inc/lang/nl/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Index ======
-
-Dit is een index pagina van alle beschikbare pagina's geordend op [[doku>wiki:namespaces|namespaces]].
-
+====== Index ======
+
+Dit is een index pagina van alle beschikbare pagina's geordend op [[doku>wiki:namespaces|namespaces]].
+
Modified: site/trunk/www-root/wiki/inc/lang/nl/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-<p>Deze pagina helpt u bij de eerste installatie en configuratie van <a href="http://wiki.splitbrain.org">Dokuwiki</a>.
-Meer informatie over deze installer is beschikbaar op zijn eigen <a href="http://wiki.splitbrain.org/wiki:installer">documentatie pagina</a>.</p>
-
-<p>DokuWiki gebruikt platte tekstbestanden voor het opslaan van wikipagina's en andere informatie die bij deze pagina's horen. (bijvoorbeeld plaatjes, zoek indexes, oude revisies enz.).
-
-Om goed te kunnen functioneren, DokuWiki <strong>moet</strong>
-schrijftoegang hebben tot de directories die deze bestanden bevatten.
-
-De installer kan zelf niet deze toegangs permissies regelen. Dit is normaal gesproken te bereiken door het direct op de command shell in te voeren, of in het geval van hosting via FTP of uw hosting controle paneel (bijvoorbeeld cPanel).</p>
-
-<p> Deze installer zal uw DokuWiki configuratie instellen op <acronym title="access control list">ACL</acronym>,
-wat op zijn beurt de beheerder in staat stelt in te loggen en toegang te verkrijgen tot het beheersdeel van de DokuWiki voor het instaleren van plugins, beheren van gebruikers, toegangsrechten tot wiki pagina's en beheer van configuratie instellingen.
-Het is niet noodzakelijk voor DokuWiki om te functioneren maar het maakt het een stuk makkelijker om Dokuwiki te beheren.</p>
-
-<p>Ervaren gebruikers of gebruikers die aangepaste configuraties wensen kunnen voor details terecht op de volgende links:
-<a href="http://wiki.splitbrain.org/wiki:install">installatie instructies</a>
+<p>Deze pagina helpt u bij de eerste installatie en configuratie van <a href="http://wiki.splitbrain.org">Dokuwiki</a>.
+Meer informatie over deze installer is beschikbaar op zijn eigen <a href="http://wiki.splitbrain.org/wiki:installer">documentatie pagina</a>.</p>
+
+<p>DokuWiki gebruikt platte tekstbestanden voor het opslaan van wikipagina's en andere informatie die bij deze pagina's horen. (bijvoorbeeld plaatjes, zoek indexes, oude revisies enz.).
+
+Om goed te kunnen functioneren, DokuWiki <strong>moet</strong>
+schrijftoegang hebben tot de directories die deze bestanden bevatten.
+
+De installer kan zelf niet deze toegangs permissies regelen. Dit is normaal gesproken te bereiken door het direct op de command shell in te voeren, of in het geval van hosting via FTP of uw hosting controle paneel (bijvoorbeeld cPanel).</p>
+
+<p> Deze installer zal uw DokuWiki configuratie instellen op <acronym title="access control list">ACL</acronym>,
+wat op zijn beurt de beheerder in staat stelt in te loggen en toegang te verkrijgen tot het beheersdeel van de DokuWiki voor het instaleren van plugins, beheren van gebruikers, toegangsrechten tot wiki pagina's en beheer van configuratie instellingen.
+Het is niet noodzakelijk voor DokuWiki om te functioneren maar het maakt het een stuk makkelijker om Dokuwiki te beheren.</p>
+
+<p>Ervaren gebruikers of gebruikers die aangepaste configuraties wensen kunnen voor details terecht op de volgende links:
+<a href="http://wiki.splitbrain.org/wiki:install">installatie instructies</a>
en <a href="http://wiki.splitbrain.org/wiki:config">configuratie instellingen</a>.</p>
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/nl/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,207 +1,207 @@
-<?php
-/**
- * dutch language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author François Kooman <fkooman.tuxed.net>
- * @author Jack van Klaren <dokuwiki at afentoe.xs4all.nl>
- * @author Riny Heijdendael <riny at heijdendael.nl>
- * @author Koen Huybrechts <huybkoen at gmail.com>
- * @author Wouter Schoot <wouter at schoot.org>
- * @author John de Graaff <john at de-graaff.net>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Pagina aanpassen';
-$lang['btn_source'] = 'Toon pagina broncode';
-$lang['btn_show'] = 'Toon pagina';
-$lang['btn_create'] = 'Maak deze pagina aan';
-$lang['btn_search'] = 'Zoeken';
-$lang['btn_save'] = 'Opslaan';
-$lang['btn_preview'] = 'Voorbeeld';
-$lang['btn_top'] = 'Terug naar boven';
-$lang['btn_newer'] = '<< recenter';
-$lang['btn_older'] = 'ouder >>';
-$lang['btn_revs'] = 'Oude revisies';
-$lang['btn_recent'] = 'Recente aanpassingen';
-$lang['btn_upload'] = 'Upload';
-$lang['btn_cancel'] = 'Annuleren';
-$lang['btn_index'] = 'Index';
-$lang['btn_secedit'] = 'Aanpassen';
-$lang['btn_login'] = 'Inloggen';
-$lang['btn_logout'] = 'Uitloggen';
-$lang['btn_admin'] = 'Beheer';
-$lang['btn_update'] = 'Bijwerken';
-$lang['btn_delete'] = 'Verwijder';
-$lang['btn_back'] = 'Terug';
-$lang['btn_backlink'] = 'Referenties';
-$lang['btn_backtomedia'] = 'Terug naar Bestand selectie';
-$lang['btn_subscribe'] = 'Volg wijzigingen';
-$lang['btn_unsubscribe'] = 'Stop volgen wijzigingen';
-$lang['btn_subscribens'] = 'Inschrijven Namespace Veranderingen';
-$lang['btn_unsubscribens'] = 'Uitschrijven Namespace Veranderingen';
-$lang['btn_profile'] = 'Profiel Aanpassen';
-$lang['btn_reset'] = 'Wissen';
-$lang['btn_resendpwd'] = 'Stuur een nieuw wachtwoord';
-$lang['btn_draft'] = 'Bewerk concept';
-$lang['btn_recover'] = 'Herstel concept';
-$lang['btn_draftdel'] = 'Verwijder concept';
-$lang['loggedinas'] = 'Ingelogd als';
-$lang['user'] = 'Gebruikersnaam';
-$lang['pass'] = 'Wachtwoord';
-$lang['newpass'] = 'Nieuw wachtwoord';
-$lang['oldpass'] = 'Bevestig huidig wachtwoord';
-$lang['passchk'] = 'nogmaals';
-$lang['remember'] = 'Bewaar';
-$lang['fullname'] = 'Volledige naam';
-$lang['email'] = 'E-mail';
-$lang['register'] = 'Registreren';
-$lang['profile'] = 'Gebruikersprofiel';
-$lang['badlogin'] = 'Sorry, gebruikersnaam of wachtwoord onjuist';
-$lang['minoredit'] = 'Kleine wijziging';
-$lang['draftdate'] = 'Concept automatisch opgeslagen op';
-$lang['regmissing'] = 'Vul al de velden in';
-$lang['reguexists'] = 'Er bestaat al een gebruiker met deze loginnaam.';
-$lang['regsuccess'] = 'De gebruiker is aangemaakt. Het wachtwoord is per e-mail verzonden.';
-$lang['regsuccess2'] = 'De gebruiker is aangemaakt.';
-$lang['regmailfail'] = 'Het lijkt erop dat het sturen van de wachtwoordmail mislukt is. Neem a.u.b. contact op met de beheerder!';
-$lang['regbadmail'] = 'Het opgegeven e-mailadres lijkt ongeldig - als je denkt dat dit niet klopt neem dan contact op met de beheerder.';
-$lang['regbadpass'] = 'De twee ingevoerde wachtwoorden zijn niet identiek. Probeer het nog eens.';
-$lang['regpwmail'] = 'Je DokuWiki wachtwoord';
-$lang['reghere'] = 'Je hebt nog geen account? Vraag er eentje aan';
-$lang['profna'] = 'Deze wiki ondersteunt geen profielwijzigingen';
-$lang['profnochange'] = 'Geen wijzigingen, niets gedaan';
-$lang['profnoempty'] = 'Een lege gebruikersnaam of e-mailadres is niet toegestaan';
-$lang['profchanged'] = 'Gebruikersprofiel succesvol aangepast';
-$lang['pwdforget'] = 'Je wachtwoord vergeten? Vraag een nieuw wachtwoord aan';
-$lang['resendna'] = 'Deze wiki ondersteunt niet het verzenden van wachtwoorden';
-$lang['resendpwd'] = 'Stuur een nieuw wachtwoord voor';
-$lang['resendpwdmissing'] = 'Sorry, je moet alle velden invullen';
-$lang['resendpwdnouser'] = 'Sorry, we kunnen deze gebruikersnaam niet vinden in onze database';
-$lang['resendpwdbadauth'] = 'Sorry, deze authentiecatiecode is niet geldig. Controleer of u de volledige bevestigings-link gebruikt.';
-$lang['resendpwdconfirm'] = 'Een bevestigings-link is verzonden per e-mail';
-$lang['resendpwdsuccess'] = 'Je nieuwe wachtwoord is per e-mail verzonden';
-$lang['txt_upload'] = 'Selecteer een bestand om te uploaden';
-$lang['txt_filename'] = 'Vul wiki-naam in (optioneel)';
-$lang['txt_overwrt'] = 'Overschrijf bestaand bestand';
-$lang['lockedby'] = 'Momenteel in gebruik door';
-$lang['lockexpire'] = 'Exclusief gebruiksrecht vervalt op';
-$lang['willexpire'] = 'Je exclusieve gebruiksrecht voor het aanpassen van deze pagina verloopt over een minuut.\nOm problemen te voorkomen klik op de Voorbeeld knop om de exclusieve gebruiksrechten te verlengen.';
-$lang['notsavedyet'] = 'Er zijn op dit moment wijzigingen die nog niet zijn opgeslagen, deze zullen verloren gaan.\nWeet je zeker dat je wilt doorgaan?';
-$lang['rssfailed'] = 'Er is een fout opgetreden bij het ophalen van de feed: ';
-$lang['nothingfound'] = 'Er werd niets gevonden.';
-$lang['mediaselect'] = 'Bestand selectie';
-$lang['fileupload'] = 'Bestand upload';
-$lang['uploadsucc'] = 'Upload geslaagd';
-$lang['uploadfail'] = 'Upload mislukt. Misschien verkeerde permissies?';
-$lang['uploadwrong'] = 'Upload mislukt. Deze file-extensie is verboden';
-$lang['uploadexist'] = 'Bestand bestaat reeds. Er is niets gewijzigd.';
-$lang['uploadbadcontent'] = 'Het geüploade bestand voldoet niet aan de %s bestandsextensie.';
-$lang['uploadspam'] = 'De upload is geblokkeerd door de spam blacklist.';
-$lang['uploadxss'] = 'De upload is geblokkeerd wegens mogelijk onveilige inhoud.';
-$lang['deletesucc'] = 'Het bestand "%s" is verwijderd.';
-$lang['deletefail'] = '"%s" kan niet worden verwijderd - controleer permissies.';
-$lang['mediainuse'] = 'Het bestand "%s" is niet verwijderd - het is nog in gebruik.';
-$lang['namespaces'] = 'Namespaces';
-$lang['mediafiles'] = 'Beschikbare bestanden in';
-$lang['js']['keepopen'] = 'Houd scherm open bij selectie';
-$lang['js']['hidedetails'] = 'Verberg details';
-$lang['mediausage'] = 'Gebruik de volgende syntax om aan het bestand te refereren';
-$lang['mediaview'] = 'Bekijk het orginele bestand';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Upload een bestand naar de huidige namespace. Om een subnamespace aan te maken, voegt u bij het "Upload als" veld een namespace in, gescheiden met dubbele-punten.';
-$lang['mediaextchange'] = 'Bestandsextensie veranderd van .%s naar .%s!';
-$lang['reference'] = 'Referenties voor';
-$lang['ref_inuse'] = 'Het bestand kan niet worden verwijderd, omdat het nog in gebruik is op de volgende pagina\'s:';
-$lang['ref_hidden'] = 'Enkele referenties staan op pagina\'s waarvoor je geen lees permissie hebt';
-$lang['hits'] = 'Hits';
-$lang['quickhits'] = 'Overeenkomende pagina namen';
-$lang['toc'] = 'Inhoudsopgave';
-$lang['current'] = 'huidige';
-$lang['yours'] = 'Jouw versie';
-$lang['diff'] = 'Toon verschillen met huidige revisie';
-$lang['diff2'] = 'Toon verschillen tussen geselecteerde revisies';
-$lang['line'] = 'Regel';
-$lang['breadcrumb'] = 'Pad historie';
-$lang['youarehere'] = 'Je bent hier';
-$lang['lastmod'] = 'Laatst gewijzigd';
-$lang['by'] = 'door';
-$lang['deleted'] = 'verwijderd';
-$lang['created'] = 'aangemaakt';
-$lang['restored'] = 'oude revisie hersteld';
-$lang['external_edit'] = 'Externe bewerking';
-$lang['summary'] = 'Samenvatting aanpassen';
-$lang['mail_newpage'] = 'pagina toegevoegd:';
-$lang['mail_changed'] = 'pagina aangepast:';
-$lang['mail_new_user'] = 'nieuwe gebruiker:';
-$lang['mail_upload'] = 'bestand geüpload:';
-$lang['nosmblinks'] = 'Linken naar Windows shares werkt alleen in Microsoft Internet Explorer.\nJe kan de link wel kopiëren en plakken.';
-$lang['qb_alert'] = 'Voer de tekst in die je wilt opmaken.\nDe tekst wordt toegevoegd aan het eind van het document.';
-$lang['qb_bold'] = 'Vette tekst';
-$lang['qb_italic'] = 'Cursieve tekst';
-$lang['qb_underl'] = 'Onderstreepte tekst';
-$lang['qb_code'] = 'Code tekst';
-$lang['qb_strike'] = 'Doorgestreepte tekst';
-$lang['qb_h1'] = 'Niveau 1 kop';
-$lang['qb_h2'] = 'Niveau 2 kop';
-$lang['qb_h3'] = 'Niveau 3 kop';
-$lang['qb_h4'] = 'Niveau 4 kop';
-$lang['qb_h5'] = 'Niveau 5 kop';
-$lang['qb_link'] = 'Interne link';
-$lang['qb_extlink'] = 'Externe link';
-$lang['qb_hr'] = 'Horizontale lijn';
-$lang['qb_ol'] = 'Geordende lijst item';
-$lang['qb_ul'] = 'Ongeordende lijst item';
-$lang['qb_media'] = 'Voeg plaatjes en andere bestanden toe';
-$lang['qb_sig'] = 'Handtekening invoegen';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Speciale tekens';
-$lang['del_confirm'] = 'Dit item verwijderen?';
-$lang['admin_register'] = 'Nieuwe gebruiker toevoegen';
-$lang['metaedit'] = 'Edit Metadata';
-$lang['metasaveerr'] = 'Writing metadata failed';
-$lang['metasaveok'] = 'Metadata saved';
-$lang['img_backto'] = 'Terug naar';
-$lang['img_title'] = 'Titel';
-$lang['img_caption'] = 'Bijschrift';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Bestandsnaam';
-$lang['img_fsize'] = 'Grootte';
-$lang['img_artist'] = 'Fotograaf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formaat';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Trefwoorden';
-$lang['subscribe_success'] = '%s toegevoegd aan de lijst voor %s';
-$lang['subscribe_error'] = 'Fout bij toevoegen van %s aan de lijst voor %s';
-$lang['subscribe_noaddress'] = 'Er is geen adres dat overeenkomt met uw login, u kan niet toegevoegd worden aan de lijst';
-$lang['unsubscribe_success'] = '%s verwijderd van de lijst voor %s';
-$lang['unsubscribe_error'] = 'Fout bij verwijderen van %s van de lijst voor %s';
-$lang['authmodfailed'] = 'Ongeldige gebruikers authenticatie configuratie. Informeer uw Wiki Beheerder.';
-$lang['authtempfail'] = 'Gebruikers authenticatie is tijdelijk niet beschikbaar. Als deze situatie zich voort blijft doen, informeer dan uw Wiki Beheerder.';
-$lang['i_chooselang'] = 'Kies uw taal';
-$lang['i_installer'] = 'DokuWiki Installer';
-$lang['i_wikiname'] = 'Wiki naam';
-$lang['i_enableacl'] = 'ACLs inschakelen (aanbevolen)';
-$lang['i_superuser'] = 'Superuser';
-$lang['i_problems'] = 'De installer vond verscheidene problemen, hieronder aangegeven. U dient deze te verhelpen alvorens u door kunt gaan.';
-$lang['i_modified'] = 'Wegens veiligheidsoverwegingen werkt dit script alleen met nieuwe en onaangepaste Dokuwiki installaties. Pak de bestanden opnieuw uit of raadpleeg de <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installatie instructies</a>';
-$lang['i_funcna'] = 'PHP functie <code>%s</code> is niet beschikbaar. Wellicht heeft uw hosting provder deze uitgeschakeld?';
-$lang['i_phpver'] = 'Uw PHP versie <code>%s</code> is lager dan de vereiste <code>%s</code>. U dient PHP te upgraden.';
-$lang['i_permfail'] = '<code>%s</code> is niet schrijfbaar voor DokuWiki. U dient de permissieinstellingen van deze directory aan te passen.';
-$lang['i_confexists'] = '<code>%s</code> bestaat reeds';
-$lang['i_writeerr'] = 'Niet mogelijk om <code>%s</code> aante maken. U dient de directory/bestands permissies te controleren en de file handmatig aan te maken.';
-$lang['i_badhash'] = 'Onbekende of aangepaste dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - onjuiste of lege waarde';
-$lang['i_success'] = 'De configuratie is succesvol afgerond. U kunt nu het bestand install.php verwijderen. Ga naar <a href="doku.php">uw nieuwe DokuWiki</a>.';
-$lang['i_failure'] = 'Enkele fouten deden zich voor tijdens het schrijven naar de configuratie bestanden. U zult deze dienen aan te passen alvorens u gebruik kunt maken van <a href="doku.php">uw nieuwe DokuWiki</a>.';
-$lang['i_policy'] = 'Initieel ACL beleid';
-$lang['i_pol0'] = 'Open Wiki (lezen, schrijven, uploaden voor iedereen)';
-$lang['i_pol1'] = 'Publieke Wiki (lezen voor iedereen, schrijven en uploaden voor geregistreerde gebruikers)';
-$lang['i_pol2'] = 'Besloten Wiki (lezen, schrijven en uploaden alleen voor geregistreerde gebruikers)';
-$lang['i_retry'] = 'Opnieuw';
+<?php
+/**
+ * dutch language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author François Kooman <fkooman.tuxed.net>
+ * @author Jack van Klaren <dokuwiki at afentoe.xs4all.nl>
+ * @author Riny Heijdendael <riny at heijdendael.nl>
+ * @author Koen Huybrechts <huybkoen at gmail.com>
+ * @author Wouter Schoot <wouter at schoot.org>
+ * @author John de Graaff <john at de-graaff.net>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Pagina aanpassen';
+$lang['btn_source'] = 'Toon pagina broncode';
+$lang['btn_show'] = 'Toon pagina';
+$lang['btn_create'] = 'Maak deze pagina aan';
+$lang['btn_search'] = 'Zoeken';
+$lang['btn_save'] = 'Opslaan';
+$lang['btn_preview'] = 'Voorbeeld';
+$lang['btn_top'] = 'Terug naar boven';
+$lang['btn_newer'] = '<< recenter';
+$lang['btn_older'] = 'ouder >>';
+$lang['btn_revs'] = 'Oude revisies';
+$lang['btn_recent'] = 'Recente aanpassingen';
+$lang['btn_upload'] = 'Upload';
+$lang['btn_cancel'] = 'Annuleren';
+$lang['btn_index'] = 'Index';
+$lang['btn_secedit'] = 'Aanpassen';
+$lang['btn_login'] = 'Inloggen';
+$lang['btn_logout'] = 'Uitloggen';
+$lang['btn_admin'] = 'Beheer';
+$lang['btn_update'] = 'Bijwerken';
+$lang['btn_delete'] = 'Verwijder';
+$lang['btn_back'] = 'Terug';
+$lang['btn_backlink'] = 'Referenties';
+$lang['btn_backtomedia'] = 'Terug naar Bestand selectie';
+$lang['btn_subscribe'] = 'Volg wijzigingen';
+$lang['btn_unsubscribe'] = 'Stop volgen wijzigingen';
+$lang['btn_subscribens'] = 'Inschrijven Namespace Veranderingen';
+$lang['btn_unsubscribens'] = 'Uitschrijven Namespace Veranderingen';
+$lang['btn_profile'] = 'Profiel Aanpassen';
+$lang['btn_reset'] = 'Wissen';
+$lang['btn_resendpwd'] = 'Stuur een nieuw wachtwoord';
+$lang['btn_draft'] = 'Bewerk concept';
+$lang['btn_recover'] = 'Herstel concept';
+$lang['btn_draftdel'] = 'Verwijder concept';
+$lang['loggedinas'] = 'Ingelogd als';
+$lang['user'] = 'Gebruikersnaam';
+$lang['pass'] = 'Wachtwoord';
+$lang['newpass'] = 'Nieuw wachtwoord';
+$lang['oldpass'] = 'Bevestig huidig wachtwoord';
+$lang['passchk'] = 'nogmaals';
+$lang['remember'] = 'Bewaar';
+$lang['fullname'] = 'Volledige naam';
+$lang['email'] = 'E-mail';
+$lang['register'] = 'Registreren';
+$lang['profile'] = 'Gebruikersprofiel';
+$lang['badlogin'] = 'Sorry, gebruikersnaam of wachtwoord onjuist';
+$lang['minoredit'] = 'Kleine wijziging';
+$lang['draftdate'] = 'Concept automatisch opgeslagen op';
+$lang['regmissing'] = 'Vul al de velden in';
+$lang['reguexists'] = 'Er bestaat al een gebruiker met deze loginnaam.';
+$lang['regsuccess'] = 'De gebruiker is aangemaakt. Het wachtwoord is per e-mail verzonden.';
+$lang['regsuccess2'] = 'De gebruiker is aangemaakt.';
+$lang['regmailfail'] = 'Het lijkt erop dat het sturen van de wachtwoordmail mislukt is. Neem a.u.b. contact op met de beheerder!';
+$lang['regbadmail'] = 'Het opgegeven e-mailadres lijkt ongeldig - als je denkt dat dit niet klopt neem dan contact op met de beheerder.';
+$lang['regbadpass'] = 'De twee ingevoerde wachtwoorden zijn niet identiek. Probeer het nog eens.';
+$lang['regpwmail'] = 'Je DokuWiki wachtwoord';
+$lang['reghere'] = 'Je hebt nog geen account? Vraag er eentje aan';
+$lang['profna'] = 'Deze wiki ondersteunt geen profielwijzigingen';
+$lang['profnochange'] = 'Geen wijzigingen, niets gedaan';
+$lang['profnoempty'] = 'Een lege gebruikersnaam of e-mailadres is niet toegestaan';
+$lang['profchanged'] = 'Gebruikersprofiel succesvol aangepast';
+$lang['pwdforget'] = 'Je wachtwoord vergeten? Vraag een nieuw wachtwoord aan';
+$lang['resendna'] = 'Deze wiki ondersteunt niet het verzenden van wachtwoorden';
+$lang['resendpwd'] = 'Stuur een nieuw wachtwoord voor';
+$lang['resendpwdmissing'] = 'Sorry, je moet alle velden invullen';
+$lang['resendpwdnouser'] = 'Sorry, we kunnen deze gebruikersnaam niet vinden in onze database';
+$lang['resendpwdbadauth'] = 'Sorry, deze authentiecatiecode is niet geldig. Controleer of u de volledige bevestigings-link gebruikt.';
+$lang['resendpwdconfirm'] = 'Een bevestigings-link is verzonden per e-mail';
+$lang['resendpwdsuccess'] = 'Je nieuwe wachtwoord is per e-mail verzonden';
+$lang['txt_upload'] = 'Selecteer een bestand om te uploaden';
+$lang['txt_filename'] = 'Vul wiki-naam in (optioneel)';
+$lang['txt_overwrt'] = 'Overschrijf bestaand bestand';
+$lang['lockedby'] = 'Momenteel in gebruik door';
+$lang['lockexpire'] = 'Exclusief gebruiksrecht vervalt op';
+$lang['willexpire'] = 'Je exclusieve gebruiksrecht voor het aanpassen van deze pagina verloopt over een minuut.\nOm problemen te voorkomen klik op de Voorbeeld knop om de exclusieve gebruiksrechten te verlengen.';
+$lang['notsavedyet'] = 'Er zijn op dit moment wijzigingen die nog niet zijn opgeslagen, deze zullen verloren gaan.\nWeet je zeker dat je wilt doorgaan?';
+$lang['rssfailed'] = 'Er is een fout opgetreden bij het ophalen van de feed: ';
+$lang['nothingfound'] = 'Er werd niets gevonden.';
+$lang['mediaselect'] = 'Bestand selectie';
+$lang['fileupload'] = 'Bestand upload';
+$lang['uploadsucc'] = 'Upload geslaagd';
+$lang['uploadfail'] = 'Upload mislukt. Misschien verkeerde permissies?';
+$lang['uploadwrong'] = 'Upload mislukt. Deze file-extensie is verboden';
+$lang['uploadexist'] = 'Bestand bestaat reeds. Er is niets gewijzigd.';
+$lang['uploadbadcontent'] = 'Het geüploade bestand voldoet niet aan de %s bestandsextensie.';
+$lang['uploadspam'] = 'De upload is geblokkeerd door de spam blacklist.';
+$lang['uploadxss'] = 'De upload is geblokkeerd wegens mogelijk onveilige inhoud.';
+$lang['deletesucc'] = 'Het bestand "%s" is verwijderd.';
+$lang['deletefail'] = '"%s" kan niet worden verwijderd - controleer permissies.';
+$lang['mediainuse'] = 'Het bestand "%s" is niet verwijderd - het is nog in gebruik.';
+$lang['namespaces'] = 'Namespaces';
+$lang['mediafiles'] = 'Beschikbare bestanden in';
+$lang['js']['keepopen'] = 'Houd scherm open bij selectie';
+$lang['js']['hidedetails'] = 'Verberg details';
+$lang['mediausage'] = 'Gebruik de volgende syntax om aan het bestand te refereren';
+$lang['mediaview'] = 'Bekijk het orginele bestand';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Upload een bestand naar de huidige namespace. Om een subnamespace aan te maken, voegt u bij het "Upload als" veld een namespace in, gescheiden met dubbele-punten.';
+$lang['mediaextchange'] = 'Bestandsextensie veranderd van .%s naar .%s!';
+$lang['reference'] = 'Referenties voor';
+$lang['ref_inuse'] = 'Het bestand kan niet worden verwijderd, omdat het nog in gebruik is op de volgende pagina\'s:';
+$lang['ref_hidden'] = 'Enkele referenties staan op pagina\'s waarvoor je geen lees permissie hebt';
+$lang['hits'] = 'Hits';
+$lang['quickhits'] = 'Overeenkomende pagina namen';
+$lang['toc'] = 'Inhoudsopgave';
+$lang['current'] = 'huidige';
+$lang['yours'] = 'Jouw versie';
+$lang['diff'] = 'Toon verschillen met huidige revisie';
+$lang['diff2'] = 'Toon verschillen tussen geselecteerde revisies';
+$lang['line'] = 'Regel';
+$lang['breadcrumb'] = 'Pad historie';
+$lang['youarehere'] = 'Je bent hier';
+$lang['lastmod'] = 'Laatst gewijzigd';
+$lang['by'] = 'door';
+$lang['deleted'] = 'verwijderd';
+$lang['created'] = 'aangemaakt';
+$lang['restored'] = 'oude revisie hersteld';
+$lang['external_edit'] = 'Externe bewerking';
+$lang['summary'] = 'Samenvatting aanpassen';
+$lang['mail_newpage'] = 'pagina toegevoegd:';
+$lang['mail_changed'] = 'pagina aangepast:';
+$lang['mail_new_user'] = 'nieuwe gebruiker:';
+$lang['mail_upload'] = 'bestand geüpload:';
+$lang['nosmblinks'] = 'Linken naar Windows shares werkt alleen in Microsoft Internet Explorer.\nJe kan de link wel kopiëren en plakken.';
+$lang['qb_alert'] = 'Voer de tekst in die je wilt opmaken.\nDe tekst wordt toegevoegd aan het eind van het document.';
+$lang['qb_bold'] = 'Vette tekst';
+$lang['qb_italic'] = 'Cursieve tekst';
+$lang['qb_underl'] = 'Onderstreepte tekst';
+$lang['qb_code'] = 'Code tekst';
+$lang['qb_strike'] = 'Doorgestreepte tekst';
+$lang['qb_h1'] = 'Niveau 1 kop';
+$lang['qb_h2'] = 'Niveau 2 kop';
+$lang['qb_h3'] = 'Niveau 3 kop';
+$lang['qb_h4'] = 'Niveau 4 kop';
+$lang['qb_h5'] = 'Niveau 5 kop';
+$lang['qb_link'] = 'Interne link';
+$lang['qb_extlink'] = 'Externe link';
+$lang['qb_hr'] = 'Horizontale lijn';
+$lang['qb_ol'] = 'Geordende lijst item';
+$lang['qb_ul'] = 'Ongeordende lijst item';
+$lang['qb_media'] = 'Voeg plaatjes en andere bestanden toe';
+$lang['qb_sig'] = 'Handtekening invoegen';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Speciale tekens';
+$lang['del_confirm'] = 'Dit item verwijderen?';
+$lang['admin_register'] = 'Nieuwe gebruiker toevoegen';
+$lang['metaedit'] = 'Edit Metadata';
+$lang['metasaveerr'] = 'Writing metadata failed';
+$lang['metasaveok'] = 'Metadata saved';
+$lang['img_backto'] = 'Terug naar';
+$lang['img_title'] = 'Titel';
+$lang['img_caption'] = 'Bijschrift';
+$lang['img_date'] = 'Datum';
+$lang['img_fname'] = 'Bestandsnaam';
+$lang['img_fsize'] = 'Grootte';
+$lang['img_artist'] = 'Fotograaf';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Formaat';
+$lang['img_camera'] = 'Camera';
+$lang['img_keywords'] = 'Trefwoorden';
+$lang['subscribe_success'] = '%s toegevoegd aan de lijst voor %s';
+$lang['subscribe_error'] = 'Fout bij toevoegen van %s aan de lijst voor %s';
+$lang['subscribe_noaddress'] = 'Er is geen adres dat overeenkomt met uw login, u kan niet toegevoegd worden aan de lijst';
+$lang['unsubscribe_success'] = '%s verwijderd van de lijst voor %s';
+$lang['unsubscribe_error'] = 'Fout bij verwijderen van %s van de lijst voor %s';
+$lang['authmodfailed'] = 'Ongeldige gebruikers authenticatie configuratie. Informeer uw Wiki Beheerder.';
+$lang['authtempfail'] = 'Gebruikers authenticatie is tijdelijk niet beschikbaar. Als deze situatie zich voort blijft doen, informeer dan uw Wiki Beheerder.';
+$lang['i_chooselang'] = 'Kies uw taal';
+$lang['i_installer'] = 'DokuWiki Installer';
+$lang['i_wikiname'] = 'Wiki naam';
+$lang['i_enableacl'] = 'ACLs inschakelen (aanbevolen)';
+$lang['i_superuser'] = 'Superuser';
+$lang['i_problems'] = 'De installer vond verscheidene problemen, hieronder aangegeven. U dient deze te verhelpen alvorens u door kunt gaan.';
+$lang['i_modified'] = 'Wegens veiligheidsoverwegingen werkt dit script alleen met nieuwe en onaangepaste Dokuwiki installaties. Pak de bestanden opnieuw uit of raadpleeg de <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installatie instructies</a>';
+$lang['i_funcna'] = 'PHP functie <code>%s</code> is niet beschikbaar. Wellicht heeft uw hosting provder deze uitgeschakeld?';
+$lang['i_phpver'] = 'Uw PHP versie <code>%s</code> is lager dan de vereiste <code>%s</code>. U dient PHP te upgraden.';
+$lang['i_permfail'] = '<code>%s</code> is niet schrijfbaar voor DokuWiki. U dient de permissieinstellingen van deze directory aan te passen.';
+$lang['i_confexists'] = '<code>%s</code> bestaat reeds';
+$lang['i_writeerr'] = 'Niet mogelijk om <code>%s</code> aante maken. U dient de directory/bestands permissies te controleren en de file handmatig aan te maken.';
+$lang['i_badhash'] = 'Onbekende of aangepaste dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - onjuiste of lege waarde';
+$lang['i_success'] = 'De configuratie is succesvol afgerond. U kunt nu het bestand install.php verwijderen. Ga naar <a href="doku.php">uw nieuwe DokuWiki</a>.';
+$lang['i_failure'] = 'Enkele fouten deden zich voor tijdens het schrijven naar de configuratie bestanden. U zult deze dienen aan te passen alvorens u gebruik kunt maken van <a href="doku.php">uw nieuwe DokuWiki</a>.';
+$lang['i_policy'] = 'Initieel ACL beleid';
+$lang['i_pol0'] = 'Open Wiki (lezen, schrijven, uploaden voor iedereen)';
+$lang['i_pol1'] = 'Publieke Wiki (lezen voor iedereen, schrijven en uploaden voor geregistreerde gebruikers)';
+$lang['i_pol2'] = 'Besloten Wiki (lezen, schrijven en uploaden alleen voor geregistreerde gebruikers)';
+$lang['i_retry'] = 'Opnieuw';
Modified: site/trunk/www-root/wiki/inc/lang/nl/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Pagina in exclusief gebruik ======
-
-Deze pagina wordt momenteel aangepast door een andere gebruiker. Gelieve
-te wachten tot de gebruiker klaar is met aanpassen of totdat het gebruiksrecht
-vervalt.
+====== Pagina in exclusief gebruik ======
+
+Deze pagina wordt momenteel aangepast door een andere gebruiker. Gelieve
+te wachten tot de gebruiker klaar is met aanpassen of totdat het gebruiksrecht
+vervalt.
Modified: site/trunk/www-root/wiki/inc/lang/nl/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Login ======
-
-Je bent op dit moment niet ingelogd! Voer je login-gegevens hieronder in om in te loggen.
-Je browser moet cookies accepteren om in te kunnen loggen.
+====== Login ======
+
+Je bent op dit moment niet ingelogd! Voer je login-gegevens hieronder in om in te loggen.
+Je browser moet cookies accepteren om in te kunnen loggen.
Modified: site/trunk/www-root/wiki/inc/lang/nl/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Er is een pagina in je DokuWiki toegevoegd of gewijzigd. Hier zijn de details
-
-Datum : @DATE@
-Browser : @BROWSER@
-IP-Adres : @IPADDRESS@
-Hostname : @HOSTNAME@
-Oude revisie : @OLDPAGE@
-Nieuwe revisie: @NEWPAGE@
-Samenvatting : @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-Deze mail werd gegenereerd door DokuWiki op
- at DOKUWIKIURL@
+Er is een pagina in je DokuWiki toegevoegd of gewijzigd. Hier zijn de details
+
+Datum : @DATE@
+Browser : @BROWSER@
+IP-Adres : @IPADDRESS@
+Hostname : @HOSTNAME@
+Oude revisie : @OLDPAGE@
+Nieuwe revisie: @NEWPAGE@
+Samenvatting : @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+Deze mail werd gegenereerd door DokuWiki op
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/nl/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Dit onderwerp bestaat nog niet======
-
-De pagina over dit onderwerp bestaat nog niet. Aanmaken kan door op de ''Pagina aanpassen'' te klikken.
+======Dit onderwerp bestaat nog niet======
+
+De pagina over dit onderwerp bestaat nog niet. Aanmaken kan door op de ''Pagina aanpassen'' te klikken.
Modified: site/trunk/www-root/wiki/inc/lang/nl/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Revisie bestaat niet======
-
-De opgegeven revisie bestaat niet. Klik op ''Oude revisies'' voor een lijst van oude revisies van dit document.
-
+======Revisie bestaat niet======
+
+De opgegeven revisie bestaat niet. Klik op ''Oude revisies'' voor een lijst van oude revisies van dit document.
+
Modified: site/trunk/www-root/wiki/inc/lang/nl/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hallo @FULLNAME@!
-
-Hier is je gebruikersinformatie for @TITLE@ op @DOKUWIKIURL@
-
-Gebruikersnaam: @LOGIN@
-Wachtwoord : @PASSWORD@
-
---
-Deze mail werd gegenereerd door DokuWiki op
- at DOKUWIKIURL@
+Hallo @FULLNAME@!
+
+Hier is je gebruikersinformatie for @TITLE@ op @DOKUWIKIURL@
+
+Gebruikersnaam: @LOGIN@
+Wachtwoord : @PASSWORD@
+
+--
+Deze mail werd gegenereerd door DokuWiki op
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/nl/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Preview======
-
-Dit is een preview van de tekst zoals hij er uit komt te zien. Let op: het is nog **niet** opgeslagen!
-
+======Preview======
+
+Dit is een preview van de tekst zoals hij er uit komt te zien. Let op: het is nog **niet** opgeslagen!
+
Modified: site/trunk/www-root/wiki/inc/lang/nl/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Hoi @FULLNAME@!
-
-Iemand heeft een nieuw wachtwoord aangevraagd voor je @TITLE@ login op @DOKUWIKIURL@
-
-Als je geen nieuw wachtwoord hebt aangevraagd kunt u deze e-mail negeren.
-
-Om te bevestigen dat u inderdaad een nieuw wachtwoord wil, volgt u de volgende link.
-
- at CONFIRM@
-
---
-Deze mail werd gegenereerd door DokuWiki op
- at DOKUWIKIURL@
+Hoi @FULLNAME@!
+
+Iemand heeft een nieuw wachtwoord aangevraagd voor je @TITLE@ login op @DOKUWIKIURL@
+
+Als je geen nieuw wachtwoord hebt aangevraagd kunt u deze e-mail negeren.
+
+Om te bevestigen dat u inderdaad een nieuw wachtwoord wil, volgt u de volgende link.
+
+ at CONFIRM@
+
+--
+Deze mail werd gegenereerd door DokuWiki op
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/nl/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Deze pagina is niet beschrijfbaar. Je kan alleen de broncode bekijken maar niks veranderen. Neem contact op met de beheerder als je denkt dat dit niet klopt.
-
+Deze pagina is niet beschrijfbaar. Je kan alleen de broncode bekijken maar niks veranderen. Neem contact op met de beheerder als je denkt dat dit niet klopt.
+
Modified: site/trunk/www-root/wiki/inc/lang/nl/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Recente wijzigingen======
-
-De volgende pagina's zijn recent aangepast.
+======Recente wijzigingen======
+
+De volgende pagina's zijn recent aangepast.
Modified: site/trunk/www-root/wiki/inc/lang/nl/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Registreer als nieuwe gebruiker ======
-
-Vul alle informatie hieronder in om een nieuw account voor deze wiki aan te maken.
-Zorg dat een **geldig e-mailadres** opgegeven wordt - het wachtwoord wordt hierheen gezonden. De gebruikersnaam moet een geldige [[doku>wiki:pagename|pagename]] zijn.
-
+====== Registreer als nieuwe gebruiker ======
+
+Vul alle informatie hieronder in om een nieuw account voor deze wiki aan te maken.
+Zorg dat een **geldig e-mailadres** opgegeven wordt - het wachtwoord wordt hierheen gezonden. De gebruikersnaam moet een geldige [[doku>wiki:pagename|pagename]] zijn.
+
Modified: site/trunk/www-root/wiki/inc/lang/nl/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Een nieuwe gebruiker heeft zich geregistreerd. Dit zijn de details:
-
-Gebruikersnaam : @NEWUSER@
-Volledige naam : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Datum : @DATE@
-Browser : @BROWSER@
-IP-Adres : @IPADDRESS@
-Hostnaam : @HOSTNAME@
-
---
-Dit bericht is gegenereerd door DokuWiki op
+Een nieuwe gebruiker heeft zich geregistreerd. Dit zijn de details:
+
+Gebruikersnaam : @NEWUSER@
+Volledige naam : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Datum : @DATE@
+Browser : @BROWSER@
+IP-Adres : @IPADDRESS@
+Hostnaam : @HOSTNAME@
+
+--
+Dit bericht is gegenereerd door DokuWiki op
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/nl/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-==== Verstuur een nieuw wachtwoord =====
-
-Voer uw gebruikersnaam in het formulier hieronder in om een nieuw wachtwoord aan te vragen voor deze wiki.
+==== Verstuur een nieuw wachtwoord =====
+
+Voer uw gebruikersnaam in het formulier hieronder in om een nieuw wachtwoord aan te vragen voor deze wiki.
Een bevestigings link zal worden verzonden naar het geregistreerde e-mail adres.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/nl/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Oude revisies======
-
-Dit zijn de oude revisies van het document. Om terug te keren naar een oude revisie selecteer hem hieronder en klik op de ''Pagina aanpassen'' en vervolgens op ''Opslaan''.
-
+======Oude revisies======
+
+Dit zijn de oude revisies van het document. Om terug te keren naar een oude revisie selecteer hem hieronder en klik op de ''Pagina aanpassen'' en vervolgens op ''Opslaan''.
+
Modified: site/trunk/www-root/wiki/inc/lang/nl/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Zoeken======
-
-Hieronder zijn de resultaten van de zoekopdracht. Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Pagina aanpassen''.
-
-=====Resultaten=====
+======Zoeken======
+
+Hieronder zijn de resultaten van de zoekopdracht. Niks gevonden? Maak een nieuwe pagina met als naam je zoekopdracht. Klik hiervoor op ''Pagina aanpassen''.
+
+=====Resultaten=====
Modified: site/trunk/www-root/wiki/inc/lang/nl/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Dit is een oude revisie van het document!**
-----
+**Dit is een oude revisie van het document!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/nl/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,37 +1,37 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-aan
-als
-bij
-dan
-dat
-die
-dit
-een
-had
-heb
-hem
-het
-hij
-hoe
-hun
-kan
-men
-met
-mij
-nog
-ons
-ook
-tot
-uit
-van
-was
-wat
-wel
-wij
-zal
-zei
-zij
-zou
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+aan
+als
+bij
+dan
+dat
+die
+dit
+een
+had
+heb
+hem
+het
+hij
+hoe
+hun
+kan
+men
+met
+mij
+nog
+ons
+ook
+tot
+uit
+van
+was
+wat
+wel
+wij
+zal
+zei
+zij
+zou
Modified: site/trunk/www-root/wiki/inc/lang/nl/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Hallo!
-
-De pagina @PAGE@ op de @TITLE@ wiki is gewijzigd.
-Hier zijn de aanpassingen:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Om deze berichten niet meer te ontvangen van @DOKUWIKIURL@ , ga dan naar
- at NEWPAGE@
-en kies 'Stop volgen wijzigingen'.
-
---
-Dit bericht is gegenereerd door DokuWiki op
+Hallo!
+
+De pagina @PAGE@ op de @TITLE@ wiki is gewijzigd.
+Hier zijn de aanpassingen:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Om deze berichten niet meer te ontvangen van @DOKUWIKIURL@ , ga dan naar
+ at NEWPAGE@
+en kies 'Stop volgen wijzigingen'.
+
+--
+Dit bericht is gegenereerd door DokuWiki op
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/nl/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-===== Wijzig uw account profiel =====
-
+===== Wijzig uw account profiel =====
+
U hoeft enkel de velden aan te passen die u wilt wijzigen. Uw gebruikersnaam is niet aan te passen.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/nl/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Er is een bestand geüpload naar uw DokuWiki. Hier zijn de details;
-
-Bestand : @MEDIA@
-Datum : @DATE@
-Browser : @BROWSER@
-IP-Adres : @IPADDRESS@
-Hostnaam : @HOSTNAME@
-Grootte : @SIZE@
-MIME Type : @MIME@
-Gebruiker : @USER@
-
---
-Dit bericht is gegenereerd door DokuWiki op
+Er is een bestand geüpload naar uw DokuWiki. Hier zijn de details;
+
+Bestand : @MEDIA@
+Datum : @DATE@
+Browser : @BROWSER@
+IP-Adres : @IPADDRESS@
+Hostnaam : @HOSTNAME@
+Grootte : @SIZE@
+MIME Type : @MIME@
+Gebruiker : @USER@
+
+--
+Dit bericht is gegenereerd door DokuWiki op
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/nl/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/nl/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/nl/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======SPAM geblokkeerd======
-
-Je wijzigingen zijn **niet** opgeslagen omdat ze een of meer geblokkeerde
-woorden bevatten. Als je probeerde de Wiki te spammen -- Foei stouterd!
-Als je denkt dat dit een fout is neem dan contact op met de beheerder
-van deze Wiki.
-
+======SPAM geblokkeerd======
+
+Je wijzigingen zijn **niet** opgeslagen omdat ze een of meer geblokkeerde
+woorden bevatten. Als je probeerde de Wiki te spammen -- Foei stouterd!
+Als je denkt dat dit een fout is neem dan contact op met de beheerder
+van deze Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administrasjon ======
-
-Nedenfor finner du en liste over administrative oppgaver tilgjengelig i
-DokuWiki.
+====== Administrasjon ======
+
+Nedenfor finner du en liste over administrative oppgaver tilgjengelig i
+DokuWiki.
Modified: site/trunk/www-root/wiki/inc/lang/no/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Tilbakelinker======
-
+======Tilbakelinker======
+
Dette er en liste over sider som ser ut til å linke tilbake til den aktuelle siden.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/no/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Det fins en nyere versjon======
-
-Det fins en nyere versjon av dokumentet du har redigert. Dette kan skje når en annen bruker redigerer dokumentet samtidig med deg.
-
-Legg nøye merke til forskjellene som vises under, og velg deretter hvilken versjon du vil beholde. Om du velger ''**Lagre**'', så kommer din versjon til å lagres. Velg ''**Avbryt**'' for å beholde den nyeste versjonen (ikke din).
-
+======Det fins en nyere versjon======
+
+Det fins en nyere versjon av dokumentet du har redigert. Dette kan skje når en annen bruker redigerer dokumentet samtidig med deg.
+
+Legg nøye merke til forskjellene som vises under, og velg deretter hvilken versjon du vil beholde. Om du velger ''**Lagre**'', så kommer din versjon til å lagres. Velg ''**Avbryt**'' for å beholde den nyeste versjonen (ikke din).
+
Modified: site/trunk/www-root/wiki/inc/lang/no/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Adgang forbudt======
-
-Adgang forbudt. Kanskje du har glemt å logge deg inn?
+======Adgang forbudt======
+
+Adgang forbudt. Kanskje du har glemt å logge deg inn?
Modified: site/trunk/www-root/wiki/inc/lang/no/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Forskjeller======
-
-Her vises forskjeller mellom den valgte versjonen og den nåværende versjonen av dokumentet.
-
+======Forskjeller======
+
+Her vises forskjeller mellom den valgte versjonen og den nåværende versjonen av dokumentet.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Kladdfil funnet ======
-
-Din siste endring av denne siden ble ikke avsluttet riktig. DokuWiki
-lagret automatisk en kladd under ditt arbeid som du nå kan bruke for
-Ã¥ fortsette redigeringen. Nedenfor kan du se de lagrede data.
-
-Vennligst avgjør om du vil //gjennopprette// din tapte sesjon, //slette//
-kladden eller //avbryte// redigeringen.
-
+====== Kladdfil funnet ======
+
+Din siste endring av denne siden ble ikke avsluttet riktig. DokuWiki
+lagret automatisk en kladd under ditt arbeid som du nå kan bruke for
+Ã¥ fortsette redigeringen. Nedenfor kan du se de lagrede data.
+
+Vennligst avgjør om du vil //gjennopprette// din tapte sesjon, //slette//
+kladden eller //avbryte// redigeringen.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Rediger siden og klikk på ''**Lagre**''. Se [[wiki:syntax]] for Wikisyntaks. Rediger siden bare hvis du kan **forbedre** sidens innhold. Hvis du vil teste ut hvordan saker og ting fungerer, kan du gjøre det på [[playground:playground|lekeplassen]].
-
+Rediger siden og klikk på ''**Lagre**''. Se [[wiki:syntax]] for Wikisyntaks. Rediger siden bare hvis du kan **forbedre** sidens innhold. Hvis du vil teste ut hvordan saker og ting fungerer, kan du gjøre det på [[playground:playground|lekeplassen]].
+
Modified: site/trunk/www-root/wiki/inc/lang/no/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Du har hentet en tidligere versjon av dokumentet!** Hvis du lagrer den tidligere versjonen så kommer du til å lage en ny og aktiv versjon med dette innholdet.
-----
+**Du har hentet en tidligere versjon av dokumentet!** Hvis du lagrer den tidligere versjonen så kommer du til å lage en ny og aktiv versjon med dette innholdet.
+----
Modified: site/trunk/www-root/wiki/inc/lang/no/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Indeks ======
-
-Dette er en fortegnelse over alle tilgjengelige sider, sortert etter [[doku>wiki:namespaces|navnerom]].
-
+====== Indeks ======
+
+Dette er en fortegnelse over alle tilgjengelige sider, sortert etter [[doku>wiki:namespaces|navnerom]].
+
Modified: site/trunk/www-root/wiki/inc/lang/no/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,24 +1,24 @@
-<p>Denne siden assisterer under førstegangs installasjon og konfigurasjon av
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mer informasjon for denne
-installasjonen er tilgjengelig på
-<a href="http://wiki.splitbrain.org/wiki:installer">dokumentasjonssiden</a>.</p>
-
-<p>DokuWiki bruker vanlige filer for lagring av wikisider og annen
-informasjon assosiert med disse sidene (f.eks. bilder, søkeindekser, eldre
-revisjoner osv.). For å kunne virke <strong>må</strong> DokuWiki
-ha skrivetilgang til de mapper som lagrer disse filene.
-Denne installasjonen kan ikke sette opp mapperettigheter. Det må normalt
-gjøres direkte fra et kommandoskall, eller om du bruker en leverandør,
-via FTP eller ditt kontrollpanel på tjener (f.eks. cPanel).</p>
-
-<p>Denne installasjonen vil sette opp din DokuWiki-konfigurasjon for
-<acronym title="access control list">ACL</acronym>, som igjen tillater administrator
-innlogging og tilgang til DokuWikiens administratormeny for installasjon av utvidelser,
-brukerbehandling, adgangskontrollbehandling til wikisider og endring av konfigurasjon.
-Det er ikke påkrevd for at DokuWiki skal virke, men det vil gjøre Dokuwiki enklere å
-administrere.</p>
-
-<p>Erfarne brukere eller brukere med spessielle oppsettingskrav bør se på disse lenkene
-for detaljer rundt
-<a href="http://wiki.splitbrain.org/wiki:install">installasjonsinstrukser</a>
-og <a href="http://wiki.splitbrain.org/wiki:config">konfigurasjonsinnstillinger</a>.</p>
+<p>Denne siden assisterer under førstegangs installasjon og konfigurasjon av
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mer informasjon for denne
+installasjonen er tilgjengelig på
+<a href="http://wiki.splitbrain.org/wiki:installer">dokumentasjonssiden</a>.</p>
+
+<p>DokuWiki bruker vanlige filer for lagring av wikisider og annen
+informasjon assosiert med disse sidene (f.eks. bilder, søkeindekser, eldre
+revisjoner osv.). For å kunne virke <strong>må</strong> DokuWiki
+ha skrivetilgang til de mapper som lagrer disse filene.
+Denne installasjonen kan ikke sette opp mapperettigheter. Det må normalt
+gjøres direkte fra et kommandoskall, eller om du bruker en leverandør,
+via FTP eller ditt kontrollpanel på tjener (f.eks. cPanel).</p>
+
+<p>Denne installasjonen vil sette opp din DokuWiki-konfigurasjon for
+<acronym title="access control list">ACL</acronym>, som igjen tillater administrator
+innlogging og tilgang til DokuWikiens administratormeny for installasjon av utvidelser,
+brukerbehandling, adgangskontrollbehandling til wikisider og endring av konfigurasjon.
+Det er ikke påkrevd for at DokuWiki skal virke, men det vil gjøre Dokuwiki enklere å
+administrere.</p>
+
+<p>Erfarne brukere eller brukere med spessielle oppsettingskrav bør se på disse lenkene
+for detaljer rundt
+<a href="http://wiki.splitbrain.org/wiki:install">installasjonsinstrukser</a>
+og <a href="http://wiki.splitbrain.org/wiki:config">konfigurasjonsinnstillinger</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/no/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,211 +1,212 @@
-<?php
-/**
- * Norwegian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Reidar Mosvold <Reidar.Mosvold at hit.no>
- * @author Jorge Barrera Grandon <jorge at digitalwolves.org>
- * @author Rune Rasmussen http://www.syntaxerror.no/
- * @author Thomas Nygreen <nygreen at gmail.com>
- * @author Arild Burud <arildb at met.no>
- * @author Torkill Bruland <torkar-b at online.no>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Rediger denne siden';
-$lang['btn_source'] = 'Vis kildetekst';
-$lang['btn_show'] = 'Vis siden';
-$lang['btn_create'] = 'Lag denne siden';
-$lang['btn_search'] = 'Søk';
-$lang['btn_save'] = 'Lagre';
-$lang['btn_preview'] = 'Forhåndsvis';
-$lang['btn_top'] = 'Til toppen av siden';
-$lang['btn_newer'] = '<< nyere';
-$lang['btn_older'] = 'eldre >>';
-$lang['btn_revs'] = 'Historikk';
-$lang['btn_recent'] = 'Siste endringer';
-$lang['btn_upload'] = 'Last opp';
-$lang['btn_cancel'] = 'Avbryt';
-$lang['btn_index'] = 'Indeks';
-$lang['btn_secedit'] = 'Rediger';
-$lang['btn_login'] = 'Logg inn';
-$lang['btn_logout'] = 'Logg ut';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Oppdater';
-$lang['btn_delete'] = 'Slett';
-$lang['btn_back'] = 'Tilbake';
-$lang['btn_backlink'] = 'Tilbakelinker';
-$lang['btn_backtomedia'] = 'Tilbake til valg av mediafil';
-$lang['btn_subscribe'] = 'Abonner på endringer';
-$lang['btn_unsubscribe'] = 'Ikke abonner på endringer';
-$lang['btn_subscribens'] = 'Abonner på endringer i navnerom';
-$lang['btn_unsubscribens'] = 'Stopp abonnement på endringer i navnerom';
-$lang['btn_profile'] = 'Oppdater profil';
-$lang['btn_reset'] = 'Tilbakestill';
-$lang['btn_resendpwd'] = 'Send nytt passord';
-$lang['btn_draft'] = 'Rediger kladd';
-$lang['btn_recover'] = 'Gjennvinn kladd';
-$lang['btn_draftdel'] = 'Slett kladd';
-$lang['loggedinas'] = 'Innlogget som';
-$lang['user'] = 'Brukernavn';
-$lang['pass'] = 'Passord';
-$lang['newpass'] = 'Nytt passord';
-$lang['oldpass'] = 'Bekreft gjeldende passord';
-$lang['passchk'] = 'Bekreft passord';
-$lang['remember'] = 'Husk meg';
-$lang['fullname'] = 'Fullt navn';
-$lang['email'] = 'E-post';
-$lang['register'] = 'Registrer deg';
-$lang['profile'] = 'Brukerprofil';
-$lang['badlogin'] = 'Ugyldig brukernavn og/eller passord.';
-$lang['minoredit'] = 'Mindre endringer';
-$lang['draftdate'] = 'Kladd autolagret';
-$lang['regmissing'] = 'Vennligst fyll ut alle felt.';
-$lang['reguexists'] = 'Det finnes allerede en konto med dette brukernavnet.';
-$lang['regsuccess'] = 'Brukerkonto har blitt laget og passord har blitt sendt via e-post.';
-$lang['regsuccess2'] = 'Brukeren har blitt laget.';
-$lang['regmailfail'] = 'En feil oppstod da passordet ditt skulle sendes via e-post. Vennligst kontakt administratoren!';
-$lang['regbadmail'] = 'Den angitte e-post adressen ser ut til å være ugyldig. Vennligst kontakt administratoren om du anser dette som feilaktig.';
-$lang['regbadpass'] = 'De to angitte passordene er ikke like, vennligst forsøk igjen.';
-$lang['regpwmail'] = 'Ditt DokuWiki passord';
-$lang['reghere'] = 'Har du ikke en konto enda? Lag deg en';
-$lang['profna'] = 'Denne wikien støtter ikke profilendringer';
-$lang['profnochange'] = 'Ingen endringer, ingenting å gjøre.';
-$lang['profnoempty'] = 'Tomt navn- eller e-postfelt er ikke tillatt.';
-$lang['profchanged'] = 'Brukerprofil ble vellykket oppdatert.';
-$lang['pwdforget'] = 'Glemt ditt passord? FÃ¥ deg et nytt';
-$lang['resendna'] = 'Denne wikien støtter ikke nyutsending.';
-$lang['resendpwd'] = 'Send nytt passord for';
-$lang['resendpwdmissing'] = 'Beklager, du må fylle inn alle felt.';
-$lang['resendpwdnouser'] = 'Beklager, vi kan ikke finne denne brukeren i vår database.';
-$lang['resendpwdbadauth'] = 'Beklager, denne autorisasjonskoden er ikke gyldig. Sjekk at du brukte hele bekreftelseslenken.';
-$lang['resendpwdconfirm'] = 'En bekreftelseslenke er blitt sendt på e-post.';
-$lang['resendpwdsuccess'] = 'Ditt nye passord er blitt sendt på e-post.';
-$lang['txt_upload'] = 'Velg fil som skal lastes opp';
-$lang['txt_filename'] = 'Skriv inn wikinavn (alternativt)';
-$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
-$lang['lockedby'] = 'Stengt av';
-$lang['lockexpire'] = 'Avstengningen opphører';
-$lang['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å opphøre.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
-$lang['notsavedyet'] = 'Ulagrede endringer vil gå tapt.\nVil du fortsette?';
-$lang['rssfailed'] = 'En feil oppstod da denne kilden skulle hentes:';
-$lang['nothingfound'] = 'Ingen data funnet.';
-$lang['mediaselect'] = 'Valg av mediafil';
-$lang['fileupload'] = 'Mediafil Opplasting';
-$lang['uploadsucc'] = 'Opplastingen var vellykket';
-$lang['uploadfail'] = 'Opplastingen var mislykket. Gale rettigheter?';
-$lang['uploadwrong'] = 'Opplastingen ble nektet. Denne filendelsen er ikke tillatt!';
-$lang['uploadexist'] = 'Filen eksisterer. Ingenting har blitt gjort.';
-$lang['uploadbadcontent'] = 'Det opplastede innholdet passer ikke til filendelsen %s.';
-$lang['uploadspam'] = 'Opplastingen ble blokkert av svartelisten for spam.';
-$lang['uploadxss'] = 'Opplastingen ble blokkert på grunn av mulig skadelig innhold.';
-$lang['deletesucc'] = 'Filen "%s" har blitt slettet.';
-$lang['deletefail'] = '"%s" kunne ikke slettes - sjekk rettighetene.';
-$lang['mediainuse'] = 'Filen "%s" har ikke biltt slettet - den er fortsatt i bruk.';
-$lang['namespaces'] = 'Navnerom';
-$lang['mediafiles'] = 'Tilgjengelige filer i';
-$lang['js']['keepopen'] = 'Hold vindu åpent ved valg';
-$lang['js']['hidedetails'] = 'Skjul detaljer';
-$lang['mediausage'] = 'Bruk følgende syntaks til å refferer til denne filen:';
-$lang['mediaview'] = 'Vis original fil';
-$lang['mediaroot'] = 'rot';
-$lang['mediaupload'] = 'Last opp en fil til gjeldende navnerom her. For å opprette undernavnerom, før dem opp før filnavn i "Last opp som" adskilt med kolon.';
-$lang['mediaextchange'] = 'Filendelse endret fra .%s til .%s!';
-$lang['reference'] = 'Referanser for';
-$lang['ref_inuse'] = 'Denne filen kan ikke slettes fordi den er fortsatt i bruk av følgende sider:';
-$lang['ref_hidden'] = 'Noen referanser er på sider du ikke har tilgang til å lese';
-$lang['hits'] = 'Treff';
-$lang['quickhits'] = 'Matchende wikinavn';
-$lang['toc'] = 'Innholdsfortegnelse';
-$lang['current'] = 'nåværende versjon';
-$lang['yours'] = 'Din versjon';
-$lang['diff'] = 'Vis forskjeller mot nåværende versjon';
-$lang['diff2'] = 'Vis forskjeller mellom valgte versjoner';
-$lang['line'] = 'Linje';
-$lang['breadcrumb'] = 'Spor';
-$lang['youarehere'] = 'Du er her';
-$lang['lastmod'] = 'Sist modifisert';
-$lang['by'] = 'av';
-$lang['deleted'] = 'fjernet';
-$lang['created'] = 'opprettet';
-$lang['restored'] = 'gjenopprettet til en tidligere versjon';
-$lang['external_edit'] = 'ekstern redigering';
-$lang['summary'] = 'Redigeringskommentar';
-$lang['mail_newpage'] = 'side lagt til:';
-$lang['mail_changed'] = 'side endret:';
-$lang['mail_new_user'] = 'ny bruker:';
-$lang['mail_upload'] = 'fil opplastet:';
-$lang['nosmblinks'] = 'Lenker til Windows-ressurser fungerer bare i Microsoft sin Internet Explorer.\nDu kan fortsatt kopiere og lime inn lenken.';
-$lang['qb_alert'] = 'Vennligst skriv inn teksten du ønsker å formatere.\nDen vil bli lagt til mot slutten av dokumentet.';
-$lang['qb_bold'] = 'Fet tekst';
-$lang['qb_italic'] = 'Kursiv tekst';
-$lang['qb_underl'] = 'Understreket tekst';
-$lang['qb_code'] = 'Kodetekst';
-$lang['qb_strike'] = 'Gjennomstreket tekst';
-$lang['qb_h1'] = 'Nivå 1 Rubrikk';
-$lang['qb_h2'] = 'Nivå 2 Rubrikk';
-$lang['qb_h3'] = 'Nivå 3 Rubrikk';
-$lang['qb_h4'] = 'Nivå 4 Rubrikk';
-$lang['qb_h5'] = 'Nivå 5 Rubrikk';
-$lang['qb_link'] = 'Intern Lenke';
-$lang['qb_extlink'] = 'Ekstern Lenke';
-$lang['qb_hr'] = 'Horisontal strek';
-$lang['qb_ol'] = 'Punkt for sortert punktliste';
-$lang['qb_ul'] = 'Punkt for usortert punktliste';
-$lang['qb_media'] = 'Legg til bilder og andre filer';
-$lang['qb_sig'] = 'Føy til signatur';
-$lang['qb_smileys'] = 'Humørfjes';
-$lang['qb_chars'] = 'Spesialtegn';
-$lang['del_confirm'] = 'Slett denne oppføringen?';
-$lang['admin_register'] = 'Legg til ny bruker';
-$lang['metaedit'] = 'Rediger Metadata';
-$lang['metasaveerr'] = 'Skriving av metadata feilet';
-$lang['metasaveok'] = 'Metadata lagret';
-$lang['img_backto'] = 'Tilbake til';
-$lang['img_title'] = 'Tittel';
-$lang['img_caption'] = 'Billedtekst';
-$lang['img_date'] = 'Dato';
-$lang['img_fname'] = 'Filnavn';
-$lang['img_fsize'] = 'Størrelse';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Opphavsrett';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Nøkkelord';
-$lang['subscribe_success'] = 'Lagt til %s som abonnent av listen for %s';
-$lang['subscribe_error'] = 'En feil oppstod når %s skulle legges til som abonnent av listen for %s';
-$lang['subscribe_noaddress'] = 'Det er ingen adresse som er assosiert med din login. Du kan dermed ikke bli lagt til som abonnent av listen.';
-$lang['unsubscribe_success'] = 'Fjernet %s som abonnent for listen %s';
-$lang['unsubscribe_error'] = 'En feil oppstod når %s skulle fjernes som abonnent fra listen for %s';
-$lang['authmodfailed'] = 'DÃ¥rlig konfigurert brukerautorisasjon. Vennligst innformer Wiki-admin.';
-$lang['authtempfail'] = 'Brukerautorisasjon er midlertidig utilgjengelig. Om dette vedvarer, vennligst informer Wiki-admin.';
-$lang['i_chooselang'] = 'Velg ditt språk';
-$lang['i_installer'] = 'DokuWiki-installasjon';
-$lang['i_wikiname'] = 'Wikinavn';
-$lang['i_enableacl'] = 'Aktiver ACL (anbefalt)';
-$lang['i_superuser'] = 'Superbruker';
-$lang['i_problems'] = 'Installasjonen oppdaget noen problemer, disse listes nedenfor. Du kan ikke fortsett før du har løst disse.';
-$lang['i_modified'] = 'For sikkerhets skyld vil dette skriptet bare virke med en ny og uendret Dokuwiki-installsjon.
- Du burde enten pakke ut filene på nytt fra den nedlastede pakken, eller konsultere den komplette
- <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki-installasjonsinstruksen</a>';
-$lang['i_funcna'] = 'PHP-funksjonen <code>%s</code> er ikke tilgjengelig. Kanskje din leverandør har deaktivert den av noen grunn?';
-$lang['i_phpver'] = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
-$lang['i_permfail'] = '<code>%s</code> er ikke skrivbar for DokuWiki. Du behøver å fikse rettighetene for denne mappen!';
-$lang['i_confexists'] = '<code>%s</code> eksisterer allerede';
-$lang['i_writeerr'] = 'Kunne ikke opprette <code>%s</code>. Du må sjekke mappe-/filrettigheter og opprette filen manuelt.';
-$lang['i_badhash'] = 'ikke gjenkjent eller modifisert dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - ugyldig eller tom verdi';
-$lang['i_success'] = 'Konfigurasjonen ble vellykket fullført. Du kan slette install.php filen nå. Fortsett til
- <a href="doku.php">din nye DokuWiki</a>.';
-$lang['i_failure'] = 'Noen feil oppstod ved skriving til konfigurasjonsfilene. Du må kanskje fikse de manuelt før
- du kan bruke <a href="doku.php">din nye DokuWiki</a>.';
-$lang['i_policy'] = 'Innledende ACL-politikk';
-$lang['i_pol0'] = 'Ã
pen Wiki (les, skriv og opplasting for alle)';
-$lang['i_pol1'] = 'Offentlig Wiki (les for alle, skriving og opplasting bare for registrerte brukere)';
-$lang['i_pol2'] = 'Lukket Wiki (les, skriv og opplasting bare for registrerte brukere)';
-$lang['i_retry'] = 'Prøv igjen';
+<?php
+/**
+ * Norwegian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Reidar Mosvold <Reidar.Mosvold at hit.no>
+ * @author Jorge Barrera Grandon <jorge at digitalwolves.org>
+ * @author Rune Rasmussen http://www.syntaxerror.no/
+ * @author Thomas Nygreen <nygreen at gmail.com>
+ * @author Arild Burud <arildb at met.no>
+ * @author Torkill Bruland <torkar-b at online.no>
+ * @author Rune M. Andersen <rune.andersen at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Rediger denne siden';
+$lang['btn_source'] = 'Vis kildetekst';
+$lang['btn_show'] = 'Vis siden';
+$lang['btn_create'] = 'Lag denne siden';
+$lang['btn_search'] = 'Søk';
+$lang['btn_save'] = 'Lagre';
+$lang['btn_preview'] = 'Forhåndsvis';
+$lang['btn_top'] = 'Til toppen av siden';
+$lang['btn_newer'] = '<< nyere';
+$lang['btn_older'] = 'eldre >>';
+$lang['btn_revs'] = 'Historikk';
+$lang['btn_recent'] = 'Siste endringer';
+$lang['btn_upload'] = 'Last opp';
+$lang['btn_cancel'] = 'Avbryt';
+$lang['btn_index'] = 'Indeks';
+$lang['btn_secedit'] = 'Rediger';
+$lang['btn_login'] = 'Logg inn';
+$lang['btn_logout'] = 'Logg ut';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Oppdater';
+$lang['btn_delete'] = 'Slett';
+$lang['btn_back'] = 'Tilbake';
+$lang['btn_backlink'] = 'Tilbakelinker';
+$lang['btn_backtomedia'] = 'Tilbake til valg av mediafil';
+$lang['btn_subscribe'] = 'Abonner på endringer';
+$lang['btn_unsubscribe'] = 'Ikke abonner på endringer';
+$lang['btn_subscribens'] = 'Abonner på endringer i navnerom';
+$lang['btn_unsubscribens'] = 'Stopp abonnement på endringer i navnerom';
+$lang['btn_profile'] = 'Oppdater profil';
+$lang['btn_reset'] = 'Tilbakestill';
+$lang['btn_resendpwd'] = 'Send nytt passord';
+$lang['btn_draft'] = 'Rediger kladd';
+$lang['btn_recover'] = 'Gjennvinn kladd';
+$lang['btn_draftdel'] = 'Slett kladd';
+$lang['loggedinas'] = 'Innlogget som';
+$lang['user'] = 'Brukernavn';
+$lang['pass'] = 'Passord';
+$lang['newpass'] = 'Nytt passord';
+$lang['oldpass'] = 'Bekreft gjeldende passord';
+$lang['passchk'] = 'Bekreft passord';
+$lang['remember'] = 'Husk meg';
+$lang['fullname'] = 'Fullt navn';
+$lang['email'] = 'E-post';
+$lang['register'] = 'Registrer deg';
+$lang['profile'] = 'Brukerprofil';
+$lang['badlogin'] = 'Ugyldig brukernavn og/eller passord.';
+$lang['minoredit'] = 'Mindre endringer';
+$lang['draftdate'] = 'Kladd autolagret';
+$lang['regmissing'] = 'Vennligst fyll ut alle felt.';
+$lang['reguexists'] = 'Det finnes allerede en konto med dette brukernavnet.';
+$lang['regsuccess'] = 'Brukerkonto har blitt laget og passord har blitt sendt via e-post.';
+$lang['regsuccess2'] = 'Brukeren har blitt laget.';
+$lang['regmailfail'] = 'En feil oppstod da passordet ditt skulle sendes via e-post. Vennligst kontakt administratoren!';
+$lang['regbadmail'] = 'Den angitte e-post adressen ser ut til å være ugyldig. Vennligst kontakt administratoren om du anser dette som feilaktig.';
+$lang['regbadpass'] = 'De to angitte passordene er ikke like, vennligst forsøk igjen.';
+$lang['regpwmail'] = 'Ditt DokuWiki passord';
+$lang['reghere'] = 'Har du ikke en konto ennå? Lag deg en';
+$lang['profna'] = 'Denne wikien støtter ikke profilendringer';
+$lang['profnochange'] = 'Ingen endringer, ingenting å gjøre.';
+$lang['profnoempty'] = 'Tomt navn- eller e-postfelt er ikke tillatt.';
+$lang['profchanged'] = 'Brukerprofil ble vellykket oppdatert.';
+$lang['pwdforget'] = 'Glemt ditt passord? FÃ¥ deg et nytt';
+$lang['resendna'] = 'Denne wikien støtter ikke nyutsending.';
+$lang['resendpwd'] = 'Send nytt passord for';
+$lang['resendpwdmissing'] = 'Beklager, du må fylle inn alle felt.';
+$lang['resendpwdnouser'] = 'Beklager, vi kan ikke finne denne brukeren i vår database.';
+$lang['resendpwdbadauth'] = 'Beklager, denne autorisasjonskoden er ikke gyldig. Sjekk at du brukte hele bekreftelseslenken.';
+$lang['resendpwdconfirm'] = 'En bekreftelseslenke er blitt sendt på e-post.';
+$lang['resendpwdsuccess'] = 'Ditt nye passord er blitt sendt på e-post.';
+$lang['txt_upload'] = 'Velg fil som skal lastes opp';
+$lang['txt_filename'] = 'Skriv inn wikinavn (alternativt)';
+$lang['txt_overwrt'] = 'Overskriv eksisterende fil';
+$lang['lockedby'] = 'Stengt av';
+$lang['lockexpire'] = 'Avstengningen opphører';
+$lang['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å opphøre.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.';
+$lang['notsavedyet'] = 'Ulagrede endringer vil gå tapt.\nVil du fortsette?';
+$lang['rssfailed'] = 'En feil oppstod da denne kilden skulle hentes:';
+$lang['nothingfound'] = 'Ingen data funnet.';
+$lang['mediaselect'] = 'Valg av mediafil';
+$lang['fileupload'] = 'Mediafil Opplasting';
+$lang['uploadsucc'] = 'Opplastingen var vellykket';
+$lang['uploadfail'] = 'Opplastingen var mislykket. Kanskje feil rettigheter?';
+$lang['uploadwrong'] = 'Opplastingen ble nektet. Denne filendelsen er ikke tillatt!';
+$lang['uploadexist'] = 'Filen eksisterer. Ingenting har blitt gjort.';
+$lang['uploadbadcontent'] = 'Det opplastede innholdet passer ikke til filendelsen %s.';
+$lang['uploadspam'] = 'Opplastingen ble blokkert av svartelisten for spam.';
+$lang['uploadxss'] = 'Opplastingen ble blokkert på grunn av mulig skadelig innhold.';
+$lang['deletesucc'] = 'Filen "%s" har blitt slettet.';
+$lang['deletefail'] = '"%s" kunne ikke slettes - sjekk rettighetene.';
+$lang['mediainuse'] = 'Filen "%s" har ikke biltt slettet - den er fortsatt i bruk.';
+$lang['namespaces'] = 'Navnerom';
+$lang['mediafiles'] = 'Tilgjengelige filer i';
+$lang['js']['keepopen'] = 'Hold vindu åpent ved valg';
+$lang['js']['hidedetails'] = 'Skjul detaljer';
+$lang['mediausage'] = 'Bruk følgende syntaks til å refferer til denne filen:';
+$lang['mediaview'] = 'Vis original fil';
+$lang['mediaroot'] = 'rot';
+$lang['mediaupload'] = 'Last opp en fil til gjeldende navnerom her. For å opprette undernavnerom, før dem opp før filnavn i "Last opp som" adskilt med kolon.';
+$lang['mediaextchange'] = 'Filendelse endret fra .%s til .%s!';
+$lang['reference'] = 'Referanser for';
+$lang['ref_inuse'] = 'Denne filen kan ikke slettes fordi den er fortsatt i bruk av følgende sider:';
+$lang['ref_hidden'] = 'Noen referanser er på sider du ikke har tilgang til å lese';
+$lang['hits'] = 'Treff';
+$lang['quickhits'] = 'Matchende wikinavn';
+$lang['toc'] = 'Innholdsfortegnelse';
+$lang['current'] = 'nåværende versjon';
+$lang['yours'] = 'Din versjon';
+$lang['diff'] = 'Vis forskjeller mot nåværende versjon';
+$lang['diff2'] = 'Vis forskjeller mellom valgte versjoner';
+$lang['line'] = 'Linje';
+$lang['breadcrumb'] = 'Spor';
+$lang['youarehere'] = 'Du er her';
+$lang['lastmod'] = 'Sist modifisert';
+$lang['by'] = 'av';
+$lang['deleted'] = 'fjernet';
+$lang['created'] = 'opprettet';
+$lang['restored'] = 'gjenopprettet til en tidligere versjon';
+$lang['external_edit'] = 'ekstern redigering';
+$lang['summary'] = 'Redigeringskommentar';
+$lang['mail_newpage'] = 'side lagt til:';
+$lang['mail_changed'] = 'side endret:';
+$lang['mail_new_user'] = 'ny bruker:';
+$lang['mail_upload'] = 'fil opplastet:';
+$lang['nosmblinks'] = 'Lenker til Windows-ressurser fungerer bare i Microsoft sin Internet Explorer.\nDu kan fortsatt kopiere og lime inn lenken.';
+$lang['qb_alert'] = 'Vennligst skriv inn teksten du ønsker å formatere.\nDen vil bli lagt til mot slutten av dokumentet.';
+$lang['qb_bold'] = 'Fet tekst';
+$lang['qb_italic'] = 'Kursiv tekst';
+$lang['qb_underl'] = 'Understreket tekst';
+$lang['qb_code'] = 'Kodetekst';
+$lang['qb_strike'] = 'Gjennomstreket tekst';
+$lang['qb_h1'] = 'Overskrift nivå 1';
+$lang['qb_h2'] = 'Overskrift nivå 2';
+$lang['qb_h3'] = 'Overskrift nivå 3';
+$lang['qb_h4'] = 'Overskrift nivå 4';
+$lang['qb_h5'] = 'Overskrift nivå 5';
+$lang['qb_link'] = 'Intern lenke';
+$lang['qb_extlink'] = 'Ekstern lenke';
+$lang['qb_hr'] = 'Horisontal linje';
+$lang['qb_ol'] = 'Sortert listepunkt';
+$lang['qb_ul'] = 'Usortert listepunkt';
+$lang['qb_media'] = 'Legg til bilder og andre filer';
+$lang['qb_sig'] = 'Føy til signatur';
+$lang['qb_smileys'] = 'Smilefjes';
+$lang['qb_chars'] = 'Spesialtegn';
+$lang['del_confirm'] = 'Slett denne oppføringen?';
+$lang['admin_register'] = 'Legg til ny bruker';
+$lang['metaedit'] = 'Rediger metadata';
+$lang['metasaveerr'] = 'Skriving av metadata feilet';
+$lang['metasaveok'] = 'Metadata lagret';
+$lang['img_backto'] = 'Tilbake til';
+$lang['img_title'] = 'Tittel';
+$lang['img_caption'] = 'Bildetekst';
+$lang['img_date'] = 'Dato';
+$lang['img_fname'] = 'Filnavn';
+$lang['img_fsize'] = 'Størrelse';
+$lang['img_artist'] = 'Fotograf';
+$lang['img_copyr'] = 'Opphavsrett';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords'] = 'Nøkkelord';
+$lang['subscribe_success'] = 'Lagt til %s som abonnent av listen for %s';
+$lang['subscribe_error'] = 'En feil oppstod når %s skulle legges til som abonnent av listen for %s';
+$lang['subscribe_noaddress'] = 'Det er ingen adresse assosiert med din login. Du kan dermed ikke bli lagt til som abonnent av listen.';
+$lang['unsubscribe_success'] = 'Fjernet %s som abonnent for listen %s';
+$lang['unsubscribe_error'] = 'En feil oppstod når %s skulle fjernes som abonnent fra listen for %s';
+$lang['authmodfailed'] = 'Feilkonfigurert brukerautorisasjon. Vennligst innformer Wiki-admin.';
+$lang['authtempfail'] = 'Brukerautorisasjon er midlertidig utilgjengelig. Om dette vedvarer, vennligst informer Wiki-admin.';
+$lang['i_chooselang'] = 'Velg ditt språk';
+$lang['i_installer'] = 'DokuWiki-installasjon';
+$lang['i_wikiname'] = 'Wikinavn';
+$lang['i_enableacl'] = 'Aktiver ACL (anbefalt)';
+$lang['i_superuser'] = 'Superbruker';
+$lang['i_problems'] = 'Installasjonen oppdaget noen problemer, disse listes nedenfor. Du kan ikke fortsett før du har løst disse.';
+$lang['i_modified'] = 'For sikkerhets skyld vil dette skriptet bare virke med en ny og uendret Dokuwiki-installsjon.
+ Du bør enten pakke ut filene på nytt fra den nedlastede pakken, eller konsultere den komplette
+ <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki-installasjonsinstruksen</a>';
+$lang['i_funcna'] = 'PHP-funksjonen <code>%s</code> er ikke tilgjengelig. Kanskje din leverandør har deaktivert den av noen grunn?';
+$lang['i_phpver'] = 'Your PHP version <code>%s</code> is lower than the needed <code>%s</code>. You need to upgrade your PHP install.';
+$lang['i_permfail'] = '<code>%s</code> er ikke skrivbar for DokuWiki. Du må fikse rettighetene for denne mappen!';
+$lang['i_confexists'] = '<code>%s</code> eksisterer allerede';
+$lang['i_writeerr'] = 'Kunne ikke opprette <code>%s</code>. Du må sjekke mappe-/filrettigheter og opprette filen manuelt.';
+$lang['i_badhash'] = 'ikke gjenkjent eller modifisert dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - ugyldig eller tom verdi';
+$lang['i_success'] = 'Konfigurasjonen ble vellykket fullført. Du kan slette install.php filen nå. Fortsett til
+ <a href="doku.php">din nye DokuWiki</a>.';
+$lang['i_failure'] = 'En eller flere feil oppstod ved skriving til konfigurasjonsfilene. Du må kanskje fikse dem manuelt før
+ du kan bruke <a href="doku.php">din nye DokuWiki</a>.';
+$lang['i_policy'] = 'Innledende ACL-politikk';
+$lang['i_pol0'] = 'Ã
pen Wiki (les, skriv og opplasting for alle)';
+$lang['i_pol1'] = 'Offentlig Wiki (les for alle, skriving og opplasting bare for registrerte brukere)';
+$lang['i_pol2'] = 'Lukket Wiki (les, skriv og opplasting bare for registrerte brukere)';
+$lang['i_retry'] = 'Prøv igjen';
Modified: site/trunk/www-root/wiki/inc/lang/no/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Dokumentet er låst======
-
-Dette dokumentet er for tiden låst for redigering av en annen bruker. Du må vente til denne brukeren er ferdig med sin redigering, eller til dokumentlåsen opphører å gjelde.
+======Dokumentet er låst======
+
+Dette dokumentet er for tiden låst for redigering av en annen bruker. Du må vente til denne brukeren er ferdig med sin redigering, eller til dokumentlåsen opphører å gjelde.
Modified: site/trunk/www-root/wiki/inc/lang/no/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Logg inn======
-
-Du er ikke innlogget! Angi ditt brukernavn og passord nedenfor for å logge inn. Støtte for såkalte "cookies" må være aktivert i din nettleser for at du skal kunne logge inn.
-
+======Logg inn======
+
+Du er ikke innlogget! Angi ditt brukernavn og passord nedenfor for å logge inn. Støtte for såkalte "cookies" må være aktivert i din nettleser for at du skal kunne logge inn.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-En side i din DokuWiki har blitt lagt til eller blitt endret. Informasjon om endringen:
-
-Dato : @DATE@
-Nettleser : @BROWSER@
-IP-adresse : @IPADDRESS@
-Vertsnavn : @HOSTNAME@
-Tidligere versjon : @OLDPAGE@
-Aktuell versjon : @NEWPAGE@
-Redigeringskommentar : @SUMMARY@
-Bruker : @USER@
-
- at DIFF@
-
-
---
-Denne meldingen ble laget av DokuWiki
- at DOKUWIKIURL@
+En side i din DokuWiki har blitt lagt til eller blitt endret. Informasjon om endringen:
+
+Dato : @DATE@
+Nettleser : @BROWSER@
+IP-adresse : @IPADDRESS@
+Vertsnavn : @HOSTNAME@
+Tidligere versjon : @OLDPAGE@
+Aktuell versjon : @NEWPAGE@
+Redigeringskommentar : @SUMMARY@
+Bruker : @USER@
+
+ at DIFF@
+
+
+--
+Denne meldingen ble laget av DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/no/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Det fins ikke noe innhold======
-
-Du har klikket på en lenke til et emne som ikke finnes ennå. Du kan skape det gjennom å klikke på ''**Lag denne siden**''.
+======Det fins ikke noe innhold======
+
+Du har klikket på en lenke til et emne som ikke finnes ennå. Du kan skape det gjennom å klikke på ''**Lag denne siden**''.
Modified: site/trunk/www-root/wiki/inc/lang/no/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Det fins ingen slik versjon======
-
-Den angitte versjonen fins ikke. Anvend ''**Historikk**'' for en oversikt over de versjoner som fins av dette dokumentet.
-
+======Det fins ingen slik versjon======
+
+Den angitte versjonen fins ikke. Bruk ''**Historikk**'' for en oversikt over de versjoner som fins av dette dokumentet.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hei @FULLNAME@!
-
-Her er dine brukeropplysninger for @TITLE@ på @DOKUWIKIURL@
-
-Brukernavn : @LOGIN@
-Passord : @PASSWORD@
-
---
-Denne meldingen ble laget av DokuWiki
- at DOKUWIKIURL@
+Hei @FULLNAME@!
+
+Her er dine brukeropplysninger for @TITLE@ på @DOKUWIKIURL@
+
+Brukernavn : @LOGIN@
+Passord : @PASSWORD@
+
+--
+Denne meldingen ble laget av DokuWiki
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/no/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Forhåndsvisning======
-
-Dette er en forhåndsvisning av hvordan din tekst kommer til å se ut når den blir vist. Husk at den er **ikke lagret** ennå!
-
+======Forhåndsvisning======
+
+Dette er en forhåndsvisning av hvordan din tekst kommer til å se ut når den blir vist. Husk at den er **ikke lagret** ennå!
+
Modified: site/trunk/www-root/wiki/inc/lang/no/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Hei @FULLNAME@!
-
-Noen har bedt om nytt passord for din @TITLE@ innlogging
-på @DOKUWIKIURL@
-
-Om du ikke bad om nytt passord kan du bare overse denne e-posten.
-
-For å bekrefte at forespørselen virkelig kom fra deg kan du bruke
-følgende lenke:
-
- at CONFIRM@
-
---
-Denne e-posten ble generert av DokuWiki på
- at DOKUWIKIURL@
+Hei @FULLNAME@!
+
+Noen har bedt om nytt passord for din @TITLE@ innlogging
+på @DOKUWIKIURL@
+
+Om du ikke bad om nytt passord kan du bare overse denne e-posten.
+
+For å bekrefte at forespørselen virkelig kom fra deg kan du bruke
+følgende lenke:
+
+ at CONFIRM@
+
+--
+Denne e-posten ble generert av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/no/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Denne siden er skrivebeskyttet. Du kan se på den, men ikke endre den.
-Kontakt administratoren hvis du mener at du bør kunne endre siden.
-
+Denne siden er skrivebeskyttet. Du kan se på den, men ikke endre den.
+Kontakt administratoren hvis du mener at du bør kunne endre siden.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Siste nytt======
-
-Følgende sider/dokumenter har nylig blitt oppdatert.
-
-
+======Siste nytt======
+
+Følgende sider/dokumenter har nylig blitt oppdatert.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/no/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Registrer deg som bruker======
-
-Angi all informasjon som det blir spurt om nedenfor for å skape en ny brukerkonto for denne wiki. Vær spesielt nøye med å angi en **gyldig e-postadresse** - ditt passord vil bli sendt til den e-postadressen du angir. Brukernavnet må være et gyldig [[doku>wiki:pagename|sidenavn]].
-
+======Registrer deg som bruker======
+
+Angi all informasjon som det blir spurt om nedenfor for å skape en ny brukerkonto for denne wiki. Vær spesielt nøye med å angi en **gyldig e-postadresse** - ditt passord vil bli sendt til den e-postadressen du angir. Brukernavnet må være et gyldig [[doku>wiki:pagename|sidenavn]].
+
Modified: site/trunk/www-root/wiki/inc/lang/no/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-En ny bruker har registret seg, her er detaljene:
-
-Brukernavn : @NEWUSER@
-Fult navn : @NEWNAME@
-E-post : @NEWEMAIL@
-
-Dato : @DATE@
-Nettleser : @BROWSER@
-IP-adresse : @IPADDRESS@
-Tjener : @HOSTNAME@
-
---
-Denne e-posten ble generert av DokuWiki på
- at DOKUWIKIURL@
+En ny bruker har registret seg, her er detaljene:
+
+Brukernavn : @NEWUSER@
+Fult navn : @NEWNAME@
+E-post : @NEWEMAIL@
+
+Dato : @DATE@
+Nettleser : @BROWSER@
+IP-adresse : @IPADDRESS@
+Tjener : @HOSTNAME@
+
+--
+Denne e-posten ble generert av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/no/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Send nytt passord ======
-
-Fyll inn ditt brukernavn i skjema nedenfor for å be om nytt passord for din
-konto i denne wiki. En bekreftelseslenke vil bli sent til din e-postadresse.
-
+====== Send nytt passord ======
+
+Fyll inn ditt brukernavn i skjema nedenfor for å be om nytt passord for din
+konto i denne wiki. En bekreftelseslenke vil bli sent til din e-postadresse.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Historikk======
-
-Her vises tidligere versjoner av dokumentet. For å sette dette dokumentet tilbake til en tidligere versjon
-kan du velge den ønskede versjonen nedenfor, klikke på **''Rediger denne siden''** og lagre dokumentet.
-
+======Historikk======
+
+Her vises tidligere versjoner av dokumentet. For å sette dette dokumentet tilbake til en tidligere versjon
+kan du velge den ønskede versjonen nedenfor, klikke på **''Rediger denne siden''** og lagre dokumentet.
+
Modified: site/trunk/www-root/wiki/inc/lang/no/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Søk======
-
-Du ser resultatet av dette søket nedenfor. Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på ''**Lag denne siden**''-knappen.
-
-=====Resultat=====
+======Søk======
+
+Du ser resultatet av dette søket nedenfor. Hvis du ikke finner det du leter etter, så kan du skape en ny side med samme navn som ditt søk ved å klikke på ''**Lag denne siden**''-knappen.
+
+=====Resultat=====
Modified: site/trunk/www-root/wiki/inc/lang/no/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Dette er en gammel revisjon av dokumentet!**
-----
+**Dette er en gammel revisjon av dokumentet!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/no/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,130 +1,130 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-alle
-andre
-arbeid
-begge
-bort
-bra
-bruke
-denne
-der
-deres
-det
-din
-disse
-eller
-ene
-eneste
-enhver
-enn
-folk
-for
-fordi
-forsÃke
-fra
-fÃ
-fÃr
-fÃrst
-gjorde
-gjÃre
-god
-gÃ
-hadde
-han
-hans
-hennes
-her
-hva
-hvem
-hver
-hvilken
-hvis
-hvor
-hvordan
-hvorfor
-ikke
-inn
-innen
-kan
-kunne
-lage
-lang
-lik
-like
-makt
-mange
-med
-meg
-meget
-men
-mens
-mer
-mest
-min
-mye
-mÃ
-mÃ
te
-navn
-nei
-nÃ
-nÃ
r
-ogsÃ
-opp
-oss
-over
-part
-punkt
-pÃ
-rett
-riktig
-samme
-sant
-siden
-sist
-skulle
-slik
-slutt
-som
-start
-stille
-sÃ
-tid
-til
-tilbake
-tilstand
-under
-uten
-var
-ved
-verdi
-vil
-ville
-vite
-vÃ
r
-vÃre
-vÃrt
-om
-er
-og
-du
-dine
-de
-deres
-com
-for
-fra
-inni
-hvordan
-det
-dette
-var
-hva
-når
-hvor
-hvem
-vil
-med
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+alle
+andre
+arbeid
+begge
+bort
+bra
+bruke
+denne
+der
+deres
+det
+din
+disse
+eller
+ene
+eneste
+enhver
+enn
+folk
+for
+fordi
+forsÃke
+fra
+fÃ
+fÃr
+fÃrst
+gjorde
+gjÃre
+god
+gÃ
+hadde
+han
+hans
+hennes
+her
+hva
+hvem
+hver
+hvilken
+hvis
+hvor
+hvordan
+hvorfor
+ikke
+inn
+innen
+kan
+kunne
+lage
+lang
+lik
+like
+makt
+mange
+med
+meg
+meget
+men
+mens
+mer
+mest
+min
+mye
+mÃ
+mÃ
te
+navn
+nei
+nÃ
+nÃ
r
+ogsÃ
+opp
+oss
+over
+part
+punkt
+pÃ
+rett
+riktig
+samme
+sant
+siden
+sist
+skulle
+slik
+slutt
+som
+start
+stille
+sÃ
+tid
+til
+tilbake
+tilstand
+under
+uten
+var
+ved
+verdi
+vil
+ville
+vite
+vÃ
r
+vÃre
+vÃrt
+om
+er
+og
+du
+dine
+de
+deres
+com
+for
+fra
+inni
+hvordan
+det
+dette
+var
+hva
+når
+hvor
+hvem
+vil
+med
www
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/no/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Hei!
-
-Siden @PAGE@ i @TITLE at -wikien har blitt endret.
-Her er endringene:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-For å avslutte abonnering på denne siden logg inn
-på wikien på @DOKUWIKIURL@, besøk deretter @NEWPAGE@
-og velg 'Ikke abonner på endringer'.
-
---
-Denne mailen ble generert av DokuWiki på
+Hei!
+
+Siden @PAGE@ i @TITLE at -wikien har blitt endret.
+Her er endringene:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+For å avslutte abonnering på denne siden logg inn
+på wikien på @DOKUWIKIURL@, besøk deretter @NEWPAGE@
+og velg 'Ikke abonner på endringer'.
+
+--
+Denne mailen ble generert av DokuWiki på
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/no/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Oppdater din brukerprofil ======
-
-Du behøver bare fylle ut de felter du ønsker å endre. Du kan ikke endre ditt brukernavn.
-
-
+====== Oppdater din brukerprofil ======
+
+Du behøver bare fylle ut de felter du ønsker å endre. Du kan ikke endre ditt brukernavn.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/no/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-En fil ble lastet opp på din DokuWiki. Her er detaljene:
-
-Fil : @MEDIA@
-Dato : @DATE@
-Nettleser : @BROWSER@
-IP-adresse : @IPADDRESS@
-Vertnavn : @HOSTNAME@
-Størrelse : @SIZE@
-MIME-type : @MIME@
-Bruker : @USER@
-
---
-Denne e-posten ble generert av DokuWiki på
+En fil ble lastet opp på din DokuWiki. Her er detaljene:
+
+Fil : @MEDIA@
+Dato : @DATE@
+Nettleser : @BROWSER@
+IP-adresse : @IPADDRESS@
+Vertnavn : @HOSTNAME@
+Størrelse : @SIZE@
+MIME-type : @MIME@
+Bruker : @USER@
+
+--
+Denne e-posten ble generert av DokuWiki på
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/no/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/no/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/no/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Ordsperre======
-
-Dine endringer har **ikke** blitt lagret på grunn av at de inneholder ett eller flere ord som er sperret. Hvis du har forsøkt å lagre søppel, eller såkalt ''spam'' -- Fy deg! Hvis du anser denne beskjeden som feilaktig kan du kontakte administratoren til denne wikien.
-
+======Ordsperre======
+
+Dine endringer har **ikke** blitt lagret på grunn av at de inneholder ett eller flere ord som er sperret. Hvis du har forsøkt å lagre søppel, eller såkalt ''spam'' -- Fy deg! Hvis du anser denne beskjeden som feilaktig kan du kontakte administratoren til denne wikien.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Administracja ======
-
-CzynnoÅci administracyjne DokuWiki.
-
+====== Administracja ======
+
+CzynnoÅci administracyjne DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== OdnoÅnik z innych stron ======
-
-Strony zawierajÄ
ce odnoÅniki do aktualnej strony.
-
+====== OdnoÅnik z innych stron ======
+
+Strony zawierajÄ
ce odnoÅniki do aktualnej strony.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Istnieje nowsza wersja strony ======
-
-Istnieje nowsza wersja edytowanej strony.
-Prawdopodobnie ktoÅ zmieniÅ tÄ stronÄ w trakcie Twojej pracy.
-
-PrzeglÄ
dnij dokÅadnie poniższe różnice i zdecyduj, którÄ
wersjÄ zatrzymaÄ.
-JeÅli naciÅniesz ''zapisz'' to Twoja wersja zostanie zapisana.
-JeÅli naciÅniesz ''anuluj'' to zostanie wybrana aktualna wersja strony.
-
+====== Istnieje nowsza wersja strony ======
+
+Istnieje nowsza wersja edytowanej strony.
+Prawdopodobnie ktoÅ zmieniÅ tÄ stronÄ w trakcie Twojej pracy.
+
+PrzeglÄ
dnij dokÅadnie poniższe różnice i zdecyduj, którÄ
wersjÄ zatrzymaÄ.
+JeÅli naciÅniesz ''zapisz'' to Twoja wersja zostanie zapisana.
+JeÅli naciÅniesz ''anuluj'' to zostanie wybrana aktualna wersja strony.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Brak dostÄpu ======
-
-Nie masz wystarczajÄ
cych uprawnieÅ. Zaloguj siÄ!
-
+====== Brak dostÄpu ======
+
+Nie masz wystarczajÄ
cych uprawnieÅ. Zaloguj siÄ!
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Różnice ======
-
-Różnice miÄdzy wybranÄ
wersjÄ
a wersjÄ
aktualnÄ
.
-
+====== Różnice ======
+
+Różnice miÄdzy wybranÄ
wersjÄ
a wersjÄ
aktualnÄ
.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Znaleziono szkic strony ======
-
-Twoja ostatnia sesja edycji nie zostaÅa poprawnie zakoÅczona.
-DokuWiki automatycznie zachowaÅo szkic strony podczas Twojej pracy abyÅ mógÅ (mogÅa) jÄ
dokoÅczyÄ.
-Poniżej możesz zobaczyÄ co zostaÅo zapisane w czasie ostatnie sesji.
-
-Zdecyduj czy chcesz //przywróciÄ// ostatniÄ
sesjÄ, //usunÄ
Ä// jÄ
lub //anulowaÄ//.
-
+====== Znaleziono szkic strony ======
+
+Twoja ostatnia sesja edycji nie zostaÅa poprawnie zakoÅczona.
+DokuWiki automatycznie zachowaÅo szkic strony podczas Twojej pracy abyÅ mógÅ (mogÅa) jÄ
dokoÅczyÄ.
+Poniżej możesz zobaczyÄ co zostaÅo zapisane w czasie ostatnie sesji.
+
+Zdecyduj czy chcesz //przywróciÄ// ostatniÄ
sesjÄ, //usunÄ
Ä// jÄ
lub //anulowaÄ//.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Zredaguj tÄ stronÄ i naciÅnij ''zapisz''.
-
-Na stronie ze [[wiki:syntax|skÅadniÄ
]] znajdziesz opis znaczników wiki.
-JeÅli chcesz poÄwiczyÄ zajrzyj do [[playground:playground|piaskownicy]].
-
+Zredaguj tÄ stronÄ i naciÅnij ''zapisz''.
+
+Na stronie ze [[wiki:syntax|skÅadniÄ
]] znajdziesz opis znaczników wiki.
+JeÅli chcesz poÄwiczyÄ zajrzyj do [[playground:playground|piaskownicy]].
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Edytujesz nieaktualnÄ
wersjÄ strony!**
-JeÅli jÄ
zapiszesz to stanie siÄ ona wersjÄ
aktualnÄ
.
-----
+**Edytujesz nieaktualnÄ
wersjÄ strony!**
+JeÅli jÄ
zapiszesz to stanie siÄ ona wersjÄ
aktualnÄ
.
+----
Modified: site/trunk/www-root/wiki/inc/lang/pl/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Indeks ======
-
-Indeks wszystkich dostÄpnych stron pogrupowany wedÅug [[doku>wiki:namespaces|katalogów]].
-
+====== Indeks ======
+
+Indeks wszystkich dostÄpnych stron pogrupowany wedÅug [[doku>wiki:namespaces|katalogów]].
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,23 +1,23 @@
-<p>Ta strona ma na celu pomóc Ci w instalacji i konfiguracji
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>.
-WiÄcej informacji o instalatorze znajdziesz w
-<a href="http://wiki.splitbrain.org/wiki:installer">dokumentacji instalatora</a>.</p>
-
-<p>DokuWiki używa zwykÅych plików do przechowywania zawartoÅci stron oraz wszelkich
-innych informacji takich jak obrazki, poprzednie wersje strony, itp.
-Å»eby DokuWiki mogÅo poprawnie dziaÅaÄ <strong>musisz</strong>
-nadaÄ prawo zapisu do katalogu zawierajÄ
cego te pliki. Instalator nie może wykonaÄ
-tych czynnoÅci. Musisz zrobiÄ to za pomocÄ
polecenia powÅoki, klienta FTP
-lub panelu kontrolnego Twojego dostawcy usÅug serwerowych.</p>
-
-<p>Instalator pomoże Ci w konfiguracji uprawnieÅ
-<acronym title="access control list">ACL</acronym>,
-które z kolei umożliwiÄ
Ci zaÅożenie konta administratora oraz umożliwiÄ
dostÄp
-do czynnoÅci administracyjnych takich jak instalowanie wtyczek, zarzÄ
dzanie kontami,
-zarzÄ
dzania uprawnieniami do stron oraz konfiguracji wiki. Użycie tego instalatora
-nie jest konieczne, jego celem jest tylko uÅatwienie administracji DokuWiki.</p>
-
-<p>Zaawansowanie użytkownicy lub użytkownicy majÄ
cy specjalne wymagania powinni
-zapoznaÄ siÄ z
-<a href="http://wiki.splitbrain.org/wiki:install">instrukcjÄ
instalacji</a>
-oraz <a href="http://wiki.splitbrain.org/wiki:config">instrukcjÄ
konfiguracji</a>.</p>
+<p>Ta strona ma na celu pomóc Ci w instalacji i konfiguracji
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>.
+WiÄcej informacji o instalatorze znajdziesz w
+<a href="http://wiki.splitbrain.org/wiki:installer">dokumentacji instalatora</a>.</p>
+
+<p>DokuWiki używa zwykÅych plików do przechowywania zawartoÅci stron oraz wszelkich
+innych informacji takich jak obrazki, poprzednie wersje strony, itp.
+Å»eby DokuWiki mogÅo poprawnie dziaÅaÄ <strong>musisz</strong>
+nadaÄ prawo zapisu do katalogu zawierajÄ
cego te pliki. Instalator nie może wykonaÄ
+tych czynnoÅci. Musisz zrobiÄ to za pomocÄ
polecenia powÅoki, klienta FTP
+lub panelu kontrolnego Twojego dostawcy usÅug serwerowych.</p>
+
+<p>Instalator pomoże Ci w konfiguracji uprawnieÅ
+<acronym title="access control list">ACL</acronym>,
+które z kolei umożliwiÄ
Ci zaÅożenie konta administratora oraz umożliwiÄ
dostÄp
+do czynnoÅci administracyjnych takich jak instalowanie wtyczek, zarzÄ
dzanie kontami,
+zarzÄ
dzania uprawnieniami do stron oraz konfiguracji wiki. Użycie tego instalatora
+nie jest konieczne, jego celem jest tylko uÅatwienie administracji DokuWiki.</p>
+
+<p>Zaawansowanie użytkownicy lub użytkownicy majÄ
cy specjalne wymagania powinni
+zapoznaÄ siÄ z
+<a href="http://wiki.splitbrain.org/wiki:install">instrukcjÄ
instalacji</a>
+oraz <a href="http://wiki.splitbrain.org/wiki:config">instrukcjÄ
konfiguracji</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/pl/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,203 +1,203 @@
-<?php
-/**
- * polish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Grzegorz Żur <grzegorz.zur at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'Edytuj stronÄ';
-$lang['btn_source'] = 'Pokaż źródÅo strony';
-$lang['btn_show'] = 'Pokaż stronÄ';
-$lang['btn_create'] = 'Utwórz stronÄ';
-$lang['btn_search'] = 'Szukaj';
-$lang['btn_save'] = 'Zapisz';
-$lang['btn_preview'] = 'PodglÄ
d';
-$lang['btn_top'] = 'Do góry';
-$lang['btn_newer'] = '<< nowsze';
-$lang['btn_older'] = 'starsze >>';
-$lang['btn_revs'] = 'Poprzednie wersje';
-$lang['btn_recent'] = 'Ostatnie zmiany';
-$lang['btn_upload'] = 'WyÅlij';
-$lang['btn_cancel'] = 'Anuluj';
-$lang['btn_index'] = 'Indeks';
-$lang['btn_secedit'] = 'Edytuj';
-$lang['btn_login'] = 'Zaloguj';
-$lang['btn_logout'] = 'Wyloguj';
-$lang['btn_admin'] = 'Administracja';
-$lang['btn_update'] = 'Aktualizuj';
-$lang['btn_delete'] = 'UsuÅ';
-$lang['btn_back'] = 'Wstecz';
-$lang['btn_backlink'] = 'OdnoÅniki';
-$lang['btn_backtomedia'] = 'Powrót do wyboru pliku';
-$lang['btn_subscribe'] = 'Subskrybuj zmiany';
-$lang['btn_unsubscribe'] = 'ZaprzestaÅ subskrypcji zmian';
-$lang['btn_subscribens'] = 'Subskrybuj zmiany w katalogu';
-$lang['btn_unsubscribens'] = 'ZaprzestaÅ subskrypcji zmian w katalogu';
-$lang['btn_profile'] = 'Aktualizuj profil';
-$lang['btn_reset'] = 'Resetuj';
-$lang['btn_resendpwd'] = 'PrzeÅlij nowe hasÅo';
-$lang['btn_draft'] = 'Edytuj szkic';
-$lang['btn_recover'] = 'PrzywrÃ³Ä szkic';
-$lang['btn_draftdel'] = 'UsuÅ szkic';
-$lang['loggedinas'] = 'Zalogowany jako';
-$lang['user'] = 'Użytkownik';
-$lang['pass'] = 'HasÅo';
-$lang['newpass'] = 'Nowe hasÅo';
-$lang['oldpass'] = 'Potwierdź aktualne hasÅo';
-$lang['passchk'] = 'Powtórz hasÅo';
-$lang['remember'] = 'ZapamiÄtaj';
-$lang['fullname'] = 'ImiÄ i nazwisko';
-$lang['email'] = 'E-mail';
-$lang['register'] = 'Zarejestruj siÄ!';
-$lang['profile'] = 'Profil użytkownika';
-$lang['badlogin'] = 'Nazwa użytkownika lub hasÅo sÄ
nieprawidÅowe.';
-$lang['minoredit'] = 'Mniejsze zmiany';
-$lang['draftdate'] = 'Czas zachowania szkicu';
-$lang['regmissing'] = 'WypeÅnij wszystkie pola.';
-$lang['reguexists'] = 'Użytkownik o tej nazwie już istnieje.';
-$lang['regsuccess'] = 'Utworzono użytkownika. HasÅo zostaÅo przesÅane pocztÄ
.';
-$lang['regsuccess2'] = 'Utworzono użytkownika.';
-$lang['regmailfail'] = 'WystÄ
piÅ bÅÄ
d przy wysyÅaniu hasÅa pocztÄ
!';
-$lang['regbadmail'] = 'Adres e-mail jest nieprawidÅowy!';
-$lang['regbadpass'] = 'HasÅa nie sÄ
identyczne, spróbuj ponownie.';
-$lang['regpwmail'] = 'Twoje hasÅo do DokuWiki';
-$lang['reghere'] = 'Nie masz jeszcze konta? ZdobÄ
dź je';
-$lang['profna'] = 'To wiki nie pozwala na zmianÄ profilu.';
-$lang['profnochange'] = 'Żadnych zmian, nic do zrobienia.';
-$lang['profnoempty'] = 'Pusta nazwa lub adres e-mail nie dozwolone.';
-$lang['profchanged'] = 'Zaktualizowano profil użytkownika.';
-$lang['pwdforget'] = 'Nie pamiÄtasz hasÅa? ZdobÄ
dź nowe!';
-$lang['resendna'] = 'To wiki nie pozwala na powtórne przesyÅanie hasÅa.';
-$lang['resendpwd'] = 'PrzeÅlij nowe hasÅo dla';
-$lang['resendpwdmissing'] = 'WypeÅnij wszystkie pola.';
-$lang['resendpwdnouser'] = 'Nie można znaleÅºÄ tego użytkownika w bazie danych.';
-$lang['resendpwdbadauth'] = 'BÅÄdny kod autoryzacji! Upewnij siÄ, że użyÅeÅ(aÅ) wÅaÅciwego odnoÅnika.';
-$lang['resendpwdconfirm'] = 'ProÅba o potwierdzenie zostaÅa przesÅana pocztÄ
.';
-$lang['resendpwdsuccess'] = 'Nowe hasÅo zostaÅo wysÅane pocztÄ
.';
-$lang['txt_upload'] = 'Wybierz plik do wysÅania';
-$lang['txt_filename'] = 'Nazwa pliku (opcjonalnie)';
-$lang['txt_overwrt'] = 'NadpisaÄ istniejÄ
cy plik?';
-$lang['lockedby'] = 'Aktualnie zablokowane przez';
-$lang['lockexpire'] = 'Blokada wygasa';
-$lang['willexpire'] = 'Za minutÄ Twoja blokada tej strony wygaÅnie.\nW celu unikniÄcia konfliktów wyÅwietl podglÄ
d aby odnowiÄ blokadÄ.';
-$lang['notsavedyet'] = 'Nie zapisane zmiany zostanÄ
utracone.\nCzy na pewno kontynuowaÄ?';
-$lang['rssfailed'] = 'WystÄ
piÅ bÅÄ
d przy pobieraniu tych danych: ';
-$lang['nothingfound'] = 'Nic nie znaleziono.';
-$lang['mediaselect'] = 'WysyÅanie pliku';
-$lang['fileupload'] = 'WysyÅanie pliku';
-$lang['uploadsucc'] = 'WysyÅanie powiodÅo siÄ!';
-$lang['uploadfail'] = 'BÅÄ
d wysyÅania pliku. Czy prawa do katalogów sÄ
poprawne?';
-$lang['uploadwrong'] = 'WysyÅanie zabronione. Nie można wysÅaÄ plików z takim rozszerzeniem';
-$lang['uploadexist'] = 'Plik już istnieje, nie wykonano operacji.';
-$lang['uploadbadcontent'] = 'Typ pliku "%s" nie odpowiadaÅ jego rozszerzeniu.';
-$lang['uploadspam'] = 'Plik zablokowany przez filtr antyspamowy.';
-$lang['uploadxss'] = 'Plik zablokowany ze wzglÄdu na podejrzanÄ
zawartoÅÄ.';
-$lang['deletesucc'] = 'Plik "%s" zostaÅ usuniÄty.';
-$lang['deletefail'] = 'Plik "%s" nie zostaÅ usuniÄty, sprawdź uprawnienia.';
-$lang['mediainuse'] = 'Plik "%s" nie zostaÅ usuniÄty, ponieważ jest używany.';
-$lang['namespaces'] = 'Katalogi';
-$lang['mediafiles'] = 'DostÄpne pliki';
-$lang['js']['keepopen'] = 'Nie zamykaj okna po wyborze';
-$lang['js']['hidedetails'] = 'Ukryj szczegóÅy';
-$lang['mediausage'] = 'Użyj nastÄpujÄ
cej skÅadni w odnoÅniku do tego pliku:';
-$lang['mediaview'] = 'Pokaż oryginalny plik';
-$lang['mediaroot'] = 'gÅówny';
-$lang['mediaupload'] = 'UmieÅÄ plik w aktualnym katalogu. Aby utworzyÄ podkatalogi, poprzedź nazwÄ pliku nazwami katalogów oddzielonymi dwukropkami.';
-$lang['mediaextchange'] = 'Rozszerzenie pliku zmieniono z .%s na .%s!';
-$lang['reference'] = 'OdnoÅniki do';
-$lang['ref_inuse'] = 'Ten plik nie może byÄ usuniÄty, ponieważ jest używany na nastÄpujÄ
cych stronach:';
-$lang['ref_hidden'] = 'OdnoÅniki mogÄ
znajdowaÄ siÄ na stronach, do których nie masz uprawnieÅ.';
-$lang['hits'] = 'trafieÅ';
-$lang['quickhits'] = 'PasujÄ
ce hasÅa';
-$lang['toc'] = 'Spis treÅci';
-$lang['current'] = 'aktualna';
-$lang['yours'] = 'Twoja wersja';
-$lang['diff'] = 'Pokaż różnice miÄdzy wersjami';
-$lang['diff2'] = 'Pokaż różnice miÄdzy zaznaczonymi wersjami';
-$lang['line'] = 'Linia';
-$lang['breadcrumb'] = 'Ålad';
-$lang['youarehere'] = 'JesteÅ tutaj';
-$lang['lastmod'] = 'ostatnio zmienione';
-$lang['by'] = 'przez';
-$lang['deleted'] = 'usuniÄto';
-$lang['created'] = 'utworzono';
-$lang['restored'] = 'przywrócono poprzedniÄ
wersjÄ';
-$lang['external_edit'] = 'edycja zewnÄtrzna';
-$lang['summary'] = 'Opis zmian';
-$lang['mail_newpage'] = 'Strona dodana:';
-$lang['mail_changed'] = 'Strona zmieniona:';
-$lang['mail_new_user'] = 'Nowy użytkownik:';
-$lang['mail_upload'] = 'Umieszczono plik:';
-$lang['nosmblinks'] = 'OdnoÅniki do zasobów sieci Windows dziaÅajÄ
tylko w przeglÄ
darce Internet Explorer. \nMożesz skopiowaÄ odnoÅnik.';
-$lang['qb_alert'] = 'Wpisz tekst, który chcesz sformatowaÄ. \nBÄdzie on doÅÄ
czony na koniec strony.';
-$lang['qb_bold'] = 'Pogrubienie';
-$lang['qb_italic'] = 'Pochylenie';
-$lang['qb_underl'] = 'PodkreÅlenie';
-$lang['qb_code'] = 'Kod źródÅowy';
-$lang['qb_strike'] = 'PrzekreÅlenie';
-$lang['qb_h1'] = 'NagÅówek 1 stopnia';
-$lang['qb_h2'] = 'NagÅówek 2 stopnia';
-$lang['qb_h3'] = 'NagÅówek 3 stopnia';
-$lang['qb_h4'] = 'NagÅówek 4 stopnia';
-$lang['qb_h5'] = 'NagÅówek 5 stopnia';
-$lang['qb_link'] = 'OdnoÅnik wewnÄtrzny';
-$lang['qb_extlink'] = 'OdnoÅnik zewnÄtrzny';
-$lang['qb_hr'] = 'Linia pozioma';
-$lang['qb_ol'] = 'Numeracja';
-$lang['qb_ul'] = 'Wypunktowanie';
-$lang['qb_media'] = 'Dodaj obrazek lub inny plik';
-$lang['qb_sig'] = 'Wstaw podpis';
-$lang['qb_smileys'] = 'Emotikony';
-$lang['qb_chars'] = 'Znaki specjalne';
-$lang['del_confirm'] = 'Czy na pewno usunÄ
Ä?';
-$lang['admin_register'] = 'Dodawanie użytkownika';
-$lang['metaedit'] = 'Edytuj metadane';
-$lang['metasaveerr'] = 'Zapis metadanych nie powiódÅ siÄ';
-$lang['metasaveok'] = 'Metadane zapisano';
-$lang['img_backto'] = 'WrÃ³Ä do';
-$lang['img_title'] = 'TytuÅ';
-$lang['img_caption'] = 'NagÅówek';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nazwa pliku';
-$lang['img_fsize'] = 'Rozmiar';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Prawa autorskie';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Aparat';
-$lang['img_keywords'] = 'SÅowa kluczowe';
-$lang['subscribe_success'] = 'Dodano %s do listy subskrypcji strony %s';
-$lang['subscribe_error'] = 'BÅÄ
d przy dodawaniu %s do listy subskrypcji strony %s';
-$lang['subscribe_noaddress'] = 'Nie podaÅeÅ adresu e-mail przy rejestracji, nie możesz zostaÄ dodany do listy subskrypcji.';
-$lang['unsubscribe_success'] = 'UsuniÄto %s z listy subskrypcji strony %s';
-$lang['unsubscribe_error'] = 'BÅÄ
d przy usuwaniu %s z listy subskrypcji strony %s';
-$lang['authmodfailed'] = 'BÅÄ
d uwierzytelnienia. Powiadom administratora tego wiki.';
-$lang['authtempfail'] = 'Uwierzytelnienie użytkownika jest w tej chwili niemożliwe. JeÅli ta sytuacja siÄ powtórzy, powiadom administratora tego wiki.';
-$lang['i_chooselang'] = 'Wybierz jÄzyk';
-$lang['i_installer'] = 'Instalator DokuWiki';
-$lang['i_wikiname'] = 'Nazwa Wiki';
-$lang['i_enableacl'] = 'WÅÄ
cz mechanizm uprawnieÅ ACL (zalecane)';
-$lang['i_superuser'] = 'Administrator';
-$lang['i_problems'] = 'Instalator napotkaÅ poniższe problemy. Nie można kontynuowaÄ póki nie zostanÄ
usuniÄte.';
-$lang['i_modified'] = 'Ze wzglÄdów bezpieczeÅstwa, ten skrypt dziaÅa tylko z nowÄ
i niezmodyfikowanÄ
instalacjÄ
DokuWiki.
-Aby uruchomiÄ instalator ponownie, rozpakuj archiwum DokuWiki lub zapoznaj siÄ z <a href="http://wiki.splitbrain.org/wiki:install">instrukcjÄ
instalacji Dokuwiki</a>';
-$lang['i_funcna'] = 'Funkcja PHP <code>%s</code> jest niedostÄpna.';
-$lang['i_phpver'] = 'Wersja PHP <code>%s</code> jest niższa od wymaganej <code>%s</code>. Zaktualizuj instalacjÄ PHP.';
-$lang['i_permfail'] = 'DokuWiki nie ma prawa zapisu w katalogu <code>%s</code>. ZmieÅ uprawnienia zapisu dla tego katalogu!';
-$lang['i_confexists'] = '<code>%s</code> już istnieje';
-$lang['i_writeerr'] = 'Nie można utworzyÄ <code>%s</code>. Sprawdź uprawnienia do katalogu lub pliku i stwórz plik rÄcznie.';
-$lang['i_badhash'] = 'nierozpoznany lub zmodyfikowany plik dokuwiki.php (skrót=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - nieprawidÅowa wartoÅÄ lub jej brak';
-$lang['i_success'] = 'Konfiguracja pomyÅlnie zakoÅczona. Możesz teraz usunÄ
Ä plik install.php. Przejdź do <a href="doku.php">Twojego nowego DokuWiki</a>.';
-$lang['i_failure'] = 'Podczas zapisu plików konfiguracyjnych wystÄ
piÅy bÅÄdy. Musisz usunÄ
Ä wszystkie problemy, zanim zaczniesz korzystaÄ z <a href="doku.php">Twojego nowego DokuWiki</a>.';
-$lang['i_policy'] = 'WstÄpna polityka uprawnieÅ ACL';
-$lang['i_pol0'] = 'Otwarte Wiki (odczyt, zapis i dodawanie plików dla wszystkich)';
-$lang['i_pol1'] = 'Publiczne Wiki (odczyt dla wszystkich, zapis i dodawanie plików tylko dla zarejestrowanych użytkowników)';
-$lang['i_pol2'] = 'ZamkniÄte Wiki (odczyt, zapis i dodawanie plików tylko dla zarejestrowanych użytkowników)';
-$lang['i_retry'] = 'Spróbuj ponownie';
+<?php
+/**
+ * polish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Grzegorz Żur <grzegorz.zur at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'Edytuj stronÄ';
+$lang['btn_source'] = 'Pokaż źródÅo strony';
+$lang['btn_show'] = 'Pokaż stronÄ';
+$lang['btn_create'] = 'Utwórz stronÄ';
+$lang['btn_search'] = 'Szukaj';
+$lang['btn_save'] = 'Zapisz';
+$lang['btn_preview'] = 'PodglÄ
d';
+$lang['btn_top'] = 'Do góry';
+$lang['btn_newer'] = '<< nowsze';
+$lang['btn_older'] = 'starsze >>';
+$lang['btn_revs'] = 'Poprzednie wersje';
+$lang['btn_recent'] = 'Ostatnie zmiany';
+$lang['btn_upload'] = 'WyÅlij';
+$lang['btn_cancel'] = 'Anuluj';
+$lang['btn_index'] = 'Indeks';
+$lang['btn_secedit'] = 'Edytuj';
+$lang['btn_login'] = 'Zaloguj';
+$lang['btn_logout'] = 'Wyloguj';
+$lang['btn_admin'] = 'Administracja';
+$lang['btn_update'] = 'Aktualizuj';
+$lang['btn_delete'] = 'UsuÅ';
+$lang['btn_back'] = 'Wstecz';
+$lang['btn_backlink'] = 'OdnoÅniki';
+$lang['btn_backtomedia'] = 'Powrót do wyboru pliku';
+$lang['btn_subscribe'] = 'Subskrybuj zmiany';
+$lang['btn_unsubscribe'] = 'ZaprzestaÅ subskrypcji zmian';
+$lang['btn_subscribens'] = 'Subskrybuj zmiany w katalogu';
+$lang['btn_unsubscribens'] = 'ZaprzestaÅ subskrypcji zmian w katalogu';
+$lang['btn_profile'] = 'Aktualizuj profil';
+$lang['btn_reset'] = 'Resetuj';
+$lang['btn_resendpwd'] = 'PrzeÅlij nowe hasÅo';
+$lang['btn_draft'] = 'Edytuj szkic';
+$lang['btn_recover'] = 'PrzywrÃ³Ä szkic';
+$lang['btn_draftdel'] = 'UsuÅ szkic';
+$lang['loggedinas'] = 'Zalogowany jako';
+$lang['user'] = 'Użytkownik';
+$lang['pass'] = 'HasÅo';
+$lang['newpass'] = 'Nowe hasÅo';
+$lang['oldpass'] = 'Potwierdź aktualne hasÅo';
+$lang['passchk'] = 'Powtórz hasÅo';
+$lang['remember'] = 'ZapamiÄtaj';
+$lang['fullname'] = 'ImiÄ i nazwisko';
+$lang['email'] = 'E-mail';
+$lang['register'] = 'Zarejestruj siÄ!';
+$lang['profile'] = 'Profil użytkownika';
+$lang['badlogin'] = 'Nazwa użytkownika lub hasÅo sÄ
nieprawidÅowe.';
+$lang['minoredit'] = 'Mniejsze zmiany';
+$lang['draftdate'] = 'Czas zachowania szkicu';
+$lang['regmissing'] = 'WypeÅnij wszystkie pola.';
+$lang['reguexists'] = 'Użytkownik o tej nazwie już istnieje.';
+$lang['regsuccess'] = 'Utworzono użytkownika. HasÅo zostaÅo przesÅane pocztÄ
.';
+$lang['regsuccess2'] = 'Utworzono użytkownika.';
+$lang['regmailfail'] = 'WystÄ
piÅ bÅÄ
d przy wysyÅaniu hasÅa pocztÄ
!';
+$lang['regbadmail'] = 'Adres e-mail jest nieprawidÅowy!';
+$lang['regbadpass'] = 'HasÅa nie sÄ
identyczne, spróbuj ponownie.';
+$lang['regpwmail'] = 'Twoje hasÅo do DokuWiki';
+$lang['reghere'] = 'Nie masz jeszcze konta? ZdobÄ
dź je';
+$lang['profna'] = 'To wiki nie pozwala na zmianÄ profilu.';
+$lang['profnochange'] = 'Żadnych zmian, nic do zrobienia.';
+$lang['profnoempty'] = 'Pusta nazwa lub adres e-mail nie dozwolone.';
+$lang['profchanged'] = 'Zaktualizowano profil użytkownika.';
+$lang['pwdforget'] = 'Nie pamiÄtasz hasÅa? ZdobÄ
dź nowe!';
+$lang['resendna'] = 'To wiki nie pozwala na powtórne przesyÅanie hasÅa.';
+$lang['resendpwd'] = 'PrzeÅlij nowe hasÅo dla';
+$lang['resendpwdmissing'] = 'WypeÅnij wszystkie pola.';
+$lang['resendpwdnouser'] = 'Nie można znaleÅºÄ tego użytkownika w bazie danych.';
+$lang['resendpwdbadauth'] = 'BÅÄdny kod autoryzacji! Upewnij siÄ, że użyÅeÅ(aÅ) wÅaÅciwego odnoÅnika.';
+$lang['resendpwdconfirm'] = 'ProÅba o potwierdzenie zostaÅa przesÅana pocztÄ
.';
+$lang['resendpwdsuccess'] = 'Nowe hasÅo zostaÅo wysÅane pocztÄ
.';
+$lang['txt_upload'] = 'Wybierz plik do wysÅania';
+$lang['txt_filename'] = 'Nazwa pliku (opcjonalnie)';
+$lang['txt_overwrt'] = 'NadpisaÄ istniejÄ
cy plik?';
+$lang['lockedby'] = 'Aktualnie zablokowane przez';
+$lang['lockexpire'] = 'Blokada wygasa';
+$lang['willexpire'] = 'Za minutÄ Twoja blokada tej strony wygaÅnie.\nW celu unikniÄcia konfliktów wyÅwietl podglÄ
d aby odnowiÄ blokadÄ.';
+$lang['notsavedyet'] = 'Nie zapisane zmiany zostanÄ
utracone.\nCzy na pewno kontynuowaÄ?';
+$lang['rssfailed'] = 'WystÄ
piÅ bÅÄ
d przy pobieraniu tych danych: ';
+$lang['nothingfound'] = 'Nic nie znaleziono.';
+$lang['mediaselect'] = 'WysyÅanie pliku';
+$lang['fileupload'] = 'WysyÅanie pliku';
+$lang['uploadsucc'] = 'WysyÅanie powiodÅo siÄ!';
+$lang['uploadfail'] = 'BÅÄ
d wysyÅania pliku. Czy prawa do katalogów sÄ
poprawne?';
+$lang['uploadwrong'] = 'WysyÅanie zabronione. Nie można wysÅaÄ plików z takim rozszerzeniem';
+$lang['uploadexist'] = 'Plik już istnieje, nie wykonano operacji.';
+$lang['uploadbadcontent'] = 'Typ pliku "%s" nie odpowiadaÅ jego rozszerzeniu.';
+$lang['uploadspam'] = 'Plik zablokowany przez filtr antyspamowy.';
+$lang['uploadxss'] = 'Plik zablokowany ze wzglÄdu na podejrzanÄ
zawartoÅÄ.';
+$lang['deletesucc'] = 'Plik "%s" zostaÅ usuniÄty.';
+$lang['deletefail'] = 'Plik "%s" nie zostaÅ usuniÄty, sprawdź uprawnienia.';
+$lang['mediainuse'] = 'Plik "%s" nie zostaÅ usuniÄty, ponieważ jest używany.';
+$lang['namespaces'] = 'Katalogi';
+$lang['mediafiles'] = 'DostÄpne pliki';
+$lang['js']['keepopen'] = 'Nie zamykaj okna po wyborze';
+$lang['js']['hidedetails'] = 'Ukryj szczegóÅy';
+$lang['mediausage'] = 'Użyj nastÄpujÄ
cej skÅadni w odnoÅniku do tego pliku:';
+$lang['mediaview'] = 'Pokaż oryginalny plik';
+$lang['mediaroot'] = 'gÅówny';
+$lang['mediaupload'] = 'UmieÅÄ plik w aktualnym katalogu. Aby utworzyÄ podkatalogi, poprzedź nazwÄ pliku nazwami katalogów oddzielonymi dwukropkami.';
+$lang['mediaextchange'] = 'Rozszerzenie pliku zmieniono z .%s na .%s!';
+$lang['reference'] = 'OdnoÅniki do';
+$lang['ref_inuse'] = 'Ten plik nie może byÄ usuniÄty, ponieważ jest używany na nastÄpujÄ
cych stronach:';
+$lang['ref_hidden'] = 'OdnoÅniki mogÄ
znajdowaÄ siÄ na stronach, do których nie masz uprawnieÅ.';
+$lang['hits'] = 'trafieÅ';
+$lang['quickhits'] = 'PasujÄ
ce hasÅa';
+$lang['toc'] = 'Spis treÅci';
+$lang['current'] = 'aktualna';
+$lang['yours'] = 'Twoja wersja';
+$lang['diff'] = 'Pokaż różnice miÄdzy wersjami';
+$lang['diff2'] = 'Pokaż różnice miÄdzy zaznaczonymi wersjami';
+$lang['line'] = 'Linia';
+$lang['breadcrumb'] = 'Ålad';
+$lang['youarehere'] = 'JesteÅ tutaj';
+$lang['lastmod'] = 'ostatnio zmienione';
+$lang['by'] = 'przez';
+$lang['deleted'] = 'usuniÄto';
+$lang['created'] = 'utworzono';
+$lang['restored'] = 'przywrócono poprzedniÄ
wersjÄ';
+$lang['external_edit'] = 'edycja zewnÄtrzna';
+$lang['summary'] = 'Opis zmian';
+$lang['mail_newpage'] = 'Strona dodana:';
+$lang['mail_changed'] = 'Strona zmieniona:';
+$lang['mail_new_user'] = 'Nowy użytkownik:';
+$lang['mail_upload'] = 'Umieszczono plik:';
+$lang['nosmblinks'] = 'OdnoÅniki do zasobów sieci Windows dziaÅajÄ
tylko w przeglÄ
darce Internet Explorer. \nMożesz skopiowaÄ odnoÅnik.';
+$lang['qb_alert'] = 'Wpisz tekst, który chcesz sformatowaÄ. \nBÄdzie on doÅÄ
czony na koniec strony.';
+$lang['qb_bold'] = 'Pogrubienie';
+$lang['qb_italic'] = 'Pochylenie';
+$lang['qb_underl'] = 'PodkreÅlenie';
+$lang['qb_code'] = 'Kod źródÅowy';
+$lang['qb_strike'] = 'PrzekreÅlenie';
+$lang['qb_h1'] = 'NagÅówek 1 stopnia';
+$lang['qb_h2'] = 'NagÅówek 2 stopnia';
+$lang['qb_h3'] = 'NagÅówek 3 stopnia';
+$lang['qb_h4'] = 'NagÅówek 4 stopnia';
+$lang['qb_h5'] = 'NagÅówek 5 stopnia';
+$lang['qb_link'] = 'OdnoÅnik wewnÄtrzny';
+$lang['qb_extlink'] = 'OdnoÅnik zewnÄtrzny';
+$lang['qb_hr'] = 'Linia pozioma';
+$lang['qb_ol'] = 'Numeracja';
+$lang['qb_ul'] = 'Wypunktowanie';
+$lang['qb_media'] = 'Dodaj obrazek lub inny plik';
+$lang['qb_sig'] = 'Wstaw podpis';
+$lang['qb_smileys'] = 'Emotikony';
+$lang['qb_chars'] = 'Znaki specjalne';
+$lang['del_confirm'] = 'Czy na pewno usunÄ
Ä?';
+$lang['admin_register'] = 'Dodawanie użytkownika';
+$lang['metaedit'] = 'Edytuj metadane';
+$lang['metasaveerr'] = 'Zapis metadanych nie powiódÅ siÄ';
+$lang['metasaveok'] = 'Metadane zapisano';
+$lang['img_backto'] = 'WrÃ³Ä do';
+$lang['img_title'] = 'TytuÅ';
+$lang['img_caption'] = 'NagÅówek';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Nazwa pliku';
+$lang['img_fsize'] = 'Rozmiar';
+$lang['img_artist'] = 'Fotograf';
+$lang['img_copyr'] = 'Prawa autorskie';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Aparat';
+$lang['img_keywords'] = 'SÅowa kluczowe';
+$lang['subscribe_success'] = 'Dodano %s do listy subskrypcji strony %s';
+$lang['subscribe_error'] = 'BÅÄ
d przy dodawaniu %s do listy subskrypcji strony %s';
+$lang['subscribe_noaddress'] = 'Nie podaÅeÅ adresu e-mail przy rejestracji, nie możesz zostaÄ dodany do listy subskrypcji.';
+$lang['unsubscribe_success'] = 'UsuniÄto %s z listy subskrypcji strony %s';
+$lang['unsubscribe_error'] = 'BÅÄ
d przy usuwaniu %s z listy subskrypcji strony %s';
+$lang['authmodfailed'] = 'BÅÄ
d uwierzytelnienia. Powiadom administratora tego wiki.';
+$lang['authtempfail'] = 'Uwierzytelnienie użytkownika jest w tej chwili niemożliwe. JeÅli ta sytuacja siÄ powtórzy, powiadom administratora tego wiki.';
+$lang['i_chooselang'] = 'Wybierz jÄzyk';
+$lang['i_installer'] = 'Instalator DokuWiki';
+$lang['i_wikiname'] = 'Nazwa Wiki';
+$lang['i_enableacl'] = 'WÅÄ
cz mechanizm uprawnieÅ ACL (zalecane)';
+$lang['i_superuser'] = 'Administrator';
+$lang['i_problems'] = 'Instalator napotkaÅ poniższe problemy. Nie można kontynuowaÄ póki nie zostanÄ
usuniÄte.';
+$lang['i_modified'] = 'Ze wzglÄdów bezpieczeÅstwa, ten skrypt dziaÅa tylko z nowÄ
i niezmodyfikowanÄ
instalacjÄ
DokuWiki.
+Aby uruchomiÄ instalator ponownie, rozpakuj archiwum DokuWiki lub zapoznaj siÄ z <a href="http://wiki.splitbrain.org/wiki:install">instrukcjÄ
instalacji Dokuwiki</a>';
+$lang['i_funcna'] = 'Funkcja PHP <code>%s</code> jest niedostÄpna.';
+$lang['i_phpver'] = 'Wersja PHP <code>%s</code> jest niższa od wymaganej <code>%s</code>. Zaktualizuj instalacjÄ PHP.';
+$lang['i_permfail'] = 'DokuWiki nie ma prawa zapisu w katalogu <code>%s</code>. ZmieÅ uprawnienia zapisu dla tego katalogu!';
+$lang['i_confexists'] = '<code>%s</code> już istnieje';
+$lang['i_writeerr'] = 'Nie można utworzyÄ <code>%s</code>. Sprawdź uprawnienia do katalogu lub pliku i stwórz plik rÄcznie.';
+$lang['i_badhash'] = 'nierozpoznany lub zmodyfikowany plik dokuwiki.php (skrót=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - nieprawidÅowa wartoÅÄ lub jej brak';
+$lang['i_success'] = 'Konfiguracja pomyÅlnie zakoÅczona. Możesz teraz usunÄ
Ä plik install.php. Przejdź do <a href="doku.php">Twojego nowego DokuWiki</a>.';
+$lang['i_failure'] = 'Podczas zapisu plików konfiguracyjnych wystÄ
piÅy bÅÄdy. Musisz usunÄ
Ä wszystkie problemy, zanim zaczniesz korzystaÄ z <a href="doku.php">Twojego nowego DokuWiki</a>.';
+$lang['i_policy'] = 'WstÄpna polityka uprawnieÅ ACL';
+$lang['i_pol0'] = 'Otwarte Wiki (odczyt, zapis i dodawanie plików dla wszystkich)';
+$lang['i_pol1'] = 'Publiczne Wiki (odczyt dla wszystkich, zapis i dodawanie plików tylko dla zarejestrowanych użytkowników)';
+$lang['i_pol2'] = 'ZamkniÄte Wiki (odczyt, zapis i dodawanie plików tylko dla zarejestrowanych użytkowników)';
+$lang['i_retry'] = 'Spróbuj ponownie';
Modified: site/trunk/www-root/wiki/inc/lang/pl/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Strona zablokowana ======
-
-Ta strona jest zablokowana do edycji przez innego użytkownika.
-Musisz zaczekaÄ aż użytkownik zakoÅczy redagowanie lub jego blokada wygaÅnie.
+====== Strona zablokowana ======
+
+Ta strona jest zablokowana do edycji przez innego użytkownika.
+Musisz zaczekaÄ aż użytkownik zakoÅczy redagowanie lub jego blokada wygaÅnie.
Modified: site/trunk/www-root/wiki/inc/lang/pl/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Logowanie ======
-
-Wprowadź nazwÄ użytkownika i hasÅo aby siÄ zalogowaÄ.
-Twoja przeglÄ
darka musi mieÄ wÅÄ
czonÄ
obsÅugÄ ciasteczek (cookies).
-
+====== Logowanie ======
+
+Wprowadź nazwÄ użytkownika i hasÅo aby siÄ zalogowaÄ.
+Twoja przeglÄ
darka musi mieÄ wÅÄ
czonÄ
obsÅugÄ ciasteczek (cookies).
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-Strona w Twoim DokuWiki zostaÅa dodana lub zmieniona.
-SzczegóÅowe informacje:
-
-Data : @DATE@
-PrzeglÄ
darka : @BROWSER@
-Adres IP : @IPADDRESS@
-Nazwa DNS : @HOSTNAME@
-Stara wersja : @OLDPAGE@
-Nowa wersja : @NEWPAGE@
-Opis zmian : @SUMMARY@
-Użytkownik : @USER@
-
- at DIFF@
-
-
---
-List zostaÅ wygenerowany przez DokuWiki pod adresem
- at DOKUWIKIURL@
+Strona w Twoim DokuWiki zostaÅa dodana lub zmieniona.
+SzczegóÅowe informacje:
+
+Data : @DATE@
+PrzeglÄ
darka : @BROWSER@
+Adres IP : @IPADDRESS@
+Nazwa DNS : @HOSTNAME@
+Stara wersja : @OLDPAGE@
+Nowa wersja : @NEWPAGE@
+Opis zmian : @SUMMARY@
+Użytkownik : @USER@
+
+ at DIFF@
+
+
+--
+List zostaÅ wygenerowany przez DokuWiki pod adresem
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pl/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Ta strona jeszcze nie istnieje ======
-
-JesteŠna stronie, która jeszcze nie istnieje.
-JeÅli masz wystarczajÄ
ce uprawnienia, możesz utworzyÄ tÄ stronÄ klikajÄ
c ''utwórz stronÄ''.
-
+====== Ta strona jeszcze nie istnieje ======
+
+JesteŠna stronie, która jeszcze nie istnieje.
+JeÅli masz wystarczajÄ
ce uprawnienia, możesz utworzyÄ tÄ stronÄ klikajÄ
c ''utwórz stronÄ''.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Nie ma takiej wersji ======
-
-Nie ma takiej wersji.
-Kliknij przycisk ''poprzednie wersje'', aby wyÅwietliÄ listÄ wszystkich wersji tej strony.
-
+====== Nie ma takiej wersji ======
+
+Nie ma takiej wersji.
+Kliknij przycisk ''poprzednie wersje'', aby wyÅwietliÄ listÄ wszystkich wersji tej strony.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Witaj @FULLNAME@!
-
-Dane użytkownika @TITLE@ pod adresem @DOKUWIKIURL@
-
-Użytkownik : @LOGIN@
-HasÅo : @PASSWORD@
-
---
-List zostaÅ wygenerowany przez DokuWiki pod adresem
- at DOKUWIKIURL@
+Witaj @FULLNAME@!
+
+Dane użytkownika @TITLE@ pod adresem @DOKUWIKIURL@
+
+Użytkownik : @LOGIN@
+HasÅo : @PASSWORD@
+
+--
+List zostaÅ wygenerowany przez DokuWiki pod adresem
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pl/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== PodglÄ
d ======
-
-To jest podglÄ
d edytowanej strony.
-PamiÄtaj, że ta strona **nie** jest jeszcze zapisana!
-
+====== PodglÄ
d ======
+
+To jest podglÄ
d edytowanej strony.
+PamiÄtaj, że ta strona **nie** jest jeszcze zapisana!
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Witaj @FULLNAME@!
-
-Potwierdzenie proÅby o nowe hasÅo dla konta @TITLE@ w wiki @DOKUWIKIURL@
-
-JeÅli to nie Ty prosiÅeÅ(aÅ) o nowe hasÅo, zignoruj ten list.
-
-Aby potwierdziÄ proÅbÄ o hasÅo, przejdź na nastÄpujÄ
cÄ
stronÄ.
-
- at CONFIRM@
-
---
-List zostaÅ wygenerowany przez DokuWiki pod adresem
- at DOKUWIKIURL@
+Witaj @FULLNAME@!
+
+Potwierdzenie proÅby o nowe hasÅo dla konta @TITLE@ w wiki @DOKUWIKIURL@
+
+JeÅli to nie Ty prosiÅeÅ(aÅ) o nowe hasÅo, zignoruj ten list.
+
+Aby potwierdziÄ proÅbÄ o hasÅo, przejdź na nastÄpujÄ
cÄ
stronÄ.
+
+ at CONFIRM@
+
+--
+List zostaÅ wygenerowany przez DokuWiki pod adresem
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pl/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Ta strona jest tylko do odczytu.
-Możesz wyÅwietliÄ ÅºródÅa tej strony ale nie możesz ich zmieniÄ.
-
+Ta strona jest tylko do odczytu.
+Możesz wyÅwietliÄ ÅºródÅa tej strony ale nie możesz ich zmieniÄ.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Ostatnie zmiany ======
-
-Ostatnio zmienione strony.
-
-
+====== Ostatnie zmiany ======
+
+Ostatnio zmienione strony.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Rejestracja nowego użytkownika ======
-
-WypeÅnij wszystkie pola formularza aby utworzyÄ nowe konto w tym wiki.
-PamiÄtaj, żeby podaÄ **poprawny adres e-mail**, ponieważ nowe hasÅo może zostaÄ do Ciebie przesÅane pocztÄ
.
-Nazwa użytkownika powinna byÄ zgodna z formatem [[doku>wiki:pagename|nazw stron]].
-
+====== Rejestracja nowego użytkownika ======
+
+WypeÅnij wszystkie pola formularza aby utworzyÄ nowe konto w tym wiki.
+PamiÄtaj, żeby podaÄ **poprawny adres e-mail**, ponieważ nowe hasÅo może zostaÄ do Ciebie przesÅane pocztÄ
.
+Nazwa użytkownika powinna byÄ zgodna z formatem [[doku>wiki:pagename|nazw stron]].
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-ZarejestrowaÅ siÄ nowy użytkownik.
-SzczegóÅowe informacje:
-
-Użytkownik : @NEWUSER@
-ImiÄ i nazwisko : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Data : @DATE@
-PrzeglÄ
darka : @BROWSER@
-Adres IP : @IPADDRESS@
-Nazwa DNS : @HOSTNAME@
-
---
-List zostaÅ wygenerowany przez DokuWiki pod adresem
- at DOKUWIKIURL@
+ZarejestrowaÅ siÄ nowy użytkownik.
+SzczegóÅowe informacje:
+
+Użytkownik : @NEWUSER@
+ImiÄ i nazwisko : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Data : @DATE@
+PrzeglÄ
darka : @BROWSER@
+Adres IP : @IPADDRESS@
+Nazwa DNS : @HOSTNAME@
+
+--
+List zostaÅ wygenerowany przez DokuWiki pod adresem
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pl/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== PrzesyÅanie nowego hasÅa ======
-
-Aby otrzymaÄ nowe hasÅo, podaj nazwÄ Twojego konta w tym wiki.
-ProÅba o potwierdzenie w postaci odnoÅnika zostanie Ci przesÅana pocztÄ
elektronicznÄ
.
-
+====== PrzesyÅanie nowego hasÅa ======
+
+Aby otrzymaÄ nowe hasÅo, podaj nazwÄ Twojego konta w tym wiki.
+ProÅba o potwierdzenie w postaci odnoÅnika zostanie Ci przesÅana pocztÄ
elektronicznÄ
.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Poprzednie wersje ======
-
-Poprzednie wersje tej strony.
-Aby przywróciÄ poprzedniÄ
wersjÄ wybierz jÄ
, rozpocznij edycjÄ a potem zapisz.
-
+====== Poprzednie wersje ======
+
+Poprzednie wersje tej strony.
+Aby przywróciÄ poprzedniÄ
wersjÄ wybierz jÄ
, rozpocznij edycjÄ a potem zapisz.
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Wyszukiwanie ======
-
-Wyniki wyszukiwania.
-JeÅli nie znaleziono szukanego hasÅa, możesz utworzyÄ nowÄ
stronÄ, której tytuÅem bÄdzie poszukiwane hasÅo.
-
-===== Wyniki =====
+====== Wyszukiwanie ======
+
+Wyniki wyszukiwania.
+JeÅli nie znaleziono szukanego hasÅa, możesz utworzyÄ nowÄ
stronÄ, której tytuÅem bÄdzie poszukiwane hasÅo.
+
+===== Wyniki =====
Modified: site/trunk/www-root/wiki/inc/lang/pl/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**To jest stara wersja strony!**
-----
+**To jest stara wersja strony!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/pl/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,89 +1,89 @@
-# Lista sÅów ignorowanych przy indeksowaniu treÅci.
-# W jednej linii powinno znajdowaÄ siÄ tylko jedno sÅowo.
-# Przy edycji tego pliku pamiÄtaj o używaniu uniksowego koÅca linii (LF).
-# Nie ma potrzeby wpisywania sÅów krótszych niż 3 znaki, ponieważ one sÄ
zawsze ignorowane.
-# Lista oparta na danych ze strony http://www.ranks.nl/stopwords/
-aby
-ale
-bardziej
-bardzo
-bez
-bowiem
-byÅ
-byÅa
-byÅo
-byÅy
-bÄdzie
-czy
-czyli
-dla
-dlatego
-gdy
-gdzie
-ich
-innych
-jak
-jako
-jednak
-jego
-jej
-jest
-jeszcze
-jeÅli
-już
-kiedy
-kilka
-która
-które
-którego
-której
-który
-których
-którym
-którzy
-lub
-miÄdzy
-mnie
-mogÄ
-może
-można
-nad
-nam
-nas
-naszego
-naszych
-nawet
-nich
-nie
-nim
-niż
-oraz
-pod
-poza
-przed
-przede
-przez
-przy
-również
-siÄ
-sobie
-swoje
-tak
-takie
-także
-tam
-tego
-tej
-ten
-też
-tych
-tylko
-tym
-wiele
-wielu
-wiÄc
-wszystkich
-wszystkim
-wszystko
-wÅaÅnie
-zawsze
+# Lista sÅów ignorowanych przy indeksowaniu treÅci.
+# W jednej linii powinno znajdowaÄ siÄ tylko jedno sÅowo.
+# Przy edycji tego pliku pamiÄtaj o używaniu uniksowego koÅca linii (LF).
+# Nie ma potrzeby wpisywania sÅów krótszych niż 3 znaki, ponieważ one sÄ
zawsze ignorowane.
+# Lista oparta na danych ze strony http://www.ranks.nl/stopwords/
+aby
+ale
+bardziej
+bardzo
+bez
+bowiem
+byÅ
+byÅa
+byÅo
+byÅy
+bÄdzie
+czy
+czyli
+dla
+dlatego
+gdy
+gdzie
+ich
+innych
+jak
+jako
+jednak
+jego
+jej
+jest
+jeszcze
+jeÅli
+już
+kiedy
+kilka
+która
+które
+którego
+której
+który
+których
+którym
+którzy
+lub
+miÄdzy
+mnie
+mogÄ
+może
+można
+nad
+nam
+nas
+naszego
+naszych
+nawet
+nich
+nie
+nim
+niż
+oraz
+pod
+poza
+przed
+przede
+przez
+przy
+również
+siÄ
+sobie
+swoje
+tak
+takie
+także
+tam
+tego
+tej
+ten
+też
+tych
+tylko
+tym
+wiele
+wielu
+wiÄc
+wszystkich
+wszystkim
+wszystko
+wÅaÅnie
+zawsze
Modified: site/trunk/www-root/wiki/inc/lang/pl/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Witaj!
-
-Strona @PAGE@ w wiki @TITLE@ zostaÅa zmieniona.
-SzczegóÅy:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Aby zaprzestaÄ subskrypcji zmian tej strony zaloguj siÄ na
- at DOKUWIKIURL@ a nastÄpnie przejdź do strony
- at NEWPAGE@
-i wybierz 'zaprzestaÅ subskrypcji zmian'.
-
---
-List zostaÅ wygenerowany przez DokuWiki pod adresem
- at DOKUWIKIURL@
+Witaj!
+
+Strona @PAGE@ w wiki @TITLE@ zostaÅa zmieniona.
+SzczegóÅy:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Aby zaprzestaÄ subskrypcji zmian tej strony zaloguj siÄ na
+ at DOKUWIKIURL@ a nastÄpnie przejdź do strony
+ at NEWPAGE@
+i wybierz 'zaprzestaÅ subskrypcji zmian'.
+
+--
+List zostaÅ wygenerowany przez DokuWiki pod adresem
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pl/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Aktualizacja profilu użytkownika ======
-
-Wystarczy, że wypeÅnisz tylko te pola, które chcesz zmieniÄ. Nie możesz zmieniÄ nazwy użytkownika.
-
-
+====== Aktualizacja profilu użytkownika ======
+
+Wystarczy, że wypeÅnisz tylko te pola, które chcesz zmieniÄ. Nie możesz zmieniÄ nazwy użytkownika.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/pl/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Umieszczono nowy plik.
-
-SzczegóÅy:
-
-Plik : @MEDIA@
-Data : @DATE@
-PrzeglÄ
darka : @BROWSER@
-Adres IP : @IPADDRESS@
-Nazwa DNS : @HOSTNAME@
-Rozmiar : @SIZE@
-Typ MIME : @MIME@
-Użytkownik : @USER@
-
---
-List zostaÅ wygenerowany przez DokuWiki pod adresem
- at DOKUWIKIURL@
+Umieszczono nowy plik.
+
+SzczegóÅy:
+
+Plik : @MEDIA@
+Data : @DATE@
+PrzeglÄ
darka : @BROWSER@
+Adres IP : @IPADDRESS@
+Nazwa DNS : @HOSTNAME@
+Rozmiar : @SIZE@
+Typ MIME : @MIME@
+Użytkownik : @USER@
+
+--
+List zostaÅ wygenerowany przez DokuWiki pod adresem
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pl/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pl/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pl/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Blokowanie niedozwolonych treÅci i spamu ======
-
-Twoje zmiany **nie** zostaÅy zapisane, ponieważ zawierajÄ
niedozwolone sÅowa.
-JeÅli próbowaÅeÅ(aÅ) umieÅciÄ niedozwolone treÅci to wstydź siÄ!
-
+====== Blokowanie niedozwolonych treÅci i spamu ======
+
+Twoje zmiany **nie** zostaÅy zapisane, ponieważ zawierajÄ
niedozwolone sÅowa.
+JeÅli próbowaÅeÅ(aÅ) umieÅciÄ niedozwolone treÅci to wstydź siÄ!
+
Modified: site/trunk/www-root/wiki/inc/lang/pt/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Administração ======
-
-Esta é a lista de tarefas de Administração permitidas pelo DokuWiki.
-
-----
+====== Administração ======
+
+Esta é a lista de tarefas de Administração permitidas pelo DokuWiki.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Backlinks ======
-
-Esta é uma lista de todos os documentos que apresentam ligações ao documento corrente.
-
+====== Backlinks ======
+
+Esta é uma lista de todos os documentos que apresentam ligações ao documento corrente.
+
Modified: site/trunk/www-root/wiki/inc/lang/pt/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-====== Conflito de Edição ======
-
-**Atenção**: Existe uma versão mais recente do que a versão usada no começo da sua edição.
-Isto acontece quando outra pessoa editou este documento entretanto e já gravou as alterações efectuadas.
-
-Por favor, examine todas as diferenças mostradas abaixo com atenção, e decida qual a versão que deverá ser tornada a mais actual:
- * Se escolher <Gravar> a sua versão será sobreposta à versão editada pela outra pessoa, que será perdida.
- * Se escolher <Cancelar> a versão editada pela outra pessoa será a versão final, e a sua será perdida.
-
-**Nota**: Sem que efectue a consolidação das alterações de ambas as revisões ao documento irá sempre perder uma das versões.
-
-----
+====== Conflito de Edição ======
+
+**Atenção**: Existe uma versão mais recente do que a versão usada no começo da sua edição.
+Isto acontece quando outra pessoa editou este documento entretanto e já gravou as alterações efectuadas.
+
+Por favor, examine todas as diferenças mostradas abaixo com atenção, e decida qual a versão que deverá ser tornada a mais actual:
+ * Se escolher <Gravar> a sua versão será sobreposta à versão editada pela outra pessoa, que será perdida.
+ * Se escolher <Cancelar> a versão editada pela outra pessoa será a versão final, e a sua será perdida.
+
+**Nota**: Sem que efectue a consolidação das alterações de ambas as revisões ao documento irá sempre perder uma das versões.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Permissão Negada ======
-
-Não possui direitos e permissões suficientes para continuar. Por acaso, não se esqueceu de entrar em sessão?
-
-----
+====== Permissão Negada ======
+
+Não possui direitos e permissões suficientes para continuar. Por acaso, não se esqueceu de entrar em sessão?
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Diferenças ======
-
-Esta página mostra as diferenças entre a revisão do documento que escolheu e a versão actual.
-
-----
+====== Diferenças ======
+
+Esta página mostra as diferenças entre a revisão do documento que escolheu e a versão actual.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Rascunho encontrado ======
-
-A sessão referente à última edição desta página não terminou correctamente. Foi guardado automaticamente um rascunho durante a edição que pode ou não usar para continuar a edição. Abaixo pode ver os dados guardados da última sessão.
-
-Por favor, decida se quer **recuperar** os dados guardados, **remover** o rascunho** ou **cancelar** o processo de edição corrente.
-
-----
+====== Rascunho encontrado ======
+
+A sessão referente à última edição desta página não terminou correctamente. Foi guardado automaticamente um rascunho durante a edição que pode ou não usar para continuar a edição. Abaixo pode ver os dados guardados da última sessão.
+
+Por favor, decida se quer **recuperar** os dados guardados, **remover** o rascunho** ou **cancelar** o processo de edição corrente.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-Edite o documento e clique no botão <Gravar>. Reveja a [[wiki:syntax|sintaxe]] das regras de formatação do texto.
-
-Por favor, altere o conteúdo deste documento apenas quando puder **melhorá-lo**.\\
-Se pretende testar os seus conhecimentos no uso deste motor Wiki, realize os seus testes no [[playground:playground | Recreio]].
-
+Edite o documento e clique no botão <Gravar>. Reveja a [[wiki:syntax|sintaxe]] das regras de formatação do texto.
+
+Por favor, altere o conteúdo deste documento apenas quando puder **melhorá-lo**.\\
+Se pretende testar os seus conhecimentos no uso deste motor Wiki, realize os seus testes no [[playground:playground | Recreio]].
+
Modified: site/trunk/www-root/wiki/inc/lang/pt/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-**Atenção**: Carregou uma revisão antiga do documento!
-
-Se gravar esta revisão irá criar uma nova versão actual do documento com este conteúdo, que substituirá a versão actual.
-
-----
+**Atenção**: Carregou uma revisão antiga do documento!
+
+Se gravar esta revisão irá criar uma nova versão actual do documento com este conteúdo, que substituirá a versão actual.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Ãndice ======
-
-Este Ãndice mostra todos os documentos disponÃveis neste site Wiki, [[doku>wiki:namespaces | agrupados]] por assunto.
-
-----
-
+====== Ãndice ======
+
+Este Ãndice mostra todos os documentos disponÃveis neste site Wiki, [[doku>wiki:namespaces | agrupados]] por assunto.
+
+----
+
Modified: site/trunk/www-root/wiki/inc/lang/pt/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-<p>Esta página serve de "assistente" para a primeira instalação e configuração do <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Está disponÃvel mais informação sobre este "assistente" na sua <a href="http://wiki.splitbrain.org/wiki:installer">página de documentação</a>.</p>
-
-<p>O DokuWiki usa ficheiros normais para armazenar as páginas Wiki e outras informações associadas a essas páginas (i.e. imagens, Ãndices de pesquisa, revisões antigas, etc.). O DokuWiki para poder funcionar correctamente <strong>requer</strong> permissões de escrita à s pastas que contêm esses ficheiros. Este "assistente" não é capaz de configurar essas permissões. Isso tem que ser feito via linha de comandos, FTP ou Painel de Controlo do serviço de alojamento (i.e. cPanel).</p>
-
-<p>Este "assistente" vai configurar o DokuWiki com
-<acronym title="access control list">ACL</acronym>, que por sua vez permite ao administrador entrar em sessão e aceder ao menu de Administração do DokuWiki para poder instalar plugins, gerir utilizadores e seus perfis, gerir acesso às páginas e à própria configuração do DokuWiki. Não é necessário para que o DokuWiki funcione, mas facilita a sua administração.</p>
-
+<p>Esta página serve de "assistente" para a primeira instalação e configuração do <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Está disponÃvel mais informação sobre este "assistente" na sua <a href="http://wiki.splitbrain.org/wiki:installer">página de documentação</a>.</p>
+
+<p>O DokuWiki usa ficheiros normais para armazenar as páginas Wiki e outras informações associadas a essas páginas (i.e. imagens, Ãndices de pesquisa, revisões antigas, etc.). O DokuWiki para poder funcionar correctamente <strong>requer</strong> permissões de escrita à s pastas que contêm esses ficheiros. Este "assistente" não é capaz de configurar essas permissões. Isso tem que ser feito via linha de comandos, FTP ou Painel de Controlo do serviço de alojamento (i.e. cPanel).</p>
+
+<p>Este "assistente" vai configurar o DokuWiki com
+<acronym title="access control list">ACL</acronym>, que por sua vez permite ao administrador entrar em sessão e aceder ao menu de Administração do DokuWiki para poder instalar plugins, gerir utilizadores e seus perfis, gerir acesso às páginas e à própria configuração do DokuWiki. Não é necessário para que o DokuWiki funcione, mas facilita a sua administração.</p>
+
<p>Utilizadores experiente ou com requisitos especiais devem seguir estes links, que detalham mais em pormenor a<a href="http://wiki.splitbrain.org/wiki:install">instalação</a> e <a href="http://wiki.splitbrain.org/wiki:config">configuração</a> do DokuWiki.</p>
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,199 +1,199 @@
-<?php
-/**
- * Portuguese language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author José Carlos Monteiro <jose.c.monteiro at netcabo.pt>
- * @author José Monteiro <Jose.Monteiro at DoWeDo-IT.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '´';
-$lang['btn_edit'] = 'Editar Página';
-$lang['btn_source'] = 'Ver em bruto';
-$lang['btn_show'] = 'Ver Página';
-$lang['btn_create'] = 'Criar Página';
-$lang['btn_search'] = 'Pesquisar';
-$lang['btn_save'] = 'Gravar';
-$lang['btn_preview'] = 'Prever';
-$lang['btn_top'] = 'Voltar ao topo';
-$lang['btn_newer'] = '<< mais recente';
-$lang['btn_older'] = 'menos recente >>';
-$lang['btn_revs'] = 'Revisões';
-$lang['btn_recent'] = 'Alt. Recentes';
-$lang['btn_upload'] = 'Carregar';
-$lang['btn_cancel'] = 'Cancelar';
-$lang['btn_index'] = 'Ãndice';
-$lang['btn_secedit'] = 'Editar';
-$lang['btn_login'] = 'Entrar em sessão';
-$lang['btn_logout'] = 'Sair da sessão';
-$lang['btn_admin'] = 'Gerir';
-$lang['btn_update'] = 'Actualizar';
-$lang['btn_delete'] = 'Apagar';
-$lang['btn_back'] = 'Voltar';
-$lang['btn_backlink'] = 'Backlinks';
-$lang['btn_backtomedia'] = 'Voltar à Selecção de Media';
-$lang['btn_subscribe'] = 'Subscrever Alterações';
-$lang['btn_unsubscribe'] = 'Não Subscrever Alterações';
-$lang['btn_profile'] = 'Actualizar Perfil';
-$lang['btn_reset'] = 'Limpar';
-$lang['btn_resendpwd'] = 'Enviar nova senha';
-$lang['btn_draft'] = 'Editar rascunho';
-$lang['btn_recover'] = 'Recuperar rascunho';
-$lang['btn_draftdel'] = 'Apagar rascunho';
-$lang['loggedinas'] = 'Está em sessão como';
-$lang['user'] = 'Utilizador';
-$lang['pass'] = 'Senha';
-$lang['newpass'] = 'Nova senha';
-$lang['oldpass'] = 'Confirme senha actual';
-$lang['passchk'] = 'Confirmar novamente';
-$lang['remember'] = 'Sessão Automática?';
-$lang['fullname'] = 'Nome completo';
-$lang['email'] = 'Correio Electrónico';
-$lang['register'] = 'Inscrever';
-$lang['profile'] = 'Perfil do Utilizador';
-$lang['badlogin'] = 'O utilizador inválido ou senha inválida.';
-$lang['minoredit'] = 'Alterações Menores';
-$lang['draftdate'] = 'Rascunho automaticamente gravado em';
-$lang['regmissing'] = 'Por favor, preencha todos os campos.';
-$lang['reguexists'] = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
-$lang['regsuccess'] = 'O utilizador foi criado e a senha foi enviada para o endereço de correio electrónico usado na inscrição.';
-$lang['regsuccess2'] = 'O utilizador foi criado.';
-$lang['regmailfail'] = 'Houve um erro no envio da senha por e-mail. Por favor, contacte o administrador!';
-$lang['regbadmail'] = 'O endereço de correio electrónico é inválido. Se o endereço está correcto, e isto é um erro, por favor, contacte o administrador!';
-$lang['regbadpass'] = 'As duas senhas não são idênticas, por favor tente de novo.';
-$lang['regpwmail'] = 'A sua senha DokuWiki';
-$lang['reghere'] = 'Para se inscrever, clique em';
-$lang['profna'] = 'Este Wiki não suporta modificações aos perfis.';
-$lang['profnochange'] = 'Nada alteração, nada a fazer.';
-$lang['profnoempty'] = 'Não são permitidos nomes ou endereços em branco.';
-$lang['profchanged'] = 'Perfil do utilizador actualizado com sucesso.';
-$lang['pwdforget'] = 'Senha esquecida? Pedir nova senha';
-$lang['resendna'] = 'Este Wiki não suporta re-envio de senhas.';
-$lang['resendpwd'] = 'Enviar nova senha para';
-$lang['resendpwdmissing'] = 'Ã preciso preencher todos os campos.';
-$lang['resendpwdnouser'] = 'Não foi possÃvel encontrar este utilizador.';
-$lang['resendpwdbadauth'] = 'O código de autenticação não é válido. Por favor, assegure-se de que o link de confirmação está completo.';
-$lang['resendpwdconfirm'] = 'O link de confirmação foi enviado por e-mail.';
-$lang['resendpwdsuccess'] = 'A nova senha foi enviada por e-mail.';
-$lang['txt_upload'] = 'Escolha ficheiro para carregar';
-$lang['txt_filename'] = 'Carregar como (opcional)';
-$lang['txt_overwrt'] = 'Escrever por cima do ficheiro já existente';
-$lang['lockedby'] = 'Bloqueado por';
-$lang['lockexpire'] = 'Expira em';
-$lang['willexpire'] = 'O bloqueio de edição para este documento irá expirar num minuto.\nPara evitar conflitos de edição, clique no botão <Prever> para re-iniciar o temporizador de bloqueio.';
-$lang['notsavedyet'] = 'Existem alterações não gravadas, que serão perdidas se continuar.\nDeseja realmente continuar?';
-$lang['rssfailed'] = 'Ocorreu um erro neste canal RSS: ';
-$lang['nothingfound'] = 'Nada foi encontrado.';
-$lang['mediaselect'] = 'Selecção de ficheiros';
-$lang['fileupload'] = 'Carregamento de ficheiros';
-$lang['uploadsucc'] = 'Carregamento com sucesso';
-$lang['uploadfail'] = 'Falhou o carregamento. Talvez por não ter permissões?';
-$lang['uploadwrong'] = 'Carregamento negado. Esta extensão está proibida.';
-$lang['uploadexist'] = 'O ficheiro já existe. Não pode ser carregado.';
-$lang['uploadbadcontent'] = 'O conteúdo carregado não corresponde à extensão %s.';
-$lang['uploadspam'] = 'O carregamento foi bloqueado pela lista negra de SPAM.';
-$lang['uploadxss'] = 'O carregamento foi bloqueado porque possivelmente contem conteúdo malicioso.';
-$lang['deletesucc'] = 'O ficheiro "%s" foi removido.';
-$lang['deletefail'] = 'O ficheiro "%s" não pode ser removido, por favor verifique as permissões.';
-$lang['mediainuse'] = 'O ficheiro "%s" não foi removido porque está ainda a ser usado.';
-$lang['namespaces'] = 'Grupos';
-$lang['mediafiles'] = 'Ficheiros disponÃveis em';
-$lang['js']['keepopen'] = 'Mantenha a janela aberta durante a selecção';
-$lang['js']['hidedetails'] = 'Esconder Detalhes';
-$lang['mediausage'] = 'Use a seguinte sintaxe para referenciar este ficheiro:';
-$lang['mediaview'] = 'Ver ficheiro original';
-$lang['mediaupload'] = 'Carregar ficheiros para o grupo actual aqui. Para criar sub-grupos: escrever o nome do sub-grupo seguido de : antes do nome do ficheiro no campo "Carregar como".';
-$lang['mediaextchange'] = 'Extensão alterada de .%s para .%s!';
-$lang['reference'] = 'Referências para';
-$lang['ref_inuse'] = 'O ficheiro "%s" não pode ser removido, porque está ainda a ser usado nestes documentos:';
-$lang['ref_hidden'] = 'Algumas referências estão em documentos para os quais não tem permissão para ler';
-$lang['hits'] = 'Resultados';
-$lang['quickhits'] = 'Documentos encontrados';
-$lang['toc'] = 'Tabela de Conteúdos';
-$lang['current'] = 'Actual';
-$lang['yours'] = 'A sua versão';
-$lang['diff'] = 'mostrar diferenças com a versão actual';
-$lang['diff2'] = 'mostrar diferenças entre versões escolhidas';
-$lang['line'] = 'Linha';
-$lang['breadcrumb'] = 'Visitou';
-$lang['youarehere'] = 'Está aqui';
-$lang['lastmod'] = 'Modificado em';
-$lang['by'] = 'por';
-$lang['deleted'] = 'Documento automaticamente removido.';
-$lang['created'] = 'Criação deste novo documento.';
-$lang['restored'] = 'Versão anterior restaurada.';
-$lang['external_edit'] = 'Edição externa';
-$lang['summary'] = 'Sumário da Edição';
-$lang['mail_newpage'] = 'documento adicionado:';
-$lang['mail_changed'] = 'documento modificado:';
-$lang['mail_new_user'] = 'Novo utilizador:';
-$lang['mail_upload'] = 'Ficheiro carregado:';
-$lang['nosmblinks'] = 'Ligação a pastas Windows partilhadas apenas funciona com o Microsoft Internet Explorer.\nPode no entanto copiar e colar o link.';
-$lang['qb_alert'] = 'Por favor, insira o texto que deseja formatar.\nSerá acrescentado ao fim do documento.';
-$lang['qb_bold'] = 'Texto com Ãnfase';
-$lang['qb_italic'] = 'Texto Itálico';
-$lang['qb_underl'] = 'Texto Sublinhado';
-$lang['qb_code'] = 'Texto Código';
-$lang['qb_strike'] = 'Texto Riscado';
-$lang['qb_h1'] = 'Cabeçalho NÃvel 1';
-$lang['qb_h2'] = 'Cabeçalho NÃvel 2';
-$lang['qb_h3'] = 'Cabeçalho NÃvel 3';
-$lang['qb_h4'] = 'Cabeçalho NÃvel 4';
-$lang['qb_h5'] = 'Cabeçalho NÃvel 5';
-$lang['qb_link'] = 'Ligação Interna';
-$lang['qb_extlink'] = 'Ligação Externa';
-$lang['qb_hr'] = 'Barra Horizontal';
-$lang['qb_ol'] = 'Item numa Lista Ordenada';
-$lang['qb_ul'] = 'Item numa Lista Não Ordenada';
-$lang['qb_media'] = 'Incluir imagens e outros ficheiros';
-$lang['qb_sig'] = 'Inserir Assinatura';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Caracteres Especiais';
-$lang['del_confirm'] = 'Remover esta entrada?';
-$lang['admin_register'] = 'Inscrever Novo Utilizador';
-$lang['metaedit'] = 'Editar Metadata';
-$lang['metasaveerr'] = 'Falhou a escrita de Metadata';
-$lang['metasaveok'] = 'Metadata gravada';
-$lang['img_backto'] = 'De volta a';
-$lang['img_title'] = 'TÃrulo';
-$lang['img_caption'] = 'Legenda';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Ficheiro';
-$lang['img_fsize'] = 'Tamanho';
-$lang['img_artist'] = 'Fotógrafo';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Câmera';
-$lang['img_keywords'] = 'Palavras-Chave';
-$lang['subscribe_success'] = '%s adicionado à lista de subscritores de %s';
-$lang['subscribe_error'] = 'Erro ao adicionar %s à lista de subscritores de %s';
-$lang['subscribe_noaddress'] = 'Não existe nenhum endereço associado ao seu perfil, por isso não pode ser adicionado à lista de subscritores.';
-$lang['unsubscribe_success'] = '%s removido da lista de subscritores de %s';
-$lang['unsubscribe_error'] = 'Erro ao remover %s da lista de subscritores de %s';
-$lang['authmodfailed'] = 'Configuração de autenticação errada. Por favor, informe o Wiki Admin.';
-$lang['authtempfail'] = 'Autenticação temporariamente indisponÃvel. Se a situação persistir, por favor informe o Wiki Admin.';
-$lang['i_chooselang'] = 'Escolha a linguagem';
-$lang['i_installer'] = 'DokuWiki Installer';
-$lang['i_wikiname'] = 'Nome Wiki';
-$lang['i_enableacl'] = 'Activar ACL (recomendado)';
-$lang['i_superuser'] = 'Super-utilizador';
-$lang['i_problems'] = 'O Installer encontrou alguns problemas, indicados mais abaixo. Não pode continuar até que sejam corrigidos.';
-$lang['i_modified'] = 'Por razões de segurança, este script só funciona em novas e não-modificadas instalações do Dokuwiki. Deve por isso re-extrair os ficheiros do pacote que descarregou ou então deve consultar as completas <a href="http://wiki.splitbrain.org/wiki:install">instruções de instalação do Dokuwiki installation instructions</a>';
-$lang['i_funcna'] = 'A função PHP <code>%s</code> não está disponÃvel. Terá o serviço de alojamento desactivado-a por alguma razão?';
-$lang['i_phpver'] = 'A versão de PHP actual <code>%s</code> é inferior à versão mÃnima <code>%s</code>. à preciso actualizar a instalação PHP.';
-$lang['i_permfail'] = '<code>%s</code> não permite que o DokuWiki escreva nela. à preciso corrigir as permissões desta pasta!';
-$lang['i_confexists'] = '<code>%s</code> já existe';
-$lang['i_writeerr'] = 'Não foi possÃvel criar <code>%s</code>. à preciso verificar as permissões e criar o ficheiro manualmente.';
-$lang['i_badhash'] = 'dokuwiki.php não é o original ou não é reconhecido (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - valor ilegal ou vazio';
-$lang['i_success'] = 'A instalação e configuração inicial foram bem sucedidas. Pode remover o install.php. Aceda ao seu novo <a href="doku.php">Wiki</a> a correr o DokuWiki.';
-$lang['i_failure'] = 'Ocorreram alguns erros durante a escrita nos ficheiros de configuração. Poderá ser preciso corrigi-los manualmente antes de poder aceder ao seu novo <a href="doku.php">Wiki</a> a correr o DokuWiki.';
-$lang['i_policy'] = 'Politica ACL inicial';
-$lang['i_pol0'] = 'Wiki Aberto (ler, escrever e carregar para todos)';
-$lang['i_pol1'] = 'Wiki Público (ler para todos, escrever e carregar para utilizadores inscritos)';
-$lang['i_pol2'] = 'Wiki Fechado (ler, escrever e carregar somente para utilizadores inscritos)';
+<?php
+/**
+ * Portuguese language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author José Carlos Monteiro <jose.c.monteiro at netcabo.pt>
+ * @author José Monteiro <Jose.Monteiro at DoWeDo-IT.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '´';
+$lang['btn_edit'] = 'Editar Página';
+$lang['btn_source'] = 'Ver em bruto';
+$lang['btn_show'] = 'Ver Página';
+$lang['btn_create'] = 'Criar Página';
+$lang['btn_search'] = 'Pesquisar';
+$lang['btn_save'] = 'Gravar';
+$lang['btn_preview'] = 'Prever';
+$lang['btn_top'] = 'Voltar ao topo';
+$lang['btn_newer'] = '<< mais recente';
+$lang['btn_older'] = 'menos recente >>';
+$lang['btn_revs'] = 'Revisões';
+$lang['btn_recent'] = 'Alt. Recentes';
+$lang['btn_upload'] = 'Carregar';
+$lang['btn_cancel'] = 'Cancelar';
+$lang['btn_index'] = 'Ãndice';
+$lang['btn_secedit'] = 'Editar';
+$lang['btn_login'] = 'Entrar em sessão';
+$lang['btn_logout'] = 'Sair da sessão';
+$lang['btn_admin'] = 'Gerir';
+$lang['btn_update'] = 'Actualizar';
+$lang['btn_delete'] = 'Apagar';
+$lang['btn_back'] = 'Voltar';
+$lang['btn_backlink'] = 'Backlinks';
+$lang['btn_backtomedia'] = 'Voltar à Selecção de Media';
+$lang['btn_subscribe'] = 'Subscrever Alterações';
+$lang['btn_unsubscribe'] = 'Não Subscrever Alterações';
+$lang['btn_profile'] = 'Actualizar Perfil';
+$lang['btn_reset'] = 'Limpar';
+$lang['btn_resendpwd'] = 'Enviar nova senha';
+$lang['btn_draft'] = 'Editar rascunho';
+$lang['btn_recover'] = 'Recuperar rascunho';
+$lang['btn_draftdel'] = 'Apagar rascunho';
+$lang['loggedinas'] = 'Está em sessão como';
+$lang['user'] = 'Utilizador';
+$lang['pass'] = 'Senha';
+$lang['newpass'] = 'Nova senha';
+$lang['oldpass'] = 'Confirme senha actual';
+$lang['passchk'] = 'Confirmar novamente';
+$lang['remember'] = 'Sessão Automática?';
+$lang['fullname'] = 'Nome completo';
+$lang['email'] = 'Correio Electrónico';
+$lang['register'] = 'Inscrever';
+$lang['profile'] = 'Perfil do Utilizador';
+$lang['badlogin'] = 'O utilizador inválido ou senha inválida.';
+$lang['minoredit'] = 'Alterações Menores';
+$lang['draftdate'] = 'Rascunho automaticamente gravado em';
+$lang['regmissing'] = 'Por favor, preencha todos os campos.';
+$lang['reguexists'] = 'Este utilizador já está inscrito. Por favor escolha outro nome de utilizador.';
+$lang['regsuccess'] = 'O utilizador foi criado e a senha foi enviada para o endereço de correio electrónico usado na inscrição.';
+$lang['regsuccess2'] = 'O utilizador foi criado.';
+$lang['regmailfail'] = 'Houve um erro no envio da senha por e-mail. Por favor, contacte o administrador!';
+$lang['regbadmail'] = 'O endereço de correio electrónico é inválido. Se o endereço está correcto, e isto é um erro, por favor, contacte o administrador!';
+$lang['regbadpass'] = 'As duas senhas não são idênticas, por favor tente de novo.';
+$lang['regpwmail'] = 'A sua senha DokuWiki';
+$lang['reghere'] = 'Para se inscrever, clique em';
+$lang['profna'] = 'Este Wiki não suporta modificações aos perfis.';
+$lang['profnochange'] = 'Nada alteração, nada a fazer.';
+$lang['profnoempty'] = 'Não são permitidos nomes ou endereços em branco.';
+$lang['profchanged'] = 'Perfil do utilizador actualizado com sucesso.';
+$lang['pwdforget'] = 'Senha esquecida? Pedir nova senha';
+$lang['resendna'] = 'Este Wiki não suporta re-envio de senhas.';
+$lang['resendpwd'] = 'Enviar nova senha para';
+$lang['resendpwdmissing'] = 'Ã preciso preencher todos os campos.';
+$lang['resendpwdnouser'] = 'Não foi possÃvel encontrar este utilizador.';
+$lang['resendpwdbadauth'] = 'O código de autenticação não é válido. Por favor, assegure-se de que o link de confirmação está completo.';
+$lang['resendpwdconfirm'] = 'O link de confirmação foi enviado por e-mail.';
+$lang['resendpwdsuccess'] = 'A nova senha foi enviada por e-mail.';
+$lang['txt_upload'] = 'Escolha ficheiro para carregar';
+$lang['txt_filename'] = 'Carregar como (opcional)';
+$lang['txt_overwrt'] = 'Escrever por cima do ficheiro já existente';
+$lang['lockedby'] = 'Bloqueado por';
+$lang['lockexpire'] = 'Expira em';
+$lang['willexpire'] = 'O bloqueio de edição para este documento irá expirar num minuto.\nPara evitar conflitos de edição, clique no botão <Prever> para re-iniciar o temporizador de bloqueio.';
+$lang['notsavedyet'] = 'Existem alterações não gravadas, que serão perdidas se continuar.\nDeseja realmente continuar?';
+$lang['rssfailed'] = 'Ocorreu um erro neste canal RSS: ';
+$lang['nothingfound'] = 'Nada foi encontrado.';
+$lang['mediaselect'] = 'Selecção de ficheiros';
+$lang['fileupload'] = 'Carregamento de ficheiros';
+$lang['uploadsucc'] = 'Carregamento com sucesso';
+$lang['uploadfail'] = 'Falhou o carregamento. Talvez por não ter permissões?';
+$lang['uploadwrong'] = 'Carregamento negado. Esta extensão está proibida.';
+$lang['uploadexist'] = 'O ficheiro já existe. Não pode ser carregado.';
+$lang['uploadbadcontent'] = 'O conteúdo carregado não corresponde à extensão %s.';
+$lang['uploadspam'] = 'O carregamento foi bloqueado pela lista negra de SPAM.';
+$lang['uploadxss'] = 'O carregamento foi bloqueado porque possivelmente contem conteúdo malicioso.';
+$lang['deletesucc'] = 'O ficheiro "%s" foi removido.';
+$lang['deletefail'] = 'O ficheiro "%s" não pode ser removido, por favor verifique as permissões.';
+$lang['mediainuse'] = 'O ficheiro "%s" não foi removido porque está ainda a ser usado.';
+$lang['namespaces'] = 'Grupos';
+$lang['mediafiles'] = 'Ficheiros disponÃveis em';
+$lang['js']['keepopen'] = 'Mantenha a janela aberta durante a selecção';
+$lang['js']['hidedetails'] = 'Esconder Detalhes';
+$lang['mediausage'] = 'Use a seguinte sintaxe para referenciar este ficheiro:';
+$lang['mediaview'] = 'Ver ficheiro original';
+$lang['mediaupload'] = 'Carregar ficheiros para o grupo actual aqui. Para criar sub-grupos: escrever o nome do sub-grupo seguido de : antes do nome do ficheiro no campo "Carregar como".';
+$lang['mediaextchange'] = 'Extensão alterada de .%s para .%s!';
+$lang['reference'] = 'Referências para';
+$lang['ref_inuse'] = 'O ficheiro "%s" não pode ser removido, porque está ainda a ser usado nestes documentos:';
+$lang['ref_hidden'] = 'Algumas referências estão em documentos para os quais não tem permissão para ler';
+$lang['hits'] = 'Resultados';
+$lang['quickhits'] = 'Documentos encontrados';
+$lang['toc'] = 'Tabela de Conteúdos';
+$lang['current'] = 'Actual';
+$lang['yours'] = 'A sua versão';
+$lang['diff'] = 'mostrar diferenças com a versão actual';
+$lang['diff2'] = 'mostrar diferenças entre versões escolhidas';
+$lang['line'] = 'Linha';
+$lang['breadcrumb'] = 'Visitou';
+$lang['youarehere'] = 'Está aqui';
+$lang['lastmod'] = 'Modificado em';
+$lang['by'] = 'por';
+$lang['deleted'] = 'Documento automaticamente removido.';
+$lang['created'] = 'Criação deste novo documento.';
+$lang['restored'] = 'Versão anterior restaurada.';
+$lang['external_edit'] = 'Edição externa';
+$lang['summary'] = 'Sumário da Edição';
+$lang['mail_newpage'] = 'documento adicionado:';
+$lang['mail_changed'] = 'documento modificado:';
+$lang['mail_new_user'] = 'Novo utilizador:';
+$lang['mail_upload'] = 'Ficheiro carregado:';
+$lang['nosmblinks'] = 'Ligação a pastas Windows partilhadas apenas funciona com o Microsoft Internet Explorer.\nPode no entanto copiar e colar o link.';
+$lang['qb_alert'] = 'Por favor, insira o texto que deseja formatar.\nSerá acrescentado ao fim do documento.';
+$lang['qb_bold'] = 'Texto com Ãnfase';
+$lang['qb_italic'] = 'Texto Itálico';
+$lang['qb_underl'] = 'Texto Sublinhado';
+$lang['qb_code'] = 'Texto Código';
+$lang['qb_strike'] = 'Texto Riscado';
+$lang['qb_h1'] = 'Cabeçalho NÃvel 1';
+$lang['qb_h2'] = 'Cabeçalho NÃvel 2';
+$lang['qb_h3'] = 'Cabeçalho NÃvel 3';
+$lang['qb_h4'] = 'Cabeçalho NÃvel 4';
+$lang['qb_h5'] = 'Cabeçalho NÃvel 5';
+$lang['qb_link'] = 'Ligação Interna';
+$lang['qb_extlink'] = 'Ligação Externa';
+$lang['qb_hr'] = 'Barra Horizontal';
+$lang['qb_ol'] = 'Item numa Lista Ordenada';
+$lang['qb_ul'] = 'Item numa Lista Não Ordenada';
+$lang['qb_media'] = 'Incluir imagens e outros ficheiros';
+$lang['qb_sig'] = 'Inserir Assinatura';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Caracteres Especiais';
+$lang['del_confirm'] = 'Remover esta entrada?';
+$lang['admin_register'] = 'Inscrever Novo Utilizador';
+$lang['metaedit'] = 'Editar Metadata';
+$lang['metasaveerr'] = 'Falhou a escrita de Metadata';
+$lang['metasaveok'] = 'Metadata gravada';
+$lang['img_backto'] = 'De volta a';
+$lang['img_title'] = 'TÃrulo';
+$lang['img_caption'] = 'Legenda';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Ficheiro';
+$lang['img_fsize'] = 'Tamanho';
+$lang['img_artist'] = 'Fotógrafo';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Formato';
+$lang['img_camera'] = 'Câmera';
+$lang['img_keywords'] = 'Palavras-Chave';
+$lang['subscribe_success'] = '%s adicionado à lista de subscritores de %s';
+$lang['subscribe_error'] = 'Erro ao adicionar %s à lista de subscritores de %s';
+$lang['subscribe_noaddress'] = 'Não existe nenhum endereço associado ao seu perfil, por isso não pode ser adicionado à lista de subscritores.';
+$lang['unsubscribe_success'] = '%s removido da lista de subscritores de %s';
+$lang['unsubscribe_error'] = 'Erro ao remover %s da lista de subscritores de %s';
+$lang['authmodfailed'] = 'Configuração de autenticação errada. Por favor, informe o Wiki Admin.';
+$lang['authtempfail'] = 'Autenticação temporariamente indisponÃvel. Se a situação persistir, por favor informe o Wiki Admin.';
+$lang['i_chooselang'] = 'Escolha a linguagem';
+$lang['i_installer'] = 'DokuWiki Installer';
+$lang['i_wikiname'] = 'Nome Wiki';
+$lang['i_enableacl'] = 'Activar ACL (recomendado)';
+$lang['i_superuser'] = 'Super-utilizador';
+$lang['i_problems'] = 'O Installer encontrou alguns problemas, indicados mais abaixo. Não pode continuar até que sejam corrigidos.';
+$lang['i_modified'] = 'Por razões de segurança, este script só funciona em novas e não-modificadas instalações do Dokuwiki. Deve por isso re-extrair os ficheiros do pacote que descarregou ou então deve consultar as completas <a href="http://wiki.splitbrain.org/wiki:install">instruções de instalação do Dokuwiki installation instructions</a>';
+$lang['i_funcna'] = 'A função PHP <code>%s</code> não está disponÃvel. Terá o serviço de alojamento desactivado-a por alguma razão?';
+$lang['i_phpver'] = 'A versão de PHP actual <code>%s</code> é inferior à versão mÃnima <code>%s</code>. à preciso actualizar a instalação PHP.';
+$lang['i_permfail'] = '<code>%s</code> não permite que o DokuWiki escreva nela. à preciso corrigir as permissões desta pasta!';
+$lang['i_confexists'] = '<code>%s</code> já existe';
+$lang['i_writeerr'] = 'Não foi possÃvel criar <code>%s</code>. à preciso verificar as permissões e criar o ficheiro manualmente.';
+$lang['i_badhash'] = 'dokuwiki.php não é o original ou não é reconhecido (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - valor ilegal ou vazio';
+$lang['i_success'] = 'A instalação e configuração inicial foram bem sucedidas. Pode remover o install.php. Aceda ao seu novo <a href="doku.php">Wiki</a> a correr o DokuWiki.';
+$lang['i_failure'] = 'Ocorreram alguns erros durante a escrita nos ficheiros de configuração. Poderá ser preciso corrigi-los manualmente antes de poder aceder ao seu novo <a href="doku.php">Wiki</a> a correr o DokuWiki.';
+$lang['i_policy'] = 'Politica ACL inicial';
+$lang['i_pol0'] = 'Wiki Aberto (ler, escrever e carregar para todos)';
+$lang['i_pol1'] = 'Wiki Público (ler para todos, escrever e carregar para utilizadores inscritos)';
+$lang['i_pol2'] = 'Wiki Fechado (ler, escrever e carregar somente para utilizadores inscritos)';
Modified: site/trunk/www-root/wiki/inc/lang/pt/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Página em Edição ======
-
-Esta página está bloqueada por outro utilizador, que se encontra a editá-la neste momento.\\
-Terá que aguardar que o utilizador termine a edição e grava as alterações ou então que temporizador de bloqueio expire.
-
-----
+====== Página em Edição ======
+
+Esta página está bloqueada por outro utilizador, que se encontra a editá-la neste momento.\\
+Terá que aguardar que o utilizador termine a edição e grava as alterações ou então que temporizador de bloqueio expire.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Sessão ======
-
-Não está actualmente em sessão!\\
-Introduza as suas credenciais de autenticação para entrar em sessão.
-
-**Nota**: Precisa de ter //cookies// activos no seu browser.
-
-----
+====== Sessão ======
+
+Não está actualmente em sessão!\\
+Introduza as suas credenciais de autenticação para entrar em sessão.
+
+**Nota**: Precisa de ter //cookies// activos no seu browser.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,20 +1,20 @@
-Um documento no site Wiki @DOKUWIKIURL@ foi criado ou modificado.
-
-Aqui estão os detalhes:
-
-Data : @DATE@
-Browser : @BROWSER@
-Endereço IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-Documento Ant.: @OLDPAGE@
-Documento Novo: @NEWPAGE@
-Edit Summary : @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
-
-----
-
-Esta mensagem foi gerada automaticamente pelo motor DokuWiki em @DOKUWIKIURL@
+Um documento no site Wiki @DOKUWIKIURL@ foi criado ou modificado.
+
+Aqui estão os detalhes:
+
+Data : @DATE@
+Browser : @BROWSER@
+Endereço IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+Documento Ant.: @OLDPAGE@
+Documento Novo: @NEWPAGE@
+Edit Summary : @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+
+----
+
+Esta mensagem foi gerada automaticamente pelo motor DokuWiki em @DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pt/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Documento Inexistente ======
-
-Acaba de tentar aceder a um documento que ainda não existe.
-
-Pode criar o conteúdo deste novo documento após clicar no botão <Editar Página>.
-
-----
+====== Documento Inexistente ======
+
+Acaba de tentar aceder a um documento que ainda não existe.
+
+Pode criar o conteúdo deste novo documento após clicar no botão <Editar Página>.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Revisão Inexistente ======
-
-A revisão especificada não existe.
-
-Clique no botão <Revisões> para aceder à lista de revisões deste documento.
-
-----
+====== Revisão Inexistente ======
+
+A revisão especificada não existe.
+
+Clique no botão <Revisões> para aceder à lista de revisões deste documento.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-Olá, @FULLNAME@!
-
-Efectuou a inscrição no WikiSite @TITLE@, em @DOKUWIKIURL@
-
-Aqui estão as suas credenciais de autenticação:
-
-Utilizador : @LOGIN@
-Senha : @PASSWORD@
-
-----
-
-Esta mensagem foi gerada pelo DokuWiki em @DOKUWIKIURL@
+Olá, @FULLNAME@!
+
+Efectuou a inscrição no WikiSite @TITLE@, em @DOKUWIKIURL@
+
+Aqui estão as suas credenciais de autenticação:
+
+Utilizador : @LOGIN@
+Senha : @PASSWORD@
+
+----
+
+Esta mensagem foi gerada pelo DokuWiki em @DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pt/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Previsão ======
-
-Esta é a previsão de como irá ficar o conteúdo do documento se clicar no botão <Gravar>.
-
-**Atenção**: O documento ainda não se encontra gravado.\\
-à necessário clicar no botão <Gravar> para efectivar as modificações que tenha realizado.
-
-----
+====== Previsão ======
+
+Esta é a previsão de como irá ficar o conteúdo do documento se clicar no botão <Gravar>.
+
+**Atenção**: O documento ainda não se encontra gravado.\\
+à necessário clicar no botão <Gravar> para efectivar as modificações que tenha realizado.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Olá @FULLNAME@!
-
-Alguém efectuou um pedido para uma nova senha para o seu perfil @TITLE@ em @DOKUWIKIURL@
-
-Se não foi você que efectuou o pedido então por favor ignore esta mensagem.
-
-Senão, para confirmar o pedido, por favor siga este link:
-
- at CONFIRM@
-
---
-
+Olá @FULLNAME@!
+
+Alguém efectuou um pedido para uma nova senha para o seu perfil @TITLE@ em @DOKUWIKIURL@
+
+Se não foi você que efectuou o pedido então por favor ignore esta mensagem.
+
+Senão, para confirmar o pedido, por favor siga este link:
+
+ at CONFIRM@
+
+--
+
Esta mensagem foi gerada automaticamente pelo motor DokuWiki em @DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-**Atenção**: Este documento é apenas de leitura.\\
-Pode ver o documento em bruto mas não pode gravar qualquer alteração.\\ \\
-Informe-se com o administrador deste Wiki se achar que isto não está correcto.
-
-----
+**Atenção**: Este documento é apenas de leitura.\\
+Pode ver o documento em bruto mas não pode gravar qualquer alteração.\\ \\
+Informe-se com o administrador deste Wiki se achar que isto não está correcto.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Alterações Recentes ======
-
-Os seguintes documentos foram alterados recentemente.
-
-----
+====== Alterações Recentes ======
+
+Os seguintes documentos foram alterados recentemente.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Inscrição ======
-
-Por favor, preencha todos os campos com a informação correspondente, para poder criar uma nova conta neste SiteWiki.
-
-**Nota**: O nome de utilizador deve cumprir as mesmas regras de nomeação de documentos Wiki válidos.\\
-**Atenção**: Verifique que o endereço de correio electrónico que preencheu é válido, pois a sua senha será enviada por e-mail.
-
-----
+====== Inscrição ======
+
+Por favor, preencha todos os campos com a informação correspondente, para poder criar uma nova conta neste SiteWiki.
+
+**Nota**: O nome de utilizador deve cumprir as mesmas regras de nomeação de documentos Wiki válidos.\\
+**Atenção**: Verifique que o endereço de correio electrónico que preencheu é válido, pois a sua senha será enviada por e-mail.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Inscrição de um novo utilizador. Aqui estão os detalhes:
-
-Username : @NEWUSER@
-Nome Completo : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Data : @DATE@
-Browser : @BROWSER@
-Endereço IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-
-----
-
+Inscrição de um novo utilizador. Aqui estão os detalhes:
+
+Username : @NEWUSER@
+Nome Completo : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Data : @DATE@
+Browser : @BROWSER@
+Endereço IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+
+----
+
Esta mensagem foi gerada pelo DokuWiki em @DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Enviar nova senha ======
-
+====== Enviar nova senha ======
+
Por favor, insira o seu nome de utilizador neste formulário para requerer uma nova senha para esta conta/perfil. Um link de confirmação será enviado para o endereço de e-mail associado.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-====== Revisões ======
-
-Estas são as revisões ao documento corrente.\\
-Para reverter o documento para uma destas revisões:
- * Escolha a revisão do documento da lista abaixo;
- * Clique depois no botão <Editar Página>;
- * Faça as alterações que veja necessárias - opcional;
- * Grava a revisão antiga como sendo a revisão actual do documento.
-Após a gravação, o documento da versão actual será substituÃdo pelo documento da revisão escolhida.
-
-----
+====== Revisões ======
+
+Estas são as revisões ao documento corrente.\\
+Para reverter o documento para uma destas revisões:
+ * Escolha a revisão do documento da lista abaixo;
+ * Clique depois no botão <Editar Página>;
+ * Faça as alterações que veja necessárias - opcional;
+ * Grava a revisão antiga como sendo a revisão actual do documento.
+Após a gravação, o documento da versão actual será substituÃdo pelo documento da revisão escolhida.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Pesquisa ======
-
-Pode encontrar os resultados da sua pesquisa na secção mais abaixo.
-
-Se não encontrou o que procurava, pode criar uma nova página com o nome da pergunta, usando o botão <Editar Página>.
-
-===== Resultados =====
+====== Pesquisa ======
+
+Pode encontrar os resultados da sua pesquisa na secção mais abaixo.
+
+Se não encontrou o que procurava, pode criar uma nova página com o nome da pergunta, usando o botão <Editar Página>.
+
+===== Resultados =====
Modified: site/trunk/www-root/wiki/inc/lang/pt/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Atenção**: Esta é uma versão antiga do documento!
-
-----
+**Atenção**: Esta é uma versão antiga do documento!
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,141 +1,141 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-último
-acerca
-agora
-algmas
-alguns
-ali
-ambos
-antes
-apontar
-aquela
-aquelas
-aquele
-aqueles
-aqui
-atrás
-bem
-bom
-cada
-caminho
-cima
-com
-como
-comprido
-conhecido
-corrente
-das
-debaixo
-dentro
-desde
-desligado
-deve
-devem
-deverá
-direita
-diz
-dizer
-dois
-dos
-ela
-ele
-eles
-enquanto
-então
-está
-estão
-estado
-estar
-estará
-este
-estes
-esteve
-estive
-estivemos
-estiveram
-fará
-faz
-fazer
-fazia
-fez
-fim
-foi
-fora
-horas
-iniciar
-inicio
-irá
-ista
-iste
-isto
-ligado
-maioria
-maiorias
-mais
-mas
-mesmo
-meu
-muito
-muitos
-nós
-não
-nome
-nosso
-novo
-onde
-outro
-para
-parte
-pegar
-pelo
-pessoas
-pode
-poderá
-podia
-por
-porque
-povo
-promeiro
-quê
-qual
-qualquer
-quando
-quem
-quieto
-são
-saber
-sem
-ser
-seu
-somente
-têm
-tal
-também
-tem
-tempo
-tenho
-tentar
-tentaram
-tente
-tentei
-teu
-teve
-tipo
-tive
-todos
-trabalhar
-trabalho
-uma
-umas
-uns
-usa
-usar
-valor
-veja
-ver
-verdade
-verdadeiro
-você
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+último
+acerca
+agora
+algmas
+alguns
+ali
+ambos
+antes
+apontar
+aquela
+aquelas
+aquele
+aqueles
+aqui
+atrás
+bem
+bom
+cada
+caminho
+cima
+com
+como
+comprido
+conhecido
+corrente
+das
+debaixo
+dentro
+desde
+desligado
+deve
+devem
+deverá
+direita
+diz
+dizer
+dois
+dos
+ela
+ele
+eles
+enquanto
+então
+está
+estão
+estado
+estar
+estará
+este
+estes
+esteve
+estive
+estivemos
+estiveram
+fará
+faz
+fazer
+fazia
+fez
+fim
+foi
+fora
+horas
+iniciar
+inicio
+irá
+ista
+iste
+isto
+ligado
+maioria
+maiorias
+mais
+mas
+mesmo
+meu
+muito
+muitos
+nós
+não
+nome
+nosso
+novo
+onde
+outro
+para
+parte
+pegar
+pelo
+pessoas
+pode
+poderá
+podia
+por
+porque
+povo
+promeiro
+quê
+qual
+qualquer
+quando
+quem
+quieto
+são
+saber
+sem
+ser
+seu
+somente
+têm
+tal
+também
+tem
+tempo
+tenho
+tentar
+tentaram
+tente
+tentei
+teu
+teve
+tipo
+tive
+todos
+trabalhar
+trabalho
+uma
+umas
+uns
+usa
+usar
+valor
+veja
+ver
+verdade
+verdadeiro
+você
Modified: site/trunk/www-root/wiki/inc/lang/pt/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Olá,
-
-A página @PAGE@ em @TITLE@ foi alterda.
-Aqui estão as diferenças:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Para receber mais notificações desta página alterada, por favor, entre no Wiki em @DOKUWIKIURL@ e aceda a @NEWPAGE@ para depois poder clicar no botão [ Não Subscrever ].
-
-
-----
-
+Olá,
+
+A página @PAGE@ em @TITLE@ foi alterda.
+Aqui estão as diferenças:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Para receber mais notificações desta página alterada, por favor, entre no Wiki em @DOKUWIKIURL@ e aceda a @NEWPAGE@ para depois poder clicar no botão [ Não Subscrever ].
+
+
+----
+
Esta mensagem foi gerada pelo DokuWiki em @DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Actualize o seu perfil ======
-
+====== Actualize o seu perfil ======
+
Apenas precisa de completar os campos que pretende alterar. Não é possÃvel alterar o seu //username//.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Um ficheiro foi carregado. Aqui estão os detalhes:
-
-Ficheiro : @MEDIA@
-Data : @DATE@
-Browser : @BROWSER@
-Endereço IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-Tamanho : @SIZE@
-MIME Type : @MIME@
-Utilizador : @USER@
-
-----
-
+Um ficheiro foi carregado. Aqui estão os detalhes:
+
+Ficheiro : @MEDIA@
+Data : @DATE@
+Browser : @BROWSER@
+Endereço IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+Tamanho : @SIZE@
+MIME Type : @MIME@
+Utilizador : @USER@
+
+----
+
Esta mensagem foi gerada pelo DokuWiki em @DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Bloquear SPAM ======
-
-As suas alterações foram **bloqueadas**, porque contêm uma ou mais palavras consideradas abusivas (SPAM).
-
-Se pensa que isto não está correcto, por favor contacte o administrador deste site Wiki.
-
-----
+====== Bloquear SPAM ======
+
+As suas alterações foram **bloqueadas**, porque contêm uma ou mais palavras consideradas abusivas (SPAM).
+
+Se pensa que isto não está correcto, por favor contacte o administrador deste site Wiki.
+
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Administração ======
-
-Abaixo você encontra uma lista das tarefas administrativas
-disponÃveis no DokuWiki.
-
+====== Administração ======
+
+Abaixo você encontra uma lista das tarefas administrativas
+disponÃveis no DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Links reversos ======
-
-Esta é uma lista de todas as páginas que apresentam links para a página atual.
-
+====== Links reversos ======
+
+Esta é uma lista de todas as páginas que apresentam links para a página atual.
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Existe uma nova versão ======
-
-Existe uma versão mais nova do documento que você editou. Isso acontece
-quando outro usuário modifica o documento enquanto você o está editando.
-
-Examine as diferenças mostradas abaixo atentamente e então decida qual
-versão deve permanecer. Se você selecionar ''Salvar'', sua versão será
+====== Existe uma nova versão ======
+
+Existe uma versão mais nova do documento que você editou. Isso acontece
+quando outro usuário modifica o documento enquanto você o está editando.
+
+Examine as diferenças mostradas abaixo atentamente e então decida qual
+versão deve permanecer. Se você selecionar ''Salvar'', sua versão será
salva. Pressione ''Cancelar'' para manter a versão atual.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Permissão Negada ======
-
-Desculpe, você não tem permissões suficientes para continuar. Por acaso esqueceu de autenticar-se?
+====== Permissão Negada ======
+
+Desculpe, você não tem permissões suficientes para continuar. Por acaso esqueceu de autenticar-se?
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Diferenças ======
-
-Esta página mostra as diferenças entre a revisão selecionada e a versão
+====== Diferenças ======
+
+Esta página mostra as diferenças entre a revisão selecionada e a versão
atual dessa página.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Rascunho encontrado ======
-
-A sua última sessão de edição não foi concluÃda corretamente. O DokuWiki automaticamente salvou um rascunho durante o seu trabalho, que você pode usar agora para continuar a sua edição. Abaixo você pode ver os dados que foram salvos na sua última sessão.
-
+====== Rascunho encontrado ======
+
+A sua última sessão de edição não foi concluÃda corretamente. O DokuWiki automaticamente salvou um rascunho durante o seu trabalho, que você pode usar agora para continuar a sua edição. Abaixo você pode ver os dados que foram salvos na sua última sessão.
+
Por favor, escolha se você quer //recuperar// sua sessão perdida de edição, //excluir// o rascunho salvo automaticamente ou //cancelar// o processo de edição.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-Edite a págine e clique em ''Salvar''. Veja [[wiki:syntax|aqui]] a sintaxe
-do Wiki. Por favor, edite a página apenas se você puder **aprimorá-la**.
-Se você deseja testar alguma coisa, faça-o no [[playground:playground|playground]].
-
+Edite a págine e clique em ''Salvar''. Veja [[wiki:syntax|aqui]] a sintaxe
+do Wiki. Por favor, edite a página apenas se você puder **aprimorá-la**.
+Se você deseja testar alguma coisa, faça-o no [[playground:playground|playground]].
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Você carregou uma revisão antiga desse documento!** Se você salvá-la, irá criar uma nova versão em esses dados.
-
-
+**Você carregou uma revisão antiga desse documento!** Se você salvá-la, irá criar uma nova versão em esses dados.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ãndice ======
-
+====== Ãndice ======
+
Esse é um Ãndice de todas as páginas disponÃveis, ordenadas por [[doku>wiki:namespaces|ramos]].
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-<p>Essa página irá auxiliá-lo na instalação e configuração do <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Você encontra mais informações sobre esse instalador na sua <a href="http://wiki.splitbrain.org/wiki:installer">página de documentação</a>.</p>
-
-<p>O DokuWiki utiliza arquivos em texto simples para o armazenamento das páginas wiki e de outras informações associadas a essas páginas (ex.: imagens, Ãndices de busca, revisões antigas, etc.). Para que o DokuWiki funcione corretamente, ele <strong>precisa</strong> ter acesso de escrita aos diretórios onde esses arquivos ficarão armazenados. Esse instalador não tem capacidade de configurar as permissões de diretório. Isso normalmente é feito usando-se a linha de comando ou através do FTP ou do painel de controle do seu host (ex.: cPanel).</p>
-
-<p>O instalador irá definir as configurações de <acronym title="access control list (lista de controle de acesso)">ACL</acronym> do seu DokuWiki, o que permitirá a autenticação do administrador e o acesso ao menu de administração do sistema. Esse menu é utilizado para instalar plugins, alterar as configurações do ambiente e gerenciar usuários e acessos às páginas do wiki. Isso não é necessário para o funcionamento do DokuWiki, mas irá torna sua administração mais simples.</p>
-
+<p>Essa página irá auxiliá-lo na instalação e configuração do <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Você encontra mais informações sobre esse instalador na sua <a href="http://wiki.splitbrain.org/wiki:installer">página de documentação</a>.</p>
+
+<p>O DokuWiki utiliza arquivos em texto simples para o armazenamento das páginas wiki e de outras informações associadas a essas páginas (ex.: imagens, Ãndices de busca, revisões antigas, etc.). Para que o DokuWiki funcione corretamente, ele <strong>precisa</strong> ter acesso de escrita aos diretórios onde esses arquivos ficarão armazenados. Esse instalador não tem capacidade de configurar as permissões de diretório. Isso normalmente é feito usando-se a linha de comando ou através do FTP ou do painel de controle do seu host (ex.: cPanel).</p>
+
+<p>O instalador irá definir as configurações de <acronym title="access control list (lista de controle de acesso)">ACL</acronym> do seu DokuWiki, o que permitirá a autenticação do administrador e o acesso ao menu de administração do sistema. Esse menu é utilizado para instalar plugins, alterar as configurações do ambiente e gerenciar usuários e acessos às páginas do wiki. Isso não é necessário para o funcionamento do DokuWiki, mas irá torna sua administração mais simples.</p>
+
<p>Usuários experientes ou que necessitem efetuar configurações especiais devem utilizar os seguintes links, com detalhes referentes à <a href="http://wiki.splitbrain.org/wiki:install">instalação</a> e à <a href="http://wiki.splitbrain.org/wiki:config">configuração</a>.</p>
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,206 +1,206 @@
-<?php
-/**
- * Brazilian Portuguese language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Luis Fernando Enciso <lfenciso at certto.com.br>
- * @author Alauton/Loug
- * @author Frederico Gonçalves Guimarães <frederico at teia.bio.br>
- * @author Felipe Castro <fefcas at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Editar essa página';
-$lang['btn_source'] = 'Mostrar código fonte';
-$lang['btn_show'] = 'Mostrar página';
-$lang['btn_create'] = 'Criar essa página';
-$lang['btn_search'] = 'Procurar';
-$lang['btn_save'] = 'Salvar';
-$lang['btn_preview'] = 'Visualizar';
-$lang['btn_top'] = 'Voltar ao topo';
-$lang['btn_newer'] = '<< mais recente';
-$lang['btn_older'] = 'menos recente >>';
-$lang['btn_revs'] = 'Revisões anteriores';
-$lang['btn_recent'] = 'Alterações recentes';
-$lang['btn_upload'] = 'Enviar';
-$lang['btn_cancel'] = 'Cancelar';
-$lang['btn_index'] = 'Ãndice';
-$lang['btn_secedit'] = 'Editar';
-$lang['btn_login'] = 'Autenticar-se';
-$lang['btn_logout'] = 'Sair';
-$lang['btn_admin'] = 'Administrar';
-$lang['btn_update'] = 'Atualizar';
-$lang['btn_delete'] = 'Excluir';
-$lang['btn_back'] = 'Voltar';
-$lang['btn_backlink'] = 'Linques reversos';
-$lang['btn_backtomedia'] = 'Voltar à seleção do arquivo de mÃdia';
-$lang['btn_subscribe'] = 'Monitorar alterações de páginas';
-$lang['btn_unsubscribe'] = 'Cancelar monitoramento de páginas';
-$lang['btn_subscribens'] = 'Monitorar alterações em Espaço-de-nomes';
-$lang['btn_unsubscribens'] = 'Cancelar monitoramento de Espaço-de-nomes';
-$lang['btn_profile'] = 'Atualizar perfil';
-$lang['btn_reset'] = 'Limpar';
-$lang['btn_resendpwd'] = 'Enviar nova senha';
-$lang['btn_draft'] = 'Editar rascunho';
-$lang['btn_recover'] = 'Recuperar rascunho';
-$lang['btn_draftdel'] = 'Excluir rascunho';
-$lang['loggedinas'] = 'Autenticado(a) como';
-$lang['user'] = 'Nome de usuário';
-$lang['pass'] = 'Senha';
-$lang['newpass'] = 'Nova senha';
-$lang['oldpass'] = 'Confirme a senha atual';
-$lang['passchk'] = 'mais uma vez';
-$lang['remember'] = 'Lembrar-se de mim';
-$lang['fullname'] = 'Nome completo';
-$lang['email'] = 'E-mail';
-$lang['register'] = 'Registrar';
-$lang['profile'] = 'Perfil de usuário';
-$lang['badlogin'] = 'Desculpe, mas o nome de usuário ou a senha estão incorretos.';
-$lang['minoredit'] = 'Alterações mÃnimas';
-$lang['draftdate'] = 'Rascunho salvo automaticamente em';
-$lang['regmissing'] = 'Desculpe, mas você precisa preencher todos os campos.';
-$lang['reguexists'] = 'Desculpe, mas já existe um usuário com esse nome.';
-$lang['regsuccess'] = 'O usuário foi criado e a senha enviada para seu e-mail.';
-$lang['regsuccess2'] = 'O usuário foi criado.';
-$lang['regmailfail'] = 'Aparentemente ocorreu um erro no envio da senha. Por favor, entre em contato com o administrador!';
-$lang['regbadmail'] = 'O endereço de e-mail fornecido é, aparentemente, inválido - se você acha que isso é um erro, entre em contato com o administrador';
-$lang['regbadpass'] = 'As senhas digitadas não são idênticas. Por favor, tente novamente.';
-$lang['regpwmail'] = 'A sua senha do DokuWiki';
-$lang['reghere'] = 'Ainda não tem uma conta? Cadastre-se para obter uma.';
-$lang['profna'] = 'Esse wiki não suporta modificações do perfil.';
-$lang['profnochange'] = 'Sem alterações, nada para fazer.';
-$lang['profnoempty'] = 'Não são permitidos nomes ou endereços de e-mail em branco.';
-$lang['profchanged'] = 'O perfil do usuário foi atualizado com sucesso.';
-$lang['pwdforget'] = 'Esqueceu sua senha? Obtenha uma nova.';
-$lang['resendna'] = 'Esse wiki não suporta reenvio de senhas.';
-$lang['resendpwd'] = 'Enviar a nova senha para';
-$lang['resendpwdmissing'] = 'Desculpe, você deve preencher todos os campos.';
-$lang['resendpwdnouser'] = 'Desculpe, não foi possÃvel encontrar esse usuário no banco de dados.';
-$lang['resendpwdbadauth'] = 'Desculpe, esse código de autorização é inválido. Certifique-se de que você usou o link de confirmação inteiro.';
-$lang['resendpwdconfirm'] = 'Um linque de confirmação foi enviado por e-mail.';
-$lang['resendpwdsuccess'] = 'Sua nova senha foi enviada por e-mail.';
-$lang['txt_upload'] = 'Selecione o arquivo a ser enviado';
-$lang['txt_filename'] = 'Enviar como (opcional)';
-$lang['txt_overwrt'] = 'Substituir o arquivo existente';
-$lang['lockedby'] = 'Atualmente bloqueado por';
-$lang['lockexpire'] = 'O bloqueio expira em';
-$lang['willexpire'] = 'O seu bloqueio de edição deste documento irá expirar em um minuto.\nPara evitar conflitos de edição, clique no botão de visualização para reiniciar o temporizador de bloqueio.';
-$lang['notsavedyet'] = 'As alterações não salvas serão perdidas.\nDeseja realmente continuar?';
-$lang['rssfailed'] = 'Ocorreu um erro durante a atualização dessa fonte: ';
-$lang['nothingfound'] = 'Não foi encontrado nada.';
-$lang['mediaselect'] = 'Arquivos de mÃdia';
-$lang['fileupload'] = 'Envio de arquivo de mÃdia';
-$lang['uploadsucc'] = 'Envio efetuado com sucesso';
-$lang['uploadfail'] = 'Não foi possÃvel enviar o arquivo. Será algum problema com as permissões?';
-$lang['uploadwrong'] = 'O envio foi bloqueado. Essa extensão de arquivo é proibida!';
-$lang['uploadexist'] = 'O arquivo já existe. Não foi feito nada.';
-$lang['uploadbadcontent'] = 'O conteúdo enviado não corresponde à extensão do arquivo %s.';
-$lang['uploadspam'] = 'O envio foi bloqueado pela lista negra de espams.';
-$lang['uploadxss'] = 'O envio foi bloqueado por conter conteúdo possivelmente malicioso.';
-$lang['deletesucc'] = 'O arquivo "%s" foi excluÃdo.';
-$lang['deletefail'] = 'Não foi possÃvel excluir "%s" - verifique as permissões.';
-$lang['mediainuse'] = 'O arquivo "%s" não foi excluÃdo - ele ainda está em uso.';
-$lang['namespaces'] = 'Ramos';
-$lang['mediafiles'] = 'Arquivos disponÃveis em';
-$lang['js']['keepopen'] = 'Manter a janela aberta na seleção';
-$lang['js']['hidedetails'] = 'Esconder detalhes';
-$lang['mediausage'] = 'Use a seguinte sintaxe para se referir a esse arquivo:';
-$lang['mediaview'] = 'Ver arquivo original';
-$lang['mediaroot'] = 'raiz';
-$lang['mediaupload'] = 'Envie um arquivo para o ramo atual aqui. Para criar sub-ramos, preponha-os ao nome do arquivo no parâmetro "Enviar como", separados por vÃrgulas.';
-$lang['mediaextchange'] = 'A extensão do arquivo mudou de .%s para .%s!';
-$lang['reference'] = 'Referências para';
-$lang['ref_inuse'] = 'O arquivo não pode ser excluÃdo, porque ele ainda está sendo utilizado nas seguintes páginas:';
-$lang['ref_hidden'] = 'Algumas referências estão em páginas que você não tem permissão para ler';
-$lang['hits'] = 'Resultados';
-$lang['quickhits'] = 'Nomes de páginas coincidentes';
-$lang['toc'] = 'Tabela de Conteúdos';
-$lang['current'] = 'atual';
-$lang['yours'] = 'Sua versão';
-$lang['diff'] = 'Mostrar diferenças com a versão atual';
-$lang['diff2'] = 'Mostrar diferenças entre as revisões selecionadas';
-$lang['line'] = 'Linha';
-$lang['breadcrumb'] = 'Visitou';
-$lang['youarehere'] = 'Você está aqui';
-$lang['lastmod'] = 'Ãltima modificação';
-$lang['by'] = 'por';
-$lang['deleted'] = 'removida';
-$lang['created'] = 'criada';
-$lang['restored'] = 'revisão anterior restaurada.';
-$lang['external_edit'] = 'edição externa';
-$lang['summary'] = 'Resumo da edição';
-$lang['mail_newpage'] = 'página adicionada:';
-$lang['mail_changed'] = 'página modificada:';
-$lang['mail_new_user'] = 'novo usuário:';
-$lang['mail_upload'] = 'arquivo enviado:';
-$lang['nosmblinks'] = 'Atalhos para pastas Windows compartilhadas funcionam apenas no Microsoft Internet Explorer.\nEntretanto, você ainda pode copiar e colar o atalho.';
-$lang['qb_alert'] = 'Por favor, insira o texto que você deseja formatar.\nEle será adicionado ao final do documento.';
-$lang['qb_bold'] = 'Texto em negrito';
-$lang['qb_italic'] = 'Texto em itálico';
-$lang['qb_underl'] = 'Texto sublinhado';
-$lang['qb_code'] = 'Texto de código';
-$lang['qb_strike'] = 'Texto riscado';
-$lang['qb_h1'] = 'Cabeçalho de nÃvel 1';
-$lang['qb_h2'] = 'Cabeçalho de nÃvel 2';
-$lang['qb_h3'] = 'Cabeçalho de nÃvel 3';
-$lang['qb_h4'] = 'Cabeçalho de nÃvel 4';
-$lang['qb_h5'] = 'Cabeçalho de nÃvel 5';
-$lang['qb_link'] = 'Linque interno';
-$lang['qb_extlink'] = 'Linque externo';
-$lang['qb_hr'] = 'Barra horizontal';
-$lang['qb_ol'] = 'Item de lista ordenada';
-$lang['qb_ul'] = 'Item de lista não ordenada';
-$lang['qb_media'] = 'Adicionar imagens e/ou outros arquivos';
-$lang['qb_sig'] = 'Inserir assinatura';
-$lang['qb_smileys'] = 'Carinhas';
-$lang['qb_chars'] = 'Caracteres especiais';
-$lang['del_confirm'] = 'Deseja realmente excluir o(s) item(ns) selecionado(s)?';
-$lang['admin_register'] = 'Adicionar novo usuário';
-$lang['metaedit'] = 'Editar metadados';
-$lang['metasaveerr'] = 'Não foi possÃvel escrever os metadados';
-$lang['metasaveok'] = 'Os metadados foram salvos';
-$lang['img_backto'] = 'Voltar para';
-$lang['img_title'] = 'TÃtulo';
-$lang['img_caption'] = 'Descrição';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nome do arquivo';
-$lang['img_fsize'] = 'Tamanho';
-$lang['img_artist'] = 'Fotógrafo';
-$lang['img_copyr'] = 'Direitos de cópia';
-$lang['img_format'] = 'Formato';
-$lang['img_camera'] = 'Câmera';
-$lang['img_keywords'] = 'Palavras-chave';
-$lang['subscribe_success'] = '%s foi adicionado à lista de monitoramento de %s';
-$lang['subscribe_error'] = 'Ocorreu um erro ao tentar adicionar %s à lista de monitoramento de %s';
-$lang['subscribe_noaddress'] = 'Não existe nenhum endereço de e-mail associado ao seu usuário, você não pode ser adicionado à lista de monitoramento.';
-$lang['unsubscribe_success'] = '%s foi removido da lista de monitoramento de %s';
-$lang['unsubscribe_error'] = 'Ocorreu um erro ao tentar remover %s da lista de monitoramento de %s';
-$lang['authmodfailed'] = 'A configuração da autenticação de usuário está com problemas. Por favor, informe o administrador do Wiki.';
-$lang['authtempfail'] = 'A autenticação de usuários está temporariamente desabilitada. Se essa situação persistir, por favor, informe o administrador do Wiki.';
-$lang['i_chooselang'] = 'Selecione o seu idioma';
-$lang['i_installer'] = 'Instalador do DokuWiki';
-$lang['i_wikiname'] = 'Nome do Wiki';
-$lang['i_enableacl'] = 'Habilitar Lista de Controle de Acessos (recomendado)';
-$lang['i_superuser'] = 'Super-usuário';
-$lang['i_problems'] = 'O instalador encontrou alguns problemas, indicados abaixo. Você não pode continuar até corrigi-los.';
-$lang['i_modified'] = 'Por questões de segurança, esse script irá funcionar apenas em uma instalação nova e não modificada do DokuWiki.
-Você pode re-extrair os arquivos do pacote original ou consultar as <a href="http://wiki.splitbrain.org/wiki:install">instruções de instalação do DokuWiki</a>.';
-$lang['i_funcna'] = 'A função PHP <code>%s</code> não está disponÃvel. O seu host a mantém desabilitada por algum motivo?';
-$lang['i_phpver'] = 'A sua versão do PHP (<code>%s</code>) é inferior à necessária (<code>%s</code>). Você precisa atualizar a sua instalação do PHP.';
-$lang['i_permfail'] = 'O DokiWiki não tem permissão de escrita em <code>%s</code>. Você precisa corrigir as configurações de permissão nesse diretório!';
-$lang['i_confexists'] = '<code>%s</code> já existe';
-$lang['i_writeerr'] = 'Não foi possÃvel criar <code>%s</code>. à necessário checar as permissões de arquivos/diretórios e criar o arquivo manualmente.';
-$lang['i_badhash'] = 'dokuwiki.php não reconhecido ou modificado (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - valor ilegal ou em branco';
-$lang['i_success'] = 'A configuração terminou com sucesso. Você pode excluir o arquivo install.php agora. Entre agora no seu <a href="doku.php">novo DokuWiki</a>';
-$lang['i_failure'] = 'Ocorreram alguns erros durante a escrita dos arquivos de configuração. à necessário corrigi-los manualmente antes de usar seu <a href="doku.php">novo DokuWiki</a>';
-$lang['i_policy'] = 'PolÃtica inicial de permissões';
-$lang['i_pol0'] = 'Wiki aberto (leitura, escrita e envio de arquivos por todos)';
-$lang['i_pol1'] = 'Wiki público (leitura por todos, escrita e envio de arquivos por usuários registrados)';
-$lang['i_pol2'] = 'Wiki fechado (leitura, escrita e envio de arquivos somente por usuários registrados)';
-$lang['i_retry'] = 'Tentar novamente';
+<?php
+/**
+ * Brazilian Portuguese language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Luis Fernando Enciso <lfenciso at certto.com.br>
+ * @author Alauton/Loug
+ * @author Frederico Gonçalves Guimarães <frederico at teia.bio.br>
+ * @author Felipe Castro <fefcas at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Editar essa página';
+$lang['btn_source'] = 'Mostrar código fonte';
+$lang['btn_show'] = 'Mostrar página';
+$lang['btn_create'] = 'Criar essa página';
+$lang['btn_search'] = 'Procurar';
+$lang['btn_save'] = 'Salvar';
+$lang['btn_preview'] = 'Visualizar';
+$lang['btn_top'] = 'Voltar ao topo';
+$lang['btn_newer'] = '<< mais recente';
+$lang['btn_older'] = 'menos recente >>';
+$lang['btn_revs'] = 'Revisões anteriores';
+$lang['btn_recent'] = 'Alterações recentes';
+$lang['btn_upload'] = 'Enviar';
+$lang['btn_cancel'] = 'Cancelar';
+$lang['btn_index'] = 'Ãndice';
+$lang['btn_secedit'] = 'Editar';
+$lang['btn_login'] = 'Autenticar-se';
+$lang['btn_logout'] = 'Sair';
+$lang['btn_admin'] = 'Administrar';
+$lang['btn_update'] = 'Atualizar';
+$lang['btn_delete'] = 'Excluir';
+$lang['btn_back'] = 'Voltar';
+$lang['btn_backlink'] = 'Linques reversos';
+$lang['btn_backtomedia'] = 'Voltar à seleção do arquivo de mÃdia';
+$lang['btn_subscribe'] = 'Monitorar alterações de páginas';
+$lang['btn_unsubscribe'] = 'Cancelar monitoramento de páginas';
+$lang['btn_subscribens'] = 'Monitorar alterações em Espaço-de-nomes';
+$lang['btn_unsubscribens'] = 'Cancelar monitoramento de Espaço-de-nomes';
+$lang['btn_profile'] = 'Atualizar perfil';
+$lang['btn_reset'] = 'Limpar';
+$lang['btn_resendpwd'] = 'Enviar nova senha';
+$lang['btn_draft'] = 'Editar rascunho';
+$lang['btn_recover'] = 'Recuperar rascunho';
+$lang['btn_draftdel'] = 'Excluir rascunho';
+$lang['loggedinas'] = 'Autenticado(a) como';
+$lang['user'] = 'Nome de usuário';
+$lang['pass'] = 'Senha';
+$lang['newpass'] = 'Nova senha';
+$lang['oldpass'] = 'Confirme a senha atual';
+$lang['passchk'] = 'mais uma vez';
+$lang['remember'] = 'Lembrar-se de mim';
+$lang['fullname'] = 'Nome completo';
+$lang['email'] = 'E-mail';
+$lang['register'] = 'Registrar';
+$lang['profile'] = 'Perfil de usuário';
+$lang['badlogin'] = 'Desculpe, mas o nome de usuário ou a senha estão incorretos.';
+$lang['minoredit'] = 'Alterações mÃnimas';
+$lang['draftdate'] = 'Rascunho salvo automaticamente em';
+$lang['regmissing'] = 'Desculpe, mas você precisa preencher todos os campos.';
+$lang['reguexists'] = 'Desculpe, mas já existe um usuário com esse nome.';
+$lang['regsuccess'] = 'O usuário foi criado e a senha enviada para seu e-mail.';
+$lang['regsuccess2'] = 'O usuário foi criado.';
+$lang['regmailfail'] = 'Aparentemente ocorreu um erro no envio da senha. Por favor, entre em contato com o administrador!';
+$lang['regbadmail'] = 'O endereço de e-mail fornecido é, aparentemente, inválido - se você acha que isso é um erro, entre em contato com o administrador';
+$lang['regbadpass'] = 'As senhas digitadas não são idênticas. Por favor, tente novamente.';
+$lang['regpwmail'] = 'A sua senha do DokuWiki';
+$lang['reghere'] = 'Ainda não tem uma conta? Cadastre-se para obter uma.';
+$lang['profna'] = 'Esse wiki não suporta modificações do perfil.';
+$lang['profnochange'] = 'Sem alterações, nada para fazer.';
+$lang['profnoempty'] = 'Não são permitidos nomes ou endereços de e-mail em branco.';
+$lang['profchanged'] = 'O perfil do usuário foi atualizado com sucesso.';
+$lang['pwdforget'] = 'Esqueceu sua senha? Obtenha uma nova.';
+$lang['resendna'] = 'Esse wiki não suporta reenvio de senhas.';
+$lang['resendpwd'] = 'Enviar a nova senha para';
+$lang['resendpwdmissing'] = 'Desculpe, você deve preencher todos os campos.';
+$lang['resendpwdnouser'] = 'Desculpe, não foi possÃvel encontrar esse usuário no banco de dados.';
+$lang['resendpwdbadauth'] = 'Desculpe, esse código de autorização é inválido. Certifique-se de que você usou o link de confirmação inteiro.';
+$lang['resendpwdconfirm'] = 'Um linque de confirmação foi enviado por e-mail.';
+$lang['resendpwdsuccess'] = 'Sua nova senha foi enviada por e-mail.';
+$lang['txt_upload'] = 'Selecione o arquivo a ser enviado';
+$lang['txt_filename'] = 'Enviar como (opcional)';
+$lang['txt_overwrt'] = 'Substituir o arquivo existente';
+$lang['lockedby'] = 'Atualmente bloqueado por';
+$lang['lockexpire'] = 'O bloqueio expira em';
+$lang['willexpire'] = 'O seu bloqueio de edição deste documento irá expirar em um minuto.\nPara evitar conflitos de edição, clique no botão de visualização para reiniciar o temporizador de bloqueio.';
+$lang['notsavedyet'] = 'As alterações não salvas serão perdidas.\nDeseja realmente continuar?';
+$lang['rssfailed'] = 'Ocorreu um erro durante a atualização dessa fonte: ';
+$lang['nothingfound'] = 'Não foi encontrado nada.';
+$lang['mediaselect'] = 'Arquivos de mÃdia';
+$lang['fileupload'] = 'Envio de arquivo de mÃdia';
+$lang['uploadsucc'] = 'Envio efetuado com sucesso';
+$lang['uploadfail'] = 'Não foi possÃvel enviar o arquivo. Será algum problema com as permissões?';
+$lang['uploadwrong'] = 'O envio foi bloqueado. Essa extensão de arquivo é proibida!';
+$lang['uploadexist'] = 'O arquivo já existe. Não foi feito nada.';
+$lang['uploadbadcontent'] = 'O conteúdo enviado não corresponde à extensão do arquivo %s.';
+$lang['uploadspam'] = 'O envio foi bloqueado pela lista negra de espams.';
+$lang['uploadxss'] = 'O envio foi bloqueado por conter conteúdo possivelmente malicioso.';
+$lang['deletesucc'] = 'O arquivo "%s" foi excluÃdo.';
+$lang['deletefail'] = 'Não foi possÃvel excluir "%s" - verifique as permissões.';
+$lang['mediainuse'] = 'O arquivo "%s" não foi excluÃdo - ele ainda está em uso.';
+$lang['namespaces'] = 'Ramos';
+$lang['mediafiles'] = 'Arquivos disponÃveis em';
+$lang['js']['keepopen'] = 'Manter a janela aberta na seleção';
+$lang['js']['hidedetails'] = 'Esconder detalhes';
+$lang['mediausage'] = 'Use a seguinte sintaxe para se referir a esse arquivo:';
+$lang['mediaview'] = 'Ver arquivo original';
+$lang['mediaroot'] = 'raiz';
+$lang['mediaupload'] = 'Envie um arquivo para o ramo atual aqui. Para criar sub-ramos, preponha-os ao nome do arquivo no parâmetro "Enviar como", separados por vÃrgulas.';
+$lang['mediaextchange'] = 'A extensão do arquivo mudou de .%s para .%s!';
+$lang['reference'] = 'Referências para';
+$lang['ref_inuse'] = 'O arquivo não pode ser excluÃdo, porque ele ainda está sendo utilizado nas seguintes páginas:';
+$lang['ref_hidden'] = 'Algumas referências estão em páginas que você não tem permissão para ler';
+$lang['hits'] = 'Resultados';
+$lang['quickhits'] = 'Nomes de páginas coincidentes';
+$lang['toc'] = 'Tabela de Conteúdos';
+$lang['current'] = 'atual';
+$lang['yours'] = 'Sua versão';
+$lang['diff'] = 'Mostrar diferenças com a versão atual';
+$lang['diff2'] = 'Mostrar diferenças entre as revisões selecionadas';
+$lang['line'] = 'Linha';
+$lang['breadcrumb'] = 'Visitou';
+$lang['youarehere'] = 'Você está aqui';
+$lang['lastmod'] = 'Ãltima modificação';
+$lang['by'] = 'por';
+$lang['deleted'] = 'removida';
+$lang['created'] = 'criada';
+$lang['restored'] = 'revisão anterior restaurada.';
+$lang['external_edit'] = 'edição externa';
+$lang['summary'] = 'Resumo da edição';
+$lang['mail_newpage'] = 'página adicionada:';
+$lang['mail_changed'] = 'página modificada:';
+$lang['mail_new_user'] = 'novo usuário:';
+$lang['mail_upload'] = 'arquivo enviado:';
+$lang['nosmblinks'] = 'Atalhos para pastas Windows compartilhadas funcionam apenas no Microsoft Internet Explorer.\nEntretanto, você ainda pode copiar e colar o atalho.';
+$lang['qb_alert'] = 'Por favor, insira o texto que você deseja formatar.\nEle será adicionado ao final do documento.';
+$lang['qb_bold'] = 'Texto em negrito';
+$lang['qb_italic'] = 'Texto em itálico';
+$lang['qb_underl'] = 'Texto sublinhado';
+$lang['qb_code'] = 'Texto de código';
+$lang['qb_strike'] = 'Texto riscado';
+$lang['qb_h1'] = 'Cabeçalho de nÃvel 1';
+$lang['qb_h2'] = 'Cabeçalho de nÃvel 2';
+$lang['qb_h3'] = 'Cabeçalho de nÃvel 3';
+$lang['qb_h4'] = 'Cabeçalho de nÃvel 4';
+$lang['qb_h5'] = 'Cabeçalho de nÃvel 5';
+$lang['qb_link'] = 'Linque interno';
+$lang['qb_extlink'] = 'Linque externo';
+$lang['qb_hr'] = 'Barra horizontal';
+$lang['qb_ol'] = 'Item de lista ordenada';
+$lang['qb_ul'] = 'Item de lista não ordenada';
+$lang['qb_media'] = 'Adicionar imagens e/ou outros arquivos';
+$lang['qb_sig'] = 'Inserir assinatura';
+$lang['qb_smileys'] = 'Carinhas';
+$lang['qb_chars'] = 'Caracteres especiais';
+$lang['del_confirm'] = 'Deseja realmente excluir o(s) item(ns) selecionado(s)?';
+$lang['admin_register'] = 'Adicionar novo usuário';
+$lang['metaedit'] = 'Editar metadados';
+$lang['metasaveerr'] = 'Não foi possÃvel escrever os metadados';
+$lang['metasaveok'] = 'Os metadados foram salvos';
+$lang['img_backto'] = 'Voltar para';
+$lang['img_title'] = 'TÃtulo';
+$lang['img_caption'] = 'Descrição';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Nome do arquivo';
+$lang['img_fsize'] = 'Tamanho';
+$lang['img_artist'] = 'Fotógrafo';
+$lang['img_copyr'] = 'Direitos de cópia';
+$lang['img_format'] = 'Formato';
+$lang['img_camera'] = 'Câmera';
+$lang['img_keywords'] = 'Palavras-chave';
+$lang['subscribe_success'] = '%s foi adicionado à lista de monitoramento de %s';
+$lang['subscribe_error'] = 'Ocorreu um erro ao tentar adicionar %s à lista de monitoramento de %s';
+$lang['subscribe_noaddress'] = 'Não existe nenhum endereço de e-mail associado ao seu usuário, você não pode ser adicionado à lista de monitoramento.';
+$lang['unsubscribe_success'] = '%s foi removido da lista de monitoramento de %s';
+$lang['unsubscribe_error'] = 'Ocorreu um erro ao tentar remover %s da lista de monitoramento de %s';
+$lang['authmodfailed'] = 'A configuração da autenticação de usuário está com problemas. Por favor, informe o administrador do Wiki.';
+$lang['authtempfail'] = 'A autenticação de usuários está temporariamente desabilitada. Se essa situação persistir, por favor, informe o administrador do Wiki.';
+$lang['i_chooselang'] = 'Selecione o seu idioma';
+$lang['i_installer'] = 'Instalador do DokuWiki';
+$lang['i_wikiname'] = 'Nome do Wiki';
+$lang['i_enableacl'] = 'Habilitar Lista de Controle de Acessos (recomendado)';
+$lang['i_superuser'] = 'Super-usuário';
+$lang['i_problems'] = 'O instalador encontrou alguns problemas, indicados abaixo. Você não pode continuar até corrigi-los.';
+$lang['i_modified'] = 'Por questões de segurança, esse script irá funcionar apenas em uma instalação nova e não modificada do DokuWiki.
+Você pode re-extrair os arquivos do pacote original ou consultar as <a href="http://wiki.splitbrain.org/wiki:install">instruções de instalação do DokuWiki</a>.';
+$lang['i_funcna'] = 'A função PHP <code>%s</code> não está disponÃvel. O seu host a mantém desabilitada por algum motivo?';
+$lang['i_phpver'] = 'A sua versão do PHP (<code>%s</code>) é inferior à necessária (<code>%s</code>). Você precisa atualizar a sua instalação do PHP.';
+$lang['i_permfail'] = 'O DokiWiki não tem permissão de escrita em <code>%s</code>. Você precisa corrigir as configurações de permissão nesse diretório!';
+$lang['i_confexists'] = '<code>%s</code> já existe';
+$lang['i_writeerr'] = 'Não foi possÃvel criar <code>%s</code>. à necessário checar as permissões de arquivos/diretórios e criar o arquivo manualmente.';
+$lang['i_badhash'] = 'dokuwiki.php não reconhecido ou modificado (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - valor ilegal ou em branco';
+$lang['i_success'] = 'A configuração terminou com sucesso. Você pode excluir o arquivo install.php agora. Entre agora no seu <a href="doku.php">novo DokuWiki</a>';
+$lang['i_failure'] = 'Ocorreram alguns erros durante a escrita dos arquivos de configuração. à necessário corrigi-los manualmente antes de usar seu <a href="doku.php">novo DokuWiki</a>';
+$lang['i_policy'] = 'PolÃtica inicial de permissões';
+$lang['i_pol0'] = 'Wiki aberto (leitura, escrita e envio de arquivos por todos)';
+$lang['i_pol1'] = 'Wiki público (leitura por todos, escrita e envio de arquivos por usuários registrados)';
+$lang['i_pol2'] = 'Wiki fechado (leitura, escrita e envio de arquivos somente por usuários registrados)';
+$lang['i_retry'] = 'Tentar novamente';
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Página bloqueada ======
-
-Essa página está bloqueada para edição por outro usuário. Você tem que esperar
-até que esse usuário termine a edição ou que o bloqueio expire.
+====== Página bloqueada ======
+
+Essa página está bloqueada para edição por outro usuário. Você tem que esperar
+até que esse usuário termine a edição ou que o bloqueio expire.
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Autenticação ======
-
-Você não está autenticado. Digite as seus dados de usuário abaixo para entrar no sistema.
-à necessário habilitar os "cookies" (cuquis) no seu navegador para que isso funcione.
+====== Autenticação ======
+
+Você não está autenticado. Digite as seus dados de usuário abaixo para entrar no sistema.
+à necessário habilitar os "cookies" (cuquis) no seu navegador para que isso funcione.
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Uma página em seu DokuWiki foi adicionada ou alterada. Aqui estão os detalhes:
-
-Data: @DATE@
-Navegador: @BROWSER@
-Endereço IP: @IPADDRESS@
-Nome do host: @HOSTNAME@
-Revisão antiga: @OLDPAGE@
-Nova revisão: @NEWPAGE@
-Resumo da edição: @SUMMARY@
-Usuário: @USER@
-
- at DIFF@
-
-
---
-Essa mensagem foi gerada pelo DokuWiki em
+Uma página em seu DokuWiki foi adicionada ou alterada. Aqui estão os detalhes:
+
+Data: @DATE@
+Navegador: @BROWSER@
+Endereço IP: @IPADDRESS@
+Nome do host: @HOSTNAME@
+Revisão antiga: @OLDPAGE@
+Nova revisão: @NEWPAGE@
+Resumo da edição: @SUMMARY@
+Usuário: @USER@
+
+ at DIFF@
+
+
+--
+Essa mensagem foi gerada pelo DokuWiki em
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Esse tópico ainda não existe ======
-
-Você clicou em um linque para um tópico que ainda não existe.
-Se for permitido, você poderá criá-lo usando o botão
-''Criar essa página''.
+====== Esse tópico ainda não existe ======
+
+Você clicou em um linque para um tópico que ainda não existe.
+Se for permitido, você poderá criá-lo usando o botão
+''Criar essa página''.
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Essa revisão não existe ======
-
-A revisão especificada não existe. Utilize o botão ''Revisões anteriores'' para uma listagem das revisões anteriores desse documento.
+====== Essa revisão não existe ======
+
+A revisão especificada não existe. Utilize o botão ''Revisões anteriores'' para uma listagem das revisões anteriores desse documento.
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Olá @FULLNAME@!
-
-Aqui estão os seus dados de usuário para @TITLE@ em @DOKUWIKIURL@
-
-Usuário : @LOGIN@
-Senha : @PASSWORD@
-
---
-Essa mensagem foi gerada pelo DokuWiki em
- at DOKUWIKIURL@
+Olá @FULLNAME@!
+
+Aqui estão os seus dados de usuário para @TITLE@ em @DOKUWIKIURL@
+
+Usuário : @LOGIN@
+Senha : @PASSWORD@
+
+--
+Essa mensagem foi gerada pelo DokuWiki em
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Visualização ======
-
-Essa é uma visualização de como será a aparência do seu texto. Lembre-se: ele ainda **não foi gravado**!
+====== Visualização ======
+
+Essa é uma visualização de como será a aparência do seu texto. Lembre-se: ele ainda **não foi gravado**!
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Olá @FULLNAME@!
-
-Alguém requisitou um nova senha para o seu @TITLE@ usuário em @DOKUWIKIURL at .
-
-Se não foi você quem fez essa requisição, simplesmente ignore essa mensagem.
-
-Se você realmente deseja receber uma nova senha, por favor, utilize o link abaixo, para confirmar sua requisição.
-
- at CONFIRM@
-
---
-Essa mensagem foi gerada pelo DokuWiki em
+Olá @FULLNAME@!
+
+Alguém requisitou um nova senha para o seu @TITLE@ usuário em @DOKUWIKIURL at .
+
+Se não foi você quem fez essa requisição, simplesmente ignore essa mensagem.
+
+Se você realmente deseja receber uma nova senha, por favor, utilize o link abaixo, para confirmar sua requisição.
+
+ at CONFIRM@
+
+--
+Essa mensagem foi gerada pelo DokuWiki em
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Essa página está em modo somente de leitura. Você pode visualizar a fonte, mas não alterá-la. Informe-se com o administrador do Wiki, caso você ache que isso está incorreto.
+Essa página está em modo somente de leitura. Você pode visualizar a fonte, mas não alterá-la. Informe-se com o administrador do Wiki, caso você ache que isso está incorreto.
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Alterações Recentes ======
-
-As seguintes páginas foram alteradas recentemente.
-
+====== Alterações Recentes ======
+
+As seguintes páginas foram alteradas recentemente.
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== Registre-se como um novo usuário ======
-
-Preencha todas as informações abaixo para criar uma nova conta nesse Wiki.
-Certifique-se de que você forneceu um **endereço de e-mail válido** - se não
-for pedido que você entre com uma senha aqui, ela será enviada para esse endereço.
-O nome de usuário deve ser um [[doku>wiki:pagename|nome de página]] válido.
-
+====== Registre-se como um novo usuário ======
+
+Preencha todas as informações abaixo para criar uma nova conta nesse Wiki.
+Certifique-se de que você forneceu um **endereço de e-mail válido** - se não
+for pedido que você entre com uma senha aqui, ela será enviada para esse endereço.
+O nome de usuário deve ser um [[doku>wiki:pagename|nome de página]] válido.
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Foi registrado um novo usuário. Seus detalhes são:
-
-Nome de usuário: @NEWUSER@
-Nome completo: @NEWNAME@
-E-mail: @NEWEMAIL@
-
-Data: @DATE@
-Navegador: @BROWSER@
-Endereço IP: @IPADDRESS@
-Nome do host: @HOSTNAME@
-
---
-Essa mensagem foi gerada pelo DokuWiki em
+Foi registrado um novo usuário. Seus detalhes são:
+
+Nome de usuário: @NEWUSER@
+Nome completo: @NEWNAME@
+E-mail: @NEWEMAIL@
+
+Data: @DATE@
+Navegador: @BROWSER@
+Endereço IP: @IPADDRESS@
+Nome do host: @HOSTNAME@
+
+--
+Essa mensagem foi gerada pelo DokuWiki em
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Enviar nova senha ======
-
-Preencha todas as informações abaixo para obter uma nova senha para a sua conta nesse "wiki" (uiqui).
-Sua nova senha será enviada para o endereço de e-mail que você forneceu. O nome de usuário
-deve ser preenchido com o seu nome de usuário do "wiki" (uiqui).
+====== Enviar nova senha ======
+
+Preencha todas as informações abaixo para obter uma nova senha para a sua conta nesse "wiki" (uiqui).
+Sua nova senha será enviada para o endereço de e-mail que você forneceu. O nome de usuário
+deve ser preenchido com o seu nome de usuário do "wiki" (uiqui).
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Revisões anteriores======
-
-Essas são as revisões anteriores desse documento. Para reverter a uma revisão antiga, selecione-a abaixo, clique em ''Editar essa página'' e salve-a.
-
+======Revisões anteriores======
+
+Essas são as revisões anteriores desse documento. Para reverter a uma revisão antiga, selecione-a abaixo, clique em ''Editar essa página'' e salve-a.
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======Procura======
-
-Você pode encontrar os resultados da sua procura abaixo. Se você
-não encontrou o que está procurando, você pode criar ou editar
-a página com o nome que você especificou, usando o botão apropriado.
-
-=====Resultados=====
+======Procura======
+
+Você pode encontrar os resultados da sua procura abaixo. Se você
+não encontrou o que está procurando, você pode criar ou editar
+a página com o nome que você especificou, usando o botão apropriado.
+
+=====Resultados=====
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Essa é uma revisão anterior do documento!**
-----
+**Essa é uma revisão anterior do documento!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,55 +1,55 @@
-# Essa é uma lista de palavras que o indexador ignora, uma palavra por linha
-# Ao editar esse arquivo, certifique-se de usar terminações de linha UNIX (newline simples)
-# Não há necessidade de incluir palavras menores que 3 caracteres - elas já são ignoradas por padrão
-# Essa lista é baseada na encontrada em http://www.ranks.nl/stopwords/portugese.html
-acerca
-algum
-alguma
-algumas
-alguns
-ambos
-antes
-após
-aquela
-aquelas
-aquele
-aqueles
-até
-bem
-bom
-cada
-com
-como
-das
-desde
-dos
-enquanto
-então
-esta
-este
-estas
-estes
-essa
-essas
-esse
-esses
-isso
-isto
-mas
-mesmo
-onde
-para
-pelo
-por
-qual
-quando
-que
-quem
-sem
-somente
-tal
-também
-uma
-umas
-uns
+# Essa é uma lista de palavras que o indexador ignora, uma palavra por linha
+# Ao editar esse arquivo, certifique-se de usar terminações de linha UNIX (newline simples)
+# Não há necessidade de incluir palavras menores que 3 caracteres - elas já são ignoradas por padrão
+# Essa lista é baseada na encontrada em http://www.ranks.nl/stopwords/portugese.html
+acerca
+algum
+alguma
+algumas
+alguns
+ambos
+antes
+após
+aquela
+aquelas
+aquele
+aqueles
+até
+bem
+bom
+cada
+com
+como
+das
+desde
+dos
+enquanto
+então
+esta
+este
+estas
+estes
+essa
+essas
+esse
+esses
+isso
+isto
+mas
+mesmo
+onde
+para
+pelo
+por
+qual
+quando
+que
+quem
+sem
+somente
+tal
+também
+uma
+umas
+uns
www
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Olá!
-
-A página @PAGE@, no wiki @TITLE@ foi modificada.
-Aqui estão as mudanças:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Para parar de monitorar essa página, identifique-se em
- at DOKUWIKIURL@, vá até
- at NEWPAGE@
-e selecione 'Cancelar monitoramento'.
-
---
-Essa mensagem foi gerada pelo DokuWiki em
- at DOKUWIKIURL@
+Olá!
+
+A página @PAGE@, no wiki @TITLE@ foi modificada.
+Aqui estão as mudanças:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Para parar de monitorar essa página, identifique-se em
+ at DOKUWIKIURL@, vá até
+ at NEWPAGE@
+e selecione 'Cancelar monitoramento'.
+
+--
+Essa mensagem foi gerada pelo DokuWiki em
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Atualize o perfil da sua conta======
-
-Você precisa preencher somente os campos que você deseja alterar. Você não pode alterar o seu nome de usuário.
-
-
+======Atualize o perfil da sua conta======
+
+Você precisa preencher somente os campos que você deseja alterar. Você não pode alterar o seu nome de usuário.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Um arquivo foi enviado para o seu DokuWiki. Os detalhes são:
-
-Arquivo: @MEDIA@
-Data: @DATE@
-Navegador: @BROWSER@
-Endereço IP: @IPADDRESS@
-Nome do host: @HOSTNAME@
-Tamanho: @SIZE@
-Tipo MIME: @MIME@
-Usuário: @USER@
-
---
-Essa mensagem foi gerada pelo DokuWiki em
+Um arquivo foi enviado para o seu DokuWiki. Os detalhes são:
+
+Arquivo: @MEDIA@
+Data: @DATE@
+Navegador: @BROWSER@
+Endereço IP: @IPADDRESS@
+Nome do host: @HOSTNAME@
+Tamanho: @SIZE@
+Tipo MIME: @MIME@
+Usuário: @USER@
+
+--
+Essa mensagem foi gerada pelo DokuWiki em
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/pt-br/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/pt-br/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/pt-br/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Bloqueio de SPAM======
-
-Suas modificações **não** foram salvas porque elas contém uma ou mais palavras bloqueadas.
-Se você tentou enviar espam para o "wiki", isso é feio, muito feio! Agora, se você acha que
-esse bloqueio foi indevido, por favor entre em contato com o administrador desse "wiki".
-
+======Bloqueio de SPAM======
+
+Suas modificações **não** foram salvas porque elas contém uma ou mais palavras bloqueadas.
+Se você tentou enviar espam para o "wiki", isso é feio, muito feio! Agora, se você acha que
+esse bloqueio foi indevido, por favor entre em contato com o administrador desse "wiki".
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Administrare ======
-
+====== Administrare ======
+
PuteÅ£i vedea mai jos o listÄ cu activitÄÅ£ile administrative disponibile în DokuWiki.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ro/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== LegÄturi înapoi ======
-
-Aceasta e o listÄ de pagini care au legÄturi cÄtre pagina curentÄ.
-
+====== LegÄturi înapoi ======
+
+Aceasta e o listÄ de pagini care au legÄturi cÄtre pagina curentÄ.
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== ExistÄ o nouÄ versiune ======
-
-ExistÄ o versiune nouÄ a documentului editat. Aceasta se întîmplÄ cînd un alt
-utilizator a schimbat documentul în timp ce îl editezi.
-
-ExamineazÄ diferenÅ£ele arÄtate mai jos, apoi ia decizia care versiune o reÅ£ii.
-DacÄ alegi ''SalveazÄ'', versiunea documentului va fi salvatÄ. ApÄsaÅ£i ''RenunÅ£are''
-pentru a menÅ£ine versiunea curentÄ.
-
+====== ExistÄ o nouÄ versiune ======
+
+ExistÄ o versiune nouÄ a documentului editat. Aceasta se întîmplÄ cînd un alt
+utilizator a schimbat documentul în timp ce îl editezi.
+
+ExamineazÄ diferenÅ£ele arÄtate mai jos, apoi ia decizia care versiune o reÅ£ii.
+DacÄ alegi ''SalveazÄ'', versiunea documentului va fi salvatÄ. ApÄsaÅ£i ''RenunÅ£are''
+pentru a menÅ£ine versiunea curentÄ.
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Acces Interzis ======
-
-Din pÄcate nu aveÅ£i destule drepturi pentru a continua. Poate aÅ£i uitat
-sÄ vÄ logaÅ£i?
-
+====== Acces Interzis ======
+
+Din pÄcate nu aveÅ£i destule drepturi pentru a continua. Poate aÅ£i uitat
+sÄ vÄ logaÅ£i?
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Diferenţe======
-
-Aceasta aratÄ diferenÅ£ele dintre revziile selectate Åi versiunea curentÄ a
-paginii.
-
+======Diferenţe======
+
+Aceasta aratÄ diferenÅ£ele dintre revziile selectate Åi versiunea curentÄ a
+paginii.
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== FiÅierul schiÅ£Ä nu a fost gÄsit ======
-
-Ultima dvs. sesiune de editare nu s-a finalizat corect. Ãn timpul lucrului, DocuWiki a salvat automat o schiÅ£Ä, pe care o puteÅ£i utiliza acum pentru a continua editarea. Mai jos puteÅ£i vedea informaÅ£iile care s-au salvat de la ultima dvs. sesiune.
-
+====== FiÅierul schiÅ£Ä nu a fost gÄsit ======
+
+Ultima dvs. sesiune de editare nu s-a finalizat corect. Ãn timpul lucrului, DocuWiki a salvat automat o schiÅ£Ä, pe care o puteÅ£i utiliza acum pentru a continua editarea. Mai jos puteÅ£i vedea informaÅ£iile care s-au salvat de la ultima dvs. sesiune.
+
DecideÅ£i dacÄ vreÅ£i sÄ //recuperaÅ£i// sesiunea de editare pierdutÄ, //ÅtergeÅ£i// schiÅ£a salvatÄ automat sau sÄ //anulaÅ£i// procesul de editare.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ro/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-EditeazÄ pagina Åi apasÄ ''SalveazÄ''. Vezi [[wiki:syntax]] pentru sintaxÄ.
-Te rog editeazÄ pagina doar pentru a o **îmbunÄtaÅ£i**. DacÄ vrei sÄ testezi
-cîteva lucruri, învaÅ£Ä sa faci primii paÅi în [[playground:playground]].
-
+EditeazÄ pagina Åi apasÄ ''SalveazÄ''. Vezi [[wiki:syntax]] pentru sintaxÄ.
+Te rog editeazÄ pagina doar pentru a o **îmbunÄtaÅ£i**. DacÄ vrei sÄ testezi
+cîteva lucruri, învaÅ£Ä sa faci primii paÅi în [[playground:playground]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Ai încÄrcat o versuine veche a documentului!** DacÄ ai salvat-o, vei crea o versiune nouÄ cu aceastÄ datÄ.
-----
+**Ai încÄrcat o versuine veche a documentului!** DacÄ ai salvat-o, vei crea o versiune nouÄ cu aceastÄ datÄ.
+----
Modified: site/trunk/www-root/wiki/inc/lang/ro/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Index ======
-
-Acesta e un index al tuturor paginilor ordonat dupÄ [[doku>wiki:namespaces|namespaces]].
-
+====== Index ======
+
+Acesta e un index al tuturor paginilor ordonat dupÄ [[doku>wiki:namespaces|namespaces]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-<p>AceastÄ paginÄ oferÄ asistenÅ£Ä la instalarea pentru prima datÄ a <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mai multe informaÅ£ii privind aceastÄ instalare gÄsiÅ£i pe <a href="http://wiki.splitbrain.org/wiki:installer">pagina de documentaÅ£ie</a>.</p>
-
-<p>DokuWiki foloseÅte fiÅiere obiÅnuite pentru stocarea paginilor wiki Åi a informaÅ£ilor asociate acestor pagini (de ex. imagini, indecÅi de cÄutare, versiuni vechi, etc). Pentru a lucra cu succes, DokuWiki <strong>trebuie</strong> sÄ aibÄ drepturi de scriere în directoarele ce conÅ£in aceste fiÅiere.
-Acest script de instalare nu poate seta drepturile directoarelor. De regulÄ, aceasta se face direct, în linie de comandÄ, sau în cazul gÄzduirii, prin FTP sau prin panoul de control al gazdei (de ex. cPanel).</p>
-
-<p>Acest script de instalare va configura DokuWiki pentru <acronym title="access control list">ACL</acronym>, care permite logarea administratorului Åi accesul la meniul de administrare pentru instalarea plugin-urilor, gestiunea utilizatorilor, a accesului la paginile wiki Åi modificarea setÄrilor de configurare.
-Nu este necesar pentru ca DokuWiki sÄ funcÅ£ioneze, însÄ face mai uÅoarÄ administrarea DokuWiki.</p>
-
-<p>Utilizatorii experimentaÅ£i sau utilizatorii ce au nevoie de setÄri speciale ar putea folosi aceastÄ legÄturÄ privind<a href="http://wiki.splitbrain.org/wiki:install">instrucÅ£iunile de instalare</a> Åi <a href="http://wiki.splitbrain.org/wiki:config">setÄrile de configurare</a>.</p>
-
+<p>AceastÄ paginÄ oferÄ asistenÅ£Ä la instalarea pentru prima datÄ a <a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mai multe informaÅ£ii privind aceastÄ instalare gÄsiÅ£i pe <a href="http://wiki.splitbrain.org/wiki:installer">pagina de documentaÅ£ie</a>.</p>
+
+<p>DokuWiki foloseÅte fiÅiere obiÅnuite pentru stocarea paginilor wiki Åi a informaÅ£ilor asociate acestor pagini (de ex. imagini, indecÅi de cÄutare, versiuni vechi, etc). Pentru a lucra cu succes, DokuWiki <strong>trebuie</strong> sÄ aibÄ drepturi de scriere în directoarele ce conÅ£in aceste fiÅiere.
+Acest script de instalare nu poate seta drepturile directoarelor. De regulÄ, aceasta se face direct, în linie de comandÄ, sau în cazul gÄzduirii, prin FTP sau prin panoul de control al gazdei (de ex. cPanel).</p>
+
+<p>Acest script de instalare va configura DokuWiki pentru <acronym title="access control list">ACL</acronym>, care permite logarea administratorului Åi accesul la meniul de administrare pentru instalarea plugin-urilor, gestiunea utilizatorilor, a accesului la paginile wiki Åi modificarea setÄrilor de configurare.
+Nu este necesar pentru ca DokuWiki sÄ funcÅ£ioneze, însÄ face mai uÅoarÄ administrarea DokuWiki.</p>
+
+<p>Utilizatorii experimentaÅ£i sau utilizatorii ce au nevoie de setÄri speciale ar putea folosi aceastÄ legÄturÄ privind<a href="http://wiki.splitbrain.org/wiki:install">instrucÅ£iunile de instalare</a> Åi <a href="http://wiki.splitbrain.org/wiki:config">setÄrile de configurare</a>.</p>
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/**
- * romanian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Tiberiu Micu <tibimicu at gmx.net>
- * @author Sergiu Baltariu <s_baltariu at yahoo.com>
- * @author s_baltariu at yahoo.com
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = '\'';
-$lang['btn_edit'] = 'EditeazÄ aceastÄ paginÄ';
-$lang['btn_source'] = 'AratÄ sursa paginii';
-$lang['btn_show'] = 'AratÄ pagina';
-$lang['btn_create'] = 'CreazÄ aceastÄ paginÄ';
-$lang['btn_search'] = 'CautÄ';
-$lang['btn_save'] = 'SalveazÄ';
-$lang['btn_preview'] = 'PrevizualizeazÄ';
-$lang['btn_top'] = 'La început';
-$lang['btn_newer'] = '<< mai recent';
-$lang['btn_older'] = 'mai vechi>>';
-$lang['btn_revs'] = 'Versiuni vechi';
-$lang['btn_recent'] = 'ModificÄri recente';
-$lang['btn_upload'] = 'Upload';
-$lang['btn_cancel'] = 'Renunţare';
-$lang['btn_index'] = 'Index';
-$lang['btn_secedit'] = 'EditeazÄ';
-$lang['btn_login'] = 'Login';
-$lang['btn_logout'] = 'Logout';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'ActualizeazÄ';
-$lang['btn_delete'] = 'Återge';
-$lang['btn_back'] = 'Ãnapoi';
-$lang['btn_backlink'] = 'LegÄturÄ anterioarÄ';
-$lang['btn_backtomedia'] = 'Ãnapoi la SelecÅ£ia Mediafile';
-$lang['btn_subscribe'] = 'Subscrie Modificarea Paginii';
-$lang['btn_unsubscribe'] = 'AnuleazÄ Subscrierea ModificÄrii Paginii';
-$lang['btn_subscribens'] = 'Subscrie Modificarea Spaţiului de Nume';
-$lang['btn_unsubscribens'] = 'AnuleazÄ Subscrierea ModificÄrii SpaÅ£iului de Nume';
-$lang['btn_profile'] = 'ActualizeazÄ Profil';
-$lang['btn_reset'] = 'ReseteazÄ';
-$lang['btn_resendpwd'] = 'Trimite parola nouÄ';
-$lang['btn_draft'] = 'EditeazÄ schiÅ£Ä';
-$lang['btn_recover'] = 'RecupereazÄ schiÅ£Ä';
-$lang['btn_draftdel'] = 'Återge schiÅ£Ä';
-$lang['loggedinas'] = 'Logat ca Åi';
-$lang['user'] = 'Utilizator';
-$lang['pass'] = 'Parola';
-$lang['newpass'] = 'Parola nouÄ';
-$lang['oldpass'] = 'ConfirmÄ parola curentÄ';
-$lang['passchk'] = 'încÄ o datÄ';
-$lang['remember'] = 'Å¢ine-mÄ minte';
-$lang['fullname'] = 'Nume complet';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'ÃnregistreazÄ';
-$lang['profile'] = 'Profil Utilizator';
-$lang['badlogin'] = 'Imi pare rÄu, utilizatorul Åi/sau parola au fost greÅite.';
-$lang['minoredit'] = 'Modificare MinorÄ';
-$lang['draftdate'] = 'SchiÅ£Ä salvatÄ automat la';
-$lang['regmissing'] = 'Ne pare rÄu, trebuie sÄ completezi toate cîmpurile.';
-$lang['reguexists'] = 'Ne pare rÄu, un utilizator cu acest nume existÄ deja logat.';
-$lang['regsuccess'] = 'Utilizatorul a fost creat. Parola a fost trimisÄ prin email.';
-$lang['regsuccess2'] = 'Utilizatorul a fost creat.';
-$lang['regmailfail'] = 'Se pare cÄ a fost o eroare la trimiterea parolei prin email. ContactaÅ£i administratorul!';
-$lang['regbadmail'] = 'Adresa de email este invalidÄ - dacÄ credeÅ£i cÄ este o eroare contactaÅ£i administratorul.';
-$lang['regbadpass'] = 'Cele douÄ parole furnizate nu sunt identice; încercaÅ£i din nou.';
-$lang['regpwmail'] = 'Parola ta DokuWiki';
-$lang['reghere'] = 'Ãnca nu ai un cont? FÄ-Å£i unul';
-$lang['profna'] = 'AceastÄ wiki nu suportÄ modificarea profilului';
-$lang['profnochange'] = 'Nici o modificare; nimic de fÄcut.';
-$lang['profnoempty'] = 'Nu sunt admise numele sau adresa de email necompletate.';
-$lang['profchanged'] = 'Profilul de utilizator a fost actualizat succes.';
-$lang['pwdforget'] = 'Parola uitatÄ? LuaÅ£i una nouÄ';
-$lang['resendna'] = 'AceastÄ wiki nu suportÄ retrimiterea parolei.';
-$lang['resendpwd'] = 'Trimite parola nouÄ pentru';
-$lang['resendpwdmissing'] = 'Ne pare rÄu, trebuie completate toate câmpurile.';
-$lang['resendpwdnouser'] = 'Ne pare rÄu, acest utilizator nu poate fi gÄsit în baza de date.';
-$lang['resendpwdbadauth'] = 'Ne pare rÄu, acest cod de autorizare nu este corect. VerificaÅ£i dacÄ aÅ£i folosit tot link-ul de confirmare.';
-$lang['resendpwdconfirm'] = 'Un link de confirmare a fost trimis prin email.';
-$lang['resendpwdsuccess'] = 'Parola nouÄ';
-$lang['txt_upload'] = 'SelecteazÄ fisierul de încÄrcat';
-$lang['txt_filename'] = 'ÃncarcÄ fiÅierul ca (opÅ£ional)';
-$lang['txt_overwrt'] = 'Suprascrie fiÅierul existent';
-$lang['lockedby'] = 'Momentan blocat de';
-$lang['lockexpire'] = 'Blocarea expirÄ la';
-$lang['willexpire'] = 'Blocarea pentru editarea paginii expirÄ intr-un minut.\nPentru a preveni conflictele foloseÅte butonul de previzualizare pentru resetarea blocÄrii.';
-$lang['notsavedyet'] = 'ExistÄ modificÄri nesalvate, care se vor pierde.\nDoreÅti sÄ continui?';
-$lang['rssfailed'] = 'A apÄrut o eroare in timpul descÄrcÄrii acestui cîmp: ';
-$lang['nothingfound'] = 'Nu am gÄsit nimic.';
-$lang['mediaselect'] = 'Selectare fiÅiere media';
-$lang['fileupload'] = 'ÃncarcÄ fiÅier media';
-$lang['uploadsucc'] = 'ÃncÄrcare reuÅitÄ';
-$lang['uploadfail'] = 'ÃncÄrcare eÅuatÄ. Poate din cauza permisiunilor?';
-$lang['uploadwrong'] = 'ÃncÄrcare nepermisÄ. Extensia fiÅierului e nepermisÄ';
-$lang['uploadexist'] = 'FiÅierul existÄ deja. Nimic nu a fost fÄcut.';
-$lang['uploadbadcontent'] = 'ConÅ£inutul încÄrcat nu corespunde extensiei fiÅierului %s.';
-$lang['uploadspam'] = 'ÃncÄrcarea a fost blocatÄ datoritÄ listei negre de spam.';
-$lang['uploadxss'] = 'ÃncÄrcarea a fost blocatÄ datoritÄ unui posibil conÅ£inut dÄunÄtor.';
-$lang['deletesucc'] = 'FiÅierul "%s" a fost Åters.';
-$lang['deletefail'] = '"%s" nu a putut fi Åters - verificaÅ£i drepturile.';
-$lang['mediainuse'] = 'FiÅierul "%s" nu a fost Åters - este încÄ Ã®n uz.';
-$lang['namespaces'] = 'Spaţii de nume';
-$lang['mediafiles'] = 'FiÅiere disponibile în';
-$lang['js']['keepopen'] = 'MenÅ£ine fereastra deschisÄ la selecÅ£ie';
-$lang['js']['hidedetails'] = 'Ascunde Detalii';
-$lang['mediausage'] = 'FolosiÅ£i urmÄtoarea sintaxÄ pentru a face referinÅ£Ä la acest fiÅier:';
-$lang['mediaview'] = 'VizualizeazÄ fiÅierul original';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'ÃncarcÄ un fiÅier in acest spaÅ£iu de nume. Pentru a crea sub-spaÅ£ii de nume, adaugÄ-le la fiÅierul de încÄrcat, separate de doua puncte (:).';
-$lang['mediaextchange'] = 'Extensia fiÅierului a fost modificatÄ din .%s în .%s!';
-$lang['reference'] = 'ReferinÅ£Ä pentru';
-$lang['ref_inuse'] = 'FiÅierul nu a putut fi Åters întrucât este folosit încÄ de urmÄtoarele pagini:';
-$lang['ref_hidden'] = 'Nu aveÅ£i permisiunea sÄ citiÅ£i o parte din referinÅ£ele din paginÄ.';
-$lang['hits'] = 'Hituri';
-$lang['quickhits'] = 'Nume de pagini potrivite';
-$lang['toc'] = 'Cuprins';
-$lang['current'] = 'curent';
-$lang['yours'] = 'Versiunea ta';
-$lang['diff'] = 'aratÄ diferenÅ£ele faÅ£Ä de versiunea curentÄ';
-$lang['diff2'] = 'AratÄ diferenÅ£ele dintre versiunile selectate';
-$lang['line'] = 'Linia';
-$lang['breadcrumb'] = 'Traseu';
-$lang['youarehere'] = 'Sunteţi aici';
-$lang['lastmod'] = 'Ultima modificare';
-$lang['by'] = 'de cÄtre';
-$lang['deleted'] = 'Åters';
-$lang['created'] = 'creat';
-$lang['restored'] = 'versiune veche restauratÄ';
-$lang['external_edit'] = 'editare externÄ';
-$lang['summary'] = 'EditeazÄ sumarul';
-$lang['mail_newpage'] = 'pagina adÄugatÄ:';
-$lang['mail_changed'] = 'page schimbatÄ:';
-$lang['mail_new_user'] = 'utilizator nou';
-$lang['mail_upload'] = 'fiÅier încÄrcat:';
-$lang['nosmblinks'] = 'LegÄturile cÄtre sharing-uri Windows funcÅ£ioneaza numai in Microsoft Internet Explorer.\nPuteÅ£i însÄ copia Åi insera legÄtura.';
-$lang['qb_alert'] = 'IntroduceÅ£i vÄ rog textul care doriÅ£i sÄ-l formataÅ£i.\nVa fi adÄugat la sfîtÅitul documentului.';
-$lang['qb_bold'] = 'Text ÃngroÅat';
-$lang['qb_italic'] = 'Text Italic';
-$lang['qb_underl'] = 'Text Subliniat';
-$lang['qb_code'] = 'Text Cod';
-$lang['qb_strike'] = 'Text TÄiat';
-$lang['qb_h1'] = 'Titlu de Nivel 1';
-$lang['qb_h2'] = 'Titlu de Nivel 2';
-$lang['qb_h3'] = 'Titlu de Nivel 3';
-$lang['qb_h4'] = 'Titlu de Nivel 4';
-$lang['qb_h5'] = 'Titlu de Nivel 5';
-$lang['qb_link'] = 'LegÄturÄ internÄ';
-$lang['qb_extlink'] = 'LegÄtura externÄ';
-$lang['qb_hr'] = 'Linie Orizontal';
-$lang['qb_ol'] = 'ListÄ OrdonatÄ';
-$lang['qb_ul'] = 'ListÄ NeordoatÄ';
-$lang['qb_media'] = 'AdaugÄ imagini Åi alte fiÅiere';
-$lang['qb_sig'] = 'InsereazÄ semnÄturÄ';
-$lang['qb_smileys'] = 'Smiley-uri';
-$lang['qb_chars'] = 'Caractere speciale';
-$lang['del_confirm'] = 'DoriÅ£i într-adevÄr Återgerea elementelor selectate?';
-$lang['admin_register'] = 'AdaugÄ utilizator nou';
-$lang['metaedit'] = 'EditeazÄ Metadata';
-$lang['metasaveerr'] = 'Scrierea metadatelor a eÅuat';
-$lang['metasaveok'] = 'Metadatele au fost salvate';
-$lang['img_backto'] = 'Ãnapoi la';
-$lang['img_title'] = 'Titlu';
-$lang['img_caption'] = 'LegendÄ';
-$lang['img_date'] = 'Data';
-$lang['img_fname'] = 'Nume fiÅier';
-$lang['img_fsize'] = 'Dimensiune';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Camera';
-$lang['img_keywords'] = 'Cuvinte cheie';
-$lang['subscribe_success'] = 'A fost adÄugat %s la lista de subscriere pentru %s';
-$lang['subscribe_error'] = 'Eroare la adÄugarea %s la lista de subscriere pentru %s';
-$lang['subscribe_noaddress'] = 'Nu este nici o adresÄ de mail asociatÄ cu utilizatorul dvs. Nu puteÅ£i fi adÄugat la lista de subscriere';
-$lang['unsubscribe_success'] = '%s a fost eliminat din lista de subscriere pentru %s';
-$lang['unsubscribe_error'] = 'Eroare la eliminarea %s din lista de subscriere pentru %s';
-$lang['authmodfailed'] = 'ConfiguraÅ£ia autentificÄrii utilizatorului este eronatÄ. AnunÅ£aÅ£i Wiki Admin-ul.';
-$lang['authtempfail'] = 'Autentificarea utilizatorului este temporar indisponibilÄ. AnunÅ£aÅ£i Wiki Admin-ul.';
-$lang['i_chooselang'] = 'Alegeţi limba';
-$lang['i_installer'] = 'DokuWiki Installer';
-$lang['i_wikiname'] = 'Numele Wiki';
-$lang['i_enableacl'] = 'ActiveazÄ ACL (recomandat)';
-$lang['i_superuser'] = 'Superutilizator';
-$lang['i_problems'] = 'Programul de instalare a gÄsit câteva probleme, indicate mai jos. Nu puteÅ£i continua pânÄ nu le rezolvaÅ£i.';
-$lang['i_modified'] = 'Din motive de securitate, acest script va funcÅ£iona doar cu o instalare nouÄ Åi nemodificatÄ a Docuwiki.
-PuteÅ£i fie sÄ extrageÅ£i din nou fiÅierele din arhiva descÄrcatÄ fie sÄ consultaÅ£i instrucÅ£iunile de instalare Dokuwiki la <a href="http://wiki.splitbrain.org/wiki:install">';
-$lang['i_funcna'] = 'FuncÅ£ia PHP <code>%s</code> nu este disponibilÄ. Probabil provider-ul dvs. a inactivat-o pentru un motiv oarecare.';
-$lang['i_phpver'] = 'Versiunea dvs. de PHP <code>%s</code> este mai veche decât cea necesarÄ (<code>%s</code>). Trebuie sÄ vÄ actualizaÅ£i instalarea PHP.';
-$lang['i_permfail'] = '<code>%s</code> nu poate fi scris de cÄtre DokuWiki. Trebuie sÄ modificaÅ£i drepturile acestui director!';
-$lang['i_confexists'] = '<code>%s</code> existÄ deja';
-$lang['i_writeerr'] = 'Nu s-a putut crea <code>%s</code>. Trebuie sÄ verificaÅ£i drepturile directorului/fiÅierului Åi sÄ creaÅ£i fiÅierul manual.';
-$lang['i_badhash'] = 'dokuwiki.php nu a fost recunoscut sau a fost modificat (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - valoare nepemisÄ sau neintrodusÄ';
-$lang['i_success'] = 'Configurarea a fost finalizatÄ cu succes. Acum puteÅ£i sterge fiÅierul install.php. ContinuaÅ£i cu <a href="doku.php">your new DokuWiki</a>.';
-$lang['i_failure'] = 'Au apÄrut erori la scrierea fiÅierelor de configurare. Va trebui sÄ le corectaÅ£i manual înainte de a putea folosi <a href="doku.php">your new DokuWiki</a>.';
-$lang['i_policy'] = 'Politica ACL iniÅ£ialÄ';
-$lang['i_pol0'] = 'Wiki DeschisÄ (citeÅte, scrie Åi încarcÄ oricine)';
-$lang['i_pol1'] = 'Wiki DeschisÄ (citeste oricine, scrie Åi încarcÄ doar utilizatorul înregistrat)';
-$lang['i_pol2'] = 'Wiki ÃnchisÄ (citeÅte, scrie Åi încarcÄ doar utilizatorul înregistrat)';
-$lang['i_retry'] = 'ÃncearcÄ din nou';
+<?php
+/**
+ * romanian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Tiberiu Micu <tibimicu at gmx.net>
+ * @author Sergiu Baltariu <s_baltariu at yahoo.com>
+ * @author s_baltariu at yahoo.com
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = '\'';
+$lang['btn_edit'] = 'EditeazÄ aceastÄ paginÄ';
+$lang['btn_source'] = 'AratÄ sursa paginii';
+$lang['btn_show'] = 'AratÄ pagina';
+$lang['btn_create'] = 'CreazÄ aceastÄ paginÄ';
+$lang['btn_search'] = 'CautÄ';
+$lang['btn_save'] = 'SalveazÄ';
+$lang['btn_preview'] = 'PrevizualizeazÄ';
+$lang['btn_top'] = 'La început';
+$lang['btn_newer'] = '<< mai recent';
+$lang['btn_older'] = 'mai vechi>>';
+$lang['btn_revs'] = 'Versiuni vechi';
+$lang['btn_recent'] = 'ModificÄri recente';
+$lang['btn_upload'] = 'Upload';
+$lang['btn_cancel'] = 'Renunţare';
+$lang['btn_index'] = 'Index';
+$lang['btn_secedit'] = 'EditeazÄ';
+$lang['btn_login'] = 'Login';
+$lang['btn_logout'] = 'Logout';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'ActualizeazÄ';
+$lang['btn_delete'] = 'Återge';
+$lang['btn_back'] = 'Ãnapoi';
+$lang['btn_backlink'] = 'LegÄturÄ anterioarÄ';
+$lang['btn_backtomedia'] = 'Ãnapoi la SelecÅ£ia Mediafile';
+$lang['btn_subscribe'] = 'Subscrie Modificarea Paginii';
+$lang['btn_unsubscribe'] = 'AnuleazÄ Subscrierea ModificÄrii Paginii';
+$lang['btn_subscribens'] = 'Subscrie Modificarea Spaţiului de Nume';
+$lang['btn_unsubscribens'] = 'AnuleazÄ Subscrierea ModificÄrii SpaÅ£iului de Nume';
+$lang['btn_profile'] = 'ActualizeazÄ Profil';
+$lang['btn_reset'] = 'ReseteazÄ';
+$lang['btn_resendpwd'] = 'Trimite parola nouÄ';
+$lang['btn_draft'] = 'EditeazÄ schiÅ£Ä';
+$lang['btn_recover'] = 'RecupereazÄ schiÅ£Ä';
+$lang['btn_draftdel'] = 'Återge schiÅ£Ä';
+$lang['loggedinas'] = 'Logat ca Åi';
+$lang['user'] = 'Utilizator';
+$lang['pass'] = 'Parola';
+$lang['newpass'] = 'Parola nouÄ';
+$lang['oldpass'] = 'ConfirmÄ parola curentÄ';
+$lang['passchk'] = 'încÄ o datÄ';
+$lang['remember'] = 'Å¢ine-mÄ minte';
+$lang['fullname'] = 'Nume complet';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'ÃnregistreazÄ';
+$lang['profile'] = 'Profil Utilizator';
+$lang['badlogin'] = 'Imi pare rÄu, utilizatorul Åi/sau parola au fost greÅite.';
+$lang['minoredit'] = 'Modificare MinorÄ';
+$lang['draftdate'] = 'SchiÅ£Ä salvatÄ automat la';
+$lang['regmissing'] = 'Ne pare rÄu, trebuie sÄ completezi toate cîmpurile.';
+$lang['reguexists'] = 'Ne pare rÄu, un utilizator cu acest nume existÄ deja logat.';
+$lang['regsuccess'] = 'Utilizatorul a fost creat. Parola a fost trimisÄ prin email.';
+$lang['regsuccess2'] = 'Utilizatorul a fost creat.';
+$lang['regmailfail'] = 'Se pare cÄ a fost o eroare la trimiterea parolei prin email. ContactaÅ£i administratorul!';
+$lang['regbadmail'] = 'Adresa de email este invalidÄ - dacÄ credeÅ£i cÄ este o eroare contactaÅ£i administratorul.';
+$lang['regbadpass'] = 'Cele douÄ parole furnizate nu sunt identice; încercaÅ£i din nou.';
+$lang['regpwmail'] = 'Parola ta DokuWiki';
+$lang['reghere'] = 'Ãnca nu ai un cont? FÄ-Å£i unul';
+$lang['profna'] = 'AceastÄ wiki nu suportÄ modificarea profilului';
+$lang['profnochange'] = 'Nici o modificare; nimic de fÄcut.';
+$lang['profnoempty'] = 'Nu sunt admise numele sau adresa de email necompletate.';
+$lang['profchanged'] = 'Profilul de utilizator a fost actualizat succes.';
+$lang['pwdforget'] = 'Parola uitatÄ? LuaÅ£i una nouÄ';
+$lang['resendna'] = 'AceastÄ wiki nu suportÄ retrimiterea parolei.';
+$lang['resendpwd'] = 'Trimite parola nouÄ pentru';
+$lang['resendpwdmissing'] = 'Ne pare rÄu, trebuie completate toate câmpurile.';
+$lang['resendpwdnouser'] = 'Ne pare rÄu, acest utilizator nu poate fi gÄsit în baza de date.';
+$lang['resendpwdbadauth'] = 'Ne pare rÄu, acest cod de autorizare nu este corect. VerificaÅ£i dacÄ aÅ£i folosit tot link-ul de confirmare.';
+$lang['resendpwdconfirm'] = 'Un link de confirmare a fost trimis prin email.';
+$lang['resendpwdsuccess'] = 'Parola nouÄ';
+$lang['txt_upload'] = 'SelecteazÄ fisierul de încÄrcat';
+$lang['txt_filename'] = 'ÃncarcÄ fiÅierul ca (opÅ£ional)';
+$lang['txt_overwrt'] = 'Suprascrie fiÅierul existent';
+$lang['lockedby'] = 'Momentan blocat de';
+$lang['lockexpire'] = 'Blocarea expirÄ la';
+$lang['willexpire'] = 'Blocarea pentru editarea paginii expirÄ intr-un minut.\nPentru a preveni conflictele foloseÅte butonul de previzualizare pentru resetarea blocÄrii.';
+$lang['notsavedyet'] = 'ExistÄ modificÄri nesalvate, care se vor pierde.\nDoreÅti sÄ continui?';
+$lang['rssfailed'] = 'A apÄrut o eroare in timpul descÄrcÄrii acestui cîmp: ';
+$lang['nothingfound'] = 'Nu am gÄsit nimic.';
+$lang['mediaselect'] = 'Selectare fiÅiere media';
+$lang['fileupload'] = 'ÃncarcÄ fiÅier media';
+$lang['uploadsucc'] = 'ÃncÄrcare reuÅitÄ';
+$lang['uploadfail'] = 'ÃncÄrcare eÅuatÄ. Poate din cauza permisiunilor?';
+$lang['uploadwrong'] = 'ÃncÄrcare nepermisÄ. Extensia fiÅierului e nepermisÄ';
+$lang['uploadexist'] = 'FiÅierul existÄ deja. Nimic nu a fost fÄcut.';
+$lang['uploadbadcontent'] = 'ConÅ£inutul încÄrcat nu corespunde extensiei fiÅierului %s.';
+$lang['uploadspam'] = 'ÃncÄrcarea a fost blocatÄ datoritÄ listei negre de spam.';
+$lang['uploadxss'] = 'ÃncÄrcarea a fost blocatÄ datoritÄ unui posibil conÅ£inut dÄunÄtor.';
+$lang['deletesucc'] = 'FiÅierul "%s" a fost Åters.';
+$lang['deletefail'] = '"%s" nu a putut fi Åters - verificaÅ£i drepturile.';
+$lang['mediainuse'] = 'FiÅierul "%s" nu a fost Åters - este încÄ Ã®n uz.';
+$lang['namespaces'] = 'Spaţii de nume';
+$lang['mediafiles'] = 'FiÅiere disponibile în';
+$lang['js']['keepopen'] = 'MenÅ£ine fereastra deschisÄ la selecÅ£ie';
+$lang['js']['hidedetails'] = 'Ascunde Detalii';
+$lang['mediausage'] = 'FolosiÅ£i urmÄtoarea sintaxÄ pentru a face referinÅ£Ä la acest fiÅier:';
+$lang['mediaview'] = 'VizualizeazÄ fiÅierul original';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'ÃncarcÄ un fiÅier in acest spaÅ£iu de nume. Pentru a crea sub-spaÅ£ii de nume, adaugÄ-le la fiÅierul de încÄrcat, separate de doua puncte (:).';
+$lang['mediaextchange'] = 'Extensia fiÅierului a fost modificatÄ din .%s în .%s!';
+$lang['reference'] = 'ReferinÅ£Ä pentru';
+$lang['ref_inuse'] = 'FiÅierul nu a putut fi Åters întrucât este folosit încÄ de urmÄtoarele pagini:';
+$lang['ref_hidden'] = 'Nu aveÅ£i permisiunea sÄ citiÅ£i o parte din referinÅ£ele din paginÄ.';
+$lang['hits'] = 'Hituri';
+$lang['quickhits'] = 'Nume de pagini potrivite';
+$lang['toc'] = 'Cuprins';
+$lang['current'] = 'curent';
+$lang['yours'] = 'Versiunea ta';
+$lang['diff'] = 'aratÄ diferenÅ£ele faÅ£Ä de versiunea curentÄ';
+$lang['diff2'] = 'AratÄ diferenÅ£ele dintre versiunile selectate';
+$lang['line'] = 'Linia';
+$lang['breadcrumb'] = 'Traseu';
+$lang['youarehere'] = 'Sunteţi aici';
+$lang['lastmod'] = 'Ultima modificare';
+$lang['by'] = 'de cÄtre';
+$lang['deleted'] = 'Åters';
+$lang['created'] = 'creat';
+$lang['restored'] = 'versiune veche restauratÄ';
+$lang['external_edit'] = 'editare externÄ';
+$lang['summary'] = 'EditeazÄ sumarul';
+$lang['mail_newpage'] = 'pagina adÄugatÄ:';
+$lang['mail_changed'] = 'page schimbatÄ:';
+$lang['mail_new_user'] = 'utilizator nou';
+$lang['mail_upload'] = 'fiÅier încÄrcat:';
+$lang['nosmblinks'] = 'LegÄturile cÄtre sharing-uri Windows funcÅ£ioneaza numai in Microsoft Internet Explorer.\nPuteÅ£i însÄ copia Åi insera legÄtura.';
+$lang['qb_alert'] = 'IntroduceÅ£i vÄ rog textul care doriÅ£i sÄ-l formataÅ£i.\nVa fi adÄugat la sfîtÅitul documentului.';
+$lang['qb_bold'] = 'Text ÃngroÅat';
+$lang['qb_italic'] = 'Text Italic';
+$lang['qb_underl'] = 'Text Subliniat';
+$lang['qb_code'] = 'Text Cod';
+$lang['qb_strike'] = 'Text TÄiat';
+$lang['qb_h1'] = 'Titlu de Nivel 1';
+$lang['qb_h2'] = 'Titlu de Nivel 2';
+$lang['qb_h3'] = 'Titlu de Nivel 3';
+$lang['qb_h4'] = 'Titlu de Nivel 4';
+$lang['qb_h5'] = 'Titlu de Nivel 5';
+$lang['qb_link'] = 'LegÄturÄ internÄ';
+$lang['qb_extlink'] = 'LegÄtura externÄ';
+$lang['qb_hr'] = 'Linie Orizontal';
+$lang['qb_ol'] = 'ListÄ OrdonatÄ';
+$lang['qb_ul'] = 'ListÄ NeordoatÄ';
+$lang['qb_media'] = 'AdaugÄ imagini Åi alte fiÅiere';
+$lang['qb_sig'] = 'InsereazÄ semnÄturÄ';
+$lang['qb_smileys'] = 'Smiley-uri';
+$lang['qb_chars'] = 'Caractere speciale';
+$lang['del_confirm'] = 'DoriÅ£i într-adevÄr Återgerea elementelor selectate?';
+$lang['admin_register'] = 'AdaugÄ utilizator nou';
+$lang['metaedit'] = 'EditeazÄ Metadata';
+$lang['metasaveerr'] = 'Scrierea metadatelor a eÅuat';
+$lang['metasaveok'] = 'Metadatele au fost salvate';
+$lang['img_backto'] = 'Ãnapoi la';
+$lang['img_title'] = 'Titlu';
+$lang['img_caption'] = 'LegendÄ';
+$lang['img_date'] = 'Data';
+$lang['img_fname'] = 'Nume fiÅier';
+$lang['img_fsize'] = 'Dimensiune';
+$lang['img_artist'] = 'Fotograf';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Camera';
+$lang['img_keywords'] = 'Cuvinte cheie';
+$lang['subscribe_success'] = 'A fost adÄugat %s la lista de subscriere pentru %s';
+$lang['subscribe_error'] = 'Eroare la adÄugarea %s la lista de subscriere pentru %s';
+$lang['subscribe_noaddress'] = 'Nu este nici o adresÄ de mail asociatÄ cu utilizatorul dvs. Nu puteÅ£i fi adÄugat la lista de subscriere';
+$lang['unsubscribe_success'] = '%s a fost eliminat din lista de subscriere pentru %s';
+$lang['unsubscribe_error'] = 'Eroare la eliminarea %s din lista de subscriere pentru %s';
+$lang['authmodfailed'] = 'ConfiguraÅ£ia autentificÄrii utilizatorului este eronatÄ. AnunÅ£aÅ£i Wiki Admin-ul.';
+$lang['authtempfail'] = 'Autentificarea utilizatorului este temporar indisponibilÄ. AnunÅ£aÅ£i Wiki Admin-ul.';
+$lang['i_chooselang'] = 'Alegeţi limba';
+$lang['i_installer'] = 'DokuWiki Installer';
+$lang['i_wikiname'] = 'Numele Wiki';
+$lang['i_enableacl'] = 'ActiveazÄ ACL (recomandat)';
+$lang['i_superuser'] = 'Superutilizator';
+$lang['i_problems'] = 'Programul de instalare a gÄsit câteva probleme, indicate mai jos. Nu puteÅ£i continua pânÄ nu le rezolvaÅ£i.';
+$lang['i_modified'] = 'Din motive de securitate, acest script va funcÅ£iona doar cu o instalare nouÄ Åi nemodificatÄ a Docuwiki.
+PuteÅ£i fie sÄ extrageÅ£i din nou fiÅierele din arhiva descÄrcatÄ fie sÄ consultaÅ£i instrucÅ£iunile de instalare Dokuwiki la <a href="http://wiki.splitbrain.org/wiki:install">';
+$lang['i_funcna'] = 'FuncÅ£ia PHP <code>%s</code> nu este disponibilÄ. Probabil provider-ul dvs. a inactivat-o pentru un motiv oarecare.';
+$lang['i_phpver'] = 'Versiunea dvs. de PHP <code>%s</code> este mai veche decât cea necesarÄ (<code>%s</code>). Trebuie sÄ vÄ actualizaÅ£i instalarea PHP.';
+$lang['i_permfail'] = '<code>%s</code> nu poate fi scris de cÄtre DokuWiki. Trebuie sÄ modificaÅ£i drepturile acestui director!';
+$lang['i_confexists'] = '<code>%s</code> existÄ deja';
+$lang['i_writeerr'] = 'Nu s-a putut crea <code>%s</code>. Trebuie sÄ verificaÅ£i drepturile directorului/fiÅierului Åi sÄ creaÅ£i fiÅierul manual.';
+$lang['i_badhash'] = 'dokuwiki.php nu a fost recunoscut sau a fost modificat (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - valoare nepemisÄ sau neintrodusÄ';
+$lang['i_success'] = 'Configurarea a fost finalizatÄ cu succes. Acum puteÅ£i sterge fiÅierul install.php. ContinuaÅ£i cu <a href="doku.php">your new DokuWiki</a>.';
+$lang['i_failure'] = 'Au apÄrut erori la scrierea fiÅierelor de configurare. Va trebui sÄ le corectaÅ£i manual înainte de a putea folosi <a href="doku.php">your new DokuWiki</a>.';
+$lang['i_policy'] = 'Politica ACL iniÅ£ialÄ';
+$lang['i_pol0'] = 'Wiki DeschisÄ (citeÅte, scrie Åi încarcÄ oricine)';
+$lang['i_pol1'] = 'Wiki DeschisÄ (citeste oricine, scrie Åi încarcÄ doar utilizatorul înregistrat)';
+$lang['i_pol2'] = 'Wiki ÃnchisÄ (citeÅte, scrie Åi încarcÄ doar utilizatorul înregistrat)';
+$lang['i_retry'] = 'ÃncearcÄ din nou';
Modified: site/trunk/www-root/wiki/inc/lang/ro/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== PaginÄ blocatÄ ======
-
-Pagina este momentan blocatÄ de alt utilizator. Trebuie sÄ aÅtepÅ£i pînÄ cînd
-acest utilizator terminÄ editarea ori expirÄ blocarea.
+====== PaginÄ blocatÄ ======
+
+Pagina este momentan blocatÄ de alt utilizator. Trebuie sÄ aÅtepÅ£i pînÄ cînd
+acest utilizator terminÄ editarea ori expirÄ blocarea.
Modified: site/trunk/www-root/wiki/inc/lang/ro/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Login ======
-
-Nu sînteţi logat! Introduceţi datele de autentificare pentru logare.
-Trebuie sÄ permiteÅ£i cookie-uri pentru logare.
-
+====== Login ======
+
+Nu sînteţi logat! Introduceţi datele de autentificare pentru logare.
+Trebuie sÄ permiteÅ£i cookie-uri pentru logare.
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-A fost adÄugatÄ sau schimbatÄ o paginÄ. Aici sînt detaliile:
-
-Data : @DATE@
-Navigator : @BROWSER@
-Adresa-IP : @IPADDRESS@
-Nume gazdÄ : @HOSTNAME@
-Versiune veche : @OLDPAGE@
-Versiune nouÄ : @NEWPAGE@
-Rezumat editare: @SUMMARY@
-
- at DIFF@
-
-
---
-Mailul a fost generat de DokuWiki la
- at DOKUWIKIURL@
+A fost adÄugatÄ sau schimbatÄ o paginÄ. Aici sînt detaliile:
+
+Data : @DATE@
+Navigator : @BROWSER@
+Adresa-IP : @IPADDRESS@
+Nume gazdÄ : @HOSTNAME@
+Versiune veche : @OLDPAGE@
+Versiune nouÄ : @NEWPAGE@
+Rezumat editare: @SUMMARY@
+
+ at DIFF@
+
+
+--
+Mailul a fost generat de DokuWiki la
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ro/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Subiectul nu existÄ Ã®ncÄ====
-
-AÅ£i urmat o legÄturÄ cÄtre un subiect care nu existÄ. O puteÅ£i crea prin apÄsarea butonului ''EditeazÄ aceastÄ paginÄ''.
+======Subiectul nu existÄ Ã®ncÄ====
+
+AÅ£i urmat o legÄturÄ cÄtre un subiect care nu existÄ. O puteÅ£i crea prin apÄsarea butonului ''EditeazÄ aceastÄ paginÄ''.
Modified: site/trunk/www-root/wiki/inc/lang/ro/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Nu existÄ versiunea======
-
-Versiunea specificatÄ nu existÄ. FoloseÅte butonul ''Versiuni vechi'' pentru o listÄ a versiunilor acestui document.
-
+======Nu existÄ versiunea======
+
+Versiunea specificatÄ nu existÄ. FoloseÅte butonul ''Versiuni vechi'' pentru o listÄ a versiunilor acestui document.
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Salut @FULLNAME@!
-
-Aici sînt datele utilizator pentru @TITLE@ la @DOKUWIKIURL@
-
-Login : @LOGIN@
-Parola : @PASSWORD@
-
---
-Mesajul a fost generat de cÄtre DokuWiki la
- at DOKUWIKIURL@
+Salut @FULLNAME@!
+
+Aici sînt datele utilizator pentru @TITLE@ la @DOKUWIKIURL@
+
+Login : @LOGIN@
+Parola : @PASSWORD@
+
+--
+Mesajul a fost generat de cÄtre DokuWiki la
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ro/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Previzualizare======
-
-Acesta este modul în care va arÄta textul. Nu uita: **Nu** e încÄ **salvat**!
-
+======Previzualizare======
+
+Acesta este modul în care va arÄta textul. Nu uita: **Nu** e încÄ **salvat**!
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-Salut @FULLNAME@!
-
-Cineva a cerut o parolÄ nouÄ pentru @TITLE@ pentru conectarea la @DOKUWIKIURL@
-
-DacÄ nu aÅ£i solicitat o parolÄ nouÄ, ignoraÅ£i acest email.
-
-Pentru a confirma cÄ cererea a fost într-adevÄr trimisÄ de dumneavoastrÄ, folosiÅ£i link-ul de mai jos.
-
- at CONFIRM@
-
---
-Acest mail a fost generat de DocuWiki la
+Salut @FULLNAME@!
+
+Cineva a cerut o parolÄ nouÄ pentru @TITLE@ pentru conectarea la @DOKUWIKIURL@
+
+DacÄ nu aÅ£i solicitat o parolÄ nouÄ, ignoraÅ£i acest email.
+
+Pentru a confirma cÄ cererea a fost într-adevÄr trimisÄ de dumneavoastrÄ, folosiÅ£i link-ul de mai jos.
+
+ at CONFIRM@
+
+--
+Acest mail a fost generat de DocuWiki la
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ro/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-AceastÄ paginÄ poate fi doar cititÄ. PoÅ£i vedea sursa, dar n-o poÅ£i modifica. ConsultÄ administratorul dacÄ crezi cÄ e ceva în neregulÄ.
-
+AceastÄ paginÄ poate fi doar cititÄ. PoÅ£i vedea sursa, dar n-o poÅ£i modifica. ConsultÄ administratorul dacÄ crezi cÄ e ceva în neregulÄ.
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======SchimbÄri recente======
-
-UrmÄtoarele pagini au fost schimbate recent.
-
-
+======SchimbÄri recente======
+
+UrmÄtoarele pagini au fost schimbate recent.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÃnregistreazÄ-te ca utilizator nou ======
-Pentru a crea un wiki nou completeazÄ mai jos toate informaÅ£iile.
-AsigurÄ-te cÄ ai introdus o adresÄ de **e-mail validÄ** unde va fi trimisÄ
-noua parolÄ. Numele de utilizator trebuie de asemenea sÄ fie valid [[doku>wiki:pagename|pagename]].
-
+====== ÃnregistreazÄ-te ca utilizator nou ======
+Pentru a crea un wiki nou completeazÄ mai jos toate informaÅ£iile.
+AsigurÄ-te cÄ ai introdus o adresÄ de **e-mail validÄ** unde va fi trimisÄ
+noua parolÄ. Numele de utilizator trebuie de asemenea sÄ fie valid [[doku>wiki:pagename|pagename]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Un nou utilizator s-a înregsitrat. IatÄ detaliile:
-
-Nume utilizator : @NEWUSER@
-Nume complet : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-Data : @DATE@
-Browser : @BROWSER@
-AdresÄ IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-
---
-Acest mail a fost generat automat de cÄtre DokuWiki la
- at DOKUWIKIURL@
+Un nou utilizator s-a înregsitrat. IatÄ detaliile:
+
+Nume utilizator : @NEWUSER@
+Nume complet : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+Data : @DATE@
+Browser : @BROWSER@
+AdresÄ IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+
+--
+Acest mail a fost generat automat de cÄtre DokuWiki la
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ro/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Trimite parolÄ nouÄ ======
-
+====== Trimite parolÄ nouÄ ======
+
IntroduceÅ£i numele de utilizator în formularul de mai jos pentru a solicita o nouÄ parolÄ pentru aceastÄ wiki. Un link de confirmare va fi trimis la adresa de email înregistratÄ.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ro/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Versiune veche======
-
-Acestea sînt versiunile vechi ale documentului curent. Pentru revenirea la o versiune mai veche, selecteaz-o de mai jos,
-clic pe ''EditeazÄ aceastÄ paginÄ'' Åi salveaz-o.
-
+======Versiune veche======
+
+Acestea sînt versiunile vechi ale documentului curent. Pentru revenirea la o versiune mai veche, selecteaz-o de mai jos,
+clic pe ''EditeazÄ aceastÄ paginÄ'' Åi salveaz-o.
+
Modified: site/trunk/www-root/wiki/inc/lang/ro/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======CÄutare======
-
-Rezultatele cÄutÄrii sînt afisate mai jos. DacÄ n-aÅ£i gÄsit ce-aÅ£i cÄutat, puteÅ£i creea o paginÄ nouÄ dupÄ
-cÄutare prin folosirea butonului ''EditeazÄ aceastÄ paginÄ''.
-
-=====Rezultate=====
+======CÄutare======
+
+Rezultatele cÄutÄrii sînt afisate mai jos. DacÄ n-aÅ£i gÄsit ce-aÅ£i cÄutat, puteÅ£i creea o paginÄ nouÄ dupÄ
+cÄutare prin folosirea butonului ''EditeazÄ aceastÄ paginÄ''.
+
+=====Rezultate=====
Modified: site/trunk/www-root/wiki/inc/lang/ro/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Aceasta e o versiune veche a documentului!**
-----
+**Aceasta e o versiune veche a documentului!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/ro/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# Aceasta este o listÄ de cuvinte ignorate la indexare, câte un cuvânt pe linie
-# Când editaÅ£i acest fiÅier, asiguraÅ£i-vÄ cÄ folosiÅ£i sfârÅituri de linie UNIX (o singurÄ linie nouÄ)
-# Nu e nevoie sÄ includeÅ£i cuvinte mai scurte de 3 caractere - acestea sunt, oricum, ignorate
-# AceastÄ listÄ se bazeazÄ pe cele ce pot fi gÄsite la http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# Aceasta este o listÄ de cuvinte ignorate la indexare, câte un cuvânt pe linie
+# Când editaÅ£i acest fiÅier, asiguraÅ£i-vÄ cÄ folosiÅ£i sfârÅituri de linie UNIX (o singurÄ linie nouÄ)
+# Nu e nevoie sÄ includeÅ£i cuvinte mai scurte de 3 caractere - acestea sunt, oricum, ignorate
+# AceastÄ listÄ se bazeazÄ pe cele ce pot fi gÄsite la http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/ro/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-BunÄ!
-
-Pagina @PAGE@ din @TITLE@ wiki a fost modificatÄ.
-IatÄ modificÄrile:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Pentru a vÄ dezabona, logaÅ£i-vÄ la wiki la
- at DOKUWIKIURL@, apoi vizitaţi
- at NEWPAGE@
-Åi alegeÅ£i 'AnuleazÄ modificÄrile'.
-
---
-Acest mail a fost generat automat de cÄtre DokuWiki la
- at DOKUWIKIURL@
+BunÄ!
+
+Pagina @PAGE@ din @TITLE@ wiki a fost modificatÄ.
+IatÄ modificÄrile:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Pentru a vÄ dezabona, logaÅ£i-vÄ la wiki la
+ at DOKUWIKIURL@, apoi vizitaţi
+ at NEWPAGE@
+Åi alegeÅ£i 'AnuleazÄ modificÄrile'.
+
+--
+Acest mail a fost generat automat de cÄtre DokuWiki la
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ro/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Actualizare profil utilizator ======
-
+====== Actualizare profil utilizator ======
+
Trebuie sÄ completaÅ£i doar câmpurile pe care doriÅ£i sÄ le modificaÅ£i. Nu puteÅ£i modifica numele de utilizator.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ro/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Un fiÅier a fost încÄrcat în DocuWiki. IatÄ detaliile:
-
-FiÅier : @MEDIA@
-Data : @DATE@
-Browser : @BROWSER@
-AdresÄ IP : @IPADDRESS@
-Hostname : @HOSTNAME@
-Dimensiune : @SIZE@
-MIME Type : @MIME@
-Utilizator : @USER@
-
---
-Acest mail a fost generat automat de cÄtre DokuWiki la
- at DOKUWIKIURL@
+Un fiÅier a fost încÄrcat în DocuWiki. IatÄ detaliile:
+
+FiÅier : @MEDIA@
+Data : @DATE@
+Browser : @BROWSER@
+AdresÄ IP : @IPADDRESS@
+Hostname : @HOSTNAME@
+Dimensiune : @SIZE@
+MIME Type : @MIME@
+Utilizator : @USER@
+
+--
+Acest mail a fost generat automat de cÄtre DokuWiki la
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ro/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ro/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ro/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======SPAM blocat======
-
-ModificÄrile **nu** au fost salvate deoarece conÅ£in unul sau mai multe cuvinte nepermise.
-Daca ai încercat sÄ spamezi Wiki-ul -- EÅti un om rÄu! DacÄ crezi cÄ asta e o eroare, contacteazÄ
-administratorul acestui Wiki.
-
+======SPAM blocat======
+
+ModificÄrile **nu** au fost salvate deoarece conÅ£in unul sau mai multe cuvinte nepermise.
+Daca ai încercat sÄ spamezi Wiki-ul -- EÅti un om rÄu! DacÄ crezi cÄ asta e o eroare, contacteazÄ
+administratorul acestui Wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== УпÑавление ======
-
-Ðиже Ð²Ñ ÑможеÑе найÑи ÑпиÑок админиÑÑÑаÑивнÑÑ
опеÑаÑий, доÑÑÑпнÑÑ
в DokuWiki.
-
+====== УпÑавление ======
+
+Ðиже Ð²Ñ ÑможеÑе найÑи ÑпиÑок админиÑÑÑаÑивнÑÑ
опеÑаÑий, доÑÑÑпнÑÑ
в DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐбÑаÑнÑе ÑÑÑлки ======
-
-ÐÑо ÑпиÑок ÑÑÑаниÑ, коÑоÑÑе ÑÑÑлаÑÑÑÑ Ð½Ð° ÑекÑÑÑÑ ÑÑÑаниÑÑ.
-
+====== ÐбÑаÑнÑе ÑÑÑлки ======
+
+ÐÑо ÑпиÑок ÑÑÑаниÑ, коÑоÑÑе ÑÑÑлаÑÑÑÑ Ð½Ð° ÑекÑÑÑÑ ÑÑÑаниÑÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======ÐоÑÑÑп запÑеÑен======
-
-ÐзвиниÑе, Ñ Ð²Ð°Ñ Ð½Ðµ Ñ
ваÑÐ°ÐµÑ Ð¿Ñав Ð´Ð»Ñ ÑÑого дейÑÑвиÑ. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ, ÐÑ Ð·Ð°Ð±Ñли войÑи в вики под Ñвоим именем?
+======ÐоÑÑÑп запÑеÑен======
+
+ÐзвиниÑе, Ñ Ð²Ð°Ñ Ð½Ðµ Ñ
ваÑÐ°ÐµÑ Ð¿Ñав Ð´Ð»Ñ ÑÑого дейÑÑвиÑ. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ, ÐÑ Ð·Ð°Ð±Ñли войÑи в вики под Ñвоим именем?
Modified: site/trunk/www-root/wiki/inc/lang/ru/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======РазлиÑиÑ======
-
-ÐдеÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑазлиÑÐ¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ð²ÑбÑанной Ñевизией и ÑекÑÑей веÑÑией данной ÑÑÑаниÑÑ.
-
+======РазлиÑиÑ======
+
+ÐдеÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑазлиÑÐ¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ð²ÑбÑанной Ñевизией и ÑекÑÑей веÑÑией данной ÑÑÑаниÑÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/draft.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-ÐÑÑедакÑиÑÑйÑе ÑÑÑаниÑÑ Ð¸ нажмиÑе ''СоÑ
ÑаниÑÑ''. ÐÑоÑÑиÑе [[wiki:syntax]] Ð´Ð»Ñ Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ ÑинÑакÑиÑом вики. ÐожалÑйÑÑа, ÑедакÑиÑÑйÑе ÑолÑко в Ñом ÑлÑÑае, еÑли планиÑÑеÑе **ÑлÑÑÑиÑÑ** ÑодеÑжимое. ÐÑли ÐÑ Ð¿ÑоÑÑо Ñ
оÑиÑе поÑеÑÑиÑоваÑÑ ÑÑо-либо, воÑполÑзÑйÑеÑÑ ÑпеÑиалÑной ÑÑÑаниÑей: [[playground:playground]].
-
+ÐÑÑедакÑиÑÑйÑе ÑÑÑаниÑÑ Ð¸ нажмиÑе ''СоÑ
ÑаниÑÑ''. ÐÑоÑÑиÑе [[wiki:syntax]] Ð´Ð»Ñ Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ ÑинÑакÑиÑом вики. ÐожалÑйÑÑа, ÑедакÑиÑÑйÑе ÑолÑко в Ñом ÑлÑÑае, еÑли планиÑÑеÑе **ÑлÑÑÑиÑÑ** ÑодеÑжимое. ÐÑли ÐÑ Ð¿ÑоÑÑо Ñ
оÑиÑе поÑеÑÑиÑоваÑÑ ÑÑо-либо, воÑполÑзÑйÑеÑÑ ÑпеÑиалÑной ÑÑÑаниÑей: [[playground:playground]].
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/editrev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== СодеÑжание ======
-
-ÐеÑед Ðами ÑпиÑок доÑÑÑпнÑÑ
ÑÑÑаниÑ, ÑпоÑÑдоÑеннÑй по пÑоÑÑÑанÑÑвам имÑн ([[doku>wiki:namespaces|namespaces]]).
-
+====== СодеÑжание ======
+
+ÐеÑед Ðами ÑпиÑок доÑÑÑпнÑÑ
ÑÑÑаниÑ, ÑпоÑÑдоÑеннÑй по пÑоÑÑÑанÑÑвам имÑн ([[doku>wiki:namespaces|namespaces]]).
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-<p>ÐÑа ÑÑÑаниÑа пÑедназнаÑена помоÑÑ Ð² пеÑвонаÑалÑной ÑÑÑановке и конÑигÑÑаÑии <a href="http://wiki.splitbrain.org">DokuWiki</a>. ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑогÑамме ÑÑÑановки доÑÑÑпна на ÐµÑ <a href="http://wiki.splitbrain.org/wiki:installer">ÑÑÑаниÑе докÑменÑаÑии</a>.</p>
-
-<p>DokuWiki иÑполÑзÑÐµÑ Ð¾Ð±ÑÑнÑе ÑÐ°Ð¹Ð»Ñ Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ дополниÑелÑной инÑоÑмаÑии (напÑимеÑ, изобÑажений, поиÑкового индекÑа, пÑедÑдÑÑиÑ
веÑÑий ÑÑÑаниÑÑ, и Ñ.д.). ÐÐ»Ñ ÑÑпеÑной ÑабоÑÑ DokuWiki <strong>необÑ
одим</strong> доÑÑÑп на запиÑÑ Ðº диÑекÑоÑиÑм Ñ ÑÑими Ñайлами. ÐÐ°Ð½Ð½Ð°Ñ Ð¿ÑогÑамма ÑÑÑановки не Ð¼Ð¾Ð¶ÐµÑ ÑамоÑÑоÑÑелÑно изменÑÑÑ ÑиÑÑемнÑе пÑава доÑÑÑпа к диÑекÑоÑиÑм. ÐбÑÑно ÑÑо делаеÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ Ð¸Ð· командной ÑÑÑоки (shell), или, еÑли ÐÑ Ð¸ÑполÑзÑеÑе ÑдалÑннÑй Ñ
оÑÑинг, ÑеÑез FTP или Ð¿Ð°Ð½ÐµÐ»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð°Ñего Ñ
оÑÑинга (напÑимеÑ, cPanel).</p>
-
-<p>ÐÑогÑамма ÑÑÑановки вклÑÑÐ¸Ñ Ð¸ÑполÑзование ÑпиÑков конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа (<acronym title="access control list">ACL</acronym>) в ÐаÑей DokuWiki. ÐÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ, поÑле авÑоÑизаÑии в DokuWiki, иÑполÑзоваÑÑ ÑпеÑиалÑное Ð¼ÐµÐ½Ñ Ð´Ð»Ñ ÑÑÑановки плагинов, ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑми и доÑÑÑпом к ÑÑÑаниÑам вики, а Ñакже Ð´Ð»Ñ Ð½Ð°ÑÑÑойки конÑигÑÑаÑионнÑÑ
паÑамеÑÑов. СпиÑки конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа не обÑзаÑелÑÐ½Ñ Ð´Ð»Ñ ÑабоÑÑ DokuWiki, однако они позволÑÑÑ ÑпÑоÑÑиÑÑ ÑпÑавление ваÑей DokuWiki.</p>
-
-<p>ÐпÑÑнÑм полÑзоваÑелÑм и полÑзоваÑелÑм Ñо ÑпеÑиалÑнÑми ÑÑебованиÑми к ÑÑÑановке ÑекомендÑеÑÑÑ Ð¾Ð±ÑаÑиÑÑÑÑ Ð¿Ð¾ ÑледÑÑÑим ÑÑÑлкам Ð´Ð»Ñ ÑÑоÑÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑобноÑÑей <a href="http://wiki.splitbrain.org/wiki:install">пÑоÑеÑÑа ÑÑÑановки</a> и <a href="http://wiki.splitbrain.org/wiki:config">паÑамеÑÑов конÑигÑÑаÑии</a>.</p>
+<p>ÐÑа ÑÑÑаниÑа пÑедназнаÑена помоÑÑ Ð² пеÑвонаÑалÑной ÑÑÑановке и конÑигÑÑаÑии <a href="http://wiki.splitbrain.org">DokuWiki</a>. ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑогÑамме ÑÑÑановки доÑÑÑпна на ÐµÑ <a href="http://wiki.splitbrain.org/wiki:installer">ÑÑÑаниÑе докÑменÑаÑии</a>.</p>
+
+<p>DokuWiki иÑполÑзÑÐµÑ Ð¾Ð±ÑÑнÑе ÑÐ°Ð¹Ð»Ñ Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ дополниÑелÑной инÑоÑмаÑии (напÑимеÑ, изобÑажений, поиÑкового индекÑа, пÑедÑдÑÑиÑ
веÑÑий ÑÑÑаниÑÑ, и Ñ.д.). ÐÐ»Ñ ÑÑпеÑной ÑабоÑÑ DokuWiki <strong>необÑ
одим</strong> доÑÑÑп на запиÑÑ Ðº диÑекÑоÑиÑм Ñ ÑÑими Ñайлами. ÐÐ°Ð½Ð½Ð°Ñ Ð¿ÑогÑамма ÑÑÑановки не Ð¼Ð¾Ð¶ÐµÑ ÑамоÑÑоÑÑелÑно изменÑÑÑ ÑиÑÑемнÑе пÑава доÑÑÑпа к диÑекÑоÑиÑм. ÐбÑÑно ÑÑо делаеÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ Ð¸Ð· командной ÑÑÑоки (shell), или, еÑли ÐÑ Ð¸ÑполÑзÑеÑе ÑдалÑннÑй Ñ
оÑÑинг, ÑеÑез FTP или Ð¿Ð°Ð½ÐµÐ»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð°Ñего Ñ
оÑÑинга (напÑимеÑ, cPanel).</p>
+
+<p>ÐÑогÑамма ÑÑÑановки вклÑÑÐ¸Ñ Ð¸ÑполÑзование ÑпиÑков конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа (<acronym title="access control list">ACL</acronym>) в ÐаÑей DokuWiki. ÐÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ, поÑле авÑоÑизаÑии в DokuWiki, иÑполÑзоваÑÑ ÑпеÑиалÑное Ð¼ÐµÐ½Ñ Ð´Ð»Ñ ÑÑÑановки плагинов, ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑми и доÑÑÑпом к ÑÑÑаниÑам вики, а Ñакже Ð´Ð»Ñ Ð½Ð°ÑÑÑойки конÑигÑÑаÑионнÑÑ
паÑамеÑÑов. СпиÑки конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпа не обÑзаÑелÑÐ½Ñ Ð´Ð»Ñ ÑабоÑÑ DokuWiki, однако они позволÑÑÑ ÑпÑоÑÑиÑÑ ÑпÑавление ваÑей DokuWiki.</p>
+
+<p>ÐпÑÑнÑм полÑзоваÑелÑм и полÑзоваÑелÑм Ñо ÑпеÑиалÑнÑми ÑÑебованиÑми к ÑÑÑановке ÑекомендÑеÑÑÑ Ð¾Ð±ÑаÑиÑÑÑÑ Ð¿Ð¾ ÑледÑÑÑим ÑÑÑлкам Ð´Ð»Ñ ÑÑоÑÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑобноÑÑей <a href="http://wiki.splitbrain.org/wiki:install">пÑоÑеÑÑа ÑÑÑановки</a> и <a href="http://wiki.splitbrain.org/wiki:config">паÑамеÑÑов конÑигÑÑаÑии</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/ru/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,206 +1,206 @@
-<?php
-/**
- * Russian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Yuri Pimenov <up at ftpsearch.lv>
- * @author Igor Tarasov <tigr at mail15.com>
- * @author Denis Simakov <akinoame1 at gmail.com>
- * @author Kaens Bard <kaens at mail.ru>
- * @author Andrew Pleshakov <beotiger at mail.ru>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = '«';
-$lang['doublequoteclosing'] = '»';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'ÐÑавиÑÑ ÑÑÑаниÑÑ';
-$lang['btn_source'] = 'ÐоказаÑÑ Ð¸ÑÑ
однÑй ÑекÑÑ';
-$lang['btn_show'] = 'ÐоказаÑÑ ÑÑÑаниÑÑ';
-$lang['btn_create'] = 'СоздаÑÑ ÑÑÑаниÑÑ';
-$lang['btn_search'] = 'ÐоиÑк';
-$lang['btn_save'] = 'СоÑ
ÑаниÑÑ';
-$lang['btn_preview'] = 'ÐÑоÑмоÑÑ';
-$lang['btn_top'] = 'ÐавеÑÑ
';
-$lang['btn_newer'] = '<< более новÑе';
-$lang['btn_older'] = 'более ÑÑаÑÑе >>';
-$lang['btn_revs'] = 'ÐÑÑоÑÐ¸Ñ ÑÑÑаниÑÑ';
-$lang['btn_recent'] = 'Ðедавние изменениÑ';
-$lang['btn_upload'] = 'ÐакаÑаÑÑ';
-$lang['btn_cancel'] = 'ÐÑмениÑÑ';
-$lang['btn_index'] = 'ÐÑе ÑÑÑаниÑÑ';
-$lang['btn_secedit'] = 'ÐÑавиÑÑ';
-$lang['btn_login'] = 'ÐойÑи';
-$lang['btn_logout'] = 'ÐÑйÑи';
-$lang['btn_admin'] = 'УпÑавление';
-$lang['btn_update'] = 'ÐбновиÑÑ';
-$lang['btn_delete'] = 'УдалиÑÑ';
-$lang['btn_back'] = 'Ðазад';
-$lang['btn_backlink'] = 'СÑÑлки ÑÑда';
-$lang['btn_backtomedia'] = 'ÐеÑнÑÑÑÑÑ Ðº вÑбоÑÑ Ð¼ÐµÐ´Ð¸Ð°-Ñайла';
-$lang['btn_subscribe'] = 'ÐодпиÑаÑÑÑÑ';
-$lang['btn_unsubscribe'] = 'ÐÑпиÑаÑÑÑÑ';
-$lang['btn_profile'] = 'ÐÑоÑилÑ';
-$lang['btn_reset'] = 'СбÑоÑ';
-$lang['btn_resendpwd'] = 'ÐоÑлаÑÑ Ð½Ð¾Ð²Ñй паÑолÑ';
-$lang['btn_draft'] = 'ÐÑавиÑÑ ÑеÑновик';
-$lang['btn_recover'] = 'ÐоÑÑÑановиÑÑ ÑеÑновик';
-$lang['btn_draftdel'] = 'УдалиÑÑ ÑеÑновик';
-$lang['loggedinas'] = 'ÐÑ';
-$lang['user'] = 'Ðогин';
-$lang['pass'] = 'ÐаÑолÑ';
-$lang['newpass'] = 'ÐовÑй паÑолÑ';
-$lang['oldpass'] = 'ÐведиÑе ÑекÑÑий паÑолÑ';
-$lang['passchk'] = 'повÑоÑиÑе';
-$lang['remember'] = 'ÐапомниÑÑ Ð¼ÐµÐ½Ñ';
-$lang['fullname'] = 'Ðолное имÑ';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'ÐаÑегиÑÑÑиÑоваÑÑÑÑ';
-$lang['profile'] = 'ÐÑоÑÐ¸Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ';
-$lang['badlogin'] = 'ÐзвиниÑе, невеÑное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ паÑолÑ.';
-$lang['minoredit'] = 'ÐеболÑÑие изменениÑ';
-$lang['draftdate'] = 'ЧеÑновик ÑоÑ
ÑанÑн';
-$lang['regmissing'] = 'ÐзвиниÑе, вам ÑледÑÐµÑ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸ÑÑ Ð²Ñе полÑ.';
-$lang['reguexists'] = 'ÐзвиниÑе, полÑзоваÑÐµÐ»Ñ Ñ Ñаким логином Ñже ÑÑÑеÑÑвÑеÑ.';
-$lang['regsuccess'] = 'ÐолÑзоваÑÐµÐ»Ñ Ñоздан, паÑÐ¾Ð»Ñ Ð²ÑÑлан на e-mail.';
-$lang['regsuccess2'] = 'ÐолÑзоваÑÐµÐ»Ñ Ñоздан.';
-$lang['regmailfail'] = 'ÐоÑ
оже, пÑоблема Ñ Ð¿Ð¾ÑÑлкой паÑÐ¾Ð»Ñ Ð¿Ð¾ поÑÑе. ÐожалÑйÑÑа, ÑообÑиÑе админиÑÑÑаÑоÑÑ!';
-$lang['regbadmail'] = 'ÐаннÑй Ðами адÑÐµÑ e-mail вÑглÑÐ´Ð¸Ñ Ð½ÐµÐ¿ÑавилÑнÑм. ÐÑли Ð²Ñ ÑÑиÑаеÑе ÑÑо оÑибкой, ÑообÑиÑе админÑ.';
-$lang['regbadpass'] = 'Ðва введÑннÑÑ
паÑÐ¾Ð»Ñ Ð½Ðµ иденÑиÑнÑ. ÐожалÑйÑÑа, попÑобÑйÑе еÑÑ Ñаз.';
-$lang['regpwmail'] = 'ÐÐ°Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð´Ð»Ñ ÑиÑÑÐµÐ¼Ñ DokuWiki';
-$lang['reghere'] = 'У Ð²Ð°Ñ ÐµÑÑ Ð½ÐµÑ Ð°ÐºÐºÐ°ÑнÑа? ÐзволÑÑе полÑÑиÑÑ';
-$lang['profna'] = 'ÐÐ°Ð½Ð½Ð°Ñ Ð²Ð¸ÐºÐ¸ не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ пÑоÑилÑ';
-$lang['profnochange'] = 'Ðзменений не бÑло внеÑено, пÑоÑÐ¸Ð»Ñ Ð½Ðµ обновлÑн.';
-$lang['profnoempty'] = 'Ðогин и адÑÐµÑ e-mail не могÑÑ Ð±ÑÑÑ Ð¿ÑÑÑÑми.';
-$lang['profchanged'] = 'ÐÑоÑÐ¸Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑÑпеÑно обновлÑн.';
-$lang['pwdforget'] = 'ÐабÑли паÑолÑ? ÐолÑÑиÑе новÑй';
-$lang['resendna'] = 'ÐÐ°Ð½Ð½Ð°Ñ Ð²Ð¸ÐºÐ¸ не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð²ÑоÑнÑÑ Ð¾ÑпÑÐ°Ð²ÐºÑ Ð¿Ð°ÑолÑ.';
-$lang['resendpwd'] = 'ÐÑÑлаÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð´Ð»Ñ';
-$lang['resendpwdmissing'] = 'ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸ÑÑ Ð²Ñе Ð¿Ð¾Ð»Ñ ÑоÑмÑ.';
-$lang['resendpwdnouser'] = 'ÐолÑзоваÑÐµÐ»Ñ Ñ Ñаким логином не обнаÑÑжен в наÑей базе даннÑÑ
.';
-$lang['resendpwdbadauth'] = 'ÐзвиниÑе, невеÑнÑй код авÑоÑизаÑии. УбедиÑеÑÑ, ÑÑо ÐÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÑкопиÑовали ÑÑÑлкÑ. ';
-$lang['resendpwdconfirm'] = 'СÑÑлка Ð´Ð»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð±Ñла вÑÑлана по e-mail. ';
-$lang['resendpwdsuccess'] = 'ÐÐ°Ñ Ð½Ð¾Ð²Ñй паÑÐ¾Ð»Ñ Ð±Ñл вÑÑлан по e-mail.';
-$lang['txt_upload'] = 'ÐÑбеÑиÑе Ñайл Ð´Ð»Ñ Ð·Ð°ÐºÐ°Ñки';
-$lang['txt_filename'] = 'ÐведиÑе Ð¸Ð¼Ñ Ñайла в вики (необÑзаÑелÑно)';
-$lang['txt_overwrt'] = 'ÐеÑезапиÑаÑÑ ÑÑÑеÑÑвÑÑÑий Ñайл';
-$lang['lockedby'] = 'РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñован';
-$lang['lockexpire'] = 'ÐлокиÑовка иÑÑÐµÐºÐ°ÐµÑ Ð²';
-$lang['willexpire'] = 'ÐаÑа блокиÑовка ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑой ÑÑÑаниÑÑ Ð¸ÑÑÐµÐºÐ°ÐµÑ Ð² ÑеÑение минÑÑÑ.\nЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ ÐºÐ¾Ð½ÑликÑов и ÑбÑоÑиÑÑ ÑÐ°Ð¹Ð¼ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки, нажмиÑе ÐºÐ½Ð¾Ð¿ÐºÑ Ð¿ÑоÑмоÑÑа.';
-$lang['notsavedyet'] = 'ÐеÑоÑ
ÑанÑннÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð¿Ð¾ÑеÑÑнÑ.\nÐÑ Ð´ÐµÐ¹ÑÑвиÑелÑно Ñ
оÑиÑе пÑодолжиÑÑ?';
-$lang['rssfailed'] = 'ÐÑоизоÑла оÑибка пÑи полÑÑении ÑледÑÑÑей новоÑÑной ленÑÑ: ';
-$lang['nothingfound'] = 'ÐиÑего не найдено.';
-$lang['mediaselect'] = 'ÐÑÐ±Ð¾Ñ Ð¼ÐµÐ´Ð¸Ð°-Ñайла';
-$lang['fileupload'] = 'ÐакаÑка медиа-Ñайла';
-$lang['uploadsucc'] = 'ÐакаÑка пÑоизведена ÑÑпеÑно';
-$lang['uploadfail'] = 'ÐакаÑка не ÑдалаÑÑ. Ðозможно, пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ Ð¿Ñавами доÑÑÑпа?';
-$lang['uploadwrong'] = 'РзакаÑке оÑказано. Ð¤Ð°Ð¹Ð»Ñ Ñ Ñаким ÑаÑÑиÑением запÑеÑенÑ. ';
-$lang['uploadexist'] = 'Файл Ñ Ñаким именем ÑÑÑеÑÑвÑеÑ. ÐагÑÑзка не пÑоизведена.';
-$lang['uploadbadcontent'] = 'СодеÑжание Ñайла не ÑооÑвеÑÑÑвÑÐµÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ %s.';
-$lang['uploadspam'] = 'ÐакаÑка заблокиÑована Ñпам-ÑилÑÑÑом.';
-$lang['uploadxss'] = 'ÐакаÑка заблокиÑована по ÑообÑажениÑм безопаÑноÑÑи.';
-$lang['deletesucc'] = 'Файл "%s" бÑл ÑдалÑн.';
-$lang['deletefail'] = 'Ðевозможно ÑдалиÑÑ Ñайл "%s". ÐÑовеÑÑÑе пÑава доÑÑÑпа к ÑайлÑ.';
-$lang['mediainuse'] = 'Файл "%s" не бÑл ÑдалÑн - Ñайл вÑÑ ÐµÑÑ Ð¸ÑполÑзÑеÑÑÑ.';
-$lang['namespaces'] = 'ÐÑоÑÑÑанÑÑва имÑн';
-$lang['mediafiles'] = 'ÐоÑÑÑпнÑе ÑайлÑ';
-$lang['js']['keepopen'] = 'Ðе закÑÑваÑÑ Ð¾ÐºÐ½Ð¾ поÑле вÑбоÑа';
-$lang['js']['hidedetails'] = 'СкÑÑÑÑ Ð´ÐµÑали';
-$lang['mediausage'] = 'ÐÐ»Ñ ÑÑÑлки на ÑÑÐ¾Ñ Ñайл иÑполÑзÑйÑе ÑледÑÑÑий ÑинÑакÑиÑ:';
-$lang['mediaview'] = 'ÐоÑмоÑÑеÑÑ Ð¸ÑÑ
однÑй Ñайл';
-$lang['mediaroot'] = 'коÑенÑ';
-$lang['mediaupload'] = 'ÐдеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ загÑÑзиÑÑ Ñайл в ÑекÑÑий каÑалог ("пÑоÑÑÑанÑÑво имен"). ЧÑÐ¾Ð±Ñ ÑоздаÑÑ Ð¿Ð¾Ð´ÐºÐ°Ñалоги, добавÑÑе иÑ
к наÑÐ°Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ñайла ("ÐагÑÑзиÑÑ ÐºÐ°Ðº"). Ðмена подкаÑалогов ÑазделÑÑÑÑÑ Ð´Ð²Ð¾ÐµÑоÑиÑми. ';
-$lang['mediaextchange'] = 'РаÑÑиÑение изменилоÑÑ: Ñ .%s на .%s!';
-$lang['reference'] = 'СÑÑлки длÑ';
-$lang['ref_inuse'] = 'ÐÑÐ¾Ñ Ñайл не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн, Ñак как он иÑполÑзÑеÑÑÑ ÑледÑÑÑими ÑÑÑаниÑами:';
-$lang['ref_hidden'] = 'ÐекоÑоÑÑе ÑÑÑлки наÑ
одÑÑÑÑ Ð½Ð° ÑÑÑаниÑаÑ
, на ÑÑение коÑоÑÑÑ
Ñ ÐÐ°Ñ Ð½ÐµÑ Ð¿Ñав';
-$lang['hits'] = 'ÑооÑвеÑÑÑвий';
-$lang['quickhits'] = 'СооÑвеÑÑÑÐ²Ð¸Ñ Ð² названиÑÑ
ÑÑÑаниÑ';
-$lang['toc'] = 'СодеÑжание';
-$lang['current'] = 'ÑекÑÑий';
-$lang['yours'] = 'ÐаÑа веÑÑиÑ';
-$lang['diff'] = 'показаÑÑ Ð¾ÑлиÑÐ¸Ñ Ð¾Ñ ÑекÑÑей веÑÑии';
-$lang['line'] = 'СÑÑока';
-$lang['breadcrumb'] = 'ÐÑ Ð¿Ð¾ÑеÑили';
-$lang['youarehere'] = 'ÐÑ Ð½Ð°Ñ
одиÑеÑÑ Ð·Ð´ÐµÑÑ';
-$lang['lastmod'] = 'ÐоÑледние изменениÑ';
-$lang['by'] = ' ';
-$lang['deleted'] = 'Ñдалено';
-$lang['created'] = 'Ñоздано';
-$lang['restored'] = 'ÑÑаÑÐ°Ñ ÑÐµÐ²Ð¸Ð·Ð¸Ñ Ð²Ð¾ÑÑÑановлена';
-$lang['external_edit'] = 'внеÑнее изменение';
-$lang['summary'] = 'Сводка изменений';
-$lang['mail_newpage'] = 'ÑÑÑаниÑа добавлена:';
-$lang['mail_changed'] = 'ÑÑÑаниÑа изменена:';
-$lang['mail_new_user'] = 'новÑй полÑзоваÑелÑ:';
-$lang['mail_upload'] = 'Ñайл закаÑан:';
-$lang['nosmblinks'] = 'СÑÑлка на ÑеÑевÑе каÑалоги Windows ÑабоÑÐ°ÐµÑ ÑолÑко из ÐнÑеÑÐ½ÐµÑ ÐкÑплоÑеÑа\nÐо ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑкопиÑоваÑÑ ÑÑÑлкÑ.';
-$lang['qb_alert'] = 'ÐожалÑйÑÑа, введиÑе ÑекÑÑ, коÑоÑÑй Ñ
оÑиÑе оÑÑоÑмаÑиÑоваÑÑ.\nÐн бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½ в ÐºÐ¾Ð½ÐµÑ Ð´Ð¾ÐºÑменÑа.';
-$lang['qb_bold'] = 'ÐолÑжиÑнÑй ÑÑиÑÑ';
-$lang['qb_italic'] = 'ÐÑÑÑивнÑй ÑÑиÑÑ';
-$lang['qb_underl'] = 'ÐодÑеÑкивание';
-$lang['qb_code'] = 'ТекÑÑ ÐºÐ¾Ð´Ð°';
-$lang['qb_strike'] = 'ÐаÑÑÑкнÑÑÑй ÑÑиÑÑ';
-$lang['qb_h1'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 1';
-$lang['qb_h2'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 2';
-$lang['qb_h3'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 3';
-$lang['qb_h4'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 4';
-$lang['qb_h5'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 5';
-$lang['qb_link'] = 'ÐнÑÑÑеннÑÑ ÑÑÑлка';
-$lang['qb_extlink'] = 'ÐнеÑнÑÑ ÑÑÑлка';
-$lang['qb_hr'] = 'РазделиÑелÑ';
-$lang['qb_ol'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÑмеÑованного ÑпиÑка';
-$lang['qb_ul'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÐ½ÑмеÑованного ÑпиÑка';
-$lang['qb_media'] = 'ÐобавиÑÑ ÐºÐ°ÑÑинки и дÑÑгие ÑайлÑ';
-$lang['qb_sig'] = 'ÐÑÑавиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑ';
-$lang['qb_smileys'] = 'Смайлики';
-$lang['qb_chars'] = 'СпеÑиалÑнÑе ÑимволÑ';
-$lang['del_confirm'] = 'ÐÑ Ð½Ð° Ñамом деле желаеÑе ÑдалиÑÑ Ð²ÑбÑанное?';
-$lang['admin_register'] = 'ÐобавиÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ';
-$lang['metaedit'] = 'ÐÑавиÑÑ Ð¼ÐµÑаданнÑе';
-$lang['metasaveerr'] = 'ÐÑибка запиÑи меÑаданнÑÑ
';
-$lang['metasaveok'] = 'ÐеÑаданнÑе ÑоÑ
ÑаненÑ';
-$lang['img_backto'] = 'ÐеÑнÑÑÑÑÑ Ðº';
-$lang['img_title'] = 'Ðазвание';
-$lang['img_caption'] = 'ÐодпиÑÑ';
-$lang['img_date'] = 'ÐаÑа';
-$lang['img_fname'] = 'ÐÐ¼Ñ Ñайла';
-$lang['img_fsize'] = 'РазмеÑ';
-$lang['img_artist'] = 'ФоÑогÑаÑ';
-$lang['img_copyr'] = 'ÐвÑоÑÑкие пÑава';
-$lang['img_format'] = 'ФоÑмаÑ';
-$lang['img_camera'] = 'ÐоделÑ';
-$lang['img_keywords'] = 'ÐлÑÑевÑе Ñлова';
-$lang['subscribe_success'] = '%s добавлен(а) в ÑпиÑок ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
-$lang['subscribe_error'] = 'ÐÑибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ %s в ÑпиÑок ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
-$lang['subscribe_noaddress'] = 'РваÑем пÑоÑиле не Ñказан адÑÐµÑ ÑлекÑÑонной поÑÑÑ. ÐÐ²Ð¸Ð´Ñ ÑÑого Ð²Ñ Ð½Ðµ можеÑе подпиÑÑваÑÑÑÑ Ð½Ð° ÑаÑÑÑлки.';
-$lang['unsubscribe_success'] = '%s Ñдален(а) из ÑпиÑка ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
-$lang['unsubscribe_error'] = 'ÐÑибка ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из ÑпиÑка ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
-$lang['authmodfailed'] = 'ÐепÑавилÑÐ½Ð°Ñ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ð°ÑÑенÑиÑикаÑии полÑзоваÑелÑ. ÐожалÑйÑÑа, ÑообÑиÑе об ÑÑом ваÑÐµÐ¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð²Ð¸ÐºÐ¸.';
-$lang['authtempfail'] = 'ÐÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей вÑеменно недоÑÑÑпна. ÐÑли пÑоблема пÑодолжаеÑÑÑ ÐºÐ°ÐºÐ¾Ðµ-Ñо вÑемÑ, пожалÑйÑÑа, ÑообÑиÑе об ÑÑом ваÑÐµÐ¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð²Ð¸ÐºÐ¸.';
-$lang['i_chooselang'] = 'ÐÑбеÑиÑе ÐÐ°Ñ ÑзÑк/Language';
-$lang['i_installer'] = 'УÑÑановка DokuWiki';
-$lang['i_wikiname'] = 'Ðазвание вики';
-$lang['i_enableacl'] = 'РазÑеÑиÑÑ Ð¾Ð³ÑаниÑение пÑав доÑÑÑпа (ÑекомендÑеÑÑÑ)';
-$lang['i_superuser'] = 'СÑпеÑÑзеÑ';
-$lang['i_problems'] = 'ÐÑогÑамма ÑÑÑановки ÑÑолкнÑлаÑÑ Ñ Ð¿Ñоблемами, пеÑеÑиÑленнÑми ниже. ЧÑÐ¾Ð±Ñ Ð¿ÑодолжиÑÑ, вам необÑ
одимо иÑ
ÑÑÑÑаниÑÑ. ';
-$lang['i_modified'] = 'Ðз ÑообÑажений безопаÑноÑÑи ÑÑа пÑогÑамма запÑÑкаеÑÑÑ ÑолÑко на новой, неизменÑнной ÑÑÑановке DokuWiki.
- Ðам нÑжно либо заново ÑаÑпаковаÑÑ ÑкаÑаннÑй Ð¿Ð°ÐºÐµÑ ÑÑÑановки, либо обÑаÑиÑÑÑÑ Ðº полной
- <a href="http://wiki.splitbrain.org/wiki:install">инÑÑÑÑкÑии по ÑÑÑановке DokuWiki</a>';
-$lang['i_funcna'] = 'ФÑнкÑÐ¸Ñ PHP <code>%s</code> недоÑÑÑпна. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ, она по какой-Ñо пÑиÑине заблокиÑована ÐаÑим Ñ
оÑÑингом?';
-$lang['i_phpver'] = 'ÐаÑа веÑÑÐ¸Ñ PHP (<code>%s</code>) ниже ÑÑебÑемой (<code>%s</code>). Ðам необÑ
одимо обновиÑÑ ÑÑÑановленнÑÑ Ð²ÐµÑÑÐ¸Ñ PHP.';
-$lang['i_permfail'] = '<code>%s</code> недоÑÑÑпна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи DokuWiki. Ðам необÑ
одимо иÑпÑавиÑÑ ÑиÑÑемнÑе пÑава доÑÑÑпа Ð´Ð»Ñ ÑÑой диÑекÑоÑии!';
-$lang['i_confexists'] = '<code>%s</code> Ñже ÑÑÑеÑÑвÑеÑ';
-$lang['i_writeerr'] = 'Ðе ÑдалоÑÑ ÑоздаÑÑ <code>%s</code>. Ðам необÑ
одимо пÑовеÑиÑÑ ÑиÑÑемнÑе пÑава доÑÑÑпа к ÑайлÑ/диÑекÑоÑиÑм и ÑоздаÑÑ Ñайл вÑÑÑнÑÑ. ';
-$lang['i_badhash'] = 'dokuwiki.php не ÑаÑпознана или изменена (Ñ
ÑÑ=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - недопÑÑÑимое или пÑÑÑое знаÑение';
-$lang['i_success'] = 'ÐонÑигÑÑаÑÐ¸Ñ Ð¿ÑоÑла ÑÑпеÑно. ТепеÑÑ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑдалиÑÑ Ñайл install.php. ÐеÑеÑ
одиÑе к
- <a href="doku.php">ваÑей новой DokuWiki</a>.';
-$lang['i_failure'] = 'ÐÑи запиÑи в ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии бÑли обнаÑÑÐ¶ÐµÐ½Ñ Ð¾Ñибки. Ðозможно, вам пÑидеÑÑÑ Ð¸ÑпÑавиÑÑ Ð¸Ñ
вÑÑÑнÑÑ, пÑежде Ñем Ð²Ñ ÑможеÑе иÑполÑзоваÑÑ <a href="doku.php">ÐаÑÑ Ð½Ð¾Ð²ÑÑ DokuWiki</a>.';
-$lang['i_policy'] = 'ÐÑÑ
Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñика пÑав доÑÑÑпа';
-$lang['i_pol0'] = 'ÐÑкÑÑÑÐ°Ñ Ð²Ð¸ÐºÐ¸ (ÑÑение, запиÑÑ, закаÑка Ñайлов Ð´Ð»Ñ Ð²ÑеÑ
)';
-$lang['i_pol1'] = 'ÐбÑедоÑÑÑÐ¿Ð½Ð°Ñ Ð²Ð¸ÐºÐ¸ (ÑÑение Ð´Ð»Ñ Ð²ÑеÑ
, запиÑÑ Ð¸ загÑÑзка Ñайлов Ð´Ð»Ñ Ð·Ð°ÑегиÑÑÑиÑованнÑÑ
полÑзоваÑелей)';
-$lang['i_pol2'] = 'ÐакÑÑÑÐ°Ñ Ð²Ð¸ÐºÐ¸ (ÑÑение, запиÑÑ Ð¸ загÑÑзка Ñайлов ÑолÑко Ð´Ð»Ñ Ð·Ð°ÑегиÑÑÑиÑованнÑÑ
полÑзоваÑелей)';
-$lang['i_retry'] = 'ÐовÑоÑиÑÑ Ð¿Ð¾Ð¿ÑÑкÑ';
+<?php
+/**
+ * Russian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Yuri Pimenov <up at ftpsearch.lv>
+ * @author Igor Tarasov <tigr at mail15.com>
+ * @author Denis Simakov <akinoame1 at gmail.com>
+ * @author Kaens Bard <kaens at mail.ru>
+ * @author Andrew Pleshakov <beotiger at mail.ru>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = '«';
+$lang['doublequoteclosing'] = '»';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'ÐÑавиÑÑ ÑÑÑаниÑÑ';
+$lang['btn_source'] = 'ÐоказаÑÑ Ð¸ÑÑ
однÑй ÑекÑÑ';
+$lang['btn_show'] = 'ÐоказаÑÑ ÑÑÑаниÑÑ';
+$lang['btn_create'] = 'СоздаÑÑ ÑÑÑаниÑÑ';
+$lang['btn_search'] = 'ÐоиÑк';
+$lang['btn_save'] = 'СоÑ
ÑаниÑÑ';
+$lang['btn_preview'] = 'ÐÑоÑмоÑÑ';
+$lang['btn_top'] = 'ÐавеÑÑ
';
+$lang['btn_newer'] = '<< более новÑе';
+$lang['btn_older'] = 'более ÑÑаÑÑе >>';
+$lang['btn_revs'] = 'ÐÑÑоÑÐ¸Ñ ÑÑÑаниÑÑ';
+$lang['btn_recent'] = 'Ðедавние изменениÑ';
+$lang['btn_upload'] = 'ÐакаÑаÑÑ';
+$lang['btn_cancel'] = 'ÐÑмениÑÑ';
+$lang['btn_index'] = 'ÐÑе ÑÑÑаниÑÑ';
+$lang['btn_secedit'] = 'ÐÑавиÑÑ';
+$lang['btn_login'] = 'ÐойÑи';
+$lang['btn_logout'] = 'ÐÑйÑи';
+$lang['btn_admin'] = 'УпÑавление';
+$lang['btn_update'] = 'ÐбновиÑÑ';
+$lang['btn_delete'] = 'УдалиÑÑ';
+$lang['btn_back'] = 'Ðазад';
+$lang['btn_backlink'] = 'СÑÑлки ÑÑда';
+$lang['btn_backtomedia'] = 'ÐеÑнÑÑÑÑÑ Ðº вÑбоÑÑ Ð¼ÐµÐ´Ð¸Ð°-Ñайла';
+$lang['btn_subscribe'] = 'ÐодпиÑаÑÑÑÑ';
+$lang['btn_unsubscribe'] = 'ÐÑпиÑаÑÑÑÑ';
+$lang['btn_profile'] = 'ÐÑоÑилÑ';
+$lang['btn_reset'] = 'СбÑоÑ';
+$lang['btn_resendpwd'] = 'ÐоÑлаÑÑ Ð½Ð¾Ð²Ñй паÑолÑ';
+$lang['btn_draft'] = 'ÐÑавиÑÑ ÑеÑновик';
+$lang['btn_recover'] = 'ÐоÑÑÑановиÑÑ ÑеÑновик';
+$lang['btn_draftdel'] = 'УдалиÑÑ ÑеÑновик';
+$lang['loggedinas'] = 'ÐÑ';
+$lang['user'] = 'Ðогин';
+$lang['pass'] = 'ÐаÑолÑ';
+$lang['newpass'] = 'ÐовÑй паÑолÑ';
+$lang['oldpass'] = 'ÐведиÑе ÑекÑÑий паÑолÑ';
+$lang['passchk'] = 'повÑоÑиÑе';
+$lang['remember'] = 'ÐапомниÑÑ Ð¼ÐµÐ½Ñ';
+$lang['fullname'] = 'Ðолное имÑ';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'ÐаÑегиÑÑÑиÑоваÑÑÑÑ';
+$lang['profile'] = 'ÐÑоÑÐ¸Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ';
+$lang['badlogin'] = 'ÐзвиниÑе, невеÑное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ паÑолÑ.';
+$lang['minoredit'] = 'ÐеболÑÑие изменениÑ';
+$lang['draftdate'] = 'ЧеÑновик ÑоÑ
ÑанÑн';
+$lang['regmissing'] = 'ÐзвиниÑе, вам ÑледÑÐµÑ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸ÑÑ Ð²Ñе полÑ.';
+$lang['reguexists'] = 'ÐзвиниÑе, полÑзоваÑÐµÐ»Ñ Ñ Ñаким логином Ñже ÑÑÑеÑÑвÑеÑ.';
+$lang['regsuccess'] = 'ÐолÑзоваÑÐµÐ»Ñ Ñоздан, паÑÐ¾Ð»Ñ Ð²ÑÑлан на e-mail.';
+$lang['regsuccess2'] = 'ÐолÑзоваÑÐµÐ»Ñ Ñоздан.';
+$lang['regmailfail'] = 'ÐоÑ
оже, пÑоблема Ñ Ð¿Ð¾ÑÑлкой паÑÐ¾Ð»Ñ Ð¿Ð¾ поÑÑе. ÐожалÑйÑÑа, ÑообÑиÑе админиÑÑÑаÑоÑÑ!';
+$lang['regbadmail'] = 'ÐаннÑй Ðами адÑÐµÑ e-mail вÑглÑÐ´Ð¸Ñ Ð½ÐµÐ¿ÑавилÑнÑм. ÐÑли Ð²Ñ ÑÑиÑаеÑе ÑÑо оÑибкой, ÑообÑиÑе админÑ.';
+$lang['regbadpass'] = 'Ðва введÑннÑÑ
паÑÐ¾Ð»Ñ Ð½Ðµ иденÑиÑнÑ. ÐожалÑйÑÑа, попÑобÑйÑе еÑÑ Ñаз.';
+$lang['regpwmail'] = 'ÐÐ°Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð´Ð»Ñ ÑиÑÑÐµÐ¼Ñ DokuWiki';
+$lang['reghere'] = 'У Ð²Ð°Ñ ÐµÑÑ Ð½ÐµÑ Ð°ÐºÐºÐ°ÑнÑа? ÐзволÑÑе полÑÑиÑÑ';
+$lang['profna'] = 'ÐÐ°Ð½Ð½Ð°Ñ Ð²Ð¸ÐºÐ¸ не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ пÑоÑилÑ';
+$lang['profnochange'] = 'Ðзменений не бÑло внеÑено, пÑоÑÐ¸Ð»Ñ Ð½Ðµ обновлÑн.';
+$lang['profnoempty'] = 'Ðогин и адÑÐµÑ e-mail не могÑÑ Ð±ÑÑÑ Ð¿ÑÑÑÑми.';
+$lang['profchanged'] = 'ÐÑоÑÐ¸Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑÑпеÑно обновлÑн.';
+$lang['pwdforget'] = 'ÐабÑли паÑолÑ? ÐолÑÑиÑе новÑй';
+$lang['resendna'] = 'ÐÐ°Ð½Ð½Ð°Ñ Ð²Ð¸ÐºÐ¸ не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð²ÑоÑнÑÑ Ð¾ÑпÑÐ°Ð²ÐºÑ Ð¿Ð°ÑолÑ.';
+$lang['resendpwd'] = 'ÐÑÑлаÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð´Ð»Ñ';
+$lang['resendpwdmissing'] = 'ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸ÑÑ Ð²Ñе Ð¿Ð¾Ð»Ñ ÑоÑмÑ.';
+$lang['resendpwdnouser'] = 'ÐолÑзоваÑÐµÐ»Ñ Ñ Ñаким логином не обнаÑÑжен в наÑей базе даннÑÑ
.';
+$lang['resendpwdbadauth'] = 'ÐзвиниÑе, невеÑнÑй код авÑоÑизаÑии. УбедиÑеÑÑ, ÑÑо ÐÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÑкопиÑовали ÑÑÑлкÑ. ';
+$lang['resendpwdconfirm'] = 'СÑÑлка Ð´Ð»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð±Ñла вÑÑлана по e-mail. ';
+$lang['resendpwdsuccess'] = 'ÐÐ°Ñ Ð½Ð¾Ð²Ñй паÑÐ¾Ð»Ñ Ð±Ñл вÑÑлан по e-mail.';
+$lang['txt_upload'] = 'ÐÑбеÑиÑе Ñайл Ð´Ð»Ñ Ð·Ð°ÐºÐ°Ñки';
+$lang['txt_filename'] = 'ÐведиÑе Ð¸Ð¼Ñ Ñайла в вики (необÑзаÑелÑно)';
+$lang['txt_overwrt'] = 'ÐеÑезапиÑаÑÑ ÑÑÑеÑÑвÑÑÑий Ñайл';
+$lang['lockedby'] = 'РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñован';
+$lang['lockexpire'] = 'ÐлокиÑовка иÑÑÐµÐºÐ°ÐµÑ Ð²';
+$lang['willexpire'] = 'ÐаÑа блокиÑовка ÑедакÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑой ÑÑÑаниÑÑ Ð¸ÑÑÐµÐºÐ°ÐµÑ Ð² ÑеÑение минÑÑÑ.\nЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ ÐºÐ¾Ð½ÑликÑов и ÑбÑоÑиÑÑ ÑÐ°Ð¹Ð¼ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки, нажмиÑе ÐºÐ½Ð¾Ð¿ÐºÑ Ð¿ÑоÑмоÑÑа.';
+$lang['notsavedyet'] = 'ÐеÑоÑ
ÑанÑннÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð¿Ð¾ÑеÑÑнÑ.\nÐÑ Ð´ÐµÐ¹ÑÑвиÑелÑно Ñ
оÑиÑе пÑодолжиÑÑ?';
+$lang['rssfailed'] = 'ÐÑоизоÑла оÑибка пÑи полÑÑении ÑледÑÑÑей новоÑÑной ленÑÑ: ';
+$lang['nothingfound'] = 'ÐиÑего не найдено.';
+$lang['mediaselect'] = 'ÐÑÐ±Ð¾Ñ Ð¼ÐµÐ´Ð¸Ð°-Ñайла';
+$lang['fileupload'] = 'ÐакаÑка медиа-Ñайла';
+$lang['uploadsucc'] = 'ÐакаÑка пÑоизведена ÑÑпеÑно';
+$lang['uploadfail'] = 'ÐакаÑка не ÑдалаÑÑ. Ðозможно, пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ Ð¿Ñавами доÑÑÑпа?';
+$lang['uploadwrong'] = 'РзакаÑке оÑказано. Ð¤Ð°Ð¹Ð»Ñ Ñ Ñаким ÑаÑÑиÑением запÑеÑенÑ. ';
+$lang['uploadexist'] = 'Файл Ñ Ñаким именем ÑÑÑеÑÑвÑеÑ. ÐагÑÑзка не пÑоизведена.';
+$lang['uploadbadcontent'] = 'СодеÑжание Ñайла не ÑооÑвеÑÑÑвÑÐµÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ %s.';
+$lang['uploadspam'] = 'ÐакаÑка заблокиÑована Ñпам-ÑилÑÑÑом.';
+$lang['uploadxss'] = 'ÐакаÑка заблокиÑована по ÑообÑажениÑм безопаÑноÑÑи.';
+$lang['deletesucc'] = 'Файл "%s" бÑл ÑдалÑн.';
+$lang['deletefail'] = 'Ðевозможно ÑдалиÑÑ Ñайл "%s". ÐÑовеÑÑÑе пÑава доÑÑÑпа к ÑайлÑ.';
+$lang['mediainuse'] = 'Файл "%s" не бÑл ÑдалÑн - Ñайл вÑÑ ÐµÑÑ Ð¸ÑполÑзÑеÑÑÑ.';
+$lang['namespaces'] = 'ÐÑоÑÑÑанÑÑва имÑн';
+$lang['mediafiles'] = 'ÐоÑÑÑпнÑе ÑайлÑ';
+$lang['js']['keepopen'] = 'Ðе закÑÑваÑÑ Ð¾ÐºÐ½Ð¾ поÑле вÑбоÑа';
+$lang['js']['hidedetails'] = 'СкÑÑÑÑ Ð´ÐµÑали';
+$lang['mediausage'] = 'ÐÐ»Ñ ÑÑÑлки на ÑÑÐ¾Ñ Ñайл иÑполÑзÑйÑе ÑледÑÑÑий ÑинÑакÑиÑ:';
+$lang['mediaview'] = 'ÐоÑмоÑÑеÑÑ Ð¸ÑÑ
однÑй Ñайл';
+$lang['mediaroot'] = 'коÑенÑ';
+$lang['mediaupload'] = 'ÐдеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ загÑÑзиÑÑ Ñайл в ÑекÑÑий каÑалог ("пÑоÑÑÑанÑÑво имен"). ЧÑÐ¾Ð±Ñ ÑоздаÑÑ Ð¿Ð¾Ð´ÐºÐ°Ñалоги, добавÑÑе иÑ
к наÑÐ°Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ñайла ("ÐагÑÑзиÑÑ ÐºÐ°Ðº"). Ðмена подкаÑалогов ÑазделÑÑÑÑÑ Ð´Ð²Ð¾ÐµÑоÑиÑми. ';
+$lang['mediaextchange'] = 'РаÑÑиÑение изменилоÑÑ: Ñ .%s на .%s!';
+$lang['reference'] = 'СÑÑлки длÑ';
+$lang['ref_inuse'] = 'ÐÑÐ¾Ñ Ñайл не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн, Ñак как он иÑполÑзÑеÑÑÑ ÑледÑÑÑими ÑÑÑаниÑами:';
+$lang['ref_hidden'] = 'ÐекоÑоÑÑе ÑÑÑлки наÑ
одÑÑÑÑ Ð½Ð° ÑÑÑаниÑаÑ
, на ÑÑение коÑоÑÑÑ
Ñ ÐÐ°Ñ Ð½ÐµÑ Ð¿Ñав';
+$lang['hits'] = 'ÑооÑвеÑÑÑвий';
+$lang['quickhits'] = 'СооÑвеÑÑÑÐ²Ð¸Ñ Ð² названиÑÑ
ÑÑÑаниÑ';
+$lang['toc'] = 'СодеÑжание';
+$lang['current'] = 'ÑекÑÑий';
+$lang['yours'] = 'ÐаÑа веÑÑиÑ';
+$lang['diff'] = 'показаÑÑ Ð¾ÑлиÑÐ¸Ñ Ð¾Ñ ÑекÑÑей веÑÑии';
+$lang['line'] = 'СÑÑока';
+$lang['breadcrumb'] = 'ÐÑ Ð¿Ð¾ÑеÑили';
+$lang['youarehere'] = 'ÐÑ Ð½Ð°Ñ
одиÑеÑÑ Ð·Ð´ÐµÑÑ';
+$lang['lastmod'] = 'ÐоÑледние изменениÑ';
+$lang['by'] = ' ';
+$lang['deleted'] = 'Ñдалено';
+$lang['created'] = 'Ñоздано';
+$lang['restored'] = 'ÑÑаÑÐ°Ñ ÑÐµÐ²Ð¸Ð·Ð¸Ñ Ð²Ð¾ÑÑÑановлена';
+$lang['external_edit'] = 'внеÑнее изменение';
+$lang['summary'] = 'Сводка изменений';
+$lang['mail_newpage'] = 'ÑÑÑаниÑа добавлена:';
+$lang['mail_changed'] = 'ÑÑÑаниÑа изменена:';
+$lang['mail_new_user'] = 'новÑй полÑзоваÑелÑ:';
+$lang['mail_upload'] = 'Ñайл закаÑан:';
+$lang['nosmblinks'] = 'СÑÑлка на ÑеÑевÑе каÑалоги Windows ÑабоÑÐ°ÐµÑ ÑолÑко из ÐнÑеÑÐ½ÐµÑ ÐкÑплоÑеÑа\nÐо ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑкопиÑоваÑÑ ÑÑÑлкÑ.';
+$lang['qb_alert'] = 'ÐожалÑйÑÑа, введиÑе ÑекÑÑ, коÑоÑÑй Ñ
оÑиÑе оÑÑоÑмаÑиÑоваÑÑ.\nÐн бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½ в ÐºÐ¾Ð½ÐµÑ Ð´Ð¾ÐºÑменÑа.';
+$lang['qb_bold'] = 'ÐолÑжиÑнÑй ÑÑиÑÑ';
+$lang['qb_italic'] = 'ÐÑÑÑивнÑй ÑÑиÑÑ';
+$lang['qb_underl'] = 'ÐодÑеÑкивание';
+$lang['qb_code'] = 'ТекÑÑ ÐºÐ¾Ð´Ð°';
+$lang['qb_strike'] = 'ÐаÑÑÑкнÑÑÑй ÑÑиÑÑ';
+$lang['qb_h1'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 1';
+$lang['qb_h2'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 2';
+$lang['qb_h3'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 3';
+$lang['qb_h4'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 4';
+$lang['qb_h5'] = 'Ðаголовок ÑÑÐ¾Ð²Ð½Ñ 5';
+$lang['qb_link'] = 'ÐнÑÑÑеннÑÑ ÑÑÑлка';
+$lang['qb_extlink'] = 'ÐнеÑнÑÑ ÑÑÑлка';
+$lang['qb_hr'] = 'РазделиÑелÑ';
+$lang['qb_ol'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÑмеÑованного ÑпиÑка';
+$lang['qb_ul'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÐ½ÑмеÑованного ÑпиÑка';
+$lang['qb_media'] = 'ÐобавиÑÑ ÐºÐ°ÑÑинки и дÑÑгие ÑайлÑ';
+$lang['qb_sig'] = 'ÐÑÑавиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑ';
+$lang['qb_smileys'] = 'Смайлики';
+$lang['qb_chars'] = 'СпеÑиалÑнÑе ÑимволÑ';
+$lang['del_confirm'] = 'ÐÑ Ð½Ð° Ñамом деле желаеÑе ÑдалиÑÑ Ð²ÑбÑанное?';
+$lang['admin_register'] = 'ÐобавиÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ';
+$lang['metaedit'] = 'ÐÑавиÑÑ Ð¼ÐµÑаданнÑе';
+$lang['metasaveerr'] = 'ÐÑибка запиÑи меÑаданнÑÑ
';
+$lang['metasaveok'] = 'ÐеÑаданнÑе ÑоÑ
ÑаненÑ';
+$lang['img_backto'] = 'ÐеÑнÑÑÑÑÑ Ðº';
+$lang['img_title'] = 'Ðазвание';
+$lang['img_caption'] = 'ÐодпиÑÑ';
+$lang['img_date'] = 'ÐаÑа';
+$lang['img_fname'] = 'ÐÐ¼Ñ Ñайла';
+$lang['img_fsize'] = 'РазмеÑ';
+$lang['img_artist'] = 'ФоÑогÑаÑ';
+$lang['img_copyr'] = 'ÐвÑоÑÑкие пÑава';
+$lang['img_format'] = 'ФоÑмаÑ';
+$lang['img_camera'] = 'ÐоделÑ';
+$lang['img_keywords'] = 'ÐлÑÑевÑе Ñлова';
+$lang['subscribe_success'] = '%s добавлен(а) в ÑпиÑок ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
+$lang['subscribe_error'] = 'ÐÑибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ %s в ÑпиÑок ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
+$lang['subscribe_noaddress'] = 'РваÑем пÑоÑиле не Ñказан адÑÐµÑ ÑлекÑÑонной поÑÑÑ. ÐÐ²Ð¸Ð´Ñ ÑÑого Ð²Ñ Ð½Ðµ можеÑе подпиÑÑваÑÑÑÑ Ð½Ð° ÑаÑÑÑлки.';
+$lang['unsubscribe_success'] = '%s Ñдален(а) из ÑпиÑка ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
+$lang['unsubscribe_error'] = 'ÐÑибка ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %s из ÑпиÑка ÑаÑÑÑлки Ð´Ð»Ñ ÑÑÑаниÑÑ %s';
+$lang['authmodfailed'] = 'ÐепÑавилÑÐ½Ð°Ñ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ð°ÑÑенÑиÑикаÑии полÑзоваÑелÑ. ÐожалÑйÑÑа, ÑообÑиÑе об ÑÑом ваÑÐµÐ¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð²Ð¸ÐºÐ¸.';
+$lang['authtempfail'] = 'ÐÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей вÑеменно недоÑÑÑпна. ÐÑли пÑоблема пÑодолжаеÑÑÑ ÐºÐ°ÐºÐ¾Ðµ-Ñо вÑемÑ, пожалÑйÑÑа, ÑообÑиÑе об ÑÑом ваÑÐµÐ¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð²Ð¸ÐºÐ¸.';
+$lang['i_chooselang'] = 'ÐÑбеÑиÑе ÐÐ°Ñ ÑзÑк/Language';
+$lang['i_installer'] = 'УÑÑановка DokuWiki';
+$lang['i_wikiname'] = 'Ðазвание вики';
+$lang['i_enableacl'] = 'РазÑеÑиÑÑ Ð¾Ð³ÑаниÑение пÑав доÑÑÑпа (ÑекомендÑеÑÑÑ)';
+$lang['i_superuser'] = 'СÑпеÑÑзеÑ';
+$lang['i_problems'] = 'ÐÑогÑамма ÑÑÑановки ÑÑолкнÑлаÑÑ Ñ Ð¿Ñоблемами, пеÑеÑиÑленнÑми ниже. ЧÑÐ¾Ð±Ñ Ð¿ÑодолжиÑÑ, вам необÑ
одимо иÑ
ÑÑÑÑаниÑÑ. ';
+$lang['i_modified'] = 'Ðз ÑообÑажений безопаÑноÑÑи ÑÑа пÑогÑамма запÑÑкаеÑÑÑ ÑолÑко на новой, неизменÑнной ÑÑÑановке DokuWiki.
+ Ðам нÑжно либо заново ÑаÑпаковаÑÑ ÑкаÑаннÑй Ð¿Ð°ÐºÐµÑ ÑÑÑановки, либо обÑаÑиÑÑÑÑ Ðº полной
+ <a href="http://wiki.splitbrain.org/wiki:install">инÑÑÑÑкÑии по ÑÑÑановке DokuWiki</a>';
+$lang['i_funcna'] = 'ФÑнкÑÐ¸Ñ PHP <code>%s</code> недоÑÑÑпна. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ, она по какой-Ñо пÑиÑине заблокиÑована ÐаÑим Ñ
оÑÑингом?';
+$lang['i_phpver'] = 'ÐаÑа веÑÑÐ¸Ñ PHP (<code>%s</code>) ниже ÑÑебÑемой (<code>%s</code>). Ðам необÑ
одимо обновиÑÑ ÑÑÑановленнÑÑ Ð²ÐµÑÑÐ¸Ñ PHP.';
+$lang['i_permfail'] = '<code>%s</code> недоÑÑÑпна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи DokuWiki. Ðам необÑ
одимо иÑпÑавиÑÑ ÑиÑÑемнÑе пÑава доÑÑÑпа Ð´Ð»Ñ ÑÑой диÑекÑоÑии!';
+$lang['i_confexists'] = '<code>%s</code> Ñже ÑÑÑеÑÑвÑеÑ';
+$lang['i_writeerr'] = 'Ðе ÑдалоÑÑ ÑоздаÑÑ <code>%s</code>. Ðам необÑ
одимо пÑовеÑиÑÑ ÑиÑÑемнÑе пÑава доÑÑÑпа к ÑайлÑ/диÑекÑоÑиÑм и ÑоздаÑÑ Ñайл вÑÑÑнÑÑ. ';
+$lang['i_badhash'] = 'dokuwiki.php не ÑаÑпознана или изменена (Ñ
ÑÑ=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - недопÑÑÑимое или пÑÑÑое знаÑение';
+$lang['i_success'] = 'ÐонÑигÑÑаÑÐ¸Ñ Ð¿ÑоÑла ÑÑпеÑно. ТепеÑÑ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑдалиÑÑ Ñайл install.php. ÐеÑеÑ
одиÑе к
+ <a href="doku.php">ваÑей новой DokuWiki</a>.';
+$lang['i_failure'] = 'ÐÑи запиÑи в ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии бÑли обнаÑÑÐ¶ÐµÐ½Ñ Ð¾Ñибки. Ðозможно, вам пÑидеÑÑÑ Ð¸ÑпÑавиÑÑ Ð¸Ñ
вÑÑÑнÑÑ, пÑежде Ñем Ð²Ñ ÑможеÑе иÑполÑзоваÑÑ <a href="doku.php">ÐаÑÑ Ð½Ð¾Ð²ÑÑ DokuWiki</a>.';
+$lang['i_policy'] = 'ÐÑÑ
Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñика пÑав доÑÑÑпа';
+$lang['i_pol0'] = 'ÐÑкÑÑÑÐ°Ñ Ð²Ð¸ÐºÐ¸ (ÑÑение, запиÑÑ, закаÑка Ñайлов Ð´Ð»Ñ Ð²ÑеÑ
)';
+$lang['i_pol1'] = 'ÐбÑедоÑÑÑÐ¿Ð½Ð°Ñ Ð²Ð¸ÐºÐ¸ (ÑÑение Ð´Ð»Ñ Ð²ÑеÑ
, запиÑÑ Ð¸ загÑÑзка Ñайлов Ð´Ð»Ñ Ð·Ð°ÑегиÑÑÑиÑованнÑÑ
полÑзоваÑелей)';
+$lang['i_pol2'] = 'ÐакÑÑÑÐ°Ñ Ð²Ð¸ÐºÐ¸ (ÑÑение, запиÑÑ Ð¸ загÑÑзка Ñайлов ÑолÑко Ð´Ð»Ñ Ð·Ð°ÑегиÑÑÑиÑованнÑÑ
полÑзоваÑелей)';
+$lang['i_retry'] = 'ÐовÑоÑиÑÑ Ð¿Ð¾Ð¿ÑÑкÑ';
Modified: site/trunk/www-root/wiki/inc/lang/ru/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐвÑоÑизаÑÐ¸Ñ ======
-
-РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ ÐÑ Ð½Ðµ в ÑиÑÑеме. ÐвÑоÑизиÑÑйÑеÑÑ Ð¿Ñи помоÑи ÑледÑÑÑей ÑоÑмÑ. //ÐамеÑание:// Ð´Ð»Ñ ÑабоÑÑ Ñ Ð²Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð²ÐºÐ»ÑÑÐµÐ½Ñ cookies.
-
+====== ÐвÑоÑизаÑÐ¸Ñ ======
+
+РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ ÐÑ Ð½Ðµ в ÑиÑÑеме. ÐвÑоÑизиÑÑйÑеÑÑ Ð¿Ñи помоÑи ÑледÑÑÑей ÑоÑмÑ. //ÐамеÑание:// Ð´Ð»Ñ ÑабоÑÑ Ñ Ð²Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð²ÐºÐ»ÑÑÐµÐ½Ñ cookies.
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-РваÑей DokuWiki бÑла добавлена или изменена ÑÑÑаниÑа. ÐодÑобноÑÑи:
-
-ÐаÑа : @DATE@
-ÐÑаÑÐ·ÐµÑ : @BROWSER@
-IP-адÑÐµÑ : @IPADDRESS@
-ХоÑÑ : @HOSTNAME@
-СÑаÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ : @OLDPAGE@
-ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ : @NEWPAGE@
-Сводка изменений : @SUMMARY@
-ÐолÑзоваÑÐµÐ»Ñ : @USER@
-
- at DIFF@
-
-
---
-ÐÑо пиÑÑмо бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
- at DOKUWIKIURL@
+РваÑей DokuWiki бÑла добавлена или изменена ÑÑÑаниÑа. ÐодÑобноÑÑи:
+
+ÐаÑа : @DATE@
+ÐÑаÑÐ·ÐµÑ : @BROWSER@
+IP-адÑÐµÑ : @IPADDRESS@
+ХоÑÑ : @HOSTNAME@
+СÑаÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ : @OLDPAGE@
+ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ : @NEWPAGE@
+Сводка изменений : @SUMMARY@
+ÐолÑзоваÑÐµÐ»Ñ : @USER@
+
+ at DIFF@
+
+
+--
+ÐÑо пиÑÑмо бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ru/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ÐÑа ÑÑÑаниÑа еÑÑ Ð½Ðµ ÑÑÑеÑÑвÑÐµÑ ======
-
-ÐÑ Ð¿ÐµÑеÑли по ÑÑÑлке на ÑемÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой еÑÑ Ð½Ðµ Ñоздана ÑÑÑаниÑа. ÐÑли позволÑÑÑ ÐаÑи пÑава доÑÑÑпа, ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ ÐµÑ, нажав на ÐºÐ½Ð¾Ð¿ÐºÑ "СоздаÑÑ ÑÑÑаниÑÑ".
+====== ÐÑа ÑÑÑаниÑа еÑÑ Ð½Ðµ ÑÑÑеÑÑвÑÐµÑ ======
+
+ÐÑ Ð¿ÐµÑеÑли по ÑÑÑлке на ÑемÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой еÑÑ Ð½Ðµ Ñоздана ÑÑÑаниÑа. ÐÑли позволÑÑÑ ÐаÑи пÑава доÑÑÑпа, ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ ÐµÑ, нажав на ÐºÐ½Ð¾Ð¿ÐºÑ "СоздаÑÑ ÑÑÑаниÑÑ".
Modified: site/trunk/www-root/wiki/inc/lang/ru/norev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-ÐдÑавÑÑвÑйÑе, @FULLNAME@!
-
-ÐаÑи даннÑе Ð´Ð»Ñ @TITLE@ (@DOKUWIKIURL@)
-
-ÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ : @LOGIN@
-ÐаÑÐ¾Ð»Ñ : @PASSWORD@
-
---
-ÐÑо пиÑÑмо бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
- at DOKUWIKIURL@
+ÐдÑавÑÑвÑйÑе, @FULLNAME@!
+
+ÐаÑи даннÑе Ð´Ð»Ñ @TITLE@ (@DOKUWIKIURL@)
+
+ÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ : @LOGIN@
+ÐаÑÐ¾Ð»Ñ : @PASSWORD@
+
+--
+ÐÑо пиÑÑмо бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ru/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ÐÑоÑмоÑÑ======
-
-ÐдеÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¾, как ÐÐ°Ñ ÑекÑÑ Ð±ÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ. Ðнимание: ÑекÑÑ ÐµÑÑ **не ÑоÑ
ÑанÑн!**
-
+======ÐÑоÑмоÑÑ======
+
+ÐдеÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¾, как ÐÐ°Ñ ÑекÑÑ Ð±ÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ. Ðнимание: ÑекÑÑ ÐµÑÑ **не ÑоÑ
ÑанÑн!**
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-ÐдÑавÑÑвÑйÑе, @FULLNAME@!
-
-ÐÑо-Ñо запÑоÑил новÑй паÑÐ¾Ð»Ñ Ð´Ð»Ñ Ð²Ñ
ода в @TITLE@ по адÑеÑÑ @DOKUWIKIURL@
-
-ÐÑли ÐÑ Ð½Ðµ запÑаÑивали новÑй паÑолÑ, пÑоÑÑо пÑоигноÑиÑÑйÑе ÑÑÐ¾Ñ e-mail.
-
-ÐÐ»Ñ Ð¿Ð¾Ð´ÑвеÑждениÑ, ÑÑо запÑÐ¾Ñ Ð±Ñл дейÑÑвиÑелÑно Ñделан Ðами, пожалÑйÑÑа, пеÑейдиÑе по ÑледÑÑÑей ÑÑÑлке.
-
- at CONFIRM@
-
---
-ÐÑо ÑообÑение бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
- at DOKUWIKIURL@
+ÐдÑавÑÑвÑйÑе, @FULLNAME@!
+
+ÐÑо-Ñо запÑоÑил новÑй паÑÐ¾Ð»Ñ Ð´Ð»Ñ Ð²Ñ
ода в @TITLE@ по адÑеÑÑ @DOKUWIKIURL@
+
+ÐÑли ÐÑ Ð½Ðµ запÑаÑивали новÑй паÑолÑ, пÑоÑÑо пÑоигноÑиÑÑйÑе ÑÑÐ¾Ñ e-mail.
+
+ÐÐ»Ñ Ð¿Ð¾Ð´ÑвеÑждениÑ, ÑÑо запÑÐ¾Ñ Ð±Ñл дейÑÑвиÑелÑно Ñделан Ðами, пожалÑйÑÑа, пеÑейдиÑе по ÑледÑÑÑей ÑÑÑлке.
+
+ at CONFIRM@
+
+--
+ÐÑо ÑообÑение бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ru/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Ðедавние изменениÑ======
-
-ÐÑи ÑÑÑаниÑÑ Ð±Ñли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð½ÐµÐ´Ð°Ð²Ð½Ð¾.
-
-
+======Ðедавние изменениÑ======
+
+ÐÑи ÑÑÑаниÑÑ Ð±Ñли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð½ÐµÐ´Ð°Ð²Ð½Ð¾.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== РегиÑÑÑаÑÐ¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ полÑзоваÑÐµÐ»Ñ ======
-
-ÐÐ»Ñ ÑегиÑÑÑаÑии в вики заполниÑе вÑе Ð¿Ð¾Ð»Ñ Ð½Ð¸Ð¶Ðµ. ÐбÑаÑиÑе внимание на **пÑавилÑноÑÑÑ Ð°Ð´ÑеÑа е-мÑйл** - ÑÑда бÑÐ´ÐµÑ Ð²ÑÑлан паÑÐ¾Ð»Ñ Ð² Ñом ÑлÑÑае, еÑли ÐÐ°Ñ Ð½Ðµ пÑоÑÑÑ ÑамоÑÑоÑÑелÑно ввеÑÑи его здеÑÑ. Ðогин должен ÑдовлеÑвоÑÑÑÑ Ð¾Ð³ÑаниÑениÑм Ð´Ð»Ñ [[doku>wiki:pagename|иденÑиÑикаÑоÑа ÑÑÑаниÑÑ]].
+====== РегиÑÑÑаÑÐ¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ полÑзоваÑÐµÐ»Ñ ======
+
+ÐÐ»Ñ ÑегиÑÑÑаÑии в вики заполниÑе вÑе Ð¿Ð¾Ð»Ñ Ð½Ð¸Ð¶Ðµ. ÐбÑаÑиÑе внимание на **пÑавилÑноÑÑÑ Ð°Ð´ÑеÑа е-мÑйл** - ÑÑда бÑÐ´ÐµÑ Ð²ÑÑлан паÑÐ¾Ð»Ñ Ð² Ñом ÑлÑÑае, еÑли ÐÐ°Ñ Ð½Ðµ пÑоÑÑÑ ÑамоÑÑоÑÑелÑно ввеÑÑи его здеÑÑ. Ðогин должен ÑдовлеÑвоÑÑÑÑ Ð¾Ð³ÑаниÑениÑм Ð´Ð»Ñ [[doku>wiki:pagename|иденÑиÑикаÑоÑа ÑÑÑаниÑÑ]].
Modified: site/trunk/www-root/wiki/inc/lang/ru/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-ÐÑл заÑегиÑÑÑиÑован новÑй полÑзоваÑелÑ. ÐодÑобноÑÑи:
-
-Ðогин : @NEWUSER@
-Ðолное Ð¸Ð¼Ñ : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-ÐаÑа : @DATE@
-ÐÑаÑÐ·ÐµÑ : @BROWSER@
-ÐдÑÐµÑ IP : @IPADDRESS@
-ХоÑÑ : @HOSTNAME@
-
---
-ÐÑо ÑообÑение бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
- at DOKUWIKIURL@
+ÐÑл заÑегиÑÑÑиÑован новÑй полÑзоваÑелÑ. ÐодÑобноÑÑи:
+
+Ðогин : @NEWUSER@
+Ðолное Ð¸Ð¼Ñ : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+ÐаÑа : @DATE@
+ÐÑаÑÐ·ÐµÑ : @BROWSER@
+ÐдÑÐµÑ IP : @IPADDRESS@
+ХоÑÑ : @HOSTNAME@
+
+--
+ÐÑо ÑообÑение бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ru/resendpwd.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/revisions.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/ru/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ÐоиÑк======
-
-ÐеÑед Ðами â ÑезÑлÑÑаÑÑ Ð¿Ð¾Ð¸Ñка. ÐÑли ÐÑ Ð½Ðµ наÑли Ñо, ÑÑо иÑкали, ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÑÑаниÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, ÑовпадаÑÑим Ñ Ð·Ð°Ð¿ÑоÑом. ЧÑÐ¾Ð±Ñ ÑделаÑÑ ÑÑо, пÑоÑÑо нажмиÑе на ÐºÐ½Ð¾Ð¿ÐºÑ ''СоздаÑÑ ÑÑÑаниÑÑ''.
-
+======ÐоиÑк======
+
+ÐеÑед Ðами â ÑезÑлÑÑаÑÑ Ð¿Ð¾Ð¸Ñка. ÐÑли ÐÑ Ð½Ðµ наÑли Ñо, ÑÑо иÑкали, ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÑÑаниÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, ÑовпадаÑÑим Ñ Ð·Ð°Ð¿ÑоÑом. ЧÑÐ¾Ð±Ñ ÑделаÑÑ ÑÑо, пÑоÑÑо нажмиÑе на ÐºÐ½Ð¾Ð¿ÐºÑ ''СоздаÑÑ ÑÑÑаниÑÑ''.
+
=====РезÑлÑÑаÑÑ=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/ru/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**ÐÑо â ÑÑаÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ Ð´Ð¾ÐºÑменÑа!**
-----
+**ÐÑо â ÑÑаÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ Ð´Ð¾ÐºÑменÑа!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/ru/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,93 +1,93 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-более
-болÑÑе
-бÑдеÑ
-бÑдÑо
-бÑла
-бÑло
-бÑÑÑ
-вдÑÑг
-ведÑ
-впÑоÑем
-вÑегда
-вÑеÑ
-вÑего
-говоÑил
-говоÑила
-даже
-дÑÑгой
-дÑÑгаÑ
-еÑли
-еÑÑÑ
-жизнÑ
-жизнÑ
-заÑем
-здеÑÑ
-иногда
-кажеÑÑÑ
-какаÑ
-какой
-какое
-когда
-конеÑно
-лÑÑÑе
-междÑ
-менее
-менÑÑе
-менÑ
-много
-можеÑ
-можно
-надо
-наконеÑ
-него
-нелÑзÑ
-нибÑдÑ
-никогда
-ниÑего
-нÑжно
-один
-одна
-опÑÑÑ
-пеÑед
-поÑле
-поÑом
-поÑомÑ
-поÑÑи
-Ñазве
-Ñвое
-ÑвоÑ
-Ñвой
-ÑвоÑ
-ÑвоÑ
-Ñебе
-ÑебÑ
-ÑегоднÑ
-ÑейÑаÑ
-Ñказал
-Ñказала
-ÑказаÑÑ
-ÑовÑем
-ÑакаÑ
-Ñакое
-Ñакой
-ÑебÑ
-ÑепеÑÑ
-Ñогда
-Ñого
-Ñоже
-ÑолÑко
-ÑомÑ
-Ñ
оÑоÑо
-Ñ
оÑÑ
-Ñего
-ÑеÑез
-ÑÑоб
-ÑÑобÑ
-ÑÑÑÑ
-ÑÑого
-ÑÑой
-ÑÑим
-ÑÑоÑ
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+более
+болÑÑе
+бÑдеÑ
+бÑдÑо
+бÑла
+бÑло
+бÑÑÑ
+вдÑÑг
+ведÑ
+впÑоÑем
+вÑегда
+вÑеÑ
+вÑего
+говоÑил
+говоÑила
+даже
+дÑÑгой
+дÑÑгаÑ
+еÑли
+еÑÑÑ
+жизнÑ
+жизнÑ
+заÑем
+здеÑÑ
+иногда
+кажеÑÑÑ
+какаÑ
+какой
+какое
+когда
+конеÑно
+лÑÑÑе
+междÑ
+менее
+менÑÑе
+менÑ
+много
+можеÑ
+можно
+надо
+наконеÑ
+него
+нелÑзÑ
+нибÑдÑ
+никогда
+ниÑего
+нÑжно
+один
+одна
+опÑÑÑ
+пеÑед
+поÑле
+поÑом
+поÑомÑ
+поÑÑи
+Ñазве
+Ñвое
+ÑвоÑ
+Ñвой
+ÑвоÑ
+ÑвоÑ
+Ñебе
+ÑебÑ
+ÑегоднÑ
+ÑейÑаÑ
+Ñказал
+Ñказала
+ÑказаÑÑ
+ÑовÑем
+ÑакаÑ
+Ñакое
+Ñакой
+ÑебÑ
+ÑепеÑÑ
+Ñогда
+Ñого
+Ñоже
+ÑолÑко
+ÑомÑ
+Ñ
оÑоÑо
+Ñ
оÑÑ
+Ñего
+ÑеÑез
+ÑÑоб
+ÑÑобÑ
+ÑÑÑÑ
+ÑÑого
+ÑÑой
+ÑÑим
+ÑÑоÑ
Modified: site/trunk/www-root/wiki/inc/lang/ru/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-ÐдÑавÑÑвÑйÑе!
-
-СÑÑаниÑа @PAGE@ в вики @TITLE@ бÑла изменена.
-Ðиже пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-ЧÑÐ¾Ð±Ñ Ð¾ÑпиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑÑой ÑÑÑаниÑÑ,
-войдиÑе под Ñвоим именем в Ðики по адÑеÑÑ
- at DOKUWIKIURL@, пеÑейдиÑе на ÑÑÑаниÑÑ
- at NEWPAGE@ и нажмиÑе 'ÐÑпиÑаÑÑÑÑ'.
-
---
-ÐÑо ÑообÑение бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
- at DOKUWIKIURL@
+ÐдÑавÑÑвÑйÑе!
+
+СÑÑаниÑа @PAGE@ в вики @TITLE@ бÑла изменена.
+Ðиже пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+ЧÑÐ¾Ð±Ñ Ð¾ÑпиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑÑой ÑÑÑаниÑÑ,
+войдиÑе под Ñвоим именем в Ðики по адÑеÑÑ
+ at DOKUWIKIURL@, пеÑейдиÑе на ÑÑÑаниÑÑ
+ at NEWPAGE@ и нажмиÑе 'ÐÑпиÑаÑÑÑÑ'.
+
+--
+ÐÑо ÑообÑение бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ru/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐбновиÑÑ Ð¿ÑоÑÐ¸Ð»Ñ ======
-
-ÐеобÑ
одимо заполниÑÑ ÑолÑко Ñе полÑ, коÑоÑÑе ÐÑ Ñ
оÑиÑе измениÑÑ. ÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾.
-
-
+====== ÐбновиÑÑ Ð¿ÑоÑÐ¸Ð»Ñ ======
+
+ÐеобÑ
одимо заполниÑÑ ÑолÑко Ñе полÑ, коÑоÑÑе ÐÑ Ñ
оÑиÑе измениÑÑ. ÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/ru/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-РваÑÑ DokuWiki бÑл закаÑан Ñайл. ÐодÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ:
-
-Файл : @MEDIA@
-ÐаÑа : @DATE@
-ÐÑаÑÐ·ÐµÑ : @BROWSER@
-ÐдÑÐµÑ IP : @IPADDRESS@
-ХоÑÑ : @HOSTNAME@
-Ð Ð°Ð·Ð¼ÐµÑ : @SIZE@
-Тип MIME : @MIME@
-ÐолÑзоваÑелÑ: @USER@
-
---
-ÐÑо пиÑÑмо бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
- at DOKUWIKIURL@
+РваÑÑ DokuWiki бÑл закаÑан Ñайл. ÐодÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ:
+
+Файл : @MEDIA@
+ÐаÑа : @DATE@
+ÐÑаÑÐ·ÐµÑ : @BROWSER@
+ÐдÑÐµÑ IP : @IPADDRESS@
+ХоÑÑ : @HOSTNAME@
+Ð Ð°Ð·Ð¼ÐµÑ : @SIZE@
+Тип MIME : @MIME@
+ÐолÑзоваÑелÑ: @USER@
+
+--
+ÐÑо пиÑÑмо бÑло ÑгенеÑиÑовано DokuWiki по адÑеÑÑ
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/ru/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/ru/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/ru/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======СÐÐРзаблокиÑован======
-
-ÐаÑи Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ **не бÑли** ÑоÑ
ÑаненÑ, Ñак как они ÑодеÑÐ¶Ð°Ñ Ð¾Ð´Ð½Ð¾ или более запÑеÑеннÑÑ
Ñлов.
-ÐÑли ÐÑ Ð¿ÑÑалиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ñпам в Ðики -- ай-Ñй-Ñй! ÐÑли ÐÑ ÑÑиÑаеÑе, ÑÑо ÑÑо какаÑ-Ñо оÑибка, обÑаÑиÑеÑÑ Ðº админиÑÑÑаÑоÑÑ Ð²Ð¸ÐºÐ¸.
+======СÐÐРзаблокиÑован======
+
+ÐаÑи Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ **не бÑли** ÑоÑ
ÑаненÑ, Ñак как они ÑодеÑÐ¶Ð°Ñ Ð¾Ð´Ð½Ð¾ или более запÑеÑеннÑÑ
Ñлов.
+ÐÑли ÐÑ Ð¿ÑÑалиÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ñпам в Ðики -- ай-Ñй-Ñй! ÐÑли ÐÑ ÑÑиÑаеÑе, ÑÑо ÑÑо какаÑ-Ñо оÑибка, обÑаÑиÑеÑÑ Ðº админиÑÑÑаÑоÑÑ Ð²Ð¸ÐºÐ¸.
Modified: site/trunk/www-root/wiki/inc/lang/sk/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Administrácia ======
-
-Nižšie môžte nájsÅ¥ zoznam administratÃvnych úloch, ktoré môžte vykonávaÅ¥ v
-DokuWiki.
-
-
+====== Administrácia ======
+
+Nižšie môžte nájsÅ¥ zoznam administratÃvnych úloch, ktoré môžte vykonávaÅ¥ v
+DokuWiki.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Spätné odkazy ======
-
-Tu je zoznam stránok, ktoré pravdepodobne odkazujú na aktuálnu stránku.
+====== Spätné odkazy ======
+
+Tu je zoznam stránok, ktoré pravdepodobne odkazujú na aktuálnu stránku.
Modified: site/trunk/www-root/wiki/inc/lang/sk/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Existuje novšia verzia ======
-
-Existuje novÅ¡ia verzia práve upravovaného dokumentu. To se stáva, keÄ niekto
-iný zmenil dokument, ktorý práve upravujete.
-
-Prehliadnite si nižšie uvedené rozdiely, prÃpadne rozdiely z obidvoch verzià ruÄne spojte dohromady a rozhodnite sa, ktorú verziu uchovaÅ¥. Ak zvolÃte ''UložiÅ¥', bude uložená vaÅ¡a verzia. V opaÄnom prÃpade stlaÄte ''Storno'' pre uchovanie pôvodnej verzie.
+====== Existuje novšia verzia ======
+
+Existuje novÅ¡ia verzia práve upravovaného dokumentu. To se stáva, keÄ niekto
+iný zmenil dokument, ktorý práve upravujete.
+
+Prehliadnite si nižšie uvedené rozdiely, prÃpadne rozdiely z obidvoch verzià ruÄne spojte dohromady a rozhodnite sa, ktorú verziu uchovaÅ¥. Ak zvolÃte ''UložiÅ¥', bude uložená vaÅ¡a verzia. V opaÄnom prÃpade stlaÄte ''Storno'' pre uchovanie pôvodnej verzie.
Modified: site/trunk/www-root/wiki/inc/lang/sk/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Nepovolená akcia ======
-
-PrepáÄte, ale nemáte dostatoÄné oprávnenie k tejto Äinnosti. Možno ste se
-zabudli prihlásiť?
+====== Nepovolená akcia ======
+
+PrepáÄte, ale nemáte dostatoÄné oprávnenie k tejto Äinnosti. Možno ste se
+zabudli prihlásiť?
Modified: site/trunk/www-root/wiki/inc/lang/sk/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Rozdiely ======
-
-Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verzou danej stránky.
-
+====== Rozdiely ======
+
+Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verzou danej stránky.
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Nájdený súbor konceptu ======
-
-VaÅ¡a posledná editácia tejto stránky nebola ukonÄená korektne. Dokuwiki
-automaticky uložila poÄas vaÅ¡ej práce koncept a ten môžete teraz použiÅ¥
-pre pokraÄovanie editácie. Nižšie môžete vidieÅ¥ dáta, ktoré boli uložené.
-
-ProsÃm, rozhodnite sa, Äi chcete //obnoviÅ¥// vaÅ¡u poslednú editáciu, //zmazaÅ¥//
-automaticky uložený koncept, alebo //stornovať// proces editácie.
-
+====== Nájdený súbor konceptu ======
+
+VaÅ¡a posledná editácia tejto stránky nebola ukonÄená korektne. Dokuwiki
+automaticky uložila poÄas vaÅ¡ej práce koncept a ten môžete teraz použiÅ¥
+pre pokraÄovanie editácie. Nižšie môžete vidieÅ¥ dáta, ktoré boli uložené.
+
+ProsÃm, rozhodnite sa, Äi chcete //obnoviÅ¥// vaÅ¡u poslednú editáciu, //zmazaÅ¥//
+automaticky uložený koncept, alebo //stornovať// proces editácie.
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Upravte stránku a stlaÄte ''UložiÅ¥''. Na stránke [[wiki:syntax]] sa môžete
-dozvedieÅ¥ viac o Wiki syntaxi. ProsÃm upravujte stránky len pokiaľ ich môžete **vylepÅ¡it**. Pokiaľ si chcete nieÄo len vyskúšaÅ¥, použite [[playground:playground| pieskovisko]].
+Upravte stránku a stlaÄte ''UložiÅ¥''. Na stránke [[wiki:syntax]] sa môžete
+dozvedieÅ¥ viac o Wiki syntaxi. ProsÃm upravujte stránky len pokiaľ ich môžete **vylepÅ¡it**. Pokiaľ si chcete nieÄo len vyskúšaÅ¥, použite [[playground:playground| pieskovisko]].
Modified: site/trunk/www-root/wiki/inc/lang/sk/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Máte naÄÃtanú starÅ¡iu verziu dokumentu!** Pokiaľ ju uložÃte, vytvorÃte tým novú
-aktuálnú verziu.
+**Máte naÄÃtanú starÅ¡iu verziu dokumentu!** Pokiaľ ju uložÃte, vytvorÃte tým novú
+aktuálnú verziu.
Modified: site/trunk/www-root/wiki/inc/lang/sk/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Index ======
-
-Tu je k dispozÃcii index vÅ¡etkých dostupných stránok Zoradených podľa [[doku>wiki:namespaces|menných priestorov]].
+====== Index ======
+
+Tu je k dispozÃcii index vÅ¡etkých dostupných stránok Zoradených podľa [[doku>wiki:namespaces|menných priestorov]].
Modified: site/trunk/www-root/wiki/inc/lang/sk/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,23 +1,23 @@
-<p>Táto stránka sprevádza prvou inštaláciou a konfiguráciou
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Viac informácià o tomto Inštalátore je dostupných na jeho
-<a href="http://wiki.splitbrain.org/wiki:installer">dokumentaÄnej stránke</a>.</p>
-
-<p>DokuWiki použÃva bežné súbory pre ukladanie wiki stránok a iných informáciÃ
-priradených k týmto stránkam (napr. obrázkov, vyhľadávacÃch indexov, starých
-revÃziÃ). Ak chcete úspeÅ¡ne narábaÅ¥ s DokuWiki, <strong>musÃ</strong>
-mať práva pre zápis do adresárov, kde sa ukladajú tieto súbory. Tento Inštalátor
-nie je schopný nastaviÅ¥ prÃstupové práva pre adresáre. Je potrebné to urobiÅ¥
-priamo cez prÃkazový riadok, alebo ak využÃvate webhosting, cez FTP, alebo vaÅ¡e
-webhostingové administraÄné rozhranie.</p>
-
-<p>Tento InÅ¡talátor nastavà <acronym title="access control list - zoznam prÃstupových práv">ACL</acronym>
-konfiguráciu vaÅ¡ej Dokuwiki. UmožÅuje vytvoriÅ¥ administrátorské konto
-s prÃstupom do administraÄného menu s možnosÅ¥ou inÅ¡talácie pluginov, správy
-užÃvateľov, správy prÃstupových práv k wiki stránkam a zmeny konfiguraÄných
-nastavenÃ. Nie je nevyhnutné pre použÃvanie Dokuwiki, ale umožÅuje to ľahÅ¡ie
-spravovať Dokuwiki.</p>
-
-<p>Skúsenà užÃvatelia, alebo užÃvatelia so Å¡peciálnymi požiadavkami môžu použiÅ¥
-tieto odkazy pre bližšie informácie týkajúce sa
-<a href="http://wiki.splitbrain.org/wiki:install">inÅ¡talaÄných pokynov</a>
-a <a href="http://wiki.splitbrain.org/wiki:config">konfiguraÄných nastavenÃ</a>.</p>
+<p>Táto stránka sprevádza prvou inštaláciou a konfiguráciou
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Viac informácià o tomto Inštalátore je dostupných na jeho
+<a href="http://wiki.splitbrain.org/wiki:installer">dokumentaÄnej stránke</a>.</p>
+
+<p>DokuWiki použÃva bežné súbory pre ukladanie wiki stránok a iných informáciÃ
+priradených k týmto stránkam (napr. obrázkov, vyhľadávacÃch indexov, starých
+revÃziÃ). Ak chcete úspeÅ¡ne narábaÅ¥ s DokuWiki, <strong>musÃ</strong>
+mať práva pre zápis do adresárov, kde sa ukladajú tieto súbory. Tento Inštalátor
+nie je schopný nastaviÅ¥ prÃstupové práva pre adresáre. Je potrebné to urobiÅ¥
+priamo cez prÃkazový riadok, alebo ak využÃvate webhosting, cez FTP, alebo vaÅ¡e
+webhostingové administraÄné rozhranie.</p>
+
+<p>Tento InÅ¡talátor nastavà <acronym title="access control list - zoznam prÃstupových práv">ACL</acronym>
+konfiguráciu vaÅ¡ej Dokuwiki. UmožÅuje vytvoriÅ¥ administrátorské konto
+s prÃstupom do administraÄného menu s možnosÅ¥ou inÅ¡talácie pluginov, správy
+užÃvateľov, správy prÃstupových práv k wiki stránkam a zmeny konfiguraÄných
+nastavenÃ. Nie je nevyhnutné pre použÃvanie Dokuwiki, ale umožÅuje to ľahÅ¡ie
+spravovať Dokuwiki.</p>
+
+<p>Skúsenà užÃvatelia, alebo užÃvatelia so Å¡peciálnymi požiadavkami môžu použiÅ¥
+tieto odkazy pre bližšie informácie týkajúce sa
+<a href="http://wiki.splitbrain.org/wiki:install">inÅ¡talaÄných pokynov</a>
+a <a href="http://wiki.splitbrain.org/wiki:config">konfiguraÄných nastavenÃ</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/sk/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,200 +1,204 @@
-<?php
-/**
- * Slovak language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Ondrej Vegh <ov at vsieti.sk> with help of the scholars from Zdruzena stredna skola polygraficka in Bratislava
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Upraviť stránku';
-$lang['btn_source'] = 'Zobraziť zdroj stránky';
-$lang['btn_show'] = 'Zobraziť stránku';
-$lang['btn_create'] = 'Vytvoriť stránku';
-$lang['btn_search'] = 'Hľadať';
-$lang['btn_save'] = 'Uložiť';
-$lang['btn_preview'] = 'Náhľad';
-$lang['btn_top'] = 'Hore';
-$lang['btn_newer'] = '<< novšie';
-$lang['btn_older'] = 'staršie >>';
-$lang['btn_revs'] = 'Staršia verzia';
-$lang['btn_recent'] = 'Posledné úpravy';
-$lang['btn_upload'] = 'Priložiť';
-$lang['btn_cancel'] = 'Storno';
-$lang['btn_index'] = 'Index';
-$lang['btn_secedit'] = 'Upraviť';
-$lang['btn_login'] = 'Prihlásiť sa';
-$lang['btn_logout'] = 'Odhlásiť sa';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Aktualizovať';
-$lang['btn_delete'] = 'Zmazať';
-$lang['btn_back'] = 'Späť';
-$lang['btn_backlink'] = 'Spätné linky';
-$lang['btn_backtomedia'] = 'Späť na výber média';
-$lang['btn_subscribe'] = 'Posielať zmeny';
-$lang['btn_unsubscribe'] = 'Neposielať zmeny';
-$lang['btn_profile'] = 'Aktualizovať profil';
-$lang['btn_reset'] = 'Zrušiť';
-$lang['btn_resendpwd'] = 'Poslať nové heslo';
-$lang['btn_draft'] = 'Upraviť koncept';
-$lang['btn_recover'] = 'Obnoviť koncept';
-$lang['btn_draftdel'] = 'Zmazať koncept';
-$lang['loggedinas'] = 'Prihlásený(á) ako';
-$lang['user'] = 'UžÃvateľské meno';
-$lang['pass'] = 'Heslo';
-$lang['newpass'] = 'Nové heslo';
-$lang['oldpass'] = 'PotvrÄ aktuálne heslo';
-$lang['passchk'] = 'Ešte raz znovu';
-$lang['remember'] = 'Zapamätaj si ma';
-$lang['fullname'] = 'Celé meno';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Registrovať';
-$lang['profile'] = 'UžÃvateľský profil';
-$lang['badlogin'] = 'Zadané užÃvateľské meno a heslo nie je správne.';
-$lang['minoredit'] = 'Menšie zmeny';
-$lang['draftdate'] = 'Koncept automaticky uložený';
-$lang['regmissing'] = 'MusÃte vyplniÅ¥ vÅ¡etky údaje.';
-$lang['reguexists'] = 'UžÃvateľ s rovnakým menom je už zaregistrovaný.';
-$lang['regsuccess'] = 'UžÃvateľský úÄet bol vytvorený a heslo zaslané mailom.';
-$lang['regsuccess2'] = 'UžÃvateľský úÄet bol vytvorený.';
-$lang['regmailfail'] = 'Zdá sa, že nastala chyba pri posielanà mailu s heslom. Skúste kontaktovať správcu.';
-$lang['regbadmail'] = 'Zadaná mailová adresa nie je platná. Pokiaľ si myslÃte, že to je zle, skúste kontaktovaÅ¥ správcu.';
-$lang['regbadpass'] = 'Dve zadané heslá nie sú rovnaké, skúste prosÃm znovu.';
-$lang['regpwmail'] = 'Vaše heslo do systému DokuWiki';
-$lang['reghere'] = 'Nemáte uživateľský úÄet? Vytvorte si ho';
-$lang['profna'] = 'Toto wiki nepodporuje zmenu profilu';
-$lang['profnochange'] = 'Žiadne zmeny, nie je Äo robiÅ¥.';
-$lang['profnoempty'] = 'Prázdne meno, alebo e-mailová adresa nie sú povolené.';
-$lang['profchanged'] = 'UžÃvateľský úÄet úspeÅ¡ne zmenený.';
-$lang['pwdforget'] = 'Zabudli ste heslo? ZÃskajte nové!';
-$lang['resendna'] = 'Toto wiki nepodporuje znovuposielanie hesla.';
-$lang['resendpwd'] = 'Pošli nové heslo pre';
-$lang['resendpwdmissing'] = 'PrepáÄte, musÃte vyplniÅ¥ vÅ¡etky polia.';
-$lang['resendpwdnouser'] = 'PrepáÄte, nemôžeme nájsÅ¥ zadaného užÃvateľa v databáze.';
-$lang['resendpwdbadauth'] = 'PrepáÄte, tento autorizaÄný kód nie je platný. Uistite sa, Äi ste použili celý autorizaÄný odkaz.';
-$lang['resendpwdconfirm'] = 'AutorizaÄný odkaz bol zaslaný na e-mail.';
-$lang['resendpwdsuccess'] = 'Vaše nové heslo bolo zaslané na e-mail.';
-$lang['txt_upload'] = 'Vyberte súbor ako prÃlohu';
-$lang['txt_filename'] = 'Wiki meno (volitelné)';
-$lang['txt_overwrt'] = 'PrepÃsaÅ¥ existujúci súbor';
-$lang['lockedby'] = 'Práve zamknuté:';
-$lang['lockexpire'] = 'Zámok vyprÅ¡Ã:';
-$lang['willexpire'] = 'Váš zámok pre editáciu za chvÃlu vyprÅ¡Ã.\nAby ste prediÅ¡li konfliktom, stlaÄte tlaÄÃtko Náhľad a zámok sa predĺži.';
-$lang['notsavedyet'] = 'Neuložené zmeny budú stratené.\nChcete naozaj pokraÄovaÅ¥?';
-$lang['rssfailed'] = 'Nastala chyba pri vytváranà tohto RSS: ';
-$lang['nothingfound'] = 'NiÄ nenájdené.';
-$lang['mediaselect'] = 'Výber dokumentu';
-$lang['fileupload'] = 'Nahrávanie dokumentu';
-$lang['uploadsucc'] = 'Prenos prebehol v poriadku';
-$lang['uploadfail'] = 'Chyba pri nahrávanÃ. Možno kvôli zle nastaveným právam?';
-$lang['uploadwrong'] = 'Priloženie súboru s takouto prÃponou nenà dovolené.';
-$lang['uploadexist'] = 'Súbor skutoÄne existuje. Nie je Äo robiÅ¥.';
-$lang['uploadbadcontent'] = 'Nahraný obsah sa nezhoduje s prÃponou súboru %s.';
-$lang['uploadspam'] = 'Nahrávanie bolo zablokované spamovým blacklistom.';
-$lang['uploadxss'] = 'Nahrávanie bolo zablokované kvôli potenciálnemu škodlivému obsahu.';
-$lang['deletesucc'] = 'Súbor "%s" bol zmazený.';
-$lang['deletefail'] = '"%s" nie je možné zmazať - skontrolujte oprávnenia.';
-$lang['mediainuse'] = 'Súbor "%s" nebol zmazaný - je stále použÃvaný.';
-$lang['namespaces'] = 'Menné priestory';
-$lang['mediafiles'] = 'Dostupné súbory';
-$lang['js']['keepopen'] = 'Po vybranà súboru ponechať okno otvorené';
-$lang['js']['hidedetails'] = 'Skryť detaily';
-$lang['mediausage'] = 'Pre odkázanie na súbor použite nasledujúcu syntax:';
-$lang['mediaview'] = 'Zobraziť pôvodný súbor';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'PriložiÅ¥ súbor do aktuálneho menného priestoru. Pre vytvorenie menného podpriestoru, pridajte jeho názov na zaÄiatok wiki mena (oddelený dvojbodkou)';
-$lang['mediaextchange'] = 'PrÃpona súboru bola zmenená z .%s na .%s!';
-$lang['reference'] = 'Referencie pre';
-$lang['ref_inuse'] = 'Súbor nemôže byÅ¥ zmazaný, pretože je stále použÃvaný nasledujúcimi stránkami:';
-$lang['ref_hidden'] = 'Niektoré referencie sú na stránky pre ktoré nemáte právo na ÄÃtanie';
-$lang['hits'] = '- poÄet výskytov';
-$lang['quickhits'] = 'Zodpovedajúce stránky';
-$lang['toc'] = 'Obsah';
-$lang['current'] = 'aktuálne';
-$lang['yours'] = 'Vaša verzia';
-$lang['diff'] = 'zobrazit rozdiely voÄi aktuálnej verzii';
-$lang['line'] = 'Riadok';
-$lang['breadcrumb'] = 'História';
-$lang['youarehere'] = 'Nachádzate sa';
-$lang['lastmod'] = 'Posledná úprava';
-$lang['by'] = 'od';
-$lang['deleted'] = 'odstranené';
-$lang['created'] = 'vytvorené';
-$lang['restored'] = 'stará verzia bola obnovena';
-$lang['external_edit'] = 'externá úprava';
-$lang['summary'] = 'Komentár k úpravám';
-$lang['mail_newpage'] = 'stránka pridaná:';
-$lang['mail_changed'] = 'stránka zmenená:';
-$lang['mail_new_user'] = 'Nový užÃvateľ:';
-$lang['mail_upload'] = 'nahraný súbor:';
-$lang['nosmblinks'] = 'Odkazovanie na zdielané prostriedky Windows funguje len v Internet Explorer.\nAj napriek tomu tento odkaz môžete skopÃrovat a vložit inde.';
-$lang['qb_alert'] = 'Vložte prosÃm text, ktorý chcete formátovaÅ¥.\nTen bude pridaný na koniec dokumentu.';
-$lang['qb_bold'] = 'TuÄné';
-$lang['qb_italic'] = 'KurzÃva';
-$lang['qb_underl'] = 'PodÄiarknutie';
-$lang['qb_code'] = 'Neformátovať (zdrojový kód)';
-$lang['qb_strike'] = 'PreÄiarknutie';
-$lang['qb_h1'] = 'Nadpis 1. úrovne';
-$lang['qb_h2'] = 'Nadpis 2. úrovne';
-$lang['qb_h3'] = 'Nadpis 3. úrovne';
-$lang['qb_h4'] = 'Nadpis 4. úrovne';
-$lang['qb_h5'] = 'Nadpis 5. úrovne';
-$lang['qb_link'] = 'Interný odkaz';
-$lang['qb_extlink'] = 'Externý odkaz';
-$lang['qb_hr'] = 'Horizontálna linka';
-$lang['qb_ol'] = 'ÄÃslovaný zoznam';
-$lang['qb_ul'] = 'NeÄÃslovaný zoznam';
-$lang['qb_media'] = 'Vložiť obrázky alebo iné súbory';
-$lang['qb_sig'] = 'Vložiť podpis';
-$lang['qb_smileys'] = 'SmajlÃky';
-$lang['qb_chars'] = 'Špeciálne znaky';
-$lang['del_confirm'] = 'Zmazať túto položku?';
-$lang['admin_register'] = 'Pridaj nového užÃvateľa';
-$lang['metaedit'] = 'Upraviť metainformácie';
-$lang['metasaveerr'] = 'Zápis metainformácià zlyhal';
-$lang['metasaveok'] = 'Metainformácie uložené';
-$lang['img_backto'] = 'Späť na';
-$lang['img_title'] = 'Titul';
-$lang['img_caption'] = 'Popis';
-$lang['img_date'] = 'Dátum';
-$lang['img_fname'] = 'Názov súboru';
-$lang['img_fsize'] = 'Veľkosť';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'KopÃrovacie práva';
-$lang['img_format'] = 'Formát';
-$lang['img_camera'] = 'Fotoaparát';
-$lang['img_keywords'] = 'KlúÄové slová';
-$lang['subscribe_success'] = 'Pridané %s do zoznamu objednávok pre %s';
-$lang['subscribe_error'] = 'Chyba pri pridanà %s do zoznamu objednávok pre %s';
-$lang['subscribe_noaddress'] = 'Nie je žiadna e-mailová adresa priradená k vašemu menu,nemôžte byť pridaný do zoznamu objednávok';
-$lang['unsubscribe_success'] = 'Odobrané %s zo zoznamu objednávok pre %s';
-$lang['unsubscribe_error'] = 'Chaba pri odobranà %s zo zoznamu objednávok pre %s';
-$lang['authmodfailed'] = 'UžÃvateľská autentifikácia nie je možná. ProsÃm informujte správcu tohto systému.';
-$lang['authtempfail'] = 'UžÃvateľská autentifikácia je doÄasne nedostupná. Ak táto situácia pretrvá, prosÃm informujte správcu tohto systému.';
-$lang['i_chooselang'] = 'Zvoľte váš jazyk';
-$lang['i_installer'] = 'DokuWiki inštalátor';
-$lang['i_wikiname'] = 'Názov Wiki';
-$lang['i_enableacl'] = 'AktivovaÅ¥ ACL (doporuÄené)';
-$lang['i_superuser'] = 'SuperužÃvateľ';
-$lang['i_problems'] = 'InÅ¡talátor narazil na nižšie uvedené problémy. Nemôžte pokraÄovaÅ¥, pokým ich neodstránite.';
-$lang['i_modified'] = 'Z bezpeÄnostných dôvodov bude tento skript fungovaÅ¥ iba s novou, neupravenou inÅ¡taláciou Dokuwiki. Môžete buÄ znovu rozbaliÅ¥ stiahnutý inÅ¡talaÄný balÃÄek, alebo preÅ¡tudovaÅ¥ <a href="http://wiki.splitbrain.org/wiki:install"> inÅ¡talaÄné inÅ¡trukcie Dokuwiki</a>';
-$lang['i_funcna'] = 'PHP funkcia <code>%s</code> nie je dostupná. Je možné, že ju z urÄitých dôvodov zablokoval váš poskytovateľ webhostingu?';
-$lang['i_permfail'] = '<code>%s</code> nie je zapisovateľný pre DokuWiki. MusÃte zmeniÅ¥ prÃstupové práva pre tento adresár!';
-$lang['i_confexists'] = '<code>%s</code> skutoÄne existuje';
-$lang['i_writeerr'] = 'Nie je možné vytvoriÅ¥ <code>%s</code>. Potrebujete skontrolovaÅ¥ prÃstupové práva pre adresár/súbor a vytvoriÅ¥ ho manuálne.';
-$lang['i_badhash'] = 'nerozpoznaný, alebo zmenený súbor dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - bola zadaná nesprávna, alebo žiadna hodnota';
-$lang['i_success'] = 'Konfigurácia bola úspeÅ¡ne ukonÄená. Teraz môžte zmazaÅ¥ súbor install.php. PokraÄujte vo
- <a href="doku.php">vašej novej DokuWiki</a>.';
-$lang['i_failure'] = 'Pri zápise konfiguraÄného súboru nastali nejaké chyby. Potrebujete ich opraviÅ¥ manuálne pred tým ako budete môcÅ¥ použÃvaÅ¥
- <a href="doku.php">vašu novú DokuWiki</a>.';
-$lang['i_policy'] = 'PoÄiatoÄná ACL politika';
-$lang['i_pol0'] = 'Otvorená Wiki (ÄÃtanie, zápis a nahrávanie pre každého)';
-$lang['i_pol1'] = 'Verejná Wiki (ÄÃtanie pre každého, zápis a nahrávanie pre registrovaných užÃvateľov)';
-$lang['i_pol2'] = 'Uzatvorená Wiki (ÄÃtanie, zápis a nahrávanie len pre registrovaných užÃvateľov)';
-$lang['i_retry'] = 'Skúsiť znovu';
+<?php
+/**
+ * Slovak language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Ondrej Vegh <ov at vsieti.sk> with help of the scholars from Zdruzena stredna skola polygraficka in Bratislava
+ * @author Michal Mesko <michal.mesko at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Upraviť stránku';
+$lang['btn_source'] = 'Zobraziť zdroj stránky';
+$lang['btn_show'] = 'Zobraziť stránku';
+$lang['btn_create'] = 'Vytvoriť stránku';
+$lang['btn_search'] = 'Hľadať';
+$lang['btn_save'] = 'Uložiť';
+$lang['btn_preview'] = 'Náhľad';
+$lang['btn_top'] = 'Hore';
+$lang['btn_newer'] = '<< novšie';
+$lang['btn_older'] = 'staršie >>';
+$lang['btn_revs'] = 'Staršia verzia';
+$lang['btn_recent'] = 'Posledné úpravy';
+$lang['btn_upload'] = 'Priložiť';
+$lang['btn_cancel'] = 'Storno';
+$lang['btn_index'] = 'Index';
+$lang['btn_secedit'] = 'Upraviť';
+$lang['btn_login'] = 'Prihlásiť sa';
+$lang['btn_logout'] = 'Odhlásiť sa';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Aktualizovať';
+$lang['btn_delete'] = 'Zmazať';
+$lang['btn_back'] = 'Späť';
+$lang['btn_backlink'] = 'Spätné linky';
+$lang['btn_backtomedia'] = 'Späť na výber média';
+$lang['btn_subscribe'] = 'Posielať zmeny';
+$lang['btn_unsubscribe'] = 'Neposielať zmeny';
+$lang['btn_subscribens'] = 'Posielať zmeny menných priestorov';
+$lang['btn_unsubscribens'] = 'Neposielať zmeny menných priestorov';
+$lang['btn_profile'] = 'Aktualizovať profil';
+$lang['btn_reset'] = 'Zrušiť';
+$lang['btn_resendpwd'] = 'Poslať nové heslo';
+$lang['btn_draft'] = 'Upraviť koncept';
+$lang['btn_recover'] = 'Obnoviť koncept';
+$lang['btn_draftdel'] = 'Zmazať koncept';
+$lang['loggedinas'] = 'Prihlásený(á) ako';
+$lang['user'] = 'UžÃvateľské meno';
+$lang['pass'] = 'Heslo';
+$lang['newpass'] = 'Nové heslo';
+$lang['oldpass'] = 'PotvrÄ aktuálne heslo';
+$lang['passchk'] = 'Ešte raz znovu';
+$lang['remember'] = 'Zapamätaj si ma';
+$lang['fullname'] = 'Celé meno';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Registrovať';
+$lang['profile'] = 'UžÃvateľský profil';
+$lang['badlogin'] = 'Zadané užÃvateľské meno a heslo nie je správne.';
+$lang['minoredit'] = 'Menšie zmeny';
+$lang['draftdate'] = 'Koncept automaticky uložený';
+$lang['regmissing'] = 'MusÃte vyplniÅ¥ vÅ¡etky údaje.';
+$lang['reguexists'] = 'UžÃvateľ s rovnakým menom je už zaregistrovaný.';
+$lang['regsuccess'] = 'UžÃvateľský úÄet bol vytvorený a heslo zaslané mailom.';
+$lang['regsuccess2'] = 'UžÃvateľský úÄet bol vytvorený.';
+$lang['regmailfail'] = 'Zdá sa, že nastala chyba pri posielanà mailu s heslom. Skúste kontaktovať správcu.';
+$lang['regbadmail'] = 'Zadaná mailová adresa nie je platná. Pokiaľ si myslÃte, že to je zle, skúste kontaktovaÅ¥ správcu.';
+$lang['regbadpass'] = 'Dve zadané heslá nie sú rovnaké, skúste prosÃm znovu.';
+$lang['regpwmail'] = 'Vaše heslo do systému DokuWiki';
+$lang['reghere'] = 'Nemáte uživateľský úÄet? Vytvorte si ho';
+$lang['profna'] = 'Toto wiki nepodporuje zmenu profilu';
+$lang['profnochange'] = 'Žiadne zmeny, nie je Äo robiÅ¥.';
+$lang['profnoempty'] = 'Prázdne meno, alebo e-mailová adresa nie sú povolené.';
+$lang['profchanged'] = 'UžÃvateľský úÄet úspeÅ¡ne zmenený.';
+$lang['pwdforget'] = 'Zabudli ste heslo? ZÃskajte nové!';
+$lang['resendna'] = 'Toto wiki nepodporuje znovuposielanie hesla.';
+$lang['resendpwd'] = 'Pošli nové heslo pre';
+$lang['resendpwdmissing'] = 'PrepáÄte, musÃte vyplniÅ¥ vÅ¡etky polia.';
+$lang['resendpwdnouser'] = 'PrepáÄte, nemôžeme nájsÅ¥ zadaného užÃvateľa v databáze.';
+$lang['resendpwdbadauth'] = 'PrepáÄte, tento autorizaÄný kód nie je platný. Uistite sa, Äi ste použili celý autorizaÄný odkaz.';
+$lang['resendpwdconfirm'] = 'AutorizaÄný odkaz bol zaslaný na e-mail.';
+$lang['resendpwdsuccess'] = 'Vaše nové heslo bolo zaslané na e-mail.';
+$lang['txt_upload'] = 'Vyberte súbor ako prÃlohu';
+$lang['txt_filename'] = 'Wiki meno (volitelné)';
+$lang['txt_overwrt'] = 'PrepÃsaÅ¥ existujúci súbor';
+$lang['lockedby'] = 'Práve zamknuté:';
+$lang['lockexpire'] = 'Zámok vyprÅ¡Ã:';
+$lang['willexpire'] = 'Váš zámok pre editáciu za chvÃlu vyprÅ¡Ã.\nAby ste prediÅ¡li konfliktom, stlaÄte tlaÄÃtko Náhľad a zámok sa predĺži.';
+$lang['notsavedyet'] = 'Neuložené zmeny budú stratené.\nChcete naozaj pokraÄovaÅ¥?';
+$lang['rssfailed'] = 'Nastala chyba pri vytváranà tohto RSS: ';
+$lang['nothingfound'] = 'NiÄ nenájdené.';
+$lang['mediaselect'] = 'Výber dokumentu';
+$lang['fileupload'] = 'Nahrávanie dokumentu';
+$lang['uploadsucc'] = 'Prenos prebehol v poriadku';
+$lang['uploadfail'] = 'Chyba pri nahrávanÃ. Možno kvôli zle nastaveným právam?';
+$lang['uploadwrong'] = 'Priloženie súboru s takouto prÃponou nenà dovolené.';
+$lang['uploadexist'] = 'Súbor skutoÄne existuje. Nie je Äo robiÅ¥.';
+$lang['uploadbadcontent'] = 'Nahraný obsah sa nezhoduje s prÃponou súboru %s.';
+$lang['uploadspam'] = 'Nahrávanie bolo zablokované spamovým blacklistom.';
+$lang['uploadxss'] = 'Nahrávanie bolo zablokované kvôli potenciálnemu škodlivému obsahu.';
+$lang['deletesucc'] = 'Súbor "%s" bol zmazený.';
+$lang['deletefail'] = '"%s" nie je možné zmazať - skontrolujte oprávnenia.';
+$lang['mediainuse'] = 'Súbor "%s" nebol zmazaný - je stále použÃvaný.';
+$lang['namespaces'] = 'Menné priestory';
+$lang['mediafiles'] = 'Dostupné súbory';
+$lang['js']['keepopen'] = 'Po vybranà súboru ponechať okno otvorené';
+$lang['js']['hidedetails'] = 'Skryť detaily';
+$lang['mediausage'] = 'Pre odkázanie na súbor použite nasledujúcu syntax:';
+$lang['mediaview'] = 'Zobraziť pôvodný súbor';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'PriložiÅ¥ súbor do aktuálneho menného priestoru. Pre vytvorenie menného podpriestoru, pridajte jeho názov na zaÄiatok wiki mena (oddelený dvojbodkou)';
+$lang['mediaextchange'] = 'PrÃpona súboru bola zmenená z .%s na .%s!';
+$lang['reference'] = 'Referencie pre';
+$lang['ref_inuse'] = 'Súbor nemôže byÅ¥ zmazaný, pretože je stále použÃvaný nasledujúcimi stránkami:';
+$lang['ref_hidden'] = 'Niektoré referencie sú na stránky pre ktoré nemáte právo na ÄÃtanie';
+$lang['hits'] = '- poÄet výskytov';
+$lang['quickhits'] = 'Zodpovedajúce stránky';
+$lang['toc'] = 'Obsah';
+$lang['current'] = 'aktuálne';
+$lang['yours'] = 'Vaša verzia';
+$lang['diff'] = 'zobrazit rozdiely voÄi aktuálnej verzii';
+$lang['diff2'] = 'Ukázať rozdiely medzi vybranými verziami';
+$lang['line'] = 'Riadok';
+$lang['breadcrumb'] = 'História';
+$lang['youarehere'] = 'Nachádzate sa';
+$lang['lastmod'] = 'Posledná úprava';
+$lang['by'] = 'od';
+$lang['deleted'] = 'odstranené';
+$lang['created'] = 'vytvorené';
+$lang['restored'] = 'stará verzia bola obnovena';
+$lang['external_edit'] = 'externá úprava';
+$lang['summary'] = 'Komentár k úpravám';
+$lang['mail_newpage'] = 'stránka pridaná:';
+$lang['mail_changed'] = 'stránka zmenená:';
+$lang['mail_new_user'] = 'Nový užÃvateľ:';
+$lang['mail_upload'] = 'nahraný súbor:';
+$lang['nosmblinks'] = 'Odkazovanie na zdielané prostriedky Windows funguje len v Internet Explorer.\nAj napriek tomu tento odkaz môžete skopÃrovat a vložit inde.';
+$lang['qb_alert'] = 'Vložte prosÃm text, ktorý chcete formátovaÅ¥.\nTen bude pridaný na koniec dokumentu.';
+$lang['qb_bold'] = 'TuÄné';
+$lang['qb_italic'] = 'KurzÃva';
+$lang['qb_underl'] = 'PodÄiarknutie';
+$lang['qb_code'] = 'Neformátovať (zdrojový kód)';
+$lang['qb_strike'] = 'PreÄiarknutie';
+$lang['qb_h1'] = 'Nadpis 1. úrovne';
+$lang['qb_h2'] = 'Nadpis 2. úrovne';
+$lang['qb_h3'] = 'Nadpis 3. úrovne';
+$lang['qb_h4'] = 'Nadpis 4. úrovne';
+$lang['qb_h5'] = 'Nadpis 5. úrovne';
+$lang['qb_link'] = 'Interný odkaz';
+$lang['qb_extlink'] = 'Externý odkaz';
+$lang['qb_hr'] = 'Horizontálna linka';
+$lang['qb_ol'] = 'ÄÃslovaný zoznam';
+$lang['qb_ul'] = 'NeÄÃslovaný zoznam';
+$lang['qb_media'] = 'Vložiť obrázky alebo iné súbory';
+$lang['qb_sig'] = 'Vložiť podpis';
+$lang['qb_smileys'] = 'SmajlÃky';
+$lang['qb_chars'] = 'Špeciálne znaky';
+$lang['del_confirm'] = 'Zmazať túto položku?';
+$lang['admin_register'] = 'Pridaj nového užÃvateľa';
+$lang['metaedit'] = 'Upraviť metainformácie';
+$lang['metasaveerr'] = 'Zápis metainformácià zlyhal';
+$lang['metasaveok'] = 'Metainformácie uložené';
+$lang['img_backto'] = 'Späť na';
+$lang['img_title'] = 'Titul';
+$lang['img_caption'] = 'Popis';
+$lang['img_date'] = 'Dátum';
+$lang['img_fname'] = 'Názov súboru';
+$lang['img_fsize'] = 'Veľkosť';
+$lang['img_artist'] = 'Fotograf';
+$lang['img_copyr'] = 'KopÃrovacie práva';
+$lang['img_format'] = 'Formát';
+$lang['img_camera'] = 'Fotoaparát';
+$lang['img_keywords'] = 'KlúÄové slová';
+$lang['subscribe_success'] = 'Pridané %s do zoznamu objednávok pre %s';
+$lang['subscribe_error'] = 'Chyba pri pridanà %s do zoznamu objednávok pre %s';
+$lang['subscribe_noaddress'] = 'Nie je žiadna e-mailová adresa priradená k vašemu menu,nemôžte byť pridaný do zoznamu objednávok';
+$lang['unsubscribe_success'] = 'Odobrané %s zo zoznamu objednávok pre %s';
+$lang['unsubscribe_error'] = 'Chaba pri odobranà %s zo zoznamu objednávok pre %s';
+$lang['authmodfailed'] = 'UžÃvateľská autentifikácia nie je možná. ProsÃm informujte správcu tohto systému.';
+$lang['authtempfail'] = 'UžÃvateľská autentifikácia je doÄasne nedostupná. Ak táto situácia pretrvá, prosÃm informujte správcu tohto systému.';
+$lang['i_chooselang'] = 'Zvoľte váš jazyk';
+$lang['i_installer'] = 'DokuWiki inštalátor';
+$lang['i_wikiname'] = 'Názov Wiki';
+$lang['i_enableacl'] = 'AktivovaÅ¥ ACL (doporuÄené)';
+$lang['i_superuser'] = 'SuperužÃvateľ';
+$lang['i_problems'] = 'InÅ¡talátor narazil na nižšie uvedené problémy. Nemôžte pokraÄovaÅ¥, pokým ich neodstránite.';
+$lang['i_modified'] = 'Z bezpeÄnostných dôvodov bude tento skript fungovaÅ¥ iba s novou, neupravenou inÅ¡taláciou Dokuwiki. Môžete buÄ znovu rozbaliÅ¥ stiahnutý inÅ¡talaÄný balÃÄek, alebo preÅ¡tudovaÅ¥ <a href="http://wiki.splitbrain.org/wiki:install"> inÅ¡talaÄné inÅ¡trukcie Dokuwiki</a>';
+$lang['i_funcna'] = 'PHP funkcia <code>%s</code> nie je dostupná. Je možné, že ju z urÄitých dôvodov zablokoval váš poskytovateľ webhostingu?';
+$lang['i_permfail'] = '<code>%s</code> nie je zapisovateľný pre DokuWiki. MusÃte zmeniÅ¥ prÃstupové práva pre tento adresár!';
+$lang['i_confexists'] = '<code>%s</code> skutoÄne existuje';
+$lang['i_writeerr'] = 'Nie je možné vytvoriÅ¥ <code>%s</code>. Potrebujete skontrolovaÅ¥ prÃstupové práva pre adresár/súbor a vytvoriÅ¥ ho manuálne.';
+$lang['i_badhash'] = 'nerozpoznaný, alebo zmenený súbor dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - bola zadaná nesprávna, alebo žiadna hodnota';
+$lang['i_success'] = 'Konfigurácia bola úspeÅ¡ne ukonÄená. Teraz môžte zmazaÅ¥ súbor install.php. PokraÄujte vo
+ <a href="doku.php">vašej novej DokuWiki</a>.';
+$lang['i_failure'] = 'Pri zápise konfiguraÄného súboru nastali nejaké chyby. Potrebujete ich opraviÅ¥ manuálne pred tým ako budete môcÅ¥ použÃvaÅ¥
+ <a href="doku.php">vašu novú DokuWiki</a>.';
+$lang['i_policy'] = 'PoÄiatoÄná ACL politika';
+$lang['i_pol0'] = 'Otvorená Wiki (ÄÃtanie, zápis a nahrávanie pre každého)';
+$lang['i_pol1'] = 'Verejná Wiki (ÄÃtanie pre každého, zápis a nahrávanie pre registrovaných užÃvateľov)';
+$lang['i_pol2'] = 'Uzatvorená Wiki (ÄÃtanie, zápis a nahrávanie len pre registrovaných užÃvateľov)';
+$lang['i_retry'] = 'Skúsiť znovu';
Modified: site/trunk/www-root/wiki/inc/lang/sk/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Stránka je uzamknutá ======
-
-Tato stránka je práve uzamknutá pre úpravy iným užÃvateľom. MusÃte poÄkaÅ¥ pokým daný užÃvateľ dokonÄà svoje úpravy, alebo pokým tento zámok vyprÅ¡Ã.
+====== Stránka je uzamknutá ======
+
+Tato stránka je práve uzamknutá pre úpravy iným užÃvateľom. MusÃte poÄkaÅ¥ pokým daný užÃvateľ dokonÄà svoje úpravy, alebo pokým tento zámok vyprÅ¡Ã.
Modified: site/trunk/www-root/wiki/inc/lang/sk/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Prihlásenie ======
-
-Momentálne nie ste prihlásený(á)! ProsÃm vložte svoje identifikaÄné údaje.
-Pre prihlásenie musÃte maÅ¥ zapnuté cookies.
+====== Prihlásenie ======
+
+Momentálne nie ste prihlásený(á)! ProsÃm vložte svoje identifikaÄné údaje.
+Pre prihlásenie musÃte maÅ¥ zapnuté cookies.
Modified: site/trunk/www-root/wiki/inc/lang/sk/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Stránka vo vašom DokuWiki bola zmenená. Tu sú podrobnosti:
-
-Dátum : @DATE@
-PrehliadaÄ : @BROWSER@
-IP adresa : @IPADDRESS@
-Hostitel : @HOSTNAME@
-Stará verzia : @OLDPAGE@
-Nová verzia : @NEWPAGE@
-Komentár : @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-Táto správa bola vygenerovaná systémom DokuWiki:
- at DOKUWIKIURL@
+Stránka vo vašom DokuWiki bola zmenená. Tu sú podrobnosti:
+
+Dátum : @DATE@
+PrehliadaÄ : @BROWSER@
+IP adresa : @IPADDRESS@
+Hostitel : @HOSTNAME@
+Stará verzia : @OLDPAGE@
+Nová verzia : @NEWPAGE@
+Komentár : @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+Táto správa bola vygenerovaná systémom DokuWiki:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sk/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Stránka s týmto názvom ešte neexistuje ======
-
-Odkaz vás zaviedol na stránku, ktorá eÅ¡te neexistuje. Môžete ju vytvoriÅ¥ stlaÄenÃm tlaÄÃtka ''VytvoriÅ¥ stránku''.
+====== Stránka s týmto názvom ešte neexistuje ======
+
+Odkaz vás zaviedol na stránku, ktorá eÅ¡te neexistuje. Môžete ju vytvoriÅ¥ stlaÄenÃm tlaÄÃtka ''VytvoriÅ¥ stránku''.
Modified: site/trunk/www-root/wiki/inc/lang/sk/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Takáto verzia neexistuje ======
-
-Zadaná verzia neexistuje. StlaÄte tlaÄÃtko ''StarÅ¡ia verzia'' pre zoznam starÅ¡Ãch verzià tohoto dokumentu.
+====== Takáto verzia neexistuje ======
+
+Zadaná verzia neexistuje. StlaÄte tlaÄÃtko ''StarÅ¡ia verzia'' pre zoznam starÅ¡Ãch verzià tohoto dokumentu.
Modified: site/trunk/www-root/wiki/inc/lang/sk/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-Dobrý deÅ,
-
-Tu sú prihlasovacie informácie pre @TITLE@ (@DOKUWIKIURL@)
-
-Meno : @FULLNAME@
-UžÃvateľské meno : @LOGIN@
-Heslo : @PASSWORD@
-
---
-Tato správa bola vygenerována systémom DokuWiki:
- at DOKUWIKIURL@
+Dobrý deÅ,
+
+Tu sú prihlasovacie informácie pre @TITLE@ (@DOKUWIKIURL@)
+
+Meno : @FULLNAME@
+UžÃvateľské meno : @LOGIN@
+Heslo : @PASSWORD@
+
+--
+Tato správa bola vygenerována systémom DokuWiki:
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sk/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Náhľad ======
-
-Tu je náhľad, ako bude dokument vyzerať. Pozor: Súbor zatiaľ **nie je uložený**!
+====== Náhľad ======
+
+Tu je náhľad, ako bude dokument vyzerať. Pozor: Súbor zatiaľ **nie je uložený**!
Modified: site/trunk/www-root/wiki/inc/lang/sk/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
-Ahoj @FULLNAME@!
-
-Niekto žiadal o nové heslo pre vaše @TITLE@
-konto na @DOKUWIKIURL@
-
-Ak ste nežiadali o nové heslo, potom iba ignorujte tento mail.
-
-Pre potvrdenie, že požiadavka bola skutoÄne odoslaná vami,
-použite prosÃm nasledujúci odkaz.
-
- at CONFIRM@
-
---
-Tento mail bol generovaný Dokuwiki na adrese
- at DOKUWIKIURL@
+Ahoj @FULLNAME@!
+
+Niekto žiadal o nové heslo pre vaše @TITLE@
+konto na @DOKUWIKIURL@
+
+Ak ste nežiadali o nové heslo, potom iba ignorujte tento mail.
+
+Pre potvrdenie, že požiadavka bola skutoÄne odoslaná vami,
+použite prosÃm nasledujúci odkaz.
+
+ at CONFIRM@
+
+--
+Tento mail bol generovaný Dokuwiki na adrese
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sk/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Táto stránka je iba na ÄÃtanie. Môžete si iba prehliadnuÅ¥ zdrojový kód, ale
-nie meniÅ¥ ho. Opýtajte sa správcu, ak si myslÃÅ¥e že nieÄo nie je v poriadku.
-
+Táto stránka je iba na ÄÃtanie. Môžete si iba prehliadnuÅ¥ zdrojový kód, ale
+nie meniÅ¥ ho. Opýtajte sa správcu, ak si myslÃÅ¥e že nieÄo nie je v poriadku.
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Posledné úpravy ======
-
-Následujúce stránky boli nedávno zmenené.
+====== Posledné úpravy ======
+
+Následujúce stránky boli nedávno zmenené.
Modified: site/trunk/www-root/wiki/inc/lang/sk/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Zaregistrujte sa ako nový užÃvateľ ======
-
-Aby ste zÃskali uživateľský úÄet, vyplÅÅ¥e prosÃm vÅ¡etky informácie v následujúcom
-formulári. Zadajte **platnú** mailovú adresu, na ktorú bude zaslané heslo.
-Uživateľské meno musà byť v platnom [[doku>wiki:pagename|formáte]] (ktorý je
-rovnaký ako formát názvu stránky).
+====== Zaregistrujte sa ako nový užÃvateľ ======
+
+Aby ste zÃskali uživateľský úÄet, vyplÅÅ¥e prosÃm vÅ¡etky informácie v následujúcom
+formulári. Zadajte **platnú** mailovú adresu, na ktorú bude zaslané heslo.
+Uživateľské meno musà byť v platnom [[doku>wiki:pagename|formáte]] (ktorý je
+rovnaký ako formát názvu stránky).
Modified: site/trunk/www-root/wiki/inc/lang/sk/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Nový užÃvateľ bol registrovaný. Tu sú detaily:
-
-UžÃvateľské meno : @NEWUSER@
-Celé meno : @NEWNAME@
-E-Mail : @NEWEMAIL@
-
-Dátum : @DATE@
-PrehliadaÄ : @BROWSER@
-IP adresa : @IPADDRESS@
-Meno servera : @HOSTNAME@
-
---
-Tento mail bol generovaný Dokuwiki na adrese
- at DOKUWIKIURL@
+Nový užÃvateľ bol registrovaný. Tu sú detaily:
+
+UžÃvateľské meno : @NEWUSER@
+Celé meno : @NEWNAME@
+E-Mail : @NEWEMAIL@
+
+Dátum : @DATE@
+PrehliadaÄ : @BROWSER@
+IP adresa : @IPADDRESS@
+Meno servera : @HOSTNAME@
+
+--
+Tento mail bol generovaný Dokuwiki na adrese
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sk/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Poslať nové heslo ======
-
-Vyplnte niežšie požadované informácie pre zÃskanie nového hesla pre váš úÄet v tomto wiki.
-VaÅ¡e nové heslo bude zaslané na vaÅ¡u registrovanú e-mailovú adresu. UžÃvateľské meno má byÅ¥ vaÅ¡e prihlasovaciemeno do wiki.
-
+====== Poslať nové heslo ======
+
+Vyplnte niežšie požadované informácie pre zÃskanie nového hesla pre váš úÄet v tomto wiki.
+VaÅ¡e nové heslo bude zaslané na vaÅ¡u registrovanú e-mailovú adresu. UžÃvateľské meno má byÅ¥ vaÅ¡e prihlasovaciemeno do wiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Staršia verzia ======
-
-Tu sú staršie verzie daného dokumentu. Pre návrat ku staršej verzii si ju zvoľte
-zo zoznamu nižšie, stlaÄte tlaÄidlo ''UpraviÅ¥ stránku'' a uložte ju.
+====== Staršia verzia ======
+
+Tu sú staršie verzie daného dokumentu. Pre návrat ku staršej verzii si ju zvoľte
+zo zoznamu nižšie, stlaÄte tlaÄidlo ''UpraviÅ¥ stránku'' a uložte ju.
Modified: site/trunk/www-root/wiki/inc/lang/sk/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Vyhľadávanie ======
-
-Výsledky hľadania môžete vidieÅ¥ nižšie. Pokiaľ ste nenaÅ¡li, Äo hľadáte, skúste
-požadovanú stránku sami vytvoriÅ¥ stlaÄenÃm tlaÄidla ''VytvoriÅ¥ stránku''.
-
-===== Výsledky =====
+====== Vyhľadávanie ======
+
+Výsledky hľadania môžete vidieÅ¥ nižšie. Pokiaľ ste nenaÅ¡li, Äo hľadáte, skúste
+požadovanú stránku sami vytvoriÅ¥ stlaÄenÃm tlaÄidla ''VytvoriÅ¥ stránku''.
+
+===== Výsledky =====
Modified: site/trunk/www-root/wiki/inc/lang/sk/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Toto je staršia verzia dokumentu!**
-----
-
+**Toto je staršia verzia dokumentu!**
+----
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,28 +1,28 @@
-#Toto je zoznam slov ignorovaných indexérom, jedno slovo na riadok
-# KeÄ editujete tento súbor, uistite sa, Äi použÃvate UNIXové konce riadkov (jednoduchý nový riadok)
-# Nie je potrebné vkladať slová kraťšie ako 3 znaky - tie sú ignorované vždy.
-# Tento zoznam je založený na inom nájdenom na http://www.ranks.nl/stopwords/
-okolo
-tvoj
-ale
-ako
-aký
-aká
-aké
-kde
-kým
-kom
-komu
-ich
-jeho
-jej
-tvoj
-môj
-moja
-moje
-moji
-náš
-váš
-www
-
-
+#Toto je zoznam slov ignorovaných indexérom, jedno slovo na riadok
+# KeÄ editujete tento súbor, uistite sa, Äi použÃvate UNIXové konce riadkov (jednoduchý nový riadok)
+# Nie je potrebné vkladať slová kraťšie ako 3 znaky - tie sú ignorované vždy.
+# Tento zoznam je založený na inom nájdenom na http://www.ranks.nl/stopwords/
+okolo
+tvoj
+ale
+ako
+aký
+aká
+aké
+kde
+kým
+kom
+komu
+ich
+jeho
+jej
+tvoj
+môj
+moja
+moje
+moji
+náš
+váš
+www
+
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-ZdravÃm!
-
-Stránka @PAGE@ v @TITLE@ wiki bola zmenená.
-Tu sú zmeny:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Pre odhlásenie sa z tejto stránky choÄte na
- at DOKUWIKIURL@, potom navÅ¡tÃvte
- at NEWPAGE@
-a zvoľte 'Neposielať zmeny'.
-
---
-Tento mail bol vygenerovaný DokuWiki na
- at DOKUWIKIURL@
-
+ZdravÃm!
+
+Stránka @PAGE@ v @TITLE@ wiki bola zmenená.
+Tu sú zmeny:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Pre odhlásenie sa z tejto stránky choÄte na
+ at DOKUWIKIURL@, potom navÅ¡tÃvte
+ at NEWPAGE@
+a zvoľte 'Neposielať zmeny'.
+
+--
+Tento mail bol vygenerovaný DokuWiki na
+ at DOKUWIKIURL@
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Zmena vášho užÃvateľského profilu ======
-
-Potrebujete vyplniť len tie polia, ktoré chcete zmeniť. Nemôžete zmeniť prihlasovacie meno.
-
-
-
+====== Zmena vášho užÃvateľského profilu ======
+
+Potrebujete vyplniť len tie polia, ktoré chcete zmeniť. Nemôžete zmeniť prihlasovacie meno.
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/sk/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Súbor bol nahraný do DokuWiki. Tu sú podrobnosti:
-
-Súbor : @MEDIA@
-Dátum : @DATE@
-PrehliadaÄ : @BROWSER@
-IP adresa : @IPADDRESS@
-Názov hostiteľa : @HOSTNAME@
-Veľkosť : @SIZE@
-MIME Typ : @MIME@
-UžÃvateľ : @USER@
-
---
-Tento mail vygenerovalo DokuWiki na
+Súbor bol nahraný do DokuWiki. Tu sú podrobnosti:
+
+Súbor : @MEDIA@
+Dátum : @DATE@
+PrehliadaÄ : @BROWSER@
+IP adresa : @IPADDRESS@
+Názov hostiteľa : @HOSTNAME@
+Veľkosť : @SIZE@
+MIME Typ : @MIME@
+UžÃvateľ : @USER@
+
+--
+Tento mail vygenerovalo DokuWiki na
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/sk/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sk/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sk/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== SPAM nebol povolený ======
-
-Vaše zmeny **neboli uložené**, pretože obsahujú jedno alebo viacej nepovolených slov.
-Wiki si nepotrpà na spam! Pokiaľ sa domnievate, že ide o omyl, kontaktujte správcu.
+====== SPAM nebol povolený ======
+
+Vaše zmeny **neboli uložené**, pretože obsahujú jedno alebo viacej nepovolených slov.
+Wiki si nepotrpà na spam! Pokiaľ sa domnievate, že ide o omyl, kontaktujte správcu.
Modified: site/trunk/www-root/wiki/inc/lang/sl/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Kaj je povezano sem ======
-
-To je seznam strani, ki so povezane na trenutno stran. Opomba: CamelCase povezave niso zaznane kot take povezave.
-
+====== Kaj je povezano sem ======
+
+To je seznam strani, ki so povezane na trenutno stran. Opomba: CamelCase povezave niso zaznane kot take povezave.
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Obstaja novejÅ¡a razliÄica ======
-
-Obstaja novejÅ¡a razliÄica dokumenta, ki ga urejate. Do tega pride, ko kak drugi uporabnik spremeni dokument med vaÅ¡im urejanjem.
-
-Temeljito preglejte spodaj prikazane razlike in se potem odloÄite, katero verzijo želite obdržati. Äe izberete ''shrani'', bo shranjena vaÅ¡a razliÄica. Pritisnite ''prekliÄi'', Äe želite ohraniti trenutno razliÄico.
-
+====== Obstaja novejÅ¡a razliÄica ======
+
+Obstaja novejÅ¡a razliÄica dokumenta, ki ga urejate. Do tega pride, ko kak drugi uporabnik spremeni dokument med vaÅ¡im urejanjem.
+
+Temeljito preglejte spodaj prikazane razlike in se potem odloÄite, katero verzijo želite obdržati. Äe izberete ''shrani'', bo shranjena vaÅ¡a razliÄica. Pritisnite ''prekliÄi'', Äe želite ohraniti trenutno razliÄico.
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Nimate dovoljenja======
-
-Oprostite, za nadaljevanje nimati dovolj dovoljenj. MogoÄe ste se pozabili prijaviti?
-
+======Nimate dovoljenja======
+
+Oprostite, za nadaljevanje nimati dovolj dovoljenj. MogoÄe ste se pozabili prijaviti?
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Primerjaj izbrane razliÄice======
-
-Prikaže se vam razlika med izbrano in trenutno razliÄico te strani.
-
+======Primerjaj izbrane razliÄice======
+
+Prikaže se vam razlika med izbrano in trenutno razliÄico te strani.
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Uredite stran in pritisnite ''Shrani''. Glej [[wiki:syntax]] za
- navodila za urejanje. Prosimo vas, da stran spremenite le, Äe jo nameravate **izboljÅ¡ati**. Äe hoÄete preizkusiti kakÅ¡no zadevo, se poigrajte v [[playground:playground|peskovniku]].
-
+Uredite stran in pritisnite ''Shrani''. Glej [[wiki:syntax]] za
+ navodila za urejanje. Prosimo vas, da stran spremenite le, Äe jo nameravate **izboljÅ¡ati**. Äe hoÄete preizkusiti kakÅ¡no zadevo, se poigrajte v [[playground:playground|peskovniku]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Naložili ste staro razliÄico dokumenta!** Äe jo shranite, boste ustvarili novo razliÄico s to vsebino.
+**Naložili ste staro razliÄico dokumenta!** Äe jo shranite, boste ustvarili novo razliÄico s to vsebino.
----
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/sl/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Kazalo ======
-
-To je kazalo vseh strani, ki so na voljo, urejenimi po [[doku>wiki:namespaces|imenskih prostorih]].
-
+====== Kazalo ======
+
+To je kazalo vseh strani, ki so na voljo, urejenimi po [[doku>wiki:namespaces|imenskih prostorih]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,104 +1,104 @@
-<?php
-/**
- * slovenian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Jaka Kranjc <lynxlupodian at hotmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['doublequoteopening'] = 'â';//„
-$lang['doublequoteclosing'] = 'â';//“
-$lang['singlequoteopening'] = 'â';//‚
-$lang['singlequoteclosing'] = 'â';//‘
-
-$lang['btn_edit'] = 'Uredi to stran';
-$lang['btn_source'] = 'Prikaži izvorno kodo strani';
-$lang['btn_show'] = 'Prikaži stran';
-$lang['btn_create'] = 'Ustvari to stran';
-$lang['btn_search'] = 'IÅ¡Äi';
-$lang['btn_save'] = 'Shrani';
-$lang['btn_preview']= 'Predogled';
-$lang['btn_top'] = 'Nazaj na vrh';
-$lang['btn_revs'] = 'Stare razliÄice';
-$lang['btn_recent'] = 'Novosti';
-$lang['btn_upload'] = 'Pošlji';
-$lang['btn_cancel'] = 'PrekliÄi';
-$lang['btn_index'] = 'Kazalo';
-$lang['btn_secedit']= 'Uredi';
-$lang['btn_login'] = 'Prijava';
-$lang['btn_logout'] = 'Odjava';
-
-$lang['loggedinas'] = 'Prijavljen kot';
-$lang['user'] = 'Uporabniško ime';
-$lang['pass'] = 'Geslo';
-$lang['remember'] = 'Zapomni si me';
-$lang['fullname'] = 'Pravo ime';
-$lang['email'] = 'Elektronska pošta';
-$lang['register'] = 'Odpri nov raÄun';
-$lang['badlogin'] = 'Oprostite, uporabniško ime ali geslo ni pravo.';
-
-$lang['regmissing'] = 'Oprostite, zapolniti morate vsa polja.';
-$lang['reguexists'] = 'Oprostite, uporabnik s tem imenom že obstaja.';
-$lang['regsuccess'] = 'Uporabnik je bil ustvarjen. Geslo je bilo poslano na vaš elektronski naslov.';
-$lang['regmailfail']= 'Zgleda, da je prišlo do napake pri pošiljanju gesla. Prosimo da stopite v stik z administratorjem!';
-$lang['regbadmail'] = 'Podan elektronski naslov izgleda neveljaven - Äe mislite da je to napaka, stopite v stik z administratorjem.';
-$lang['regpwmail'] = 'Vaše geslo za DokuWiki';
-$lang['reghere'] = 'Nimate Å¡e raÄuna? Priskrbite si ga';
-
-$lang['txt_upload'] = 'Izberite datoteko za pošiljanje';
-$lang['txt_filename'] = 'Vnesite wikiname (neobvezno)';
-$lang['lockedby'] = 'Trenutno zaklenjeno od';
-$lang['lockexpire'] = 'Zaklep preteÄe';
-$lang['willexpire'] = 'VaÅ¡ zaklep za urejevanje bo pretekel Äez eno minuto.\nDa se izognete konfliktom, uporabite predogled, da se merilnik Äasa za zaklep ponastavi.';
-
-$lang['notsavedyet'] = 'Obstajajo neshranjene spremembe, ki bodo izgubljene.\nRes želite nadaljevati?';
-$lang['rssfailed'] = 'Prišlo je do napake pri prenašanju tega dovoda: ';
-$lang['nothingfound']= 'NiÄ ni bilo najdeno.';
-
-$lang['mediaselect'] = 'Mediafile Izbira';
-$lang['fileupload'] = 'Mediafile Pošiljanje';
-$lang['uploadsucc'] = 'Pošiljanje uspelo';
-$lang['uploadfail'] = 'PoÅ¡iljanje je spodletelo. MogoÄe nimate dovoljenj?';
-$lang['uploadwrong'] = 'PoÅ¡iljanje zavrnjeno. Ta datoteÄna konÄnica je prepovedana';
-$lang['namespaces'] = 'Imenski prostori';
-$lang['mediafiles'] = 'Datoteke ki so na voljo v';
-
-$lang['hits'] = 'Zadetkov';
-$lang['quickhits'] = 'Ujemanja v imenih strani';
-$lang['toc'] = 'Kazalo';
-$lang['current'] = 'trenutna';
-$lang['yours'] = 'VaÅ¡a razliÄica';
-$lang['diff'] = 'prikaži razlike s trenutno razliÄico';
-$lang['line'] = 'Vrstica';
-$lang['breadcrumb'] = 'Sled';
-$lang['lastmod'] = 'ZadnjiÄ spremenil/a';
-$lang['by'] = '';
-$lang['deleted'] = 'odstranjena';
-$lang['created'] = 'ustvarjena';
-$lang['restored'] = 'stara razliÄica povrnjena';
-$lang['summary'] = 'Povzetek urejanja';
-
-$lang['mail_newpage'] = '[DokuWiki] stran dodana:';
-$lang['mail_changed'] = '[DokuWiki] stran spremenjena:';
-
-$lang['nosmblinks'] = 'Povezovanje do Windows deljenih datotek deluje samo v Microsoft Internet Explorer-ju.\nÅ e vedno pa lahko roÄno kopirate povezavo.';
-
-$lang['qb_alert'] = 'Prosimo vnesite besedilo, ki ga želite oblikovati.\nDodano bo na konec dokumenta.';
-$lang['qb_bold'] = 'Krepki tisk';
-$lang['qb_italic'] = 'LežeÄi tisk';
-$lang['qb_underl'] = 'PodÄrtano besedilo';
-$lang['qb_code'] = 'Koda';
-$lang['qb_h1'] = 'Naslov prve stopnje';
-$lang['qb_h2'] = 'Naslov drugee stopnje';
-$lang['qb_h3'] = 'Naslov tretje stopnje';
-$lang['qb_h4'] = 'Naslov Äetrte stopnje';
-$lang['qb_h5'] = 'Naslov pete stopnje';
-$lang['qb_link'] = 'Notranja povezava';
-$lang['qb_extlink'] = 'Zunanja povezava';
-$lang['qb_hr'] = 'Vodoravna Ärta';
-$lang['qb_ol'] = 'Element urejenega seznama';
-$lang['qb_ul'] = 'Element neurejenega seznama';
-$lang['qb_media'] = 'Dodaj slike in druge datoteke';
-$lang['qb_sig'] = 'Vstavi podpis';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * slovenian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Jaka Kranjc <lynxlupodian at hotmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['doublequoteopening'] = 'â';//„
+$lang['doublequoteclosing'] = 'â';//“
+$lang['singlequoteopening'] = 'â';//‚
+$lang['singlequoteclosing'] = 'â';//‘
+
+$lang['btn_edit'] = 'Uredi to stran';
+$lang['btn_source'] = 'Prikaži izvorno kodo strani';
+$lang['btn_show'] = 'Prikaži stran';
+$lang['btn_create'] = 'Ustvari to stran';
+$lang['btn_search'] = 'IÅ¡Äi';
+$lang['btn_save'] = 'Shrani';
+$lang['btn_preview']= 'Predogled';
+$lang['btn_top'] = 'Nazaj na vrh';
+$lang['btn_revs'] = 'Stare razliÄice';
+$lang['btn_recent'] = 'Novosti';
+$lang['btn_upload'] = 'Pošlji';
+$lang['btn_cancel'] = 'PrekliÄi';
+$lang['btn_index'] = 'Kazalo';
+$lang['btn_secedit']= 'Uredi';
+$lang['btn_login'] = 'Prijava';
+$lang['btn_logout'] = 'Odjava';
+
+$lang['loggedinas'] = 'Prijavljen kot';
+$lang['user'] = 'Uporabniško ime';
+$lang['pass'] = 'Geslo';
+$lang['remember'] = 'Zapomni si me';
+$lang['fullname'] = 'Pravo ime';
+$lang['email'] = 'Elektronska pošta';
+$lang['register'] = 'Odpri nov raÄun';
+$lang['badlogin'] = 'Oprostite, uporabniško ime ali geslo ni pravo.';
+
+$lang['regmissing'] = 'Oprostite, zapolniti morate vsa polja.';
+$lang['reguexists'] = 'Oprostite, uporabnik s tem imenom že obstaja.';
+$lang['regsuccess'] = 'Uporabnik je bil ustvarjen. Geslo je bilo poslano na vaš elektronski naslov.';
+$lang['regmailfail']= 'Zgleda, da je prišlo do napake pri pošiljanju gesla. Prosimo da stopite v stik z administratorjem!';
+$lang['regbadmail'] = 'Podan elektronski naslov izgleda neveljaven - Äe mislite da je to napaka, stopite v stik z administratorjem.';
+$lang['regpwmail'] = 'Vaše geslo za DokuWiki';
+$lang['reghere'] = 'Nimate Å¡e raÄuna? Priskrbite si ga';
+
+$lang['txt_upload'] = 'Izberite datoteko za pošiljanje';
+$lang['txt_filename'] = 'Vnesite wikiname (neobvezno)';
+$lang['lockedby'] = 'Trenutno zaklenjeno od';
+$lang['lockexpire'] = 'Zaklep preteÄe';
+$lang['willexpire'] = 'VaÅ¡ zaklep za urejevanje bo pretekel Äez eno minuto.\nDa se izognete konfliktom, uporabite predogled, da se merilnik Äasa za zaklep ponastavi.';
+
+$lang['notsavedyet'] = 'Obstajajo neshranjene spremembe, ki bodo izgubljene.\nRes želite nadaljevati?';
+$lang['rssfailed'] = 'Prišlo je do napake pri prenašanju tega dovoda: ';
+$lang['nothingfound']= 'NiÄ ni bilo najdeno.';
+
+$lang['mediaselect'] = 'Mediafile Izbira';
+$lang['fileupload'] = 'Mediafile Pošiljanje';
+$lang['uploadsucc'] = 'Pošiljanje uspelo';
+$lang['uploadfail'] = 'PoÅ¡iljanje je spodletelo. MogoÄe nimate dovoljenj?';
+$lang['uploadwrong'] = 'PoÅ¡iljanje zavrnjeno. Ta datoteÄna konÄnica je prepovedana';
+$lang['namespaces'] = 'Imenski prostori';
+$lang['mediafiles'] = 'Datoteke ki so na voljo v';
+
+$lang['hits'] = 'Zadetkov';
+$lang['quickhits'] = 'Ujemanja v imenih strani';
+$lang['toc'] = 'Kazalo';
+$lang['current'] = 'trenutna';
+$lang['yours'] = 'VaÅ¡a razliÄica';
+$lang['diff'] = 'prikaži razlike s trenutno razliÄico';
+$lang['line'] = 'Vrstica';
+$lang['breadcrumb'] = 'Sled';
+$lang['lastmod'] = 'ZadnjiÄ spremenil/a';
+$lang['by'] = '';
+$lang['deleted'] = 'odstranjena';
+$lang['created'] = 'ustvarjena';
+$lang['restored'] = 'stara razliÄica povrnjena';
+$lang['summary'] = 'Povzetek urejanja';
+
+$lang['mail_newpage'] = '[DokuWiki] stran dodana:';
+$lang['mail_changed'] = '[DokuWiki] stran spremenjena:';
+
+$lang['nosmblinks'] = 'Povezovanje do Windows deljenih datotek deluje samo v Microsoft Internet Explorer-ju.\nÅ e vedno pa lahko roÄno kopirate povezavo.';
+
+$lang['qb_alert'] = 'Prosimo vnesite besedilo, ki ga želite oblikovati.\nDodano bo na konec dokumenta.';
+$lang['qb_bold'] = 'Krepki tisk';
+$lang['qb_italic'] = 'LežeÄi tisk';
+$lang['qb_underl'] = 'PodÄrtano besedilo';
+$lang['qb_code'] = 'Koda';
+$lang['qb_h1'] = 'Naslov prve stopnje';
+$lang['qb_h2'] = 'Naslov drugee stopnje';
+$lang['qb_h3'] = 'Naslov tretje stopnje';
+$lang['qb_h4'] = 'Naslov Äetrte stopnje';
+$lang['qb_h5'] = 'Naslov pete stopnje';
+$lang['qb_link'] = 'Notranja povezava';
+$lang['qb_extlink'] = 'Zunanja povezava';
+$lang['qb_hr'] = 'Vodoravna Ärta';
+$lang['qb_ol'] = 'Element urejenega seznama';
+$lang['qb_ul'] = 'Element neurejenega seznama';
+$lang['qb_media'] = 'Dodaj slike in druge datoteke';
+$lang['qb_sig'] = 'Vstavi podpis';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/sl/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Stran je zaklenjena ======
-
-To stran je nekdo zaklenjenil za urejanje. PoÄakati morate, da jo ta uporabnik neha urejati ali pa da poteÄe zaklep.
+====== Stran je zaklenjena ======
+
+To stran je nekdo zaklenjenil za urejanje. PoÄakati morate, da jo ta uporabnik neha urejati ali pa da poteÄe zaklep.
Modified: site/trunk/www-root/wiki/inc/lang/sl/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Prijava ======
-
-Niste prijavljeni! Spodaj vnesite svoje podatke in se prijavite.
-Da se lahko prijavite, morate imeti omogoÄene piÅ¡kotke.
-
+====== Prijava ======
+
+Niste prijavljeni! Spodaj vnesite svoje podatke in se prijavite.
+Da se lahko prijavite, morate imeti omogoÄene piÅ¡kotke.
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-Stran na vašem DokuWiki je bila dodana ali spremenjena. Podrobnosti:
-
-Datum : @DATE@
-Brskalnik : @BROWSER@
-IP-naslov : @IPADDRESS@
-Gostitelj : @HOSTNAME@
-Stara razliÄica : @OLDPAGE@
-Nova RazliÄica : @NEWPAGE@
-Povzetek urejanja: @SUMMARY@
-Uporabnik : @USER@
-
- at DIFF@
-
-
---
-To sporoÄilo je ustvaril DokuWiki na
- at DOKUWIKIURL@
+Stran na vašem DokuWiki je bila dodana ali spremenjena. Podrobnosti:
+
+Datum : @DATE@
+Brskalnik : @BROWSER@
+IP-naslov : @IPADDRESS@
+Gostitelj : @HOSTNAME@
+Stara razliÄica : @OLDPAGE@
+Nova RazliÄica : @NEWPAGE@
+Povzetek urejanja: @SUMMARY@
+Uporabnik : @USER@
+
+ at DIFF@
+
+
+--
+To sporoÄilo je ustvaril DokuWiki na
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sl/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Ta stran še ne obstaja======
-
-Sledili ste povezavi na stran, ki še ne obstaja. Ustvarite jo lahko,
-tako da pritisnete na ''Ustvari to stran''.
+======Ta stran še ne obstaja======
+
+Sledili ste povezavi na stran, ki še ne obstaja. Ustvarite jo lahko,
+tako da pritisnete na ''Ustvari to stran''.
Modified: site/trunk/www-root/wiki/inc/lang/sl/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Ta razliÄica ne obstaja======
-
-Podana razliÄica ne obstaja. Uporabite gumb ''Stare razliÄice'' za seznam starih razliÄic tega dokumenta.
-
+======Ta razliÄica ne obstaja======
+
+Podana razliÄica ne obstaja. Uporabite gumb ''Stare razliÄice'' za seznam starih razliÄic tega dokumenta.
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Pozdravljeni @FULLNAME@!
-
-Tukaj so vaši podatki za @TITLE@ na @DOKUWIKIURL@
-
-Uporabniško ime : @LOGIN@
-Geslo : @PASSWORD@
-
---
-To sporoÄilo je ustvaril DokuWiki na
- at DOKUWIKIURL@
+Pozdravljeni @FULLNAME@!
+
+Tukaj so vaši podatki za @TITLE@ na @DOKUWIKIURL@
+
+Uporabniško ime : @LOGIN@
+Geslo : @PASSWORD@
+
+--
+To sporoÄilo je ustvaril DokuWiki na
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sl/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Predogled======
-
-To je predogled strani. Lahko si ogledate kako bo izgledal dokument. Ne pozabite pa, da še ni shranjen!
-
+======Predogled======
+
+To je predogled strani. Lahko si ogledate kako bo izgledal dokument. Ne pozabite pa, da še ni shranjen!
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Ta stran je samo za branje. Lahko si ogledate njeno izvorno kodo, spreminjati pa je ne morete. VpraÅ¡ajte administratorja, Äe se vam to zdi narobe.
-
+Ta stran je samo za branje. Lahko si ogledate njeno izvorno kodo, spreminjati pa je ne morete. VpraÅ¡ajte administratorja, Äe se vam to zdi narobe.
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Trenutne spremembe======
-
-SledeÄe strani so bile nedavno spremenjene.
-
-
+======Trenutne spremembe======
+
+SledeÄe strani so bile nedavno spremenjene.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Odpri nov raÄun ======
-
-Vnesite vse potrebne podatke in si ustvarite raÄun za ta wiki.
-Preverite da ste vnesli **veljaven e-mail naslov** - tja bo poslano geslo.
-Uporabniško ime mora biti veljavno [[doku>wiki:pagename|ime strani]].
-
+====== Odpri nov raÄun ======
+
+Vnesite vse potrebne podatke in si ustvarite raÄun za ta wiki.
+Preverite da ste vnesli **veljaven e-mail naslov** - tja bo poslano geslo.
+Uporabniško ime mora biti veljavno [[doku>wiki:pagename|ime strani]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Stare razliÄice======
-
-To so stare razliÄice tega dokumenta. Da ga povrnete na starejÅ¡o razliÄico, to prvo izberite, pritisnite na ''Uredi to stran'' in jo Å¡e shranite.
-
+======Stare razliÄice======
+
+To so stare razliÄice tega dokumenta. Da ga povrnete na starejÅ¡o razliÄico, to prvo izberite, pritisnite na ''Uredi to stran'' in jo Å¡e shranite.
+
Modified: site/trunk/www-root/wiki/inc/lang/sl/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======IÅ¡Äi======
-
-Spodaj so prikazani rezultati vaÅ¡ega iskanja. Äe niste naÅ¡li kar ste iskali, lahko ustvarite novo stran z imenom vaÅ¡e poizvedbe, tako da uporabite gumb ''Uredi to stran''.
-
+======IÅ¡Äi======
+
+Spodaj so prikazani rezultati vaÅ¡ega iskanja. Äe niste naÅ¡li kar ste iskali, lahko ustvarite novo stran z imenom vaÅ¡e poizvedbe, tako da uporabite gumb ''Uredi to stran''.
+
=====Rezultati=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/sl/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**To je stara razliÄica tega dokumenta!**
-----
+**To je stara razliÄica tega dokumenta!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/sl/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sl/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sl/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Blokiran SPAM======
-
-VaÅ¡e spremembe **niso** bile shranjene, ker so vsebovale eno ali veÄ prepovedanih besed.
-Äe ste poskusili nasmetiti Wiki -- Fuj Fido! Äe mislite da je to napaka, stopite v stik z administratorjem.
-
+======Blokiran SPAM======
+
+VaÅ¡e spremembe **niso** bile shranjene, ker so vsebovale eno ali veÄ prepovedanih besed.
+Äe ste poskusili nasmetiti Wiki -- Fuj Fido! Äe mislite da je to napaka, stopite v stik z administratorjem.
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐдминиÑÑÑаÑиÑа ======
-
-Ðзпод Ñе налази лиÑÑа доÑÑÑпниÑ
админиÑÑÑаÑоÑÑкиÑ
опÑиÑа Ñ DokuWiki-ÑÑ.
-
+====== ÐдминиÑÑÑаÑиÑа ======
+
+Ðзпод Ñе налази лиÑÑа доÑÑÑпниÑ
админиÑÑÑаÑоÑÑкиÑ
опÑиÑа Ñ DokuWiki-ÑÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐовÑаÑне везе ======
-
-Ðво Ñе лиÑÑа ÑÑÑаниÑа коÑе имаÑÑ Ð²ÐµÐ·Ðµ ка ÑÑенÑÑÐ½Ð¾Ñ ÑÑÑаниÑи.
-
+====== ÐовÑаÑне везе ======
+
+Ðво Ñе лиÑÑа ÑÑÑаниÑа коÑе имаÑÑ Ð²ÐµÐ·Ðµ ка ÑÑенÑÑÐ½Ð¾Ñ ÑÑÑаниÑи.
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/sr/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐабÑаÑен пÑиÑÑÑп ======
-
-ÐзвиниÑе, али немаÑе довоÑно пÑава да наÑÑавиÑе. Ðожда ÑÑе забоÑавили да Ñе
-пÑиÑавиÑе?
-
+====== ÐабÑаÑен пÑиÑÑÑп ======
+
+ÐзвиниÑе, али немаÑе довоÑно пÑава да наÑÑавиÑе. Ðожда ÑÑе забоÑавили да Ñе
+пÑиÑавиÑе?
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Разлике ======
-
-Ðвде ÑÑ Ð¿Ñиказане Ñазлике измеÑÑ Ð¸Ð·Ð°Ð±Ñане ÑевизиÑе и ÑÑенÑÑне веÑзиÑе
-ÑÑÑаниÑе.
-
+====== Разлике ======
+
+Ðвде ÑÑ Ð¿Ñиказане Ñазлике измеÑÑ Ð¸Ð·Ð°Ð±Ñане ÑевизиÑе и ÑÑенÑÑне веÑзиÑе
+ÑÑÑаниÑе.
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-ÐзмениÑе Ð¾Ð²Ñ ÑÑÑаниÑÑ Ð¸ пÑиÑиÑниÑе ''СаÑÑваÑ''. ÐогледаÑÑе [[wiki:syntax]] за
-ÑинÑакÑÑ ÐикиÑа. Ðолим ÐаÑ, измениÑе Ð¾Ð²Ñ ÑÑÑаниÑÑ Ñамо ако имаÑе намеÑÑ Ð´Ð° Ñе
-**побоÑÑаÑе**. Ðко желиÑе да ÑеÑÑиÑаÑе могÑÑноÑÑи, наÑÑиÑе да напÑавиÑе ÑвоÑе
-коÑаке на [[playground:playground]].
-
+ÐзмениÑе Ð¾Ð²Ñ ÑÑÑаниÑÑ Ð¸ пÑиÑиÑниÑе ''СаÑÑваÑ''. ÐогледаÑÑе [[wiki:syntax]] за
+ÑинÑакÑÑ ÐикиÑа. Ðолим ÐаÑ, измениÑе Ð¾Ð²Ñ ÑÑÑаниÑÑ Ñамо ако имаÑе намеÑÑ Ð´Ð° Ñе
+**побоÑÑаÑе**. Ðко желиÑе да ÑеÑÑиÑаÑе могÑÑноÑÑи, наÑÑиÑе да напÑавиÑе ÑвоÑе
+коÑаке на [[playground:playground]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**УÑиÑали ÑÑе ÑÑаÑÑ ÑевизиÑÑ Ð´Ð¾ÐºÑменÑа!** Ðко Ñе ÑаÑÑваÑе, напÑавиÑеÑе новÑ
-веÑзиÑÑ Ñа овим подаÑима.
-----
+**УÑиÑали ÑÑе ÑÑаÑÑ ÑевизиÑÑ Ð´Ð¾ÐºÑменÑа!** Ðко Ñе ÑаÑÑваÑе, напÑавиÑеÑе новÑ
+веÑзиÑÑ Ñа овим подаÑима.
+----
Modified: site/trunk/www-root/wiki/inc/lang/sr/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐÐ½Ð´ÐµÐºÑ ======
-
-Ðвде Ñе Ð¸Ð½Ð´ÐµÐºÑ ÑвиÑ
доÑÑÑпниÑ
ÑÑÑаниÑа поÑеÑаниÑ
по
-[[doku>wiki:namespaces|именÑким пÑоÑÑоÑима]].
-
+====== ÐÐ½Ð´ÐµÐºÑ ======
+
+Ðвде Ñе Ð¸Ð½Ð´ÐµÐºÑ ÑвиÑ
доÑÑÑпниÑ
ÑÑÑаниÑа поÑеÑаниÑ
по
+[[doku>wiki:namespaces|именÑким пÑоÑÑоÑима]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,153 +1,153 @@
-<?php
-/**
- * serbian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Filip Brcic <brcha at users.sourceforge.net>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';//„
-$lang['doublequoteclosing'] = 'â';//“
-$lang['singlequoteopening'] = 'â';//‚
-$lang['singlequoteclosing'] = 'â';//‘
-
-$lang['btn_edit'] = 'Ðзнеми Ð¾Ð²Ñ ÑÑÑаниÑÑ';
-$lang['btn_source'] = 'ÐÑикажи извоÑни код';
-$lang['btn_show'] = 'ÐÑикажи ÑÑÑаниÑÑ';
-$lang['btn_create'] = 'ÐапÑави Ð¾Ð²Ñ ÑÑÑаниÑÑ';
-$lang['btn_search'] = 'ТÑажи';
-$lang['btn_save'] = 'СаÑÑваÑ';
-$lang['btn_preview']= 'ÐÑегледаÑ';
-$lang['btn_top'] = 'ÐÑаÑи Ñе на вÑÑ
';
-$lang['btn_newer'] = '<< новиÑе';
-$lang['btn_older'] = 'ÑÑаÑиÑе >>';
-$lang['btn_revs'] = 'СÑаÑе веÑзиÑе';
-$lang['btn_recent'] = 'СкоÑиÑе измене';
-$lang['btn_upload'] = 'ÐоÑаÑи';
-$lang['btn_cancel'] = 'ÐониÑÑи';
-$lang['btn_index'] = 'ÐндекÑ';
-$lang['btn_secedit']= 'Ðзмени';
-$lang['btn_login'] = 'ÐÑиÑави Ñе';
-$lang['btn_logout'] = 'ÐдÑави Ñе';
-$lang['btn_admin'] = 'ÐдминиÑÑÑаÑиÑа';
-$lang['btn_update'] = 'ÐжÑÑиÑаÑ';
-$lang['btn_delete'] = 'ÐзбÑиÑи';
-$lang['btn_back'] = 'ÐаÑÑаг';
-$lang['btn_backlink'] = "ÐовÑаÑне везе";
-$lang['btn_backtomedia'] = 'ÐÑаÑи Ñе на Ð¸Ð·Ð±Ð¾Ñ Ð¼ÐµÐ´Ð¸ÑÑког ÑаÑла';
-$lang['btn_subscribe'] = 'ÐÑиÑави Ñе на измене';
-$lang['btn_unsubscribe'] = 'ÐдÑави Ñе Ñа измена';
-
-$lang['loggedinas'] = 'ÐÑиÑавÑен као';
-$lang['user'] = 'ÐоÑиÑниÑко име';
-$lang['pass'] = 'ШиÑÑа';
-$lang['passchk'] = 'поново';
-$lang['remember'] = 'ÐапамÑи ме';
-$lang['fullname'] = 'ÐÑно име';
-$lang['email'] = 'Ð-адÑеÑа';
-$lang['register'] = 'РегиÑÑÑÑÑ Ñе';
-$lang['badlogin'] = 'ÐзвиниÑе, ниÑе добÑо коÑиÑниÑко име или ÑиÑÑа.';
-
-$lang['regmissing'] = 'ÐзвиниÑе, моÑаÑе да попÑниÑе Ñва поÑа.';
-$lang['reguexists'] = 'ÐзвиниÑе, коÑиÑник Ñа иÑÑим именом Ð²ÐµÑ Ð¿Ð¾ÑÑоÑи.';
-$lang['regsuccess'] = 'ÐоÑиÑник Ñе напÑавÑен и ÑиÑÑа Ñе поÑлаÑа пÑÑем е-поÑÑе.';
-$lang['regsuccess2']= 'ÐоÑиÑник Ñе напÑавÑен.';
-$lang['regmailfail']= 'Ðзгледа да Ñе доÑло до гÑеÑке пÑиликом ÑлаÑа ÑиÑÑе е-поÑÑом. Ðолим ÐаÑ, конÑакÑиÑаÑÑе админиÑÑÑаÑоÑа!';
-$lang['regbadmail'] = 'ÐаÑа е-адÑеÑа ниÑе Ñ ÑÐµÐ´Ñ - ако миÑлиÑе да Ñе ово гÑеÑка, конÑакÑиÑаÑÑе админиÑÑÑаÑоÑа';
-$lang['regbadpass'] = 'Ðве задаÑе ÑиÑÑе ниÑÑ Ð¸ÑÑе. Ðолим ÐаÑ, пÑобаÑÑе поново.';
-$lang['regpwmail'] = 'ÐаÑа DokuWiki ÑиÑÑа';
-$lang['reghere'] = 'ÐÐ¾Ñ Ñвек немаÑе налог? Само напÑавиÑе Ñедан';
-
-$lang['txt_upload'] = 'ÐзабеÑиÑе ÑаÑл за ÑлаÑе';
-$lang['txt_filename'] = 'УнеÑиÑе вики-име (опÑионо)';
-$lang['txt_overwrt'] = 'ÐÑепиÑиÑе ÑÑенÑÑни ÑаÑл';
-$lang['lockedby'] = 'ТÑенÑÑно закÑÑÑано од ÑÑÑане';
-$lang['lockexpire'] = 'ÐакÑÑÑаваÑе иÑÑиÑе';
-$lang['willexpire'] = 'ÐаÑе закÑÑÑаваÑе за Ð¸Ð·Ð¼ÐµÐ½Ñ Ð¾Ð²Ðµ ÑÑÑаниÑе Ñе да иÑÑекне за Ñедан минÑÑ.\nÐа би ÑÑе избегли конÑликÑе, иÑкоÑиÑÑиÑе дÑгме за пÑеглед како би ÑÑе ÑеÑеÑовали ÑаÑÐ¼ÐµÑ Ð·Ð°ÐºÑÑÑаваÑа.';
-
-$lang['notsavedyet'] = 'ÐеÑаÑÑване измене Ñе биÑи изгÑбÑене.\nÐа ли ÑÑваÑно желиÑе да наÑÑавиÑе?';
-
-$lang['rssfailed'] = 'ÐоÑло Ñе до гÑеÑке пÑиликом пÑеÑзимаÑа овог довода: ';
-$lang['nothingfound']= 'ÐиÑÑа ниÑе наÑено.';
-
-$lang['mediaselect'] = 'ÐÐ·Ð±Ð¾Ñ Ð¼ÐµÐ´Ð¸ÑÑког ÑаÑла';
-$lang['fileupload'] = 'СлаÑе медиÑÑког ÑаÑла';
-$lang['uploadsucc'] = 'УÑпеÑно ÑлаÑе';
-$lang['uploadfail'] = 'ÐеÑÑпеÑно ÑлаÑе. Ðожда немаÑе дозволÑ?';
-$lang['uploadwrong'] = 'СлаÑе Ñе забÑаÑено. ÐÐ²Ð°Ñ Ð½Ð°ÑÑавак ÑаÑла Ñе забÑаÑен!';
-$lang['uploadexist'] = 'ФаÑл Ð²ÐµÑ Ð¿Ð¾ÑÑоÑи. ÐиÑÑа ниÑе ÑÑиÑено.';
-$lang['deletesucc'] = 'ФаÑл "%s" Ñе избÑиÑан.';
-$lang['deletefail'] = '"%s" ниÑе могао да бÑде избÑиÑан - пÑовеÑиÑе дозволе.';
-$lang['mediainuse'] = 'ФаÑл "%s" ниÑе избÑиÑан - ÑÐ¾Ñ Ñе Ñ ÑпоÑÑеби.';
-$lang['namespaces'] = 'ÐменÑки пÑоÑÑоÑи';
-$lang['mediafiles'] = 'ÐоÑÑÑпни ÑаÑлови Ñ';
-
-$lang['reference'] = 'РеÑеÑенÑе за';
-$lang['ref_inuse'] = 'ФаÑл не може да бÑде избÑиÑан ÑÐµÑ Ð³Ð° ÑÐ¾Ñ Ñвек коÑиÑÑе ÑледеÑе ÑÑÑаниÑе:';
-$lang['ref_hidden'] = 'Ðеке ÑеÑеÑенÑе ÑÑ Ð½Ð° ÑÑÑаниÑама за коÑе немаÑе дозволе за ÑиÑаÑе';
-
-$lang['hits'] = 'ÐогоÑÑи';
-$lang['quickhits'] = 'Ðмена ÑÑÑаниÑа коÑе Ñе поклапаÑÑ';
-$lang['toc'] = 'СадÑжаÑ';
-$lang['current'] = 'ÑÑенÑÑно';
-$lang['yours'] = 'ÐаÑа веÑзиÑа';
-$lang['diff'] = 'пÑикажи Ñазлике до ÑÑенÑÑне веÑзиÑе';
-$lang['line'] = 'ÐиниÑа';
-$lang['breadcrumb'] = 'ТÑаг';
-$lang['lastmod'] = 'ÐоÑледÑи пÑÑ Ð¼ÐµÑано';
-$lang['by'] = '';
-$lang['deleted'] = 'избÑиÑано';
-$lang['created'] = 'напÑавÑено';
-$lang['restored'] = 'ÑÑаÑа веÑзиÑа повÑаÑена';
-$lang['summary'] = 'СажеÑак измене';
-
-$lang['mail_newpage'] = 'ÑÑÑаниÑа додаÑа:';
-$lang['mail_changed'] = 'ÑÑÑаниÑа измеÑена:';
-
-$lang['nosmblinks'] = 'ÐовезиваÑе Ñа Windows деÑеним ÑолдеÑима Ñади Ñамо Ñ ÐаÑкÑоÑоÑÑовом ÐнÑеÑÐ½ÐµÑ ÐÑеÑÑаживаÑÑ.\nÐпак, можеÑе да иÑкопиÑаÑе и залепиÑе везÑ.';
-
-$lang['qb_alert'] = 'Ðолим ваÑ, ÑнеÑиÑе ÑекÑÑ ÐºÐ¾Ñи желиÑе да ÑоÑмаÑизÑÑеÑе.\nÐиÑе Ð´Ð¾Ð´Ð°Ñ Ð½Ð° кÑÐ°Ñ Ð´Ð¾ÐºÑменÑа.';
-$lang['qb_bold'] = 'ÐаÑÑан ÑекÑÑ';
-$lang['qb_italic'] = 'ÐÑÑзивни ÑекÑÑ';
-$lang['qb_underl'] = 'ÐодвÑÑени ÑекÑÑ';
-$lang['qb_code'] = 'ÐзвоÑни код';
-$lang['qb_strike'] = 'ÐÑеÑÑÑани ÑекÑÑ';
-$lang['qb_h1'] = 'ÐаÑлов 1. нивоа';
-$lang['qb_h2'] = 'ÐаÑлов 2. нивоа';
-$lang['qb_h3'] = 'ÐаÑлов 3. нивоа';
-$lang['qb_h4'] = 'ÐаÑлов 4. нивоа';
-$lang['qb_h5'] = 'ÐаÑлов 5. нивоа';
-$lang['qb_link'] = 'УнÑÑÑаÑÑа веза';
-$lang['qb_extlink'] = 'СпоÑаÑÑа веза';
-$lang['qb_hr'] = 'ХоÑизонÑална линиÑа';
-$lang['qb_ol'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑеÑене лиÑÑе';
-$lang['qb_ul'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÑÑеÑене лиÑÑе';
-$lang['qb_media'] = 'ÐÐ¾Ð´Ð°Ñ Ñлике и дÑÑге ÑаÑлове';
-$lang['qb_sig'] = 'УбаÑи поÑпиÑ';
-
-$lang['del_confirm']= 'ÐбÑиÑи Ð¾Ð²Ð°Ñ ÑноÑ?';
-$lang['admin_register']= 'ÐÐ¾Ð´Ð°Ñ Ð½Ð¾Ð²Ð¾Ð³ коÑиÑника';
-
-$lang['metaedit'] = 'Ðзмени меÑа-подаÑке';
-$lang['metasaveerr'] = 'ÐапиÑиваÑе меÑа-подаÑака ниÑе било ÑÑпеÑно';
-$lang['metasaveok'] = 'ÐеÑа-подаÑи ÑÑ ÑаÑÑвани';
-$lang['img_backto'] = 'ÐаÑÑаг на';
-$lang['img_title'] = 'ÐаÑлов';
-$lang['img_caption'] = 'Ðазив';
-$lang['img_date'] = 'ÐаÑÑм';
-$lang['img_fname'] = 'Ðме ÑаÑла';
-$lang['img_fsize'] = 'ÐелиÑина';
-$lang['img_artist'] = 'ФоÑогÑаÑ';
-$lang['img_copyr'] = 'ÐÑава копиÑаÑа';
-$lang['img_format'] = 'ФоÑмаÑ';
-$lang['img_camera'] = 'ÐамеÑа';
-$lang['img_keywords']= 'ÐÑÑÑне ÑеÑи';
-
-$lang['subscribe_success'] = 'Ðодао Ñам %s на лиÑÑÑ Ð¿ÑеÑплаÑника за %s';
-$lang['subscribe_error'] = 'ÐоÑло Ñе до гÑеÑке пÑи додаваÑÑ %s на лиÑÑÑ Ð¿ÑеÑплаÑника за %s';
-$lang['subscribe_noaddress']= 'Ðе поÑÑоÑи е-адÑеÑа аÑоÑиÑана Ñа ÐаÑим налогом. Ðе можеÑе да бÑдеÑе додаÑи на лиÑÑÑ Ð¿ÑеÑплаÑника';
-$lang['unsubscribe_success']= 'ÐзбÑиÑао Ñам %s Ñа лиÑÑе пÑеÑплаÑника за %s';
-$lang['unsubscribe_error'] = 'ÐоÑло Ñе до гÑеÑке пÑиликом бÑиÑаÑа %s Ñа лиÑÑе пÑеÑплаÑника за %s';
-
+<?php
+/**
+ * serbian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Filip Brcic <brcha at users.sourceforge.net>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';//„
+$lang['doublequoteclosing'] = 'â';//“
+$lang['singlequoteopening'] = 'â';//‚
+$lang['singlequoteclosing'] = 'â';//‘
+
+$lang['btn_edit'] = 'Ðзнеми Ð¾Ð²Ñ ÑÑÑаниÑÑ';
+$lang['btn_source'] = 'ÐÑикажи извоÑни код';
+$lang['btn_show'] = 'ÐÑикажи ÑÑÑаниÑÑ';
+$lang['btn_create'] = 'ÐапÑави Ð¾Ð²Ñ ÑÑÑаниÑÑ';
+$lang['btn_search'] = 'ТÑажи';
+$lang['btn_save'] = 'СаÑÑваÑ';
+$lang['btn_preview']= 'ÐÑегледаÑ';
+$lang['btn_top'] = 'ÐÑаÑи Ñе на вÑÑ
';
+$lang['btn_newer'] = '<< новиÑе';
+$lang['btn_older'] = 'ÑÑаÑиÑе >>';
+$lang['btn_revs'] = 'СÑаÑе веÑзиÑе';
+$lang['btn_recent'] = 'СкоÑиÑе измене';
+$lang['btn_upload'] = 'ÐоÑаÑи';
+$lang['btn_cancel'] = 'ÐониÑÑи';
+$lang['btn_index'] = 'ÐндекÑ';
+$lang['btn_secedit']= 'Ðзмени';
+$lang['btn_login'] = 'ÐÑиÑави Ñе';
+$lang['btn_logout'] = 'ÐдÑави Ñе';
+$lang['btn_admin'] = 'ÐдминиÑÑÑаÑиÑа';
+$lang['btn_update'] = 'ÐжÑÑиÑаÑ';
+$lang['btn_delete'] = 'ÐзбÑиÑи';
+$lang['btn_back'] = 'ÐаÑÑаг';
+$lang['btn_backlink'] = "ÐовÑаÑне везе";
+$lang['btn_backtomedia'] = 'ÐÑаÑи Ñе на Ð¸Ð·Ð±Ð¾Ñ Ð¼ÐµÐ´Ð¸ÑÑког ÑаÑла';
+$lang['btn_subscribe'] = 'ÐÑиÑави Ñе на измене';
+$lang['btn_unsubscribe'] = 'ÐдÑави Ñе Ñа измена';
+
+$lang['loggedinas'] = 'ÐÑиÑавÑен као';
+$lang['user'] = 'ÐоÑиÑниÑко име';
+$lang['pass'] = 'ШиÑÑа';
+$lang['passchk'] = 'поново';
+$lang['remember'] = 'ÐапамÑи ме';
+$lang['fullname'] = 'ÐÑно име';
+$lang['email'] = 'Ð-адÑеÑа';
+$lang['register'] = 'РегиÑÑÑÑÑ Ñе';
+$lang['badlogin'] = 'ÐзвиниÑе, ниÑе добÑо коÑиÑниÑко име или ÑиÑÑа.';
+
+$lang['regmissing'] = 'ÐзвиниÑе, моÑаÑе да попÑниÑе Ñва поÑа.';
+$lang['reguexists'] = 'ÐзвиниÑе, коÑиÑник Ñа иÑÑим именом Ð²ÐµÑ Ð¿Ð¾ÑÑоÑи.';
+$lang['regsuccess'] = 'ÐоÑиÑник Ñе напÑавÑен и ÑиÑÑа Ñе поÑлаÑа пÑÑем е-поÑÑе.';
+$lang['regsuccess2']= 'ÐоÑиÑник Ñе напÑавÑен.';
+$lang['regmailfail']= 'Ðзгледа да Ñе доÑло до гÑеÑке пÑиликом ÑлаÑа ÑиÑÑе е-поÑÑом. Ðолим ÐаÑ, конÑакÑиÑаÑÑе админиÑÑÑаÑоÑа!';
+$lang['regbadmail'] = 'ÐаÑа е-адÑеÑа ниÑе Ñ ÑÐµÐ´Ñ - ако миÑлиÑе да Ñе ово гÑеÑка, конÑакÑиÑаÑÑе админиÑÑÑаÑоÑа';
+$lang['regbadpass'] = 'Ðве задаÑе ÑиÑÑе ниÑÑ Ð¸ÑÑе. Ðолим ÐаÑ, пÑобаÑÑе поново.';
+$lang['regpwmail'] = 'ÐаÑа DokuWiki ÑиÑÑа';
+$lang['reghere'] = 'ÐÐ¾Ñ Ñвек немаÑе налог? Само напÑавиÑе Ñедан';
+
+$lang['txt_upload'] = 'ÐзабеÑиÑе ÑаÑл за ÑлаÑе';
+$lang['txt_filename'] = 'УнеÑиÑе вики-име (опÑионо)';
+$lang['txt_overwrt'] = 'ÐÑепиÑиÑе ÑÑенÑÑни ÑаÑл';
+$lang['lockedby'] = 'ТÑенÑÑно закÑÑÑано од ÑÑÑане';
+$lang['lockexpire'] = 'ÐакÑÑÑаваÑе иÑÑиÑе';
+$lang['willexpire'] = 'ÐаÑе закÑÑÑаваÑе за Ð¸Ð·Ð¼ÐµÐ½Ñ Ð¾Ð²Ðµ ÑÑÑаниÑе Ñе да иÑÑекне за Ñедан минÑÑ.\nÐа би ÑÑе избегли конÑликÑе, иÑкоÑиÑÑиÑе дÑгме за пÑеглед како би ÑÑе ÑеÑеÑовали ÑаÑÐ¼ÐµÑ Ð·Ð°ÐºÑÑÑаваÑа.';
+
+$lang['notsavedyet'] = 'ÐеÑаÑÑване измене Ñе биÑи изгÑбÑене.\nÐа ли ÑÑваÑно желиÑе да наÑÑавиÑе?';
+
+$lang['rssfailed'] = 'ÐоÑло Ñе до гÑеÑке пÑиликом пÑеÑзимаÑа овог довода: ';
+$lang['nothingfound']= 'ÐиÑÑа ниÑе наÑено.';
+
+$lang['mediaselect'] = 'ÐÐ·Ð±Ð¾Ñ Ð¼ÐµÐ´Ð¸ÑÑког ÑаÑла';
+$lang['fileupload'] = 'СлаÑе медиÑÑког ÑаÑла';
+$lang['uploadsucc'] = 'УÑпеÑно ÑлаÑе';
+$lang['uploadfail'] = 'ÐеÑÑпеÑно ÑлаÑе. Ðожда немаÑе дозволÑ?';
+$lang['uploadwrong'] = 'СлаÑе Ñе забÑаÑено. ÐÐ²Ð°Ñ Ð½Ð°ÑÑавак ÑаÑла Ñе забÑаÑен!';
+$lang['uploadexist'] = 'ФаÑл Ð²ÐµÑ Ð¿Ð¾ÑÑоÑи. ÐиÑÑа ниÑе ÑÑиÑено.';
+$lang['deletesucc'] = 'ФаÑл "%s" Ñе избÑиÑан.';
+$lang['deletefail'] = '"%s" ниÑе могао да бÑде избÑиÑан - пÑовеÑиÑе дозволе.';
+$lang['mediainuse'] = 'ФаÑл "%s" ниÑе избÑиÑан - ÑÐ¾Ñ Ñе Ñ ÑпоÑÑеби.';
+$lang['namespaces'] = 'ÐменÑки пÑоÑÑоÑи';
+$lang['mediafiles'] = 'ÐоÑÑÑпни ÑаÑлови Ñ';
+
+$lang['reference'] = 'РеÑеÑенÑе за';
+$lang['ref_inuse'] = 'ФаÑл не може да бÑде избÑиÑан ÑÐµÑ Ð³Ð° ÑÐ¾Ñ Ñвек коÑиÑÑе ÑледеÑе ÑÑÑаниÑе:';
+$lang['ref_hidden'] = 'Ðеке ÑеÑеÑенÑе ÑÑ Ð½Ð° ÑÑÑаниÑама за коÑе немаÑе дозволе за ÑиÑаÑе';
+
+$lang['hits'] = 'ÐогоÑÑи';
+$lang['quickhits'] = 'Ðмена ÑÑÑаниÑа коÑе Ñе поклапаÑÑ';
+$lang['toc'] = 'СадÑжаÑ';
+$lang['current'] = 'ÑÑенÑÑно';
+$lang['yours'] = 'ÐаÑа веÑзиÑа';
+$lang['diff'] = 'пÑикажи Ñазлике до ÑÑенÑÑне веÑзиÑе';
+$lang['line'] = 'ÐиниÑа';
+$lang['breadcrumb'] = 'ТÑаг';
+$lang['lastmod'] = 'ÐоÑледÑи пÑÑ Ð¼ÐµÑано';
+$lang['by'] = '';
+$lang['deleted'] = 'избÑиÑано';
+$lang['created'] = 'напÑавÑено';
+$lang['restored'] = 'ÑÑаÑа веÑзиÑа повÑаÑена';
+$lang['summary'] = 'СажеÑак измене';
+
+$lang['mail_newpage'] = 'ÑÑÑаниÑа додаÑа:';
+$lang['mail_changed'] = 'ÑÑÑаниÑа измеÑена:';
+
+$lang['nosmblinks'] = 'ÐовезиваÑе Ñа Windows деÑеним ÑолдеÑима Ñади Ñамо Ñ ÐаÑкÑоÑоÑÑовом ÐнÑеÑÐ½ÐµÑ ÐÑеÑÑаживаÑÑ.\nÐпак, можеÑе да иÑкопиÑаÑе и залепиÑе везÑ.';
+
+$lang['qb_alert'] = 'Ðолим ваÑ, ÑнеÑиÑе ÑекÑÑ ÐºÐ¾Ñи желиÑе да ÑоÑмаÑизÑÑеÑе.\nÐиÑе Ð´Ð¾Ð´Ð°Ñ Ð½Ð° кÑÐ°Ñ Ð´Ð¾ÐºÑменÑа.';
+$lang['qb_bold'] = 'ÐаÑÑан ÑекÑÑ';
+$lang['qb_italic'] = 'ÐÑÑзивни ÑекÑÑ';
+$lang['qb_underl'] = 'ÐодвÑÑени ÑекÑÑ';
+$lang['qb_code'] = 'ÐзвоÑни код';
+$lang['qb_strike'] = 'ÐÑеÑÑÑани ÑекÑÑ';
+$lang['qb_h1'] = 'ÐаÑлов 1. нивоа';
+$lang['qb_h2'] = 'ÐаÑлов 2. нивоа';
+$lang['qb_h3'] = 'ÐаÑлов 3. нивоа';
+$lang['qb_h4'] = 'ÐаÑлов 4. нивоа';
+$lang['qb_h5'] = 'ÐаÑлов 5. нивоа';
+$lang['qb_link'] = 'УнÑÑÑаÑÑа веза';
+$lang['qb_extlink'] = 'СпоÑаÑÑа веза';
+$lang['qb_hr'] = 'ХоÑизонÑална линиÑа';
+$lang['qb_ol'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑеÑене лиÑÑе';
+$lang['qb_ul'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÑÑеÑене лиÑÑе';
+$lang['qb_media'] = 'ÐÐ¾Ð´Ð°Ñ Ñлике и дÑÑге ÑаÑлове';
+$lang['qb_sig'] = 'УбаÑи поÑпиÑ';
+
+$lang['del_confirm']= 'ÐбÑиÑи Ð¾Ð²Ð°Ñ ÑноÑ?';
+$lang['admin_register']= 'ÐÐ¾Ð´Ð°Ñ Ð½Ð¾Ð²Ð¾Ð³ коÑиÑника';
+
+$lang['metaedit'] = 'Ðзмени меÑа-подаÑке';
+$lang['metasaveerr'] = 'ÐапиÑиваÑе меÑа-подаÑака ниÑе било ÑÑпеÑно';
+$lang['metasaveok'] = 'ÐеÑа-подаÑи ÑÑ ÑаÑÑвани';
+$lang['img_backto'] = 'ÐаÑÑаг на';
+$lang['img_title'] = 'ÐаÑлов';
+$lang['img_caption'] = 'Ðазив';
+$lang['img_date'] = 'ÐаÑÑм';
+$lang['img_fname'] = 'Ðме ÑаÑла';
+$lang['img_fsize'] = 'ÐелиÑина';
+$lang['img_artist'] = 'ФоÑогÑаÑ';
+$lang['img_copyr'] = 'ÐÑава копиÑаÑа';
+$lang['img_format'] = 'ФоÑмаÑ';
+$lang['img_camera'] = 'ÐамеÑа';
+$lang['img_keywords']= 'ÐÑÑÑне ÑеÑи';
+
+$lang['subscribe_success'] = 'Ðодао Ñам %s на лиÑÑÑ Ð¿ÑеÑплаÑника за %s';
+$lang['subscribe_error'] = 'ÐоÑло Ñе до гÑеÑке пÑи додаваÑÑ %s на лиÑÑÑ Ð¿ÑеÑплаÑника за %s';
+$lang['subscribe_noaddress']= 'Ðе поÑÑоÑи е-адÑеÑа аÑоÑиÑана Ñа ÐаÑим налогом. Ðе можеÑе да бÑдеÑе додаÑи на лиÑÑÑ Ð¿ÑеÑплаÑника';
+$lang['unsubscribe_success']= 'ÐзбÑиÑао Ñам %s Ñа лиÑÑе пÑеÑплаÑника за %s';
+$lang['unsubscribe_error'] = 'ÐоÑло Ñе до гÑеÑке пÑиликом бÑиÑаÑа %s Ñа лиÑÑе пÑеÑплаÑника за %s';
+
//Setup VIM: ex: et ts=2 enc=utf-8 :
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/sr/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/sr/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐÑиÑавÑиваÑе ======
-
-ТÑенÑÑно ниÑÑе пÑиÑавÑени! УнеÑиÑе ÐаÑе инÑоÑмаÑиÑе иÑпод да биÑÑе Ñе
-пÑиÑавили. Ðа Ñо Ñе неопÑ
одно да колаÑиÑи бÑÐ´Ñ Ð¾Ð¼Ð¾Ð³ÑÑен.
-
+====== ÐÑиÑавÑиваÑе ======
+
+ТÑенÑÑно ниÑÑе пÑиÑавÑени! УнеÑиÑе ÐаÑе инÑоÑмаÑиÑе иÑпод да биÑÑе Ñе
+пÑиÑавили. Ðа Ñо Ñе неопÑ
одно да колаÑиÑи бÑÐ´Ñ Ð¾Ð¼Ð¾Ð³ÑÑен.
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-СÑÑаниÑа на ÐаÑем DokuWiki-ÑÑ Ñе додаÑа или измеÑена. Ðво деÑаÑа
-
-ÐаÑÑм : @DATE@
-ÐÑÐµÐ³Ð»ÐµÐ´Ð°Ñ : @BROWSER@
-IP адÑеÑа : @IPADDRESS@
-Ðме Ñ
оÑÑа : @HOSTNAME@
-СÑаÑа ÑевизиÑа: @OLDPAGE@
-Ðова ÑевизиÑа : @NEWPAGE@
-СажеÑак измена: @SUMMARY@
-ÐоÑиÑник : @USER@
-
- at DIFF@
-
-
---
-Ðво е-пиÑмо Ñе генеÑиÑао DokuWiki Ñа
- at DOKUWIKIURL@
+СÑÑаниÑа на ÐаÑем DokuWiki-ÑÑ Ñе додаÑа или измеÑена. Ðво деÑаÑа
+
+ÐаÑÑм : @DATE@
+ÐÑÐµÐ³Ð»ÐµÐ´Ð°Ñ : @BROWSER@
+IP адÑеÑа : @IPADDRESS@
+Ðме Ñ
оÑÑа : @HOSTNAME@
+СÑаÑа ÑевизиÑа: @OLDPAGE@
+Ðова ÑевизиÑа : @NEWPAGE@
+СажеÑак измена: @SUMMARY@
+ÐоÑиÑник : @USER@
+
+ at DIFF@
+
+
+--
+Ðво е-пиÑмо Ñе генеÑиÑао DokuWiki Ñа
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sr/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Ðва Ñема ÑÐ¾Ñ Ñвек не поÑÑоÑи ======
-
-ÐÑаÑили ÑÑе Ð²ÐµÐ·Ñ Ð´Ð¾ Ñеме коÑа ÑÐ¾Ñ Ñвек не поÑÑоÑи. ÐожеÑе да Ñе напÑавиÑе
-коÑиÑÑеÑи дÑгме ''ÐапÑави Ð¾Ð²Ñ ÑÑÑаниÑÑ''.
+====== Ðва Ñема ÑÐ¾Ñ Ñвек не поÑÑоÑи ======
+
+ÐÑаÑили ÑÑе Ð²ÐµÐ·Ñ Ð´Ð¾ Ñеме коÑа ÑÐ¾Ñ Ñвек не поÑÑоÑи. ÐожеÑе да Ñе напÑавиÑе
+коÑиÑÑеÑи дÑгме ''ÐапÑави Ð¾Ð²Ñ ÑÑÑаниÑÑ''.
Modified: site/trunk/www-root/wiki/inc/lang/sr/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Ðе поÑÑоÑи Ñаква ÑевизиÑа ======
-
-ÐадаÑа ÑевизиÑа не поÑÑоÑи. ÐÑкоÑиÑÑиÑе дÑгме ''СÑаÑе ÑевизиÑе'' да излиÑÑаÑе
-ÑÑаÑе ÑевизиÑе овог докÑменÑа.
-
+====== Ðе поÑÑоÑи Ñаква ÑевизиÑа ======
+
+ÐадаÑа ÑевизиÑа не поÑÑоÑи. ÐÑкоÑиÑÑиÑе дÑгме ''СÑаÑе ÑевизиÑе'' да излиÑÑаÑе
+ÑÑаÑе ÑевизиÑе овог докÑменÑа.
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-ÐдÑаво @FULLNAME@!
-
-Ðво ÐаÑиÑ
подаÑака за @TITLE@ на @DOKUWIKIURL@
-
-ÐоÑиÑниÑко име : @LOGIN@
-ШиÑÑа : @PASSWORD@
-
---
-Ðво е-пиÑмо Ñе генеÑиÑао DokuWiki на
- at DOKUWIKIURL@
+ÐдÑаво @FULLNAME@!
+
+Ðво ÐаÑиÑ
подаÑака за @TITLE@ на @DOKUWIKIURL@
+
+ÐоÑиÑниÑко име : @LOGIN@
+ШиÑÑа : @PASSWORD@
+
+--
+Ðво е-пиÑмо Ñе генеÑиÑао DokuWiki на
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sr/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐÑеглед ======
-
-Ðво Ñе пÑеглед Ñога како би ÐÐ°Ñ ÑекÑÑ Ð¸Ð·Ð³Ð»ÐµÐ´Ð°Ð¾. Ðе забоÑавиÑе: он ÑÐ¾Ñ **ниÑе
-ÑаÑÑван**!
-
+====== ÐÑеглед ======
+
+Ðво Ñе пÑеглед Ñога како би ÐÐ°Ñ ÑекÑÑ Ð¸Ð·Ð³Ð»ÐµÐ´Ð°Ð¾. Ðе забоÑавиÑе: он ÑÐ¾Ñ **ниÑе
+ÑаÑÑван**!
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/sr/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== СкоÑиÑе измене ======
-
-СледеÑе ÑÑÑаниÑе ÑÑ Ð±Ð¸Ð»Ðµ измеÑене Ñ ÑкоÑиÑе вÑеме.
-
-
+====== СкоÑиÑе измене ======
+
+СледеÑе ÑÑÑаниÑе ÑÑ Ð±Ð¸Ð»Ðµ измеÑене Ñ ÑкоÑиÑе вÑеме.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== РегиÑÑÑÑÑÑе Ñе као нови коÑиÑник ======
-
-ÐопÑниÑе Ñве инÑоÑмаÑиÑе иÑпод како би ÑÑе напÑавили нови налог на овом
-викиÑÑ. Ðбавезно ÑпиÑиÑе **ÑаÑÐ½Ñ Ðµ-адÑеÑÑ** - ÐаÑа нова ÑиÑÑа Ñе Ñамо биÑи
-поÑлаÑа. ÐоÑиÑниÑко име би ÑÑебало да бÑде валидно [[doku>wiki:pagename|име
-ÑÑÑаниÑе]]
-
+====== РегиÑÑÑÑÑÑе Ñе као нови коÑиÑник ======
+
+ÐопÑниÑе Ñве инÑоÑмаÑиÑе иÑпод како би ÑÑе напÑавили нови налог на овом
+викиÑÑ. Ðбавезно ÑпиÑиÑе **ÑаÑÐ½Ñ Ðµ-адÑеÑÑ** - ÐаÑа нова ÑиÑÑа Ñе Ñамо биÑи
+поÑлаÑа. ÐоÑиÑниÑко име би ÑÑебало да бÑде валидно [[doku>wiki:pagename|име
+ÑÑÑаниÑе]]
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== СÑаÑе ÑевизиÑе ======
-
-Ðво ÑÑ ÑÑаÑиÑе ÑевизиÑе ÑÑенÑÑног докÑменÑа. Ðа би ÑÑе повÑаÑили ÑÑаÑÑ
-ÑевизиÑÑ, изабеÑиÑе Ñе одоздо, кликниÑе на ''Ðзмени ÑÑÑаниÑÑ'' и ÑаÑÑваÑÑе Ñе.
-
+====== СÑаÑе ÑевизиÑе ======
+
+Ðво ÑÑ ÑÑаÑиÑе ÑевизиÑе ÑÑенÑÑног докÑменÑа. Ðа би ÑÑе повÑаÑили ÑÑаÑÑ
+ÑевизиÑÑ, изабеÑиÑе Ñе одоздо, кликниÑе на ''Ðзмени ÑÑÑаниÑÑ'' и ÑаÑÑваÑÑе Ñе.
+
Modified: site/trunk/www-root/wiki/inc/lang/sr/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== ÐÑеÑÑага ======
-
-ÐÑпод можеÑе да наÑеÑе ÑезÑлÑаÑе ÐаÑе пÑеÑÑаге. Ðко ниÑÑе наÑли Ñо ÑÑо ÑÑе
-ÑÑажили, можеÑе да напÑавиÑе Ð½Ð¾Ð²Ñ ÑÑÑаниÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ñ Ð¿Ð¾ ÐаÑем ÑпиÑÑ ÐºÐ¾ÑиÑÑеÑи
-дÑгме ''Ðзмени Ð¾Ð²Ñ ÑÑÑаниÑÑ''.
-
-===== РезÑлÑаÑи =====
+====== ÐÑеÑÑага ======
+
+ÐÑпод можеÑе да наÑеÑе ÑезÑлÑаÑе ÐаÑе пÑеÑÑаге. Ðко ниÑÑе наÑли Ñо ÑÑо ÑÑе
+ÑÑажили, можеÑе да напÑавиÑе Ð½Ð¾Ð²Ñ ÑÑÑаниÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ñ Ð¿Ð¾ ÐаÑем ÑпиÑÑ ÐºÐ¾ÑиÑÑеÑи
+дÑгме ''Ðзмени Ð¾Ð²Ñ ÑÑÑаниÑÑ''.
+
+===== РезÑлÑаÑи =====
Modified: site/trunk/www-root/wiki/inc/lang/sr/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Ðво Ñе ÑÑаÑа веÑзиÑа докÑменÑа!**
-----
+**Ðво Ñе ÑÑаÑа веÑзиÑа докÑменÑа!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/sr/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,13 +1,13 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-ваÑ
-они
-ÑиÑ
ов
-како
-ово
-ÑÑа
-кад
-где
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+ваÑ
+они
+ÑиÑ
ов
+како
+ово
+ÑÑа
+кад
+где
+www
Modified: site/trunk/www-root/wiki/inc/lang/sr/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-ÐдÑаво!
-
-ÐзмеÑена Ñе ÑÑÑаниÑа @PAGE@ на @TITLE@ викиÑÑ.
-Ðво измена:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Ðа Ñе одÑавиÑе Ñа ове ÑÑÑаниÑе, пÑиÑавиÑе Ñе на вики на
- at DOKUWIKIURL@ и онда поÑеÑиÑе
- at NEWPAGE@
-и изабеÑиÑе 'ÐдÑави Ñе Ñа измена'.
-
---
-Ðво е-пиÑмо Ñе генеÑиÑао DokuWiki на
- at DOKUWIKIURL@
+ÐдÑаво!
+
+ÐзмеÑена Ñе ÑÑÑаниÑа @PAGE@ на @TITLE@ викиÑÑ.
+Ðво измена:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Ðа Ñе одÑавиÑе Ñа ове ÑÑÑаниÑе, пÑиÑавиÑе Ñе на вики на
+ at DOKUWIKIURL@ и онда поÑеÑиÑе
+ at NEWPAGE@
+и изабеÑиÑе 'ÐдÑави Ñе Ñа измена'.
+
+--
+Ðво е-пиÑмо Ñе генеÑиÑао DokuWiki на
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sr/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sr/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sr/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== СÐÐÐ Ñе блокиÑан ======
-
-ÐаÑе измене **ниÑÑ** ÑаÑÑване ÑÐµÑ ÑадÑже ÑÐµÐ´Ð½Ñ Ð¸Ð»Ð¸ виÑе блокиÑаниÑ
ÑеÑи. Ðко
-ÑÑе покÑÑали да ÑпамÑÑеÑе вики -- наÑебаÑеÑе! Ðко миÑлиÑе да Ñе ово
-гÑеÑка, конÑакÑиÑаÑÑе админиÑÑÑаÑоÑа овог викиÑа.
-
+====== СÐÐÐ Ñе блокиÑан ======
+
+ÐаÑе измене **ниÑÑ** ÑаÑÑване ÑÐµÑ ÑадÑже ÑÐµÐ´Ð½Ñ Ð¸Ð»Ð¸ виÑе блокиÑаниÑ
ÑеÑи. Ðко
+ÑÑе покÑÑали да ÑпамÑÑеÑе вики -- наÑебаÑеÑе! Ðко миÑлиÑе да Ñе ово
+гÑеÑка, конÑакÑиÑаÑÑе админиÑÑÑаÑоÑа овог викиÑа.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Administration ======
-
-Nedan hittar du en lista över de tillgängliga administrativa
-uppgifterna i DokuWiki.
-
+====== Administration ======
+
+Nedan hittar du en lista över de tillgängliga administrativa
+uppgifterna i DokuWiki.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Tillbakalänkar ======
-
-Detta är en lista över sidor som verkar länka tillbaka till den aktuella
-sidan.
+====== Tillbakalänkar ======
+
+Detta är en lista över sidor som verkar länka tillbaka till den aktuella
+sidan.
Modified: site/trunk/www-root/wiki/inc/lang/sv/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Det finns en senare version ======
-
-Det finns en senare version av dokumentet du har redigerat. Detta kan hända
-när en annan användare redigerar dokumentet samtidigt som du.
-
-Granska skillnaderna som visas nedan noga, och välj sedan vilken version du
-vill behålla. Om du väljer ''spara'', så kommer din version att sparas.
-Välj ''avbryt'' för att behålla den nuvarande versionen.
-
+====== Det finns en senare version ======
+
+Det finns en senare version av dokumentet du har redigerat. Detta kan hända
+när en annan användare redigerar dokumentet samtidigt som du.
+
+Granska skillnaderna som visas nedan noga, och välj sedan vilken version du
+vill behålla. Om du väljer ''spara'', så kommer din version att sparas.
+Välj ''avbryt'' för att behålla den nuvarande versionen.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Ã
tkomst nekad ======
-
-Tyvärr, du har inte behörighet att fortsätta. Kanske har du glömt att logga
-in?
-
+====== Ã
tkomst nekad ======
+
+Tyvärr, du har inte behörighet att fortsätta. Kanske har du glömt att logga
+in?
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Skillnader ======
-
-Här visas skillnader mellan den valda versionen och den nuvarande versionen av
-sidan.
-
+====== Skillnader ======
+
+Här visas skillnader mellan den valda versionen och den nuvarande versionen av
+sidan.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== Utkast hittat ======
-
-Din senaste redigering av sidan avslutades inte på ett korrekt sätt. DokuWiki
-sparade automatiskt ett utkast under tiden du arbetade, och nu kan du använda
-det för att fortsätta redigeringen. Nedan kan du se det innehåll som sparats
-från din förra session.
-
-Bestäm om du vill //återskapa// din förlorade redigeringssession, //radera//
-det automatiskt sparade utkastet eller //avbryta// redigeringen.
-
+====== Utkast hittat ======
+
+Din senaste redigering av sidan avslutades inte på ett korrekt sätt. DokuWiki
+sparade automatiskt ett utkast under tiden du arbetade, och nu kan du använda
+det för att fortsätta redigeringen. Nedan kan du se det innehåll som sparats
+från din förra session.
+
+Bestäm om du vill //återskapa// din förlorade redigeringssession, //radera//
+det automatiskt sparade utkastet eller //avbryta// redigeringen.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-Redigera sidan och klicka ''Spara''. Se [[wiki:syntax]] för Wikisyntax.
-Redigera bara sidan om du kan **förbättra** den. Om du vill testa
-hur saker och ting fungerar, gör det på [[playground:playground|lekplatsen]].
-
+Redigera sidan och klicka ''Spara''. Se [[wiki:syntax]] för Wikisyntax.
+Redigera bara sidan om du kan **förbättra** den. Om du vill testa
+hur saker och ting fungerar, gör det på [[playground:playground|lekplatsen]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Du har hämtat en tidigare version av dokumentet!** Om du sparar den
-så kommer du att skapa en ny version med detta innehåll.
-----
+**Du har hämtat en tidigare version av dokumentet!** Om du sparar den
+så kommer du att skapa en ny version med detta innehåll.
+----
Modified: site/trunk/www-root/wiki/inc/lang/sv/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Innehållsförteckning ======
-
-Detta är en innehållsförteckning över alla tillgängliga sidor, sorterad efter [[doku>wiki:namespaces|namnrymder]].
-
+====== Innehållsförteckning ======
+
+Detta är en innehållsförteckning över alla tillgängliga sidor, sorterad efter [[doku>wiki:namespaces|namnrymder]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,25 +1,25 @@
-<p>Denna sida hjälper dig med nyinstallation och inställningar för
-<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mer information om
-installationsprogrammet finns på dess egen
-<a href="http://wiki.splitbrain.org/wiki:installer">dokumentationssida</a>.</p>
-
-<p>DokuWiki använder vanliga filer för att lagra wikisidor och annan
-information som här till sidorna (till exempel bilder, sökindex, gamla
-versioner, etc). För att kunna fungera
-<strong>måste</strong> DokuWiki ha skrivrättigheter i de kataloger där
-filerna ligger. Detta installationsprogram kan inte ändra rättigheter
-på kataloger. Det måste normalt göras direkt på en kommandorad, eller
-om du använder ett webbhotell, via FTP eller din leverantörs kontrollpanel
-(till exempel cPanel).</p>
-
-<p>Detta installationsprogram anpassar inställningarna i din DokuWiki för
-<acronym title="access control list">ACL</acronym> (behörighetslista), vilket i sin tur gör att
-administratören kan logga in och komma åt DokuWikis administrationsmenu för
-att installera insticksmoduler, hantera användare, hantera behörighet till
-wikisidor och ändra inställningar. ACL är inget krav för att DokuWiki ska
-fungera, men det förenklar administrationen.</p>
-
-<p>Erfarna användare, eller användare med särskilda behov, kan använda dessa
-länkar för att hitta mer detaljer om
-<a href="http://wiki.splitbrain.org/wiki:install">installation</a>
-och <a href="http://wiki.splitbrain.org/wiki:config">inställningar</a>.</p>
+<p>Denna sida hjälper dig med nyinstallation och inställningar för
+<a href="http://wiki.splitbrain.org">Dokuwiki</a>. Mer information om
+installationsprogrammet finns på dess egen
+<a href="http://wiki.splitbrain.org/wiki:installer">dokumentationssida</a>.</p>
+
+<p>DokuWiki använder vanliga filer för att lagra wikisidor och annan
+information som här till sidorna (till exempel bilder, sökindex, gamla
+versioner, etc). För att kunna fungera
+<strong>måste</strong> DokuWiki ha skrivrättigheter i de kataloger där
+filerna ligger. Detta installationsprogram kan inte ändra rättigheter
+på kataloger. Det måste normalt göras direkt på en kommandorad, eller
+om du använder ett webbhotell, via FTP eller din leverantörs kontrollpanel
+(till exempel cPanel).</p>
+
+<p>Detta installationsprogram anpassar inställningarna i din DokuWiki för
+<acronym title="access control list">ACL</acronym> (behörighetslista), vilket i sin tur gör att
+administratören kan logga in och komma åt DokuWikis administrationsmenu för
+att installera insticksmoduler, hantera användare, hantera behörighet till
+wikisidor och ändra inställningar. ACL är inget krav för att DokuWiki ska
+fungera, men det förenklar administrationen.</p>
+
+<p>Erfarna användare, eller användare med särskilda behov, kan använda dessa
+länkar för att hitta mer detaljer om
+<a href="http://wiki.splitbrain.org/wiki:install">installation</a>
+och <a href="http://wiki.splitbrain.org/wiki:config">inställningar</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/sv/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,206 +1,210 @@
-<?php
-/**
- * Swedish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Joaquim Homrighausen <joho at webbplatsen.se>
- * @author Per Foreby <per at foreby.se>
- * @author Nicklas Henriksson <nicklas[at]nihe.se>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'Redigera sidan';
-$lang['btn_source'] = 'Visa källkod';
-$lang['btn_show'] = 'Visa sidan';
-$lang['btn_create'] = 'Skapa sidan';
-$lang['btn_search'] = 'Sök';
-$lang['btn_save'] = 'Spara';
-$lang['btn_preview'] = 'Granska';
-$lang['btn_top'] = 'Till början av sidan';
-$lang['btn_newer'] = '<< nyare';
-$lang['btn_older'] = 'äldre >>';
-$lang['btn_revs'] = 'Historik';
-$lang['btn_recent'] = 'Nyligen ändrat';
-$lang['btn_upload'] = 'Ladda upp';
-$lang['btn_cancel'] = 'Avbryt';
-$lang['btn_index'] = 'Index';
-$lang['btn_secedit'] = 'Redigera';
-$lang['btn_login'] = 'Logga in';
-$lang['btn_logout'] = 'Logga ut';
-$lang['btn_admin'] = 'Admin';
-$lang['btn_update'] = 'Uppdatera';
-$lang['btn_delete'] = 'Radera';
-$lang['btn_back'] = 'Tillbaka';
-$lang['btn_backlink'] = 'Tillbakalänkar';
-$lang['btn_backtomedia'] = 'Tillbaka till val av Mediafil';
-$lang['btn_subscribe'] = 'Prenumerera på ändringar';
-$lang['btn_unsubscribe'] = 'Säg upp prenumeration på ändringar';
-$lang['btn_profile'] = 'Uppdatera profil';
-$lang['btn_reset'] = 'Ã
terställ';
-$lang['btn_resendpwd'] = 'Skicka nytt lösenord';
-$lang['btn_draft'] = 'Redigera utkast';
-$lang['btn_recover'] = 'Ã
terskapa utkast';
-$lang['btn_draftdel'] = 'Radera utkast';
-$lang['loggedinas'] = 'Inloggad som';
-$lang['user'] = 'Användarnamn';
-$lang['pass'] = 'Lösenord';
-$lang['newpass'] = 'Nytt lösenord';
-$lang['oldpass'] = 'Bekräfta nuvarande lösenord';
-$lang['passchk'] = 'en gång till';
-$lang['remember'] = 'Kom ihåg mig';
-$lang['fullname'] = 'Namm';
-$lang['email'] = 'E-post';
-$lang['register'] = 'Registrera';
-$lang['profile'] = 'Användarprofil';
-$lang['badlogin'] = 'Felaktigt användarnamn eller lösenord.';
-$lang['minoredit'] = 'Små ändringar';
-$lang['draftdate'] = 'Utkast automatiskt sparat';
-$lang['regmissing'] = 'Du måste fylla i alla fälten.';
-$lang['reguexists'] = 'Det finns redan en användare med det användarnamnet.';
-$lang['regsuccess'] = 'Användarkontot skapat, lösenordet har skickats via e-post.';
-$lang['regsuccess2'] = 'Användarkontot skapat.';
-$lang['regmailfail'] = 'Ett fel uppstod när ditt lösenord skulle skickas via e-post. Var god kontakta administratören!';
-$lang['regbadmail'] = 'Den angivna e-postadressen verkar vara ogiltig - om du anser detta felaktigt, var god kontakta administratören';
-$lang['regbadpass'] = 'De två angivna lösenorden är inte identiska. Försök igen.';
-$lang['regpwmail'] = 'Ditt DokuWikilösenord';
-$lang['reghere'] = 'Har du inte ett konto än? Skaffa ett';
-$lang['profna'] = 'Denna wiki stödjer inte ändringar av profiler';
-$lang['profnochange'] = 'Ingenting ändrades, gör ingenting.';
-$lang['profnoempty'] = 'Namn och e-postadress måste fyllas i.';
-$lang['profchanged'] = 'Användarprofilen uppdaterad.';
-$lang['pwdforget'] = 'Glömt ditt lösenord? Ordna ett nytt';
-$lang['resendna'] = 'Den här wikin stödjer inte utskick av lösenord.';
-$lang['resendpwd'] = 'Skicka nytt lösenord för';
-$lang['resendpwdmissing'] = 'Du måste fylla i alla fält.';
-$lang['resendpwdnouser'] = 'Den här användaren hittas inte i databasen.';
-$lang['resendpwdbadauth'] = 'Den här verifieringskoden är inte giltig. Kontrollera att du använde hela verifieringslänken.';
-$lang['resendpwdconfirm'] = 'En verifieringslänk har skickats med e-post.';
-$lang['resendpwdsuccess'] = 'Ditt nya lösenord har skickats med e-post.';
-$lang['txt_upload'] = 'Välj fil att ladda upp';
-$lang['txt_filename'] = 'Ladda upp som (ej obligatoriskt)';
-$lang['txt_overwrt'] = 'Skriv över befintlig fil';
-$lang['lockedby'] = 'LÃ¥st av';
-$lang['lockexpire'] = 'Lås upphör att gälla';
-$lang['willexpire'] = 'Ditt redigeringslås för detta dokument kommer snart att upphöra.\nFör att undvika versionskonflikter bör du förhandsgranska ditt dokument för att förlänga redigeringslåset.';
-$lang['notsavedyet'] = 'Det finns ändringar som inte är sparade.\nÃr du säker pÃ¥ att du vill fortsätta?';
-$lang['rssfailed'] = 'Ett fel uppstod när detta RSS-flöde skulle hämtas: ';
-$lang['nothingfound'] = 'Inga filer hittades.';
-$lang['mediaselect'] = 'Mediafiler';
-$lang['fileupload'] = 'Ladda upp mediafiler';
-$lang['uploadsucc'] = 'Uppladdningen lyckades';
-$lang['uploadfail'] = 'Uppladdningen misslyckades, fel filskydd?';
-$lang['uploadwrong'] = 'Uppladdning nekad. Filändelsen är inte tillåten!';
-$lang['uploadexist'] = 'Filen finns redan. Gjorde ingenting.';
-$lang['uploadbadcontent'] = 'Det uppladdade innehållet stämde inte överens med filändelsen %s.';
-$lang['uploadspam'] = 'Uppladdningen stoppades av spärrlistan för spam.';
-$lang['uploadxss'] = 'Uppladdningen stoppades på grund av eventuellt skadligt innehåll.';
-$lang['deletesucc'] = 'Filen "%s" har raderats.';
-$lang['deletefail'] = 'Kunde inte radera "%s" - kontrollera filskydd.';
-$lang['mediainuse'] = 'Filen "%s" har inte raderats - den används fortfarande.';
-$lang['namespaces'] = 'Namnrymder';
-$lang['mediafiles'] = 'Tillgängliga filer i';
-$lang['js']['keepopen'] = 'Lämna fönstret öppet efter val av fil';
-$lang['js']['hidedetails'] = 'Dölj detaljer';
-$lang['mediausage'] = 'Använd följande syntax för att referera till denna fil:';
-$lang['mediaview'] = 'Visa originalfilen';
-$lang['mediaroot'] = 'rot';
-$lang['mediaupload'] = 'Här kan du ladda upp en fil till den nuvarande namnrymden. För att skapa undernamnrymder, skriv dem före filnamnet under "Ladda upp som". Separera namnrymd och filnamn med kolon.';
-$lang['mediaextchange'] = 'Filändelsen ändrad från .%s till .%s!';
-$lang['reference'] = 'Referenser till';
-$lang['ref_inuse'] = 'Filen kan inte raderas eftersom den fortfarande används av följande sidor:';
-$lang['ref_hidden'] = 'Vissa referenser är på sidor som du inte har rätt att läsa';
-$lang['hits'] = 'Träffar';
-$lang['quickhits'] = 'Matchande sidnamn';
-$lang['toc'] = 'Innehållsförteckning';
-$lang['current'] = 'aktuell';
-$lang['yours'] = 'Din version';
-$lang['diff'] = 'visa skillnader mot aktuell version';
-$lang['diff2'] = 'Visa skillnader mellan valda versioner';
-$lang['line'] = 'Rad';
-$lang['breadcrumb'] = 'Spår';
-$lang['youarehere'] = 'Här är du';
-$lang['lastmod'] = 'Senast uppdaterad';
-$lang['by'] = 'av';
-$lang['deleted'] = 'raderad';
-$lang['created'] = 'skapad';
-$lang['restored'] = 'tidigare version återställd';
-$lang['external_edit'] = 'extern redigering';
-$lang['summary'] = 'Redigeringskommentar';
-$lang['mail_newpage'] = 'sida tillagd:';
-$lang['mail_changed'] = 'sida ändrad:';
-$lang['mail_new_user'] = 'Ny användare:';
-$lang['mail_upload'] = 'fil uppladdad:';
-$lang['nosmblinks'] = 'Länkning till Windowsresurser fungerar bara med Microsofts Internet Explorer.\nDu kan klippa och klistra in länken om du använder en annan webbläsare än MSIE..';
-$lang['qb_alert'] = 'Ange den text du vill formattera.\nDen kommer att läggas till i slutet av dokumentet.';
-$lang['qb_bold'] = 'Fet text';
-$lang['qb_italic'] = 'Kursiv text';
-$lang['qb_underl'] = 'Understruken text';
-$lang['qb_code'] = 'Kodtext';
-$lang['qb_strike'] = 'Ãverstruken text';
-$lang['qb_h1'] = 'Rubrik nivå 1';
-$lang['qb_h2'] = 'Rubrik nivå 2';
-$lang['qb_h3'] = 'Rubrik nivå 3';
-$lang['qb_h4'] = 'Rubrik nivå 4';
-$lang['qb_h5'] = 'Rubrik nivå 5';
-$lang['qb_link'] = 'Intern Länk';
-$lang['qb_extlink'] = 'Extern Länk';
-$lang['qb_hr'] = 'Horisontell linje';
-$lang['qb_ol'] = 'Punkt i sorterad lista';
-$lang['qb_ul'] = 'Punkt i osorterad lista';
-$lang['qb_media'] = 'Lägg till bilder och andra filer';
-$lang['qb_sig'] = 'Infoga signatur';
-$lang['qb_smileys'] = 'Smileys';
-$lang['qb_chars'] = 'Specialtecken';
-$lang['del_confirm'] = 'Vill du verkligen radera?';
-$lang['admin_register'] = 'Lägg till ny användare';
-$lang['metaedit'] = 'Redigera metadata';
-$lang['metasaveerr'] = 'Skrivning av metadata misslyckades';
-$lang['metasaveok'] = 'Metadata sparad';
-$lang['img_backto'] = 'Tillbaka till';
-$lang['img_title'] = 'Rubrik';
-$lang['img_caption'] = 'Bildtext';
-$lang['img_date'] = 'Datum';
-$lang['img_fname'] = 'Filnamn';
-$lang['img_fsize'] = 'Storlek';
-$lang['img_artist'] = 'Fotograf';
-$lang['img_copyr'] = 'Copyright';
-$lang['img_format'] = 'Format';
-$lang['img_camera'] = 'Kamera';
-$lang['img_keywords'] = 'Nyckelord';
-$lang['subscribe_success'] = 'Lade till %s i prenumerationslistan för %s';
-$lang['subscribe_error'] = 'Fel vid tillägg av %s i prenumerationslistan för %s';
-$lang['subscribe_noaddress'] = 'Det finns ingen adress knuten till ditt konto, det går inte att lägga till dig i prenumerationslistan';
-$lang['unsubscribe_success'] = 'Tog bort %s från prenumerationslistan för %s';
-$lang['unsubscribe_error'] = 'Fel vid borttagning %s från prenumerationslistan list för %s';
-$lang['authmodfailed'] = 'Felaktiga inställningar för användarautentisering. Var vänlig meddela wikiadministratören.';
-$lang['authtempfail'] = 'Tillfälligt fel på användarautentisering. Om felet kvarstår, var vänlig meddela wikiadministratören.';
-$lang['i_chooselang'] = 'Välj språk';
-$lang['i_installer'] = 'Installation av DokuWiki';
-$lang['i_wikiname'] = 'Wikins namn';
-$lang['i_enableacl'] = 'Aktivera behörighetslistan (ACL) (rekommenderas)';
-$lang['i_superuser'] = 'Användarnamn för administratören';
-$lang['i_problems'] = 'Installationsprogrammet hittade några problem som visas nedan. Du kan inte fortsätta innan du har fixat dem.';
-$lang['i_modified'] = 'Av säkerhetsskäl fungerar det här skriptet bara med en ny och omodifierad installation av Dokuwiki.
- Du får antingen packa upp det nedladdade paketet på nytt, eller konsultera de kompletta
- <a href="http://wiki.splitbrain.org/wiki:install">instruktionerna för installation av Dokuwiki</a>';
-$lang['i_funcna'] = 'PHP-funktionen <code>%s</code> är inte tillgänglig. Kanske ditt webbhotell har avaktiverat den av någon anledning?';
-$lang['i_phpver'] = 'Din PHP-version <code>%s</code> är lägre än vad som krävs <code>%s</code>. Du behöver uppgradera din PHP-installation.';
-$lang['i_permfail'] = '<code>%s</code> är inte skrivbar av DokuWiki. Du behöver ändra filskyddet på den här katalogen!';
-$lang['i_confexists'] = '<code>%s</code> finns redan';
-$lang['i_writeerr'] = 'Kan inte skapa <code>%s</code>. Kontrollera filskyddet på kataloger/filer och skapa filen manuellt.';
-$lang['i_badhash'] = 'okänd eller ändrad dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - felaktig eller blank';
-$lang['i_success'] = 'Konfigurationen avslutades utan fel. Du kan radera filen install.php nu. Fortsätt till
- <a href="doku.php">din nya DokuWiki</a>.';
-$lang['i_failure'] = 'Fel uppstod vid skrivning av konfigurationsfilerna. Du kan behöva ordna till dem manuellt innan
- du kan använda <a href="doku.php">din nya DokuWiki</a>.';
-$lang['i_policy'] = 'Initial ACL-policy';
-$lang['i_pol0'] = 'Ãppen wiki (alla fÃ¥r läsa, skriva och ladda upp filer)';
-$lang['i_pol1'] = 'Publik wiki (alla får läsa, registrerade användare för skriva och ladda upp filer)';
-$lang['i_pol2'] = 'Sluten wiki (endast registrerade användare får läsa, skriva och ladda upp filer)';
-$lang['i_retry'] = 'Försök igen';
+<?php
+/**
+ * Swedish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Joaquim Homrighausen <joho at webbplatsen.se>
+ * @author Per Foreby <per at foreby.se>
+ * @author Nicklas Henriksson <nicklas[at]nihe.se>
+ * @author HÃ¥kan Sandell <hakan.sandell[at]mydata.se>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'Redigera sidan';
+$lang['btn_source'] = 'Visa källkod';
+$lang['btn_show'] = 'Visa sidan';
+$lang['btn_create'] = 'Skapa sidan';
+$lang['btn_search'] = 'Sök';
+$lang['btn_save'] = 'Spara';
+$lang['btn_preview'] = 'Granska';
+$lang['btn_top'] = 'Till början av sidan';
+$lang['btn_newer'] = '<< nyare';
+$lang['btn_older'] = 'äldre >>';
+$lang['btn_revs'] = 'Historik';
+$lang['btn_recent'] = 'Nyligen ändrat';
+$lang['btn_upload'] = 'Ladda upp';
+$lang['btn_cancel'] = 'Avbryt';
+$lang['btn_index'] = 'Index';
+$lang['btn_secedit'] = 'Redigera';
+$lang['btn_login'] = 'Logga in';
+$lang['btn_logout'] = 'Logga ut';
+$lang['btn_admin'] = 'Admin';
+$lang['btn_update'] = 'Uppdatera';
+$lang['btn_delete'] = 'Radera';
+$lang['btn_back'] = 'Tillbaka';
+$lang['btn_backlink'] = 'Tillbakalänkar';
+$lang['btn_backtomedia'] = 'Tillbaka till val av Mediafil';
+$lang['btn_subscribe'] = 'Prenumerera på ändringar';
+$lang['btn_unsubscribe'] = 'Säg upp prenumeration på ändringar';
+$lang['btn_subscribens'] = 'Prenumerera på namnrymdsändringar';
+$lang['btn_unsubscribens'] = 'Sluta prenumerera på namnrymdsändringar
+';
+$lang['btn_profile'] = 'Uppdatera profil';
+$lang['btn_reset'] = 'Ã
terställ';
+$lang['btn_resendpwd'] = 'Skicka nytt lösenord';
+$lang['btn_draft'] = 'Redigera utkast';
+$lang['btn_recover'] = 'Ã
terskapa utkast';
+$lang['btn_draftdel'] = 'Radera utkast';
+$lang['loggedinas'] = 'Inloggad som';
+$lang['user'] = 'Användarnamn';
+$lang['pass'] = 'Lösenord';
+$lang['newpass'] = 'Nytt lösenord';
+$lang['oldpass'] = 'Bekräfta nuvarande lösenord';
+$lang['passchk'] = 'en gång till';
+$lang['remember'] = 'Kom ihåg mig';
+$lang['fullname'] = 'Namm';
+$lang['email'] = 'E-post';
+$lang['register'] = 'Registrera';
+$lang['profile'] = 'Användarprofil';
+$lang['badlogin'] = 'Felaktigt användarnamn eller lösenord.';
+$lang['minoredit'] = 'Små ändringar';
+$lang['draftdate'] = 'Utkast automatiskt sparat';
+$lang['regmissing'] = 'Du måste fylla i alla fälten.';
+$lang['reguexists'] = 'Det finns redan en användare med det användarnamnet.';
+$lang['regsuccess'] = 'Användarkontot skapat, lösenordet har skickats via e-post.';
+$lang['regsuccess2'] = 'Användarkontot skapat.';
+$lang['regmailfail'] = 'Ett fel uppstod när ditt lösenord skulle skickas via e-post. Var god kontakta administratören!';
+$lang['regbadmail'] = 'Den angivna e-postadressen verkar vara ogiltig - om du anser detta felaktigt, var god kontakta administratören';
+$lang['regbadpass'] = 'De två angivna lösenorden är inte identiska. Försök igen.';
+$lang['regpwmail'] = 'Ditt DokuWikilösenord';
+$lang['reghere'] = 'Har du inte ett konto än? Skaffa ett';
+$lang['profna'] = 'Denna wiki stödjer inte ändringar av profiler';
+$lang['profnochange'] = 'Ingenting ändrades, gör ingenting.';
+$lang['profnoempty'] = 'Namn och e-postadress måste fyllas i.';
+$lang['profchanged'] = 'Användarprofilen uppdaterad.';
+$lang['pwdforget'] = 'Glömt ditt lösenord? Ordna ett nytt';
+$lang['resendna'] = 'Den här wikin stödjer inte utskick av lösenord.';
+$lang['resendpwd'] = 'Skicka nytt lösenord för';
+$lang['resendpwdmissing'] = 'Du måste fylla i alla fält.';
+$lang['resendpwdnouser'] = 'Den här användaren hittas inte i databasen.';
+$lang['resendpwdbadauth'] = 'Den här verifieringskoden är inte giltig. Kontrollera att du använde hela verifieringslänken.';
+$lang['resendpwdconfirm'] = 'En verifieringslänk har skickats med e-post.';
+$lang['resendpwdsuccess'] = 'Ditt nya lösenord har skickats med e-post.';
+$lang['txt_upload'] = 'Välj fil att ladda upp';
+$lang['txt_filename'] = 'Ladda upp som (ej obligatoriskt)';
+$lang['txt_overwrt'] = 'Skriv över befintlig fil';
+$lang['lockedby'] = 'LÃ¥st av';
+$lang['lockexpire'] = 'Lås upphör att gälla';
+$lang['willexpire'] = 'Ditt redigeringslås för detta dokument kommer snart att upphöra.\nFör att undvika versionskonflikter bör du förhandsgranska ditt dokument för att förlänga redigeringslåset.';
+$lang['notsavedyet'] = 'Det finns ändringar som inte är sparade.\nÃr du säker pÃ¥ att du vill fortsätta?';
+$lang['rssfailed'] = 'Ett fel uppstod när detta RSS-flöde skulle hämtas: ';
+$lang['nothingfound'] = 'Inga filer hittades.';
+$lang['mediaselect'] = 'Mediafiler';
+$lang['fileupload'] = 'Ladda upp mediafiler';
+$lang['uploadsucc'] = 'Uppladdningen lyckades';
+$lang['uploadfail'] = 'Uppladdningen misslyckades, fel filskydd?';
+$lang['uploadwrong'] = 'Uppladdning nekad. Filändelsen är inte tillåten!';
+$lang['uploadexist'] = 'Filen finns redan. Gjorde ingenting.';
+$lang['uploadbadcontent'] = 'Det uppladdade innehållet stämde inte överens med filändelsen %s.';
+$lang['uploadspam'] = 'Uppladdningen stoppades av spärrlistan för spam.';
+$lang['uploadxss'] = 'Uppladdningen stoppades på grund av eventuellt skadligt innehåll.';
+$lang['deletesucc'] = 'Filen "%s" har raderats.';
+$lang['deletefail'] = 'Kunde inte radera "%s" - kontrollera filskydd.';
+$lang['mediainuse'] = 'Filen "%s" har inte raderats - den används fortfarande.';
+$lang['namespaces'] = 'Namnrymder';
+$lang['mediafiles'] = 'Tillgängliga filer i';
+$lang['js']['keepopen'] = 'Lämna fönstret öppet efter val av fil';
+$lang['js']['hidedetails'] = 'Dölj detaljer';
+$lang['mediausage'] = 'Använd följande syntax för att referera till denna fil:';
+$lang['mediaview'] = 'Visa originalfilen';
+$lang['mediaroot'] = 'rot';
+$lang['mediaupload'] = 'Här kan du ladda upp en fil till den nuvarande namnrymden. För att skapa undernamnrymder, skriv dem före filnamnet under "Ladda upp som". Separera namnrymd och filnamn med kolon.';
+$lang['mediaextchange'] = 'Filändelsen ändrad från .%s till .%s!';
+$lang['reference'] = 'Referenser till';
+$lang['ref_inuse'] = 'Filen kan inte raderas eftersom den fortfarande används av följande sidor:';
+$lang['ref_hidden'] = 'Vissa referenser är på sidor som du inte har rätt att läsa';
+$lang['hits'] = 'Träffar';
+$lang['quickhits'] = 'Matchande sidnamn';
+$lang['toc'] = 'Innehållsförteckning';
+$lang['current'] = 'aktuell';
+$lang['yours'] = 'Din version';
+$lang['diff'] = 'visa skillnader mot aktuell version';
+$lang['diff2'] = 'Visa skillnader mellan valda versioner';
+$lang['line'] = 'Rad';
+$lang['breadcrumb'] = 'Spår';
+$lang['youarehere'] = 'Här är du';
+$lang['lastmod'] = 'Senast uppdaterad';
+$lang['by'] = 'av';
+$lang['deleted'] = 'raderad';
+$lang['created'] = 'skapad';
+$lang['restored'] = 'tidigare version återställd';
+$lang['external_edit'] = 'extern redigering';
+$lang['summary'] = 'Redigeringskommentar';
+$lang['mail_newpage'] = 'sida tillagd:';
+$lang['mail_changed'] = 'sida ändrad:';
+$lang['mail_new_user'] = 'Ny användare:';
+$lang['mail_upload'] = 'fil uppladdad:';
+$lang['nosmblinks'] = 'Länkning till Windowsresurser fungerar bara med Microsofts Internet Explorer.\nDu kan klippa och klistra in länken om du använder en annan webbläsare än MSIE..';
+$lang['qb_alert'] = 'Ange den text du vill formattera.\nDen kommer att läggas till i slutet av dokumentet.';
+$lang['qb_bold'] = 'Fet text';
+$lang['qb_italic'] = 'Kursiv text';
+$lang['qb_underl'] = 'Understruken text';
+$lang['qb_code'] = 'Kodtext';
+$lang['qb_strike'] = 'Ãverstruken text';
+$lang['qb_h1'] = 'Rubrik nivå 1';
+$lang['qb_h2'] = 'Rubrik nivå 2';
+$lang['qb_h3'] = 'Rubrik nivå 3';
+$lang['qb_h4'] = 'Rubrik nivå 4';
+$lang['qb_h5'] = 'Rubrik nivå 5';
+$lang['qb_link'] = 'Intern Länk';
+$lang['qb_extlink'] = 'Extern Länk';
+$lang['qb_hr'] = 'Horisontell linje';
+$lang['qb_ol'] = 'Punkt i sorterad lista';
+$lang['qb_ul'] = 'Punkt i osorterad lista';
+$lang['qb_media'] = 'Lägg till bilder och andra filer';
+$lang['qb_sig'] = 'Infoga signatur';
+$lang['qb_smileys'] = 'Smileys';
+$lang['qb_chars'] = 'Specialtecken';
+$lang['del_confirm'] = 'Vill du verkligen radera?';
+$lang['admin_register'] = 'Lägg till ny användare';
+$lang['metaedit'] = 'Redigera metadata';
+$lang['metasaveerr'] = 'Skrivning av metadata misslyckades';
+$lang['metasaveok'] = 'Metadata sparad';
+$lang['img_backto'] = 'Tillbaka till';
+$lang['img_title'] = 'Rubrik';
+$lang['img_caption'] = 'Bildtext';
+$lang['img_date'] = 'Datum';
+$lang['img_fname'] = 'Filnamn';
+$lang['img_fsize'] = 'Storlek';
+$lang['img_artist'] = 'Fotograf';
+$lang['img_copyr'] = 'Copyright';
+$lang['img_format'] = 'Format';
+$lang['img_camera'] = 'Kamera';
+$lang['img_keywords'] = 'Nyckelord';
+$lang['subscribe_success'] = 'Lade till %s i prenumerationslistan för %s';
+$lang['subscribe_error'] = 'Fel vid tillägg av %s i prenumerationslistan för %s';
+$lang['subscribe_noaddress'] = 'Det finns ingen adress knuten till ditt konto, det går inte att lägga till dig i prenumerationslistan';
+$lang['unsubscribe_success'] = 'Tog bort %s från prenumerationslistan för %s';
+$lang['unsubscribe_error'] = 'Fel vid borttagning %s från prenumerationslistan list för %s';
+$lang['authmodfailed'] = 'Felaktiga inställningar för användarautentisering. Var vänlig meddela wikiadministratören.';
+$lang['authtempfail'] = 'Tillfälligt fel på användarautentisering. Om felet kvarstår, var vänlig meddela wikiadministratören.';
+$lang['i_chooselang'] = 'Välj språk';
+$lang['i_installer'] = 'Installation av DokuWiki';
+$lang['i_wikiname'] = 'Wikins namn';
+$lang['i_enableacl'] = 'Aktivera behörighetslistan (ACL) (rekommenderas)';
+$lang['i_superuser'] = 'Användarnamn för administratören';
+$lang['i_problems'] = 'Installationsprogrammet hittade några problem som visas nedan. Du kan inte fortsätta innan du har fixat dem.';
+$lang['i_modified'] = 'Av säkerhetsskäl fungerar det här skriptet bara med en ny och omodifierad installation av Dokuwiki.
+ Du får antingen packa upp det nedladdade paketet på nytt, eller konsultera de kompletta
+ <a href="http://wiki.splitbrain.org/wiki:install">instruktionerna för installation av Dokuwiki</a>';
+$lang['i_funcna'] = 'PHP-funktionen <code>%s</code> är inte tillgänglig. Kanske ditt webbhotell har avaktiverat den av någon anledning?';
+$lang['i_phpver'] = 'Din PHP-version <code>%s</code> är lägre än vad som krävs <code>%s</code>. Du behöver uppgradera din PHP-installation.';
+$lang['i_permfail'] = '<code>%s</code> är inte skrivbar av DokuWiki. Du behöver ändra filskyddet på den här katalogen!';
+$lang['i_confexists'] = '<code>%s</code> finns redan';
+$lang['i_writeerr'] = 'Kan inte skapa <code>%s</code>. Kontrollera filskyddet på kataloger/filer och skapa filen manuellt.';
+$lang['i_badhash'] = 'okänd eller ändrad dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - felaktig eller blank';
+$lang['i_success'] = 'Konfigurationen avslutades utan fel. Du kan radera filen install.php nu. Fortsätt till
+ <a href="doku.php">din nya DokuWiki</a>.';
+$lang['i_failure'] = 'Fel uppstod vid skrivning av konfigurationsfilerna. Du kan behöva ordna till dem manuellt innan
+ du kan använda <a href="doku.php">din nya DokuWiki</a>.';
+$lang['i_policy'] = 'Initial ACL-policy';
+$lang['i_pol0'] = 'Ãppen wiki (alla fÃ¥r läsa, skriva och ladda upp filer)';
+$lang['i_pol1'] = 'Publik wiki (alla får läsa, registrerade användare för skriva och ladda upp filer)';
+$lang['i_pol2'] = 'Sluten wiki (endast registrerade användare får läsa, skriva och ladda upp filer)';
+$lang['i_retry'] = 'Försök igen';
Modified: site/trunk/www-root/wiki/inc/lang/sv/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Sidan låst ======
-
-Den här sidan är för närvarande låst för redigering av en annan användare.
-Du måste vänta tills den användaren är klar med sin redigering, eller tills
-dess att dokumentlåset upphör att gälla.
+====== Sidan låst ======
+
+Den här sidan är för närvarande låst för redigering av en annan användare.
+Du måste vänta tills den användaren är klar med sin redigering, eller tills
+dess att dokumentlåset upphör att gälla.
Modified: site/trunk/www-root/wiki/inc/lang/sv/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Logga in ======
-
-Du är inte inloggad! Ange ditt användarnamn och lösenord i formuläret nedan
-för att logga in. Stöd för cookies måste vara aktiverat i din webbläsare
-för att du skall kunna logga in.
-
+====== Logga in ======
+
+Du är inte inloggad! Ange ditt användarnamn och lösenord i formuläret nedan
+för att logga in. Stöd för cookies måste vara aktiverat i din webbläsare
+för att du skall kunna logga in.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-En sida i din DokuWiki har lagts till eller ändrats. Här är detaljerna:
-
-Datum : @DATE@
-Webbläsare : @BROWSER@
-IP-adress : @IPADDRESS@
-Datornamn : @HOSTNAME@
-Tidigare version : @OLDPAGE@
-Aktuell version : @NEWPAGE@
-Redigeringskommentar : @SUMMARY@
-Användare : @USER@
-
- at DIFF@
-
-
---
-Detta meddelande har skapats av DokuWiki på
- at DOKUWIKIURL@
+En sida i din DokuWiki har lagts till eller ändrats. Här är detaljerna:
+
+Datum : @DATE@
+Webbläsare : @BROWSER@
+IP-adress : @IPADDRESS@
+Datornamn : @HOSTNAME@
+Tidigare version : @OLDPAGE@
+Aktuell version : @NEWPAGE@
+Redigeringskommentar : @SUMMARY@
+Användare : @USER@
+
+ at DIFF@
+
+
+--
+Detta meddelande har skapats av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sv/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Det här ämnet finns inte ännu ======
-
-Du har följt en länk till ett ämne som inte finns ännu. Du kan skapa det genom
-att klicka på ''Skapa den här sidan''.
+====== Det här ämnet finns inte ännu ======
+
+Du har följt en länk till ett ämne som inte finns ännu. Du kan skapa det genom
+att klicka på ''Skapa den här sidan''.
Modified: site/trunk/www-root/wiki/inc/lang/sv/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Det finns ingen sådan version ======
-
-Den angivna versionen finns inte. Använd ''Historik'' för en förteckning
-över de versioner som finns av detta dokument.
-
+====== Det finns ingen sådan version ======
+
+Den angivna versionen finns inte. Använd ''Historik'' för en förteckning
+över de versioner som finns av detta dokument.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-Hej @FULLNAME@!
-
-Här är dina användaruppgifter för @TITLE@ på @DOKUWIKIURL@
-
-Användarnamn : @LOGIN@
-Lösenord : @PASSWORD@
-
---
-Detta meddelande har skapats av DokuWiki på
- at DOKUWIKIURL@
+Hej @FULLNAME@!
+
+Här är dina användaruppgifter för @TITLE@ på @DOKUWIKIURL@
+
+Användarnamn : @LOGIN@
+Lösenord : @PASSWORD@
+
+--
+Detta meddelande har skapats av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sv/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Förhandsgranskning======
-
-Detta är en förhandstitt på hur din text kommer att se ut när den visas. Kom
-ihåg: Den är **inte sparad** ännu!
-
+======Förhandsgranskning======
+
+Detta är en förhandstitt på hur din text kommer att se ut när den visas. Kom
+ihåg: Den är **inte sparad** ännu!
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Hej @FULLNAME@!
-
-Någon har bett om ett nytt lösenord för ditt konto på @TITLE@
-(@DOKUWIKIURL@)
-
-Om det inte var du som bad om ett nytt lösenord kan du helt
-enkelt ignorera det här brevet.
-
-För att bekräfta att förfrågan verkligen kom från dig, var vänlig
-och använd följande länk.
-
- at CONFIRM@
-
---
-Detta meddelande har skapats av DokuWiki på
- at DOKUWIKIURL@
+Hej @FULLNAME@!
+
+Någon har bett om ett nytt lösenord för ditt konto på @TITLE@
+(@DOKUWIKIURL@)
+
+Om det inte var du som bad om ett nytt lösenord kan du helt
+enkelt ignorera det här brevet.
+
+För att bekräfta att förfrågan verkligen kom från dig, var vänlig
+och använd följande länk.
+
+ at CONFIRM@
+
+--
+Detta meddelande har skapats av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sv/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-Denna sida är skrivskyddad. Du kan titta på källkoden, men inte ändra den.
-Kontakta administratören om du anser att du bör kunna ändra sidan.
-
+Denna sida är skrivskyddad. Du kan titta på källkoden, men inte ändra den.
+Kontakta administratören om du anser att du bör kunna ändra sidan.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Senaste ändringarna======
-
-Följande sidor/dokument har nyligen uppdaterats.
-
-
+======Senaste ändringarna======
+
+Följande sidor/dokument har nyligen uppdaterats.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Registrera dig som användare ======
-
-Fyll i all information som efterfrågas i formuläret nedan för att skapa ett
-nytt konto i denna wiki. Var särskilt noga med att ange en **giltig
-e-postadress** - om du inte blir ombedd att ange ett lösenord här kommer ett
-nytt lösenord att skickas till den adressen. Användarnamnet skall vara ett
-giltigt [[doku>wiki:pagename|sidnamn]].
-
+====== Registrera dig som användare ======
+
+Fyll i all information som efterfrågas i formuläret nedan för att skapa ett
+nytt konto i denna wiki. Var särskilt noga med att ange en **giltig
+e-postadress** - om du inte blir ombedd att ange ett lösenord här kommer ett
+nytt lösenord att skickas till den adressen. Användarnamnet skall vara ett
+giltigt [[doku>wiki:pagename|sidnamn]].
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-En ny användare har registrerat sig. Här är detaljerna:
-
-Användarnamn : @NEWUSER@
-Namn : @NEWNAME@
-E-post : @NEWEMAIL@
-
-Datum : @DATE@
-Webbläsare : @BROWSER@
-IP-adress : @IPADDRESS@
-Datornamn : @HOSTNAME@
-
---
-Detta meddelande har skapats av DokuWiki på
- at DOKUWIKIURL@
+En ny användare har registrerat sig. Här är detaljerna:
+
+Användarnamn : @NEWUSER@
+Namn : @NEWNAME@
+E-post : @NEWEMAIL@
+
+Datum : @DATE@
+Webbläsare : @BROWSER@
+IP-adress : @IPADDRESS@
+Datornamn : @HOSTNAME@
+
+--
+Detta meddelande har skapats av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sv/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Skicka nytt lösenord ======
-
-Fyll i ditt användarnamn i formuläret nedan för att få ett nytt lösenord till
-ditt konto i denna wiki. En länk för verifiering kommer att skickas till din
-registrerade e-postadress.
-
+====== Skicka nytt lösenord ======
+
+Fyll i ditt användarnamn i formuläret nedan för att få ett nytt lösenord till
+ditt konto i denna wiki. En länk för verifiering kommer att skickas till din
+registrerade e-postadress.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Historik======
-
-Här visas tidigare versioner av detta dokument. För att återställa
-dokumentet till en tidigare version, välj den önskade versionen nedan, klicka
-på ''Redigera sida'' och spara sedan dokumentet.
-
+======Historik======
+
+Här visas tidigare versioner av detta dokument. För att återställa
+dokumentet till en tidigare version, välj den önskade versionen nedan, klicka
+på ''Redigera sida'' och spara sedan dokumentet.
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Sök======
-
-Nedan ser du resultatet av sökningen. Om du inte hittar det du letar
-efter, så kan du skapa eller redigera sidan med någon av knapparna.
-
-=====Resultat=====
+======Sök======
+
+Nedan ser du resultatet av sökningen. Om du inte hittar det du letar
+efter, så kan du skapa eller redigera sidan med någon av knapparna.
+
+=====Resultat=====
Modified: site/trunk/www-root/wiki/inc/lang/sv/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Detta är en gammal version av dokumentet!**
-----
+**Detta är en gammal version av dokumentet!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/sv/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,129 +1,129 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
-
-# Följande svenska stoppord kommer från
-# http://snowball.tartarus.org/algorithms/swedish/stop.txt. Ord kortare än tre
-# bokstäver har tagits bort (se kommentaren ovan) Se även
-# http://www.cling.gu.se/theses/2004/cl0sknub_cl0tsven.pdf. Vi behåller de
-# engelska orden eftersom det är rätt vanligt med engelska texter.
-och
-det
-att
-jag
-hon
-som
-han
-den
-med
-var
-sig
-för
-till
-men
-ett
-hade
-icke
-mig
-henne
-sin
-har
-inte
-hans
-honom
-skulle
-hennes
-där
-min
-man
-vid
-kunde
-något
-från
-när
-efter
-upp
-dem
-vara
-vad
-över
-dig
-kan
-sina
-här
-mot
-alla
-under
-någon
-eller
-allt
-mycket
-sedan
-denna
-själv
-detta
-utan
-varit
-hur
-ingen
-mitt
-bli
-blev
-oss
-din
-dessa
-några
-deras
-blir
-mina
-samma
-vilken
-sådan
-vår
-blivit
-dess
-inom
-mellan
-sådant
-varför
-varje
-vilka
-ditt
-vem
-vilket
-sitta
-sådana
-vart
-dina
-vars
-vårt
-våra
-ert
-era
-vilkas
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
+
+# Följande svenska stoppord kommer från
+# http://snowball.tartarus.org/algorithms/swedish/stop.txt. Ord kortare än tre
+# bokstäver har tagits bort (se kommentaren ovan) Se även
+# http://www.cling.gu.se/theses/2004/cl0sknub_cl0tsven.pdf. Vi behåller de
+# engelska orden eftersom det är rätt vanligt med engelska texter.
+och
+det
+att
+jag
+hon
+som
+han
+den
+med
+var
+sig
+för
+till
+men
+ett
+hade
+icke
+mig
+henne
+sin
+har
+inte
+hans
+honom
+skulle
+hennes
+där
+min
+man
+vid
+kunde
+något
+från
+när
+efter
+upp
+dem
+vara
+vad
+över
+dig
+kan
+sina
+här
+mot
+alla
+under
+någon
+eller
+allt
+mycket
+sedan
+denna
+själv
+detta
+utan
+varit
+hur
+ingen
+mitt
+bli
+blev
+oss
+din
+dessa
+några
+deras
+blir
+mina
+samma
+vilken
+sådan
+vår
+blivit
+dess
+inom
+mellan
+sådant
+varför
+varje
+vilka
+ditt
+vem
+vilket
+sitta
+sådana
+vart
+dina
+vars
+vårt
+våra
+ert
+era
+vilkas
Modified: site/trunk/www-root/wiki/inc/lang/sv/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-Hej!
-
-Sidan @PAGE@ i wikin @TITLE@ har ändrats.
-Här är ändringarna:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-För att säga upp prenumerationen på den här sidan,
-logga in i wikin på
- at DOKUWIKIURL@ och gå till
- at NEWPAGE@
-där du väljer 'Säg upp prenumeration på ändringar'.
-
---
-Detta meddelande har skapats av DokuWiki på
- at DOKUWIKIURL@
+Hej!
+
+Sidan @PAGE@ i wikin @TITLE@ har ändrats.
+Här är ändringarna:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+För att säga upp prenumerationen på den här sidan,
+logga in i wikin på
+ at DOKUWIKIURL@ och gå till
+ at NEWPAGE@
+där du väljer 'Säg upp prenumeration på ändringar'.
+
+--
+Detta meddelande har skapats av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sv/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Uppdatera din användarprofil ======
-
-Du behöver bara fylla i de fält som du vill ändra. Du kan inte ändra ditt
-användarnamn.
-
-
+====== Uppdatera din användarprofil ======
+
+Du behöver bara fylla i de fält som du vill ändra. Du kan inte ändra ditt
+användarnamn.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/sv/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-En fil har laddats upp till din DokuWiki. Här är detaljerna:
-
-Fil : @MEDIA@
-Datum : @DATE@
-Webbläsare : @BROWSER@
-IP-adress : @IPADDRESS@
-Datornamn : @HOSTNAME@
-Storlek : @SIZE@
-MIME-typ : @MIME@
-Användare : @USER@
-
---
-Detta meddelande har skapats av DokuWiki på
- at DOKUWIKIURL@
+En fil har laddats upp till din DokuWiki. Här är detaljerna:
+
+Fil : @MEDIA@
+Datum : @DATE@
+Webbläsare : @BROWSER@
+IP-adress : @IPADDRESS@
+Datornamn : @HOSTNAME@
+Storlek : @SIZE@
+MIME-typ : @MIME@
+Användare : @USER@
+
+--
+Detta meddelande har skapats av DokuWiki på
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/sv/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/sv/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/sv/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-======Stoppade SPAM======
-
-Dina ändringar har **inte** sparats på grund av att de innehåller ett eller
-flera ord som spärrats. Om du har försökt att spara skräp, s k ''spam'' --
-Fyyy på dig! Om du anser att det här beror på ett fel, kontakta wikins
-administratör.
-
+======Stoppade SPAM======
+
+Dina ändringar har **inte** sparats på grund av att de innehåller ett eller
+flera ord som spärrats. Om du har försökt att spara skräp, s k ''spam'' --
+Fyyy på dig! Om du anser att det här beror på ett fel, kontakta wikins
+administratör.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Yönetim ======
-
-AÅaÄıda DokuWiki için yapılabilecek yönetim iÅleri
-vardır.
+====== Yönetim ======
+
+AÅaÄıda DokuWiki için yapılabilecek yönetim iÅleri
+vardır.
Modified: site/trunk/www-root/wiki/inc/lang/tr/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Geri linkler ======
-
-Bu bu sayfaya link veren sayfaların bir listesidir.
-
+====== Geri linkler ======
+
+Bu bu sayfaya link veren sayfaların bir listesidir.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-====== Yeni versiyon mevcut ======
-
-DeÄiÅtirdiÄin dökümanın daha yeni bir versiyonu mevcut. Bu, sen deÄiÅtirirken
-baÅka bir kullanıcının dökümanı deÄiÅtirmesi halinde olur.
-
-AÅaÄıda gösterilen farkları dikatlice süz, sonra hangi versiyonu koruyacaÄına
-karar ver. EÄer ''kaydeti'' seçersen, senin versiyonun kaydedilir. Mevcut
-versiyonu korumak için ''iptale'' tıkla.
-
+====== Yeni versiyon mevcut ======
+
+DeÄiÅtirdiÄin dökümanın daha yeni bir versiyonu mevcut. Bu, sen deÄiÅtirirken
+baÅka bir kullanıcının dökümanı deÄiÅtirmesi halinde olur.
+
+AÅaÄıda gösterilen farkları dikatlice süz, sonra hangi versiyonu koruyacaÄına
+karar ver. EÄer ''kaydeti'' seçersen, senin versiyonun kaydedilir. Mevcut
+versiyonu korumak için ''iptale'' tıkla.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Yetki reddedildi======
-
-Maalesef devam etmek için yeterli hakkın yok. GiriÅ yapmayı unutmuÅ
-olabilir misin?
-
+======Yetki reddedildi======
+
+Maalesef devam etmek için yeterli hakkın yok. GiriÅ yapmayı unutmuÅ
+olabilir misin?
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Farklar======
-
-Bu sayfanın seçili sürümü ile mevcut versiyonu arasındaki farkları
-gösterir.
-
+======Farklar======
+
+Bu sayfanın seçili sürümü ile mevcut versiyonu arasındaki farkları
+gösterir.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== Taslak Dosyası Bulundu ======
-
-Bu sayfadaki en son oturumunuz düzgün olarak tamamlanmamıÅ. DokuWiki otomatik olarak bir taslak kaydetmiÅ olduÄu için çalıÅmanıza devam edebilirsiniz. AÅaÄıda en son oturumunuzda kaydedilmiÅ olan taslaÄı görebilirsiniz.
-
+====== Taslak Dosyası Bulundu ======
+
+Bu sayfadaki en son oturumunuz düzgün olarak tamamlanmamıÅ. DokuWiki otomatik olarak bir taslak kaydetmiÅ olduÄu için çalıÅmanıza devam edebilirsiniz. AÅaÄıda en son oturumunuzda kaydedilmiÅ olan taslaÄı görebilirsiniz.
+
Bu taslaÄı //geri getirebilir//, //silebilir// veya düzenleme sürecinden //vazgeçebilirsiniz//.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/tr/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-Sayfayı deÄiÅtir ve ''Kaydete'' bas. Wiki sözdizimi için [[wiki:syntax]]'a
-bak. Lütfen sayfayı sadece eÄer **geliÅtirebiliyorsan** deÄiÅtir. EÄer
-testler yapmak istiyorsan, [[playground:playground]] adresini kullan.
-
+Sayfayı deÄiÅtir ve ''Kaydete'' bas. Wiki sözdizimi için [[wiki:syntax]]'a
+bak. Lütfen sayfayı sadece eÄer **geliÅtirebiliyorsan** deÄiÅtir. EÄer
+testler yapmak istiyorsan, [[playground:playground]] adresini kullan.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-**Sayfanın eski bir sürümünü yükledin!** EÄer kaydedersen, bu veriyle yeni
-bir versiyon oluÅturacaksın.
-----
+**Sayfanın eski bir sürümünü yükledin!** EÄer kaydedersen, bu veriyle yeni
+bir versiyon oluÅturacaksın.
+----
Modified: site/trunk/www-root/wiki/inc/lang/tr/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== İndeks ======
-
-Bu mevcut tüm sayfaların [[doku>wiki:namespaces|isim alanlarına]]
-göre sıralı bir indeksidir.
-
+====== İndeks ======
+
+Bu mevcut tüm sayfaların [[doku>wiki:namespaces|isim alanlarına]]
+göre sıralı bir indeksidir.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-<p>Bu sayfa <a href="http://wiki.splitbrain.org">Dokuwiki</a> kurmanıza yardımcı olmaktadır.Kurulum hakkında bilgi sahibi olmak için <a href="http://wiki.splitbrain.org/wiki:installer">bu sayfayı</a> ziyaret edebilirsiniz.</p>
-
-<p>DokuWiki wiki sayfalarını ve wiki sayfalarına iliÅkin verileri (resimler, arama indeksi, geçmiÅ sürümler) dosyalarda tutar. DokuWikiyi sorunsuz olarak kullanmak için bu dosyaların bulunduÄu dizinlere <b>mutlaka</b> yazma izniniz olması gereklidir. Bu kurulum betiÄi yazma izinlerini ayarlayamamaktadır. İzinleri shell, FTP veya kontrol paneliniz (CPanel, Plesk vs.) aracılıÄı ile düzenleyebilirsiniz.</p>
-
-<p>Kurulum betiÄi <acronym title="access control list">ACL</acronym>'yi otomatik olarak ayarlamaktadır. Böylece yönetici izinleri belirlenip, DokuWiki kullanımı kolaylaÅtırılmaktadır.</p>
-
-<p>Deneyimli kullanıcılar <a href="http://wiki.splitbrain.org/wiki:install">bu sayfayı </a>
+<p>Bu sayfa <a href="http://wiki.splitbrain.org">Dokuwiki</a> kurmanıza yardımcı olmaktadır.Kurulum hakkında bilgi sahibi olmak için <a href="http://wiki.splitbrain.org/wiki:installer">bu sayfayı</a> ziyaret edebilirsiniz.</p>
+
+<p>DokuWiki wiki sayfalarını ve wiki sayfalarına iliÅkin verileri (resimler, arama indeksi, geçmiÅ sürümler) dosyalarda tutar. DokuWikiyi sorunsuz olarak kullanmak için bu dosyaların bulunduÄu dizinlere <b>mutlaka</b> yazma izniniz olması gereklidir. Bu kurulum betiÄi yazma izinlerini ayarlayamamaktadır. İzinleri shell, FTP veya kontrol paneliniz (CPanel, Plesk vs.) aracılıÄı ile düzenleyebilirsiniz.</p>
+
+<p>Kurulum betiÄi <acronym title="access control list">ACL</acronym>'yi otomatik olarak ayarlamaktadır. Böylece yönetici izinleri belirlenip, DokuWiki kullanımı kolaylaÅtırılmaktadır.</p>
+
+<p>Deneyimli kullanıcılar <a href="http://wiki.splitbrain.org/wiki:install">bu sayfayı </a>
edebilir ve <a href="http://wiki.splitbrain.org/wiki:config">bu sayfa yardımıyla</a> yapılandırma hakkında ekstra bilgi sahibi olabilir.</p>
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/tr/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,153 +1,153 @@
-<?php
-/**
- * turkish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Selim FarsakoÄlu <farsakogluselim at yahoo.de>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';//“
-$lang['doublequoteclosing'] = 'â';//”
-$lang['singlequoteopening'] = 'â';//‘
-$lang['singlequoteclosing'] = 'â';//’
-
-$lang['btn_edit'] = 'Sayfayı deÄiÅtir';
-$lang['btn_source'] = 'KaynaÄı göster';
-$lang['btn_show'] = 'Sayfayı göster';
-$lang['btn_create'] = 'Bu sayfayı oluÅtur';
-$lang['btn_search'] = 'Ara';
-$lang['btn_save'] = 'Kaydet';
-$lang['btn_preview']= 'Ãnizleme';
-$lang['btn_top'] = 'BaÅa dön';
-$lang['btn_newer'] = '<< daha yeniler';
-$lang['btn_older'] = 'daha eskiler >>';
-$lang['btn_revs'] = 'Eski sürümler';
-$lang['btn_recent'] = 'En son deÄiÅiklikler';
-$lang['btn_upload'] = 'Yükle';
-$lang['btn_cancel'] = 'İptal';
-$lang['btn_index'] = 'İndeks';
-$lang['btn_secedit']= 'DeÄiÅtir';
-$lang['btn_login'] = 'GiriÅ yap';
-$lang['btn_logout'] = 'ÃıkıŠyap';
-$lang['btn_admin'] = 'Yönetici';
-$lang['btn_update'] = 'Güncelle';
-$lang['btn_delete'] = 'Sil';
-$lang['btn_back'] = 'Geri';
-$lang['btn_backlink'] = "Geri linkler";
-$lang['btn_backtomedia'] = 'Ãokluortam dosyası seçimine dön';
-$lang['btn_subscribe'] = 'DeÄiÅikliklere kaydol';
-$lang['btn_unsubscribe'] = 'DeÄiÅikliklerden çık';
-
-$lang['loggedinas'] = 'GiriÅ ismi';
-$lang['user'] = 'Kullanıcı ismi';
-$lang['pass'] = 'Åifre';
-$lang['passchk'] = 'tekrarla';
-$lang['remember'] = 'Beni hatırla';
-$lang['fullname'] = 'Tam isim';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'Kayıt ol';
-$lang['badlogin'] = 'Maalesef kullanıcı adı veya Åifre yanlıŠoldu.';
-
-$lang['regmissing'] = 'Lütfen tüm alanları doldur.';
-$lang['reguexists'] = 'Maalesef bu isimle bir kullanıcı zaten mevcut.';
-$lang['regsuccess'] = 'Kullanıcı oluÅturuldu ve Åifre adresine maillendi.';
-$lang['regsuccess2']= 'Kullanıcı oluÅturuldu.';
-$lang['regmailfail']= 'Åifre mailini yollarken bir hata oluÅtu galiba. Lütfen yönetici ile kontaÄa geç!';
-$lang['regbadmail'] = 'Verilen e-mail adresi geçersiz sanırım - bunun sence bir hataysa adminle kontaÄa geç.';
-$lang['regbadpass'] = 'Åifreler birbirini tumuyor. Lütfen tekrar dene.';
-$lang['regpwmail'] = 'DokuWiki Åifren';
-$lang['reghere'] = 'Daha hesabın yok mu? Hemen bir tane açtır!';
-
-$lang['txt_upload'] = 'Yüklenecek dosyayı seç';
-$lang['txt_filename'] = 'Wiki ismini gir (mecburi deÄil)';
-$lang['txt_overwrt'] = 'Mevcut dosyanın üstüne yaz';
-$lang['lockedby'] = 'Åu an Åunun tarafından kilitli:';
-$lang['lockexpire'] = 'Kilitin açılma tarihi';
-$lang['willexpire'] = 'Bu sayfayı deÄiÅtirme kilidinin bir dakikaya kadar süresi geçiyor.\nÃatıÅmaları önlemek için önizleme tuÅunu kullanarak kilit sayacını sıfırla.';
-
-$lang['notsavedyet'] = 'KaybedilmemiÅ deÄiÅiklikler kaybolacak.\nDevam edeyim mi?';
-
-$lang['rssfailed'] = 'Bu beslemeyi çekerken hata oluÅtu: ';
-$lang['nothingfound']= 'Hiçbir Åey yok.';
-
-$lang['mediaselect'] = 'Ãokluortam dosyası seçimi';
-$lang['fileupload'] = 'Ãokluortam dosyası yükleme';
-$lang['uploadsucc'] = 'Yükleme tamam';
-$lang['uploadfail'] = 'Yükleme baÅarısız. Yetki hatssı olabilir mi?';
-$lang['uploadwrong'] = 'Yükleme engellendi. Bu dosya uzantısı yasak!';
-$lang['uploadexist'] = 'Dosya zaten var. Hiçbir Åey yapılmadı.';
-$lang['deletesucc'] = '"%s" dosyası silindi.';
-$lang['deletefail'] = '"%s" silinemedi - yetkileri kontrol et.';
-$lang['mediainuse'] = '"%s" dosyası silinmedi, hala kullanımda.';
-$lang['namespaces'] = 'İsimalanları';
-$lang['mediafiles'] = 'Åurda kullanıma hazır dosyalar:';
-
-$lang['reference'] = 'Åunun için referanslar:';
-$lang['ref_inuse'] = 'Dosya silinemiyor, çünkü Åu sayfalar tarafından hala kullanımda:';
-$lang['ref_hidden'] = 'Bazı referanslar okuma yetkin olmayan sayfalarda';
-
-$lang['hits'] = 'Bulunanlar';
-$lang['quickhits'] = 'Uyan sayfalar';
-$lang['toc'] = 'Fihrist';
-$lang['current'] = 'mevcut';
-$lang['yours'] = 'Senin versiyonun';
-$lang['diff'] = 'bu versiyonla farkları göster';
-$lang['line'] = 'Satır';
-$lang['breadcrumb'] = 'İz';
-$lang['lastmod'] = 'Son deÄiÅtirilme';
-$lang['by'] = 'DeÄiÅtiren:';
-$lang['deleted'] = 'silinme';
-$lang['created'] = 'oluÅturma';
-$lang['restored'] = 'eski sürüme çevrilme';
-$lang['summary'] = 'DeÄiÅtirme özeti';
-
-$lang['mail_newpage'] = 'sayfa eklenme:';
-$lang['mail_changed'] = 'sayfa deÄiÅtirilme:';
-
-$lang['nosmblinks'] = 'Windows paylaÅımlarına link verme sadece IE\'de çalıÅır.\nAma linki her zaman kopyala-yapıÅtur yapabilirsin.';
-
-$lang['qb_alert'] = 'Lütfen biçimlendirmek istediÄin yazıyı gir.\nSayfanın sonuna eklenecektir.';
-$lang['qb_bold'] = 'Kalın Yazı';
-$lang['qb_italic'] = 'EÄik Yazı';
-$lang['qb_underl'] = 'Altı çizili Yazı';
-$lang['qb_code'] = 'Kod haline getir';
-$lang['qb_strike'] = 'Ortası çizili Yazı';
-$lang['qb_h1'] = '1. Seviye BaÅlık';
-$lang['qb_h2'] = 'Seviye BaÅlık';
-$lang['qb_h3'] = '2. Seviye BaÅlık';
-$lang['qb_h4'] = '3. Seviye BaÅlık';
-$lang['qb_h5'] = '4. Seviye BaÅlık';
-$lang['qb_link'] = 'İç BaÄlantı';
-$lang['qb_extlink'] = 'DıŠBaÄlantı';
-$lang['qb_hr'] = 'Yatay Ãizgi';
-$lang['qb_ol'] = 'Sıralı liste';
-$lang['qb_ul'] = 'Sırasız liste';
-$lang['qb_media'] = 'Resim ve baÅka dosyalar ekle';
-$lang['qb_sig'] = 'İmza Ekle';
-
-$lang['del_confirm']= 'Bu giriÅi sil?';
-$lang['admin_register']= 'Yeni kullanıcı ekle...';
-
-$lang['metaedit'] = 'Metaverileri DeÄiÅtir';
-$lang['metasaveerr'] = 'Metaveri yazma baÅarısız ';
-$lang['metasaveok'] = 'Metaveri kaydedildi';
-$lang['img_backto'] = 'Åuna dön:';
-$lang['img_title'] = 'baÅlık';
-$lang['img_caption'] = 'Serlevha';
-$lang['img_date'] = 'Tarih';
-$lang['img_fname'] = 'Dosya Adı';
-$lang['img_fsize'] = 'Boyut';
-$lang['img_artist'] = 'FotoÄrafçı';
-$lang['img_copyr'] = 'Telif Hakkı';
-$lang['img_format'] = 'Biçim';
-$lang['img_camera'] = 'FotoÄraf Makinası';
-$lang['img_keywords']= 'Anahtar Sözcükler';
-
-$lang['subscribe_success'] = '%s, %s\'in abonelik listesine eklendi';
-$lang['subscribe_error'] = '%s; %s\'in abonelik listesine eklenirken hata oluÅtu';
-$lang['subscribe_noaddress']= 'GiriÅ bilgilerinizle iliÅkili bir adres yok, abonelik listesine eklenemezsiniz';
-$lang['unsubscribe_success']= '%s, %s\'in abonelik listesinden çıkartıldı';
-$lang['unsubscribe_error'] = '%s, %s\'in listesinden çıkartılırken hata oluÅtu';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * turkish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Selim FarsakoÄlu <farsakogluselim at yahoo.de>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';//“
+$lang['doublequoteclosing'] = 'â';//”
+$lang['singlequoteopening'] = 'â';//‘
+$lang['singlequoteclosing'] = 'â';//’
+
+$lang['btn_edit'] = 'Sayfayı deÄiÅtir';
+$lang['btn_source'] = 'KaynaÄı göster';
+$lang['btn_show'] = 'Sayfayı göster';
+$lang['btn_create'] = 'Bu sayfayı oluÅtur';
+$lang['btn_search'] = 'Ara';
+$lang['btn_save'] = 'Kaydet';
+$lang['btn_preview']= 'Ãnizleme';
+$lang['btn_top'] = 'BaÅa dön';
+$lang['btn_newer'] = '<< daha yeniler';
+$lang['btn_older'] = 'daha eskiler >>';
+$lang['btn_revs'] = 'Eski sürümler';
+$lang['btn_recent'] = 'En son deÄiÅiklikler';
+$lang['btn_upload'] = 'Yükle';
+$lang['btn_cancel'] = 'İptal';
+$lang['btn_index'] = 'İndeks';
+$lang['btn_secedit']= 'DeÄiÅtir';
+$lang['btn_login'] = 'GiriÅ yap';
+$lang['btn_logout'] = 'ÃıkıŠyap';
+$lang['btn_admin'] = 'Yönetici';
+$lang['btn_update'] = 'Güncelle';
+$lang['btn_delete'] = 'Sil';
+$lang['btn_back'] = 'Geri';
+$lang['btn_backlink'] = "Geri linkler";
+$lang['btn_backtomedia'] = 'Ãokluortam dosyası seçimine dön';
+$lang['btn_subscribe'] = 'DeÄiÅikliklere kaydol';
+$lang['btn_unsubscribe'] = 'DeÄiÅikliklerden çık';
+
+$lang['loggedinas'] = 'GiriÅ ismi';
+$lang['user'] = 'Kullanıcı ismi';
+$lang['pass'] = 'Åifre';
+$lang['passchk'] = 'tekrarla';
+$lang['remember'] = 'Beni hatırla';
+$lang['fullname'] = 'Tam isim';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'Kayıt ol';
+$lang['badlogin'] = 'Maalesef kullanıcı adı veya Åifre yanlıŠoldu.';
+
+$lang['regmissing'] = 'Lütfen tüm alanları doldur.';
+$lang['reguexists'] = 'Maalesef bu isimle bir kullanıcı zaten mevcut.';
+$lang['regsuccess'] = 'Kullanıcı oluÅturuldu ve Åifre adresine maillendi.';
+$lang['regsuccess2']= 'Kullanıcı oluÅturuldu.';
+$lang['regmailfail']= 'Åifre mailini yollarken bir hata oluÅtu galiba. Lütfen yönetici ile kontaÄa geç!';
+$lang['regbadmail'] = 'Verilen e-mail adresi geçersiz sanırım - bunun sence bir hataysa adminle kontaÄa geç.';
+$lang['regbadpass'] = 'Åifreler birbirini tumuyor. Lütfen tekrar dene.';
+$lang['regpwmail'] = 'DokuWiki Åifren';
+$lang['reghere'] = 'Daha hesabın yok mu? Hemen bir tane açtır!';
+
+$lang['txt_upload'] = 'Yüklenecek dosyayı seç';
+$lang['txt_filename'] = 'Wiki ismini gir (mecburi deÄil)';
+$lang['txt_overwrt'] = 'Mevcut dosyanın üstüne yaz';
+$lang['lockedby'] = 'Åu an Åunun tarafından kilitli:';
+$lang['lockexpire'] = 'Kilitin açılma tarihi';
+$lang['willexpire'] = 'Bu sayfayı deÄiÅtirme kilidinin bir dakikaya kadar süresi geçiyor.\nÃatıÅmaları önlemek için önizleme tuÅunu kullanarak kilit sayacını sıfırla.';
+
+$lang['notsavedyet'] = 'KaybedilmemiÅ deÄiÅiklikler kaybolacak.\nDevam edeyim mi?';
+
+$lang['rssfailed'] = 'Bu beslemeyi çekerken hata oluÅtu: ';
+$lang['nothingfound']= 'Hiçbir Åey yok.';
+
+$lang['mediaselect'] = 'Ãokluortam dosyası seçimi';
+$lang['fileupload'] = 'Ãokluortam dosyası yükleme';
+$lang['uploadsucc'] = 'Yükleme tamam';
+$lang['uploadfail'] = 'Yükleme baÅarısız. Yetki hatssı olabilir mi?';
+$lang['uploadwrong'] = 'Yükleme engellendi. Bu dosya uzantısı yasak!';
+$lang['uploadexist'] = 'Dosya zaten var. Hiçbir Åey yapılmadı.';
+$lang['deletesucc'] = '"%s" dosyası silindi.';
+$lang['deletefail'] = '"%s" silinemedi - yetkileri kontrol et.';
+$lang['mediainuse'] = '"%s" dosyası silinmedi, hala kullanımda.';
+$lang['namespaces'] = 'İsimalanları';
+$lang['mediafiles'] = 'Åurda kullanıma hazır dosyalar:';
+
+$lang['reference'] = 'Åunun için referanslar:';
+$lang['ref_inuse'] = 'Dosya silinemiyor, çünkü Åu sayfalar tarafından hala kullanımda:';
+$lang['ref_hidden'] = 'Bazı referanslar okuma yetkin olmayan sayfalarda';
+
+$lang['hits'] = 'Bulunanlar';
+$lang['quickhits'] = 'Uyan sayfalar';
+$lang['toc'] = 'Fihrist';
+$lang['current'] = 'mevcut';
+$lang['yours'] = 'Senin versiyonun';
+$lang['diff'] = 'bu versiyonla farkları göster';
+$lang['line'] = 'Satır';
+$lang['breadcrumb'] = 'İz';
+$lang['lastmod'] = 'Son deÄiÅtirilme';
+$lang['by'] = 'DeÄiÅtiren:';
+$lang['deleted'] = 'silinme';
+$lang['created'] = 'oluÅturma';
+$lang['restored'] = 'eski sürüme çevrilme';
+$lang['summary'] = 'DeÄiÅtirme özeti';
+
+$lang['mail_newpage'] = 'sayfa eklenme:';
+$lang['mail_changed'] = 'sayfa deÄiÅtirilme:';
+
+$lang['nosmblinks'] = 'Windows paylaÅımlarına link verme sadece IE\'de çalıÅır.\nAma linki her zaman kopyala-yapıÅtur yapabilirsin.';
+
+$lang['qb_alert'] = 'Lütfen biçimlendirmek istediÄin yazıyı gir.\nSayfanın sonuna eklenecektir.';
+$lang['qb_bold'] = 'Kalın Yazı';
+$lang['qb_italic'] = 'EÄik Yazı';
+$lang['qb_underl'] = 'Altı çizili Yazı';
+$lang['qb_code'] = 'Kod haline getir';
+$lang['qb_strike'] = 'Ortası çizili Yazı';
+$lang['qb_h1'] = '1. Seviye BaÅlık';
+$lang['qb_h2'] = 'Seviye BaÅlık';
+$lang['qb_h3'] = '2. Seviye BaÅlık';
+$lang['qb_h4'] = '3. Seviye BaÅlık';
+$lang['qb_h5'] = '4. Seviye BaÅlık';
+$lang['qb_link'] = 'İç BaÄlantı';
+$lang['qb_extlink'] = 'DıŠBaÄlantı';
+$lang['qb_hr'] = 'Yatay Ãizgi';
+$lang['qb_ol'] = 'Sıralı liste';
+$lang['qb_ul'] = 'Sırasız liste';
+$lang['qb_media'] = 'Resim ve baÅka dosyalar ekle';
+$lang['qb_sig'] = 'İmza Ekle';
+
+$lang['del_confirm']= 'Bu giriÅi sil?';
+$lang['admin_register']= 'Yeni kullanıcı ekle...';
+
+$lang['metaedit'] = 'Metaverileri DeÄiÅtir';
+$lang['metasaveerr'] = 'Metaveri yazma baÅarısız ';
+$lang['metasaveok'] = 'Metaveri kaydedildi';
+$lang['img_backto'] = 'Åuna dön:';
+$lang['img_title'] = 'baÅlık';
+$lang['img_caption'] = 'Serlevha';
+$lang['img_date'] = 'Tarih';
+$lang['img_fname'] = 'Dosya Adı';
+$lang['img_fsize'] = 'Boyut';
+$lang['img_artist'] = 'FotoÄrafçı';
+$lang['img_copyr'] = 'Telif Hakkı';
+$lang['img_format'] = 'Biçim';
+$lang['img_camera'] = 'FotoÄraf Makinası';
+$lang['img_keywords']= 'Anahtar Sözcükler';
+
+$lang['subscribe_success'] = '%s, %s\'in abonelik listesine eklendi';
+$lang['subscribe_error'] = '%s; %s\'in abonelik listesine eklenirken hata oluÅtu';
+$lang['subscribe_noaddress']= 'GiriÅ bilgilerinizle iliÅkili bir adres yok, abonelik listesine eklenemezsiniz';
+$lang['unsubscribe_success']= '%s, %s\'in abonelik listesinden çıkartıldı';
+$lang['unsubscribe_error'] = '%s, %s\'in listesinden çıkartılırken hata oluÅtu';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/tr/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Sayfa kilitli ======
-
-Bu sayfa Åu an baÅka bir kullanıcının deÄiÅtirmesi için kilitli. Kilitin
-süresi geçene veya bu kullanıcı deÄiÅtirmeyi bitirene kadar beklemen
-lazım.
-
+====== Sayfa kilitli ======
+
+Bu sayfa Åu an baÅka bir kullanıcının deÄiÅtirmesi için kilitli. Kilitin
+süresi geçene veya bu kullanıcı deÄiÅtirmeyi bitirene kadar beklemen
+lazım.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== GiriÅ ======
-
-Åu an giriÅ yapmıŠdeÄilsin! GiriÅ yapmak için giriÅ bilgilerini aÅaÄıya yaz.
-GiriŠyapmak için çerezleri açmalısın.
-
+====== GiriÅ ======
+
+Åu an giriÅ yapmıŠdeÄilsin! GiriÅ yapmak için giriÅ bilgilerini aÅaÄıya yaz.
+GiriŠyapmak için çerezleri açmalısın.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,18 +1,18 @@
-DokuWikinizde bir sayfa eklendi veya deÄiÅti. Detaylar Åunlar:
-
-Tarih : @DATE@
-Tarayıcı : @BROWSER@
-IP-Adresi : @IPADDRESS@
-Sunucu adı : @HOSTNAME@
-Eski sürüm : @OLDPAGE@
-Yeni sürüm : @NEWPAGE@
-DeÄiÅtirme özeti : @SUMMARY@
-Kullanıcı : @USER@
-
- at DIFF@
-
-
---
-Bu mail
- at DOKUWIKIURL@
-adresindeki DokuWiki tarafından hazırlandı.
+DokuWikinizde bir sayfa eklendi veya deÄiÅti. Detaylar Åunlar:
+
+Tarih : @DATE@
+Tarayıcı : @BROWSER@
+IP-Adresi : @IPADDRESS@
+Sunucu adı : @HOSTNAME@
+Eski sürüm : @OLDPAGE@
+Yeni sürüm : @NEWPAGE@
+DeÄiÅtirme özeti : @SUMMARY@
+Kullanıcı : @USER@
+
+ at DIFF@
+
+
+--
+Bu mail
+ at DOKUWIKIURL@
+adresindeki DokuWiki tarafından hazırlandı.
Modified: site/trunk/www-root/wiki/inc/lang/tr/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Bu baÅlık henüz mevcut deÄil======
-
-Henüz mevcut olmayan bir baÅlıÄın linkiyle geldin. ''bu sayfayı oluÅtur''
-tuÅuna tıklayarak sayfayı oluÅturabilirsin.
-
+======Bu baÅlık henüz mevcut deÄil======
+
+Henüz mevcut olmayan bir baÅlıÄın linkiyle geldin. ''bu sayfayı oluÅtur''
+tuÅuna tıklayarak sayfayı oluÅturabilirsin.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Böyle bir sürüm yok======
-
-Belirtilen sürüm mevcut deÄil. Bu dökümanın eski sürümlerinin bir listesi için ''eski sürümler'' tuÅuna kullan.
-
+======Böyle bir sürüm yok======
+
+Belirtilen sürüm mevcut deÄil. Bu dökümanın eski sürümlerinin bir listesi için ''eski sürümler'' tuÅuna kullan.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-Merhaba @FULLNAME@!
-
-
- at DOKUWIKIURL@ adresindeki @TITLE@ için kullanıcı bilgin Åöyle:
-
-GiriÅ ismi : @LOGIN@
-Åifre : @PASSWORD@
-
---
-Bu mail
- at DOKUWIKIURL@
-adresindeki DokuWiki tarafından hazırlandı.
+Merhaba @FULLNAME@!
+
+
+ at DOKUWIKIURL@ adresindeki @TITLE@ için kullanıcı bilgin Åöyle:
+
+GiriÅ ismi : @LOGIN@
+Åifre : @PASSWORD@
+
+--
+Bu mail
+ at DOKUWIKIURL@
+adresindeki DokuWiki tarafından hazırlandı.
Modified: site/trunk/www-root/wiki/inc/lang/tr/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Ãnizleme======
-
-Bu yazınızın nasıl çıkacaÄının bir önizlemesi. Unutma: Yazı henüz **kaydedilmedi!**
-
+======Ãnizleme======
+
+Bu yazınızın nasıl çıkacaÄının bir önizlemesi. Unutma: Yazı henüz **kaydedilmedi!**
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-Merhaba @FULLNAME@!
-
- at DOKUWIKIURL@ adresinde kullanılan @TITLE@ hesabı için Åifre talebinde bulunuldu.
-
-EÄer böyle bir talebiniz olmadıysa, bu e-postayı görmezden gelebilirsiniz.
-
-Onaylamak istiyorsanız aÅaÄıdaki linke tıklayınız
- at CONFIRM@
-
---
-Bu e-posta otomatik olarak oluÅturulmuÅtur.
+Merhaba @FULLNAME@!
+
+ at DOKUWIKIURL@ adresinde kullanılan @TITLE@ hesabı için Åifre talebinde bulunuldu.
+
+EÄer böyle bir talebiniz olmadıysa, bu e-postayı görmezden gelebilirsiniz.
+
+Onaylamak istiyorsanız aÅaÄıdaki linke tıklayınız
+ at CONFIRM@
+
+--
+Bu e-posta otomatik olarak oluÅturulmuÅtur.
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/tr/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-Bu sayfa salt okunur. KaynaÄı görebilirsin ama deÄiÅtiremezsin. Bunun yanlıŠolduÄuna inanıyorsan yöneticiyle konuÅ.
-
+Bu sayfa salt okunur. KaynaÄı görebilirsin ama deÄiÅtiremezsin. Bunun yanlıŠolduÄuna inanıyorsan yöneticiyle konuÅ.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Son deÄiÅiklikler======
-
-AÅaÄıdaki sayfalar son zamanlarda deÄiÅtirildi.
-
-
+======Son deÄiÅiklikler======
+
+AÅaÄıdaki sayfalar son zamanlarda deÄiÅtirildi.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== Yeni kullanıcı olarak kaydol ======
-
-Bu wikide yeni bir hesap açmak için aÅaÄıdaki tüm bilgileri doldurunuz.
-**DoÄru e-mail adresi verdiÄinizden** emin olun, zira yeni Åifreniz oraya gönderilecek.
-GiriŠadınız geçerli bir [[doku>wiki:pagename|sayfa adı]] olmalıdır.
-
+====== Yeni kullanıcı olarak kaydol ======
+
+Bu wikide yeni bir hesap açmak için aÅaÄıdaki tüm bilgileri doldurunuz.
+**DoÄru e-mail adresi verdiÄinizden** emin olun, zira yeni Åifreniz oraya gönderilecek.
+GiriŠadınız geçerli bir [[doku>wiki:pagename|sayfa adı]] olmalıdır.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Yeni kullanıcı kayıt oldu, detaylar:
-
-Kullanıcı adı : @NEWUSER@
-İsim : @NEWNAME@
-E-posta : @NEWEMAIL@
-
-Tarih : @DATE@
-Tarayıcı : @BROWSER@
-IP Numarası : @IPADDRESS@
-Host : @HOSTNAME@
-
---
-Bu e-posta otomatik olarak oluÅturulmuÅtur.
+Yeni kullanıcı kayıt oldu, detaylar:
+
+Kullanıcı adı : @NEWUSER@
+İsim : @NEWNAME@
+E-posta : @NEWEMAIL@
+
+Tarih : @DATE@
+Tarayıcı : @BROWSER@
+IP Numarası : @IPADDRESS@
+Host : @HOSTNAME@
+
+--
+Bu e-posta otomatik olarak oluÅturulmuÅtur.
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/tr/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Yeni Åifre Gönderimi ======
-
-Lütfen bu wikide kullanmıŠolduÄunuz kullanıcı adını aÅaÄıdaki forma yazınız. Onay linki, kayıtlı e-posta adresine gönderilecektir.
+====== Yeni Åifre Gönderimi ======
+
+Lütfen bu wikide kullanmıŠolduÄunuz kullanıcı adını aÅaÄıdaki forma yazınız. Onay linki, kayıtlı e-posta adresine gönderilecektir.
Modified: site/trunk/www-root/wiki/inc/lang/tr/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Eski sürümler======
-
-Bunlar mevcut dökümanın daha eski sürümleridir. Eski bir sürüme çevirmek için, sürümü aÅaÄıdan seç, ''sayfayı deÄiÅtire'' tıkla ve kaydet.
-
+======Eski sürümler======
+
+Bunlar mevcut dökümanın daha eski sürümleridir. Eski bir sürüme çevirmek için, sürümü aÅaÄıdan seç, ''sayfayı deÄiÅtire'' tıkla ve kaydet.
+
Modified: site/trunk/www-root/wiki/inc/lang/tr/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Arama======
-
-AÅaÄıda aramanın sonuçları vardır. AradıÄın Åeyi bulamadıysan, girdiÄin sorgunun adıyla yeni bir sayfa
-oluÅturmak için ''sayfayı deÄiÅtir'' tuÅunu kullan.
-
-=====Sonuçlar=====
+======Arama======
+
+AÅaÄıda aramanın sonuçları vardır. AradıÄın Åeyi bulamadıysan, girdiÄin sorgunun adıyla yeni bir sayfa
+oluÅturmak için ''sayfayı deÄiÅtir'' tuÅunu kullan.
+
+=====Sonuçlar=====
Modified: site/trunk/www-root/wiki/inc/lang/tr/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Bu, dökümanın eski bir sürümüdür!**
-----
+**Bu, dökümanın eski bir sürümüdür!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/tr/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# Bu indeksleyicinin yok saydıÄı kelimelerin bir listesidir, satır baÅına bir kelime
-# Bu dosyayı deÄiÅtirirken UNIX satır sonları (tek satır sonu) kullan
-# 3 karakterden kısa kelimeleri eklemeye gerek yok, bunlar zaten indekslenmez
-# Bu liste http://www.ranks.nl/stopwords/ altındakilerden derlenmiÅtir
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# Bu indeksleyicinin yok saydıÄı kelimelerin bir listesidir, satır baÅına bir kelime
+# Bu dosyayı deÄiÅtirirken UNIX satır sonları (tek satır sonu) kullan
+# 3 karakterden kısa kelimeleri eklemeye gerek yok, bunlar zaten indekslenmez
+# Bu liste http://www.ranks.nl/stopwords/ altındakilerden derlenmiÅtir
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/tr/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,20 +1,20 @@
-Merhaba!
-
-
-
- at TITLE@ wikisindeki @PAGE@ sayfası deÄiÅtirildi.
-DeÄiÅiklikler aÅaÄıdadır:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Bu sayfaya abonelikten çıkmak için
- at DOKUWIKIURL@ adresindeki wikiye gir, ardından
- at NEWPAGE@
-sayfasına git ve 'DeÄiÅikliklerden çıkı' seç.
-
---
-Bu mail
- at DOKUWIKIURL@
-adresindeki DokuWiki tarafından hazırlandı.
+Merhaba!
+
+
+
+ at TITLE@ wikisindeki @PAGE@ sayfası deÄiÅtirildi.
+DeÄiÅiklikler aÅaÄıdadır:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Bu sayfaya abonelikten çıkmak için
+ at DOKUWIKIURL@ adresindeki wikiye gir, ardından
+ at NEWPAGE@
+sayfasına git ve 'DeÄiÅikliklerden çıkı' seç.
+
+--
+Bu mail
+ at DOKUWIKIURL@
+adresindeki DokuWiki tarafından hazırlandı.
Modified: site/trunk/www-root/wiki/inc/lang/tr/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Profil Güncelleme ======
-
-İstediÄiniz profil kısımlarını deÄiÅtirebilirsiniz. Ancak kullanıcı adınızı deÄiÅtirmeniz mümkün deÄildir.
+====== Profil Güncelleme ======
+
+İstediÄiniz profil kısımlarını deÄiÅtirebilirsiniz. Ancak kullanıcı adınızı deÄiÅtirmeniz mümkün deÄildir.
Modified: site/trunk/www-root/wiki/inc/lang/tr/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-Yeni dosya yüklendi, detaylar:
-
-Dosya : @MEDIA@
-Tarih : @DATE@
-Tarayıcı : @BROWSER@
-IP Adresi : @IPADDRESS@
-Host : @HOSTNAME@
-Boyut : @SIZE@
-MIME Type : @MIME@
-Kullanıcı : @USER@
-
---
-Bu e-posta otomatik olarak oluÅturulmuÅtur
+Yeni dosya yüklendi, detaylar:
+
+Dosya : @MEDIA@
+Tarih : @DATE@
+Tarayıcı : @BROWSER@
+IP Adresi : @IPADDRESS@
+Host : @HOSTNAME@
+Boyut : @SIZE@
+MIME Type : @MIME@
+Kullanıcı : @USER@
+
+--
+Bu e-posta otomatik olarak oluÅturulmuÅtur
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/tr/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/tr/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/tr/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======SPAM bloke edildi======
-
-DeÄiÅkliklerin **kaydedilmedi** çünkü bir veya daha fazla bloke edilen kelime
-içeriyor. EÄer Wikiyi spamlamaya çalıÅıyorsan -- Oh olsun! EÄer bunun bir hata
-olduÄunu düÅünüyorsan, bu Wikinin yöneticisiyle kontaÄa geç.
-
+======SPAM bloke edildi======
+
+DeÄiÅkliklerin **kaydedilmedi** çünkü bir veya daha fazla bloke edilen kelime
+içeriyor. EÄer Wikiyi spamlamaya çalıÅıyorsan -- Oh olsun! EÄer bunun bir hata
+olduÄunu düÅünüyorsan, bu Wikinin yöneticisiyle kontaÄa geç.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐдмÑнÑÑÑÑÑÐ²Ð°Ð½Ð½Ñ ======
-
-ÐижÑе ви можеÑе знайÑи пеÑелÑк адмÑнÑÑÑÑаÑивниÑ
задаÑ, Ñо наÑÐ²Ð½Ñ Ð² ÐокÑÐÑкÑ.
-
+====== ÐдмÑнÑÑÑÑÑÐ²Ð°Ð½Ð½Ñ ======
+
+ÐижÑе ви можеÑе знайÑи пеÑелÑк адмÑнÑÑÑÑаÑивниÑ
задаÑ, Ñо наÑÐ²Ð½Ñ Ð² ÐокÑÐÑкÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐвоÑоÑÐ½Ñ Ð·Ð²'Ñзки ======
-
-Це пеÑелÑк ÑÑоÑÑнок, ÑкÑ, здаÑÑÑÑÑ, поÑилаÑÑÑÑÑ Ð½Ð° поÑоÑÐ½Ñ ÑÑоÑÑнкÑ
-
+====== ÐвоÑоÑÐ½Ñ Ð·Ð²'Ñзки ======
+
+Це пеÑелÑк ÑÑоÑÑнок, ÑкÑ, здаÑÑÑÑÑ, поÑилаÑÑÑÑÑ Ð½Ð° поÑоÑÐ½Ñ ÑÑоÑÑнкÑ
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/uk/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======ÐоÑÑÑп забоÑонено======
-
-ÐибаÑÑе, але Ñ Ð²Ð°Ñ Ð½Ðµ виÑÑаÑÐ°Ñ Ð¿Ñав Ð´Ð»Ñ Ð¿ÑодовженнÑ. Ðожливо ви забÑли ÑвÑйÑи в ÑиÑÑемÑ?
-
+======ÐоÑÑÑп забоÑонено======
+
+ÐибаÑÑе, але Ñ Ð²Ð°Ñ Ð½Ðµ виÑÑаÑÐ°Ñ Ð¿Ñав Ð´Ð»Ñ Ð¿ÑодовженнÑ. Ðожливо ви забÑли ÑвÑйÑи в ÑиÑÑемÑ?
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======РозбÑжноÑÑÑ======
-
-ТÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑозбÑжноÑÑÑ Ð¼Ñж вибÑÐ°Ð½Ð¾Ñ ÑевÑзÑÑÑ Ñа поÑоÑÐ½Ð¾Ñ Ð²ÐµÑÑÑÑÑ ÑÑоÑÑнки.
-
+======РозбÑжноÑÑÑ======
+
+ТÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑозбÑжноÑÑÑ Ð¼Ñж вибÑÐ°Ð½Ð¾Ñ ÑевÑзÑÑÑ Ñа поÑоÑÐ½Ð¾Ñ Ð²ÐµÑÑÑÑÑ ÑÑоÑÑнки.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/draft.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/uk/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-ÐÑдÑедагÑйÑе ÑÑоÑÑÐ½ÐºÑ Ñа наÑиÑнÑÑÑ ''ÐбеÑегÑи''. ÐикоÑиÑÑовÑйÑе
-[[wiki:syntax|поÑÑбник]] з ÑÑнÑакÑÑÑÑ Ð´Ð»Ñ Ð´Ð¾Ð²Ñдки. ÐÑÐ´Ñ Ð»Ð°Ñка, змÑнÑйÑе
-ÑÑоÑÑÐ½ÐºÑ Ð»Ð¸Ñе Ñ ÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ, коли ви можеÑе **покÑаÑиÑи** ÑÑ. ЯкÑо ви
-бажаÑÑе ÑоÑÑ ÑпÑобÑваÑи, викоÑиÑÑовÑйÑе ÑпеÑÑалÑÐ½Ñ ÑÑоÑнÑÐºÑ [[playground:playground]]
+ÐÑдÑедагÑйÑе ÑÑоÑÑÐ½ÐºÑ Ñа наÑиÑнÑÑÑ ''ÐбеÑегÑи''. ÐикоÑиÑÑовÑйÑе
+[[wiki:syntax|поÑÑбник]] з ÑÑнÑакÑÑÑÑ Ð´Ð»Ñ Ð´Ð¾Ð²Ñдки. ÐÑÐ´Ñ Ð»Ð°Ñка, змÑнÑйÑе
+ÑÑоÑÑÐ½ÐºÑ Ð»Ð¸Ñе Ñ ÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ, коли ви можеÑе **покÑаÑиÑи** ÑÑ. ЯкÑо ви
+бажаÑÑе ÑоÑÑ ÑпÑобÑваÑи, викоÑиÑÑовÑйÑе ÑпеÑÑалÑÐ½Ñ ÑÑоÑнÑÐºÑ [[playground:playground]]
Modified: site/trunk/www-root/wiki/inc/lang/uk/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Ðи заванÑажили ÑÑаÑÑ Ð²ÐµÑÑÑÑ Ð´Ð¾ÐºÑменÑÑ!** ЯкÑо ви збеÑежеÑе ÑÑ, ви ÑÑвоÑиÑе Ð½Ð¾Ð²Ñ Ð²ÐµÑÑÑÑ Ð· ÑÑми даними
-----
+**Ðи заванÑажили ÑÑаÑÑ Ð²ÐµÑÑÑÑ Ð´Ð¾ÐºÑменÑÑ!** ЯкÑо ви збеÑежеÑе ÑÑ, ви ÑÑвоÑиÑе Ð½Ð¾Ð²Ñ Ð²ÐµÑÑÑÑ Ð· ÑÑми даними
+----
Modified: site/trunk/www-root/wiki/inc/lang/uk/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÐмÑÑÑ ======
-
-Це пеÑелÑк ÑÑÑÑ
доÑÑÑпниÑ
ÑÑоÑÑнок, ÑпоÑÑджениÑ
за [[doku>>wiki:namespaces|пÑоÑÑÑÑами Ñмен]]
-
+====== ÐмÑÑÑ ======
+
+Це пеÑелÑк ÑÑÑÑ
доÑÑÑпниÑ
ÑÑоÑÑнок, ÑпоÑÑджениÑ
за [[doku>>wiki:namespaces|пÑоÑÑÑÑами Ñмен]]
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,23 +1,23 @@
-<p>Ð¦Ñ ÑÑоÑÑнка Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð°Ñ Ð¿Ñи пеÑÑÑй ÑÑÑановÑÑ Ñа конÑÑгÑÑÑваннÑ
-<a href="http://wiki.splitbrain.org">ÐокÑÐÑкÑ</a>.
-ÐÑлÑÑе ÑнÑоÑмаÑÑÑ Ð¿Ñо пÑогÑÐ°Ð¼Ñ ÑÑÑановки можна знайÑи на
-<a href="http://wiki.splitbrain.org/wiki:installer">ÑÑоÑÑнÑÑ Ð´Ð¾ÐºÑменÑаÑÑÑ</a>.</p>
-
-<p>ÐокÑÐÑÐºÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑ Ð·Ð²Ð¸ÑÐ°Ð¹Ð½Ñ Ñайли Ð´Ð»Ñ Ð·Ð±ÐµÑÑÐ³Ð°Ð½Ð½Ñ ÑÑоÑÑнок вÑÐºÑ Ñа ÑнÑÐ¾Ñ ÑнÑоÑмаÑÑÑ,
-Ñодо ÑÑÑ
ÑÑоÑÑнок (напÑиклад, зобÑаженÑ, ÑндекÑÑв поÑÑкÑ, ÑÑаÑиÑ
ÑевÑзÑй Ñа Ñн.). ÐлÑ
-ÑÑпÑÑного ÑÑнкÑÑÑÐ²Ð°Ð½Ð½Ñ ÐокÑÐÑÐºÑ <strong>маÑ</strong> маÑи пÑава на Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ñек, Ñо
-мÑÑÑÑÑÑ ÑÑ Ñайли. Ð¦Ñ Ð¿ÑогÑама ÑÑÑановки не може змÑнÑваÑи пÑава доÑÑÑпÑ. ÐвиÑайно Ñе
-ÑобиÑÑÑÑ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑнÑеÑпÑеÑаÑоÑа shell, або, ÑкÑо ви викоÑиÑÑовÑÑÑе Ñ
оÑÑÑнг,
-за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ FTP або Ð¿Ð°Ð½ÐµÐ»Ñ ÑпÑавлÑÐ½Ð½Ñ Ñ
оÑÑÑнгом (напÑиклад cPanel).</p>
-
-<p>Ð¦Ñ Ð¿ÑогÑама ÑÑÑановки налагодиÑÑ Ð²Ð°ÑÑ ÐокÑÐÑÐºÑ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑаннÑ
-<acronym title="ÑпиÑок конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпÑ">ACL</acronym>, Ñо, в ÑÐ²Ð¾Ñ ÑеÑгÑ,
-дозволиÑÑ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑÑ Ð²Ñ
одиÑи до адмÑнÑÑÑÑаÑивного Ð¼ÐµÐ½Ñ Ð´Ð»Ñ ÑÑÑановки доданкÑв,
-кеÑÑÐ²Ð°Ð½Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑами, кеÑÑÐ²Ð°Ð½Ð½Ñ Ð¿Ñавами доÑÑÑÐ¿Ñ Ð´Ð¾ ÑÑоÑÑнок вÑÐºÑ Ñа змÑн паÑамеÑÑÑв
-конÑÑгÑÑаÑÑÑ. Це не Ñ Ð¾Ð±Ð²'Ñзковим Ð´Ð»Ñ ÑобоÑи ÐокÑÐÑкÑ, але зÑобиÑÑ Ð¶Ð¸ÑÑÑ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа
-знаÑно легÑим.</p>
-
-<p>ÐоÑвÑдÑÐµÐ½Ñ ÐºÐ¾ÑиÑÑÑваÑÑ, або коÑиÑÑÑваÑÑ, Ñо маÑÑÑ Ð¾ÑÐ¾Ð±Ð»Ð¸Ð²Ñ Ð²Ð¸Ð¼Ð¾Ð³Ð¸ до налагодженнÑ, маÑÑÑ
-викоÑиÑÑовÑваÑи ÑÑ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð´ÐµÑалÑÐ½Ð¾Ñ ÑнÑоÑмаÑÑÑ, Ñодо
-<a href="http://wiki.splitbrain.org/wiki:install">ÑнÑÑÑÑкÑÑй з ÑÑÑановки</a>
-Ñа <a href="http://wiki.splitbrain.org/wiki:config">паÑамеÑÑÑв конÑÑгÑÑаÑÑÑ</a>.</p>
+<p>Ð¦Ñ ÑÑоÑÑнка Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð°Ñ Ð¿Ñи пеÑÑÑй ÑÑÑановÑÑ Ñа конÑÑгÑÑÑваннÑ
+<a href="http://wiki.splitbrain.org">ÐокÑÐÑкÑ</a>.
+ÐÑлÑÑе ÑнÑоÑмаÑÑÑ Ð¿Ñо пÑогÑÐ°Ð¼Ñ ÑÑÑановки можна знайÑи на
+<a href="http://wiki.splitbrain.org/wiki:installer">ÑÑоÑÑнÑÑ Ð´Ð¾ÐºÑменÑаÑÑÑ</a>.</p>
+
+<p>ÐокÑÐÑÐºÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑ Ð·Ð²Ð¸ÑÐ°Ð¹Ð½Ñ Ñайли Ð´Ð»Ñ Ð·Ð±ÐµÑÑÐ³Ð°Ð½Ð½Ñ ÑÑоÑÑнок вÑÐºÑ Ñа ÑнÑÐ¾Ñ ÑнÑоÑмаÑÑÑ,
+Ñодо ÑÑÑ
ÑÑоÑÑнок (напÑиклад, зобÑаженÑ, ÑндекÑÑв поÑÑкÑ, ÑÑаÑиÑ
ÑевÑзÑй Ñа Ñн.). ÐлÑ
+ÑÑпÑÑного ÑÑнкÑÑÑÐ²Ð°Ð½Ð½Ñ ÐокÑÐÑÐºÑ <strong>маÑ</strong> маÑи пÑава на Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ñек, Ñо
+мÑÑÑÑÑÑ ÑÑ Ñайли. Ð¦Ñ Ð¿ÑогÑама ÑÑÑановки не може змÑнÑваÑи пÑава доÑÑÑпÑ. ÐвиÑайно Ñе
+ÑобиÑÑÑÑ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑнÑеÑпÑеÑаÑоÑа shell, або, ÑкÑо ви викоÑиÑÑовÑÑÑе Ñ
оÑÑÑнг,
+за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ FTP або Ð¿Ð°Ð½ÐµÐ»Ñ ÑпÑавлÑÐ½Ð½Ñ Ñ
оÑÑÑнгом (напÑиклад cPanel).</p>
+
+<p>Ð¦Ñ Ð¿ÑогÑама ÑÑÑановки налагодиÑÑ Ð²Ð°ÑÑ ÐокÑÐÑÐºÑ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑаннÑ
+<acronym title="ÑпиÑок конÑÑÐ¾Ð»Ñ Ð´Ð¾ÑÑÑпÑ">ACL</acronym>, Ñо, в ÑÐ²Ð¾Ñ ÑеÑгÑ,
+дозволиÑÑ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑÑ Ð²Ñ
одиÑи до адмÑнÑÑÑÑаÑивного Ð¼ÐµÐ½Ñ Ð´Ð»Ñ ÑÑÑановки доданкÑв,
+кеÑÑÐ²Ð°Ð½Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑами, кеÑÑÐ²Ð°Ð½Ð½Ñ Ð¿Ñавами доÑÑÑÐ¿Ñ Ð´Ð¾ ÑÑоÑÑнок вÑÐºÑ Ñа змÑн паÑамеÑÑÑв
+конÑÑгÑÑаÑÑÑ. Це не Ñ Ð¾Ð±Ð²'Ñзковим Ð´Ð»Ñ ÑобоÑи ÐокÑÐÑкÑ, але зÑобиÑÑ Ð¶Ð¸ÑÑÑ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа
+знаÑно легÑим.</p>
+
+<p>ÐоÑвÑдÑÐµÐ½Ñ ÐºÐ¾ÑиÑÑÑваÑÑ, або коÑиÑÑÑваÑÑ, Ñо маÑÑÑ Ð¾ÑÐ¾Ð±Ð»Ð¸Ð²Ñ Ð²Ð¸Ð¼Ð¾Ð³Ð¸ до налагодженнÑ, маÑÑÑ
+викоÑиÑÑовÑваÑи ÑÑ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð´ÐµÑалÑÐ½Ð¾Ñ ÑнÑоÑмаÑÑÑ, Ñодо
+<a href="http://wiki.splitbrain.org/wiki:install">ÑнÑÑÑÑкÑÑй з ÑÑÑановки</a>
+Ñа <a href="http://wiki.splitbrain.org/wiki:config">паÑамеÑÑÑв конÑÑгÑÑаÑÑÑ</a>.</p>
Modified: site/trunk/www-root/wiki/inc/lang/uk/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,216 +1,216 @@
-<?php
-/**
- * ukrainian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Oleksiy Voronin <ovoronin at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = 'РедагÑваÑи';
-$lang['btn_source'] = 'ÐоказаÑи виÑ
Ñдний ÑекÑÑ';
-$lang['btn_show'] = 'ÐоказаÑи ÑÑоÑÑнкÑ';
-$lang['btn_create'] = 'СÑвоÑиÑи ÑÑоÑÑнкÑ';
-$lang['btn_search'] = 'ÐоÑÑк';
-$lang['btn_save'] = 'ÐбеÑегÑи';
-$lang['btn_preview']= 'ÐеÑеглÑд';
-$lang['btn_top'] = 'ÐовеÑнÑÑиÑÑ Ð½Ð°Ð²ÐµÑÑ
';
-$lang['btn_newer'] = '<< бÑлÑÑ Ð½Ð¾Ð²Ñ';
-$lang['btn_older'] = 'менÑÑ Ð½Ð¾Ð²Ñ >>';
-$lang['btn_revs'] = 'СÑаÑÑ ÑевÑзÑÑ';
-$lang['btn_recent'] = 'ÐÐµÐ´Ð°Ð²Ð½Ñ Ð·Ð¼Ñни';
-$lang['btn_upload'] = 'ÐаванÑажиÑи';
-$lang['btn_cancel'] = 'ÐÑдмÑниÑи';
-$lang['btn_index'] = 'ÐмÑÑÑ';
-$lang['btn_secedit']= 'РедагÑваÑи';
-$lang['btn_login'] = 'УвÑйÑи';
-$lang['btn_logout'] = 'ÐийÑи';
-$lang['btn_admin'] = 'ÐеÑÑваннÑ';
-$lang['btn_update'] = 'ÐбновиÑи';
-$lang['btn_delete'] = 'ÐниÑиÑи';
-$lang['btn_back'] = 'Ðазад';
-$lang['btn_backlink'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑÑди';
-$lang['btn_backtomedia'] = 'Ðазад до вибоÑÑ Ð¼ÐµÐ´Ñа-ÑайлÑ';
-$lang['btn_subscribe'] = 'ÐÑдпиÑаÑиÑÑ';
-$lang['btn_unsubscribe'] = 'ÐÑдпиÑаÑиÑÑ';
-$lang['btn_profile'] = 'ÐновиÑи пÑоÑÑлÑ';
-$lang['btn_reset'] = 'СбÑоÑ';
-$lang['btn_resendpwd'] = 'ÐадÑÑлаÑи новий паÑолÑ';
-$lang['btn_draft'] = 'РедагÑваÑи ÑеÑнеÑкÑ';
-$lang['btn_recover'] = 'ÐÑдновиÑи ÑеÑнеÑкÑ';
-$lang['btn_draftdel'] = 'ÐниÑиÑи ÑеÑнеÑкÑ';
-
-$lang['loggedinas'] = 'Ðи';
-$lang['user'] = 'ÐоÑиÑÑÑваÑ';
-$lang['pass'] = 'ÐаÑолÑ';
-$lang['newpass'] = 'Ðовий паÑолÑ';
-$lang['oldpass'] = 'ÐÑдÑвеÑдиÑи новий паÑолÑ';
-$lang['passchk'] = 'Ñе Ñаз';
-$lang['remember'] = 'Ðапам\'ÑÑаÑи мене';
-$lang['fullname'] = 'Ðовне Ñм\'Ñ';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'РеÑÑÑÑаÑÑÑ';
-$lang['profile'] = 'ÐÑоÑÑÐ»Ñ ÐºÐ¾ÑиÑÑÑваÑа';
-$lang['badlogin'] = 'ÐибаÑÑе, невÑÑне Ñм\'Ñ Ñи паÑолÑ.';
-$lang['minoredit'] = 'ÐезнаÑÐ½Ñ Ð·Ð¼Ñни';
-$lang['draftdate'] = 'ЧеÑнеÑка збеÑежена'; // full dformat date will be added
-
-$lang['regmissing'] = 'ÐибаÑÑе, ви Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñи вÑÑ Ð¿Ð¾Ð»Ñ.';
-$lang['reguexists'] = 'ÐибаÑÑе, коÑиÑÑÑÐ²Ð°Ñ Ð· Ñаким Ñменем вже ÑÑнÑÑ.';
-$lang['regsuccess'] = 'ÐоÑиÑÑÑваÑа бÑло ÑÑвоÑено Ñа паÑÐ¾Ð»Ñ Ð±Ñло вÑдпÑавлено на e-mail.';
-$lang['regsuccess2']= 'ÐоÑиÑÑÑваÑа бÑло ÑÑвоÑено.';
-$lang['regmailfail']= 'СÑ
оже, Ñо пÑи вÑдпÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð²ÑдбÑлаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Ðв\'ÑжÑÑÑÑÑ Ð· адмÑнÑÑÑÑаÑоÑом!';
-$lang['regbadmail'] = 'СÑ
оже, Ñо адÑеÑа e-mail невÑÑна - ÑкÑо ви вважаÑÑе, Ñо Ñе помилка, зв\'ÑжÑÑÑÑÑ Ð· адмÑнÑÑÑÑаÑоÑом';
-$lang['regbadpass'] = 'ÐÐ°Ð´Ð°Ð½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð½Ðµ ÑпÑвпадаÑÑÑ, ÑпÑобÑйÑе Ñе Ñаз';
-$lang['regpwmail'] = 'ÐаÑÐ¾Ð»Ñ ÐокÑÐÑкÑ';
-$lang['reghere'] = 'Ще немаÑÑе облÑкового запиÑÑ? ÐÑÑимайÑе його негайно';
-
-$lang['profna'] = 'Ð¦Ñ Ð²ÑÐºÑ Ð½Ðµ пÑдÑÑимÑÑ Ð·Ð¼Ñни пÑоÑÑлÑ';
-$lang['profnochange'] = 'ÐÐµÐ¼Ð°Ñ Ð·Ð¼Ñн, Ð½ÐµÐ¼Ð°Ñ Ñо ÑобиÑи.';
-$lang['profnoempty'] = 'Ðм\'Ñ Ð°Ð±Ð¾ e-mail не можÑÑÑ Ð±ÑÑи пÑÑÑими.';
-$lang['profchanged'] = 'ÐÑоÑÑÐ»Ñ ÑÑпÑÑно змÑнено.';
-
-$lang['pwdforget'] = 'ÐабÑли паÑолÑ? ÐÑÑимайÑе новий';
-$lang['resendna'] = 'Ð¦Ñ Ð²ÑÐºÑ Ð½Ðµ пÑдÑÑимÑÑ Ð¿Ð¾Ð²ÑоÑне вÑдпÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑолÑ.';
-$lang['resendpwd'] = 'ÐадÑÑлаÑи паÑÐ¾Ð»Ñ Ð´Ð»Ñ';
-$lang['resendpwdmissing'] = 'ÐибаÑÑе, ви Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñи ÑÑÑ Ð¿Ð¾Ð»Ñ.';
-$lang['resendpwdnouser'] = 'ÐибаÑÑе, Ñакий коÑиÑÑÑÐ²Ð°Ñ Ð½Ðµ ÑÑнÑÑ.';
-$lang['resendpwdsuccess'] = 'ÐÐ°Ñ Ð½Ð¾Ð²Ð¸Ð¹ паÑÐ¾Ð»Ñ Ð±Ñло надÑÑлано на email.';
-$lang['resendpwdbadauth'] = 'ÐибаÑÑе, код авÑенÑиÑÑкаÑÑÑ Ð½ÐµÐ²ÑÑний. ÐеÑевÑÑÑе, Ñи ви викоÑиÑÑали повне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿ÑдÑвеÑдженнÑ.';
-$lang['resendpwdconfirm'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿ÑдÑвеÑÐ´Ð¶ÐµÐ½Ð½Ñ Ð±Ñло вÑдÑÑлано на email.';
-
-$lang['txt_upload'] = 'ÐибеÑÑÑÑ Ñайл Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½ÑаженнÑ';
-$lang['txt_filename'] = 'ÐаванÑажиÑи Ñк (не обов\'Ñзкове)';
-$lang['txt_overwrt'] = 'ÐеÑезапиÑаÑи ÑÑнÑÑÑий Ñайл';
-$lang['lockedby'] = 'Ðаблоковано';
-$lang['lockexpire'] = 'Ðлок завеÑÑÑÑÑÑÑÑ Ð²';
-$lang['willexpire'] = 'ÐÐ°Ñ Ð±Ð»Ð¾Ðº Ð´Ð»Ñ ÑедагÑÐ²Ð°Ð½Ð½Ñ ÑÑÑÑ ÑÑоÑÑнки закÑнÑÑÑÑÑÑÑ ÑеÑез Ñ
вилинÑ.\nЩоб ÑникниÑÑи конÑлÑкÑÑв викоÑиÑÑовÑйÑе ÐºÐ½Ð¾Ð¿ÐºÑ Ð¿ÐµÑеглÑÐ´Ñ Ð´Ð»Ñ Ð¿ÑÐ¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ Ð±Ð»Ð¾ÐºÑваннÑ.';
-
-$lang['notsavedyet'] = 'ÐезбеÑÐµÐ¶ÐµÐ½Ñ Ð·Ð¼Ñни бÑдÑÑÑ Ð²ÑÑаÑенÑ.\nÐÑйÑно пÑодовжиÑи?';
-$lang['rssfailed'] = 'Ðиникла помилка пÑд ÑÐ°Ñ Ð¾ÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ RSS-ленÑи: ';
-$lang['nothingfound']= 'ÐÑÑого не знайдено.';
-
-$lang['mediaselect'] = 'ÐибÑÑ Ð¼ÐµÐ´Ñа-Ñайла';
-$lang['fileupload'] = 'ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¼ÐµÐ´Ñа-Ñайла';
-$lang['uploadsucc'] = 'ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¿ÑойÑло ÑÑпÑÑно';
-$lang['uploadfail'] = 'Ðомилка пÑи заванÑаженнÑ. Ðожливо невÑÑÐ½Ñ Ð¿Ñава?';
-$lang['uploadwrong'] = 'ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð±Ð¾Ñонено. Таке ÑозÑиÑÐµÐ½Ð½Ñ ÑÐ°Ð¹Ð»Ñ Ð½Ðµ дозволÑÑÑÑÑÑ!';
-$lang['uploadexist'] = 'Файл вже ÑÑнÑÑ. ÐÑÑого не зÑоблено.';
-$lang['deletesucc'] = 'Файл "%s" бÑло зниÑено.';
-$lang['deletefail'] = 'Ðеможливо зниÑиÑи "%s" - пеÑевÑÑÑе дозвÑл.';
-$lang['mediainuse'] = '"%s" не бÑло зниÑено - доÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑÑÑ.';
-$lang['namespaces'] = 'ÐÑоÑÑоÑи Ñмен';
-$lang['mediafiles'] = 'ÐоÑÑÑÐ¿Ð½Ñ Ñайли';
-
-$lang['js']['keepopen'] = 'ТÑимаÑи вÑкно вÑдкÑиÑим пÑд ÑÐ°Ñ Ð²Ð¸Ð±Ð¾ÑÑ'; // 'Keep window open on selection';
-$lang['js']['hidedetails'] = 'СÑ
оваÑи деÑалÑ';
-$lang['mediausage'] = 'ÐÐ»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñей Ñайл викоÑиÑÑовÑйÑе Ñакий ÑинÑакÑÑÑ:';
-$lang['mediaview'] = 'ÐеÑеглÑнÑÑи оÑигÑналÑний Ñайл';
-$lang['mediaroot'] = 'коÑÑнÑ';
-$lang['mediaupload'] = 'ÐаванÑÐ¶ÐµÐ½Ð½Ñ Ñайла Ñ Ð¿Ð¾ÑоÑний пÑоÑÑÑÑ Ñмен. Щоб ÑÑвоÑÑвиÑи пÑоÑÑÑÑи Ñмен, додайÑе ÑÑ
в поÑаÑок ÑÐ¼ÐµÐ½Ñ ÑÐ°Ð¹Ð»Ñ Ñа ÑоздÑлÑÑÑ Ð´Ð²Ð¾ÐºÑапками';
-$lang['mediaextchange'] = 'РозÑиÑÐµÐ½Ð½Ñ ÑÐ°Ð¹Ð»Ñ Ð±Ñло змÑнено з .%s на .%s!';
-
-$lang['reference'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ';
-$lang['ref_inuse'] = 'Цей Ñайл не може бÑÑи зниÑено, оÑкÑлÑки вÑн викоÑиÑÑовÑÑÑÑÑÑ Ñакими ÑÑоÑÑнками:';
-$lang['ref_hidden'] = 'ÐеÑÐºÑ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑÑнÑÑÑÑ Ð½Ð° ÑÑоÑÑнкаÑ
, Ð´Ð»Ñ ÑиÑÐ°Ð½Ð½Ñ ÑкиÑ
Ñ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ Ð¿Ñав.';
-
-$lang['hits'] = 'ÑпÑвпаданÑ';
-$lang['quickhits'] = 'СпÑÐ²Ð¿Ð°Ð´Ð°Ð½Ð½Ñ Ñ Ð½Ð°Ð·Ð²Ð°Ñ
ÑÑоÑÑнок';
-$lang['toc'] = 'ÐмÑÑÑ';
-$lang['current'] = 'поÑоÑний';
-$lang['yours'] = 'ÐаÑа веÑÑÑÑ';
-$lang['diff'] = 'показаÑи вÑдмÑнноÑÑÑ Ð²Ñд поÑоÑÐ½Ð¾Ñ Ð²ÐµÑÑÑÑ';
-$lang['line'] = 'Ð Ñдок';
-$lang['breadcrumb'] = 'ÐÑдвÑдано';
-$lang['youarehere'] = 'Ðи ÑÑÑ';
-$lang['lastmod'] = 'РоÑÑÐ°Ð½Ð½Ñ Ð·Ð¼Ñнено';
-$lang['by'] = ' ';
-$lang['deleted'] = 'зниÑено';
-$lang['created'] = 'ÑÑвоÑено';
-$lang['restored'] = 'ÑÑаÑа ÑевÑзÑÑ Ð²Ñдновлена';
-$lang['summary'] = 'ÐÑдÑÑмок змÑн';
-
-$lang['mail_newpage'] = 'ÑÑоÑÑÐ½ÐºÑ Ð´Ð¾Ð´Ð°Ð½Ð¾:';
-$lang['mail_changed'] = 'ÑÑоÑÑÐ½ÐºÑ Ð·Ð¼Ñнено:';
-$lang['mail_new_user'] = 'Ðовий коÑиÑÑÑваÑ:';
-
-$lang['nosmblinks'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° меÑÐµÐ¶ÐµÐ²Ñ ÑÐµÐºÑ Ð¿ÑаÑÑÑ ÑÑлÑки в Internet Explorer.\nÐле ви можеÑи ÑкопÑÑваÑи поÑиланнÑ.';
-
-$lang['qb_alert'] = 'ÐведÑÑÑ ÑекÑÑ, Ñкий ви бажаÑÑе вÑдÑоÑмаÑÑваÑи.\nÐого бÑде додано в кÑнеÑÑ Ð´Ð¾ÐºÑменÑÑ.';
-$lang['qb_bold'] = 'ÐапÑвжиÑний ÑекÑÑ';
-$lang['qb_italic'] = 'ÐÑÑÑив';
-$lang['qb_underl'] = 'ÐÑдкÑеÑлений ÑекÑÑ';
-$lang['qb_code'] = 'ТекÑÑ ÐºÐ¾Ð´Ð°';
-$lang['qb_strike'] = 'ÐакÑеÑлений ÑекÑÑ';
-$lang['qb_h1'] = 'Ðаголовок 1-го ÑÑвнÑ';
-$lang['qb_h2'] = 'Ðаголовок 2-го ÑÑвнÑ';
-$lang['qb_h3'] = 'Ðаголовок 3-го ÑÑвнÑ';
-$lang['qb_h4'] = 'Ðаголовок 4-го ÑÑвнÑ';
-$lang['qb_h5'] = 'Ðаголовок 5-го ÑÑвнÑ';
-$lang['qb_link'] = 'ÐнÑÑÑÑÑÐ½Ñ Ð¿Ð¾ÑиланнÑ';
-$lang['qb_extlink'] = 'ÐовнÑÑÐ½Ñ Ð¿Ð¾ÑиланнÑ';
-$lang['qb_hr'] = 'РоздÑлÑник';
-$lang['qb_ol'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÑмеÑованого ÑпиÑкÑ';
-$lang['qb_ul'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÐ½ÑмеÑованого ÑпиÑкÑ';
-$lang['qb_media'] = 'ÐÐ°Ð´Ð°Ð½Ñ Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ñ Ñа ÑнÑиÑ
ÑайлÑв';
-$lang['qb_sig'] = 'ÐодаÑи пÑдпиÑ';
-$lang['qb_smileys'] = 'ÐоÑмÑÑки';
-$lang['qb_chars'] = 'СпеÑÑалÑÐ½Ñ Ñимволи';
-
-$lang['del_confirm']= 'ÐÑйÑно зниÑиÑи обÑÐ°Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñи?';
-$lang['admin_register']= 'ÐодаÑи нового коÑиÑÑÑваÑа';
-
-$lang['metaedit'] = 'РедагÑваÑи меÑаданÑ';
-$lang['metasaveerr'] = 'Ðомилка запиÑÑ Ð¼ÐµÑаданиÑ
';
-$lang['metasaveok'] = 'ÐеÑÐ°Ð´Ð°Ð½Ñ Ð·Ð±ÐµÑежено';
-$lang['img_backto'] = 'ÐовеÑнÑÑиÑÑ Ð´Ð¾';
-$lang['img_title'] = 'Ðазва';
-$lang['img_caption'] = 'ÐÑдпиÑ';
-$lang['img_date'] = 'ÐаÑа';
-$lang['img_fname'] = 'Ðазва Ñайла';
-$lang['img_fsize'] = 'РозмÑÑ';
-$lang['img_artist'] = 'ФоÑогÑаÑ';
-$lang['img_copyr'] = 'ÐвÑоÑÑÑки пÑава';
-$lang['img_format'] = 'ФоÑмаÑ';
-$lang['img_camera'] = 'ÐамеÑа';
-$lang['img_keywords']= 'ÐлÑÑÐ¾Ð²Ñ Ñлова';
-
-$lang['subscribe_success'] = '%s доданий(на) до ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÑоÑÑнки %s';
-$lang['subscribe_error'] = 'Ðомилка пÑи Ð´Ð¾Ð´Ð°Ð½Ð½Ñ %s до ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÑоÑÑнки %s';
-$lang['subscribe_noaddress']= 'У ваÑÐ¾Ð¼Ñ Ð¿ÑоÑÑÐ»Ñ Ð½ÐµÐ¼Ð°Ñ Ð°Ð´ÑеÑи e-mail, ви не можеÑе коÑиÑÑÑваÑиÑÑ ÑпиÑками ÑозÑиланнÑ';
-$lang['unsubscribe_success']= '%s вилÑÑено Ð·Ñ ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÑоÑÑнки %s';
-$lang['unsubscribe_error'] = 'Ðомилка пÑи вилÑÑÐµÐ½Ð½Ñ %s Ð·Ñ ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ %s';
-
-/* auth.class language support */
-$lang['authmodfailed'] = 'ÐевÑÑна конÑÑгÑÑаÑÑÑ Ð°Ð²ÑенÑиÑÑкаÑÑÑ ÐºÐ¾ÑиÑÑÑваÑа. ÐÑÐ´Ñ Ð»Ð°Ñка повÑдомÑÑе пÑо Ñе адмÑнÑÑÑÑаÑоÑа.';
-$lang['authtempfail'] = 'ÐвÑенÑиÑÑкаÑÑÑ ÐºÐ¾ÑиÑÑÑваÑа ÑиÑаÑово не доÑÑÑпна. ЯкÑо Ñе бÑде пÑодовжÑваÑиÑÑ, бÑÐ´Ñ Ð»Ð°Ñка, повÑдомÑÑе адмÑнÑÑÑÑаÑоÑа';
-
-/* installer strings */
-$lang['i_chooselang'] = 'ÐбеÑÑÑÑ Ð¼Ð¾Ð²Ñ';
-$lang['i_installer'] = 'ÐÑогÑама ÑÑÑановки ÐокÑÐÑкÑ';
-$lang['i_wikiname'] = 'Ðм\'Ñ ÐÑкÑ';
-$lang['i_enableacl'] = 'ÐозволиÑи викоÑиÑÑÐ°Ð½Ð½Ñ ACL (Ñекомендовано)';
-$lang['i_superuser'] = 'СÑпеÑкоÑиÑÑÑваÑ';
-$lang['i_problems'] = 'ÐÑогÑама ÑÑÑановки знайÑла декÑлÑка пÑоблем, Ñо Ð²ÐºÐ°Ð·Ð°Ð½Ñ Ð½Ð¸Ð¶Ñе. Ðи не можеÑе пÑодовжиÑи доки не випÑавиÑе ÑÑ
';
-$lang['i_modified'] = 'РпÑиÑин безпеки Ñей ÑкÑÐ¸Ð¿Ñ Ð±Ñде пÑаÑÑваÑи ÑÑлÑки з Ð½Ð¾Ð²Ð¾Ñ Ñа немодиÑÑÐºÐ¾Ð²Ð°Ð½Ð¾Ñ ÑнÑÑалÑÑÑÑÑ ÐокÑÐÑкÑ
- Ðам ÑлÑд або Ñе Ñаз ÑозпакÑваÑи Ñайли з пакеÑÑ, Ñо бÑло заванÑажено, або звеÑнÑÑиÑÑ Ð´Ð¾ повноÑ
- <a href="http://wiki.splitbrain.org/wiki:install">ÑнÑÑÑÑкÑÑÑ Ð· ÑÑÑановки ÐокÑÐÑкÑ</a>';
-$lang['i_funcna'] = 'ФÑнкÑÑÑ PHP <code>%s</code> не доÑÑÑпна. ÐабÑÑÑ Ð²Ð°Ñ Ñ
оÑÑÑнг-пÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ Ð²ÑдклÑÑив ÑÑ Ð· ÑкиÑ
оÑÑ Ð¿ÑиÑин?';
-$lang['i_permfail'] = 'ÐокÑÐÑÐºÑ Ð½Ðµ Ð¼Ð°Ñ Ð¿Ñав на Ð·Ð°Ð¿Ð¸Ñ <code>%s</code>. Ðам доведеÑÑÑÑ Ð·Ð¼ÑниÑи пÑава доÑÑÑпа Ð´Ð»Ñ ÑÑÑÑ Ñеки';
-$lang['i_confexists'] = '<code>%s</code> вже ÑÑнÑÑ';
-$lang['i_writeerr'] = 'Ðеможливо ÑÑвоÑиÑи <code>%s</code>. Ðам поÑÑÑбно пеÑевÑÑиÑи пÑава доÑÑÑпа Ð´Ð»Ñ Ñайла/Ñеки Ñа ÑÑвоÑиÑи Ñайл вÑÑÑнÑ.';
-$lang['i_badhash'] = 'ÐевпÑзнаний або модиÑÑкований dokuwiki.php (hash=<code>%s</code>)';
-$lang['i_badval'] = '<code>%s</code> - невÑÑне або пÑÑÑе знаÑеннÑ.'; // випÑавÑе ÑÑ ÑÑÑокÑ, вона Ð¼ÐµÐ½Ñ Ð½Ðµ подобаÑÑÑÑÑ
-$lang['i_success'] = 'ÐонÑÑгÑÑÑÐ²Ð°Ð½Ð½Ñ ÑÑпÑÑно завеÑÑено. Ðи можеÑе зниÑиÑи Ñайл install.php.
- ÐеÑейдÑÑÑ Ð´Ð¾ <a href="doku.php">ваÑÐ¾Ñ Ð½Ð¾Ð²Ð¾Ñ ÐокÑÐÑкÑ</a>';
-$lang['i_failure'] = 'ÐÑи запиÑÑ Ñайла конÑÑгÑÑаÑÑÑ Ð²Ð¸Ð½Ð¸ÐºÐ»Ð¸ деÑÐºÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸. Ðожливо вам доведеÑÑÑÑ Ð²Ð¸Ð¿ÑавиÑи ÑÑ
ÑамоÑÑÑйно
- до поÑаÑÐºÑ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ <a href="doku.php">ваÑÐ¾Ñ Ð½Ð¾Ð²Ð¾Ñ ÐокÑÐÑкÑ</a>';
-$lang['i_policy'] = 'ÐоÑаÑкова полÑÑика ACL';
-$lang['i_pol0'] = 'ÐÑдкÑиÑа ÐÑÐºÑ Wiki (ÑиÑаннÑ, Ð·Ð°Ð¿Ð¸Ñ Ñа заванÑÐ°Ð¶ÐµÐ½Ð½Ñ ÑайлÑв Ð´Ð»Ñ Ð²ÑÑÑ
)';
-$lang['i_pol1'] = 'ÐÑблÑÑна ÐÑÐºÑ (ÑиÑÐ°Ð½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑÑ
, Ð·Ð°Ð¿Ð¸Ñ Ñа заванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°ÑеÑÑÑÑованиÑ
коÑиÑÑÑваÑÑв)';
-$lang['i_pol2'] = 'ÐакÑиÑа ÐÑÐºÑ (ÑиÑаннÑ, Ð·Ð°Ð¿Ð¸Ñ Ñа заванÑÐ°Ð¶ÐµÐ½Ð½Ñ ÑÑлÑки Ð´Ð»Ñ Ð·Ð°ÑеÑÑÑÑованиÑ
коÑиÑÑÑваÑÑв)';
-
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * ukrainian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Oleksiy Voronin <ovoronin at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = 'РедагÑваÑи';
+$lang['btn_source'] = 'ÐоказаÑи виÑ
Ñдний ÑекÑÑ';
+$lang['btn_show'] = 'ÐоказаÑи ÑÑоÑÑнкÑ';
+$lang['btn_create'] = 'СÑвоÑиÑи ÑÑоÑÑнкÑ';
+$lang['btn_search'] = 'ÐоÑÑк';
+$lang['btn_save'] = 'ÐбеÑегÑи';
+$lang['btn_preview']= 'ÐеÑеглÑд';
+$lang['btn_top'] = 'ÐовеÑнÑÑиÑÑ Ð½Ð°Ð²ÐµÑÑ
';
+$lang['btn_newer'] = '<< бÑлÑÑ Ð½Ð¾Ð²Ñ';
+$lang['btn_older'] = 'менÑÑ Ð½Ð¾Ð²Ñ >>';
+$lang['btn_revs'] = 'СÑаÑÑ ÑевÑзÑÑ';
+$lang['btn_recent'] = 'ÐÐµÐ´Ð°Ð²Ð½Ñ Ð·Ð¼Ñни';
+$lang['btn_upload'] = 'ÐаванÑажиÑи';
+$lang['btn_cancel'] = 'ÐÑдмÑниÑи';
+$lang['btn_index'] = 'ÐмÑÑÑ';
+$lang['btn_secedit']= 'РедагÑваÑи';
+$lang['btn_login'] = 'УвÑйÑи';
+$lang['btn_logout'] = 'ÐийÑи';
+$lang['btn_admin'] = 'ÐеÑÑваннÑ';
+$lang['btn_update'] = 'ÐбновиÑи';
+$lang['btn_delete'] = 'ÐниÑиÑи';
+$lang['btn_back'] = 'Ðазад';
+$lang['btn_backlink'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑÑди';
+$lang['btn_backtomedia'] = 'Ðазад до вибоÑÑ Ð¼ÐµÐ´Ñа-ÑайлÑ';
+$lang['btn_subscribe'] = 'ÐÑдпиÑаÑиÑÑ';
+$lang['btn_unsubscribe'] = 'ÐÑдпиÑаÑиÑÑ';
+$lang['btn_profile'] = 'ÐновиÑи пÑоÑÑлÑ';
+$lang['btn_reset'] = 'СбÑоÑ';
+$lang['btn_resendpwd'] = 'ÐадÑÑлаÑи новий паÑолÑ';
+$lang['btn_draft'] = 'РедагÑваÑи ÑеÑнеÑкÑ';
+$lang['btn_recover'] = 'ÐÑдновиÑи ÑеÑнеÑкÑ';
+$lang['btn_draftdel'] = 'ÐниÑиÑи ÑеÑнеÑкÑ';
+
+$lang['loggedinas'] = 'Ðи';
+$lang['user'] = 'ÐоÑиÑÑÑваÑ';
+$lang['pass'] = 'ÐаÑолÑ';
+$lang['newpass'] = 'Ðовий паÑолÑ';
+$lang['oldpass'] = 'ÐÑдÑвеÑдиÑи новий паÑолÑ';
+$lang['passchk'] = 'Ñе Ñаз';
+$lang['remember'] = 'Ðапам\'ÑÑаÑи мене';
+$lang['fullname'] = 'Ðовне Ñм\'Ñ';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'РеÑÑÑÑаÑÑÑ';
+$lang['profile'] = 'ÐÑоÑÑÐ»Ñ ÐºÐ¾ÑиÑÑÑваÑа';
+$lang['badlogin'] = 'ÐибаÑÑе, невÑÑне Ñм\'Ñ Ñи паÑолÑ.';
+$lang['minoredit'] = 'ÐезнаÑÐ½Ñ Ð·Ð¼Ñни';
+$lang['draftdate'] = 'ЧеÑнеÑка збеÑежена'; // full dformat date will be added
+
+$lang['regmissing'] = 'ÐибаÑÑе, ви Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñи вÑÑ Ð¿Ð¾Ð»Ñ.';
+$lang['reguexists'] = 'ÐибаÑÑе, коÑиÑÑÑÐ²Ð°Ñ Ð· Ñаким Ñменем вже ÑÑнÑÑ.';
+$lang['regsuccess'] = 'ÐоÑиÑÑÑваÑа бÑло ÑÑвоÑено Ñа паÑÐ¾Ð»Ñ Ð±Ñло вÑдпÑавлено на e-mail.';
+$lang['regsuccess2']= 'ÐоÑиÑÑÑваÑа бÑло ÑÑвоÑено.';
+$lang['regmailfail']= 'СÑ
оже, Ñо пÑи вÑдпÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð²ÑдбÑлаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Ðв\'ÑжÑÑÑÑÑ Ð· адмÑнÑÑÑÑаÑоÑом!';
+$lang['regbadmail'] = 'СÑ
оже, Ñо адÑеÑа e-mail невÑÑна - ÑкÑо ви вважаÑÑе, Ñо Ñе помилка, зв\'ÑжÑÑÑÑÑ Ð· адмÑнÑÑÑÑаÑоÑом';
+$lang['regbadpass'] = 'ÐÐ°Ð´Ð°Ð½Ñ Ð¿Ð°ÑÐ¾Ð»Ñ Ð½Ðµ ÑпÑвпадаÑÑÑ, ÑпÑобÑйÑе Ñе Ñаз';
+$lang['regpwmail'] = 'ÐаÑÐ¾Ð»Ñ ÐокÑÐÑкÑ';
+$lang['reghere'] = 'Ще немаÑÑе облÑкового запиÑÑ? ÐÑÑимайÑе його негайно';
+
+$lang['profna'] = 'Ð¦Ñ Ð²ÑÐºÑ Ð½Ðµ пÑдÑÑимÑÑ Ð·Ð¼Ñни пÑоÑÑлÑ';
+$lang['profnochange'] = 'ÐÐµÐ¼Ð°Ñ Ð·Ð¼Ñн, Ð½ÐµÐ¼Ð°Ñ Ñо ÑобиÑи.';
+$lang['profnoempty'] = 'Ðм\'Ñ Ð°Ð±Ð¾ e-mail не можÑÑÑ Ð±ÑÑи пÑÑÑими.';
+$lang['profchanged'] = 'ÐÑоÑÑÐ»Ñ ÑÑпÑÑно змÑнено.';
+
+$lang['pwdforget'] = 'ÐабÑли паÑолÑ? ÐÑÑимайÑе новий';
+$lang['resendna'] = 'Ð¦Ñ Ð²ÑÐºÑ Ð½Ðµ пÑдÑÑимÑÑ Ð¿Ð¾Ð²ÑоÑне вÑдпÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÑолÑ.';
+$lang['resendpwd'] = 'ÐадÑÑлаÑи паÑÐ¾Ð»Ñ Ð´Ð»Ñ';
+$lang['resendpwdmissing'] = 'ÐибаÑÑе, ви Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñи ÑÑÑ Ð¿Ð¾Ð»Ñ.';
+$lang['resendpwdnouser'] = 'ÐибаÑÑе, Ñакий коÑиÑÑÑÐ²Ð°Ñ Ð½Ðµ ÑÑнÑÑ.';
+$lang['resendpwdsuccess'] = 'ÐÐ°Ñ Ð½Ð¾Ð²Ð¸Ð¹ паÑÐ¾Ð»Ñ Ð±Ñло надÑÑлано на email.';
+$lang['resendpwdbadauth'] = 'ÐибаÑÑе, код авÑенÑиÑÑкаÑÑÑ Ð½ÐµÐ²ÑÑний. ÐеÑевÑÑÑе, Ñи ви викоÑиÑÑали повне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿ÑдÑвеÑдженнÑ.';
+$lang['resendpwdconfirm'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿ÑдÑвеÑÐ´Ð¶ÐµÐ½Ð½Ñ Ð±Ñло вÑдÑÑлано на email.';
+
+$lang['txt_upload'] = 'ÐибеÑÑÑÑ Ñайл Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½ÑаженнÑ';
+$lang['txt_filename'] = 'ÐаванÑажиÑи Ñк (не обов\'Ñзкове)';
+$lang['txt_overwrt'] = 'ÐеÑезапиÑаÑи ÑÑнÑÑÑий Ñайл';
+$lang['lockedby'] = 'Ðаблоковано';
+$lang['lockexpire'] = 'Ðлок завеÑÑÑÑÑÑÑÑ Ð²';
+$lang['willexpire'] = 'ÐÐ°Ñ Ð±Ð»Ð¾Ðº Ð´Ð»Ñ ÑедагÑÐ²Ð°Ð½Ð½Ñ ÑÑÑÑ ÑÑоÑÑнки закÑнÑÑÑÑÑÑÑ ÑеÑез Ñ
вилинÑ.\nЩоб ÑникниÑÑи конÑлÑкÑÑв викоÑиÑÑовÑйÑе ÐºÐ½Ð¾Ð¿ÐºÑ Ð¿ÐµÑеглÑÐ´Ñ Ð´Ð»Ñ Ð¿ÑÐ¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ Ð±Ð»Ð¾ÐºÑваннÑ.';
+
+$lang['notsavedyet'] = 'ÐезбеÑÐµÐ¶ÐµÐ½Ñ Ð·Ð¼Ñни бÑдÑÑÑ Ð²ÑÑаÑенÑ.\nÐÑйÑно пÑодовжиÑи?';
+$lang['rssfailed'] = 'Ðиникла помилка пÑд ÑÐ°Ñ Ð¾ÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ RSS-ленÑи: ';
+$lang['nothingfound']= 'ÐÑÑого не знайдено.';
+
+$lang['mediaselect'] = 'ÐибÑÑ Ð¼ÐµÐ´Ñа-Ñайла';
+$lang['fileupload'] = 'ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¼ÐµÐ´Ñа-Ñайла';
+$lang['uploadsucc'] = 'ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¿ÑойÑло ÑÑпÑÑно';
+$lang['uploadfail'] = 'Ðомилка пÑи заванÑаженнÑ. Ðожливо невÑÑÐ½Ñ Ð¿Ñава?';
+$lang['uploadwrong'] = 'ÐаванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð±Ð¾Ñонено. Таке ÑозÑиÑÐµÐ½Ð½Ñ ÑÐ°Ð¹Ð»Ñ Ð½Ðµ дозволÑÑÑÑÑÑ!';
+$lang['uploadexist'] = 'Файл вже ÑÑнÑÑ. ÐÑÑого не зÑоблено.';
+$lang['deletesucc'] = 'Файл "%s" бÑло зниÑено.';
+$lang['deletefail'] = 'Ðеможливо зниÑиÑи "%s" - пеÑевÑÑÑе дозвÑл.';
+$lang['mediainuse'] = '"%s" не бÑло зниÑено - доÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑÑÑ.';
+$lang['namespaces'] = 'ÐÑоÑÑоÑи Ñмен';
+$lang['mediafiles'] = 'ÐоÑÑÑÐ¿Ð½Ñ Ñайли';
+
+$lang['js']['keepopen'] = 'ТÑимаÑи вÑкно вÑдкÑиÑим пÑд ÑÐ°Ñ Ð²Ð¸Ð±Ð¾ÑÑ'; // 'Keep window open on selection';
+$lang['js']['hidedetails'] = 'СÑ
оваÑи деÑалÑ';
+$lang['mediausage'] = 'ÐÐ»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñей Ñайл викоÑиÑÑовÑйÑе Ñакий ÑинÑакÑÑÑ:';
+$lang['mediaview'] = 'ÐеÑеглÑнÑÑи оÑигÑналÑний Ñайл';
+$lang['mediaroot'] = 'коÑÑнÑ';
+$lang['mediaupload'] = 'ÐаванÑÐ¶ÐµÐ½Ð½Ñ Ñайла Ñ Ð¿Ð¾ÑоÑний пÑоÑÑÑÑ Ñмен. Щоб ÑÑвоÑÑвиÑи пÑоÑÑÑÑи Ñмен, додайÑе ÑÑ
в поÑаÑок ÑÐ¼ÐµÐ½Ñ ÑÐ°Ð¹Ð»Ñ Ñа ÑоздÑлÑÑÑ Ð´Ð²Ð¾ÐºÑапками';
+$lang['mediaextchange'] = 'РозÑиÑÐµÐ½Ð½Ñ ÑÐ°Ð¹Ð»Ñ Ð±Ñло змÑнено з .%s на .%s!';
+
+$lang['reference'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ';
+$lang['ref_inuse'] = 'Цей Ñайл не може бÑÑи зниÑено, оÑкÑлÑки вÑн викоÑиÑÑовÑÑÑÑÑÑ Ñакими ÑÑоÑÑнками:';
+$lang['ref_hidden'] = 'ÐеÑÐºÑ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑÑнÑÑÑÑ Ð½Ð° ÑÑоÑÑнкаÑ
, Ð´Ð»Ñ ÑиÑÐ°Ð½Ð½Ñ ÑкиÑ
Ñ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ Ð¿Ñав.';
+
+$lang['hits'] = 'ÑпÑвпаданÑ';
+$lang['quickhits'] = 'СпÑÐ²Ð¿Ð°Ð´Ð°Ð½Ð½Ñ Ñ Ð½Ð°Ð·Ð²Ð°Ñ
ÑÑоÑÑнок';
+$lang['toc'] = 'ÐмÑÑÑ';
+$lang['current'] = 'поÑоÑний';
+$lang['yours'] = 'ÐаÑа веÑÑÑÑ';
+$lang['diff'] = 'показаÑи вÑдмÑнноÑÑÑ Ð²Ñд поÑоÑÐ½Ð¾Ñ Ð²ÐµÑÑÑÑ';
+$lang['line'] = 'Ð Ñдок';
+$lang['breadcrumb'] = 'ÐÑдвÑдано';
+$lang['youarehere'] = 'Ðи ÑÑÑ';
+$lang['lastmod'] = 'РоÑÑÐ°Ð½Ð½Ñ Ð·Ð¼Ñнено';
+$lang['by'] = ' ';
+$lang['deleted'] = 'зниÑено';
+$lang['created'] = 'ÑÑвоÑено';
+$lang['restored'] = 'ÑÑаÑа ÑевÑзÑÑ Ð²Ñдновлена';
+$lang['summary'] = 'ÐÑдÑÑмок змÑн';
+
+$lang['mail_newpage'] = 'ÑÑоÑÑÐ½ÐºÑ Ð´Ð¾Ð´Ð°Ð½Ð¾:';
+$lang['mail_changed'] = 'ÑÑоÑÑÐ½ÐºÑ Ð·Ð¼Ñнено:';
+$lang['mail_new_user'] = 'Ðовий коÑиÑÑÑваÑ:';
+
+$lang['nosmblinks'] = 'ÐоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° меÑÐµÐ¶ÐµÐ²Ñ ÑÐµÐºÑ Ð¿ÑаÑÑÑ ÑÑлÑки в Internet Explorer.\nÐле ви можеÑи ÑкопÑÑваÑи поÑиланнÑ.';
+
+$lang['qb_alert'] = 'ÐведÑÑÑ ÑекÑÑ, Ñкий ви бажаÑÑе вÑдÑоÑмаÑÑваÑи.\nÐого бÑде додано в кÑнеÑÑ Ð´Ð¾ÐºÑменÑÑ.';
+$lang['qb_bold'] = 'ÐапÑвжиÑний ÑекÑÑ';
+$lang['qb_italic'] = 'ÐÑÑÑив';
+$lang['qb_underl'] = 'ÐÑдкÑеÑлений ÑекÑÑ';
+$lang['qb_code'] = 'ТекÑÑ ÐºÐ¾Ð´Ð°';
+$lang['qb_strike'] = 'ÐакÑеÑлений ÑекÑÑ';
+$lang['qb_h1'] = 'Ðаголовок 1-го ÑÑвнÑ';
+$lang['qb_h2'] = 'Ðаголовок 2-го ÑÑвнÑ';
+$lang['qb_h3'] = 'Ðаголовок 3-го ÑÑвнÑ';
+$lang['qb_h4'] = 'Ðаголовок 4-го ÑÑвнÑ';
+$lang['qb_h5'] = 'Ðаголовок 5-го ÑÑвнÑ';
+$lang['qb_link'] = 'ÐнÑÑÑÑÑÐ½Ñ Ð¿Ð¾ÑиланнÑ';
+$lang['qb_extlink'] = 'ÐовнÑÑÐ½Ñ Ð¿Ð¾ÑиланнÑ';
+$lang['qb_hr'] = 'РоздÑлÑник';
+$lang['qb_ol'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÑмеÑованого ÑпиÑкÑ';
+$lang['qb_ul'] = 'ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð½ÐµÐ½ÑмеÑованого ÑпиÑкÑ';
+$lang['qb_media'] = 'ÐÐ°Ð´Ð°Ð½Ñ Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ñ Ñа ÑнÑиÑ
ÑайлÑв';
+$lang['qb_sig'] = 'ÐодаÑи пÑдпиÑ';
+$lang['qb_smileys'] = 'ÐоÑмÑÑки';
+$lang['qb_chars'] = 'СпеÑÑалÑÐ½Ñ Ñимволи';
+
+$lang['del_confirm']= 'ÐÑйÑно зниÑиÑи обÑÐ°Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñи?';
+$lang['admin_register']= 'ÐодаÑи нового коÑиÑÑÑваÑа';
+
+$lang['metaedit'] = 'РедагÑваÑи меÑаданÑ';
+$lang['metasaveerr'] = 'Ðомилка запиÑÑ Ð¼ÐµÑаданиÑ
';
+$lang['metasaveok'] = 'ÐеÑÐ°Ð´Ð°Ð½Ñ Ð·Ð±ÐµÑежено';
+$lang['img_backto'] = 'ÐовеÑнÑÑиÑÑ Ð´Ð¾';
+$lang['img_title'] = 'Ðазва';
+$lang['img_caption'] = 'ÐÑдпиÑ';
+$lang['img_date'] = 'ÐаÑа';
+$lang['img_fname'] = 'Ðазва Ñайла';
+$lang['img_fsize'] = 'РозмÑÑ';
+$lang['img_artist'] = 'ФоÑогÑаÑ';
+$lang['img_copyr'] = 'ÐвÑоÑÑÑки пÑава';
+$lang['img_format'] = 'ФоÑмаÑ';
+$lang['img_camera'] = 'ÐамеÑа';
+$lang['img_keywords']= 'ÐлÑÑÐ¾Ð²Ñ Ñлова';
+
+$lang['subscribe_success'] = '%s доданий(на) до ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÑоÑÑнки %s';
+$lang['subscribe_error'] = 'Ðомилка пÑи Ð´Ð¾Ð´Ð°Ð½Ð½Ñ %s до ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÑоÑÑнки %s';
+$lang['subscribe_noaddress']= 'У ваÑÐ¾Ð¼Ñ Ð¿ÑоÑÑÐ»Ñ Ð½ÐµÐ¼Ð°Ñ Ð°Ð´ÑеÑи e-mail, ви не можеÑе коÑиÑÑÑваÑиÑÑ ÑпиÑками ÑозÑиланнÑ';
+$lang['unsubscribe_success']= '%s вилÑÑено Ð·Ñ ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑÑоÑÑнки %s';
+$lang['unsubscribe_error'] = 'Ðомилка пÑи вилÑÑÐµÐ½Ð½Ñ %s Ð·Ñ ÑпиÑÐºÑ ÑозÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ %s';
+
+/* auth.class language support */
+$lang['authmodfailed'] = 'ÐевÑÑна конÑÑгÑÑаÑÑÑ Ð°Ð²ÑенÑиÑÑкаÑÑÑ ÐºÐ¾ÑиÑÑÑваÑа. ÐÑÐ´Ñ Ð»Ð°Ñка повÑдомÑÑе пÑо Ñе адмÑнÑÑÑÑаÑоÑа.';
+$lang['authtempfail'] = 'ÐвÑенÑиÑÑкаÑÑÑ ÐºÐ¾ÑиÑÑÑваÑа ÑиÑаÑово не доÑÑÑпна. ЯкÑо Ñе бÑде пÑодовжÑваÑиÑÑ, бÑÐ´Ñ Ð»Ð°Ñка, повÑдомÑÑе адмÑнÑÑÑÑаÑоÑа';
+
+/* installer strings */
+$lang['i_chooselang'] = 'ÐбеÑÑÑÑ Ð¼Ð¾Ð²Ñ';
+$lang['i_installer'] = 'ÐÑогÑама ÑÑÑановки ÐокÑÐÑкÑ';
+$lang['i_wikiname'] = 'Ðм\'Ñ ÐÑкÑ';
+$lang['i_enableacl'] = 'ÐозволиÑи викоÑиÑÑÐ°Ð½Ð½Ñ ACL (Ñекомендовано)';
+$lang['i_superuser'] = 'СÑпеÑкоÑиÑÑÑваÑ';
+$lang['i_problems'] = 'ÐÑогÑама ÑÑÑановки знайÑла декÑлÑка пÑоблем, Ñо Ð²ÐºÐ°Ð·Ð°Ð½Ñ Ð½Ð¸Ð¶Ñе. Ðи не можеÑе пÑодовжиÑи доки не випÑавиÑе ÑÑ
';
+$lang['i_modified'] = 'РпÑиÑин безпеки Ñей ÑкÑÐ¸Ð¿Ñ Ð±Ñде пÑаÑÑваÑи ÑÑлÑки з Ð½Ð¾Ð²Ð¾Ñ Ñа немодиÑÑÐºÐ¾Ð²Ð°Ð½Ð¾Ñ ÑнÑÑалÑÑÑÑÑ ÐокÑÐÑкÑ
+ Ðам ÑлÑд або Ñе Ñаз ÑозпакÑваÑи Ñайли з пакеÑÑ, Ñо бÑло заванÑажено, або звеÑнÑÑиÑÑ Ð´Ð¾ повноÑ
+ <a href="http://wiki.splitbrain.org/wiki:install">ÑнÑÑÑÑкÑÑÑ Ð· ÑÑÑановки ÐокÑÐÑкÑ</a>';
+$lang['i_funcna'] = 'ФÑнкÑÑÑ PHP <code>%s</code> не доÑÑÑпна. ÐабÑÑÑ Ð²Ð°Ñ Ñ
оÑÑÑнг-пÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ Ð²ÑдклÑÑив ÑÑ Ð· ÑкиÑ
оÑÑ Ð¿ÑиÑин?';
+$lang['i_permfail'] = 'ÐокÑÐÑÐºÑ Ð½Ðµ Ð¼Ð°Ñ Ð¿Ñав на Ð·Ð°Ð¿Ð¸Ñ <code>%s</code>. Ðам доведеÑÑÑÑ Ð·Ð¼ÑниÑи пÑава доÑÑÑпа Ð´Ð»Ñ ÑÑÑÑ Ñеки';
+$lang['i_confexists'] = '<code>%s</code> вже ÑÑнÑÑ';
+$lang['i_writeerr'] = 'Ðеможливо ÑÑвоÑиÑи <code>%s</code>. Ðам поÑÑÑбно пеÑевÑÑиÑи пÑава доÑÑÑпа Ð´Ð»Ñ Ñайла/Ñеки Ñа ÑÑвоÑиÑи Ñайл вÑÑÑнÑ.';
+$lang['i_badhash'] = 'ÐевпÑзнаний або модиÑÑкований dokuwiki.php (hash=<code>%s</code>)';
+$lang['i_badval'] = '<code>%s</code> - невÑÑне або пÑÑÑе знаÑеннÑ.'; // випÑавÑе ÑÑ ÑÑÑокÑ, вона Ð¼ÐµÐ½Ñ Ð½Ðµ подобаÑÑÑÑÑ
+$lang['i_success'] = 'ÐонÑÑгÑÑÑÐ²Ð°Ð½Ð½Ñ ÑÑпÑÑно завеÑÑено. Ðи можеÑе зниÑиÑи Ñайл install.php.
+ ÐеÑейдÑÑÑ Ð´Ð¾ <a href="doku.php">ваÑÐ¾Ñ Ð½Ð¾Ð²Ð¾Ñ ÐокÑÐÑкÑ</a>';
+$lang['i_failure'] = 'ÐÑи запиÑÑ Ñайла конÑÑгÑÑаÑÑÑ Ð²Ð¸Ð½Ð¸ÐºÐ»Ð¸ деÑÐºÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸. Ðожливо вам доведеÑÑÑÑ Ð²Ð¸Ð¿ÑавиÑи ÑÑ
ÑамоÑÑÑйно
+ до поÑаÑÐºÑ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ <a href="doku.php">ваÑÐ¾Ñ Ð½Ð¾Ð²Ð¾Ñ ÐокÑÐÑкÑ</a>';
+$lang['i_policy'] = 'ÐоÑаÑкова полÑÑика ACL';
+$lang['i_pol0'] = 'ÐÑдкÑиÑа ÐÑÐºÑ Wiki (ÑиÑаннÑ, Ð·Ð°Ð¿Ð¸Ñ Ñа заванÑÐ°Ð¶ÐµÐ½Ð½Ñ ÑайлÑв Ð´Ð»Ñ Ð²ÑÑÑ
)';
+$lang['i_pol1'] = 'ÐÑблÑÑна ÐÑÐºÑ (ÑиÑÐ°Ð½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑÑ
, Ð·Ð°Ð¿Ð¸Ñ Ñа заванÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°ÑеÑÑÑÑованиÑ
коÑиÑÑÑваÑÑв)';
+$lang['i_pol2'] = 'ÐакÑиÑа ÐÑÐºÑ (ÑиÑаннÑ, Ð·Ð°Ð¿Ð¸Ñ Ñа заванÑÐ°Ð¶ÐµÐ½Ð½Ñ ÑÑлÑки Ð´Ð»Ñ Ð·Ð°ÑеÑÑÑÑованиÑ
коÑиÑÑÑваÑÑв)';
+
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/uk/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/uk/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÐÑ
Ñд до вÑÐºÑ ======
-
-Ðи не ввÑйÑли до ÑиÑÑеми. ÐведÑÑÑ Ð²Ð°ÑÑ ÑеÑÑÑÑаÑÑÐ¹Ð½Ñ Ð´Ð°Ð½Ñ Ð´Ð»Ñ Ñого, Ñоб ÑвÑйÑи.
-У ваÑÐ¾Ð¼Ñ Ð¾Ð³Ð»ÑдаÑÑ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð±ÑÑи ввÑÐ¼ÐºÐ½ÐµÐ½Ñ cookies.
-
+====== ÐÑ
Ñд до вÑÐºÑ ======
+
+Ðи не ввÑйÑли до ÑиÑÑеми. ÐведÑÑÑ Ð²Ð°ÑÑ ÑеÑÑÑÑаÑÑÐ¹Ð½Ñ Ð´Ð°Ð½Ñ Ð´Ð»Ñ Ñого, Ñоб ÑвÑйÑи.
+У ваÑÐ¾Ð¼Ñ Ð¾Ð³Ð»ÑдаÑÑ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð±ÑÑи ввÑÐ¼ÐºÐ½ÐµÐ½Ñ cookies.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-СÑоÑÑнка в ваÑÐ¾Ð¼Ñ ÐокÑÐÑÐºÑ Ð±Ñла змÑнена. ÐеÑÐ°Ð»Ñ Ð½Ð¸Ð¶Ñе:
-
-ÐаÑа : @DATE@
-ÐглÑÐ´Ð°Ñ : @BROWSER@
-ÐдÑеÑа IP : @IPADDRESS@
-Ðм'Ñ Ñ
оÑÑа : @HOSTNAME@
-СÑаÑа ÑевÑзÑÑ: @OLDPAGE@
-Ðова ÑевÑзÑÑ : @NEWPAGE@
-ÐÑдÑÑмок : @SUMMARY@
-ÐоÑиÑÑÑÐ²Ð°Ñ : @USER@
-
- at DIFF@
-
-
---
-Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ñло ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
- at DOKUWIKIURL@
+СÑоÑÑнка в ваÑÐ¾Ð¼Ñ ÐокÑÐÑÐºÑ Ð±Ñла змÑнена. ÐеÑÐ°Ð»Ñ Ð½Ð¸Ð¶Ñе:
+
+ÐаÑа : @DATE@
+ÐглÑÐ´Ð°Ñ : @BROWSER@
+ÐдÑеÑа IP : @IPADDRESS@
+Ðм'Ñ Ñ
оÑÑа : @HOSTNAME@
+СÑаÑа ÑевÑзÑÑ: @OLDPAGE@
+Ðова ÑевÑзÑÑ : @NEWPAGE@
+ÐÑдÑÑмок : @SUMMARY@
+ÐоÑиÑÑÑÐ²Ð°Ñ : @USER@
+
+ at DIFF@
+
+
+--
+Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ñло ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/uk/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Ð¦Ñ ÑÑоÑÑнка Ñе не ÑÑнÑÑ======
-
-Ðи пÑийÑли за поÑиланнÑм на ÑÑоÑÑнкÑ, Ñо Ñе не ÑÑнÑÑ.
-ЯкÑо ваÑÑ Ð¿Ñава дозволÑÑÑÑ, ви можеÑе ÑÑвоÑиÑи ÑÑ ÑÑоÑÑнкÑ
-наÑиÑнÑвÑи ÐºÐ½Ð¾Ð¿ÐºÑ ''СÑвоÑиÑи ÑÑоÑÑнкÑ''.
-
+======Ð¦Ñ ÑÑоÑÑнка Ñе не ÑÑнÑÑ======
+
+Ðи пÑийÑли за поÑиланнÑм на ÑÑоÑÑнкÑ, Ñо Ñе не ÑÑнÑÑ.
+ЯкÑо ваÑÑ Ð¿Ñава дозволÑÑÑÑ, ви можеÑе ÑÑвоÑиÑи ÑÑ ÑÑоÑÑнкÑ
+наÑиÑнÑвÑи ÐºÐ½Ð¾Ð¿ÐºÑ ''СÑвоÑиÑи ÑÑоÑÑнкÑ''.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ÐÐµÐ¼Ð°Ñ ÑÐ°ÐºÐ¾Ñ ÑевÑзÑÑ======
-
-Ðказана ÑевÑзÑÑ Ð½Ðµ ÑÑнÑÑ. ÐикоÑиÑÑовÑйÑе ÐºÐ½Ð¾Ð¿ÐºÑ ''СÑаÑÑ ÑевÑзÑÑ'', Ñоб оÑÑимаÑи
-пеÑелÑк ÑевÑзÑй ÑÑого докÑменÑÑ.
-
+======ÐÐµÐ¼Ð°Ñ ÑÐ°ÐºÐ¾Ñ ÑевÑзÑÑ======
+
+Ðказана ÑевÑзÑÑ Ð½Ðµ ÑÑнÑÑ. ÐикоÑиÑÑовÑйÑе ÐºÐ½Ð¾Ð¿ÐºÑ ''СÑаÑÑ ÑевÑзÑÑ'', Ñоб оÑÑимаÑи
+пеÑелÑк ÑевÑзÑй ÑÑого докÑменÑÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-ÐобÑого днÑ, @FULLNAME@!
-
-ÐаÑÑ Ð´Ð°Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑа Ð´Ð»Ñ @TITLE@ на @DOKUWIKIURL@
-
-Login : @LOGIN@
-Password : @PASSWORD@
-
---
-Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ñло ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
- at DOKUWIKIURL@
+ÐобÑого днÑ, @FULLNAME@!
+
+ÐаÑÑ Ð´Ð°Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑа Ð´Ð»Ñ @TITLE@ на @DOKUWIKIURL@
+
+Login : @LOGIN@
+Password : @PASSWORD@
+
+--
+Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ñло ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/uk/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ÐопеÑеднÑй пеÑеглÑд======
-
-Це попеÑеднÑй пеÑеглÑд Ñого, Ñк бÑде виглÑдаÑи Ð²Ð°Ñ ÑекÑÑ. Ðе забÑвайÑе, ÑекÑÑ Ñе
-**не збеÑежено**!
-
+======ÐопеÑеднÑй пеÑеглÑд======
+
+Це попеÑеднÑй пеÑеглÑд Ñого, Ñк бÑде виглÑдаÑи Ð²Ð°Ñ ÑекÑÑ. Ðе забÑвайÑе, ÑекÑÑ Ñе
+**не збеÑежено**!
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-ÐобÑого днÑ, @FULLNAME@!
-
-Ð¥ÑоÑÑ Ð·Ð°Ð¿Ð¸Ñав новий паÑÐ¾Ð»Ñ Ð´Ð»Ñ ÐºÐ¾ÑиÑÑÑваÑа @TITLE@ на @DOKUWIKIURL@
-
-ЯкÑо Ñе бÑли не ви, ÑгноÑÑйÑе Ñе повÑдомленнÑ.
-
-ÐÐ»Ñ Ð¿ÑдÑвеÑдженнÑ, Ñо Ñе дÑйÑно ви запиÑали новий паÑолÑ, бÑÐ´Ñ Ð»Ð°Ñка
-пеÑейдÑÑÑ Ð¿Ð¾ наÑÑÑÐ¿Ð½Ð¾Ð¼Ñ Ð¿Ð¾ÑиланнÑ.
-
- at CONFIRM@
-
---
-Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
- at DOKUWIKIURL@
+ÐобÑого днÑ, @FULLNAME@!
+
+Ð¥ÑоÑÑ Ð·Ð°Ð¿Ð¸Ñав новий паÑÐ¾Ð»Ñ Ð´Ð»Ñ ÐºÐ¾ÑиÑÑÑваÑа @TITLE@ на @DOKUWIKIURL@
+
+ЯкÑо Ñе бÑли не ви, ÑгноÑÑйÑе Ñе повÑдомленнÑ.
+
+ÐÐ»Ñ Ð¿ÑдÑвеÑдженнÑ, Ñо Ñе дÑйÑно ви запиÑали новий паÑолÑ, бÑÐ´Ñ Ð»Ð°Ñка
+пеÑейдÑÑÑ Ð¿Ð¾ наÑÑÑÐ¿Ð½Ð¾Ð¼Ñ Ð¿Ð¾ÑиланнÑ.
+
+ at CONFIRM@
+
+--
+Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/uk/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/uk/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======ÐÐµÐ´Ð°Ð²Ð½Ñ Ð·Ð¼ÑнÑ======
-
-ÐаÑÑÑÐ¿Ð½Ñ ÑÑоÑÑнки бÑли неÑодавно змÑненÑ.
-
-
+======ÐÐµÐ´Ð°Ð²Ð½Ñ Ð·Ð¼ÑнÑ======
+
+ÐаÑÑÑÐ¿Ð½Ñ ÑÑоÑÑнки бÑли неÑодавно змÑненÑ.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,7 +1,7 @@
-====== РеÑÑÑÑаÑÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ коÑиÑÑÑваÑа ======
-
-ÐведÑÑÑ Ð½ÐµÐ¾Ð±Ñ
ÑÐ´Ð½Ñ ÑнÑоÑмаÑÑÑ Ð´Ð»Ñ Ñого, Ñоб ÑÑвоÑиÑи нового коÑиÑÑÑваÑа в
-ÑÑй вÑкÑ. ÐÑдÑÑе впевненÑ, Ñо ви ввели **вÑÑÐ½Ñ Ð°Ð´ÑеÑÑ e-mail**, ÑкÑо ваÑ
-не запиÑаÑÑÑ Ð¿Ð°ÑолÑ, Ñо новий паÑÐ¾Ð»Ñ Ð±Ñде вÑдÑÑлано на ÑÑ Ð°Ð´ÑеÑÑ.
-Ðм'Ñ ÐºÐ¾ÑиÑÑÑваÑа повинно бÑÑи Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ñ [[doku>wiki:pagename|Ð½Ð°Ð·Ð²Ð¾Ñ ÑÑоÑÑнки]] вÑкÑ.
-
+====== РеÑÑÑÑаÑÑÑ Ð½Ð¾Ð²Ð¾Ð³Ð¾ коÑиÑÑÑваÑа ======
+
+ÐведÑÑÑ Ð½ÐµÐ¾Ð±Ñ
ÑÐ´Ð½Ñ ÑнÑоÑмаÑÑÑ Ð´Ð»Ñ Ñого, Ñоб ÑÑвоÑиÑи нового коÑиÑÑÑваÑа в
+ÑÑй вÑкÑ. ÐÑдÑÑе впевненÑ, Ñо ви ввели **вÑÑÐ½Ñ Ð°Ð´ÑеÑÑ e-mail**, ÑкÑо ваÑ
+не запиÑаÑÑÑ Ð¿Ð°ÑолÑ, Ñо новий паÑÐ¾Ð»Ñ Ð±Ñде вÑдÑÑлано на ÑÑ Ð°Ð´ÑеÑÑ.
+Ðм'Ñ ÐºÐ¾ÑиÑÑÑваÑа повинно бÑÑи Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ñ [[doku>wiki:pagename|Ð½Ð°Ð·Ð²Ð¾Ñ ÑÑоÑÑнки]] вÑкÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,14 +1,14 @@
-ÐаÑеÑÑÑÑовано нового коÑиÑÑÑваÑа. ÐеÑеглÑнÑÑе деÑалÑ:
-
-ÐоÑиÑÑÑÐ²Ð°Ñ : @NEWUSER@
-Ðовне Ñм'Ñ : @NEWNAME@
-E-Mail : @NEWEMAIL@
-
-ÐаÑа : @DATE@
-ÐглÑÐ´Ð°Ñ : @BROWSER@
-ÐдÑеÑа IP : @IPADDRESS@
-Ðазва Ñ
оÑÑÑ : @HOSTNAME@
-
---
-Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
- at DOKUWIKIURL@
+ÐаÑеÑÑÑÑовано нового коÑиÑÑÑваÑа. ÐеÑеглÑнÑÑе деÑалÑ:
+
+ÐоÑиÑÑÑÐ²Ð°Ñ : @NEWUSER@
+Ðовне Ñм'Ñ : @NEWNAME@
+E-Mail : @NEWEMAIL@
+
+ÐаÑа : @DATE@
+ÐглÑÐ´Ð°Ñ : @BROWSER@
+ÐдÑеÑа IP : @IPADDRESS@
+Ðазва Ñ
оÑÑÑ : @HOSTNAME@
+
+--
+Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/uk/resendpwd.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/uk/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======СÑаÑÑ ÑевÑзÑÑ======
-
-Це ÑÑаÑÑ Ð²ÐµÑÑÑÑ Ð¿Ð¾ÑоÑного докÑменÑа. ÐÐ»Ñ Ñого, Ñоб повеÑнÑÑиÑÑ Ð´Ð¾ ÑÑаÑÐ¾Ñ Ð²ÐµÑÑÑÑ,
-вибеÑÑÑÑ ÑÑ, наÑиÑнÑÑÑ ''РедагÑваÑи'', Ñа збеÑежÑÑÑ ÑÑоÑÑнкÑ.
-
+======СÑаÑÑ ÑевÑзÑÑ======
+
+Це ÑÑаÑÑ Ð²ÐµÑÑÑÑ Ð¿Ð¾ÑоÑного докÑменÑа. ÐÐ»Ñ Ñого, Ñоб повеÑнÑÑиÑÑ Ð´Ð¾ ÑÑаÑÐ¾Ñ Ð²ÐµÑÑÑÑ,
+вибеÑÑÑÑ ÑÑ, наÑиÑнÑÑÑ ''РедагÑваÑи'', Ñа збеÑежÑÑÑ ÑÑоÑÑнкÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-======ÐоÑÑк======
-
-ÐивÑÑÑÑÑ ÑезÑлÑÑаÑи поÑÑÐºÑ Ð½Ð¸Ð¶Ñе. ЯкÑо ви не знайÑли Ñе,
-Ñо ви ÑÑкали, ви можеÑе ÑÑвоÑиÑи або ÑедагÑваÑи ÑÑоÑÑнкÑ,
-Ñо Ð¼Ð°Ñ Ñаке ж Ñм'Ñ, Ñо Ñ Ð¿Ð¾ÑÑковий Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° допомогоÑ
-вÑдповÑÐ´Ð½Ð¾Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸.
-
-=====Results=====
+======ÐоÑÑк======
+
+ÐивÑÑÑÑÑ ÑезÑлÑÑаÑи поÑÑÐºÑ Ð½Ð¸Ð¶Ñе. ЯкÑо ви не знайÑли Ñе,
+Ñо ви ÑÑкали, ви можеÑе ÑÑвоÑиÑи або ÑедагÑваÑи ÑÑоÑÑнкÑ,
+Ñо Ð¼Ð°Ñ Ñаке ж Ñм'Ñ, Ñо Ñ Ð¿Ð¾ÑÑковий Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° допомогоÑ
+вÑдповÑÐ´Ð½Ð¾Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸.
+
+=====Results=====
Modified: site/trunk/www-root/wiki/inc/lang/uk/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Це ÑÑаÑа веÑÑÑÑ Ð´Ð¾ÐºÑменÑÑ!**
-----
+**Це ÑÑаÑа веÑÑÑÑ Ð´Ð¾ÐºÑменÑÑ!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/uk/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
# This list is based upon the ones found at http://www.ranks.nl/stopwords/
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/uk/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-ÐобÑого днÑ!
-
-СÑоÑÑнка @PAGE@ в вÑÐºÑ @TITLE@ змÑнилаÑÑ.
-ÐеÑеглÑнÑÑе змÑни:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-Щоб вÑдпиÑаÑиÑÑ Ð²Ñд ÑиÑ
повÑдомленÑ, ÑвÑйдÑÑÑ Ð² вÑÐºÑ Ð·Ð° адÑеÑоÑ
- at DOKUWIKIURL@, вÑдвÑдайÑе @NEWPAGE@
-Ñа обеÑÑÑÑ 'ÐÑдпиÑаÑиÑÑ'
-
---
-Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
- at DOKUWIKIURL@
+ÐобÑого днÑ!
+
+СÑоÑÑнка @PAGE@ в вÑÐºÑ @TITLE@ змÑнилаÑÑ.
+ÐеÑеглÑнÑÑе змÑни:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+Щоб вÑдпиÑаÑиÑÑ Ð²Ñд ÑиÑ
повÑдомленÑ, ÑвÑйдÑÑÑ Ð² вÑÐºÑ Ð·Ð° адÑеÑоÑ
+ at DOKUWIKIURL@, вÑдвÑдайÑе @NEWPAGE@
+Ñа обеÑÑÑÑ 'ÐÑдпиÑаÑиÑÑ'
+
+--
+Це повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÑвоÑене ÐокÑÐÑÐºÑ Ð·
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/uk/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== ÐбновиÑи Ð²Ð°Ñ Ð¿ÑоÑÑÐ»Ñ ======
-
-Ðам необÑ
Ñодно заповниÑи ÑÑлÑки ÑÑ Ð¿Ð¾Ð»Ñ, ÑÐºÑ Ð²Ð¸ бажаÑÑе змÑниÑи. Ðи не можеÑе змÑниÑи
-Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа.
-
-
+====== ÐбновиÑи Ð²Ð°Ñ Ð¿ÑоÑÑÐ»Ñ ======
+
+Ðам необÑ
Ñодно заповниÑи ÑÑлÑки ÑÑ Ð¿Ð¾Ð»Ñ, ÑÐºÑ Ð²Ð¸ бажаÑÑе змÑниÑи. Ðи не можеÑе змÑниÑи
+Ñм'Ñ ÐºÐ¾ÑиÑÑÑваÑа.
+
+
Modified: site/trunk/www-root/wiki/inc/lang/uk/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/uk/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/uk/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Ðаблокований СÐÐÐ======
-
-ÐаÑÑ Ð·Ð¼Ñни **не бÑли** збеÑÐµÐ¶ÐµÐ½Ñ ÑÐ¾Ð¼Ñ Ñо вони мÑÑÑÑÑÑ Ð¾Ð´Ð½Ð¾ Ñи декÑлÑка заблокованиÑ
ÑлÑв.
-ЯкÑи ви намагалиÑÑ Ð´Ð¾Ð´Ð°Ñи Ñпам до вÑкÑ, Ñо неÑ
ай вам бÑде ÑоÑомно. ЯкÑо ви вважаÑÑе,
-Ñо Ñе помилка, звеÑнÑÑÑÑÑ Ð´Ð¾ адмÑнÑÑÑÑаÑоÑа ÑÑÑÑ ÐÑкÑ.
-
+======Ðаблокований СÐÐÐ======
+
+ÐаÑÑ Ð·Ð¼Ñни **не бÑли** збеÑÐµÐ¶ÐµÐ½Ñ ÑÐ¾Ð¼Ñ Ñо вони мÑÑÑÑÑÑ Ð¾Ð´Ð½Ð¾ Ñи декÑлÑка заблокованиÑ
ÑлÑв.
+ЯкÑи ви намагалиÑÑ Ð´Ð¾Ð´Ð°Ñи Ñпам до вÑкÑ, Ñо неÑ
ай вам бÑде ÑоÑомно. ЯкÑо ви вважаÑÑе,
+Ñо Ñе помилка, звеÑнÑÑÑÑÑ Ð´Ð¾ адмÑнÑÑÑÑаÑоÑа ÑÑÑÑ ÐÑкÑ.
+
Modified: site/trunk/www-root/wiki/inc/lang/vi/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Quản lý ======
-
-Sau Äây là các mục quản lý trong DokuWiki.
+====== Quản lý ======
+
+Sau Äây là các mục quản lý trong DokuWiki.
Modified: site/trunk/www-root/wiki/inc/lang/vi/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Ná»i vá» trưá»c ======
-
-Äây là danh sách các trang hình như Äã ná»i và o trang nà y.
+====== Ná»i vá» trưá»c ======
+
+Äây là danh sách các trang hình như Äã ná»i và o trang nà y.
Modified: site/trunk/www-root/wiki/inc/lang/vi/conflict.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/conflict.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/conflict.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-====== Có phiên bản má»i hÆ¡n ======
-
-Trang bạn Äang biên soạn có má»t phiên bản má»i hÆ¡n. Viá»c nà y xảy ra khi má»t
-bạn Äá»i trang ấy khi bạn Äang biên soạn trang nà y.
-
-Xem kỹ những thay Äá»i dưá»i Äây, rá»i quyết Äá»nh giữ phiên bản nà o. Nếu chá»n
-''bảo lưu'', phiên bản cá»§a bạn ÄÆ°á»£c giữ lại. Bấm ''huá»·'' Äá» giữ phiên bản
-kia.
+====== Có phiên bản má»i hÆ¡n ======
+
+Trang bạn Äang biên soạn có má»t phiên bản má»i hÆ¡n. Viá»c nà y xảy ra khi má»t
+bạn Äá»i trang ấy khi bạn Äang biên soạn trang nà y.
+
+Xem kỹ những thay Äá»i dưá»i Äây, rá»i quyết Äá»nh giữ phiên bản nà o. Nếu chá»n
+''bảo lưu'', phiên bản cá»§a bạn ÄÆ°á»£c giữ lại. Bấm ''huá»·'' Äá» giữ phiên bản
+kia.
Modified: site/trunk/www-root/wiki/inc/lang/vi/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Không ÄÆ°á»£c phép và o======
-
-Rất tiếc là bạn không ÄÆ°á»£c phép Äá» tiếp tục. Bạn quen ÄÄng nháºp hay sao?
+======Không ÄÆ°á»£c phép và o======
+
+Rất tiếc là bạn không ÄÆ°á»£c phép Äá» tiếp tục. Bạn quen ÄÄng nháºp hay sao?
Modified: site/trunk/www-root/wiki/inc/lang/vi/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======Khác biá»t======
-
-Äây là những khác biá»t giữa phiên bạn ÄÆ°á»£c chá»n và phiên bản hiá»n tại cá»§a
-trang nà y.
-
+======Khác biá»t======
+
+Äây là những khác biá»t giữa phiên bạn ÄÆ°á»£c chá»n và phiên bản hiá»n tại cá»§a
+trang nà y.
+
Modified: site/trunk/www-root/wiki/inc/lang/vi/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-Biên soạn trang nà y và bấm ''Bảo lưu''. Xem [[wiki:syntax]] vá»
-cú pháp của Wiki. Xin bạn biên soạn trang nà y nếu bạn có thỠ**cải tiến** nó.
-Nếu bạn muá»n thà nghiá»m, bạn có thá» táºp những bưá»c Äầu á»
-[[playground:playground]].
+Biên soạn trang nà y và bấm ''Bảo lưu''. Xem [[wiki:syntax]] vá»
+cú pháp của Wiki. Xin bạn biên soạn trang nà y nếu bạn có thỠ**cải tiến** nó.
+Nếu bạn muá»n thà nghiá»m, bạn có thá» táºp những bưá»c Äầu á»
+[[playground:playground]].
Modified: site/trunk/www-root/wiki/inc/lang/vi/editrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/editrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/editrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Bạn Äã nạp má»t phiên bản cÅ© cá»§a vÄn kiá»n!** Nếu bảo lưu, bạn sẽ tạo phiên bản vá»i dữ kiá»n nà y.
-----
+**Bạn Äã nạp má»t phiên bản cÅ© cá»§a vÄn kiá»n!** Nếu bảo lưu, bạn sẽ tạo phiên bản vá»i dữ kiá»n nà y.
+----
Modified: site/trunk/www-root/wiki/inc/lang/vi/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== Mục lục ======
-
-Äây là mục lục cá»§a tất cả các trang, xếp theo thứ tá»± [[doku>wiki:namespaces|namespaces]].
+====== Mục lục ======
+
+Äây là mục lục cá»§a tất cả các trang, xếp theo thứ tá»± [[doku>wiki:namespaces|namespaces]].
Modified: site/trunk/www-root/wiki/inc/lang/vi/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,107 +1,107 @@
-<?php
-/**
- * vietnamese language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author James Do <jdo at myrealbox.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = 'Biên soạn trang nà y';
-$lang['btn_source'] = 'Xem mã nguá»n';
-$lang['btn_show'] = 'Xem trang';
-$lang['btn_create'] = 'Tạo trang nà y';
-$lang['btn_search'] = 'Tìm';
-$lang['btn_save'] = 'Lưu';
-$lang['btn_preview']= 'Duyá»t trưá»c';
-$lang['btn_top'] = 'TrỠlên trên';
-$lang['btn_revs'] = 'Các phiên bản cũ';
-$lang['btn_recent'] = 'Thay Äá»i gần Äây';
-$lang['btn_upload'] = 'Tải lên';
-$lang['btn_cancel'] = 'Huá»· bá»';
-$lang['btn_index'] = 'Mục lục';
-$lang['btn_secedit']= 'Biên soạn';
-$lang['btn_login'] = 'ÄÄng nháºp';
-$lang['btn_logout'] = 'Thoát';
-$lang['btn_admin'] = 'Quản lý';
-$lang['btn_update'] = 'Cáºp nháºt';
-$lang['btn_delete'] = 'Xoá';
-
-$lang['loggedinas'] = 'Username Äang dùng';
-$lang['user'] = 'Username';
-$lang['pass'] = 'Password';
-$lang['remember'] = 'Lưu username/password lại';
-$lang['fullname'] = 'HỠvà tên';
-$lang['email'] = 'E-Mail';
-$lang['register'] = 'ÄÄng ký';
-$lang['badlogin'] = 'Username hoặc password không Äúng.';
-
-$lang['regmissing'] = 'Bạn cần Äiá»n và o tất cả các trưá»ng';
-$lang['reguexists'] = 'Bạn khác Äã dùng username nà y rá»i.';
-$lang['regsuccess'] = 'Äã tạo username, và Äã gá»i password.';
-$lang['regmailfail']= 'Không gá»i password ÄÆ°á»£c. Xin bạn liên há» vá»i ngưá»i quản lý.';
-$lang['regbadmail'] = 'Email hình như không Äúng. Xin bạn liên há» vá»i ngưá»i quản lý.';
-$lang['regpwmail'] = 'Password DokuWiki của bạn là ';
-$lang['reghere'] = 'Xin bạn ÄÄng ký username nếu chưa có.';
-
-$lang['txt_upload'] = 'Chá»n tá»p Äá» tải lên';
-$lang['txt_filename'] = 'Äiá»n wikiname (tuỳ ý)';
-$lang['lockedby'] = 'Äang khoá bá»i';
-$lang['lockexpire'] = 'Khoá sẽ hết hạn và o lúc';
-$lang['willexpire'] = 'Khoá cá»§a bạn Äá» biên soạn trang nà y sẽ hết hạn trong vòng 1 phút.\nÄá» tránh xung Äá»t, bạn nên bấm nút xem trưá»c Äá» láºp lại thá»i gian khoá';
-
-$lang['notsavedyet'] = 'Hiá»n có những thay Äá»i chưa ÄÆ°á»£c bảo lưu, và sẽ mất.\nBạn tháºt sá»± muá»n tiếp tục?';
-$lang['rssfailed'] = 'Rút nguá»n nà y gặp phải lá»i';
-$lang['nothingfound']= 'Không tìm ÄÆ°á»£c gì';
-
-$lang['mediaselect'] = 'Chá»n tá»p media';
-$lang['fileupload'] = 'Tải lên tá»p media';
-$lang['uploadsucc'] = 'Tải lên thà nh công';
-$lang['uploadfail'] = 'Tải lên thất bại. Có thá» vì không Äá»§ phép?';
-$lang['uploadwrong'] = 'Tải lên bá» từ chá»i. Cấm tải loại tá»p nà y';
-$lang['namespaces'] = 'Äá» tà i';
-$lang['mediafiles'] = 'Tá»p có sẵn á»';
-
-$lang['hits'] = 'Trùng';
-$lang['quickhits'] = 'Trang trùng hợp';
-$lang['toc'] = 'Ná»i dung';
-$lang['current'] = 'hiá»n tại';
-$lang['yours'] = 'Phiên bản hiá»n tại';
-$lang['diff'] = 'cho xem khác biá»t vá»i phiên bản hiá»n tại';
-$lang['line'] = 'Dòng';
-$lang['breadcrumb'] = 'Trang Äã xem';
-$lang['lastmod'] = 'Thá»i Äiá»m thay Äá»i';
-$lang['by'] = 'do';
-$lang['deleted'] = 'bỠxoá';
-$lang['created'] = 'ÄÆ°á»£c tạo ra';
-$lang['restored'] = 'phiên bản cÅ© Äã ÄÆ°á»£c khôi phục';
-$lang['summary'] = 'Tóm tắt biên soạn';
-
-$lang['mail_newpage'] = 'Trang ÄÆ°á»£c thêm:';
-$lang['mail_changed'] = 'Trang thay Äá»i:';
-
-$lang['nosmblinks'] = 'Ná»i vá»i các Windows shares chá» có hiá»u lá»±c vá»i Microsoft Internet Explorer.\nBạn vẫn có thá» sao và chép các má»c ná»i.';
-
-$lang['qb_alert'] = 'Xin bạn Äiá»n Äoạn vÄn Äá» Äá»nh dạng.\nÄoạn nà y sẽ ÄÆ°á»£c ná»i và o cuá»i vÄn kiá»n.';
-$lang['qb_bold'] = 'Chữ Äáºm';
-$lang['qb_italic'] = 'Chữ nghiêng';
-$lang['qb_underl'] = 'Chữ gạch dưá»i';
-$lang['qb_code'] = 'Chữ mã nguá»n';
-$lang['qb_h1'] = 'Äầu Äá» cấp 1';
-$lang['qb_h2'] = 'Äầu Äá» cấp 2';
-$lang['qb_h3'] = 'Äầu Äá» cấp 3';
-$lang['qb_h4'] = 'Äầu Äá» cấp 4';
-$lang['qb_h5'] = 'Äầu Äá» cấp 5';
-$lang['qb_link'] = 'Má»c ná»i ná»i tại';
-$lang['qb_extlink'] = 'Má»c ná»i ra ngoà i';
-$lang['qb_hr'] = 'Gạch ngang';
-$lang['qb_ol'] = 'Äiá»m trong danh sách có thứ tá»±';
-$lang['qb_ul'] = 'Äiá»m trong danh sách không Äánh sá»';
-$lang['qb_media'] = 'Thêm ảnh và tá»p khác';
-$lang['qb_sig'] = 'Äặt chữ ký';
-
-$lang['del_confirm']= 'Xoá mục nà y?';
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * vietnamese language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author James Do <jdo at myrealbox.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = 'Biên soạn trang nà y';
+$lang['btn_source'] = 'Xem mã nguá»n';
+$lang['btn_show'] = 'Xem trang';
+$lang['btn_create'] = 'Tạo trang nà y';
+$lang['btn_search'] = 'Tìm';
+$lang['btn_save'] = 'Lưu';
+$lang['btn_preview']= 'Duyá»t trưá»c';
+$lang['btn_top'] = 'TrỠlên trên';
+$lang['btn_revs'] = 'Các phiên bản cũ';
+$lang['btn_recent'] = 'Thay Äá»i gần Äây';
+$lang['btn_upload'] = 'Tải lên';
+$lang['btn_cancel'] = 'Huá»· bá»';
+$lang['btn_index'] = 'Mục lục';
+$lang['btn_secedit']= 'Biên soạn';
+$lang['btn_login'] = 'ÄÄng nháºp';
+$lang['btn_logout'] = 'Thoát';
+$lang['btn_admin'] = 'Quản lý';
+$lang['btn_update'] = 'Cáºp nháºt';
+$lang['btn_delete'] = 'Xoá';
+
+$lang['loggedinas'] = 'Username Äang dùng';
+$lang['user'] = 'Username';
+$lang['pass'] = 'Password';
+$lang['remember'] = 'Lưu username/password lại';
+$lang['fullname'] = 'HỠvà tên';
+$lang['email'] = 'E-Mail';
+$lang['register'] = 'ÄÄng ký';
+$lang['badlogin'] = 'Username hoặc password không Äúng.';
+
+$lang['regmissing'] = 'Bạn cần Äiá»n và o tất cả các trưá»ng';
+$lang['reguexists'] = 'Bạn khác Äã dùng username nà y rá»i.';
+$lang['regsuccess'] = 'Äã tạo username, và Äã gá»i password.';
+$lang['regmailfail']= 'Không gá»i password ÄÆ°á»£c. Xin bạn liên há» vá»i ngưá»i quản lý.';
+$lang['regbadmail'] = 'Email hình như không Äúng. Xin bạn liên há» vá»i ngưá»i quản lý.';
+$lang['regpwmail'] = 'Password DokuWiki của bạn là ';
+$lang['reghere'] = 'Xin bạn ÄÄng ký username nếu chưa có.';
+
+$lang['txt_upload'] = 'Chá»n tá»p Äá» tải lên';
+$lang['txt_filename'] = 'Äiá»n wikiname (tuỳ ý)';
+$lang['lockedby'] = 'Äang khoá bá»i';
+$lang['lockexpire'] = 'Khoá sẽ hết hạn và o lúc';
+$lang['willexpire'] = 'Khoá cá»§a bạn Äá» biên soạn trang nà y sẽ hết hạn trong vòng 1 phút.\nÄá» tránh xung Äá»t, bạn nên bấm nút xem trưá»c Äá» láºp lại thá»i gian khoá';
+
+$lang['notsavedyet'] = 'Hiá»n có những thay Äá»i chưa ÄÆ°á»£c bảo lưu, và sẽ mất.\nBạn tháºt sá»± muá»n tiếp tục?';
+$lang['rssfailed'] = 'Rút nguá»n nà y gặp phải lá»i';
+$lang['nothingfound']= 'Không tìm ÄÆ°á»£c gì';
+
+$lang['mediaselect'] = 'Chá»n tá»p media';
+$lang['fileupload'] = 'Tải lên tá»p media';
+$lang['uploadsucc'] = 'Tải lên thà nh công';
+$lang['uploadfail'] = 'Tải lên thất bại. Có thá» vì không Äá»§ phép?';
+$lang['uploadwrong'] = 'Tải lên bá» từ chá»i. Cấm tải loại tá»p nà y';
+$lang['namespaces'] = 'Äá» tà i';
+$lang['mediafiles'] = 'Tá»p có sẵn á»';
+
+$lang['hits'] = 'Trùng';
+$lang['quickhits'] = 'Trang trùng hợp';
+$lang['toc'] = 'Ná»i dung';
+$lang['current'] = 'hiá»n tại';
+$lang['yours'] = 'Phiên bản hiá»n tại';
+$lang['diff'] = 'cho xem khác biá»t vá»i phiên bản hiá»n tại';
+$lang['line'] = 'Dòng';
+$lang['breadcrumb'] = 'Trang Äã xem';
+$lang['lastmod'] = 'Thá»i Äiá»m thay Äá»i';
+$lang['by'] = 'do';
+$lang['deleted'] = 'bỠxoá';
+$lang['created'] = 'ÄÆ°á»£c tạo ra';
+$lang['restored'] = 'phiên bản cÅ© Äã ÄÆ°á»£c khôi phục';
+$lang['summary'] = 'Tóm tắt biên soạn';
+
+$lang['mail_newpage'] = 'Trang ÄÆ°á»£c thêm:';
+$lang['mail_changed'] = 'Trang thay Äá»i:';
+
+$lang['nosmblinks'] = 'Ná»i vá»i các Windows shares chá» có hiá»u lá»±c vá»i Microsoft Internet Explorer.\nBạn vẫn có thá» sao và chép các má»c ná»i.';
+
+$lang['qb_alert'] = 'Xin bạn Äiá»n Äoạn vÄn Äá» Äá»nh dạng.\nÄoạn nà y sẽ ÄÆ°á»£c ná»i và o cuá»i vÄn kiá»n.';
+$lang['qb_bold'] = 'Chữ Äáºm';
+$lang['qb_italic'] = 'Chữ nghiêng';
+$lang['qb_underl'] = 'Chữ gạch dưá»i';
+$lang['qb_code'] = 'Chữ mã nguá»n';
+$lang['qb_h1'] = 'Äầu Äá» cấp 1';
+$lang['qb_h2'] = 'Äầu Äá» cấp 2';
+$lang['qb_h3'] = 'Äầu Äá» cấp 3';
+$lang['qb_h4'] = 'Äầu Äá» cấp 4';
+$lang['qb_h5'] = 'Äầu Äá» cấp 5';
+$lang['qb_link'] = 'Má»c ná»i ná»i tại';
+$lang['qb_extlink'] = 'Má»c ná»i ra ngoà i';
+$lang['qb_hr'] = 'Gạch ngang';
+$lang['qb_ol'] = 'Äiá»m trong danh sách có thứ tá»±';
+$lang['qb_ul'] = 'Äiá»m trong danh sách không Äánh sá»';
+$lang['qb_media'] = 'Thêm ảnh và tá»p khác';
+$lang['qb_sig'] = 'Äặt chữ ký';
+
+$lang['del_confirm']= 'Xoá mục nà y?';
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/vi/locked.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/locked.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/locked.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== Trang bỠkhoá ======
-
-Trang nà y Äang bá» khoá Äá» má»t bạn khác biên soạn. Bạn cần Äợi cho Äến khi nà o
-bạn kia Äã biên soạn xong, hoặc khoá hết hạn.
+====== Trang bỠkhoá ======
+
+Trang nà y Äang bá» khoá Äá» má»t bạn khác biên soạn. Bạn cần Äợi cho Äến khi nà o
+bạn kia Äã biên soạn xong, hoặc khoá hết hạn.
Modified: site/trunk/www-root/wiki/inc/lang/vi/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ÄÄng nháºp ======
-
-Hiá»n bạn chưa ÄÄng nháºp! Äiá»n và o những chi tiết chứng minh á» phÃa dưá»i.
-Máy cá»§a bạn cần Äặt chế Äá» nháºn cookies Äá» ÄÄng nháºp.
+====== ÄÄng nháºp ======
+
+Hiá»n bạn chưa ÄÄng nháºp! Äiá»n và o những chi tiết chứng minh á» phÃa dưá»i.
+Máy cá»§a bạn cần Äặt chế Äá» nháºn cookies Äá» ÄÄng nháºp.
Modified: site/trunk/www-root/wiki/inc/lang/vi/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-Má»t trang trên DokuWiki cá»§a bạn vừa ÄÆ°á»£c bá» sung hoặc thay Äá»i. Sau Äây là chi tiết:
-
-Date : @DATE@
-Browser : @BROWSER@
-IP-Address : @IPADDRESS@
-Hostname : @HOSTNAME@
-Old Revision: @OLDPAGE@
-New Revision: @NEWPAGE@
-Edit Summary: @SUMMARY@
-User : @USER@
-
- at DIFF@
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+Má»t trang trên DokuWiki cá»§a bạn vừa ÄÆ°á»£c bá» sung hoặc thay Äá»i. Sau Äây là chi tiết:
+
+Date : @DATE@
+Browser : @BROWSER@
+IP-Address : @IPADDRESS@
+Hostname : @HOSTNAME@
+Old Revision: @OLDPAGE@
+New Revision: @NEWPAGE@
+Edit Summary: @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/vi/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======Chưa có Äá» tà i nà y======
-
-Bạn vừa ná»i và o má»t Äá» tà i chưa có. Bạn có tạo Äá» tà i nà y bằng cách bấm
-và o nút ''Tạo trang nà y''.
+======Chưa có Äá» tà i nà y======
+
+Bạn vừa ná»i và o má»t Äá» tà i chưa có. Bạn có tạo Äá» tà i nà y bằng cách bấm
+và o nút ''Tạo trang nà y''.
Modified: site/trunk/www-root/wiki/inc/lang/vi/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Phiên bản chưa có======
-
-Chưa có phiên bản ÄÆ°á»£c chá» Äá»nh. Xin bấm nút ''Phiên bản cÅ©'' Äá» xem danh sách các phiên bản cá»§a vÄn kiá»n nà y.
+======Phiên bản chưa có======
+
+Chưa có phiên bản ÄÆ°á»£c chá» Äá»nh. Xin bấm nút ''Phiên bản cÅ©'' Äá» xem danh sách các phiên bản cá»§a vÄn kiá»n nà y.
Modified: site/trunk/www-root/wiki/inc/lang/vi/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-Thân chà o bạn @FULLNAME@!
-
-Äây là chi tiết Äá» bạn ÄÄng nháºp @TITLE@ tại @DOKUWIKIURL@:
-
-Username: @LOGIN@
-Password: @PASSWORD@
-
---
-Äiá»n thư nà y xuất phát từ DokuWiki tại @DOKUWIKIURL at .
+Thân chà o bạn @FULLNAME@!
+
+Äây là chi tiết Äá» bạn ÄÄng nháºp @TITLE@ tại @DOKUWIKIURL@:
+
+Username: @LOGIN@
+Password: @PASSWORD@
+
+--
+Äiá»n thư nà y xuất phát từ DokuWiki tại @DOKUWIKIURL at .
Modified: site/trunk/www-root/wiki/inc/lang/vi/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Xem trưá»c======
-
-VÄn kiá»n cá»§a bạn sẽ thá» hiá»n như sau. Nên nhá»: VÄn kiá»n nà y **chưa ÄÆ°á»£c bảo lưu**!
+======Xem trưá»c======
+
+VÄn kiá»n cá»§a bạn sẽ thá» hiá»n như sau. Nên nhá»: VÄn kiá»n nà y **chưa ÄÆ°á»£c bảo lưu**!
Modified: site/trunk/www-root/wiki/inc/lang/vi/read.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/read.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/read.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1 +1 @@
-Trang nà y chá» ÄÆ°á»£c Äá»c thôi. Bạn có thá» xem mã nguá»n, nhưng không ÄÆ°á»£c thay Äá»i. Xin bạn há»i ngưá»i quản lý nếu không Äúng.
+Trang nà y chá» ÄÆ°á»£c Äá»c thôi. Bạn có thá» xem mã nguá»n, nhưng không ÄÆ°á»£c thay Äá»i. Xin bạn há»i ngưá»i quản lý nếu không Äúng.
Modified: site/trunk/www-root/wiki/inc/lang/vi/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Thay Äá»i gần Äây======
-
-Những trang sau ÄÆ°á»£c thay Äá»i gần Äây.
+======Thay Äá»i gần Äây======
+
+Những trang sau ÄÆ°á»£c thay Äá»i gần Äây.
Modified: site/trunk/www-root/wiki/inc/lang/vi/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== ÄÄng ký má»i ======
-
-Xin Äiá»n và o má»i thông tin sau Äây Äá» tạo má»t username má»i cho wiki nà y.
-Bạn cần cung cấp **e-mail chÃnh xác** - Äá» gá»i password má»i cá»§a bạn Äến Äấy.
-Username cần là má»t [[doku>wiki:pagename|pagename]] hợp lá».
+====== ÄÄng ký má»i ======
+
+Xin Äiá»n và o má»i thông tin sau Äây Äá» tạo má»t username má»i cho wiki nà y.
+Bạn cần cung cấp **e-mail chÃnh xác** - Äá» gá»i password má»i cá»§a bạn Äến Äấy.
+Username cần là má»t [[doku>wiki:pagename|pagename]] hợp lá».
Modified: site/trunk/www-root/wiki/inc/lang/vi/revisions.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/revisions.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/revisions.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======Phiên bản cũ======
-
-Sau Äây là các phiên bản cÅ© cá»§a vÄn kiá»n nà y. Äá» quây vá» má»t phiên bản cÅ©, chá»n á» phÃa dưá»i, bấm và o ''Biên soạn trang nà y'' Äá» bảo lưu.
+======Phiên bản cũ======
+
+Sau Äây là các phiên bản cÅ© cá»§a vÄn kiá»n nà y. Äá» quây vá» má»t phiên bản cÅ©, chá»n á» phÃa dưá»i, bấm và o ''Biên soạn trang nà y'' Äá» bảo lưu.
Modified: site/trunk/www-root/wiki/inc/lang/vi/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-======Tìm======
-
-Sau Äây là kết quả cá»§a câu há»i cá»§a bạn. Nếu bạn không thấy ÄÆ°á»£c những gì bạn Äang tìm, bạn có thá»
-má»t trang má»i, cùng tên câu há»i cá»§a bạn, bằng cách bấm và o nút ''Biên soạn trang nà y''.
-
-=====Kết quả=====
+======Tìm======
+
+Sau Äây là kết quả cá»§a câu há»i cá»§a bạn. Nếu bạn không thấy ÄÆ°á»£c những gì bạn Äang tìm, bạn có thá»
+má»t trang má»i, cùng tên câu há»i cá»§a bạn, bằng cách bấm và o nút ''Biên soạn trang nà y''.
+
+=====Kết quả=====
Modified: site/trunk/www-root/wiki/inc/lang/vi/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**Äây là má»t phiên bản cÅ© cùa vÄn kiá»n!**
-----
+**Äây là má»t phiên bản cÅ© cùa vÄn kiá»n!**
+----
Modified: site/trunk/www-root/wiki/inc/lang/vi/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/vi/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/vi/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======SPAM bá» cháºn======
-
-Các thay Äá»i **không** ÄÆ°á»£c bảo lưu vì có má»t hoặc nhiá»u từ bá» ngÄn cháºn.
-Nếu muá»n spam Wiki nà y -- ngưng liá»n! Nếu Äây là má»t sai lầm, liên lạc vá»i
-ngưá»i quản lý cá»§a Wiki.
+======SPAM bá» cháºn======
+
+Các thay Äá»i **không** ÄÆ°á»£c bảo lưu vì có má»t hoặc nhiá»u từ bá» ngÄn cháºn.
+Nếu muá»n spam Wiki nà y -- ngưng liá»n! Nếu Äây là má»t sai lầm, liên lạc vá»i
+ngưá»i quản lý cá»§a Wiki.
Modified: site/trunk/www-root/wiki/inc/lang/zh/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== 管ç ======
-
+====== 管ç ======
+
å¨ä¸é¢æ¨è½æ¾å° DokuWiki ä¸å¯ç¨ç®¡çä»»å¡çå表ã
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== åå龿¥ ======
-
+====== åå龿¥ ======
+
è¿éæ¯è½å¤åå龿¥å°å½å页é¢çå
¶ä»é¡µé¢å表ã
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======æç»ææ======
-
+======æç»ææ======
+
对ä¸èµ·ï¼æ¨æ²¡æè¶³å¤æéï¼æ æ³ç»§ç»ãä¹è®¸æ¨å¿äºç»å½ï¼
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======å·®å«======
-
+======å·®å«======
+
è¿é伿¾ç¤ºåºæ¨éæ©ç修订çåå½åçæ¬ä¹é´çå·®å«ã
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/draft.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/draft.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/draft.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
-====== åç°è稿 ======
-
-æ¨å¨æ¬é¡µæåçç¼è¾è¿ç¨æ²¡ææ£å¸¸ç»æãDokuWiki
-卿¨çç¼è¾è¿ç¨ä¸èªå¨ä¿åäºä¸ä»½èç¨¿ï¼æ¨ç°å¨å¯ä»¥ä½¿ç¨å®ç»§ç»ç¼è¾ã
-ä¸é¢æ¯æåç¼è¾æ¶çæ°æ®ã
-
-请å³å®æ¨å¸æ //æ¢å¤// æ¨ä¸¢å¤±çç¼è¾æ°æ®ï¼//å é¤//
-èªå¨ä¿åçèç¨¿ï¼æè
//åæ¶// æ¬ç¼è¾è¿ç¨ã
-
-
+====== åç°è稿 ======
+
+æ¨å¨æ¬é¡µæåçç¼è¾è¿ç¨æ²¡ææ£å¸¸ç»æãDokuWiki
+卿¨çç¼è¾è¿ç¨ä¸èªå¨ä¿åäºä¸ä»½èç¨¿ï¼æ¨ç°å¨å¯ä»¥ä½¿ç¨å®ç»§ç»ç¼è¾ã
+ä¸é¢æ¯æåç¼è¾æ¶çæ°æ®ã
+
+请å³å®æ¨å¸æ //æ¢å¤// æ¨ä¸¢å¤±çç¼è¾æ°æ®ï¼//å é¤//
+èªå¨ä¿åçèç¨¿ï¼æè
//åæ¶// æ¬ç¼è¾è¿ç¨ã
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/editrev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ç´¢å¼ ======
-
+====== ç´¢å¼ ======
+
è¿æ¯æ ¹æ® [[doku>wiki:namespaces|å½å空é´]] æåçææå¯è®¿é®é¡µé¢çç´¢å¼ã
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/install.html
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/install.html 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/install.html 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,8 +1,8 @@
-<p>æ¬é¡µé¢æ¨å¨å¸®å©æ¨å®æç¬¬ä¸æ¬¡å®è£
åé
ç½® <a href="http://wiki.splitbrain.org">Dokuwiki</a>ãå
³äºå®è£
å·¥å
·çæ´å¤ä¿¡æ¯è¯·åé
å
¶ <a href="http://wiki.splitbrain.org/wiki:installer">宿¹ææ¡£é¡µé¢</a>ã</p>
-
-<p>DokuWiki ä½¿ç¨æ®éçæä»¶ä¿åç»´åºé¡µé¢åå
¶ä»ä¸è¿äºé¡µé¢æé©çä¿¡æ¯ï¼ä¾å¦ï¼å¾åï¼æç´¢ç´¢å¼ï¼ä¿®è®¢è®°å½çï¼ã为äºè½æ£å¸¸è¿è¡ï¼DokuWiki <strong>å¿
é¡»</strong> æ¥æé对é£äºè·¯å¾åæä»¶çåæéãæ¬å®è£
å·¥å
·ä¸è½ç¨äºè®¾ç½®è¿äºæéã对æéçæä½é常éè¿å½ä»¤è¡æä½¿ç¨æ¨çç½ç»æå¡æä¾åç FTP ææ§å¶é¢æ¿ï¼ä¾å¦ cPanelï¼è¿è¡æä½ã</p>
-
-<p>æ¬å®è£
å·¥å
·å°è®¾ç½®æ¨ç DokuWiki é
ç½® <acronym title="è®¿é®æ§å¶å表">ACL</acronym>ï¼å®è½è®©ç®¡çåç»å½å¹¶ä½¿ç¨â管çâåè½æ¥å®è£
æä»¶ï¼ç®¡çç¨æ·ï¼ç®¡çè®¿é®æéåå
¶ä»é
置设置ãå®å¹¶ä¸æ¯ DokuWiki æ£å¸¸è¿è¡æå¿
é¡»çï¼ä½å®è£
ä¹åå®å°æ´æ¹ä¾¿æ¨ç管çã</p>
-
-<p>æç»éªçç¨æ·ææç¹æ®éæ±çç¨æ·è¯·åé
æ´è¯¦ç»ç <a href="http://wiki.splitbrain.org/wiki:install">å®è£
æå</a>
-å <a href="http://wiki.splitbrain.org/wiki:config">é
置设置</a>ã</p>
+<p>æ¬é¡µé¢æ¨å¨å¸®å©æ¨å®æç¬¬ä¸æ¬¡å®è£
åé
ç½® <a href="http://wiki.splitbrain.org">Dokuwiki</a>ãå
³äºå®è£
å·¥å
·çæ´å¤ä¿¡æ¯è¯·åé
å
¶ <a href="http://wiki.splitbrain.org/wiki:installer">宿¹ææ¡£é¡µé¢</a>ã</p>
+
+<p>DokuWiki ä½¿ç¨æ®éçæä»¶ä¿åç»´åºé¡µé¢åå
¶ä»ä¸è¿äºé¡µé¢æé©çä¿¡æ¯ï¼ä¾å¦ï¼å¾åï¼æç´¢ç´¢å¼ï¼ä¿®è®¢è®°å½çï¼ã为äºè½æ£å¸¸è¿è¡ï¼DokuWiki <strong>å¿
é¡»</strong> æ¥æé对é£äºè·¯å¾åæä»¶çåæéãæ¬å®è£
å·¥å
·ä¸è½ç¨äºè®¾ç½®è¿äºæéã对æéçæä½é常éè¿å½ä»¤è¡æä½¿ç¨æ¨çç½ç»æå¡æä¾åç FTP ææ§å¶é¢æ¿ï¼ä¾å¦ cPanelï¼è¿è¡æä½ã</p>
+
+<p>æ¬å®è£
å·¥å
·å°è®¾ç½®æ¨ç DokuWiki é
ç½® <acronym title="è®¿é®æ§å¶å表">ACL</acronym>ï¼å®è½è®©ç®¡çåç»å½å¹¶ä½¿ç¨â管çâåè½æ¥å®è£
æä»¶ï¼ç®¡çç¨æ·ï¼ç®¡çè®¿é®æéåå
¶ä»é
置设置ãå®å¹¶ä¸æ¯ DokuWiki æ£å¸¸è¿è¡æå¿
é¡»çï¼ä½å®è£
ä¹åå®å°æ´æ¹ä¾¿æ¨ç管çã</p>
+
+<p>æç»éªçç¨æ·ææç¹æ®éæ±çç¨æ·è¯·åé
æ´è¯¦ç»ç <a href="http://wiki.splitbrain.org/wiki:install">å®è£
æå</a>
+å <a href="http://wiki.splitbrain.org/wiki:config">é
置设置</a>ã</p>
Modified: site/trunk/www-root/wiki/inc/lang/zh/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/**
- * Chinese(Simplified) language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author ZDYX <zhangduyixiong at gmail.com>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-$lang['doublequoteopening'] = 'â';
-$lang['doublequoteclosing'] = 'â';
-$lang['singlequoteopening'] = 'â';
-$lang['singlequoteclosing'] = 'â';
-$lang['apostrophe'] = 'â';
-$lang['btn_edit'] = 'ç¼è¾æ¬é¡µ';
-$lang['btn_source'] = 'æ¾ç¤ºæºæä»¶';
-$lang['btn_show'] = 'æ¾ç¤ºé¡µé¢';
-$lang['btn_create'] = 'å建该页é¢';
-$lang['btn_search'] = 'æç´¢';
-$lang['btn_save'] = 'ä¿å';
-$lang['btn_preview'] = 'é¢è§';
-$lang['btn_top'] = 'å°é¡¶é¨';
-$lang['btn_newer'] = '<< è¾æ°ç';
-$lang['btn_older'] = 'è¾æ§ç >>';
-$lang['btn_revs'] = '修订记å½';
-$lang['btn_recent'] = 'æè¿æ´æ¹';
-$lang['btn_upload'] = 'ä¸ä¼ ';
-$lang['btn_cancel'] = 'åæ¶';
-$lang['btn_index'] = 'ç´¢å¼';
-$lang['btn_secedit'] = 'ç¼è¾';
-$lang['btn_login'] = 'ç»å½';
-$lang['btn_logout'] = 'éåº';
-$lang['btn_admin'] = '管ç';
-$lang['btn_update'] = 'æ´æ°';
-$lang['btn_delete'] = 'å é¤';
-$lang['btn_back'] = 'è¿å';
-$lang['btn_backlink'] = 'åå龿¥';
-$lang['btn_backtomedia'] = 'è¿åå°åªä½æä»¶éæ©å·¥å
·';
-$lang['btn_subscribe'] = '订é
æ¬é¡µæ´æ¹';
-$lang['btn_unsubscribe'] = 'é订æ¬é¡µæ´æ¹';
-$lang['btn_subscribens'] = '订é
å½åç©ºé´æ´æ¹';
-$lang['btn_unsubscribens'] = 'é订å½åç©ºé´æ´æ¹';
-$lang['btn_profile'] = 'æ´æ°ä¸ªäººä¿¡æ¯';
-$lang['btn_reset'] = 'é设';
-$lang['btn_resendpwd'] = 'åéæ°å¯ç ';
-$lang['btn_draft'] = 'ç¼è¾è稿';
-$lang['btn_recover'] = 'æ¢å¤è稿';
-$lang['btn_draftdel'] = 'å é¤è稿';
-$lang['loggedinas'] = 'ç»å½ä¸º';
-$lang['user'] = 'ç¨æ·å';
-$lang['pass'] = 'å¯ç ';
-$lang['newpass'] = '请è¾å
¥æ°å¯ç ';
-$lang['oldpass'] = '请è¾å
¥å½åå¯ç ';
-$lang['passchk'] = '请åè¾ä¸æ¬¡';
-$lang['remember'] = 'è®°ä½æ';
-$lang['fullname'] = 'å
¨å';
-$lang['email'] = 'E-Mail';
-$lang['register'] = '注å';
-$lang['profile'] = 'ç¨æ·ä¿¡æ¯';
-$lang['badlogin'] = '对ä¸èµ·ï¼ç¨æ·åæå¯ç é误ã';
-$lang['minoredit'] = '轻微修æ¹';
-$lang['draftdate'] = 'è稿èªå¨ä¿åäº';
-$lang['regmissing'] = '对ä¸èµ·ï¼æ¨å¿
须填忿çåºåã';
-$lang['reguexists'] = '对ä¸èµ·ï¼è¯¥ç¨æ·åå·²ç»åå¨ã';
-$lang['regsuccess'] = 'æ°ç¨æ·å·²å»ºç«ï¼å¯ç å°éè¿çµåé®ä»¶åéç»æ¨ã';
-$lang['regsuccess2'] = 'æ°ç¨æ·å·²å»ºç«';
-$lang['regmailfail'] = 'åéå¯ç é®ä»¶æ¶äº§çé误ã请è系管çåï¼';
-$lang['regbadmail'] = 'æ¨è¾å
¥çé®ä»¶å°åæé®é¢ââ妿æ¨è®¤ä¸ºè¿æ¯ç³»ç»é误ï¼è¯·è系管çåã';
-$lang['regbadpass'] = 'æ¨è¾å
¥çå¯ç ä¸ç³»ç»äº§ççä¸ç¬¦ï¼è¯·éè¯ã';
-$lang['regpwmail'] = 'æ¨ç DokuWiki å¯ç ';
-$lang['reghere'] = 'è¿æ²¡æè´¦å·ï¼ç«å³æ³¨å';
-$lang['profna'] = 'æ¬ç»´åºä¸æ¯æä¿®æ¹ä¸ªäººä¿¡æ¯';
-$lang['profnochange'] = 'æ²¡ææ¹å¨ï¼ä¸è¿è¡æä½ã';
-$lang['profnoempty'] = 'ä¸å
许使ç¨ç©ºçç¨æ·åæé®ä»¶å°åã';
-$lang['profchanged'] = 'ç¨æ·ä¿¡æ¯æ´æ°æåã';
-$lang['pwdforget'] = 'å¿è®°å¯ç ï¼ç«å³è·åæ°å¯ç ';
-$lang['resendna'] = 'æ¬ç»´åºä¸æ¯æäºæ¬¡åéå¯ç ã';
-$lang['resendpwd'] = 'åéæ°å¯ç ç»';
-$lang['resendpwdmissing'] = '对ä¸èµ·ï¼æ¨å¿
须填忿çåºåã';
-$lang['resendpwdnouser'] = '对ä¸èµ·ï¼å¨æä»¬çç¨æ·æ°æ®ä¸æ¾ä¸å°è¯¥ç¨æ·ã';
-$lang['resendpwdbadauth'] = '对ä¸èµ·ï¼è¯¥è®¤è¯ç é误ã请使ç¨å®æ´çç¡®è®¤é¾æ¥ã';
-$lang['resendpwdconfirm'] = 'ç¡®è®¤é¾æ¥å·²ç»éè¿é®ä»¶åéç»æ¨äºã';
-$lang['resendpwdsuccess'] = 'æ¨çæ°å¯ç å·²ç»éè¿é®ä»¶åéç»æ¨äºã';
-$lang['txt_upload'] = 'éæ©è¦ä¸ä¼ çæä»¶';
-$lang['txt_filename'] = 'ä¸ä¼ å¹¶éå½å为ï¼å¯éï¼';
-$lang['txt_overwrt'] = 'è¦çå·²åå¨çååæä»¶';
-$lang['lockedby'] = 'ç®å已被ä¸å人åéå®';
-$lang['lockexpire'] = 'é¢è®¡éå®è§£é¤äº';
-$lang['willexpire'] = 'æ¨å¯¹æ¬é¡µçç¬æç¼è¾æå°äºä¸åéä¹åè§£é¤ã\n为äºé²æ¢ä¸å
¶ä»äººçç¼è¾å²çªï¼è¯·ä½¿ç¨é¢è§æé®é设计æ¶å¨ã';
-$lang['notsavedyet'] = 'æªä¿åçæ´æ¹å°ä¸¢å¤±ã\nççè¦ç»§ç»ï¼';
-$lang['rssfailed'] = 'è·å该 RSS ä¿¡æ¯æ¶äº§çé误ï¼';
-$lang['nothingfound'] = 'ä»ä¹é½æ²¡ææ¾å°ã';
-$lang['mediaselect'] = 'åªä½æä»¶';
-$lang['fileupload'] = 'ä¸ä¼ åªä½æä»¶';
-$lang['uploadsucc'] = 'ä¸ä¼ æå';
-$lang['uploadfail'] = 'ä¸ä¼ 失败ãä¹è®¸æ¯ä¸ä¼ æéé误ã';
-$lang['uploadwrong'] = 'ä¸ä¼ 失败ã该æ©å±åè¢«ç¦æ¢ã';
-$lang['uploadexist'] = 'æä»¶å·²åå¨ãä¸è¿è¡æä½ã';
-$lang['uploadbadcontent'] = 'ä¸ä¼ çæä»¶ä¸æ©å±å %s ä¸ç¬¦ã';
-$lang['uploadspam'] = 'ä¸ä¼ æä½è¢«åå¾ä¿¡æ¯é»åå黿¢ã';
-$lang['uploadxss'] = 'ä¸ä¼ æä½å å¯è½å卿¶æå
容èè¢«é»æ¢ã';
-$lang['deletesucc'] = 'æä»¶â%sâå·²ç»è¢«å é¤ã';
-$lang['deletefail'] = 'æ æ³å é¤â%sâ- è¯·æ£æ¥æéã';
-$lang['mediainuse'] = 'æä»¶â%sâæ æ³å é¤ - 宿£è¢«ä½¿ç¨ä¸ã';
-$lang['namespaces'] = 'å½å空é´';
-$lang['mediafiles'] = 'å¯ç¨çæä»¶';
-$lang['js']['keepopen'] = 'éä¸åä¸èªå¨å
³éçªå£';
-$lang['js']['hidedetails'] = 'éè详ç»ä¿¡æ¯';
-$lang['mediausage'] = '使ç¨ä¸ååç¬¦é¾æ¥å°è¯¥æä»¶ï¼';
-$lang['mediaview'] = 'æ¥ç该æä»¶';
-$lang['mediaroot'] = 'æ ¹ç®å½';
-$lang['mediaupload'] = 'ä¸ä¼ æä»¶è³å½åçå½å空é´ãè¦å建次级å½å空é´ï¼å°å
¶åç§°å å¨âä¸ä¼ å¹¶éå½å为âæä»¶åçåé¢ï¼å¹¶ç¨è±æåå·éå¼';
-$lang['mediaextchange'] = 'æä»¶çæ©å±åç± .%s æ¹ä¸ºäº .%sï¼';
-$lang['reference'] = 'ç¸å
³ç';
-$lang['ref_inuse'] = '该æä»¶æ æ³å é¤ï¼å ä¸ºå®æ£è¢«ä¸å页é¢ä½¿ç¨ï¼';
-$lang['ref_hidden'] = 'ä¸äºç¸å
³ç页颿¨å¹¶æ²¡ææéé
读';
-$lang['hits'] = '符å';
-$lang['quickhits'] = 'å¹é
ç页é¢åç§°';
-$lang['toc'] = 'ç®å½';
-$lang['current'] = 'å½åçæ¬';
-$lang['yours'] = 'æ¨ççæ¬';
-$lang['diff'] = 'æ¾ç¤ºä¸å½åçæ¬çå·®å«';
-$lang['line'] = 'è¡';
-$lang['breadcrumb'] = 'æ¨ç足迹';
-$lang['youarehere'] = 'æ¨å¨è¿é';
-$lang['lastmod'] = 'æåæ´æ¹';
-$lang['by'] = 'ç±';
-$lang['deleted'] = 'ç§»é¤';
-$lang['created'] = 'å建';
-$lang['restored'] = 'å·²æ¢å¤ä¸ºæ§ç';
-$lang['external_edit'] = 'å¤é¨ç¼è¾';
-$lang['summary'] = 'ç¼è¾æè¦';
-$lang['mail_newpage'] = 'æ·»å 页é¢ï¼';
-$lang['mail_changed'] = 'æ´æ¹é¡µé¢ï¼';
-$lang['mail_new_user'] = 'æ°ç¨æ·ï¼';
-$lang['mail_upload'] = 'å·²ä¸ä¼ çæä»¶ï¼';
-$lang['nosmblinks'] = 'è¿æ¥å° Windows å
±äº«åè½åªæå¨ IE æµè§å¨ä¸æè½æ£å¸¸ä½¿ç¨ã\n使¨ä»è½å¤å¶å¹¶ç²è´´è¯¥é¾æ¥ã';
-$lang['qb_alert'] = '请è¾å
¥æ¨æ³æ ¼å¼åçæåã\nå®å°ä¼è¢«éå å°æä»¶çæåã';
-$lang['qb_bold'] = 'ç²ä½';
-$lang['qb_italic'] = 'æä½';
-$lang['qb_underl'] = 'ä¸å线';
-$lang['qb_code'] = '代ç ';
-$lang['qb_strike'] = 'å é¤çº¿';
-$lang['qb_h1'] = 'æ é¢ H1';
-$lang['qb_h2'] = 'æ é¢ H2 ';
-$lang['qb_h3'] = 'æ é¢ H3';
-$lang['qb_h4'] = 'æ é¢ H4';
-$lang['qb_h5'] = 'æ é¢ H5';
-$lang['qb_link'] = 'å
é¨é¾æ¥';
-$lang['qb_extlink'] = 'å¤é¨é¾æ¥';
-$lang['qb_hr'] = '水平线';
-$lang['qb_ol'] = 'æ°åå表项ç®';
-$lang['qb_ul'] = 'æ®éå表项ç®';
-$lang['qb_media'] = 'æå
¥å¾åæå
¶ä»æä»¶';
-$lang['qb_sig'] = 'æå
¥ç¾å';
-$lang['qb_smileys'] = '表æ
符å·';
-$lang['qb_chars'] = 'ç¹æ®å符';
-$lang['del_confirm'] = 'ççè¦å é¤éä¸ç项ç®åï¼';
-$lang['admin_register'] = 'æ·»å æ°ç¨æ·';
-$lang['metaedit'] = 'ç¼è¾å
æ°æ®';
-$lang['metasaveerr'] = 'åå
¥å
æ°æ®å¤±è´¥';
-$lang['metasaveok'] = 'å
æ°æ®å·²ä¿å';
-$lang['img_backto'] = 'è¿åå°';
-$lang['img_title'] = 'æ é¢';
-$lang['img_caption'] = '说æ';
-$lang['img_date'] = 'æ¥æ';
-$lang['img_fname'] = 'åç§°';
-$lang['img_fsize'] = '大å°';
-$lang['img_artist'] = 'æå½±å¸';
-$lang['img_copyr'] = 'çæ';
-$lang['img_format'] = 'æ ¼å¼';
-$lang['img_camera'] = 'ç¸æº';
-$lang['img_keywords'] = 'å
³é®å';
-$lang['subscribe_success'] = 'å·²å° %s æåæ·»å å° %s ç订é
å表';
-$lang['subscribe_error'] = 'æ æ³å° %s æ·»å å° %s ç订é
å表';
-$lang['subscribe_noaddress'] = 'æ¨çç»å½ä¿¡æ¯ä¸ä¸å
å«çµåé®ä»¶å°åï¼æ¨æ æ³å å
¥è®¢é
å表';
-$lang['unsubscribe_success'] = 'å·²å° %s ä» %s ç订é
åè¡¨ä¸æåå é¤';
-$lang['unsubscribe_error'] = 'æ æ³å° %s ä» %s ç订é
å表ä¸å é¤';
-$lang['authmodfailed'] = 'é误çç¨æ·è®¤è¯è®¾ç½®ã请éç¥ç»´åºç®¡çåã';
-$lang['authtempfail'] = 'ç¨æ·è®¤è¯ææ¶æ æ³ä½¿ç¨ãå¦æè¯¥ç¶æä¸ç´åå¨ï¼è¯·éç¥ç»´åºç®¡çåã';
-$lang['i_chooselang'] = 'éæ©æ¨çè¯è¨';
-$lang['i_installer'] = 'DokuWiki å®è£
å·¥å
·';
-$lang['i_wikiname'] = 'ç»´åºåç§°';
-$lang['i_enableacl'] = 'å¯ç¨ ACLï¼æ¨èï¼';
-$lang['i_superuser'] = 'è¶
çº§ç¨æ·';
-$lang['i_problems'] = 'å®è£
å·¥å
·åç°ä¸äºé®é¢ï¼å·²å¨ä¸é¢ååºãæ¨å¿
é¡»å
ä¿®å¤è¿äºé®é¢ï¼æè½ç»§ç»å®è£
ã';
-$lang['i_modified'] = 'ç±äºå®å
¨ä¸çèèï¼è¯¥èæ¬åªè½ç¨äºå
¨æ°ä¸å任使¹å¨ç Dokuwiki å®è£
å
ã
- æ¨å¯ä»¥éæ°è§£åä¸è½½çç¨åºå
ï¼ææ¥é
宿´ç
- <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki å®è£
æå</a>';
-$lang['i_funcna'] = 'PHP åè½ <code>%s</code> æ æ³ä½¿ç¨ãä¹è®¸æ¨çæå¡å¨æä¾åå 为æäºåå ç¦ç¨äºå®ã';
-$lang['i_phpver'] = 'æ¨ç PHP çæ¬ <code>%s</code> ä½äºæä½è¦æ±ç <code>%s</code>ãæ¨éè¦å级æ¨ç PHP çæ¬ã';
-$lang['i_permfail'] = 'DokuWiki æ æ³åå
¥ <code>%s</code>ãæ¨éè¦ä¿®æ¹è¯¥è·¯å¾çæé设å®ï¼';
-$lang['i_confexists'] = '<code>%s</code> å·²ç»åå¨';
-$lang['i_writeerr'] = 'æ æ³å建 <code>%s</code>ãæ¨éè¦æ£æ¥è¯¥è·¯å¾/æä»¶çæé设å®å¹¶æå¨å建该æä»¶ã';
-$lang['i_badhash'] = 'æ æ³è¯å«çæè¢«ä¿®æ¹ç dokuwiki.phpï¼å¼=<code>%s</code>ï¼';
-$lang['i_badval'] = '<code>%s</code> - éæ³æç©ºå¼';
-$lang['i_success'] = 'é
ç½®æåå®æãæ¨ç°å¨å¯ä»¥å é¤ install.php äºãç»§ç»è¿å
¥
- <a href="doku.php">æ¨å
¨æ°ç DokuWiki</a>ã';
-$lang['i_failure'] = 'åå
¥é
ç½®æä»¶çæ¶å产çä¸äºé误ãå¨ä½¿ç¨ <a href="doku.php">æ¨å
¨æ°å®è£
ç DokuWiki</a> å
- æ¨éè¦æå¨ä¿®å¤å®ä»¬ã';
-$lang['i_policy'] = 'åå§ç ACL æ¿ç';
-$lang['i_pol0'] = '弿¾çç»´åºï¼ä»»ä½äººé½æè¯»ãåãä¸ä¼ çæéï¼';
-$lang['i_pol1'] = 'å
Œ
±çç»´åºï¼ä»»ä½äººé½æè¯»çæéï¼åªææ³¨åç¨æ·ææååä¸ä¼ çæéï¼';
-$lang['i_pol2'] = 'å
³éçç»´åºï¼åªææ³¨åç¨æ·ææè¯»ãåãä¸ä¼ çæéï¼';
-$lang['i_retry'] = 'éè¯';
+<?php
+/**
+ * Chinese(Simplified) language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author ZDYX <zhangduyixiong at gmail.com>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+$lang['doublequoteopening'] = 'â';
+$lang['doublequoteclosing'] = 'â';
+$lang['singlequoteopening'] = 'â';
+$lang['singlequoteclosing'] = 'â';
+$lang['apostrophe'] = 'â';
+$lang['btn_edit'] = 'ç¼è¾æ¬é¡µ';
+$lang['btn_source'] = 'æ¾ç¤ºæºæä»¶';
+$lang['btn_show'] = 'æ¾ç¤ºé¡µé¢';
+$lang['btn_create'] = 'å建该页é¢';
+$lang['btn_search'] = 'æç´¢';
+$lang['btn_save'] = 'ä¿å';
+$lang['btn_preview'] = 'é¢è§';
+$lang['btn_top'] = 'å°é¡¶é¨';
+$lang['btn_newer'] = '<< è¾æ°ç';
+$lang['btn_older'] = 'è¾æ§ç >>';
+$lang['btn_revs'] = '修订记å½';
+$lang['btn_recent'] = 'æè¿æ´æ¹';
+$lang['btn_upload'] = 'ä¸ä¼ ';
+$lang['btn_cancel'] = 'åæ¶';
+$lang['btn_index'] = 'ç´¢å¼';
+$lang['btn_secedit'] = 'ç¼è¾';
+$lang['btn_login'] = 'ç»å½';
+$lang['btn_logout'] = 'éåº';
+$lang['btn_admin'] = '管ç';
+$lang['btn_update'] = 'æ´æ°';
+$lang['btn_delete'] = 'å é¤';
+$lang['btn_back'] = 'è¿å';
+$lang['btn_backlink'] = 'åå龿¥';
+$lang['btn_backtomedia'] = 'è¿åå°åªä½æä»¶éæ©å·¥å
·';
+$lang['btn_subscribe'] = '订é
æ¬é¡µæ´æ¹';
+$lang['btn_unsubscribe'] = 'é订æ¬é¡µæ´æ¹';
+$lang['btn_subscribens'] = '订é
å½åç©ºé´æ´æ¹';
+$lang['btn_unsubscribens'] = 'é订å½åç©ºé´æ´æ¹';
+$lang['btn_profile'] = 'æ´æ°ä¸ªäººä¿¡æ¯';
+$lang['btn_reset'] = 'é设';
+$lang['btn_resendpwd'] = 'åéæ°å¯ç ';
+$lang['btn_draft'] = 'ç¼è¾è稿';
+$lang['btn_recover'] = 'æ¢å¤è稿';
+$lang['btn_draftdel'] = 'å é¤è稿';
+$lang['loggedinas'] = 'ç»å½ä¸º';
+$lang['user'] = 'ç¨æ·å';
+$lang['pass'] = 'å¯ç ';
+$lang['newpass'] = '请è¾å
¥æ°å¯ç ';
+$lang['oldpass'] = '请è¾å
¥å½åå¯ç ';
+$lang['passchk'] = '请åè¾ä¸æ¬¡';
+$lang['remember'] = 'è®°ä½æ';
+$lang['fullname'] = 'å
¨å';
+$lang['email'] = 'E-Mail';
+$lang['register'] = '注å';
+$lang['profile'] = 'ç¨æ·ä¿¡æ¯';
+$lang['badlogin'] = '对ä¸èµ·ï¼ç¨æ·åæå¯ç é误ã';
+$lang['minoredit'] = '轻微修æ¹';
+$lang['draftdate'] = 'è稿èªå¨ä¿åäº';
+$lang['regmissing'] = '对ä¸èµ·ï¼æ¨å¿
须填忿çåºåã';
+$lang['reguexists'] = '对ä¸èµ·ï¼è¯¥ç¨æ·åå·²ç»åå¨ã';
+$lang['regsuccess'] = 'æ°ç¨æ·å·²å»ºç«ï¼å¯ç å°éè¿çµåé®ä»¶åéç»æ¨ã';
+$lang['regsuccess2'] = 'æ°ç¨æ·å·²å»ºç«';
+$lang['regmailfail'] = 'åéå¯ç é®ä»¶æ¶äº§çé误ã请è系管çåï¼';
+$lang['regbadmail'] = 'æ¨è¾å
¥çé®ä»¶å°åæé®é¢ââ妿æ¨è®¤ä¸ºè¿æ¯ç³»ç»é误ï¼è¯·è系管çåã';
+$lang['regbadpass'] = 'æ¨è¾å
¥çå¯ç ä¸ç³»ç»äº§ççä¸ç¬¦ï¼è¯·éè¯ã';
+$lang['regpwmail'] = 'æ¨ç DokuWiki å¯ç ';
+$lang['reghere'] = 'è¿æ²¡æè´¦å·ï¼ç«å³æ³¨å';
+$lang['profna'] = 'æ¬ç»´åºä¸æ¯æä¿®æ¹ä¸ªäººä¿¡æ¯';
+$lang['profnochange'] = 'æ²¡ææ¹å¨ï¼ä¸è¿è¡æä½ã';
+$lang['profnoempty'] = 'ä¸å
许使ç¨ç©ºçç¨æ·åæé®ä»¶å°åã';
+$lang['profchanged'] = 'ç¨æ·ä¿¡æ¯æ´æ°æåã';
+$lang['pwdforget'] = 'å¿è®°å¯ç ï¼ç«å³è·åæ°å¯ç ';
+$lang['resendna'] = 'æ¬ç»´åºä¸æ¯æäºæ¬¡åéå¯ç ã';
+$lang['resendpwd'] = 'åéæ°å¯ç ç»';
+$lang['resendpwdmissing'] = '对ä¸èµ·ï¼æ¨å¿
须填忿çåºåã';
+$lang['resendpwdnouser'] = '对ä¸èµ·ï¼å¨æä»¬çç¨æ·æ°æ®ä¸æ¾ä¸å°è¯¥ç¨æ·ã';
+$lang['resendpwdbadauth'] = '对ä¸èµ·ï¼è¯¥è®¤è¯ç é误ã请使ç¨å®æ´çç¡®è®¤é¾æ¥ã';
+$lang['resendpwdconfirm'] = 'ç¡®è®¤é¾æ¥å·²ç»éè¿é®ä»¶åéç»æ¨äºã';
+$lang['resendpwdsuccess'] = 'æ¨çæ°å¯ç å·²ç»éè¿é®ä»¶åéç»æ¨äºã';
+$lang['txt_upload'] = 'éæ©è¦ä¸ä¼ çæä»¶';
+$lang['txt_filename'] = 'ä¸ä¼ å¹¶éå½å为ï¼å¯éï¼';
+$lang['txt_overwrt'] = 'è¦çå·²åå¨çååæä»¶';
+$lang['lockedby'] = 'ç®å已被ä¸å人åéå®';
+$lang['lockexpire'] = 'é¢è®¡éå®è§£é¤äº';
+$lang['willexpire'] = 'æ¨å¯¹æ¬é¡µçç¬æç¼è¾æå°äºä¸åéä¹åè§£é¤ã\n为äºé²æ¢ä¸å
¶ä»äººçç¼è¾å²çªï¼è¯·ä½¿ç¨é¢è§æé®é设计æ¶å¨ã';
+$lang['notsavedyet'] = 'æªä¿åçæ´æ¹å°ä¸¢å¤±ã\nççè¦ç»§ç»ï¼';
+$lang['rssfailed'] = 'è·å该 RSS ä¿¡æ¯æ¶äº§çé误ï¼';
+$lang['nothingfound'] = 'ä»ä¹é½æ²¡ææ¾å°ã';
+$lang['mediaselect'] = 'åªä½æä»¶';
+$lang['fileupload'] = 'ä¸ä¼ åªä½æä»¶';
+$lang['uploadsucc'] = 'ä¸ä¼ æå';
+$lang['uploadfail'] = 'ä¸ä¼ 失败ãä¹è®¸æ¯ä¸ä¼ æéé误ã';
+$lang['uploadwrong'] = 'ä¸ä¼ 失败ã该æ©å±åè¢«ç¦æ¢ã';
+$lang['uploadexist'] = 'æä»¶å·²åå¨ãä¸è¿è¡æä½ã';
+$lang['uploadbadcontent'] = 'ä¸ä¼ çæä»¶ä¸æ©å±å %s ä¸ç¬¦ã';
+$lang['uploadspam'] = 'ä¸ä¼ æä½è¢«åå¾ä¿¡æ¯é»åå黿¢ã';
+$lang['uploadxss'] = 'ä¸ä¼ æä½å å¯è½å卿¶æå
容èè¢«é»æ¢ã';
+$lang['deletesucc'] = 'æä»¶â%sâå·²ç»è¢«å é¤ã';
+$lang['deletefail'] = 'æ æ³å é¤â%sâ- è¯·æ£æ¥æéã';
+$lang['mediainuse'] = 'æä»¶â%sâæ æ³å é¤ - 宿£è¢«ä½¿ç¨ä¸ã';
+$lang['namespaces'] = 'å½å空é´';
+$lang['mediafiles'] = 'å¯ç¨çæä»¶';
+$lang['js']['keepopen'] = 'éä¸åä¸èªå¨å
³éçªå£';
+$lang['js']['hidedetails'] = 'éè详ç»ä¿¡æ¯';
+$lang['mediausage'] = '使ç¨ä¸ååç¬¦é¾æ¥å°è¯¥æä»¶ï¼';
+$lang['mediaview'] = 'æ¥ç该æä»¶';
+$lang['mediaroot'] = 'æ ¹ç®å½';
+$lang['mediaupload'] = 'ä¸ä¼ æä»¶è³å½åçå½å空é´ãè¦å建次级å½å空é´ï¼å°å
¶åç§°å å¨âä¸ä¼ å¹¶éå½å为âæä»¶åçåé¢ï¼å¹¶ç¨è±æåå·éå¼';
+$lang['mediaextchange'] = 'æä»¶çæ©å±åç± .%s æ¹ä¸ºäº .%sï¼';
+$lang['reference'] = 'ç¸å
³ç';
+$lang['ref_inuse'] = '该æä»¶æ æ³å é¤ï¼å ä¸ºå®æ£è¢«ä¸å页é¢ä½¿ç¨ï¼';
+$lang['ref_hidden'] = 'ä¸äºç¸å
³ç页颿¨å¹¶æ²¡ææéé
读';
+$lang['hits'] = '符å';
+$lang['quickhits'] = 'å¹é
ç页é¢åç§°';
+$lang['toc'] = 'ç®å½';
+$lang['current'] = 'å½åçæ¬';
+$lang['yours'] = 'æ¨ççæ¬';
+$lang['diff'] = 'æ¾ç¤ºä¸å½åçæ¬çå·®å«';
+$lang['line'] = 'è¡';
+$lang['breadcrumb'] = 'æ¨ç足迹';
+$lang['youarehere'] = 'æ¨å¨è¿é';
+$lang['lastmod'] = 'æåæ´æ¹';
+$lang['by'] = 'ç±';
+$lang['deleted'] = 'ç§»é¤';
+$lang['created'] = 'å建';
+$lang['restored'] = 'å·²æ¢å¤ä¸ºæ§ç';
+$lang['external_edit'] = 'å¤é¨ç¼è¾';
+$lang['summary'] = 'ç¼è¾æè¦';
+$lang['mail_newpage'] = 'æ·»å 页é¢ï¼';
+$lang['mail_changed'] = 'æ´æ¹é¡µé¢ï¼';
+$lang['mail_new_user'] = 'æ°ç¨æ·ï¼';
+$lang['mail_upload'] = 'å·²ä¸ä¼ çæä»¶ï¼';
+$lang['nosmblinks'] = 'è¿æ¥å° Windows å
±äº«åè½åªæå¨ IE æµè§å¨ä¸æè½æ£å¸¸ä½¿ç¨ã\n使¨ä»è½å¤å¶å¹¶ç²è´´è¯¥é¾æ¥ã';
+$lang['qb_alert'] = '请è¾å
¥æ¨æ³æ ¼å¼åçæåã\nå®å°ä¼è¢«éå å°æä»¶çæåã';
+$lang['qb_bold'] = 'ç²ä½';
+$lang['qb_italic'] = 'æä½';
+$lang['qb_underl'] = 'ä¸å线';
+$lang['qb_code'] = '代ç ';
+$lang['qb_strike'] = 'å é¤çº¿';
+$lang['qb_h1'] = 'æ é¢ H1';
+$lang['qb_h2'] = 'æ é¢ H2 ';
+$lang['qb_h3'] = 'æ é¢ H3';
+$lang['qb_h4'] = 'æ é¢ H4';
+$lang['qb_h5'] = 'æ é¢ H5';
+$lang['qb_link'] = 'å
é¨é¾æ¥';
+$lang['qb_extlink'] = 'å¤é¨é¾æ¥';
+$lang['qb_hr'] = '水平线';
+$lang['qb_ol'] = 'æ°åå表项ç®';
+$lang['qb_ul'] = 'æ®éå表项ç®';
+$lang['qb_media'] = 'æå
¥å¾åæå
¶ä»æä»¶';
+$lang['qb_sig'] = 'æå
¥ç¾å';
+$lang['qb_smileys'] = '表æ
符å·';
+$lang['qb_chars'] = 'ç¹æ®å符';
+$lang['del_confirm'] = 'ççè¦å é¤éä¸ç项ç®åï¼';
+$lang['admin_register'] = 'æ·»å æ°ç¨æ·';
+$lang['metaedit'] = 'ç¼è¾å
æ°æ®';
+$lang['metasaveerr'] = 'åå
¥å
æ°æ®å¤±è´¥';
+$lang['metasaveok'] = 'å
æ°æ®å·²ä¿å';
+$lang['img_backto'] = 'è¿åå°';
+$lang['img_title'] = 'æ é¢';
+$lang['img_caption'] = '说æ';
+$lang['img_date'] = 'æ¥æ';
+$lang['img_fname'] = 'åç§°';
+$lang['img_fsize'] = '大å°';
+$lang['img_artist'] = 'æå½±å¸';
+$lang['img_copyr'] = 'çæ';
+$lang['img_format'] = 'æ ¼å¼';
+$lang['img_camera'] = 'ç¸æº';
+$lang['img_keywords'] = 'å
³é®å';
+$lang['subscribe_success'] = 'å·²å° %s æåæ·»å å° %s ç订é
å表';
+$lang['subscribe_error'] = 'æ æ³å° %s æ·»å å° %s ç订é
å表';
+$lang['subscribe_noaddress'] = 'æ¨çç»å½ä¿¡æ¯ä¸ä¸å
å«çµåé®ä»¶å°åï¼æ¨æ æ³å å
¥è®¢é
å表';
+$lang['unsubscribe_success'] = 'å·²å° %s ä» %s ç订é
åè¡¨ä¸æåå é¤';
+$lang['unsubscribe_error'] = 'æ æ³å° %s ä» %s ç订é
å表ä¸å é¤';
+$lang['authmodfailed'] = 'é误çç¨æ·è®¤è¯è®¾ç½®ã请éç¥ç»´åºç®¡çåã';
+$lang['authtempfail'] = 'ç¨æ·è®¤è¯ææ¶æ æ³ä½¿ç¨ãå¦æè¯¥ç¶æä¸ç´åå¨ï¼è¯·éç¥ç»´åºç®¡çåã';
+$lang['i_chooselang'] = 'éæ©æ¨çè¯è¨';
+$lang['i_installer'] = 'DokuWiki å®è£
å·¥å
·';
+$lang['i_wikiname'] = 'ç»´åºåç§°';
+$lang['i_enableacl'] = 'å¯ç¨ ACLï¼æ¨èï¼';
+$lang['i_superuser'] = 'è¶
çº§ç¨æ·';
+$lang['i_problems'] = 'å®è£
å·¥å
·åç°ä¸äºé®é¢ï¼å·²å¨ä¸é¢ååºãæ¨å¿
é¡»å
ä¿®å¤è¿äºé®é¢ï¼æè½ç»§ç»å®è£
ã';
+$lang['i_modified'] = 'ç±äºå®å
¨ä¸çèèï¼è¯¥èæ¬åªè½ç¨äºå
¨æ°ä¸å任使¹å¨ç Dokuwiki å®è£
å
ã
+ æ¨å¯ä»¥éæ°è§£åä¸è½½çç¨åºå
ï¼ææ¥é
宿´ç
+ <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki å®è£
æå</a>';
+$lang['i_funcna'] = 'PHP åè½ <code>%s</code> æ æ³ä½¿ç¨ãä¹è®¸æ¨çæå¡å¨æä¾åå 为æäºåå ç¦ç¨äºå®ã';
+$lang['i_phpver'] = 'æ¨ç PHP çæ¬ <code>%s</code> ä½äºæä½è¦æ±ç <code>%s</code>ãæ¨éè¦å级æ¨ç PHP çæ¬ã';
+$lang['i_permfail'] = 'DokuWiki æ æ³åå
¥ <code>%s</code>ãæ¨éè¦ä¿®æ¹è¯¥è·¯å¾çæé设å®ï¼';
+$lang['i_confexists'] = '<code>%s</code> å·²ç»åå¨';
+$lang['i_writeerr'] = 'æ æ³å建 <code>%s</code>ãæ¨éè¦æ£æ¥è¯¥è·¯å¾/æä»¶çæé设å®å¹¶æå¨å建该æä»¶ã';
+$lang['i_badhash'] = 'æ æ³è¯å«çæè¢«ä¿®æ¹ç dokuwiki.phpï¼å¼=<code>%s</code>ï¼';
+$lang['i_badval'] = '<code>%s</code> - éæ³æç©ºå¼';
+$lang['i_success'] = 'é
ç½®æåå®æãæ¨ç°å¨å¯ä»¥å é¤ install.php äºãç»§ç»è¿å
¥
+ <a href="doku.php">æ¨å
¨æ°ç DokuWiki</a>ã';
+$lang['i_failure'] = 'åå
¥é
ç½®æä»¶çæ¶å产çä¸äºé误ãå¨ä½¿ç¨ <a href="doku.php">æ¨å
¨æ°å®è£
ç DokuWiki</a> å
+ æ¨éè¦æå¨ä¿®å¤å®ä»¬ã';
+$lang['i_policy'] = 'åå§ç ACL æ¿ç';
+$lang['i_pol0'] = '弿¾çç»´åºï¼ä»»ä½äººé½æè¯»ãåãä¸ä¼ çæéï¼';
+$lang['i_pol1'] = 'å
Œ
±çç»´åºï¼ä»»ä½äººé½æè¯»çæéï¼åªææ³¨åç¨æ·ææååä¸ä¼ çæéï¼';
+$lang['i_pol2'] = 'å
³éçç»´åºï¼åªææ³¨åç¨æ·ææè¯»ãåãä¸ä¼ çæéï¼';
+$lang['i_retry'] = 'éè¯';
Modified: site/trunk/www-root/wiki/inc/lang/zh/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ç»å½ ======
-
-æ¨å°æªç»å½ï¼è¯·å¨ä¸æ¹è¾å
¥æ¨çç¨æ·ååå¯ç è¿è¡ç»å½ã
+====== ç»å½ ======
+
+æ¨å°æªç»å½ï¼è¯·å¨ä¸æ¹è¾å
¥æ¨çç¨æ·ååå¯ç è¿è¡ç»å½ã
æ¨çæµè§å¨éè¦æ¯æ Cookies æè½æ£å¸¸ç»å½ã
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,17 +1,17 @@
-æ¨ç DokuWiki 䏿ä¸ä¸ªé¡µé¢è¢«æ·»å ææ´æ¹äºã以䏿¯è¯¦ç»èµæï¼
-
-æ¥æ : @DATE@
-æµè§å¨ : @BROWSER@
-IP å°å : @IPADDRESS@
-æºå¨åç§° : @HOSTNAME@
-ä¿®è®¢è®°å½ : @OLDPAGE@
-ææ°ä¿®è®¢ : @NEWPAGE@
-ç¼è¾æè¦ : @SUMMARY@
-ç¨æ· : @USER@
-
- at DIFF@
-
-
---
-æ¬é®ä»¶ç± DokuWiki èªå¨å建
+æ¨ç DokuWiki 䏿ä¸ä¸ªé¡µé¢è¢«æ·»å ææ´æ¹äºã以䏿¯è¯¦ç»èµæï¼
+
+æ¥æ : @DATE@
+æµè§å¨ : @BROWSER@
+IP å°å : @IPADDRESS@
+æºå¨åç§° : @HOSTNAME@
+ä¿®è®¢è®°å½ : @OLDPAGE@
+ææ°ä¿®è®¢ : @NEWPAGE@
+ç¼è¾æè¦ : @SUMMARY@
+ç¨æ· : @USER@
+
+ at DIFF@
+
+
+--
+æ¬é®ä»¶ç± DokuWiki èªå¨å建
@DOKUWIKIURL@
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/newpage.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/norev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,10 +1,10 @@
- at FULLNAME@ æ¨å¥½ï¼
-
-è¿æ¯æ¨å¨ @TITLE@ï¼@DOKUWIKIURL@ï¼çç¨æ·èµæ
-ç¨æ·åï¼@LOGIN@
-å¯ç ï¼@PASSWORD@
-
---
-æ¬é®ä»¶ç± DokuWiki èªå¨å建
- at DOKUWIKIURL@
-
+ at FULLNAME@ æ¨å¥½ï¼
+
+è¿æ¯æ¨å¨ @TITLE@ï¼@DOKUWIKIURL@ï¼çç¨æ·èµæ
+ç¨æ·åï¼@LOGIN@
+å¯ç ï¼@PASSWORD@
+
+--
+æ¬é®ä»¶ç± DokuWiki èªå¨å建
+ at DOKUWIKIURL@
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-======é¢è§======
-
-è¿æ¯è¯¥æä»¶çææé¢è§ã请记ä½ï¼å®**并没æè¢«ä¿å**ï¼
+======é¢è§======
+
+è¿æ¯è¯¥æä»¶çææé¢è§ã请记ä½ï¼å®**并没æè¢«ä¿å**ï¼
Modified: site/trunk/www-root/wiki/inc/lang/zh/pwconfirm.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/pwconfirm.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/pwconfirm.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,15 +1,15 @@
- at FULLNAME@ æ¨å¥½ï¼
-
-æäººè¯·æ±ä¸ºæ¨å¨ @DOKUWIKIURL@ 注åçç¨æ·å @TITLE@ åéæ°å¯ç
-
-å¦ææ¨æ²¡æè¯·æ±åéæ°å¯ç ï¼è¯·å¿½ç¥è¿å°é®ä»¶ã
-
-为äºç¡®è®¤åéæ°å¯ç 请æ±çç¡®æ¥èªæ¨ï¼è¯·ä½¿ç¨ä¸é¢ç龿¥ã
-
- at CONFIRM@
-
---
-æ¬é®ä»¶ç± DokuWiki èªå¨å建
- at DOKUWIKIURL@
-
-
+ at FULLNAME@ æ¨å¥½ï¼
+
+æäººè¯·æ±ä¸ºæ¨å¨ @DOKUWIKIURL@ 注åçç¨æ·å @TITLE@ åéæ°å¯ç
+
+å¦ææ¨æ²¡æè¯·æ±åéæ°å¯ç ï¼è¯·å¿½ç¥è¿å°é®ä»¶ã
+
+为äºç¡®è®¤åéæ°å¯ç 请æ±çç¡®æ¥èªæ¨ï¼è¯·ä½¿ç¨ä¸é¢ç龿¥ã
+
+ at CONFIRM@
+
+--
+æ¬é®ä»¶ç± DokuWiki èªå¨å建
+ at DOKUWIKIURL@
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======æè¿æ´æ°======
-
-以ä¸ç页颿¯æè¿ææ´æ°çï¼
-
-
+======æè¿æ´æ°======
+
+以ä¸ç页颿¯æè¿ææ´æ°çï¼
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== æ³¨åæ°ç¨æ· ======
-
-å¡«å以ä¸èµææ¥å建ä¸ä¸ªæ°å¸æ·ãè¯·ç¡®å®æ¨æä¾çæ¯ **æ£ç¡®ç E-mail å°å** - å¦ææ¨æ²¡æè¢«è¦æ±å¨è¿éè¾å
¥å¯ç ï¼é£ä¹æ°å¯ç å°éè¿æ¨çé®ä»¶å°ååéç»æ¨ã
+====== æ³¨åæ°ç¨æ· ======
+
+å¡«å以ä¸èµææ¥å建ä¸ä¸ªæ°å¸æ·ãè¯·ç¡®å®æ¨æä¾çæ¯ **æ£ç¡®ç E-mail å°å** - å¦ææ¨æ²¡æè¢«è¦æ±å¨è¿éè¾å
¥å¯ç ï¼é£ä¹æ°å¯ç å°éè¿æ¨çé®ä»¶å°ååéç»æ¨ã
ç¨äºç»å½çç¨æ·åå¿
须忳ï¼è¯·åé
[[doku>wiki:pagename|pagename]]ã
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/registermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/registermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/registermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-æ°ç¨æ·å·²å建ãä¸é¢æ¯è¯¦ç»ä¿¡æ¯ï¼
-
-ç¨æ·å : @NEWUSER@
-å
¨å : @NEWNAME@
-E-mail : @NEWEMAIL@
-
-æ¥æ : @DATE@
-æµè§å¨ : @BROWSER@
-IP å°å : @IPADDRESS@
-æºå¨åç§° : @HOSTNAME@
-
---
-æ¬é®ä»¶ç± DokuWiki èªå¨å建
- at DOKUWIKIURL@
-
-
+æ°ç¨æ·å·²å建ãä¸é¢æ¯è¯¦ç»ä¿¡æ¯ï¼
+
+ç¨æ·å : @NEWUSER@
+å
¨å : @NEWNAME@
+E-mail : @NEWEMAIL@
+
+æ¥æ : @DATE@
+æµè§å¨ : @BROWSER@
+IP å°å : @IPADDRESS@
+æºå¨åç§° : @HOSTNAME@
+
+--
+æ¬é®ä»¶ç± DokuWiki èªå¨å建
+ at DOKUWIKIURL@
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/resendpwd.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/revisions.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh/searchpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/searchpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/searchpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======æç´¢======
-
-ä¸é¢å°æ¾ç¤ºæ¨çæç´¢ç»æãå¦ææ²¡ææ¾å°æ¨æ³è¦çä¸è¥¿ï¼æ¨å¯ä»¥ä½¿ç¨ç¸åºçæé®æ¥å建æç¼è¾è¯¥é¡µé¢ã
-
+======æç´¢======
+
+ä¸é¢å°æ¾ç¤ºæ¨çæç´¢ç»æãå¦ææ²¡ææ¾å°æ¨æ³è¦çä¸è¥¿ï¼æ¨å¯ä»¥ä½¿ç¨ç¸åºçæé®æ¥å建æç¼è¾è¯¥é¡µé¢ã
+
=====æç´¢ç»æ=====
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**è¿æ¯æ¬ææ¡£æ§ç修订çï¼**
-----
+**è¿æ¯æ¬ææ¡£æ§ç修订çï¼**
+----
Modified: site/trunk/www-root/wiki/inc/lang/zh/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,29 +1,29 @@
-# This is a list of words the indexer ignores, one word per line
-# When you edit this file be sure to use UNIX line endings (single newline)
-# No need to include words shorter than 3 chars - these are ignored anyway
-# This list is based upon the ones found at http://www.ranks.nl/stopwords/
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# This is a list of words the indexer ignores, one word per line
+# When you edit this file be sure to use UNIX line endings (single newline)
+# No need to include words shorter than 3 chars - these are ignored anyway
+# This list is based upon the ones found at http://www.ranks.nl/stopwords/
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/zh/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,19 +1,19 @@
-æ¨å¥½ï¼
-
- at TITLE@ ä¸ç @PAGE@ 页é¢å·²æ´æ¹ã
-ä¸é¢æ¯æ´æ¹çè¯¦ç»æ
åµï¼
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-è¦é订æ¬é¡µï¼è¯·ç»å½ç»´åº
- at DOKUWIKIURL@ ç¶å访é®
- at NEWPAGE@
-å¹¶éæ©'éè®¢æ´æ¹'ã
-
---
-æ¬é®ä»¶ç± DokuWiki èªå¨å建
- at DOKUWIKIURL@
-
-
+æ¨å¥½ï¼
+
+ at TITLE@ ä¸ç @PAGE@ 页é¢å·²æ´æ¹ã
+ä¸é¢æ¯æ´æ¹çè¯¦ç»æ
åµï¼
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+è¦é订æ¬é¡µï¼è¯·ç»å½ç»´åº
+ at DOKUWIKIURL@ ç¶å访é®
+ at NEWPAGE@
+å¹¶éæ©'éè®¢æ´æ¹'ã
+
+--
+æ¬é®ä»¶ç± DokuWiki èªå¨å建
+ at DOKUWIKIURL@
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== æ´æ°æ¨å¸æ·çä¿¡æ¯ ======
-
-æ¨åªéè¦å¡«åå¸ææ´æ¹çåºåå³å¯ãæ¨ä¸è½æ´æ¹ç¨æ·åã
-
-
+====== æ´æ°æ¨å¸æ·çä¿¡æ¯ ======
+
+æ¨åªéè¦å¡«åå¸ææ´æ¹çåºåå³å¯ãæ¨ä¸è½æ´æ¹ç¨æ·åã
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/uploadmail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh/uploadmail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh/uploadmail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,20 +1,20 @@
-æ¨å¥½ï¼
-
-ä¸ä¸ªæä»¶è¢«ä¸ä¼ å°æ¨ç DokuWiki ç«ç¹ãä¸é¢æ¯è¯¦ç»ä¿¡æ¯ï¼
-
-æä»¶å : @MEDIA@
-æ¥æ : @DATE@
-æµè§å¨ : @BROWSER@
-IP å°å : @IPADDRESS@
-主æºå : @HOSTNAME@
-å¤§å° : @SIZE@
-MIME ç±»å : @MIME@
-ç¨æ· : @USER@
-
---
-æ¬é®ä»¶ç± DokuWiki èªå¨å建
- at DOKUWIKIURL@
-
-
-
-
+æ¨å¥½ï¼
+
+ä¸ä¸ªæä»¶è¢«ä¸ä¼ å°æ¨ç DokuWiki ç«ç¹ãä¸é¢æ¯è¯¦ç»ä¿¡æ¯ï¼
+
+æä»¶å : @MEDIA@
+æ¥æ : @DATE@
+æµè§å¨ : @BROWSER@
+IP å°å : @IPADDRESS@
+主æºå : @HOSTNAME@
+å¤§å° : @SIZE@
+MIME ç±»å : @MIME@
+ç¨æ· : @USER@
+
+--
+æ¬é®ä»¶ç± DokuWiki èªå¨å建
+ at DOKUWIKIURL@
+
+
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh/wordblock.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/admin.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/admin.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/admin.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== 管çé¸å® ======
-
-以ä¸çº DokuWiki ç管çè¨å®
-
+====== 管çé¸å® ======
+
+以ä¸çº DokuWiki ç管çè¨å®
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/backlinks.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/backlinks.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/backlinks.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== 被å¼ç¨çé£çµ(Backlinks) ======
-
-éè£¡æ¯æå¼ç¨ãé£çµå°åå
é é¢çæ¸
å®ã
-
-
+====== 被å¼ç¨çé£çµ(Backlinks) ======
+
+éè£¡æ¯æå¼ç¨ãé£çµå°åå
é é¢çæ¸
å®ã
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/conflict.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/denied.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/denied.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/denied.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======æçµå°æªææ¬======
-
-徿±ææ¨æ¬éä¸å¤ 以è´ç¡æ³ç¹¼çºãæè¨±æ¨å¿äºå
ç»å
¥æ¨ç帳èåï¼
-
+======æçµå°æªææ¬======
+
+徿±ææ¨æ¬éä¸å¤ 以è´ç¡æ³ç¹¼çºãæè¨±æ¨å¿äºå
ç»å
¥æ¨ç帳èåï¼
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/diff.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/diff.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/diff.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======å·®ç°è======
-
-é裡æé¡¯ç¤ºåºæé¸ççæ¬¡èç®åçæ¬¡çå·®ç°èã
-
+======å·®ç°è======
+
+é裡æé¡¯ç¤ºåºæé¸ççæ¬¡èç®åçæ¬¡çå·®ç°èã
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/edit.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/edit.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/edit.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-æç¤ºï¼ç·¨ä¿®æ¬é 並æã''å²å''ãå³å¯ã 䏿 Wiki èªæ³ï¼æ²éä¿é»ä¸ä¸ [[http://bbs.ilc.edu.tw/wiki/doku.php?id=wiki:syntax|ä¸æèªæ³]]|[[doku>wiki:syntax|English syntax]] ãè¥æ¨è¦ºå¾å¯è®æ¬æå質ã**æ´å¥½**ãç話ï¼é£å°±è«ç¹¼çºå§ :) \\
-ãããä½è¥åªæ³ç·´ç¿ææ¸¬è©¦æ±è¥¿ç話ï¼é£éº¼è«å
å¤å©ç¨ [[playground:playground|æ°æè©¦ç
å ´]] ä¾è©¦ç
æ¨ç身æå§ã
+æç¤ºï¼ç·¨ä¿®æ¬é 並æã''å²å''ãå³å¯ã 䏿 Wiki èªæ³ï¼æ²éä¿é»ä¸ä¸ [[http://bbs.ilc.edu.tw/wiki/doku.php?id=wiki:syntax|ä¸æèªæ³]]|[[doku>wiki:syntax|English syntax]] ãè¥æ¨è¦ºå¾å¯è®æ¬æå質ã**æ´å¥½**ãç話ï¼é£å°±è«ç¹¼çºå§ :) \\
+ãããä½è¥åªæ³ç·´ç¿ææ¸¬è©¦æ±è¥¿ç話ï¼é£éº¼è«å
å¤å©ç¨ [[playground:playground|æ°æè©¦ç
å ´]] ä¾è©¦ç
æ¨ç身æå§ã
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/editrev.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/index.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/index.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/index.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== ç´¢å¼é ======
-
-ç®åæ¨æçå°çæ¯ç¨ [[doku>wiki:zh_tw_namespaces|namespaces]] 便åºç®åææå¯ç¨çé 颿¸
å®ã\\
-è«ç´æ¥ææ¨æ³è¦çé 颿è
ç¨ã顯示é é¢ã便ª¢è¦ç®åæå¨é é¢
+====== ç´¢å¼é ======
+
+ç®åæ¨æçå°çæ¯ç¨ [[doku>wiki:zh_tw_namespaces|namespaces]] 便åºç®åææå¯ç¨çé 颿¸
å®ã\\
+è«ç´æ¥ææ¨æ³è¦çé 颿è
ç¨ã顯示é é¢ã便ª¢è¦ç®åæå¨é é¢
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/lang.php
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,195 +1,195 @@
-<?php
-/**
- * Chinese(Traditional) language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author chinsan <chinsan at mail2000.com.tw>
- */
-$lang['encoding'] = 'utf-8';
-$lang['direction'] = 'ltr';
-
-$lang['btn_edit'] = '編修æ¬é ';
-$lang['btn_source'] = '顯示é é¢ä¾æº';
-$lang['btn_show'] = '顯示é é¢';
-$lang['btn_create'] = 'å»ºç«æ¤é ';
-$lang['btn_search'] = 'æå°';
-$lang['btn_save'] = 'å²å';
-$lang['btn_preview']= 'é 覽';
-$lang['btn_top'] = 'åå°é é ';
-$lang['btn_newer'] = '<< è¼æ°';
-$lang['btn_older'] = 'è¼è >>';
-$lang['btn_revs'] = 'èç';
-$lang['btn_recent'] = 'æè¿æ´æ°';
-$lang['btn_upload'] = 'ä¸å³';
-$lang['btn_cancel'] = 'åæ¶';
-$lang['btn_index'] = 'ç´¢å¼é ';
-$lang['btn_secedit']= 'æ¹é段';
-$lang['btn_login'] = 'ç»å
¥';
-$lang['btn_logout'] = 'ç»åº';
-$lang['btn_admin'] = '管çé¸å®';
-$lang['btn_update'] = 'æ´æ°è¨å®';
-$lang['btn_delete'] = 'åªé¤';
-$lang['btn_back'] = 'åä¸ä¸æ¥';
-$lang['btn_backlink'] = "Backlinks";
-$lang['btn_backtomedia'] = 'éæ°é¸æåæª';
-$lang['btn_subscribe'] = 'è¨é±æ´åéç¥';
-$lang['btn_unsubscribe'] = 'éè¨æ´åéç¥';
-$lang['btn_profile'] = 'æ´æ°åäººè³æ';
-$lang['btn_reset'] = 'è³æéè¨';
-$lang['btn_resendpwd'] = '坿°å¯ç¢¼';
-$lang['btn_draft'] = '編輯è稿';
-$lang['btn_recover'] = '復åè稿';
-$lang['btn_draftdel'] = 'æ¨æ£è稿';
-
-$lang['loggedinas'] = 'ç»å
¥çº';
-$lang['user'] = '帳è';
-$lang['pass'] = 'å¯ç¢¼';
-$lang['newpass'] = 'æ°çå¯ç¢¼';
-$lang['oldpass'] = 'ç®åçå¯ç¢¼';
-$lang['passchk'] = '忬¡ææ°çå¯ç¢¼';
-$lang['remember'] = 'è¨ä½å¸³èå¯ç¢¼';
-$lang['fullname'] = 'æ±ç¨±';
-$lang['email'] = 'E-Mail';
-$lang['register'] = '註å';
-$lang['profile'] = '使ç¨è
åäººè³æ';
-$lang['badlogin'] = '徿±æï¼æ¨ç使ç¨è
å稱æå¯ç¢¼å¯è½æé¯èª¤';
-$lang['minoredit'] = 'æ¬¡è¦æ§çä¿®æ¹';
-$lang['draftdate'] = 'è稿èªååæªæ¼'; // full dformat date will be added
-
-$lang['regmissing'] = '徿±æï¼ææçæ¬ä½é½è¦å¡«å¦';
-$lang['reguexists'] = '徿±æï¼å·²æäººè¨»å該帳èäºå';
-$lang['regsuccess'] = '使ç¨è
已建ç«ï¼å¯ç¢¼å·²ç¶ç¨ email å¯å°æ¨ä¿¡ç®±äºå·ã';
-$lang['regsuccess2']= '使ç¨è
已建ç«';
-$lang['regmailfail']= 'å¯åºå¯ç¢¼ä¿¡ä¼¼ä¹ç¼çé¯èª¤ï¼è«è·ç®¡çè
è¯çµ¡ï¼';
-$lang['regbadmail'] = 'æ¨è¼¸å
¥ç email ä¼¼ä¹ä¸å°ï¼å¦ææ¨èªçºæ¯æ£ç¢ºçï¼è«è管çè
è¯çµ¡ã';
-$lang['regbadpass'] = 'å
©æ¬¡æçå¯ç¢¼ä¸ä¸è´ï¼è«åé試ï¼è¬è¬ã';
-$lang['regpwmail'] = 'æ¨ç DokuWiki 帳èå¯ç¢¼';
-$lang['reghere'] = 'æ¨éæ²æå¸³èå°å§ï¼ä¾è¨»åä¸åå§ã';
-
-$lang['profna'] = 'æ¬ wiki ä¸éæ¾ä¿®æ¹åäººè³æ';
-$lang['profnochange'] = 'æªåä»»ä½è®æ´';
-$lang['profnoempty'] = 'å¸³èæ email å°åä¸å¯ä»¥æ²æå¯«åï¼';
-$lang['profchanged'] = 'åäººè³æå·²æåæ´æ°åã';
-
-$lang['pwdforget'] = 'å¿è¨å¯ç¢¼åï¼å¯æ°å¯ç¢¼ï¼';
-$lang['resendna'] = 'æ¬ wiki ä¸éæ¾é坿°å¯ç¢¼';
-$lang['resendpwd'] = '坿°å¯ç¢¼çµ¦';
-$lang['resendpwdmissing'] = '徿±æï¼æ¨å¿
é å
¨å¡«éäºè³ææå¯ä»¥';
-$lang['resendpwdnouser'] = '徿±æï¼è³æåº«å
§æ¥ç¡æ¤äºº';
-$lang['resendpwdsuccess'] = 'æ°å¯ç¢¼å½å·²ç¶ä»¥ email å¯åºäºã';
-
-$lang['txt_upload'] = 'è«é¸æè¦ä¸å³çæªæ¡';
-$lang['txt_filename'] = 'è«è¼¸å
¥è¦åå¨ wiki å
§çæªå (optional)';
-$lang['txt_overwrt'] = 'æ¯å¦è¦è¦èåææªæ¡';
-$lang['lockedby'] = 'ç®å已被ä¸å人å¡éå®';
-$lang['lockexpire'] = 'é è¨è§£é¤é宿¼';
-$lang['willexpire'] = 'æ¨ç®å編輯éé çéå®å°æå¨ä¸åéå
§è§£é¤ã\è¥è¦é¿å
ç¼çæå¤ï¼è«æãé 覽ãéµä¾éæ°è¨å®éå®çæ
';
-
-$lang['notsavedyet'] = 'æå°æªå²åçè®æ´å°æéºå¤±ã\nççè¦ç¹¼çºåï¼';
-$lang['rssfailed'] = 'ç¶æå餵ééä¾ç RSS è³ææç¼çé¯èª¤: ';
-$lang['nothingfound']= 'æ²æ¾å°ä»»ä½çµæã';
-
-$lang['mediaselect'] = 'é¸æåæª';
-$lang['fileupload'] = 'ä¸å³åæª';
-$lang['uploadsucc'] = 'ä¸å³æå';
-$lang['uploadfail'] = 'ä¸å³å¤±æãæè¨±æ¬éè¨å®é¯èª¤äºåï¼';
-$lang['uploadwrong'] = 'æçµä¸å³ãè©²æªæ¡é¡åä¸è¢«æ¯æ´ã';
-$lang['uploadexist'] = 'è©²æªæ¡å·²æåå¨äºåï¼æ
åæ¶ä¸å³åä½ã';
-$lang['deletesucc'] = '"%s" æªå·²åªé¤å®ç¢ã';
-$lang['deletefail'] = '"%s" æªç¡æ³åªé¤ï¼è«å
æª¢æ¥æ¬éè¨å®ã';
-$lang['mediainuse'] = '"%s" æªå éå¨ä½¿ç¨ä¸ï¼æ
ç®åå°ç¡æ³åªé¤ã';
-$lang['namespaces'] = 'Namespaces';
-$lang['mediafiles'] = 'å¯ç¨çæªæ¡æ';
-
-$lang['js']['keepopen'] = 'Keep window open on selection';
-$lang['js']['hidedetails'] = 'Hide Details';
-$lang['mediausage'] = 'Use the following syntax to reference this file:';
-$lang['mediaview'] = '檢è¦åå§æªæ¡';
-$lang['mediaroot'] = 'root';
-$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons.';
-$lang['mediaextchange'] = 'æªæ¡é¡åå·²ç± .%s è®æ´çº .%s å!';
-
-$lang['reference'] = 'å¼ç¨å°æ¬é çï¼åè¨æ';
-$lang['ref_inuse'] = 'éæªéä¸è½åªé¤ï¼å çºéæä»¥ä¸çé é¢å¨ä½¿ç¨å®ï¼';
-$lang['ref_hidden'] = 'æäºå¼ç¨å°éåçé é¢ï¼æ¨ç®åéæ²ææ¬éå¯è®ååã';
-
-$lang['hits'] = 'å符å';
-$lang['quickhits'] = '符åçé é¢å稱';
-$lang['toc'] = 'æ¬é ç®é';
-$lang['current'] = 'ç®åçæ¬';
-$lang['yours'] = 'æ¨ççæ¬';
-$lang['diff'] = '顯示è·ç®åçæ¬çå·®ç°';
-$lang['line'] = 'è¡';
-$lang['breadcrumb'] = 'ç®åç足跡';
-$lang['youarehere'] = '(ç®åæå¨ä½ç½®)';
-$lang['lastmod'] = 'ä¸ä¸æ¬¡è®æ´';
-$lang['by'] = 'ä¾èª';
-$lang['deleted'] = 'ç§»é¤';
-$lang['created'] = '建ç«';
-$lang['restored'] = 'å·²æ¢å¾©çºèç';
-$lang['summary'] = '編輯æè¦';
-
-$lang['mail_newpage'] = 'å¢å çé é¢:';
-$lang['mail_changed'] = 'è®æ´çé é¢:';
-
-$lang['nosmblinks'] = 'åªæå¨ Microsoft IE 䏿è½å·è¡ãé£çµå° Windows sharesãã\nä¸éæ¨ä»å¯æ·è²ãè¤è£½éé£çµ';
-
-$lang['qb_alert'] = 'è«è¼¸å
¥æ³è¦æ ¼å¼åçæåï¼\néæéå å°æä»¶ççµå°¾ã';
-$lang['qb_bold'] = 'ç²é«';
-$lang['qb_italic'] = 'æé«';
-$lang['qb_underl'] = 'åºç·';
-$lang['qb_code'] = 'ç¨å¼ç¢¼';
-$lang['qb_strike'] = 'åªé¤ç·';
-$lang['qb_h1'] = 'H1 æ¨é¡';
-$lang['qb_h2'] = 'H2 æ¨é¡';
-$lang['qb_h3'] = 'H3 æ¨é¡';
-$lang['qb_h4'] = 'H4 æ¨é¡';
-$lang['qb_h5'] = 'H5 æ¨é¡';
-$lang['qb_link'] = 'WIKIå
§é¨é£çµ';
-$lang['qb_extlink'] = 'é£çµå¤é¨URL';
-$lang['qb_hr'] = 'æ°´å¹³ç·';
-$lang['qb_ol'] = 'é
ç®è¡¨(æ¸å)';
-$lang['qb_ul'] = 'é
ç®è¡¨(符è)';
-$lang['qb_media'] = 'å å
¥åçææªæ¡';
-$lang['qb_sig'] = 'æå
¥ç°½å';
-$lang['qb_smileys'] = '表æ
符è';
-$lang['qb_chars'] = 'ç¹æ®åå
';
-
-$lang['del_confirm']= '確å®è¦åªé¤è©²ç®¡çè¦å?';
-$lang['admin_register']= 'æ°å¢ä½¿ç¨è
ä¸';
-
-$lang['metaedit'] = 'æ´æ¹ç¸çè³æ(EXIF)';
-$lang['metasaveerr'] = 'ç¸çè³æ(EXIF)å²å失æå';
-$lang['metasaveok'] = 'ç¸çè³æå·²æåå²å';
-$lang['img_backto'] = 'åä¸ä¸é ';
-$lang['img_title'] = 'æ¨é¡';
-$lang['img_caption'] = 'ç
§ç說æ';
-$lang['img_date'] = 'æ¥æ';
-$lang['img_fname'] = 'æªå';
-$lang['img_fsize'] = '大å°';
-$lang['img_artist'] = 'æå½±è
';
-$lang['img_copyr'] = 'çæ¬';
-$lang['img_format'] = 'æ ¼å¼';
-$lang['img_camera'] = 'ç¸æ©';
-$lang['img_keywords']= 'ééµå';
-
-$lang['subscribe_success'] = 'å·²å°ã%sãå å
¥ %s è¨é±æ¸
å®å
§';
-$lang['subscribe_error'] = 'è¦æã%sãå å
¥ %s è¨é±æ¸
宿ï¼ç¼çé¯èª¤';
-$lang['subscribe_noaddress']= 'æ¨ç帳èå
§ä¸¦ç¡ Email è³æï¼å æ¤éç¡æ³ä½¿ç¨è¨é±åè½å·ã';
-$lang['unsubscribe_success']= 'å·²å°ã%sãå¾ %s è¨é±æ¸
å®ä¸ç§»é¤';
-$lang['unsubscribe_error'] = 'è¦æã%sãå¾ %s è¨é±æ¸
å®ä¸ç§»é¤æï¼ç¼çé¯èª¤';
-
-$lang['txt_insert'] = 'æ¾å
¥æ¥æ';
-$lang['qb_calendar'] = 'æ¾å
¥ä¸åæ¥æ';
-$lang['btn_insert'] = 'ç¢çæ¥æ';
-$lang['txt_toinsert'] = 'éå°æè¢«æ¾å
¥';
-$lang['txt_clickhere'] = 'æéå°±æå¹«æ¨èªåæ¾å¥½äº';
-$lang['txt_year'] = '年份';
-$lang['txt_month'] = 'æä»½';
-$lang['arr_daysofweek']= array('æ¥','ä¸','äº','ä¸','å','äº','å
');
-
-/* auth.class language support */
-$lang['authmodfailed'] = '帳èèªèçè¨å®ä¸æ£ç¢ºï¼è«éç¥è©² Wiki 管çå¡ã';
-$lang['authtempfail'] = '帳èèªèç®åæ«ä¸æä¾ï¼è¥æ¬çæ³æçºç¼çç話ï¼è«éç¥è©² Wiki 管çå¡ã';
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Chinese(Traditional) language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author chinsan <chinsan at mail2000.com.tw>
+ */
+$lang['encoding'] = 'utf-8';
+$lang['direction'] = 'ltr';
+
+$lang['btn_edit'] = '編修æ¬é ';
+$lang['btn_source'] = '顯示é é¢ä¾æº';
+$lang['btn_show'] = '顯示é é¢';
+$lang['btn_create'] = 'å»ºç«æ¤é ';
+$lang['btn_search'] = 'æå°';
+$lang['btn_save'] = 'å²å';
+$lang['btn_preview']= 'é 覽';
+$lang['btn_top'] = 'åå°é é ';
+$lang['btn_newer'] = '<< è¼æ°';
+$lang['btn_older'] = 'è¼è >>';
+$lang['btn_revs'] = 'èç';
+$lang['btn_recent'] = 'æè¿æ´æ°';
+$lang['btn_upload'] = 'ä¸å³';
+$lang['btn_cancel'] = 'åæ¶';
+$lang['btn_index'] = 'ç´¢å¼é ';
+$lang['btn_secedit']= 'æ¹é段';
+$lang['btn_login'] = 'ç»å
¥';
+$lang['btn_logout'] = 'ç»åº';
+$lang['btn_admin'] = '管çé¸å®';
+$lang['btn_update'] = 'æ´æ°è¨å®';
+$lang['btn_delete'] = 'åªé¤';
+$lang['btn_back'] = 'åä¸ä¸æ¥';
+$lang['btn_backlink'] = "Backlinks";
+$lang['btn_backtomedia'] = 'éæ°é¸æåæª';
+$lang['btn_subscribe'] = 'è¨é±æ´åéç¥';
+$lang['btn_unsubscribe'] = 'éè¨æ´åéç¥';
+$lang['btn_profile'] = 'æ´æ°åäººè³æ';
+$lang['btn_reset'] = 'è³æéè¨';
+$lang['btn_resendpwd'] = '坿°å¯ç¢¼';
+$lang['btn_draft'] = '編輯è稿';
+$lang['btn_recover'] = '復åè稿';
+$lang['btn_draftdel'] = 'æ¨æ£è稿';
+
+$lang['loggedinas'] = 'ç»å
¥çº';
+$lang['user'] = '帳è';
+$lang['pass'] = 'å¯ç¢¼';
+$lang['newpass'] = 'æ°çå¯ç¢¼';
+$lang['oldpass'] = 'ç®åçå¯ç¢¼';
+$lang['passchk'] = '忬¡ææ°çå¯ç¢¼';
+$lang['remember'] = 'è¨ä½å¸³èå¯ç¢¼';
+$lang['fullname'] = 'æ±ç¨±';
+$lang['email'] = 'E-Mail';
+$lang['register'] = '註å';
+$lang['profile'] = '使ç¨è
åäººè³æ';
+$lang['badlogin'] = '徿±æï¼æ¨ç使ç¨è
å稱æå¯ç¢¼å¯è½æé¯èª¤';
+$lang['minoredit'] = 'æ¬¡è¦æ§çä¿®æ¹';
+$lang['draftdate'] = 'è稿èªååæªæ¼'; // full dformat date will be added
+
+$lang['regmissing'] = '徿±æï¼ææçæ¬ä½é½è¦å¡«å¦';
+$lang['reguexists'] = '徿±æï¼å·²æäººè¨»å該帳èäºå';
+$lang['regsuccess'] = '使ç¨è
已建ç«ï¼å¯ç¢¼å·²ç¶ç¨ email å¯å°æ¨ä¿¡ç®±äºå·ã';
+$lang['regsuccess2']= '使ç¨è
已建ç«';
+$lang['regmailfail']= 'å¯åºå¯ç¢¼ä¿¡ä¼¼ä¹ç¼çé¯èª¤ï¼è«è·ç®¡çè
è¯çµ¡ï¼';
+$lang['regbadmail'] = 'æ¨è¼¸å
¥ç email ä¼¼ä¹ä¸å°ï¼å¦ææ¨èªçºæ¯æ£ç¢ºçï¼è«è管çè
è¯çµ¡ã';
+$lang['regbadpass'] = 'å
©æ¬¡æçå¯ç¢¼ä¸ä¸è´ï¼è«åé試ï¼è¬è¬ã';
+$lang['regpwmail'] = 'æ¨ç DokuWiki 帳èå¯ç¢¼';
+$lang['reghere'] = 'æ¨éæ²æå¸³èå°å§ï¼ä¾è¨»åä¸åå§ã';
+
+$lang['profna'] = 'æ¬ wiki ä¸éæ¾ä¿®æ¹åäººè³æ';
+$lang['profnochange'] = 'æªåä»»ä½è®æ´';
+$lang['profnoempty'] = 'å¸³èæ email å°åä¸å¯ä»¥æ²æå¯«åï¼';
+$lang['profchanged'] = 'åäººè³æå·²æåæ´æ°åã';
+
+$lang['pwdforget'] = 'å¿è¨å¯ç¢¼åï¼å¯æ°å¯ç¢¼ï¼';
+$lang['resendna'] = 'æ¬ wiki ä¸éæ¾é坿°å¯ç¢¼';
+$lang['resendpwd'] = '坿°å¯ç¢¼çµ¦';
+$lang['resendpwdmissing'] = '徿±æï¼æ¨å¿
é å
¨å¡«éäºè³ææå¯ä»¥';
+$lang['resendpwdnouser'] = '徿±æï¼è³æåº«å
§æ¥ç¡æ¤äºº';
+$lang['resendpwdsuccess'] = 'æ°å¯ç¢¼å½å·²ç¶ä»¥ email å¯åºäºã';
+
+$lang['txt_upload'] = 'è«é¸æè¦ä¸å³çæªæ¡';
+$lang['txt_filename'] = 'è«è¼¸å
¥è¦åå¨ wiki å
§çæªå (optional)';
+$lang['txt_overwrt'] = 'æ¯å¦è¦è¦èåææªæ¡';
+$lang['lockedby'] = 'ç®å已被ä¸å人å¡éå®';
+$lang['lockexpire'] = 'é è¨è§£é¤é宿¼';
+$lang['willexpire'] = 'æ¨ç®å編輯éé çéå®å°æå¨ä¸åéå
§è§£é¤ã\è¥è¦é¿å
ç¼çæå¤ï¼è«æãé 覽ãéµä¾éæ°è¨å®éå®çæ
';
+
+$lang['notsavedyet'] = 'æå°æªå²åçè®æ´å°æéºå¤±ã\nççè¦ç¹¼çºåï¼';
+$lang['rssfailed'] = 'ç¶æå餵ééä¾ç RSS è³ææç¼çé¯èª¤: ';
+$lang['nothingfound']= 'æ²æ¾å°ä»»ä½çµæã';
+
+$lang['mediaselect'] = 'é¸æåæª';
+$lang['fileupload'] = 'ä¸å³åæª';
+$lang['uploadsucc'] = 'ä¸å³æå';
+$lang['uploadfail'] = 'ä¸å³å¤±æãæè¨±æ¬éè¨å®é¯èª¤äºåï¼';
+$lang['uploadwrong'] = 'æçµä¸å³ãè©²æªæ¡é¡åä¸è¢«æ¯æ´ã';
+$lang['uploadexist'] = 'è©²æªæ¡å·²æåå¨äºåï¼æ
åæ¶ä¸å³åä½ã';
+$lang['deletesucc'] = '"%s" æªå·²åªé¤å®ç¢ã';
+$lang['deletefail'] = '"%s" æªç¡æ³åªé¤ï¼è«å
æª¢æ¥æ¬éè¨å®ã';
+$lang['mediainuse'] = '"%s" æªå éå¨ä½¿ç¨ä¸ï¼æ
ç®åå°ç¡æ³åªé¤ã';
+$lang['namespaces'] = 'Namespaces';
+$lang['mediafiles'] = 'å¯ç¨çæªæ¡æ';
+
+$lang['js']['keepopen'] = 'Keep window open on selection';
+$lang['js']['hidedetails'] = 'Hide Details';
+$lang['mediausage'] = 'Use the following syntax to reference this file:';
+$lang['mediaview'] = '檢è¦åå§æªæ¡';
+$lang['mediaroot'] = 'root';
+$lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons.';
+$lang['mediaextchange'] = 'æªæ¡é¡åå·²ç± .%s è®æ´çº .%s å!';
+
+$lang['reference'] = 'å¼ç¨å°æ¬é çï¼åè¨æ';
+$lang['ref_inuse'] = 'éæªéä¸è½åªé¤ï¼å çºéæä»¥ä¸çé é¢å¨ä½¿ç¨å®ï¼';
+$lang['ref_hidden'] = 'æäºå¼ç¨å°éåçé é¢ï¼æ¨ç®åéæ²ææ¬éå¯è®ååã';
+
+$lang['hits'] = 'å符å';
+$lang['quickhits'] = '符åçé é¢å稱';
+$lang['toc'] = 'æ¬é ç®é';
+$lang['current'] = 'ç®åçæ¬';
+$lang['yours'] = 'æ¨ççæ¬';
+$lang['diff'] = '顯示è·ç®åçæ¬çå·®ç°';
+$lang['line'] = 'è¡';
+$lang['breadcrumb'] = 'ç®åç足跡';
+$lang['youarehere'] = '(ç®åæå¨ä½ç½®)';
+$lang['lastmod'] = 'ä¸ä¸æ¬¡è®æ´';
+$lang['by'] = 'ä¾èª';
+$lang['deleted'] = 'ç§»é¤';
+$lang['created'] = '建ç«';
+$lang['restored'] = 'å·²æ¢å¾©çºèç';
+$lang['summary'] = '編輯æè¦';
+
+$lang['mail_newpage'] = 'å¢å çé é¢:';
+$lang['mail_changed'] = 'è®æ´çé é¢:';
+
+$lang['nosmblinks'] = 'åªæå¨ Microsoft IE 䏿è½å·è¡ãé£çµå° Windows sharesãã\nä¸éæ¨ä»å¯æ·è²ãè¤è£½éé£çµ';
+
+$lang['qb_alert'] = 'è«è¼¸å
¥æ³è¦æ ¼å¼åçæåï¼\néæéå å°æä»¶ççµå°¾ã';
+$lang['qb_bold'] = 'ç²é«';
+$lang['qb_italic'] = 'æé«';
+$lang['qb_underl'] = 'åºç·';
+$lang['qb_code'] = 'ç¨å¼ç¢¼';
+$lang['qb_strike'] = 'åªé¤ç·';
+$lang['qb_h1'] = 'H1 æ¨é¡';
+$lang['qb_h2'] = 'H2 æ¨é¡';
+$lang['qb_h3'] = 'H3 æ¨é¡';
+$lang['qb_h4'] = 'H4 æ¨é¡';
+$lang['qb_h5'] = 'H5 æ¨é¡';
+$lang['qb_link'] = 'WIKIå
§é¨é£çµ';
+$lang['qb_extlink'] = 'é£çµå¤é¨URL';
+$lang['qb_hr'] = 'æ°´å¹³ç·';
+$lang['qb_ol'] = 'é
ç®è¡¨(æ¸å)';
+$lang['qb_ul'] = 'é
ç®è¡¨(符è)';
+$lang['qb_media'] = 'å å
¥åçææªæ¡';
+$lang['qb_sig'] = 'æå
¥ç°½å';
+$lang['qb_smileys'] = '表æ
符è';
+$lang['qb_chars'] = 'ç¹æ®åå
';
+
+$lang['del_confirm']= '確å®è¦åªé¤è©²ç®¡çè¦å?';
+$lang['admin_register']= 'æ°å¢ä½¿ç¨è
ä¸';
+
+$lang['metaedit'] = 'æ´æ¹ç¸çè³æ(EXIF)';
+$lang['metasaveerr'] = 'ç¸çè³æ(EXIF)å²å失æå';
+$lang['metasaveok'] = 'ç¸çè³æå·²æåå²å';
+$lang['img_backto'] = 'åä¸ä¸é ';
+$lang['img_title'] = 'æ¨é¡';
+$lang['img_caption'] = 'ç
§ç說æ';
+$lang['img_date'] = 'æ¥æ';
+$lang['img_fname'] = 'æªå';
+$lang['img_fsize'] = '大å°';
+$lang['img_artist'] = 'æå½±è
';
+$lang['img_copyr'] = 'çæ¬';
+$lang['img_format'] = 'æ ¼å¼';
+$lang['img_camera'] = 'ç¸æ©';
+$lang['img_keywords']= 'ééµå';
+
+$lang['subscribe_success'] = 'å·²å°ã%sãå å
¥ %s è¨é±æ¸
å®å
§';
+$lang['subscribe_error'] = 'è¦æã%sãå å
¥ %s è¨é±æ¸
宿ï¼ç¼çé¯èª¤';
+$lang['subscribe_noaddress']= 'æ¨ç帳èå
§ä¸¦ç¡ Email è³æï¼å æ¤éç¡æ³ä½¿ç¨è¨é±åè½å·ã';
+$lang['unsubscribe_success']= 'å·²å°ã%sãå¾ %s è¨é±æ¸
å®ä¸ç§»é¤';
+$lang['unsubscribe_error'] = 'è¦æã%sãå¾ %s è¨é±æ¸
å®ä¸ç§»é¤æï¼ç¼çé¯èª¤';
+
+$lang['txt_insert'] = 'æ¾å
¥æ¥æ';
+$lang['qb_calendar'] = 'æ¾å
¥ä¸åæ¥æ';
+$lang['btn_insert'] = 'ç¢çæ¥æ';
+$lang['txt_toinsert'] = 'éå°æè¢«æ¾å
¥';
+$lang['txt_clickhere'] = 'æéå°±æå¹«æ¨èªåæ¾å¥½äº';
+$lang['txt_year'] = '年份';
+$lang['txt_month'] = 'æä»½';
+$lang['arr_daysofweek']= array('æ¥','ä¸','äº','ä¸','å','äº','å
');
+
+/* auth.class language support */
+$lang['authmodfailed'] = '帳èèªèçè¨å®ä¸æ£ç¢ºï¼è«éç¥è©² Wiki 管çå¡ã';
+$lang['authtempfail'] = '帳èèªèç®åæ«ä¸æä¾ï¼è¥æ¬çæ³æçºç¼çç話ï¼è«éç¥è©² Wiki 管çå¡ã';
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/locked.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/login.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/login.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/login.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== ç»å
¥ ======
-
-æ¨å°æªç»å
¥ï¼è«è¼¸å
¥æ¨ç使ç¨è
å稱è·å¯ç¢¼ã
-å¦å¤ï¼ç覽å¨éè¦æé cookies è¨å®ä»¥é²è¡ç»å
¥ã
-
-
+====== ç»å
¥ ======
+
+æ¨å°æªç»å
¥ï¼è«è¼¸å
¥æ¨ç使ç¨è
å稱è·å¯ç¢¼ã
+å¦å¤ï¼ç覽å¨éè¦æé cookies è¨å®ä»¥é²è¡ç»å
¥ã
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/mailtext.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/mailtext.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/mailtext.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-卿¨ç DokuWiki ææ°å¢ãè®åéä¸é äºã以䏿¯ç´°ç¯è³æï¼
-
-æ¥æ : @DATE@
-çè¦½å¨ : @BROWSER@
-IP-Address : @IPADDRESS@
-æ©å¨å稱 : @HOSTNAME@
-èçæ¬¡ : @OLDPAGE@
-æ°ç次 : @NEWPAGE@
-編輯æè¦ : @SUMMARY@
-User : @USER@
-
- at DIFF@
-
-
---
-éå°ä¿¡æ¯ç± @DOKUWIKIURL@ ç DokuWiki èªåç¢ç
+卿¨ç DokuWiki ææ°å¢ãè®åéä¸é äºã以䏿¯ç´°ç¯è³æï¼
+
+æ¥æ : @DATE@
+çè¦½å¨ : @BROWSER@
+IP-Address : @IPADDRESS@
+æ©å¨å稱 : @HOSTNAME@
+èçæ¬¡ : @OLDPAGE@
+æ°ç次 : @NEWPAGE@
+編輯æè¦ : @SUMMARY@
+User : @USER@
+
+ at DIFF@
+
+
+--
+éå°ä¿¡æ¯ç± @DOKUWIKIURL@ ç DokuWiki èªåç¢ç
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/newpage.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/newpage.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/newpage.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,3 +1,3 @@
-====== ç®åå°æªæè©²ä¸»é¡å ======
-
+====== ç®åå°æªæè©²ä¸»é¡å ======
+
æ¨ç®åå°çé主é¡å°æªå»ºç«é é¢ãä½ä¹å¯ä»¥ç¨ ã''å»ºç«æ¤é ''ãä¾å»ºç«ã
\ No newline at end of file
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/norev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/norev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/norev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======徿±æï¼ä¸¦ç¡è©²ç次ç======
-
-è©²çæ¬¡çæä»¶ä¸¦ä¸åå¨ãè«ç¨ ã''èç''ã éµä¾æª¢è¦ç®å該æä»¶çææèçæ¬¡ã
-
+======徿±æï¼ä¸¦ç¡è©²ç次ç======
+
+è©²çæ¬¡çæä»¶ä¸¦ä¸åå¨ãè«ç¨ ã''èç''ã éµä¾æª¢è¦ç®å該æä»¶çææèçæ¬¡ã
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/password.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/password.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/password.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-
-(NOTE: This mail is an UTF-8 encoding email)
-
-å¨ï¼@LOGIN@(@FULLNAME@) æ¨å¥½!
-
-éè£¡æ¯æ¨å¨ @TITLE@(@DOKUWIKIURL@) ç使ç¨è
è³æ
-
-使ç¨è
å稱: @LOGIN@
-ãããå¯ç¢¼: @PASSWORD@
-
---
-éå°ä¿¡æ¯ç± @DOKUWIKIURL@ ç DokuWiki èªåç¢çã
+
+(NOTE: This mail is an UTF-8 encoding email)
+
+å¨ï¼@LOGIN@(@FULLNAME@) æ¨å¥½!
+
+éè£¡æ¯æ¨å¨ @TITLE@(@DOKUWIKIURL@) ç使ç¨è
è³æ
+
+使ç¨è
å稱: @LOGIN@
+ãããå¯ç¢¼: @PASSWORD@
+
+--
+éå°ä¿¡æ¯ç± @DOKUWIKIURL@ ç DokuWiki èªåç¢çã
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/preview.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/preview.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/preview.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-======é 覽======
-
-以䏿¯é 覽該æä»¶ççæ
ãè«è¨ä½ï¼**å®éæ²è¢«å²åå**!
-
+======é 覽======
+
+以䏿¯é 覽該æä»¶ççæ
ãè«è¨ä½ï¼**å®éæ²è¢«å²åå**!
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/read.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/recent.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/recent.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/recent.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-======æè¿æ´æ°======
-
-以ä¸çé 颿¯æè¿ææ´æ°çï¼
-
-
+======æè¿æ´æ°======
+
+以ä¸çé 颿¯æè¿ææ´æ°çï¼
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/register.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/register.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/register.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,6 +1,6 @@
-====== è¨»åæ°ä½¿ç¨è
======
-
-è«å¡«ä»¥ä¸æ¬ä½çè³æä¾è¨»å wiki 帳èï¼\\
-éæè«ç¢ºå®æ¨ææä¾ä¸å **åæ³ç e-mail å°å** - ä¹å°±æ¯æ¨çæ°å¯ç¢¼æè¢«å¯å°é£ã\\
-èç»éç使ç¨è
å稱æè©²æ¯åæ³çã [[doku>wiki:pagename|pagename]].
-
+====== è¨»åæ°ä½¿ç¨è
======
+
+è«å¡«ä»¥ä¸æ¬ä½çè³æä¾è¨»å wiki 帳èï¼\\
+éæè«ç¢ºå®æ¨ææä¾ä¸å **åæ³ç e-mail å°å** - ä¹å°±æ¯æ¨çæ°å¯ç¢¼æè¢«å¯å°é£ã\\
+èç»éç使ç¨è
å稱æè©²æ¯åæ³çã [[doku>wiki:pagename|pagename]].
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/resendpwd.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/resendpwd.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/resendpwd.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,4 +1,4 @@
-====== å¯éæ°å¯ç¢¼ ======
-
-è«å¨ä¸é¢çæ¬ä½å¡«ä¸è³æï¼ä»¥ä¾¿éæ°å¯ç¼æ°ç wiki å¯ç¢¼å°æ¨è¨»åææå¡«ç email å°åã
-帳è(user name)å°±æ¯ä½ ç wiki 帳èã
+====== å¯éæ°å¯ç¢¼ ======
+
+è«å¨ä¸é¢çæ¬ä½å¡«ä¸è³æï¼ä»¥ä¾¿éæ°å¯ç¼æ°ç wiki å¯ç¢¼å°æ¨è¨»åææå¡«ç email å°åã
+帳è(user name)å°±æ¯ä½ ç wiki 帳èã
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/revisions.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/searchpage.txt
===================================================================
(Binary files differ)
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/showrev.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/showrev.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/showrev.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,2 +1,2 @@
-**éæ¯æ¬æä»¶çèçäºåï¼**
-----
+**éæ¯æ¬æä»¶çèçäºåï¼**
+----
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/stopwords.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/stopwords.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/stopwords.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,31 +1,31 @@
-# éæªæ¯è£½ä½ç´¢å¼æª(index)æä¸è¦åå
¥çééµåï¼æ ¼å¼çºæ¯å(è©)就使ç¨ä¸è¡ã
-# å¨ä¿®æ¹æï¼è«æ³¨æè¦ç¨ UNIX æ ¼å¼çæè¡ç¬¦è(newline)èçï¼èé DOS ç CR-LR å
-# (å¦æå¨ MS Windows ç°å¢ä½¿ç¨ç話ï¼å¯ä½¿ç¨ vim win32ç æ UltraEditæå
¶ä»é¡ä¼¼ç·¨è¼¯å¨ä¿®æ¹)
-#
-# éæï¼ä¸å¿
æå°æ¼ 3 ååå
(è±æ¸åå
)é½å
æ¬é²ä¾ã
-# ç®åæ¬æ¸
å®çå
§å®¹æ¯ä»¥ http://www.ranks.nl/stopwords/ çºåºç¤èç¼å±çã
-about
-are
-and
-you
-your
-them
-their
-com
-for
-from
-into
-how
-that
-the
-this
-was
-what
-when
-where
-who
-will
-with
-und
-the
-www
+# éæªæ¯è£½ä½ç´¢å¼æª(index)æä¸è¦åå
¥çééµåï¼æ ¼å¼çºæ¯å(è©)就使ç¨ä¸è¡ã
+# å¨ä¿®æ¹æï¼è«æ³¨æè¦ç¨ UNIX æ ¼å¼çæè¡ç¬¦è(newline)èçï¼èé DOS ç CR-LR å
+# (å¦æå¨ MS Windows ç°å¢ä½¿ç¨ç話ï¼å¯ä½¿ç¨ vim win32ç æ UltraEditæå
¶ä»é¡ä¼¼ç·¨è¼¯å¨ä¿®æ¹)
+#
+# éæï¼ä¸å¿
æå°æ¼ 3 ååå
(è±æ¸åå
)é½å
æ¬é²ä¾ã
+# ç®åæ¬æ¸
å®çå
§å®¹æ¯ä»¥ http://www.ranks.nl/stopwords/ çºåºç¤èç¼å±çã
+about
+are
+and
+you
+your
+them
+their
+com
+for
+from
+into
+how
+that
+the
+this
+was
+what
+when
+where
+who
+will
+with
+und
+the
+www
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/subscribermail.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/subscribermail.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/subscribermail.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,35 +1,35 @@
-ååï¼æ¨å¥½!
-
-å¨ @TITLE@ ç @PAGE@ é é¢å·²ç¶æäºè®æ´åï¼ä»¥ä¸æ¯è®åå¹
度ç´é:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-è¥è¦åæ¶æ¬é çè®åè¨é±éç¥ï¼è«å
ç»å
¥
- at DOKUWIKIURL@ ï¼ç¶å¾é²å
¥
- at NEWPAGE@
-䏦鏿 ãéè¨æ´åéç¥ãï¼è¬è¬ ^_^
-
---
-æ¬ä¿¡æ¯ç± DokuWiki 系統èªåç¢ç
- at DOKUWIKIURL@
-
-==[English]================================
-Hello!
-
-The page @PAGE@ in the @TITLE@ wiki changed.
-Here are the changes:
-
---------------------------------------------------------
- at DIFF@
---------------------------------------------------------
-
-To unsubscribe from this page log into the wiki at
- at DOKUWIKIURL@ then visit
- at NEWPAGE@
-and choose 'Unsubscribe Changes'.
-
---
-This mail was generated by DokuWiki at
- at DOKUWIKIURL@
+ååï¼æ¨å¥½!
+
+å¨ @TITLE@ ç @PAGE@ é é¢å·²ç¶æäºè®æ´åï¼ä»¥ä¸æ¯è®åå¹
度ç´é:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+è¥è¦åæ¶æ¬é çè®åè¨é±éç¥ï¼è«å
ç»å
¥
+ at DOKUWIKIURL@ ï¼ç¶å¾é²å
¥
+ at NEWPAGE@
+䏦鏿 ãéè¨æ´åéç¥ãï¼è¬è¬ ^_^
+
+--
+æ¬ä¿¡æ¯ç± DokuWiki 系統èªåç¢ç
+ at DOKUWIKIURL@
+
+==[English]================================
+Hello!
+
+The page @PAGE@ in the @TITLE@ wiki changed.
+Here are the changes:
+
+--------------------------------------------------------
+ at DIFF@
+--------------------------------------------------------
+
+To unsubscribe from this page log into the wiki at
+ at DOKUWIKIURL@ then visit
+ at NEWPAGE@
+and choose 'Unsubscribe Changes'.
+
+--
+This mail was generated by DokuWiki at
+ at DOKUWIKIURL@
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/updateprofile.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/updateprofile.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/updateprofile.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== æ´æ°åäººè³æ ======
-
-è«æ³¨æï¼åªéè®æ´æ³æ´æ°çè³ææ¬ä½å°±å¥½ï¼è帳èå稱æ¯ä¸å¯ä»¥è®æ´çã
-
-
+====== æ´æ°åäººè³æ ======
+
+è«æ³¨æï¼åªéè®æ´æ³æ´æ°çè³ææ¬ä½å°±å¥½ï¼è帳èå稱æ¯ä¸å¯ä»¥è®æ´çã
+
+
Modified: site/trunk/www-root/wiki/inc/lang/zh-tw/wordblock.txt
===================================================================
--- site/trunk/www-root/wiki/inc/lang/zh-tw/wordblock.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/lang/zh-tw/wordblock.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,5 +1,5 @@
-====== æçµåå¾è³æ(SPAM blocked) ======
-
-æ¨çè®æ´ä¸¦**䏿**被åèµ·ä¾ï¼å çºå®å
å«äºä¸äºè¢«éå¶çåç¼ãè¥æ¨é試èè¦ä¸åå¾è³æå° Wiki ç話ï¼
--- Bad dog! ä¸éï¼è¥æ¨èªçºéæ¯èª¤å¤ï¼é£éº¼è«èéå Wiki ç管çå¡(Admin)è«ã
-
+====== æçµåå¾è³æ(SPAM blocked) ======
+
+æ¨çè®æ´ä¸¦**䏿**被åèµ·ä¾ï¼å çºå®å
å«äºä¸äºè¢«éå¶çåç¼ãè¥æ¨é試èè¦ä¸åå¾è³æå° Wiki ç話ï¼
+-- Bad dog! ä¸éï¼è¥æ¨èªçºéæ¯èª¤å¤ï¼é£éº¼è«èéå Wiki ç管çå¡(Admin)è«ã
+
Modified: site/trunk/www-root/wiki/inc/mail.php
===================================================================
--- site/trunk/www-root/wiki/inc/mail.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/mail.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,257 +1,257 @@
-<?php
-/**
- * Mail functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_INC.'inc/utf8.php');
-
- // end of line for mail lines - RFC822 says CRLF but postfix (and other MTAs?)
- // think different
- if(!defined('MAILHEADER_EOL')) define('MAILHEADER_EOL',"\n");
- #define('MAILHEADER_ASCIIONLY',1);
-
-/**
- * UTF-8 autoencoding replacement for PHPs mail function
- *
- * Email address fields (To, From, Cc, Bcc can contain a textpart and an address
- * like this: 'Andreas Gohr <andi at splitbrain.org>' - the text part is encoded
- * automatically. You can seperate receivers by commas.
- *
- * @param string $to Receiver of the mail (multiple seperated by commas)
- * @param string $subject Mailsubject
- * @param string $body Messagebody
- * @param string $from Sender address
- * @param string $cc CarbonCopy receiver (multiple seperated by commas)
- * @param string $bcc BlindCarbonCopy receiver (multiple seperated by commas)
- * @param string $headers Additional Headers (seperated by MAILHEADER_EOL
- * @param string $params Additonal Sendmail params (passed to mail())
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see mail()
- */
-function mail_send($to, $subject, $body, $from='', $cc='', $bcc='', $headers=null, $params=null){
-
- $message = compact('to','subject','body','from','cc','bcc','headers','params');
- return trigger_event('MAIL_MESSAGE_SEND',$message,'_mail_send_action');
-}
-
-function _mail_send_action($data) {
-
- // retrieve parameters from event data, $to, $subject, $body, $from, $cc, $bcc, $headers, $params
- $to = $data['to'];
- $subject = $data['subject'];
- $body = $data['body'];
-
- // add robustness in case plugin removes any of these optional values
- $from = isset($data['from']) ? $data['from'] : '';
- $cc = isset($data['cc']) ? $data['cc'] : '';
- $bcc = isset($data['bcc']) ? $data['bcc'] : '';
- $headers = isset($data['headers']) ? $data['headers'] : null;
- $params = isset($data['params']) ? $data['params'] : null;
-
- // end additional code to support event ... original mail_send() code from here
-
- if(defined('MAILHEADER_ASCIIONLY')){
- $subject = utf8_deaccent($subject);
- $subject = utf8_strip($subject);
- }
-
- if(!utf8_isASCII($subject)) {
- $subject = '=?UTF-8?Q?'.mail_quotedprintable_encode($subject,0).'?=';
- // Spaces must be encoded according to rfc2047. Use the "_" shorthand
- $subject = preg_replace('/ /', '_', $subject);
- }
-
- $header = '';
-
- // No named recipients for To: in Windows (see FS#652)
- $usenames = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? false : true;
-
- $to = mail_encode_address($to,'',$usenames);
- $header .= mail_encode_address($from,'From');
- $header .= mail_encode_address($cc,'Cc');
- $header .= mail_encode_address($bcc,'Bcc');
- $header .= 'MIME-Version: 1.0'.MAILHEADER_EOL;
- $header .= 'Content-Type: text/plain; charset=UTF-8'.MAILHEADER_EOL;
- $header .= 'Content-Transfer-Encoding: quoted-printable'.MAILHEADER_EOL;
- $header .= $headers;
- $header = trim($header);
-
- $body = mail_quotedprintable_encode($body);
-
- if($params == null){
- return @mail($to,$subject,$body,$header);
- }else{
- return @mail($to,$subject,$body,$header,$params);
- }
-}
-
-/**
- * Encodes an email address header
- *
- * Unicode characters will be deaccented and encoded
- * quoted_printable for headers.
- * Addresses may not contain Non-ASCII data!
- *
- * Example:
- * mail_encode_address("föö <foo at bar.com>, me at somewhere.com","TBcc");
- *
- * @param string $string Multiple adresses separated by commas
- * @param string $header Name of the header (To,Bcc,Cc,...)
- * @param boolean $names Allow named Recipients?
- */
-function mail_encode_address($string,$header='',$names=true){
- $headers = '';
- $parts = split(',',$string);
- foreach ($parts as $part){
- $part = trim($part);
-
- // parse address
- if(preg_match('#(.*?)<(.*?)>#',$part,$matches)){
- $text = trim($matches[1]);
- $addr = $matches[2];
- }else{
- $addr = $part;
- }
-
- // skip empty ones
- if(empty($addr)){
- continue;
- }
-
- // FIXME: is there a way to encode the localpart of a emailaddress?
- if(!utf8_isASCII($addr)){
- msg(htmlspecialchars("E-Mail address <$addr> is not ASCII"),-1);
- continue;
- }
-
- if(!mail_isvalid($addr)){
- msg(htmlspecialchars("E-Mail address <$addr> is not valid"),-1);
- continue;
- }
-
- // text was given
- if(!empty($text) && $names){
- // add address quotes
- $addr = "<$addr>";
-
- if(defined('MAILHEADER_ASCIIONLY')){
- $text = utf8_deaccent($text);
- $text = utf8_strip($text);
- }
-
- if(!utf8_isASCII($text)){
- $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text,0).'?=';
- }
- }else{
- $text = '';
- }
-
- // add to header comma seperated and in new line to avoid too long headers
- if($headers != '') $headers .= ','.MAILHEADER_EOL.' ';
- $headers .= $text.' '.$addr;
- }
-
- if(empty($headers)) return null;
-
- //if headername was given add it and close correctly
- if($header) $headers = $header.': '.$headers.MAILHEADER_EOL;
-
- return $headers;
-}
-
-/**
- * Uses a regular expresion to check if a given mail address is valid
- *
- * May not be completly RFC conform!
- * @link http://www.faqs.org/rfcs/rfc2822.html (paras 3.4.1 & 3.2.4)
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- *
- * @param string $email the address to check
- * @return bool true if address is valid
- */
-
-// patterns for use in email detection and validation
-// NOTE: there is an unquoted '/' in RFC2822_ATEXT, it must remain unquoted to be used in the parser
-// the pattern uses non-capturing groups as captured groups aren't allowed in the parser
-// select pattern delimiters with care!
-if (!defined('RFC2822_ATEXT')) define('RFC2822_ATEXT',"0-9a-z!#$%&'*+/=?^_`{|}~-");
-if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?:[0-9a-z][0-9a-z-]*\.)+(?:[a-z]{2,4}|museum|travel)');
-
-function mail_isvalid($email){
- return preg_match('<^'.PREG_PATTERN_VALID_EMAIL.'$>i', $email);
-}
-
-/**
- * Quoted printable encoding
- *
- * @author umu <umuAThrz.tu-chemnitz.de>
- * @link http://www.php.net/manual/en/function.imap-8bit.php#61216
- */
-function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true) {
- // split text into lines
- $aLines= preg_split("/(?:\r\n|\r|\n)/", $sText);
-
- for ($i=0;$i<count($aLines);$i++) {
- $sLine =& $aLines[$i];
- if (strlen($sLine)===0) continue; // do nothing, if empty
-
- $sRegExp = '/[^\x09\x20\x21-\x3C\x3E-\x7E]/e';
-
- // imap_8bit encodes x09 everywhere, not only at lineends,
- // for EBCDIC safeness encode !"#$@[\]^`{|}~,
- // for complete safeness encode every character :)
- if ($bEmulate_imap_8bit)
- $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/e';
-
- $sReplmt = 'sprintf( "=%02X", ord ( "$0" ) ) ;';
- $sLine = preg_replace( $sRegExp, $sReplmt, $sLine );
-
- // encode x09,x20 at lineends
- {
- $iLength = strlen($sLine);
- $iLastChar = ord($sLine{$iLength-1});
-
- // !!!!!!!!
- // imap_8_bit does not encode x20 at the very end of a text,
- // here is, where I don't agree with imap_8_bit,
- // please correct me, if I'm wrong,
- // or comment next line for RFC2045 conformance, if you like
- if (!($bEmulate_imap_8bit && ($i==count($aLines)-1)))
-
- if (($iLastChar==0x09)||($iLastChar==0x20)) {
- $sLine{$iLength-1}='=';
- $sLine .= ($iLastChar==0x09)?'09':'20';
- }
- } // imap_8bit encodes x20 before chr(13), too
- // although IMHO not requested by RFC2045, why not do it safer :)
- // and why not encode any x20 around chr(10) or chr(13)
- if ($bEmulate_imap_8bit) {
- $sLine=str_replace(' =0D','=20=0D',$sLine);
- //$sLine=str_replace(' =0A','=20=0A',$sLine);
- //$sLine=str_replace('=0D ','=0D=20',$sLine);
- //$sLine=str_replace('=0A ','=0A=20',$sLine);
- }
-
- // finally split into softlines no longer than $maxlen chars,
- // for even more safeness one could encode x09,x20
- // at the very first character of the line
- // and after soft linebreaks, as well,
- // but this wouldn't be caught by such an easy RegExp
- if($maxlen){
- preg_match_all( '/.{1,'.($maxlen - 2).'}([^=]{0,2})?/', $sLine, $aMatch );
- $sLine = implode( '=' . MAILHEADER_EOL, $aMatch[0] ); // add soft crlf's
- }
- }
-
- // join lines into text
- return implode(MAILHEADER_EOL,$aLines);
-}
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Mail functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_INC.'inc/utf8.php');
+
+ // end of line for mail lines - RFC822 says CRLF but postfix (and other MTAs?)
+ // think different
+ if(!defined('MAILHEADER_EOL')) define('MAILHEADER_EOL',"\n");
+ #define('MAILHEADER_ASCIIONLY',1);
+
+/**
+ * UTF-8 autoencoding replacement for PHPs mail function
+ *
+ * Email address fields (To, From, Cc, Bcc can contain a textpart and an address
+ * like this: 'Andreas Gohr <andi at splitbrain.org>' - the text part is encoded
+ * automatically. You can seperate receivers by commas.
+ *
+ * @param string $to Receiver of the mail (multiple seperated by commas)
+ * @param string $subject Mailsubject
+ * @param string $body Messagebody
+ * @param string $from Sender address
+ * @param string $cc CarbonCopy receiver (multiple seperated by commas)
+ * @param string $bcc BlindCarbonCopy receiver (multiple seperated by commas)
+ * @param string $headers Additional Headers (seperated by MAILHEADER_EOL
+ * @param string $params Additonal Sendmail params (passed to mail())
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see mail()
+ */
+function mail_send($to, $subject, $body, $from='', $cc='', $bcc='', $headers=null, $params=null){
+
+ $message = compact('to','subject','body','from','cc','bcc','headers','params');
+ return trigger_event('MAIL_MESSAGE_SEND',$message,'_mail_send_action');
+}
+
+function _mail_send_action($data) {
+
+ // retrieve parameters from event data, $to, $subject, $body, $from, $cc, $bcc, $headers, $params
+ $to = $data['to'];
+ $subject = $data['subject'];
+ $body = $data['body'];
+
+ // add robustness in case plugin removes any of these optional values
+ $from = isset($data['from']) ? $data['from'] : '';
+ $cc = isset($data['cc']) ? $data['cc'] : '';
+ $bcc = isset($data['bcc']) ? $data['bcc'] : '';
+ $headers = isset($data['headers']) ? $data['headers'] : null;
+ $params = isset($data['params']) ? $data['params'] : null;
+
+ // end additional code to support event ... original mail_send() code from here
+
+ if(defined('MAILHEADER_ASCIIONLY')){
+ $subject = utf8_deaccent($subject);
+ $subject = utf8_strip($subject);
+ }
+
+ if(!utf8_isASCII($subject)) {
+ $subject = '=?UTF-8?Q?'.mail_quotedprintable_encode($subject,0).'?=';
+ // Spaces must be encoded according to rfc2047. Use the "_" shorthand
+ $subject = preg_replace('/ /', '_', $subject);
+ }
+
+ $header = '';
+
+ // No named recipients for To: in Windows (see FS#652)
+ $usenames = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? false : true;
+
+ $to = mail_encode_address($to,'',$usenames);
+ $header .= mail_encode_address($from,'From');
+ $header .= mail_encode_address($cc,'Cc');
+ $header .= mail_encode_address($bcc,'Bcc');
+ $header .= 'MIME-Version: 1.0'.MAILHEADER_EOL;
+ $header .= 'Content-Type: text/plain; charset=UTF-8'.MAILHEADER_EOL;
+ $header .= 'Content-Transfer-Encoding: quoted-printable'.MAILHEADER_EOL;
+ $header .= $headers;
+ $header = trim($header);
+
+ $body = mail_quotedprintable_encode($body);
+
+ if($params == null){
+ return @mail($to,$subject,$body,$header);
+ }else{
+ return @mail($to,$subject,$body,$header,$params);
+ }
+}
+
+/**
+ * Encodes an email address header
+ *
+ * Unicode characters will be deaccented and encoded
+ * quoted_printable for headers.
+ * Addresses may not contain Non-ASCII data!
+ *
+ * Example:
+ * mail_encode_address("föö <foo at bar.com>, me at somewhere.com","TBcc");
+ *
+ * @param string $string Multiple adresses separated by commas
+ * @param string $header Name of the header (To,Bcc,Cc,...)
+ * @param boolean $names Allow named Recipients?
+ */
+function mail_encode_address($string,$header='',$names=true){
+ $headers = '';
+ $parts = split(',',$string);
+ foreach ($parts as $part){
+ $part = trim($part);
+
+ // parse address
+ if(preg_match('#(.*?)<(.*?)>#',$part,$matches)){
+ $text = trim($matches[1]);
+ $addr = $matches[2];
+ }else{
+ $addr = $part;
+ }
+
+ // skip empty ones
+ if(empty($addr)){
+ continue;
+ }
+
+ // FIXME: is there a way to encode the localpart of a emailaddress?
+ if(!utf8_isASCII($addr)){
+ msg(htmlspecialchars("E-Mail address <$addr> is not ASCII"),-1);
+ continue;
+ }
+
+ if(!mail_isvalid($addr)){
+ msg(htmlspecialchars("E-Mail address <$addr> is not valid"),-1);
+ continue;
+ }
+
+ // text was given
+ if(!empty($text) && $names){
+ // add address quotes
+ $addr = "<$addr>";
+
+ if(defined('MAILHEADER_ASCIIONLY')){
+ $text = utf8_deaccent($text);
+ $text = utf8_strip($text);
+ }
+
+ if(!utf8_isASCII($text)){
+ $text = '=?UTF-8?Q?'.mail_quotedprintable_encode($text,0).'?=';
+ }
+ }else{
+ $text = '';
+ }
+
+ // add to header comma seperated and in new line to avoid too long headers
+ if($headers != '') $headers .= ','.MAILHEADER_EOL.' ';
+ $headers .= $text.' '.$addr;
+ }
+
+ if(empty($headers)) return null;
+
+ //if headername was given add it and close correctly
+ if($header) $headers = $header.': '.$headers.MAILHEADER_EOL;
+
+ return $headers;
+}
+
+/**
+ * Uses a regular expresion to check if a given mail address is valid
+ *
+ * May not be completly RFC conform!
+ * @link http://www.faqs.org/rfcs/rfc2822.html (paras 3.4.1 & 3.2.4)
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ *
+ * @param string $email the address to check
+ * @return bool true if address is valid
+ */
+
+// patterns for use in email detection and validation
+// NOTE: there is an unquoted '/' in RFC2822_ATEXT, it must remain unquoted to be used in the parser
+// the pattern uses non-capturing groups as captured groups aren't allowed in the parser
+// select pattern delimiters with care!
+if (!defined('RFC2822_ATEXT')) define('RFC2822_ATEXT',"0-9a-zA-Z!#$%&'*+/=?^_`{|}~-");
+if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?i:[0-9a-z][0-9a-z-]*\.)+(?i:[a-z]{2,4}|museum|travel)');
+
+function mail_isvalid($email){
+ return preg_match('<^'.PREG_PATTERN_VALID_EMAIL.'$>i', $email);
+}
+
+/**
+ * Quoted printable encoding
+ *
+ * @author umu <umuAThrz.tu-chemnitz.de>
+ * @link http://www.php.net/manual/en/function.imap-8bit.php#61216
+ */
+function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true) {
+ // split text into lines
+ $aLines= preg_split("/(?:\r\n|\r|\n)/", $sText);
+
+ for ($i=0;$i<count($aLines);$i++) {
+ $sLine =& $aLines[$i];
+ if (strlen($sLine)===0) continue; // do nothing, if empty
+
+ $sRegExp = '/[^\x09\x20\x21-\x3C\x3E-\x7E]/e';
+
+ // imap_8bit encodes x09 everywhere, not only at lineends,
+ // for EBCDIC safeness encode !"#$@[\]^`{|}~,
+ // for complete safeness encode every character :)
+ if ($bEmulate_imap_8bit)
+ $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/e';
+
+ $sReplmt = 'sprintf( "=%02X", ord ( "$0" ) ) ;';
+ $sLine = preg_replace( $sRegExp, $sReplmt, $sLine );
+
+ // encode x09,x20 at lineends
+ {
+ $iLength = strlen($sLine);
+ $iLastChar = ord($sLine{$iLength-1});
+
+ // !!!!!!!!
+ // imap_8_bit does not encode x20 at the very end of a text,
+ // here is, where I don't agree with imap_8_bit,
+ // please correct me, if I'm wrong,
+ // or comment next line for RFC2045 conformance, if you like
+ if (!($bEmulate_imap_8bit && ($i==count($aLines)-1)))
+
+ if (($iLastChar==0x09)||($iLastChar==0x20)) {
+ $sLine{$iLength-1}='=';
+ $sLine .= ($iLastChar==0x09)?'09':'20';
+ }
+ } // imap_8bit encodes x20 before chr(13), too
+ // although IMHO not requested by RFC2045, why not do it safer :)
+ // and why not encode any x20 around chr(10) or chr(13)
+ if ($bEmulate_imap_8bit) {
+ $sLine=str_replace(' =0D','=20=0D',$sLine);
+ //$sLine=str_replace(' =0A','=20=0A',$sLine);
+ //$sLine=str_replace('=0D ','=0D=20',$sLine);
+ //$sLine=str_replace('=0A ','=0A=20',$sLine);
+ }
+
+ // finally split into softlines no longer than $maxlen chars,
+ // for even more safeness one could encode x09,x20
+ // at the very first character of the line
+ // and after soft linebreaks, as well,
+ // but this wouldn't be caught by such an easy RegExp
+ if($maxlen){
+ preg_match_all( '/.{1,'.($maxlen - 2).'}([^=]{0,2})?/', $sLine, $aMatch );
+ $sLine = implode( '=' . MAILHEADER_EOL, $aMatch[0] ); // add soft crlf's
+ }
+ }
+
+ // join lines into text
+ return implode(MAILHEADER_EOL,$aLines);
+}
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/media.php
===================================================================
--- site/trunk/www-root/wiki/inc/media.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/media.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,663 +1,663 @@
-<?php
-/**
- * All output and handler function needed for the media management popup
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-if(!defined('NL')) define('NL',"\n");
-
-require_once(DOKU_INC.'inc/html.php');
-require_once(DOKU_INC.'inc/search.php');
-require_once(DOKU_INC.'inc/JpegMeta.php');
-
-/**
- * Lists pages which currently use a media file selected for deletion
- *
- * References uses the same visual as search results and share
- * their CSS tags except pagenames won't be links.
- *
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
-function media_filesinuse($data,$id){
- global $lang;
- echo '<h1>'.$lang['reference'].' <code>'.hsc(noNS($id)).'</code></h1>';
- echo '<p>'.hsc($lang['ref_inuse']).'</p>';
-
- $hidden=0; //count of hits without read permission
- foreach($data as $row){
- if(auth_quickaclcheck($row) >= AUTH_READ && isVisiblePage($row)){
- echo '<div class="search_result">';
- echo '<span class="mediaref_ref">'.hsc($row).'</span>';
- echo '</div>';
- }else
- $hidden++;
- }
- if ($hidden){
- print '<div class="mediaref_hidden">'.$lang['ref_hidden'].'</div>';
- }
-}
-
-/**
- * Handles the saving of image meta data
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function media_metasave($id,$auth,$data){
- if($auth < AUTH_UPLOAD) return false;
- if(!checkSecurityToken()) return false;
- global $lang;
- global $conf;
- $src = mediaFN($id);
-
- $meta = new JpegMeta($src);
- $meta->_parseAll();
-
- foreach($data as $key => $val){
- $val=trim($val);
- if(empty($val)){
- $meta->deleteField($key);
- }else{
- $meta->setField($key,$val);
- }
- }
-
- if($meta->save()){
- if($conf['fperm']) chmod($src, $conf['fperm']);
- msg($lang['metasaveok'],1);
- return $id;
- }else{
- msg($lang['metasaveerr'],-1);
- return false;
- }
-}
-
-/**
- * Display the form to edit image meta data
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function media_metaform($id,$auth){
- if($auth < AUTH_UPLOAD) return false;
- global $lang;
-
- // load the field descriptions
- static $fields = null;
- if(is_null($fields)){
- include(DOKU_CONF.'mediameta.php');
- if(@file_exists(DOKU_CONF.'mediameta.local.php')){
- include(DOKU_CONF.'mediameta.local.php');
- }
- }
-
- $src = mediaFN($id);
-
- // output
- echo '<h1>'.hsc(noNS($id)).'</h1>'.NL;
- echo '<form action="'.DOKU_BASE.'lib/exe/mediamanager.php" accept-charset="utf-8" method="post" class="meta">'.NL;
- formSecurityToken();
- foreach($fields as $key => $field){
- // get current value
- $tags = array($field[0]);
- if(is_array($field[3])) $tags = array_merge($tags,$field[3]);
- $value = tpl_img_getTag($tags,'',$src);
- $value = cleanText($value);
-
- // prepare attributes
- $p = array();
- $p['class'] = 'edit';
- $p['id'] = 'meta__'.$key;
- $p['name'] = 'meta['.$field[0].']';
-
- // put label
- echo '<div class="metafield">';
- echo '<label for="meta__'.$key.'">';
- echo ($lang[$field[1]]) ? $lang[$field[1]] : $field[1];
- echo ':</label>';
-
- // put input field
- if($field[2] == 'text'){
- $p['value'] = $value;
- $p['type'] = 'text';
- $att = buildAttributes($p);
- echo "<input $att/>".NL;
- }else{
- $att = buildAttributes($p);
- echo "<textarea $att rows=\"6\" cols=\"50\">".formText($value).'</textarea>'.NL;
- }
- echo '</div>'.NL;
- }
- echo '<div class="buttons">'.NL;
- echo '<input type="hidden" name="img" value="'.hsc($id).'" />'.NL;
- echo '<input name="do[save]" type="submit" value="'.$lang['btn_save'].
- '" title="ALT+S" accesskey="s" class="button" />'.NL;
- echo '<input name="do[cancel]" type="submit" value="'.$lang['btn_cancel'].
- '" title="ALT+C" accesskey="c" class="button" />'.NL;
- echo '</div>'.NL;
- echo '</form>'.NL;
-}
-
-
-/**
- * Handles media file deletions
- *
- * If configured, checks for media references before deletion
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @return mixed false on error, true on delete or array with refs
- */
-function media_delete($id,$auth){
- if($auth < AUTH_DELETE) return false;
- if(!checkSecurityToken()) return false;
- global $conf;
- global $lang;
-
- // check for references if needed
- $mediareferences = array();
- if($conf['refcheck']){
- require_once(DOKU_INC.'inc/fulltext.php');
- $mediareferences = ft_mediause($id,$conf['refshow']);
- }
-
- if(!count($mediareferences)){
- $file = mediaFN($id);
- if(@unlink($file)){
- msg(str_replace('%s',noNS($id),$lang['deletesucc']),1);
- $del = io_sweepNS($id,'mediadir');
- if($del){
- // current namespace was removed. redirecting to root ns passing msg along
- header('Location: '.DOKU_URL.'lib/exe/mediamanager.php?msg1='.
- rawurlencode(str_replace('%s',noNS($id),$lang['deletesucc'])));
- exit;
- }
- return true;
- }
- //something went wrong
- msg(str_replace('%s',$file,$lang['deletefail']),-1);
- return false;
- }elseif(!$conf['refshow']){
- msg(str_replace('%s',noNS($id),$lang['mediainuse']),0);
- return false;
- }
-
- return $mediareferences;
-}
-
-/**
- * Handles media file uploads
- *
- * This generates an action event and delegates to _media_upload_action().
- * Action plugins are allowed to pre/postprocess the uploaded file.
- * (The triggered event is preventable.)
- *
- * Event data:
- * $data[0] fn_tmp: the temporary file name (read from $_FILES)
- * $data[1] fn: the file name of the uploaded file
- * $data[2] id: the future directory id of the uploaded file
- * $data[3] imime: the mimetype of the uploaded file
- *
- * @triggers MEDIA_UPLOAD_FINISH
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Michael Klier <chi at chimeric.de>
- * @return mixed false on error, id of the new file on success
- */
-function media_upload($ns,$auth){
- if($auth < AUTH_UPLOAD) return false;
- if(!checkSecurityToken()) return false;
- require_once(DOKU_INC.'inc/confutils.php');
- global $lang;
- global $conf;
-
- // get file and id
- $id = $_POST['id'];
- $file = $_FILES['upload'];
- if(empty($id)) $id = $file['name'];
-
- // check extensions
- list($fext,$fmime) = mimetype($file['name']);
- list($iext,$imime) = mimetype($id);
- if($fext && !$iext){
- // no extension specified in id - read original one
- $id .= '.'.$fext;
- $imime = $fmime;
- }elseif($fext && $fext != $iext){
- // extension was changed, print warning
- msg(sprintf($lang['mediaextchange'],$fext,$iext));
- }
-
- // get filename
- $id = cleanID($ns.':'.$id);
- $fn = mediaFN($id);
-
- // get filetype regexp
- $types = array_keys(getMimeTypes());
- $types = array_map(create_function('$q','return preg_quote($q,"/");'),$types);
- $regex = join('|',$types);
-
- // because a temp file was created already
- if(preg_match('/\.('.$regex.')$/i',$fn)){
- //check for overwrite
- if(@file_exists($fn) && (!$_POST['ow'] || $auth < AUTH_DELETE)){
- msg($lang['uploadexist'],0);
- return false;
- }
- // check for valid content
- $ok = media_contentcheck($file['tmp_name'],$imime);
- if($ok == -1){
- msg(sprintf($lang['uploadbadcontent'],".$iext"),-1);
- return false;
- }elseif($ok == -2){
- msg($lang['uploadspam'],-1);
- return false;
- }elseif($ok == -3){
- msg($lang['uploadxss'],-1);
- return false;
- }
-
- // prepare event data
- $data[0] = $file['tmp_name'];
- $data[1] = $fn;
- $data[2] = $id;
- $data[3] = $imime;
-
- // trigger event
- return trigger_event('MEDIA_UPLOAD_FINISH', $data, '_media_upload_action', true);
-
- }else{
- msg($lang['uploadwrong'],-1);
- }
- return false;
-}
-
-/**
- * Callback adapter for media_upload_finish()
- * @author Michael Klier <chi at chimeric.de>
- */
-function _media_upload_action($data) {
- // fixme do further sanity tests of given data?
- if(is_array($data) && count($data)===4) {
- return media_upload_finish($data[0], $data[1], $data[2], $data[3]);
- } else {
- return false; //callback error
- }
-}
-
-/**
- * Saves an uploaded media file
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Michael Klier <chi at chimeric.de>
- */
-function media_upload_finish($fn_tmp, $fn, $id, $imime) {
- global $conf;
- global $lang;
-
- // prepare directory
- io_createNamespace($id, 'media');
-
- if(move_uploaded_file($fn_tmp, $fn)) {
- // Set the correct permission here.
- // Always chmod media because they may be saved with different permissions than expected from the php umask.
- // (Should normally chmod to $conf['fperm'] only if $conf['fperm'] is set.)
- chmod($fn, $conf['fmode']);
- msg($lang['uploadsucc'],1);
- media_notify($id,$fn,$imime);
- return $id;
- }else{
- msg($lang['uploadfail'],-1);
- }
-}
-
-/**
- * This function checks if the uploaded content is really what the
- * mimetype says it is. We also do spam checking for text types here.
- *
- * We need to do this stuff because we can not rely on the browser
- * to do this check correctly. Yes, IE is broken as usual.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @link http://www.splitbrain.org/blog/2007-02/12-internet_explorer_facilitates_cross_site_scripting
- * @fixme check all 26 magic IE filetypes here?
- */
-function media_contentcheck($file,$mime){
- global $conf;
- if($conf['iexssprotect']){
- $fh = @fopen($file, 'rb');
- if($fh){
- $bytes = fread($fh, 256);
- fclose($fh);
- if(preg_match('/<(script|a|img|html|body|iframe)[\s>]/i',$bytes)){
- return -3;
- }
- }
- }
- if(substr($mime,0,6) == 'image/'){
- $info = @getimagesize($file);
- if($mime == 'image/gif' && $info[2] != 1){
- return -1;
- }elseif($mime == 'image/jpeg' && $info[2] != 2){
- return -1;
- }elseif($mime == 'image/png' && $info[2] != 3){
- return -1;
- }
- # fixme maybe check other images types as well
- }elseif(substr($mime,0,5) == 'text/'){
- global $TEXT;
- $TEXT = io_readFile($file);
- if(checkwordblock()){
- return -2;
- }
- }
- return 0;
-}
-
-/**
- * Send a notify mail on uploads
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function media_notify($id,$file,$mime){
- global $lang;
- global $conf;
- if(empty($conf['notify'])) return; //notify enabled?
-
- $text = rawLocale('uploadmail');
- $text = str_replace('@DATE@',strftime($conf['dformat']),$text);
- $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text);
- $text = str_replace('@IPADDRESS@',$_SERVER['REMOTE_ADDR'],$text);
- $text = str_replace('@HOSTNAME@',gethostbyaddr($_SERVER['REMOTE_ADDR']),$text);
- $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
- $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text);
- $text = str_replace('@MIME@',$mime,$text);
- $text = str_replace('@MEDIA@',ml($id,'',true,'&',true),$text);
- $text = str_replace('@SIZE@',filesize_h(filesize($file)),$text);
-
- $from = $conf['mailfrom'];
- $from = str_replace('@USER@',$_SERVER['REMOTE_USER'],$from);
- $from = str_replace('@NAME@',$INFO['userinfo']['name'],$from);
- $from = str_replace('@MAIL@',$INFO['userinfo']['mail'],$from);
-
- $subject = '['.$conf['title'].'] '.$lang['mail_upload'].' '.$id;
-
- mail_send($conf['notify'],$subject,$text,$from);
-}
-
-/**
- * List all files in a given Media namespace
- */
-function media_filelist($ns,$auth=null,$jump=''){
- global $conf;
- global $lang;
- $ns = cleanID($ns);
-
- // check auth our self if not given (needed for ajax calls)
- if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
-
- echo '<h1 id="media__ns">:'.hsc($ns).'</h1>'.NL;
-
- if($auth < AUTH_READ){
- // FIXME: print permission warning here instead?
- echo '<div class="nothing">'.$lang['nothingfound'].'</div>'.NL;
- return;
- }
-
- media_uploadform($ns, $auth);
-
- $dir = utf8_encodeFN(str_replace(':','/',$ns));
- $data = array();
- search($data,$conf['mediadir'],'search_media',array('showmsg'=>true),$dir);
-
- if(!count($data)){
- echo '<div class="nothing">'.$lang['nothingfound'].'</div>'.NL;
- return;
- }
-
- foreach($data as $item){
- media_printfile($item,$auth,$jump);
- }
-}
-
-/**
- * Print action links for a file depending on filetype
- * and available permissions
- *
- * @todo contains inline javascript
- */
-function media_fileactions($item,$auth){
- global $lang;
-
- // view button
- $link = ml($item['id'],'',true);
- echo ' <a href="'.$link.'" target="_blank"><img src="'.DOKU_BASE.'lib/images/magnifier.png" '.
- 'alt="'.$lang['mediaview'].'" title="'.$lang['mediaview'].'" class="btn" /></a>';
-
-
- // no further actions if not writable
- if(!$item['writable']) return;
-
- // delete button
- if($auth >= AUTH_DELETE){
- $ask = addslashes($lang['del_confirm']).'\\n';
- $ask .= addslashes($item['id']);
-
- echo ' <a href="'.DOKU_BASE.'lib/exe/mediamanager.php?delete='.rawurlencode($item['id']).
- '§ok='.getSecurityToken().'" '.
- 'onclick="return confirm(\''.$ask.'\')" onkeypress="return confirm(\''.$ask.'\')">'.
- '<img src="'.DOKU_BASE.'lib/images/trash.png" alt="'.$lang['btn_delete'].'" '.
- 'title="'.$lang['btn_delete'].'" class="btn" /></a>';
- }
-
- // edit button
- if($auth >= AUTH_UPLOAD && $item['isimg'] && $item['meta']->getField('File.Mime') == 'image/jpeg'){
- echo ' <a href="'.DOKU_BASE.'lib/exe/mediamanager.php?edit='.rawurlencode($item['id']).'">'.
- '<img src="'.DOKU_BASE.'lib/images/pencil.png" alt="'.$lang['metaedit'].'" '.
- 'title="'.$lang['metaedit'].'" class="btn" /></a>';
- }
-
-}
-
-/**
- * Formats and prints one file in the list
- */
-function media_printfile($item,$auth,$jump){
- global $lang;
- global $conf;
-
- // Prepare zebra coloring
- // I always wanted to use this variable name :-D
- static $twibble = 1;
- $twibble *= -1;
- $zebra = ($twibble == -1) ? 'odd' : 'even';
-
- // Automatically jump to recent action
- if($jump == $item['id']) {
- $jump = ' id="scroll__here" ';
- }else{
- $jump = '';
- }
-
- // Prepare fileicons
- list($ext,$mime) = mimetype($item['file']);
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
- $class = 'select mediafile mf_'.$class;
-
- // Prepare filename
- $file = utf8_decodeFN($item['file']);
-
- // Prepare info
- $info = '';
- if($item['isimg']){
- $info .= (int) $item['meta']->getField('File.Width');
- $info .= '×';
- $info .= (int) $item['meta']->getField('File.Height');
- $info .= ' ';
- }
- $info .= '<i>'.strftime($conf['dformat'],$item['mtime']).'</i>';
- $info .= ' ';
- $info .= filesize_h($item['size']);
-
- // ouput
- echo '<div class="'.$zebra.'"'.$jump.'>'.NL;
- echo '<a name="h_'.$item['id'].'" class="'.$class.'">'.$file.'</a> ';
- echo '<span class="info">('.$info.')</span>'.NL;
- media_fileactions($item,$auth);
- echo '<div class="example" id="ex_'.str_replace(':','_',$item['id']).'">';
- echo $lang['mediausage'].' <code>{{:'.$item['id'].'}}</code>';
- echo '</div>';
- if($item['isimg']) media_printimgdetail($item);
- echo '<div class="clearer"></div>'.NL;
- echo '</div>'.NL;
-}
-
-/**
- * Prints a thumbnail and metainfos
- */
-function media_printimgdetail($item){
- // prepare thumbnail
- $w = (int) $item['meta']->getField('File.Width');
- $h = (int) $item['meta']->getField('File.Height');
- if($w>120 || $h>120){
- $ratio = $item['meta']->getResizeRatio(120);
- $w = floor($w * $ratio);
- $h = floor($h * $ratio);
- }
- $src = ml($item['id'],array('w'=>$w,'h'=>$h));
- $p = array();
- $p['width'] = $w;
- $p['height'] = $h;
- $p['alt'] = $item['id'];
- $p['class'] = 'thumb';
- $att = buildAttributes($p);
-
- // output
- echo '<div class="detail">';
- echo '<div class="thumb">';
- echo '<a name="d_'.$item['id'].'" class="select">';
- echo '<img src="'.$src.'" '.$att.' />';
- echo '</a>';
- echo '</div>';
-
- // read EXIF/IPTC data
- $t = $item['meta']->getField('IPTC.Headline');
- $d = $item['meta']->getField(array('IPTC.Caption','EXIF.UserComment',
- 'EXIF.TIFFImageDescription',
- 'EXIF.TIFFUserComment'));
- if(utf8_strlen($d) > 250) $d = utf8_substr($d,0,250).'...';
- $k = $item['meta']->getField(array('IPTC.Keywords','IPTC.Category'));
-
- // print EXIF/IPTC data
- if($t || $d || $k ){
- echo '<p>';
- if($t) echo '<strong>'.htmlspecialchars($t).'</strong><br />';
- if($d) echo htmlspecialchars($d).'<br />';
- if($t) echo '<em>'.htmlspecialchars($k).'</em>';
- echo '</p>';
- }
- echo '</div>';
-}
-
-/**
- * Print the media upload form if permissions are correct
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function media_uploadform($ns, $auth){
- global $lang;
-
- if($auth < AUTH_UPLOAD) return; //fixme print info on missing permissions?
-
- print '<div class="upload">' . $lang['mediaupload'] . '</div>';
- $form = new Doku_Form('dw__upload', DOKU_BASE.'lib/exe/mediamanager.php', false, 'multipart/form-data');
- $form->addElement(formSecurityToken());
- $form->addHidden('ns', hsc($ns));
- $form->addElement(form_makeOpenTag('p'));
- $form->addElement(form_makeFileField('upload', $lang['txt_upload'].':', 'upload__file'));
- $form->addElement(form_makeCloseTag('p'));
- $form->addElement(form_makeOpenTag('p'));
- $form->addElement(form_makeTextField('id', '', $lang['txt_filename'].':', 'upload__name'));
- $form->addElement(form_makeButton('submit', '', $lang['btn_upload']));
- $form->addElement(form_makeCloseTag('p'));
-
- if($auth >= AUTH_DELETE){
- $form->addElement(form_makeOpenTag('p'));
- $form->addElement(form_makeCheckboxField('ow', 1, $lang['txt_overwrt'], 'dw__ow', 'check'));
- $form->addElement(form_makeCloseTag('p'));
- }
-
- html_form('upload', $form);
-}
-
-/**
- * Build a tree outline of available media namespaces
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function media_nstree($ns){
- global $conf;
- global $lang;
-
- // currently selected namespace
- $ns = cleanID($ns);
- if(empty($ns)){
- $ns = dirname(str_replace(':','/',$ID));
- if($ns == '.') $ns ='';
- }
- $ns = utf8_encodeFN(str_replace(':','/',$ns));
-
- $data = array();
- search($data,$conf['mediadir'],'search_index',array('ns' => $ns, 'nofiles' => true));
-
- // wrap a list with the root level around the other namespaces
- $item = array( 'level' => 0, 'id' => '',
- 'open' =>'true', 'label' => '['.$lang['mediaroot'].']');
-
- echo '<ul class="idx">';
- echo media_nstree_li($item);
- echo media_nstree_item($item);
- echo html_buildlist($data,'idx','media_nstree_item','media_nstree_li');
- echo '</li>';
- echo '</ul>';
-}
-
-/**
- * Userfunction for html_buildlist
- *
- * Prints a media namespace tree item
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function media_nstree_item($item){
- $pos = strrpos($item['id'], ':');
- $label = substr($item['id'], $pos > 0 ? $pos + 1 : 0);
- if(!$item['label']) $item['label'] = $label;
-
- $ret = '';
- $ret .= '<a href="'.DOKU_BASE.'lib/exe/mediamanager.php?ns='.idfilter($item['id']).'" class="idx_dir">';
- $ret .= $item['label'];
- $ret .= '</a>';
- return $ret;
-}
-
-/**
- * Userfunction for html_buildlist
- *
- * Prints a media namespace tree item opener
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function media_nstree_li($item){
- $class='media level'.$item['level'];
- if($item['open']){
- $class .= ' open';
- $img = DOKU_BASE.'lib/images/minus.gif';
- $alt = '−';
- }else{
- $class .= ' closed';
- $img = DOKU_BASE.'lib/images/plus.gif';
- $alt = '+';
- }
- return '<li class="'.$class.'">'.
- '<img src="'.$img.'" alt="'.$alt.'" />';
-}
+<?php
+/**
+ * All output and handler function needed for the media management popup
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+if(!defined('NL')) define('NL',"\n");
+
+require_once(DOKU_INC.'inc/html.php');
+require_once(DOKU_INC.'inc/search.php');
+require_once(DOKU_INC.'inc/JpegMeta.php');
+
+/**
+ * Lists pages which currently use a media file selected for deletion
+ *
+ * References uses the same visual as search results and share
+ * their CSS tags except pagenames won't be links.
+ *
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+function media_filesinuse($data,$id){
+ global $lang;
+ echo '<h1>'.$lang['reference'].' <code>'.hsc(noNS($id)).'</code></h1>';
+ echo '<p>'.hsc($lang['ref_inuse']).'</p>';
+
+ $hidden=0; //count of hits without read permission
+ foreach($data as $row){
+ if(auth_quickaclcheck($row) >= AUTH_READ && isVisiblePage($row)){
+ echo '<div class="search_result">';
+ echo '<span class="mediaref_ref">'.hsc($row).'</span>';
+ echo '</div>';
+ }else
+ $hidden++;
+ }
+ if ($hidden){
+ print '<div class="mediaref_hidden">'.$lang['ref_hidden'].'</div>';
+ }
+}
+
+/**
+ * Handles the saving of image meta data
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function media_metasave($id,$auth,$data){
+ if($auth < AUTH_UPLOAD) return false;
+ if(!checkSecurityToken()) return false;
+ global $lang;
+ global $conf;
+ $src = mediaFN($id);
+
+ $meta = new JpegMeta($src);
+ $meta->_parseAll();
+
+ foreach($data as $key => $val){
+ $val=trim($val);
+ if(empty($val)){
+ $meta->deleteField($key);
+ }else{
+ $meta->setField($key,$val);
+ }
+ }
+
+ if($meta->save()){
+ if($conf['fperm']) chmod($src, $conf['fperm']);
+ msg($lang['metasaveok'],1);
+ return $id;
+ }else{
+ msg($lang['metasaveerr'],-1);
+ return false;
+ }
+}
+
+/**
+ * Display the form to edit image meta data
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function media_metaform($id,$auth){
+ if($auth < AUTH_UPLOAD) return false;
+ global $lang;
+
+ // load the field descriptions
+ static $fields = null;
+ if(is_null($fields)){
+ include(DOKU_CONF.'mediameta.php');
+ if(@file_exists(DOKU_CONF.'mediameta.local.php')){
+ include(DOKU_CONF.'mediameta.local.php');
+ }
+ }
+
+ $src = mediaFN($id);
+
+ // output
+ echo '<h1>'.hsc(noNS($id)).'</h1>'.NL;
+ echo '<form action="'.DOKU_BASE.'lib/exe/mediamanager.php" accept-charset="utf-8" method="post" class="meta">'.NL;
+ formSecurityToken();
+ foreach($fields as $key => $field){
+ // get current value
+ $tags = array($field[0]);
+ if(is_array($field[3])) $tags = array_merge($tags,$field[3]);
+ $value = tpl_img_getTag($tags,'',$src);
+ $value = cleanText($value);
+
+ // prepare attributes
+ $p = array();
+ $p['class'] = 'edit';
+ $p['id'] = 'meta__'.$key;
+ $p['name'] = 'meta['.$field[0].']';
+
+ // put label
+ echo '<div class="metafield">';
+ echo '<label for="meta__'.$key.'">';
+ echo ($lang[$field[1]]) ? $lang[$field[1]] : $field[1];
+ echo ':</label>';
+
+ // put input field
+ if($field[2] == 'text'){
+ $p['value'] = $value;
+ $p['type'] = 'text';
+ $att = buildAttributes($p);
+ echo "<input $att/>".NL;
+ }else{
+ $att = buildAttributes($p);
+ echo "<textarea $att rows=\"6\" cols=\"50\">".formText($value).'</textarea>'.NL;
+ }
+ echo '</div>'.NL;
+ }
+ echo '<div class="buttons">'.NL;
+ echo '<input type="hidden" name="img" value="'.hsc($id).'" />'.NL;
+ echo '<input name="do[save]" type="submit" value="'.$lang['btn_save'].
+ '" title="ALT+S" accesskey="s" class="button" />'.NL;
+ echo '<input name="do[cancel]" type="submit" value="'.$lang['btn_cancel'].
+ '" title="ALT+C" accesskey="c" class="button" />'.NL;
+ echo '</div>'.NL;
+ echo '</form>'.NL;
+}
+
+
+/**
+ * Handles media file deletions
+ *
+ * If configured, checks for media references before deletion
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @return mixed false on error, true on delete or array with refs
+ */
+function media_delete($id,$auth){
+ if($auth < AUTH_DELETE) return false;
+ if(!checkSecurityToken()) return false;
+ global $conf;
+ global $lang;
+
+ // check for references if needed
+ $mediareferences = array();
+ if($conf['refcheck']){
+ require_once(DOKU_INC.'inc/fulltext.php');
+ $mediareferences = ft_mediause($id,$conf['refshow']);
+ }
+
+ if(!count($mediareferences)){
+ $file = mediaFN($id);
+ if(@unlink($file)){
+ msg(str_replace('%s',noNS($id),$lang['deletesucc']),1);
+ $del = io_sweepNS($id,'mediadir');
+ if($del){
+ // current namespace was removed. redirecting to root ns passing msg along
+ header('Location: '.DOKU_URL.'lib/exe/mediamanager.php?msg1='.
+ rawurlencode(str_replace('%s',noNS($id),$lang['deletesucc'])));
+ exit;
+ }
+ return true;
+ }
+ //something went wrong
+ msg(str_replace('%s',$file,$lang['deletefail']),-1);
+ return false;
+ }elseif(!$conf['refshow']){
+ msg(str_replace('%s',noNS($id),$lang['mediainuse']),0);
+ return false;
+ }
+
+ return $mediareferences;
+}
+
+/**
+ * Handles media file uploads
+ *
+ * This generates an action event and delegates to _media_upload_action().
+ * Action plugins are allowed to pre/postprocess the uploaded file.
+ * (The triggered event is preventable.)
+ *
+ * Event data:
+ * $data[0] fn_tmp: the temporary file name (read from $_FILES)
+ * $data[1] fn: the file name of the uploaded file
+ * $data[2] id: the future directory id of the uploaded file
+ * $data[3] imime: the mimetype of the uploaded file
+ *
+ * @triggers MEDIA_UPLOAD_FINISH
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Michael Klier <chi at chimeric.de>
+ * @return mixed false on error, id of the new file on success
+ */
+function media_upload($ns,$auth){
+ if($auth < AUTH_UPLOAD) return false;
+ if(!checkSecurityToken()) return false;
+ require_once(DOKU_INC.'inc/confutils.php');
+ global $lang;
+ global $conf;
+
+ // get file and id
+ $id = $_POST['id'];
+ $file = $_FILES['upload'];
+ if(empty($id)) $id = $file['name'];
+
+ // check extensions
+ list($fext,$fmime) = mimetype($file['name']);
+ list($iext,$imime) = mimetype($id);
+ if($fext && !$iext){
+ // no extension specified in id - read original one
+ $id .= '.'.$fext;
+ $imime = $fmime;
+ }elseif($fext && $fext != $iext){
+ // extension was changed, print warning
+ msg(sprintf($lang['mediaextchange'],$fext,$iext));
+ }
+
+ // get filename
+ $id = cleanID($ns.':'.$id);
+ $fn = mediaFN($id);
+
+ // get filetype regexp
+ $types = array_keys(getMimeTypes());
+ $types = array_map(create_function('$q','return preg_quote($q,"/");'),$types);
+ $regex = join('|',$types);
+
+ // because a temp file was created already
+ if(preg_match('/\.('.$regex.')$/i',$fn)){
+ //check for overwrite
+ if(@file_exists($fn) && (!$_POST['ow'] || $auth < AUTH_DELETE)){
+ msg($lang['uploadexist'],0);
+ return false;
+ }
+ // check for valid content
+ $ok = media_contentcheck($file['tmp_name'],$imime);
+ if($ok == -1){
+ msg(sprintf($lang['uploadbadcontent'],".$iext"),-1);
+ return false;
+ }elseif($ok == -2){
+ msg($lang['uploadspam'],-1);
+ return false;
+ }elseif($ok == -3){
+ msg($lang['uploadxss'],-1);
+ return false;
+ }
+
+ // prepare event data
+ $data[0] = $file['tmp_name'];
+ $data[1] = $fn;
+ $data[2] = $id;
+ $data[3] = $imime;
+
+ // trigger event
+ return trigger_event('MEDIA_UPLOAD_FINISH', $data, '_media_upload_action', true);
+
+ }else{
+ msg($lang['uploadwrong'],-1);
+ }
+ return false;
+}
+
+/**
+ * Callback adapter for media_upload_finish()
+ * @author Michael Klier <chi at chimeric.de>
+ */
+function _media_upload_action($data) {
+ // fixme do further sanity tests of given data?
+ if(is_array($data) && count($data)===4) {
+ return media_upload_finish($data[0], $data[1], $data[2], $data[3]);
+ } else {
+ return false; //callback error
+ }
+}
+
+/**
+ * Saves an uploaded media file
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Michael Klier <chi at chimeric.de>
+ */
+function media_upload_finish($fn_tmp, $fn, $id, $imime) {
+ global $conf;
+ global $lang;
+
+ // prepare directory
+ io_createNamespace($id, 'media');
+
+ if(move_uploaded_file($fn_tmp, $fn)) {
+ // Set the correct permission here.
+ // Always chmod media because they may be saved with different permissions than expected from the php umask.
+ // (Should normally chmod to $conf['fperm'] only if $conf['fperm'] is set.)
+ chmod($fn, $conf['fmode']);
+ msg($lang['uploadsucc'],1);
+ media_notify($id,$fn,$imime);
+ return $id;
+ }else{
+ msg($lang['uploadfail'],-1);
+ }
+}
+
+/**
+ * This function checks if the uploaded content is really what the
+ * mimetype says it is. We also do spam checking for text types here.
+ *
+ * We need to do this stuff because we can not rely on the browser
+ * to do this check correctly. Yes, IE is broken as usual.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @link http://www.splitbrain.org/blog/2007-02/12-internet_explorer_facilitates_cross_site_scripting
+ * @fixme check all 26 magic IE filetypes here?
+ */
+function media_contentcheck($file,$mime){
+ global $conf;
+ if($conf['iexssprotect']){
+ $fh = @fopen($file, 'rb');
+ if($fh){
+ $bytes = fread($fh, 256);
+ fclose($fh);
+ if(preg_match('/<(script|a|img|html|body|iframe)[\s>]/i',$bytes)){
+ return -3;
+ }
+ }
+ }
+ if(substr($mime,0,6) == 'image/'){
+ $info = @getimagesize($file);
+ if($mime == 'image/gif' && $info[2] != 1){
+ return -1;
+ }elseif($mime == 'image/jpeg' && $info[2] != 2){
+ return -1;
+ }elseif($mime == 'image/png' && $info[2] != 3){
+ return -1;
+ }
+ # fixme maybe check other images types as well
+ }elseif(substr($mime,0,5) == 'text/'){
+ global $TEXT;
+ $TEXT = io_readFile($file);
+ if(checkwordblock()){
+ return -2;
+ }
+ }
+ return 0;
+}
+
+/**
+ * Send a notify mail on uploads
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function media_notify($id,$file,$mime){
+ global $lang;
+ global $conf;
+ if(empty($conf['notify'])) return; //notify enabled?
+
+ $text = rawLocale('uploadmail');
+ $text = str_replace('@DATE@',strftime($conf['dformat']),$text);
+ $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text);
+ $text = str_replace('@IPADDRESS@',$_SERVER['REMOTE_ADDR'],$text);
+ $text = str_replace('@HOSTNAME@',gethostbyaddr($_SERVER['REMOTE_ADDR']),$text);
+ $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
+ $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text);
+ $text = str_replace('@MIME@',$mime,$text);
+ $text = str_replace('@MEDIA@',ml($id,'',true,'&',true),$text);
+ $text = str_replace('@SIZE@',filesize_h(filesize($file)),$text);
+
+ $from = $conf['mailfrom'];
+ $from = str_replace('@USER@',$_SERVER['REMOTE_USER'],$from);
+ $from = str_replace('@NAME@',$INFO['userinfo']['name'],$from);
+ $from = str_replace('@MAIL@',$INFO['userinfo']['mail'],$from);
+
+ $subject = '['.$conf['title'].'] '.$lang['mail_upload'].' '.$id;
+
+ mail_send($conf['notify'],$subject,$text,$from);
+}
+
+/**
+ * List all files in a given Media namespace
+ */
+function media_filelist($ns,$auth=null,$jump=''){
+ global $conf;
+ global $lang;
+ $ns = cleanID($ns);
+
+ // check auth our self if not given (needed for ajax calls)
+ if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
+
+ echo '<h1 id="media__ns">:'.hsc($ns).'</h1>'.NL;
+
+ if($auth < AUTH_READ){
+ // FIXME: print permission warning here instead?
+ echo '<div class="nothing">'.$lang['nothingfound'].'</div>'.NL;
+ return;
+ }
+
+ media_uploadform($ns, $auth);
+
+ $dir = utf8_encodeFN(str_replace(':','/',$ns));
+ $data = array();
+ search($data,$conf['mediadir'],'search_media',array('showmsg'=>true),$dir);
+
+ if(!count($data)){
+ echo '<div class="nothing">'.$lang['nothingfound'].'</div>'.NL;
+ return;
+ }
+
+ foreach($data as $item){
+ media_printfile($item,$auth,$jump);
+ }
+}
+
+/**
+ * Print action links for a file depending on filetype
+ * and available permissions
+ *
+ * @todo contains inline javascript
+ */
+function media_fileactions($item,$auth){
+ global $lang;
+
+ // view button
+ $link = ml($item['id'],'',true);
+ echo ' <a href="'.$link.'" target="_blank"><img src="'.DOKU_BASE.'lib/images/magnifier.png" '.
+ 'alt="'.$lang['mediaview'].'" title="'.$lang['mediaview'].'" class="btn" /></a>';
+
+
+ // no further actions if not writable
+ if(!$item['writable']) return;
+
+ // delete button
+ if($auth >= AUTH_DELETE){
+ $ask = addslashes($lang['del_confirm']).'\\n';
+ $ask .= addslashes($item['id']);
+
+ echo ' <a href="'.DOKU_BASE.'lib/exe/mediamanager.php?delete='.rawurlencode($item['id']).
+ '§ok='.getSecurityToken().'" '.
+ 'onclick="return confirm(\''.$ask.'\')" onkeypress="return confirm(\''.$ask.'\')">'.
+ '<img src="'.DOKU_BASE.'lib/images/trash.png" alt="'.$lang['btn_delete'].'" '.
+ 'title="'.$lang['btn_delete'].'" class="btn" /></a>';
+ }
+
+ // edit button
+ if($auth >= AUTH_UPLOAD && $item['isimg'] && $item['meta']->getField('File.Mime') == 'image/jpeg'){
+ echo ' <a href="'.DOKU_BASE.'lib/exe/mediamanager.php?edit='.rawurlencode($item['id']).'">'.
+ '<img src="'.DOKU_BASE.'lib/images/pencil.png" alt="'.$lang['metaedit'].'" '.
+ 'title="'.$lang['metaedit'].'" class="btn" /></a>';
+ }
+
+}
+
+/**
+ * Formats and prints one file in the list
+ */
+function media_printfile($item,$auth,$jump){
+ global $lang;
+ global $conf;
+
+ // Prepare zebra coloring
+ // I always wanted to use this variable name :-D
+ static $twibble = 1;
+ $twibble *= -1;
+ $zebra = ($twibble == -1) ? 'odd' : 'even';
+
+ // Automatically jump to recent action
+ if($jump == $item['id']) {
+ $jump = ' id="scroll__here" ';
+ }else{
+ $jump = '';
+ }
+
+ // Prepare fileicons
+ list($ext,$mime) = mimetype($item['file']);
+ $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
+ $class = 'select mediafile mf_'.$class;
+
+ // Prepare filename
+ $file = utf8_decodeFN($item['file']);
+
+ // Prepare info
+ $info = '';
+ if($item['isimg']){
+ $info .= (int) $item['meta']->getField('File.Width');
+ $info .= '×';
+ $info .= (int) $item['meta']->getField('File.Height');
+ $info .= ' ';
+ }
+ $info .= '<i>'.strftime($conf['dformat'],$item['mtime']).'</i>';
+ $info .= ' ';
+ $info .= filesize_h($item['size']);
+
+ // ouput
+ echo '<div class="'.$zebra.'"'.$jump.'>'.NL;
+ echo '<a name="h_'.$item['id'].'" class="'.$class.'">'.$file.'</a> ';
+ echo '<span class="info">('.$info.')</span>'.NL;
+ media_fileactions($item,$auth);
+ echo '<div class="example" id="ex_'.str_replace(':','_',$item['id']).'">';
+ echo $lang['mediausage'].' <code>{{:'.$item['id'].'}}</code>';
+ echo '</div>';
+ if($item['isimg']) media_printimgdetail($item);
+ echo '<div class="clearer"></div>'.NL;
+ echo '</div>'.NL;
+}
+
+/**
+ * Prints a thumbnail and metainfos
+ */
+function media_printimgdetail($item){
+ // prepare thumbnail
+ $w = (int) $item['meta']->getField('File.Width');
+ $h = (int) $item['meta']->getField('File.Height');
+ if($w>120 || $h>120){
+ $ratio = $item['meta']->getResizeRatio(120);
+ $w = floor($w * $ratio);
+ $h = floor($h * $ratio);
+ }
+ $src = ml($item['id'],array('w'=>$w,'h'=>$h));
+ $p = array();
+ $p['width'] = $w;
+ $p['height'] = $h;
+ $p['alt'] = $item['id'];
+ $p['class'] = 'thumb';
+ $att = buildAttributes($p);
+
+ // output
+ echo '<div class="detail">';
+ echo '<div class="thumb">';
+ echo '<a name="d_'.$item['id'].'" class="select">';
+ echo '<img src="'.$src.'" '.$att.' />';
+ echo '</a>';
+ echo '</div>';
+
+ // read EXIF/IPTC data
+ $t = $item['meta']->getField('IPTC.Headline');
+ $d = $item['meta']->getField(array('IPTC.Caption','EXIF.UserComment',
+ 'EXIF.TIFFImageDescription',
+ 'EXIF.TIFFUserComment'));
+ if(utf8_strlen($d) > 250) $d = utf8_substr($d,0,250).'...';
+ $k = $item['meta']->getField(array('IPTC.Keywords','IPTC.Category'));
+
+ // print EXIF/IPTC data
+ if($t || $d || $k ){
+ echo '<p>';
+ if($t) echo '<strong>'.htmlspecialchars($t).'</strong><br />';
+ if($d) echo htmlspecialchars($d).'<br />';
+ if($t) echo '<em>'.htmlspecialchars($k).'</em>';
+ echo '</p>';
+ }
+ echo '</div>';
+}
+
+/**
+ * Print the media upload form if permissions are correct
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function media_uploadform($ns, $auth){
+ global $lang;
+
+ if($auth < AUTH_UPLOAD) return; //fixme print info on missing permissions?
+
+ print '<div class="upload">' . $lang['mediaupload'] . '</div>';
+ $form = new Doku_Form('dw__upload', DOKU_BASE.'lib/exe/mediamanager.php', false, 'multipart/form-data');
+ $form->addElement(formSecurityToken());
+ $form->addHidden('ns', hsc($ns));
+ $form->addElement(form_makeOpenTag('p'));
+ $form->addElement(form_makeFileField('upload', $lang['txt_upload'].':', 'upload__file'));
+ $form->addElement(form_makeCloseTag('p'));
+ $form->addElement(form_makeOpenTag('p'));
+ $form->addElement(form_makeTextField('id', '', $lang['txt_filename'].':', 'upload__name'));
+ $form->addElement(form_makeButton('submit', '', $lang['btn_upload']));
+ $form->addElement(form_makeCloseTag('p'));
+
+ if($auth >= AUTH_DELETE){
+ $form->addElement(form_makeOpenTag('p'));
+ $form->addElement(form_makeCheckboxField('ow', 1, $lang['txt_overwrt'], 'dw__ow', 'check'));
+ $form->addElement(form_makeCloseTag('p'));
+ }
+
+ html_form('upload', $form);
+}
+
+/**
+ * Build a tree outline of available media namespaces
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function media_nstree($ns){
+ global $conf;
+ global $lang;
+
+ // currently selected namespace
+ $ns = cleanID($ns);
+ if(empty($ns)){
+ $ns = dirname(str_replace(':','/',$ID));
+ if($ns == '.') $ns ='';
+ }
+ $ns = utf8_encodeFN(str_replace(':','/',$ns));
+
+ $data = array();
+ search($data,$conf['mediadir'],'search_index',array('ns' => $ns, 'nofiles' => true));
+
+ // wrap a list with the root level around the other namespaces
+ $item = array( 'level' => 0, 'id' => '',
+ 'open' =>'true', 'label' => '['.$lang['mediaroot'].']');
+
+ echo '<ul class="idx">';
+ echo media_nstree_li($item);
+ echo media_nstree_item($item);
+ echo html_buildlist($data,'idx','media_nstree_item','media_nstree_li');
+ echo '</li>';
+ echo '</ul>';
+}
+
+/**
+ * Userfunction for html_buildlist
+ *
+ * Prints a media namespace tree item
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function media_nstree_item($item){
+ $pos = strrpos($item['id'], ':');
+ $label = substr($item['id'], $pos > 0 ? $pos + 1 : 0);
+ if(!$item['label']) $item['label'] = $label;
+
+ $ret = '';
+ $ret .= '<a href="'.DOKU_BASE.'lib/exe/mediamanager.php?ns='.idfilter($item['id']).'" class="idx_dir">';
+ $ret .= $item['label'];
+ $ret .= '</a>';
+ return $ret;
+}
+
+/**
+ * Userfunction for html_buildlist
+ *
+ * Prints a media namespace tree item opener
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function media_nstree_li($item){
+ $class='media level'.$item['level'];
+ if($item['open']){
+ $class .= ' open';
+ $img = DOKU_BASE.'lib/images/minus.gif';
+ $alt = '−';
+ }else{
+ $class .= ' closed';
+ $img = DOKU_BASE.'lib/images/plus.gif';
+ $alt = '+';
+ }
+ return '<li class="'.$class.'">'.
+ '<img src="'.$img.'" alt="'.$alt.'" />';
+}
Modified: site/trunk/www-root/wiki/inc/pageutils.php
===================================================================
--- site/trunk/www-root/wiki/inc/pageutils.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/pageutils.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,548 +1,548 @@
-<?php
-/**
- * Utilities for handling pagenames
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @todo Combine similar functions like {wiki,media,meta}FN()
- */
-
-/**
- * Fetch the an ID from request
- *
- * Uses either standard $_REQUEST variable or extracts it from
- * the full request URI when userewrite is set to 2
- *
- * For $param='id' $conf['start'] is returned if no id was found.
- * If the second parameter is true (default) the ID is cleaned.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function getID($param='id',$clean=true){
- global $conf;
-
- $id = isset($_REQUEST[$param]) ? $_REQUEST[$param] : null;
-
- //construct page id from request URI
- if(empty($id) && $conf['userewrite'] == 2){
- //get the script URL
- if($conf['basedir']){
- $relpath = '';
- if($param != 'id') {
- $relpath = 'lib/exe/';
- }
- $script = $conf['basedir'].$relpath.basename($_SERVER['SCRIPT_FILENAME']);
- }elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['SCRIPT_FILENAME']){
- $script = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','',
- $_SERVER['SCRIPT_FILENAME']);
- $script = '/'.$script;
- }else{
- $script = $_SERVER['SCRIPT_NAME'];
- }
-
- //clean script and request (fixes a windows problem)
- $script = preg_replace('/\/\/+/','/',$script);
- $request = preg_replace('/\/\/+/','/',$_SERVER['REQUEST_URI']);
-
- //remove script URL and Querystring to gain the id
- if(preg_match('/^'.preg_quote($script,'/').'(.*)/',$request, $match)){
- $id = preg_replace ('/\?.*/','',$match[1]);
- }
- $id = urldecode($id);
- //strip leading slashes
- $id = preg_replace('!^/+!','',$id);
- }
-
- // Namespace autolinking from URL
- if(substr($id,-1) == ':' || ($conf['useslash'] && substr($id,-1) == '/')){
- if(page_exists($id.$conf['start'])){
- // start page inside namespace
- $id = $id.$conf['start'];
- }elseif(page_exists($id.noNS(cleanID($id)))){
- // page named like the NS inside the NS
- $id = $id.noNS(cleanID($id));
- }elseif(page_exists($id)){
- // page like namespace exists
- $id = substr($id,0,-1);
- }else{
- // fall back to default
- $id = $id.$conf['start'];
- }
- header("Location: ".wl($id,'',true));
- }
-
- if($clean) $id = cleanID($id);
- if(empty($id) && $param=='id') $id = $conf['start'];
-
- return $id;
-}
-
-/**
- * Remove unwanted chars from ID
- *
- * Cleans a given ID to only use allowed characters. Accented characters are
- * converted to unaccented ones
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @param string $raw_id The pageid to clean
- * @param boolean $ascii Force ASCII
- */
-function cleanID($raw_id,$ascii=false){
- global $conf;
- global $lang;
- static $sepcharpat = null;
-
- global $cache_cleanid;
- $cache = & $cache_cleanid;
-
- // check if it's already in the memory cache
- if (isset($cache[$raw_id])) {
- return $cache[$raw_id];
- }
-
- $sepchar = $conf['sepchar'];
- if($sepcharpat == null) // build string only once to save clock cycles
- $sepcharpat = '#\\'.$sepchar.'+#';
-
- $id = trim($raw_id);
- $id = utf8_strtolower($id);
-
- //alternative namespace seperator
- $id = strtr($id,';',':');
- if($conf['useslash']){
- $id = strtr($id,'/',':');
- }else{
- $id = strtr($id,'/',$sepchar);
- }
-
- if($conf['deaccent'] == 2 || $ascii) $id = utf8_romanize($id);
- if($conf['deaccent'] || $ascii) $id = utf8_deaccent($id,-1);
-
- //remove specials
- $id = utf8_stripspecials($id,$sepchar,'\*');
-
- if($ascii) $id = utf8_strip($id);
-
- //clean up
- $id = preg_replace($sepcharpat,$sepchar,$id);
- $id = preg_replace('#:+#',':',$id);
- $id = trim($id,':._-');
- $id = preg_replace('#:[:\._\-]+#',':',$id);
-
- $cache[$raw_id] = $id;
- return($id);
-}
-
-/**
- * Return namespacepart of a wiki ID
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function getNS($id){
- $pos = strrpos($id,':');
- if($pos!==false){
- return substr($id,0,$pos);
- }
- return false;
-}
-
-/**
- * Returns the ID without the namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function noNS($id) {
- $pos = strrpos($id, ':');
- if ($pos!==false) {
- return substr($id, $pos+1);
- } else {
- return $id;
- }
-}
-
-/**
-* Returns the current namespace
-*
-* @author Nathan Fritz <fritzn at crown.edu>
-*/
-function curNS($id) {
- return noNS(getNS($id));
-}
-
-/**
-* Returns the ID without the namespace or current namespace for 'start' pages
-*
-* @author Nathan Fritz <fritzn at crown.edu>
-*/
-function noNSorNS($id) {
- global $conf;
-
- $p = noNS($id);
- if ($p == $conf['start']) {
- $p = curNS($id);
- if ($p == false) {
- return noNS($id);
- }
- }
- return $p;
-}
-
-/**
- * Wiki page existence check
- *
- * parameters as for wikiFN
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- */
-function page_exists($id,$rev='',$clean=true) {
- return @file_exists(wikiFN($id,$rev,$clean));
-}
-
-/**
- * returns the full path to the datafile specified by ID and optional revision
- *
- * The filename is URL encoded to protect Unicode chars
- *
- * @param $raw_id string id of wikipage
- * @param $rev string page revision, empty string for current
- * @param $clean bool flag indicating that $raw_id should be cleaned. Only set to false
- * when $id is guaranteed to have been cleaned already.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function wikiFN($raw_id,$rev='',$clean=true){
- global $conf;
-
- global $cache_wikifn;
- $cache = & $cache_wikifn;
-
- if (isset($cache[$raw_id]) && isset($cache[$raw_id][$rev])) {
- return $cache[$raw_id][$rev];
- }
-
- $id = $raw_id;
-
- if ($clean) $id = cleanID($id);
- $id = str_replace(':','/',$id);
- if(empty($rev)){
- $fn = $conf['datadir'].'/'.utf8_encodeFN($id).'.txt';
- }else{
- $fn = $conf['olddir'].'/'.utf8_encodeFN($id).'.'.$rev.'.txt';
- if($conf['compression']){
- //test for extensions here, we want to read both compressions
- if (@file_exists($fn . '.gz')){
- $fn .= '.gz';
- }else if(@file_exists($fn . '.bz2')){
- $fn .= '.bz2';
- }else{
- //file doesnt exist yet, so we take the configured extension
- $fn .= '.' . $conf['compression'];
- }
- }
- }
-
- if (!isset($cache[$raw_id])) { $cache[$raw_id] = array(); }
- $cache[$raw_id][$rev] = $fn;
- return $fn;
-}
-
-/**
- * Returns the full path to the file for locking the page while editing.
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function wikiLockFN($id) {
- global $conf;
- return $conf['lockdir'].'/'.md5(cleanID($id)).'.lock';
-}
-
-
-/**
- * returns the full path to the meta file specified by ID and extension
- *
- * The filename is URL encoded to protect Unicode chars
- *
- * @author Steven Danz <steven-danz at kc.rr.com>
- */
-function metaFN($id,$ext){
- global $conf;
- $id = cleanID($id);
- $id = str_replace(':','/',$id);
- $fn = $conf['metadir'].'/'.utf8_encodeFN($id).$ext;
- return $fn;
-}
-
-/**
- * returns an array of full paths to all metafiles of a given ID
- *
- * @author Esther Brunner <esther at kaffeehaus.ch>
- */
-function metaFiles($id){
- $name = noNS($id);
- $ns = getNS($id);
- $dir = ($ns) ? metaFN($ns,'').'/' : metaFN($ns,'');
- $files = array();
-
- $dh = @opendir($dir);
- if(!$dh) return $files;
- while(($file = readdir($dh)) !== false){
- if(strpos($file,$name.'.') === 0 && !is_dir($dir.$file))
- $files[] = $dir.$file;
- }
- closedir($dh);
-
- return $files;
-}
-
-/**
- * returns the full path to the mediafile specified by ID
- *
- * The filename is URL encoded to protect Unicode chars
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function mediaFN($id){
- global $conf;
- $id = cleanID($id);
- $id = str_replace(':','/',$id);
- $fn = $conf['mediadir'].'/'.utf8_encodeFN($id);
- return $fn;
-}
-
-/**
- * Returns the full filepath to a localized textfile if local
- * version isn't found the english one is returned
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function localeFN($id){
- global $conf;
- $file = DOKU_INC.'inc/lang/'.$conf['lang'].'/'.$id.'.txt';
- if(!@file_exists($file)){
- //fall back to english
- $file = DOKU_INC.'inc/lang/en/'.$id.'.txt';
- }
- return $file;
-}
-
-/**
- * Resolve relative paths in IDs
- *
- * Do not call directly use resolve_mediaid or resolve_pageid
- * instead
- *
- * Partyly based on a cleanPath function found at
- * http://www.php.net/manual/en/function.realpath.php#57016
- *
- * @author <bart at mediawave dot nl>
- */
-function resolve_id($ns,$id,$clean=true){
- global $conf;
-
- // some pre cleaning for useslash:
- if($conf['useslash']) $id = str_replace('/',':',$id);
-
- // if the id starts with a dot we need to handle the
- // relative stuff
- if($id{0} == '.'){
- // normalize initial dots without a colon
- $id = preg_replace('/^(\.+)(?=[^:\.])/','\1:',$id);
- // prepend the current namespace
- $id = $ns.':'.$id;
-
- // cleanup relatives
- $result = array();
- $pathA = explode(':', $id);
- if (!$pathA[0]) $result[] = '';
- foreach ($pathA AS $key => $dir) {
- if ($dir == '..') {
- if (end($result) == '..') {
- $result[] = '..';
- } elseif (!array_pop($result)) {
- $result[] = '..';
- }
- } elseif ($dir && $dir != '.') {
- $result[] = $dir;
- }
- }
- if (!end($pathA)) $result[] = '';
- $id = implode(':', $result);
- }elseif($ns !== false && strpos($id,':') === false){
- //if link contains no namespace. add current namespace (if any)
- $id = $ns.':'.$id;
- }
-
- if($clean) $id = cleanID($id);
- return $id;
-}
-
-/**
- * Returns a full media id
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function resolve_mediaid($ns,&$page,&$exists){
- $page = resolve_id($ns,$page);
- $file = mediaFN($page);
- $exists = @file_exists($file);
-}
-
-/**
- * Returns a full page id
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function resolve_pageid($ns,&$page,&$exists){
- global $conf;
- $exists = false;
-
- //keep hashlink if exists then clean both parts
- if (strpos($page,'#')) {
- list($page,$hash) = split('#',$page,2);
- } else {
- $hash = '';
- }
- $hash = cleanID($hash);
- $page = resolve_id($ns,$page,false); // resolve but don't clean, yet
-
- // get filename (calls clean itself)
- $file = wikiFN($page);
-
- // if ends with colon or slash we have a namespace link
- if(substr($page,-1) == ':' || ($conf['useslash'] && substr($page,-1) == '/')){
- if(page_exists($page.$conf['start'])){
- // start page inside namespace
- $page = $page.$conf['start'];
- $exists = true;
- }elseif(page_exists($page.noNS(cleanID($page)))){
- // page named like the NS inside the NS
- $page = $page.noNS(cleanID($page));
- $exists = true;
- }elseif(page_exists($page)){
- // page like namespace exists
- $page = $page;
- $exists = true;
- }else{
- // fall back to default
- $page = $page.$conf['start'];
- }
- }else{
- //check alternative plural/nonplural form
- if(!@file_exists($file)){
- if( $conf['autoplural'] ){
- if(substr($page,-1) == 's'){
- $try = substr($page,0,-1);
- }else{
- $try = $page.'s';
- }
- if(page_exists($try)){
- $page = $try;
- $exists = true;
- }
- }
- }else{
- $exists = true;
- }
- }
-
- // now make sure we have a clean page
- $page = cleanID($page);
-
- //add hash if any
- if(!empty($hash)) $page .= '#'.$hash;
-}
-
-/**
- * Returns the name of a cachefile from given data
- *
- * The needed directory is created by this function!
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @param string $data This data is used to create a unique md5 name
- * @param string $ext This is appended to the filename if given
- * @return string The filename of the cachefile
- */
-function getCacheName($data,$ext=''){
- global $conf;
- $md5 = md5($data);
- $file = $conf['cachedir'].'/'.$md5{0}.'/'.$md5.$ext;
- io_makeFileDir($file);
- return $file;
-}
-
-/**
- * Checks a pageid against $conf['hidepages']
- *
- * @author Andreas Gohr <gohr at cosmocode.de>
- */
-function isHiddenPage($id){
- global $conf;
- if(empty($conf['hidepages'])) return false;
-
- if(preg_match('/'.$conf['hidepages'].'/ui',':'.$id)){
- return true;
- }
- return false;
-}
-
-/**
- * Reverse of isHiddenPage
- *
- * @author Andreas Gohr <gohr at cosmocode.de>
- */
-function isVisiblePage($id){
- return !isHiddenPage($id);
-}
-
-/**
- * Checks and sets HTTP headers for conditional HTTP requests
- *
- * @author Simon Willison <swillison at gmail.com>
- * @link http://simon.incutio.com/archive/2003/04/23/conditionalGet
- * @param timestamp $timestamp lastmodified time of the cache file
- * @returns void or void with previously header() commands executed
- */
-function http_conditionalRequest($timestamp){
- // A PHP implementation of conditional get, see
- // http://fishbowl.pastiche.org/archives/001132.html
- $last_modified = substr(gmdate('r', $timestamp), 0, -5).'GMT';
- $etag = '"'.md5($last_modified).'"';
- // Send the headers
- header("Last-Modified: $last_modified");
- header("ETag: $etag");
- // See if the client has provided the required headers
- if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
- $if_modified_since = stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']);
- }else{
- $if_modified_since = false;
- }
-
- if (isset($_SERVER['HTTP_IF_NONE_MATCH'])){
- $if_none_match = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
- }else{
- $if_none_match = false;
- }
-
- if (!$if_modified_since && !$if_none_match){
- return;
- }
-
- // At least one of the headers is there - check them
- if ($if_none_match && $if_none_match != $etag) {
- return; // etag is there but doesn't match
- }
-
- if ($if_modified_since && $if_modified_since != $last_modified) {
- return; // if-modified-since is there but doesn't match
- }
-
- // Nothing has changed since their last request - serve a 304 and exit
- header('HTTP/1.0 304 Not Modified');
-
- // don't produce output, even if compression is on
- ob_end_clean();
- exit;
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Utilities for handling pagenames
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @todo Combine similar functions like {wiki,media,meta}FN()
+ */
+
+/**
+ * Fetch the an ID from request
+ *
+ * Uses either standard $_REQUEST variable or extracts it from
+ * the full request URI when userewrite is set to 2
+ *
+ * For $param='id' $conf['start'] is returned if no id was found.
+ * If the second parameter is true (default) the ID is cleaned.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function getID($param='id',$clean=true){
+ global $conf;
+
+ $id = isset($_REQUEST[$param]) ? $_REQUEST[$param] : null;
+
+ //construct page id from request URI
+ if(empty($id) && $conf['userewrite'] == 2){
+ //get the script URL
+ if($conf['basedir']){
+ $relpath = '';
+ if($param != 'id') {
+ $relpath = 'lib/exe/';
+ }
+ $script = $conf['basedir'].$relpath.basename($_SERVER['SCRIPT_FILENAME']);
+ }elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['SCRIPT_FILENAME']){
+ $script = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','',
+ $_SERVER['SCRIPT_FILENAME']);
+ $script = '/'.$script;
+ }else{
+ $script = $_SERVER['SCRIPT_NAME'];
+ }
+
+ //clean script and request (fixes a windows problem)
+ $script = preg_replace('/\/\/+/','/',$script);
+ $request = preg_replace('/\/\/+/','/',$_SERVER['REQUEST_URI']);
+
+ //remove script URL and Querystring to gain the id
+ if(preg_match('/^'.preg_quote($script,'/').'(.*)/',$request, $match)){
+ $id = preg_replace ('/\?.*/','',$match[1]);
+ }
+ $id = urldecode($id);
+ //strip leading slashes
+ $id = preg_replace('!^/+!','',$id);
+ }
+
+ // Namespace autolinking from URL
+ if(substr($id,-1) == ':' || ($conf['useslash'] && substr($id,-1) == '/')){
+ if(page_exists($id.$conf['start'])){
+ // start page inside namespace
+ $id = $id.$conf['start'];
+ }elseif(page_exists($id.noNS(cleanID($id)))){
+ // page named like the NS inside the NS
+ $id = $id.noNS(cleanID($id));
+ }elseif(page_exists($id)){
+ // page like namespace exists
+ $id = substr($id,0,-1);
+ }else{
+ // fall back to default
+ $id = $id.$conf['start'];
+ }
+ header("Location: ".wl($id,'',true));
+ }
+
+ if($clean) $id = cleanID($id);
+ if(empty($id) && $param=='id') $id = $conf['start'];
+
+ return $id;
+}
+
+/**
+ * Remove unwanted chars from ID
+ *
+ * Cleans a given ID to only use allowed characters. Accented characters are
+ * converted to unaccented ones
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @param string $raw_id The pageid to clean
+ * @param boolean $ascii Force ASCII
+ */
+function cleanID($raw_id,$ascii=false){
+ global $conf;
+ global $lang;
+ static $sepcharpat = null;
+
+ global $cache_cleanid;
+ $cache = & $cache_cleanid;
+
+ // check if it's already in the memory cache
+ if (isset($cache[$raw_id])) {
+ return $cache[$raw_id];
+ }
+
+ $sepchar = $conf['sepchar'];
+ if($sepcharpat == null) // build string only once to save clock cycles
+ $sepcharpat = '#\\'.$sepchar.'+#';
+
+ $id = trim($raw_id);
+ $id = utf8_strtolower($id);
+
+ //alternative namespace seperator
+ $id = strtr($id,';',':');
+ if($conf['useslash']){
+ $id = strtr($id,'/',':');
+ }else{
+ $id = strtr($id,'/',$sepchar);
+ }
+
+ if($conf['deaccent'] == 2 || $ascii) $id = utf8_romanize($id);
+ if($conf['deaccent'] || $ascii) $id = utf8_deaccent($id,-1);
+
+ //remove specials
+ $id = utf8_stripspecials($id,$sepchar,'\*');
+
+ if($ascii) $id = utf8_strip($id);
+
+ //clean up
+ $id = preg_replace($sepcharpat,$sepchar,$id);
+ $id = preg_replace('#:+#',':',$id);
+ $id = trim($id,':._-');
+ $id = preg_replace('#:[:\._\-]+#',':',$id);
+
+ $cache[$raw_id] = $id;
+ return($id);
+}
+
+/**
+ * Return namespacepart of a wiki ID
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function getNS($id){
+ $pos = strrpos($id,':');
+ if($pos!==false){
+ return substr($id,0,$pos);
+ }
+ return false;
+}
+
+/**
+ * Returns the ID without the namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function noNS($id) {
+ $pos = strrpos($id, ':');
+ if ($pos!==false) {
+ return substr($id, $pos+1);
+ } else {
+ return $id;
+ }
+}
+
+/**
+* Returns the current namespace
+*
+* @author Nathan Fritz <fritzn at crown.edu>
+*/
+function curNS($id) {
+ return noNS(getNS($id));
+}
+
+/**
+* Returns the ID without the namespace or current namespace for 'start' pages
+*
+* @author Nathan Fritz <fritzn at crown.edu>
+*/
+function noNSorNS($id) {
+ global $conf;
+
+ $p = noNS($id);
+ if ($p == $conf['start']) {
+ $p = curNS($id);
+ if ($p == false) {
+ return noNS($id);
+ }
+ }
+ return $p;
+}
+
+/**
+ * Wiki page existence check
+ *
+ * parameters as for wikiFN
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+function page_exists($id,$rev='',$clean=true) {
+ return @file_exists(wikiFN($id,$rev,$clean));
+}
+
+/**
+ * returns the full path to the datafile specified by ID and optional revision
+ *
+ * The filename is URL encoded to protect Unicode chars
+ *
+ * @param $raw_id string id of wikipage
+ * @param $rev string page revision, empty string for current
+ * @param $clean bool flag indicating that $raw_id should be cleaned. Only set to false
+ * when $id is guaranteed to have been cleaned already.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function wikiFN($raw_id,$rev='',$clean=true){
+ global $conf;
+
+ global $cache_wikifn;
+ $cache = & $cache_wikifn;
+
+ if (isset($cache[$raw_id]) && isset($cache[$raw_id][$rev])) {
+ return $cache[$raw_id][$rev];
+ }
+
+ $id = $raw_id;
+
+ if ($clean) $id = cleanID($id);
+ $id = str_replace(':','/',$id);
+ if(empty($rev)){
+ $fn = $conf['datadir'].'/'.utf8_encodeFN($id).'.txt';
+ }else{
+ $fn = $conf['olddir'].'/'.utf8_encodeFN($id).'.'.$rev.'.txt';
+ if($conf['compression']){
+ //test for extensions here, we want to read both compressions
+ if (@file_exists($fn . '.gz')){
+ $fn .= '.gz';
+ }else if(@file_exists($fn . '.bz2')){
+ $fn .= '.bz2';
+ }else{
+ //file doesnt exist yet, so we take the configured extension
+ $fn .= '.' . $conf['compression'];
+ }
+ }
+ }
+
+ if (!isset($cache[$raw_id])) { $cache[$raw_id] = array(); }
+ $cache[$raw_id][$rev] = $fn;
+ return $fn;
+}
+
+/**
+ * Returns the full path to the file for locking the page while editing.
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function wikiLockFN($id) {
+ global $conf;
+ return $conf['lockdir'].'/'.md5(cleanID($id)).'.lock';
+}
+
+
+/**
+ * returns the full path to the meta file specified by ID and extension
+ *
+ * The filename is URL encoded to protect Unicode chars
+ *
+ * @author Steven Danz <steven-danz at kc.rr.com>
+ */
+function metaFN($id,$ext){
+ global $conf;
+ $id = cleanID($id);
+ $id = str_replace(':','/',$id);
+ $fn = $conf['metadir'].'/'.utf8_encodeFN($id).$ext;
+ return $fn;
+}
+
+/**
+ * returns an array of full paths to all metafiles of a given ID
+ *
+ * @author Esther Brunner <esther at kaffeehaus.ch>
+ */
+function metaFiles($id){
+ $name = noNS($id);
+ $ns = getNS($id);
+ $dir = ($ns) ? metaFN($ns,'').'/' : metaFN($ns,'');
+ $files = array();
+
+ $dh = @opendir($dir);
+ if(!$dh) return $files;
+ while(($file = readdir($dh)) !== false){
+ if(strpos($file,$name.'.') === 0 && !is_dir($dir.$file))
+ $files[] = $dir.$file;
+ }
+ closedir($dh);
+
+ return $files;
+}
+
+/**
+ * returns the full path to the mediafile specified by ID
+ *
+ * The filename is URL encoded to protect Unicode chars
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function mediaFN($id){
+ global $conf;
+ $id = cleanID($id);
+ $id = str_replace(':','/',$id);
+ $fn = $conf['mediadir'].'/'.utf8_encodeFN($id);
+ return $fn;
+}
+
+/**
+ * Returns the full filepath to a localized textfile if local
+ * version isn't found the english one is returned
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function localeFN($id){
+ global $conf;
+ $file = DOKU_INC.'inc/lang/'.$conf['lang'].'/'.$id.'.txt';
+ if(!@file_exists($file)){
+ //fall back to english
+ $file = DOKU_INC.'inc/lang/en/'.$id.'.txt';
+ }
+ return $file;
+}
+
+/**
+ * Resolve relative paths in IDs
+ *
+ * Do not call directly use resolve_mediaid or resolve_pageid
+ * instead
+ *
+ * Partyly based on a cleanPath function found at
+ * http://www.php.net/manual/en/function.realpath.php#57016
+ *
+ * @author <bart at mediawave dot nl>
+ */
+function resolve_id($ns,$id,$clean=true){
+ global $conf;
+
+ // some pre cleaning for useslash:
+ if($conf['useslash']) $id = str_replace('/',':',$id);
+
+ // if the id starts with a dot we need to handle the
+ // relative stuff
+ if($id{0} == '.'){
+ // normalize initial dots without a colon
+ $id = preg_replace('/^(\.+)(?=[^:\.])/','\1:',$id);
+ // prepend the current namespace
+ $id = $ns.':'.$id;
+
+ // cleanup relatives
+ $result = array();
+ $pathA = explode(':', $id);
+ if (!$pathA[0]) $result[] = '';
+ foreach ($pathA AS $key => $dir) {
+ if ($dir == '..') {
+ if (end($result) == '..') {
+ $result[] = '..';
+ } elseif (!array_pop($result)) {
+ $result[] = '..';
+ }
+ } elseif ($dir && $dir != '.') {
+ $result[] = $dir;
+ }
+ }
+ if (!end($pathA)) $result[] = '';
+ $id = implode(':', $result);
+ }elseif($ns !== false && strpos($id,':') === false){
+ //if link contains no namespace. add current namespace (if any)
+ $id = $ns.':'.$id;
+ }
+
+ if($clean) $id = cleanID($id);
+ return $id;
+}
+
+/**
+ * Returns a full media id
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function resolve_mediaid($ns,&$page,&$exists){
+ $page = resolve_id($ns,$page);
+ $file = mediaFN($page);
+ $exists = @file_exists($file);
+}
+
+/**
+ * Returns a full page id
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function resolve_pageid($ns,&$page,&$exists){
+ global $conf;
+ $exists = false;
+
+ //keep hashlink if exists then clean both parts
+ if (strpos($page,'#')) {
+ list($page,$hash) = split('#',$page,2);
+ } else {
+ $hash = '';
+ }
+ $hash = cleanID($hash);
+ $page = resolve_id($ns,$page,false); // resolve but don't clean, yet
+
+ // get filename (calls clean itself)
+ $file = wikiFN($page);
+
+ // if ends with colon or slash we have a namespace link
+ if(substr($page,-1) == ':' || ($conf['useslash'] && substr($page,-1) == '/')){
+ if(page_exists($page.$conf['start'])){
+ // start page inside namespace
+ $page = $page.$conf['start'];
+ $exists = true;
+ }elseif(page_exists($page.noNS(cleanID($page)))){
+ // page named like the NS inside the NS
+ $page = $page.noNS(cleanID($page));
+ $exists = true;
+ }elseif(page_exists($page)){
+ // page like namespace exists
+ $page = $page;
+ $exists = true;
+ }else{
+ // fall back to default
+ $page = $page.$conf['start'];
+ }
+ }else{
+ //check alternative plural/nonplural form
+ if(!@file_exists($file)){
+ if( $conf['autoplural'] ){
+ if(substr($page,-1) == 's'){
+ $try = substr($page,0,-1);
+ }else{
+ $try = $page.'s';
+ }
+ if(page_exists($try)){
+ $page = $try;
+ $exists = true;
+ }
+ }
+ }else{
+ $exists = true;
+ }
+ }
+
+ // now make sure we have a clean page
+ $page = cleanID($page);
+
+ //add hash if any
+ if(!empty($hash)) $page .= '#'.$hash;
+}
+
+/**
+ * Returns the name of a cachefile from given data
+ *
+ * The needed directory is created by this function!
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @param string $data This data is used to create a unique md5 name
+ * @param string $ext This is appended to the filename if given
+ * @return string The filename of the cachefile
+ */
+function getCacheName($data,$ext=''){
+ global $conf;
+ $md5 = md5($data);
+ $file = $conf['cachedir'].'/'.$md5{0}.'/'.$md5.$ext;
+ io_makeFileDir($file);
+ return $file;
+}
+
+/**
+ * Checks a pageid against $conf['hidepages']
+ *
+ * @author Andreas Gohr <gohr at cosmocode.de>
+ */
+function isHiddenPage($id){
+ global $conf;
+ if(empty($conf['hidepages'])) return false;
+
+ if(preg_match('/'.$conf['hidepages'].'/ui',':'.$id)){
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Reverse of isHiddenPage
+ *
+ * @author Andreas Gohr <gohr at cosmocode.de>
+ */
+function isVisiblePage($id){
+ return !isHiddenPage($id);
+}
+
+/**
+ * Checks and sets HTTP headers for conditional HTTP requests
+ *
+ * @author Simon Willison <swillison at gmail.com>
+ * @link http://simon.incutio.com/archive/2003/04/23/conditionalGet
+ * @param timestamp $timestamp lastmodified time of the cache file
+ * @returns void or void with previously header() commands executed
+ */
+function http_conditionalRequest($timestamp){
+ // A PHP implementation of conditional get, see
+ // http://fishbowl.pastiche.org/archives/001132.html
+ $last_modified = substr(gmdate('r', $timestamp), 0, -5).'GMT';
+ $etag = '"'.md5($last_modified).'"';
+ // Send the headers
+ header("Last-Modified: $last_modified");
+ header("ETag: $etag");
+ // See if the client has provided the required headers
+ if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
+ $if_modified_since = stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']);
+ }else{
+ $if_modified_since = false;
+ }
+
+ if (isset($_SERVER['HTTP_IF_NONE_MATCH'])){
+ $if_none_match = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']);
+ }else{
+ $if_none_match = false;
+ }
+
+ if (!$if_modified_since && !$if_none_match){
+ return;
+ }
+
+ // At least one of the headers is there - check them
+ if ($if_none_match && $if_none_match != $etag) {
+ return; // etag is there but doesn't match
+ }
+
+ if ($if_modified_since && $if_modified_since != $last_modified) {
+ return; // if-modified-since is there but doesn't match
+ }
+
+ // Nothing has changed since their last request - serve a 304 and exit
+ header('HTTP/1.0 304 Not Modified');
+
+ // don't produce output, even if compression is on
+ ob_end_clean();
+ exit;
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parser/handler.php
===================================================================
--- site/trunk/www-root/wiki/inc/parser/handler.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parser/handler.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1706 +1,1706 @@
-<?php
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
-
-if (!defined('DOKU_PARSER_EOL')) define('DOKU_PARSER_EOL',"\n"); // add this to make handling test cases simpler
-
-class Doku_Handler {
-
- var $Renderer = NULL;
-
- var $CallWriter = NULL;
-
- var $calls = array();
-
- var $status = array(
- 'section' => false,
- 'section_edit_start' => -1,
- 'section_edit_level' => 1,
- 'section_edit_title' => ''
- );
-
- var $rewriteBlocks = true;
-
- function Doku_Handler() {
- $this->CallWriter = & new Doku_Handler_CallWriter($this);
- }
-
- function _addCall($handler, $args, $pos) {
- $call = array($handler,$args, $pos);
- $this->CallWriter->writeCall($call);
- }
-
- function addPluginCall($plugin, $args, $state, $pos) {
- $call = array('plugin',array($plugin, $args, $state), $pos);
- $this->CallWriter->writeCall($call);
- }
-
- function _finalize(){
-
- $this->CallWriter->finalise();
-
- if ( $this->status['section'] ) {
- $last_call = end($this->calls);
- array_push($this->calls,array('section_close',array(), $last_call[2]));
- if ($this->status['section_edit_start']>1) {
- // ignore last edit section if there is only one header
- array_push($this->calls,array('section_edit',array($this->status['section_edit_start'], 0, $this->status['section_edit_level'], $this->status['section_edit_title']), $last_call[2]));
- }
- }
-
- if ( $this->rewriteBlocks ) {
- $B = & new Doku_Handler_Block();
- $this->calls = $B->process($this->calls);
- }
-
- trigger_event('PARSER_HANDLER_DONE',$this);
-
- array_unshift($this->calls,array('document_start',array(),0));
- $last_call = end($this->calls);
- array_push($this->calls,array('document_end',array(),$last_call[2]));
- }
-
- function fetch() {
- $call = each($this->calls);
- if ( $call ) {
- return $call['value'];
- }
- return false;
- }
-
-
- /**
- * Special plugin handler
- *
- * This handler is called for all modes starting with 'plugin_'.
- * An additional parameter with the plugin name is passed
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function plugin($match, $state, $pos, $pluginname){
- $data = array($match);
- $plugin =& plugin_load('syntax',$pluginname);
- if($plugin != null){
- $data = $plugin->handle($match, $state, $pos, $this);
- }
- $this->addPluginCall($pluginname,$data,$state,$pos);
- return true;
- }
-
- function base($match, $state, $pos) {
- switch ( $state ) {
- case DOKU_LEXER_UNMATCHED:
- $this->_addCall('cdata',array($match), $pos);
- return true;
- break;
-
- }
- }
-
- function header($match, $state, $pos) {
- global $conf;
-
- // get level and title
- $title = trim($match);
- $level = 7 - strspn($title,'=');
- if($level < 1) $level = 1;
- $title = trim($title,'=');
- $title = trim($title);
-
- if ($this->status['section']) $this->_addCall('section_close',array(),$pos);
-
- if ($level<=$conf['maxseclevel']) {
- $this->_addCall('section_edit',array($this->status['section_edit_start'], $pos-1, $this->status['section_edit_level'], $this->status['section_edit_title']), $pos);
- $this->status['section_edit_start'] = $pos;
- $this->status['section_edit_level'] = $level;
- $this->status['section_edit_title'] = $title;
- }
-
- $this->_addCall('header',array($title,$level,$pos), $pos);
-
- $this->_addCall('section_open',array($level),$pos);
- $this->status['section'] = true;
- return true;
- }
-
- function notoc($match, $state, $pos) {
- $this->_addCall('notoc',array(),$pos);
- return true;
- }
-
- function nocache($match, $state, $pos) {
- $this->_addCall('nocache',array(),$pos);
- return true;
- }
-
- function linebreak($match, $state, $pos) {
- $this->_addCall('linebreak',array(),$pos);
- return true;
- }
-
- function eol($match, $state, $pos) {
- $this->_addCall('eol',array(),$pos);
- return true;
- }
-
- function hr($match, $state, $pos) {
- $this->_addCall('hr',array(),$pos);
- return true;
- }
-
- function _nestingTag($match, $state, $pos, $name) {
- switch ( $state ) {
- case DOKU_LEXER_ENTER:
- $this->_addCall($name.'_open', array(), $pos);
- break;
- case DOKU_LEXER_EXIT:
- $this->_addCall($name.'_close', array(), $pos);
- break;
- case DOKU_LEXER_UNMATCHED:
- $this->_addCall('cdata',array($match), $pos);
- break;
- }
- }
-
- function strong($match, $state, $pos) {
- $this->_nestingTag($match, $state, $pos, 'strong');
- return true;
- }
-
- function emphasis($match, $state, $pos) {
- $this->_nestingTag($match, $state, $pos, 'emphasis');
- return true;
- }
-
- function underline($match, $state, $pos) {
- $this->_nestingTag($match, $state, $pos, 'underline');
- return true;
- }
-
- function monospace($match, $state, $pos) {
- $this->_nestingTag($match, $state, $pos, 'monospace');
- return true;
- }
-
- function subscript($match, $state, $pos) {
- $this->_nestingTag($match, $state, $pos, 'subscript');
- return true;
- }
-
- function superscript($match, $state, $pos) {
- $this->_nestingTag($match, $state, $pos, 'superscript');
- return true;
- }
-
- function deleted($match, $state, $pos) {
- $this->_nestingTag($match, $state, $pos, 'deleted');
- return true;
- }
-
-
- function footnote($match, $state, $pos) {
-// $this->_nestingTag($match, $state, $pos, 'footnote');
- if (!isset($this->_footnote)) $this->_footnote = false;
-
- switch ( $state ) {
- case DOKU_LEXER_ENTER:
- // footnotes can not be nested - however due to limitations in lexer it can't be prevented
- // we will still enter a new footnote mode, we just do nothing
- if ($this->_footnote) {
- $this->_addCall('cdata',array($match), $pos);
- break;
- }
-
- $this->_footnote = true;
-
- $ReWriter = & new Doku_Handler_Nest($this->CallWriter,'footnote_close');
- $this->CallWriter = & $ReWriter;
- $this->_addCall('footnote_open', array(), $pos);
- break;
- case DOKU_LEXER_EXIT:
- // check whether we have already exitted the footnote mode, can happen if the modes were nested
- if (!$this->_footnote) {
- $this->_addCall('cdata',array($match), $pos);
- break;
- }
-
- $this->_footnote = false;
-
- $this->_addCall('footnote_close', array(), $pos);
- $this->CallWriter->process();
- $ReWriter = & $this->CallWriter;
- $this->CallWriter = & $ReWriter->CallWriter;
- break;
- case DOKU_LEXER_UNMATCHED:
- $this->_addCall('cdata', array($match), $pos);
- break;
- }
- return true;
- }
-
- function listblock($match, $state, $pos) {
- switch ( $state ) {
- case DOKU_LEXER_ENTER:
- $ReWriter = & new Doku_Handler_List($this->CallWriter);
- $this->CallWriter = & $ReWriter;
- $this->_addCall('list_open', array($match), $pos);
- break;
- case DOKU_LEXER_EXIT:
- $this->_addCall('list_close', array(), $pos);
- $this->CallWriter->process();
- $ReWriter = & $this->CallWriter;
- $this->CallWriter = & $ReWriter->CallWriter;
- break;
- case DOKU_LEXER_MATCHED:
- $this->_addCall('list_item', array($match), $pos);
- break;
- case DOKU_LEXER_UNMATCHED:
- $this->_addCall('cdata', array($match), $pos);
- break;
- }
- return true;
- }
-
- function unformatted($match, $state, $pos) {
- if ( $state == DOKU_LEXER_UNMATCHED ) {
- $this->_addCall('unformatted',array($match), $pos);
- }
- return true;
- }
-
- function php($match, $state, $pos) {
- global $conf;
- if ( $state == DOKU_LEXER_UNMATCHED ) {
- $this->_addCall('php',array($match), $pos);
- }
- return true;
- }
-
- function phpblock($match, $state, $pos) {
- global $conf;
- if ( $state == DOKU_LEXER_UNMATCHED ) {
- $this->_addCall('phpblock',array($match), $pos);
- }
- return true;
- }
-
- function html($match, $state, $pos) {
- global $conf;
- if ( $state == DOKU_LEXER_UNMATCHED ) {
- $this->_addCall('html',array($match), $pos);
- }
- return true;
- }
-
- function htmlblock($match, $state, $pos) {
- global $conf;
- if ( $state == DOKU_LEXER_UNMATCHED ) {
- $this->_addCall('htmlblock',array($match), $pos);
- }
- return true;
- }
-
- function preformatted($match, $state, $pos) {
- switch ( $state ) {
- case DOKU_LEXER_ENTER:
- $ReWriter = & new Doku_Handler_Preformatted($this->CallWriter);
- $this->CallWriter = & $ReWriter;
- $this->_addCall('preformatted_start',array(), $pos);
- break;
- case DOKU_LEXER_EXIT:
- $this->_addCall('preformatted_end',array(), $pos);
- $this->CallWriter->process();
- $ReWriter = & $this->CallWriter;
- $this->CallWriter = & $ReWriter->CallWriter;
- break;
- case DOKU_LEXER_MATCHED:
- $this->_addCall('preformatted_newline',array(), $pos);
- break;
- case DOKU_LEXER_UNMATCHED:
- $this->_addCall('preformatted_content',array($match), $pos);
- break;
- }
-
- return true;
- }
-
- function file($match, $state, $pos) {
- if ( $state == DOKU_LEXER_UNMATCHED ) {
- $this->_addCall('file',array($match), $pos);
- }
- return true;
- }
-
- function quote($match, $state, $pos) {
-
- switch ( $state ) {
-
- case DOKU_LEXER_ENTER:
- $ReWriter = & new Doku_Handler_Quote($this->CallWriter);
- $this->CallWriter = & $ReWriter;
- $this->_addCall('quote_start',array($match), $pos);
- break;
-
- case DOKU_LEXER_EXIT:
- $this->_addCall('quote_end',array(), $pos);
- $this->CallWriter->process();
- $ReWriter = & $this->CallWriter;
- $this->CallWriter = & $ReWriter->CallWriter;
- break;
-
- case DOKU_LEXER_MATCHED:
- $this->_addCall('quote_newline',array($match), $pos);
- break;
-
- case DOKU_LEXER_UNMATCHED:
- $this->_addCall('cdata',array($match), $pos);
- break;
-
- }
-
- return true;
- }
-
- function code($match, $state, $pos) {
- switch ( $state ) {
- case DOKU_LEXER_UNMATCHED:
- $matches = preg_split('/>/u',$match,2);
- $matches[0] = trim($matches[0]);
- if ( trim($matches[0]) == '' ) {
- $matches[0] = NULL;
- }
- # $matches[0] contains name of programming language
- # if available, We shortcut html here.
- if($matches[0] == 'html') $matches[0] = 'html4strict';
- $this->_addCall(
- 'code',
- array($matches[1],$matches[0]),
- $pos
- );
- break;
- }
- return true;
- }
-
- function acronym($match, $state, $pos) {
- $this->_addCall('acronym',array($match), $pos);
- return true;
- }
-
- function smiley($match, $state, $pos) {
- $this->_addCall('smiley',array($match), $pos);
- return true;
- }
-
- function wordblock($match, $state, $pos) {
- $this->_addCall('wordblock',array($match), $pos);
- return true;
- }
-
- function entity($match, $state, $pos) {
- $this->_addCall('entity',array($match), $pos);
- return true;
- }
-
- function multiplyentity($match, $state, $pos) {
- preg_match_all('/\d+/',$match,$matches);
- $this->_addCall('multiplyentity',array($matches[0][0],$matches[0][1]), $pos);
- return true;
- }
-
- function singlequoteopening($match, $state, $pos) {
- $this->_addCall('singlequoteopening',array(), $pos);
- return true;
- }
-
- function singlequoteclosing($match, $state, $pos) {
- $this->_addCall('singlequoteclosing',array(), $pos);
- return true;
- }
-
- function apostrophe($match, $state, $pos) {
- $this->_addCall('apostrophe',array(), $pos);
- return true;
- }
-
- function doublequoteopening($match, $state, $pos) {
- $this->_addCall('doublequoteopening',array(), $pos);
- return true;
- }
-
- function doublequoteclosing($match, $state, $pos) {
- $this->_addCall('doublequoteclosing',array(), $pos);
- return true;
- }
-
- function camelcaselink($match, $state, $pos) {
- $this->_addCall('camelcaselink',array($match), $pos);
- return true;
- }
-
- /*
- */
- function internallink($match, $state, $pos) {
- // Strip the opening and closing markup
- $link = preg_replace(array('/^\[\[/','/\]\]$/u'),'',$match);
-
- // Split title from URL
- $link = preg_split('/\|/u',$link,2);
- if ( !isset($link[1]) ) {
- $link[1] = NULL;
- } else if ( preg_match('/^\{\{[^\}]+\}\}$/',$link[1]) ) {
- // If the title is an image, convert it to an array containing the image details
- $link[1] = Doku_Handler_Parse_Media($link[1]);
- }
- $link[0] = trim($link[0]);
-
- //decide which kind of link it is
-
- if ( preg_match('/^[a-zA-Z0-9\.]+>{1}.*$/u',$link[0]) ) {
- // Interwiki
- $interwiki = preg_split('/>/u',$link[0]);
- $this->_addCall(
- 'interwikilink',
- array($link[0],$link[1],strtolower($interwiki[0]),$interwiki[1]),
- $pos
- );
- }elseif ( preg_match('/^\\\\\\\\[\w.:?\-;,]+?\\\\/u',$link[0]) ) {
- // Windows Share
- $this->_addCall(
- 'windowssharelink',
- array($link[0],$link[1]),
- $pos
- );
- }elseif ( preg_match('#^([a-z0-9\-\.+]+?)://#i',$link[0]) ) {
- // external link (accepts all protocols)
- $this->_addCall(
- 'externallink',
- array($link[0],$link[1]),
- $pos
- );
- }elseif ( preg_match('<'.PREG_PATTERN_VALID_EMAIL.'>',$link[0]) ) {
- // E-Mail (pattern above is defined in inc/mail.php)
- $this->_addCall(
- 'emaillink',
- array($link[0],$link[1]),
- $pos
- );
- }elseif ( preg_match('!^#.+!',$link[0]) ){
- // local link
- $this->_addCall(
- 'locallink',
- array(substr($link[0],1),$link[1]),
- $pos
- );
- }else{
- // internal link
- $this->_addCall(
- 'internallink',
- array($link[0],$link[1]),
- $pos
- );
- }
-
- return true;
- }
-
- function filelink($match, $state, $pos) {
- $this->_addCall('filelink',array($match, NULL), $pos);
- return true;
- }
-
- function windowssharelink($match, $state, $pos) {
- $this->_addCall('windowssharelink',array($match, NULL), $pos);
- return true;
- }
-
- function media($match, $state, $pos) {
- $p = Doku_Handler_Parse_Media($match);
-
- $this->_addCall(
- $p['type'],
- array($p['src'], $p['title'], $p['align'], $p['width'],
- $p['height'], $p['cache'], $p['linking']),
- $pos
- );
- return true;
- }
-
- function rss($match, $state, $pos) {
- $link = preg_replace(array('/^\{\{rss>/','/\}\}$/'),'',$match);
-
- // get params
- list($link,$params) = explode(' ',$link,2);
-
- $p = array();
- if(preg_match('/\b(\d+)\b/',$params,$match)){
- $p['max'] = $match[1];
- }else{
- $p['max'] = 8;
- }
- $p['reverse'] = (preg_match('/rev/',$params));
- $p['author'] = (preg_match('/\b(by|author)/',$params));
- $p['date'] = (preg_match('/\b(date)/',$params));
- $p['details'] = (preg_match('/\b(desc|detail)/',$params));
-
- if (preg_match('/\b(\d+)([dhm])\b/',$params,$match)) {
- $period = array('d' => 86400, 'h' => 3600, 'm' => 60);
- $p['refresh'] = max(600,$match[1]*$period[$match[2]]); // n * period in seconds, minimum 10 minutes
- } else {
- $p['refresh'] = 14400; // default to 4 hours
- }
-
- $this->_addCall('rss',array($link,$p),$pos);
- return true;
- }
-
- function externallink($match, $state, $pos) {
- $url = $match;
- $title = null;
-
- // add protocol on simple short URLs
- if(substr($url,0,3) == 'ftp' && (substr($url,0,6) != 'ftp://')){
- $title = $url;
- $url = 'ftp://'.$url;
- }
- if(substr($url,0,3) == 'www' && (substr($url,0,7) != 'http://')){
- $title = $url;
- $url = 'http://'.$url;
- }
-
- $this->_addCall('externallink',array($url, $title), $pos);
- return true;
- }
-
- function emaillink($match, $state, $pos) {
- $email = preg_replace(array('/^</','/>$/'),'',$match);
- $this->_addCall('emaillink',array($email, NULL), $pos);
- return true;
- }
-
- function table($match, $state, $pos) {
- switch ( $state ) {
-
- case DOKU_LEXER_ENTER:
-
- $ReWriter = & new Doku_Handler_Table($this->CallWriter);
- $this->CallWriter = & $ReWriter;
-
- $this->_addCall('table_start', array(), $pos);
- //$this->_addCall('table_row', array(), $pos);
- if ( trim($match) == '^' ) {
- $this->_addCall('tableheader', array(), $pos);
- } else {
- $this->_addCall('tablecell', array(), $pos);
- }
- break;
-
- case DOKU_LEXER_EXIT:
- $this->_addCall('table_end', array(), $pos);
- $this->CallWriter->process();
- $ReWriter = & $this->CallWriter;
- $this->CallWriter = & $ReWriter->CallWriter;
- break;
-
- case DOKU_LEXER_UNMATCHED:
- if ( trim($match) != '' ) {
- $this->_addCall('cdata',array($match), $pos);
- }
- break;
-
- case DOKU_LEXER_MATCHED:
- if ( $match == ' ' ){
- $this->_addCall('cdata', array($match), $pos);
- } else if ( preg_match('/\t+/',$match) ) {
- $this->_addCall('table_align', array($match), $pos);
- } else if ( preg_match('/ {2,}/',$match) ) {
- $this->_addCall('table_align', array($match), $pos);
- } else if ( $match == "\n|" ) {
- $this->_addCall('table_row', array(), $pos);
- $this->_addCall('tablecell', array(), $pos);
- } else if ( $match == "\n^" ) {
- $this->_addCall('table_row', array(), $pos);
- $this->_addCall('tableheader', array(), $pos);
- } else if ( $match == '|' ) {
- $this->_addCall('tablecell', array(), $pos);
- } else if ( $match == '^' ) {
- $this->_addCall('tableheader', array(), $pos);
- }
- break;
- }
- return true;
- }
-}
-
-//------------------------------------------------------------------------
-function Doku_Handler_Parse_Media($match) {
-
- // Strip the opening and closing markup
- $link = preg_replace(array('/^\{\{/','/\}\}$/u'),'',$match);
-
- // Split title from URL
- $link = preg_split('/\|/u',$link,2);
-
-
- // Check alignment
- $ralign = (bool)preg_match('/^ /',$link[0]);
- $lalign = (bool)preg_match('/ $/',$link[0]);
-
- // Logic = what's that ;)...
- if ( $lalign & $ralign ) {
- $align = 'center';
- } else if ( $ralign ) {
- $align = 'right';
- } else if ( $lalign ) {
- $align = 'left';
- } else {
- $align = NULL;
- }
-
- // The title...
- if ( !isset($link[1]) ) {
- $link[1] = NULL;
- }
-
- //remove aligning spaces
- $link[0] = trim($link[0]);
-
- //split into src and parameters (using the very last questionmark)
- $pos = strrpos($link[0], '?');
- if($pos !== false){
- $src = substr($link[0],0,$pos);
- $param = substr($link[0],$pos+1);
- }else{
- $src = $link[0];
- $param = '';
- }
-
- //parse width and height
- if(preg_match('#(\d+)(x(\d+))?#i',$param,$size)){
- ($size[1]) ? $w = $size[1] : $w = NULL;
- ($size[3]) ? $h = $size[3] : $h = NULL;
- } else {
- $w = NULL;
- $h = NULL;
- }
-
- //get linking command
- if(preg_match('/nolink/i',$param)){
- $linking = 'nolink';
- }else if(preg_match('/direct/i',$param)){
- $linking = 'direct';
- }else if(preg_match('/linkonly/i',$param)){
- $linking = 'linkonly';
- }else{
- $linking = 'details';
- }
-
- //get caching command
- if (preg_match('/(nocache|recache)/i',$param,$cachemode)){
- $cache = $cachemode[1];
- }else{
- $cache = 'cache';
- }
-
- // Check whether this is a local or remote image
- if ( preg_match('#^(https?|ftp)#i',$src) ) {
- $call = 'externalmedia';
- } else {
- $call = 'internalmedia';
- }
-
- $params = array(
- 'type'=>$call,
- 'src'=>$src,
- 'title'=>$link[1],
- 'align'=>$align,
- 'width'=>$w,
- 'height'=>$h,
- 'cache'=>$cache,
- 'linking'=>$linking,
- );
-
- return $params;
-}
-
-//------------------------------------------------------------------------
-class Doku_Handler_CallWriter {
-
- var $Handler;
-
- function Doku_Handler_CallWriter(& $Handler) {
- $this->Handler = & $Handler;
- }
-
- function writeCall($call) {
- $this->Handler->calls[] = $call;
- }
-
- function writeCalls($calls) {
- $this->Handler->calls = array_merge($this->Handler->calls, $calls);
- }
-
- // function is required, but since this call writer is first/highest in
- // the chain it is not required to do anything
- function finalise() {
- }
-}
-
-//------------------------------------------------------------------------
-/**
- * Generic call writer class to handle nesting of rendering instructions
- * within a render instruction. Also see nest() method of renderer base class
- *
- * @author Chris Smith <chris at jalakai.co.uk>
- */
-class Doku_Handler_Nest {
-
- var $CallWriter;
- var $calls = array();
-
- var $closingInstruction;
-
- /**
- * constructor
- *
- * @param object $CallWriter the renderers current call writer
- * @param string $close closing instruction name, this is required to properly terminate the
- * syntax mode if the document ends without a closing pattern
- */
- function Doku_Handler_Nest(& $CallWriter, $close="nest_close") {
- $this->CallWriter = & $CallWriter;
-
- $this->closingInstruction = $close;
- }
-
- function writeCall($call) {
- $this->calls[] = $call;
- }
-
- function writeCalls($calls) {
- $this->calls = array_merge($this->calls, $calls);
- }
-
- function finalise() {
- $last_call = end($this->calls);
- $this->writeCall(array($this->closingInstruction,array(), $last_call[2]));
-
- $this->process();
- $this->CallWriter->finalise();
- }
-
- function process() {
- // merge consecutive cdata
- $unmerged_calls = $this->calls;
- $this->calls = array();
-
- foreach ($unmerged_calls as $call) $this->addCall($call);
-
- $first_call = reset($this->calls);
- $this->CallWriter->writeCall(array("nest", array($this->calls), $first_call[2]));
- }
-
- function addCall($call) {
- $key = count($this->calls);
- if ($key and ($call[0] == 'cdata') and ($this->calls[$key-1][0] == 'cdata')) {
- $this->calls[$key-1][1][0] .= $call[1][0];
- } else {
- $this->calls[] = $call;
- }
- }
-}
-
-class Doku_Handler_List {
-
- var $CallWriter;
-
- var $calls = array();
- var $listCalls = array();
- var $listStack = array();
-
- function Doku_Handler_List(& $CallWriter) {
- $this->CallWriter = & $CallWriter;
- }
-
- function writeCall($call) {
- $this->calls[] = $call;
- }
-
- // Probably not needed but just in case...
- function writeCalls($calls) {
- $this->calls = array_merge($this->calls, $calls);
-# $this->CallWriter->writeCalls($this->calls);
- }
-
- function finalise() {
- $last_call = end($this->calls);
- $this->writeCall(array('list_close',array(), $last_call[2]));
-
- $this->process();
- $this->CallWriter->finalise();
- }
-
- //------------------------------------------------------------------------
- function process() {
-
- foreach ( $this->calls as $call ) {
- switch ($call[0]) {
- case 'list_item':
- $this->listOpen($call);
- break;
- case 'list_open':
- $this->listStart($call);
- break;
- case 'list_close':
- $this->listEnd($call);
- break;
- default:
- $this->listContent($call);
- break;
- }
- }
-
- $this->CallWriter->writeCalls($this->listCalls);
- }
-
- //------------------------------------------------------------------------
- function listStart($call) {
- $depth = $this->interpretSyntax($call[1][0], $listType);
-
- $this->initialDepth = $depth;
- $this->listStack[] = array($listType, $depth);
-
- $this->listCalls[] = array('list'.$listType.'_open',array(),$call[2]);
- $this->listCalls[] = array('listitem_open',array(1),$call[2]);
- $this->listCalls[] = array('listcontent_open',array(),$call[2]);
- }
-
- //------------------------------------------------------------------------
- function listEnd($call) {
- $closeContent = true;
-
- while ( $list = array_pop($this->listStack) ) {
- if ( $closeContent ) {
- $this->listCalls[] = array('listcontent_close',array(),$call[2]);
- $closeContent = false;
- }
- $this->listCalls[] = array('listitem_close',array(),$call[2]);
- $this->listCalls[] = array('list'.$list[0].'_close', array(), $call[2]);
- }
- }
-
- //------------------------------------------------------------------------
- function listOpen($call) {
- $depth = $this->interpretSyntax($call[1][0], $listType);
- $end = end($this->listStack);
-
- // Not allowed to be shallower than initialDepth
- if ( $depth < $this->initialDepth ) {
- $depth = $this->initialDepth;
- }
-
- //------------------------------------------------------------------------
- if ( $depth == $end[1] ) {
-
- // Just another item in the list...
- if ( $listType == $end[0] ) {
- $this->listCalls[] = array('listcontent_close',array(),$call[2]);
- $this->listCalls[] = array('listitem_close',array(),$call[2]);
- $this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
- $this->listCalls[] = array('listcontent_open',array(),$call[2]);
-
- // Switched list type...
- } else {
-
- $this->listCalls[] = array('listcontent_close',array(),$call[2]);
- $this->listCalls[] = array('listitem_close',array(),$call[2]);
- $this->listCalls[] = array('list'.$end[0].'_close', array(), $call[2]);
- $this->listCalls[] = array('list'.$listType.'_open', array(), $call[2]);
- $this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
- $this->listCalls[] = array('listcontent_open',array(),$call[2]);
-
- array_pop($this->listStack);
- $this->listStack[] = array($listType, $depth);
- }
-
- //------------------------------------------------------------------------
- // Getting deeper...
- } else if ( $depth > $end[1] ) {
-
- $this->listCalls[] = array('listcontent_close',array(),$call[2]);
- $this->listCalls[] = array('list'.$listType.'_open', array(), $call[2]);
- $this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
- $this->listCalls[] = array('listcontent_open',array(),$call[2]);
-
- $this->listStack[] = array($listType, $depth);
-
- //------------------------------------------------------------------------
- // Getting shallower ( $depth < $end[1] )
- } else {
- $this->listCalls[] = array('listcontent_close',array(),$call[2]);
- $this->listCalls[] = array('listitem_close',array(),$call[2]);
- $this->listCalls[] = array('list'.$end[0].'_close',array(),$call[2]);
-
- // Throw away the end - done
- array_pop($this->listStack);
-
- while (1) {
- $end = end($this->listStack);
-
- if ( $end[1] <= $depth ) {
-
- // Normalize depths
- $depth = $end[1];
-
- $this->listCalls[] = array('listitem_close',array(),$call[2]);
-
- if ( $end[0] == $listType ) {
- $this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
- $this->listCalls[] = array('listcontent_open',array(),$call[2]);
-
- } else {
- // Switching list type...
- $this->listCalls[] = array('list'.$end[0].'_close', array(), $call[2]);
- $this->listCalls[] = array('list'.$listType.'_open', array(), $call[2]);
- $this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
- $this->listCalls[] = array('listcontent_open',array(),$call[2]);
-
- array_pop($this->listStack);
- $this->listStack[] = array($listType, $depth);
- }
-
- break;
-
- // Haven't dropped down far enough yet.... ( $end[1] > $depth )
- } else {
-
- $this->listCalls[] = array('listitem_close',array(),$call[2]);
- $this->listCalls[] = array('list'.$end[0].'_close',array(),$call[2]);
-
- array_pop($this->listStack);
-
- }
-
- }
-
- }
- }
-
- //------------------------------------------------------------------------
- function listContent($call) {
- $this->listCalls[] = $call;
- }
-
- //------------------------------------------------------------------------
- function interpretSyntax($match, & $type) {
- if ( substr($match,-1) == '*' ) {
- $type = 'u';
- } else {
- $type = 'o';
- }
- return count(explode(' ',str_replace("\t",' ',$match)));
- }
-}
-
-//------------------------------------------------------------------------
-class Doku_Handler_Preformatted {
-
- var $CallWriter;
-
- var $calls = array();
- var $pos;
- var $text ='';
-
-
-
- function Doku_Handler_Preformatted(& $CallWriter) {
- $this->CallWriter = & $CallWriter;
- }
-
- function writeCall($call) {
- $this->calls[] = $call;
- }
-
- // Probably not needed but just in case...
- function writeCalls($calls) {
- $this->calls = array_merge($this->calls, $calls);
-# $this->CallWriter->writeCalls($this->calls);
- }
-
- function finalise() {
- $last_call = end($this->calls);
- $this->writeCall(array('preformatted_end',array(), $last_call[2]));
-
- $this->process();
- $this->CallWriter->finalise();
- }
-
- function process() {
- foreach ( $this->calls as $call ) {
- switch ($call[0]) {
- case 'preformatted_start':
- $this->pos = $call[2];
- break;
- case 'preformatted_newline':
- $this->text .= "\n";
- break;
- case 'preformatted_content':
- $this->text .= $call[1][0];
- break;
- case 'preformatted_end':
- if (trim($this->text)) {
- $this->CallWriter->writeCall(array('preformatted',array($this->text),$this->pos));
- }
- break;
- }
- }
- }
-
-}
-
-//------------------------------------------------------------------------
-class Doku_Handler_Quote {
-
- var $CallWriter;
-
- var $calls = array();
-
- var $quoteCalls = array();
-
- function Doku_Handler_Quote(& $CallWriter) {
- $this->CallWriter = & $CallWriter;
- }
-
- function writeCall($call) {
- $this->calls[] = $call;
- }
-
- // Probably not needed but just in case...
- function writeCalls($calls) {
- $this->calls = array_merge($this->calls, $calls);
- }
-
- function finalise() {
- $last_call = end($this->calls);
- $this->writeCall(array('quote_end',array(), $last_call[2]));
-
- $this->process();
- $this->CallWriter->finalise();
- }
-
- function process() {
-
- $quoteDepth = 1;
-
- foreach ( $this->calls as $call ) {
- switch ($call[0]) {
-
- case 'quote_start':
-
- $this->quoteCalls[] = array('quote_open',array(),$call[2]);
-
- case 'quote_newline':
-
- $quoteLength = $this->getDepth($call[1][0]);
-
- if ( $quoteLength > $quoteDepth ) {
- $quoteDiff = $quoteLength - $quoteDepth;
- for ( $i = 1; $i <= $quoteDiff; $i++ ) {
- $this->quoteCalls[] = array('quote_open',array(),$call[2]);
- }
- } else if ( $quoteLength < $quoteDepth ) {
- $quoteDiff = $quoteDepth - $quoteLength;
- for ( $i = 1; $i <= $quoteDiff; $i++ ) {
- $this->quoteCalls[] = array('quote_close',array(),$call[2]);
- }
- } else {
- if ($call[0] != 'quote_start') $this->quoteCalls[] = array('linebreak',array(),$call[2]);
- }
-
- $quoteDepth = $quoteLength;
-
- break;
-
- case 'quote_end':
-
- if ( $quoteDepth > 1 ) {
- $quoteDiff = $quoteDepth - 1;
- for ( $i = 1; $i <= $quoteDiff; $i++ ) {
- $this->quoteCalls[] = array('quote_close',array(),$call[2]);
- }
- }
-
- $this->quoteCalls[] = array('quote_close',array(),$call[2]);
-
- $this->CallWriter->writeCalls($this->quoteCalls);
- break;
-
- default:
- $this->quoteCalls[] = $call;
- break;
- }
- }
- }
-
- function getDepth($marker) {
- preg_match('/>{1,}/', $marker, $matches);
- $quoteLength = strlen($matches[0]);
- return $quoteLength;
- }
-}
-
-//------------------------------------------------------------------------
-class Doku_Handler_Table {
-
- var $CallWriter;
-
- var $calls = array();
- var $tableCalls = array();
- var $maxCols = 0;
- var $maxRows = 1;
- var $currentCols = 0;
- var $firstCell = false;
- var $lastCellType = 'tablecell';
-
- function Doku_Handler_Table(& $CallWriter) {
- $this->CallWriter = & $CallWriter;
- }
-
- function writeCall($call) {
- $this->calls[] = $call;
- }
-
- // Probably not needed but just in case...
- function writeCalls($calls) {
- $this->calls = array_merge($this->calls, $calls);
- }
-
- function finalise() {
- $last_call = end($this->calls);
- $this->writeCall(array('table_end',array(), $last_call[2]));
-
- $this->process();
- $this->CallWriter->finalise();
- }
-
- //------------------------------------------------------------------------
- function process() {
- foreach ( $this->calls as $call ) {
- switch ( $call[0] ) {
- case 'table_start':
- $this->tableStart($call);
- break;
- case 'table_row':
- $this->tableRowClose(array('tablerow_close',$call[1],$call[2]));
- $this->tableRowOpen(array('tablerow_open',$call[1],$call[2]));
- break;
- case 'tableheader':
- case 'tablecell':
- $this->tableCell($call);
- break;
- case 'table_end':
- $this->tableRowClose(array('tablerow_close',$call[1],$call[2]));
- $this->tableEnd($call);
- break;
- default:
- $this->tableDefault($call);
- break;
- }
- }
- $this->CallWriter->writeCalls($this->tableCalls);
- }
-
- function tableStart($call) {
- $this->tableCalls[] = array('table_open',array(),$call[2]);
- $this->tableCalls[] = array('tablerow_open',array(),$call[2]);
- $this->firstCell = true;
- }
-
- function tableEnd($call) {
- $this->tableCalls[] = array('table_close',array(),$call[2]);
- $this->finalizeTable();
- }
-
- function tableRowOpen($call) {
- $this->tableCalls[] = $call;
- $this->currentCols = 0;
- $this->firstCell = true;
- $this->lastCellType = 'tablecell';
- $this->maxRows++;
- }
-
- function tableRowClose($call) {
- // Strip off final cell opening and anything after it
- while ( $discard = array_pop($this->tableCalls ) ) {
-
- if ( $discard[0] == 'tablecell_open' || $discard[0] == 'tableheader_open') {
-
- // Its a spanning element - put it back and close it
- if ( $discard[1][0] > 1 ) {
-
- $this->tableCalls[] = $discard;
- if ( strstr($discard[0],'cell') ) {
- $name = 'tablecell';
- } else {
- $name = 'tableheader';
- }
- $this->tableCalls[] = array($name.'_close',array(),$call[2]);
- }
-
- break;
- }
- }
- $this->tableCalls[] = $call;
-
- if ( $this->currentCols > $this->maxCols ) {
- $this->maxCols = $this->currentCols;
- }
- }
-
- function tableCell($call) {
- if ( !$this->firstCell ) {
-
- // Increase the span
- $lastCall = end($this->tableCalls);
-
- // A cell call which follows an open cell means an empty cell so span
- if ( $lastCall[0] == 'tablecell_open' || $lastCall[0] == 'tableheader_open' ) {
- $this->tableCalls[] = array('colspan',array(),$call[2]);
-
- }
-
- $this->tableCalls[] = array($this->lastCellType.'_close',array(),$call[2]);
- $this->tableCalls[] = array($call[0].'_open',array(1,NULL),$call[2]);
- $this->lastCellType = $call[0];
-
- } else {
-
- $this->tableCalls[] = array($call[0].'_open',array(1,NULL),$call[2]);
- $this->lastCellType = $call[0];
- $this->firstCell = false;
-
- }
-
- $this->currentCols++;
- }
-
- function tableDefault($call) {
- $this->tableCalls[] = $call;
- }
-
- function finalizeTable() {
-
- // Add the max cols and rows to the table opening
- if ( $this->tableCalls[0][0] == 'table_open' ) {
- // Adjust to num cols not num col delimeters
- $this->tableCalls[0][1][] = $this->maxCols - 1;
- $this->tableCalls[0][1][] = $this->maxRows;
- } else {
- trigger_error('First element in table call list is not table_open');
- }
-
- $lastRow = 0;
- $lastCell = 0;
- $toDelete = array();
-
- // Look for the colspan elements and increment the colspan on the
- // previous non-empty opening cell. Once done, delete all the cells
- // that contain colspans
- foreach ( $this->tableCalls as $key => $call ) {
-
- if ( $call[0] == 'tablerow_open' ) {
-
- $lastRow = $key;
-
- } else if ( $call[0] == 'tablecell_open' || $call[0] == 'tableheader_open' ) {
-
- $lastCell = $key;
-
- } else if ( $call[0] == 'table_align' ) {
-
- // If the previous element was a cell open, align right
- if ( $this->tableCalls[$key-1][0] == 'tablecell_open' || $this->tableCalls[$key-1][0] == 'tableheader_open' ) {
- $this->tableCalls[$key-1][1][1] = 'right';
-
- // If the next element if the close of an element, align either center or left
- } else if ( $this->tableCalls[$key+1][0] == 'tablecell_close' || $this->tableCalls[$key+1][0] == 'tableheader_close' ) {
- if ( $this->tableCalls[$lastCell][1][1] == 'right' ) {
- $this->tableCalls[$lastCell][1][1] = 'center';
- } else {
- $this->tableCalls[$lastCell][1][1] = 'left';
- }
-
- }
-
- // Now convert the whitespace back to cdata
- $this->tableCalls[$key][0] = 'cdata';
-
- } else if ( $call[0] == 'colspan' ) {
-
- $this->tableCalls[$key-1][1][0] = false;
-
- for($i = $key-2; $i > $lastRow; $i--) {
-
- if ( $this->tableCalls[$i][0] == 'tablecell_open' || $this->tableCalls[$i][0] == 'tableheader_open' ) {
-
- if ( false !== $this->tableCalls[$i][1][0] ) {
- $this->tableCalls[$i][1][0]++;
- break;
- }
-
-
- }
- }
-
- $toDelete[] = $key-1;
- $toDelete[] = $key;
- $toDelete[] = $key+1;
- }
- }
-
-
- // condense cdata
- $cnt = count($this->tableCalls);
- for( $key = 0; $key < $cnt; $key++){
- if($this->tableCalls[$key][0] == 'cdata'){
- $ckey = $key;
- $key++;
- while($this->tableCalls[$key][0] == 'cdata'){
- $this->tableCalls[$ckey][1][0] .= $this->tableCalls[$key][1][0];
- $toDelete[] = $key;
- $key++;
- }
- continue;
- }
- }
-
- foreach ( $toDelete as $delete ) {
- unset($this->tableCalls[$delete]);
- }
- $this->tableCalls = array_values($this->tableCalls);
- }
-}
-
-//------------------------------------------------------------------------
-class Doku_Handler_Section {
-
- function process($calls) {
-
- $sectionCalls = array();
- $inSection = false;
-
- foreach ( $calls as $call ) {
-
- if ( $call[0] == 'header' ) {
-
- if ( $inSection ) {
- $sectionCalls[] = array('section_close',array(), $call[2]);
- }
-
- $sectionCalls[] = $call;
- $sectionCalls[] = array('section_open',array($call[1][1]), $call[2]);
- $inSection = true;
-
- } else {
-
- if ($call[0] == 'section_open' ) {
- $inSection = true;
- } else if ($call[0] == 'section_open' ) {
- $inSection = false;
- }
- $sectionCalls[] = $call;
- }
- }
-
- if ( $inSection ) {
- $sectionCalls[] = array('section_close',array(), $call[2]);
- }
-
- return $sectionCalls;
- }
-
-}
-
-/**
- * Handler for paragraphs
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-class Doku_Handler_Block {
-
- var $calls = array();
-
- var $blockStack = array();
-
- var $inParagraph = false;
- var $atStart = true;
- var $skipEolKey = -1;
-
- // Blocks these should not be inside paragraphs
- var $blockOpen = array(
- 'header',
- 'listu_open','listo_open','listitem_open','listcontent_open',
- 'table_open','tablerow_open','tablecell_open','tableheader_open',
- 'quote_open',
- 'section_open', // Needed to prevent p_open between header and section_open
- 'code','file','hr','preformatted','rss',
- 'htmlblock','phpblock',
- );
-
- var $blockClose = array(
- 'header',
- 'listu_close','listo_close','listitem_close','listcontent_close',
- 'table_close','tablerow_close','tablecell_close','tableheader_close',
- 'quote_close',
- 'section_close', // Needed to prevent p_close after section_close
- 'code','file','hr','preformatted','rss',
- 'htmlblock','phpblock',
- );
-
- // Stacks can contain paragraphs
- var $stackOpen = array(
- 'footnote_open','section_open',
- );
-
- var $stackClose = array(
- 'footnote_close','section_close',
- );
-
-
- /**
- * Constructor. Adds loaded syntax plugins to the block and stack
- * arrays
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function Doku_Handler_Block(){
- global $DOKU_PLUGINS;
- //check if syntax plugins were loaded
- if(empty($DOKU_PLUGINS['syntax'])) return;
- foreach($DOKU_PLUGINS['syntax'] as $n => $p){
- $ptype = $p->getPType();
- if($ptype == 'block'){
- $this->blockOpen[] = 'plugin_'.$n;
- $this->blockClose[] = 'plugin_'.$n;
- }elseif($ptype == 'stack'){
- $this->stackOpen[] = 'plugin_'.$n;
- $this->stackClose[] = 'plugin_'.$n;
- }
- }
- }
-
- /**
- * Close a paragraph if needed
- *
- * This function makes sure there are no empty paragraphs on the stack
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function closeParagraph($pos){
- // look back if there was any content - we don't want empty paragraphs
- $content = '';
- for($i=count($this->calls)-1; $i>=0; $i--){
- if($this->calls[$i][0] == 'p_open'){
- break;
- }elseif($this->calls[$i][0] == 'cdata'){
- $content .= $this->calls[$i][1][0];
- }else{
- $content = 'found markup';
- break;
- }
- }
-
- if(trim($content)==''){
- //remove the whole paragraph
- array_splice($this->calls,$i);
- }else{
- if ($this->calls[count($this->calls)-1][0] == 'section_edit') {
- $tmp = array_pop($this->calls);
- $this->calls[] = array('p_close',array(), $pos);
- $this->calls[] = $tmp;
- } else {
- $this->calls[] = array('p_close',array(), $pos);
- }
- }
-
- $this->inParagraph = false;
- }
-
- /**
- * Processes the whole instruction stack to open and close paragraphs
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- * @todo This thing is really messy and should be rewritten
- */
- function process($calls) {
- foreach ( $calls as $key => $call ) {
- $cname = $call[0];
- if($cname == 'plugin') {
- $cname='plugin_'.$call[1][0];
-
- $plugin = true;
- $plugin_open = (($call[1][2] == DOKU_LEXER_ENTER) || ($call[1][2] == DOKU_LEXER_SPECIAL));
- $plugin_close = (($call[1][2] == DOKU_LEXER_EXIT) || ($call[1][2] == DOKU_LEXER_SPECIAL));
- } else {
- $plugin = false;
- }
-
- // Process blocks which are stack like... (contain linefeeds)
- if ( in_array($cname,$this->stackOpen ) && (!$plugin || $plugin_open) ) {
-
- $this->calls[] = $call;
-
- // Hack - footnotes shouldn't immediately contain a p_open
- if ( $cname != 'footnote_open' ) {
- $this->addToStack();
- } else {
- $this->addToStack(false);
- }
- continue;
- }
-
- if ( in_array($cname,$this->stackClose ) && (!$plugin || $plugin_close)) {
-
- if ( $this->inParagraph ) {
- $this->closeParagraph($call[2]);
- }
- $this->calls[] = $call;
- $this->removeFromStack();
- continue;
- }
-
- if ( !$this->atStart ) {
-
- if ( $cname == 'eol' ) {
-
- // Check this isn't an eol instruction to skip...
- if ( $this->skipEolKey != $key ) {
- // Look to see if the next instruction is an EOL
- if ( isset($calls[$key+1]) && $calls[$key+1][0] == 'eol' ) {
-
- if ( $this->inParagraph ) {
- //$this->calls[] = array('p_close',array(), $call[2]);
- $this->closeParagraph($call[2]);
- }
-
- $this->calls[] = array('p_open',array(), $call[2]);
- $this->inParagraph = true;
-
-
- // Mark the next instruction for skipping
- $this->skipEolKey = $key+1;
-
- }else{
- //if this is just a single eol make a space from it
- $this->addCall(array('cdata',array(DOKU_PARSER_EOL), $call[2]));
- }
- }
-
-
- } else {
-
- $storeCall = true;
- if ( $this->inParagraph && (in_array($cname, $this->blockOpen) && (!$plugin || $plugin_open))) {
- $this->closeParagraph($call[2]);
- $this->calls[] = $call;
- $storeCall = false;
- }
-
- if ( in_array($cname, $this->blockClose) && (!$plugin || $plugin_close)) {
- if ( $this->inParagraph ) {
- $this->closeParagraph($call[2]);
- }
- if ( $storeCall ) {
- $this->calls[] = $call;
- $storeCall = false;
- }
-
- // This really sucks and suggests this whole class sucks but...
- if ( isset($calls[$key+1])) {
- $cname_plusone = $calls[$key+1][0];
- if ($cname_plusone == 'plugin') {
- $cname_plusone = 'plugin'.$calls[$key+1][1][0];
-
- // plugin test, true if plugin has a state which precludes it requiring blockOpen or blockClose
- $plugin_plusone = true;
- $plugin_test = ($call[$key+1][1][2] == DOKU_LEXER_MATCHED) || ($call[$key+1][1][2] == DOKU_LEXER_MATCHED);
- } else {
- $plugin_plusone = false;
- }
- if ((!in_array($cname_plusone, $this->blockOpen) && !in_array($cname_plusone, $this->blockClose)) ||
- ($plugin_plusone && $plugin_test)
- ) {
-
- $this->calls[] = array('p_open',array(), $call[2]);
- $this->inParagraph = true;
- }
- }
- }
-
- if ( $storeCall ) {
- $this->addCall($call);
- }
-
- }
-
-
- } else {
-
- // Unless there's already a block at the start, start a paragraph
- if ( !in_array($cname,$this->blockOpen) ) {
- $this->calls[] = array('p_open',array(), $call[2]);
- if ( $call[0] != 'eol' ) {
- $this->calls[] = $call;
- }
- $this->atStart = false;
- $this->inParagraph = true;
- } else {
- $this->addCall($call);
- $this->atStart = false;
- }
-
- }
-
- }
-
- if ( $this->inParagraph ) {
- if ( $cname == 'p_open' ) {
- // Ditch the last call
- array_pop($this->calls);
- } else if ( !in_array($cname, $this->blockClose) ) {
- //$this->calls[] = array('p_close',array(), $call[2]);
- $this->closeParagraph($call[2]);
- } else {
- $last_call = array_pop($this->calls);
- //$this->calls[] = array('p_close',array(), $call[2]);
- $this->closeParagraph($call[2]);
- $this->calls[] = $last_call;
- }
- }
-
- return $this->calls;
- }
-
- function addToStack($newStart = true) {
- $this->blockStack[] = array($this->atStart, $this->inParagraph);
- $this->atStart = $newStart;
- $this->inParagraph = false;
- }
-
- function removeFromStack() {
- $state = array_pop($this->blockStack);
- $this->atStart = $state[0];
- $this->inParagraph = $state[1];
- }
-
- function addCall($call) {
- $key = count($this->calls);
- if ($key and ($call[0] == 'cdata') and ($this->calls[$key-1][0] == 'cdata')) {
- $this->calls[$key-1][1][0] .= $call[1][0];
- } else {
- $this->calls[] = $call;
- }
- }
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
+
+if (!defined('DOKU_PARSER_EOL')) define('DOKU_PARSER_EOL',"\n"); // add this to make handling test cases simpler
+
+class Doku_Handler {
+
+ var $Renderer = NULL;
+
+ var $CallWriter = NULL;
+
+ var $calls = array();
+
+ var $status = array(
+ 'section' => false,
+ 'section_edit_start' => -1,
+ 'section_edit_level' => 1,
+ 'section_edit_title' => ''
+ );
+
+ var $rewriteBlocks = true;
+
+ function Doku_Handler() {
+ $this->CallWriter = & new Doku_Handler_CallWriter($this);
+ }
+
+ function _addCall($handler, $args, $pos) {
+ $call = array($handler,$args, $pos);
+ $this->CallWriter->writeCall($call);
+ }
+
+ function addPluginCall($plugin, $args, $state, $pos) {
+ $call = array('plugin',array($plugin, $args, $state), $pos);
+ $this->CallWriter->writeCall($call);
+ }
+
+ function _finalize(){
+
+ $this->CallWriter->finalise();
+
+ if ( $this->status['section'] ) {
+ $last_call = end($this->calls);
+ array_push($this->calls,array('section_close',array(), $last_call[2]));
+ if ($this->status['section_edit_start']>1) {
+ // ignore last edit section if there is only one header
+ array_push($this->calls,array('section_edit',array($this->status['section_edit_start'], 0, $this->status['section_edit_level'], $this->status['section_edit_title']), $last_call[2]));
+ }
+ }
+
+ if ( $this->rewriteBlocks ) {
+ $B = & new Doku_Handler_Block();
+ $this->calls = $B->process($this->calls);
+ }
+
+ trigger_event('PARSER_HANDLER_DONE',$this);
+
+ array_unshift($this->calls,array('document_start',array(),0));
+ $last_call = end($this->calls);
+ array_push($this->calls,array('document_end',array(),$last_call[2]));
+ }
+
+ function fetch() {
+ $call = each($this->calls);
+ if ( $call ) {
+ return $call['value'];
+ }
+ return false;
+ }
+
+
+ /**
+ * Special plugin handler
+ *
+ * This handler is called for all modes starting with 'plugin_'.
+ * An additional parameter with the plugin name is passed
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function plugin($match, $state, $pos, $pluginname){
+ $data = array($match);
+ $plugin =& plugin_load('syntax',$pluginname);
+ if($plugin != null){
+ $data = $plugin->handle($match, $state, $pos, $this);
+ }
+ $this->addPluginCall($pluginname,$data,$state,$pos);
+ return true;
+ }
+
+ function base($match, $state, $pos) {
+ switch ( $state ) {
+ case DOKU_LEXER_UNMATCHED:
+ $this->_addCall('cdata',array($match), $pos);
+ return true;
+ break;
+
+ }
+ }
+
+ function header($match, $state, $pos) {
+ global $conf;
+
+ // get level and title
+ $title = trim($match);
+ $level = 7 - strspn($title,'=');
+ if($level < 1) $level = 1;
+ $title = trim($title,'=');
+ $title = trim($title);
+
+ if ($this->status['section']) $this->_addCall('section_close',array(),$pos);
+
+ if ($level<=$conf['maxseclevel']) {
+ $this->_addCall('section_edit',array($this->status['section_edit_start'], $pos-1, $this->status['section_edit_level'], $this->status['section_edit_title']), $pos);
+ $this->status['section_edit_start'] = $pos;
+ $this->status['section_edit_level'] = $level;
+ $this->status['section_edit_title'] = $title;
+ }
+
+ $this->_addCall('header',array($title,$level,$pos), $pos);
+
+ $this->_addCall('section_open',array($level),$pos);
+ $this->status['section'] = true;
+ return true;
+ }
+
+ function notoc($match, $state, $pos) {
+ $this->_addCall('notoc',array(),$pos);
+ return true;
+ }
+
+ function nocache($match, $state, $pos) {
+ $this->_addCall('nocache',array(),$pos);
+ return true;
+ }
+
+ function linebreak($match, $state, $pos) {
+ $this->_addCall('linebreak',array(),$pos);
+ return true;
+ }
+
+ function eol($match, $state, $pos) {
+ $this->_addCall('eol',array(),$pos);
+ return true;
+ }
+
+ function hr($match, $state, $pos) {
+ $this->_addCall('hr',array(),$pos);
+ return true;
+ }
+
+ function _nestingTag($match, $state, $pos, $name) {
+ switch ( $state ) {
+ case DOKU_LEXER_ENTER:
+ $this->_addCall($name.'_open', array(), $pos);
+ break;
+ case DOKU_LEXER_EXIT:
+ $this->_addCall($name.'_close', array(), $pos);
+ break;
+ case DOKU_LEXER_UNMATCHED:
+ $this->_addCall('cdata',array($match), $pos);
+ break;
+ }
+ }
+
+ function strong($match, $state, $pos) {
+ $this->_nestingTag($match, $state, $pos, 'strong');
+ return true;
+ }
+
+ function emphasis($match, $state, $pos) {
+ $this->_nestingTag($match, $state, $pos, 'emphasis');
+ return true;
+ }
+
+ function underline($match, $state, $pos) {
+ $this->_nestingTag($match, $state, $pos, 'underline');
+ return true;
+ }
+
+ function monospace($match, $state, $pos) {
+ $this->_nestingTag($match, $state, $pos, 'monospace');
+ return true;
+ }
+
+ function subscript($match, $state, $pos) {
+ $this->_nestingTag($match, $state, $pos, 'subscript');
+ return true;
+ }
+
+ function superscript($match, $state, $pos) {
+ $this->_nestingTag($match, $state, $pos, 'superscript');
+ return true;
+ }
+
+ function deleted($match, $state, $pos) {
+ $this->_nestingTag($match, $state, $pos, 'deleted');
+ return true;
+ }
+
+
+ function footnote($match, $state, $pos) {
+// $this->_nestingTag($match, $state, $pos, 'footnote');
+ if (!isset($this->_footnote)) $this->_footnote = false;
+
+ switch ( $state ) {
+ case DOKU_LEXER_ENTER:
+ // footnotes can not be nested - however due to limitations in lexer it can't be prevented
+ // we will still enter a new footnote mode, we just do nothing
+ if ($this->_footnote) {
+ $this->_addCall('cdata',array($match), $pos);
+ break;
+ }
+
+ $this->_footnote = true;
+
+ $ReWriter = & new Doku_Handler_Nest($this->CallWriter,'footnote_close');
+ $this->CallWriter = & $ReWriter;
+ $this->_addCall('footnote_open', array(), $pos);
+ break;
+ case DOKU_LEXER_EXIT:
+ // check whether we have already exitted the footnote mode, can happen if the modes were nested
+ if (!$this->_footnote) {
+ $this->_addCall('cdata',array($match), $pos);
+ break;
+ }
+
+ $this->_footnote = false;
+
+ $this->_addCall('footnote_close', array(), $pos);
+ $this->CallWriter->process();
+ $ReWriter = & $this->CallWriter;
+ $this->CallWriter = & $ReWriter->CallWriter;
+ break;
+ case DOKU_LEXER_UNMATCHED:
+ $this->_addCall('cdata', array($match), $pos);
+ break;
+ }
+ return true;
+ }
+
+ function listblock($match, $state, $pos) {
+ switch ( $state ) {
+ case DOKU_LEXER_ENTER:
+ $ReWriter = & new Doku_Handler_List($this->CallWriter);
+ $this->CallWriter = & $ReWriter;
+ $this->_addCall('list_open', array($match), $pos);
+ break;
+ case DOKU_LEXER_EXIT:
+ $this->_addCall('list_close', array(), $pos);
+ $this->CallWriter->process();
+ $ReWriter = & $this->CallWriter;
+ $this->CallWriter = & $ReWriter->CallWriter;
+ break;
+ case DOKU_LEXER_MATCHED:
+ $this->_addCall('list_item', array($match), $pos);
+ break;
+ case DOKU_LEXER_UNMATCHED:
+ $this->_addCall('cdata', array($match), $pos);
+ break;
+ }
+ return true;
+ }
+
+ function unformatted($match, $state, $pos) {
+ if ( $state == DOKU_LEXER_UNMATCHED ) {
+ $this->_addCall('unformatted',array($match), $pos);
+ }
+ return true;
+ }
+
+ function php($match, $state, $pos) {
+ global $conf;
+ if ( $state == DOKU_LEXER_UNMATCHED ) {
+ $this->_addCall('php',array($match), $pos);
+ }
+ return true;
+ }
+
+ function phpblock($match, $state, $pos) {
+ global $conf;
+ if ( $state == DOKU_LEXER_UNMATCHED ) {
+ $this->_addCall('phpblock',array($match), $pos);
+ }
+ return true;
+ }
+
+ function html($match, $state, $pos) {
+ global $conf;
+ if ( $state == DOKU_LEXER_UNMATCHED ) {
+ $this->_addCall('html',array($match), $pos);
+ }
+ return true;
+ }
+
+ function htmlblock($match, $state, $pos) {
+ global $conf;
+ if ( $state == DOKU_LEXER_UNMATCHED ) {
+ $this->_addCall('htmlblock',array($match), $pos);
+ }
+ return true;
+ }
+
+ function preformatted($match, $state, $pos) {
+ switch ( $state ) {
+ case DOKU_LEXER_ENTER:
+ $ReWriter = & new Doku_Handler_Preformatted($this->CallWriter);
+ $this->CallWriter = & $ReWriter;
+ $this->_addCall('preformatted_start',array(), $pos);
+ break;
+ case DOKU_LEXER_EXIT:
+ $this->_addCall('preformatted_end',array(), $pos);
+ $this->CallWriter->process();
+ $ReWriter = & $this->CallWriter;
+ $this->CallWriter = & $ReWriter->CallWriter;
+ break;
+ case DOKU_LEXER_MATCHED:
+ $this->_addCall('preformatted_newline',array(), $pos);
+ break;
+ case DOKU_LEXER_UNMATCHED:
+ $this->_addCall('preformatted_content',array($match), $pos);
+ break;
+ }
+
+ return true;
+ }
+
+ function file($match, $state, $pos) {
+ if ( $state == DOKU_LEXER_UNMATCHED ) {
+ $this->_addCall('file',array($match), $pos);
+ }
+ return true;
+ }
+
+ function quote($match, $state, $pos) {
+
+ switch ( $state ) {
+
+ case DOKU_LEXER_ENTER:
+ $ReWriter = & new Doku_Handler_Quote($this->CallWriter);
+ $this->CallWriter = & $ReWriter;
+ $this->_addCall('quote_start',array($match), $pos);
+ break;
+
+ case DOKU_LEXER_EXIT:
+ $this->_addCall('quote_end',array(), $pos);
+ $this->CallWriter->process();
+ $ReWriter = & $this->CallWriter;
+ $this->CallWriter = & $ReWriter->CallWriter;
+ break;
+
+ case DOKU_LEXER_MATCHED:
+ $this->_addCall('quote_newline',array($match), $pos);
+ break;
+
+ case DOKU_LEXER_UNMATCHED:
+ $this->_addCall('cdata',array($match), $pos);
+ break;
+
+ }
+
+ return true;
+ }
+
+ function code($match, $state, $pos) {
+ switch ( $state ) {
+ case DOKU_LEXER_UNMATCHED:
+ $matches = preg_split('/>/u',$match,2);
+ $matches[0] = trim($matches[0]);
+ if ( trim($matches[0]) == '' ) {
+ $matches[0] = NULL;
+ }
+ # $matches[0] contains name of programming language
+ # if available, We shortcut html here.
+ if($matches[0] == 'html') $matches[0] = 'html4strict';
+ $this->_addCall(
+ 'code',
+ array($matches[1],$matches[0]),
+ $pos
+ );
+ break;
+ }
+ return true;
+ }
+
+ function acronym($match, $state, $pos) {
+ $this->_addCall('acronym',array($match), $pos);
+ return true;
+ }
+
+ function smiley($match, $state, $pos) {
+ $this->_addCall('smiley',array($match), $pos);
+ return true;
+ }
+
+ function wordblock($match, $state, $pos) {
+ $this->_addCall('wordblock',array($match), $pos);
+ return true;
+ }
+
+ function entity($match, $state, $pos) {
+ $this->_addCall('entity',array($match), $pos);
+ return true;
+ }
+
+ function multiplyentity($match, $state, $pos) {
+ preg_match_all('/\d+/',$match,$matches);
+ $this->_addCall('multiplyentity',array($matches[0][0],$matches[0][1]), $pos);
+ return true;
+ }
+
+ function singlequoteopening($match, $state, $pos) {
+ $this->_addCall('singlequoteopening',array(), $pos);
+ return true;
+ }
+
+ function singlequoteclosing($match, $state, $pos) {
+ $this->_addCall('singlequoteclosing',array(), $pos);
+ return true;
+ }
+
+ function apostrophe($match, $state, $pos) {
+ $this->_addCall('apostrophe',array(), $pos);
+ return true;
+ }
+
+ function doublequoteopening($match, $state, $pos) {
+ $this->_addCall('doublequoteopening',array(), $pos);
+ return true;
+ }
+
+ function doublequoteclosing($match, $state, $pos) {
+ $this->_addCall('doublequoteclosing',array(), $pos);
+ return true;
+ }
+
+ function camelcaselink($match, $state, $pos) {
+ $this->_addCall('camelcaselink',array($match), $pos);
+ return true;
+ }
+
+ /*
+ */
+ function internallink($match, $state, $pos) {
+ // Strip the opening and closing markup
+ $link = preg_replace(array('/^\[\[/','/\]\]$/u'),'',$match);
+
+ // Split title from URL
+ $link = preg_split('/\|/u',$link,2);
+ if ( !isset($link[1]) ) {
+ $link[1] = NULL;
+ } else if ( preg_match('/^\{\{[^\}]+\}\}$/',$link[1]) ) {
+ // If the title is an image, convert it to an array containing the image details
+ $link[1] = Doku_Handler_Parse_Media($link[1]);
+ }
+ $link[0] = trim($link[0]);
+
+ //decide which kind of link it is
+
+ if ( preg_match('/^[a-zA-Z0-9\.]+>{1}.*$/u',$link[0]) ) {
+ // Interwiki
+ $interwiki = preg_split('/>/u',$link[0]);
+ $this->_addCall(
+ 'interwikilink',
+ array($link[0],$link[1],strtolower($interwiki[0]),$interwiki[1]),
+ $pos
+ );
+ }elseif ( preg_match('/^\\\\\\\\[\w.:?\-;,]+?\\\\/u',$link[0]) ) {
+ // Windows Share
+ $this->_addCall(
+ 'windowssharelink',
+ array($link[0],$link[1]),
+ $pos
+ );
+ }elseif ( preg_match('#^([a-z0-9\-\.+]+?)://#i',$link[0]) ) {
+ // external link (accepts all protocols)
+ $this->_addCall(
+ 'externallink',
+ array($link[0],$link[1]),
+ $pos
+ );
+ }elseif ( preg_match('<'.PREG_PATTERN_VALID_EMAIL.'>',$link[0]) ) {
+ // E-Mail (pattern above is defined in inc/mail.php)
+ $this->_addCall(
+ 'emaillink',
+ array($link[0],$link[1]),
+ $pos
+ );
+ }elseif ( preg_match('!^#.+!',$link[0]) ){
+ // local link
+ $this->_addCall(
+ 'locallink',
+ array(substr($link[0],1),$link[1]),
+ $pos
+ );
+ }else{
+ // internal link
+ $this->_addCall(
+ 'internallink',
+ array($link[0],$link[1]),
+ $pos
+ );
+ }
+
+ return true;
+ }
+
+ function filelink($match, $state, $pos) {
+ $this->_addCall('filelink',array($match, NULL), $pos);
+ return true;
+ }
+
+ function windowssharelink($match, $state, $pos) {
+ $this->_addCall('windowssharelink',array($match, NULL), $pos);
+ return true;
+ }
+
+ function media($match, $state, $pos) {
+ $p = Doku_Handler_Parse_Media($match);
+
+ $this->_addCall(
+ $p['type'],
+ array($p['src'], $p['title'], $p['align'], $p['width'],
+ $p['height'], $p['cache'], $p['linking']),
+ $pos
+ );
+ return true;
+ }
+
+ function rss($match, $state, $pos) {
+ $link = preg_replace(array('/^\{\{rss>/','/\}\}$/'),'',$match);
+
+ // get params
+ list($link,$params) = explode(' ',$link,2);
+
+ $p = array();
+ if(preg_match('/\b(\d+)\b/',$params,$match)){
+ $p['max'] = $match[1];
+ }else{
+ $p['max'] = 8;
+ }
+ $p['reverse'] = (preg_match('/rev/',$params));
+ $p['author'] = (preg_match('/\b(by|author)/',$params));
+ $p['date'] = (preg_match('/\b(date)/',$params));
+ $p['details'] = (preg_match('/\b(desc|detail)/',$params));
+
+ if (preg_match('/\b(\d+)([dhm])\b/',$params,$match)) {
+ $period = array('d' => 86400, 'h' => 3600, 'm' => 60);
+ $p['refresh'] = max(600,$match[1]*$period[$match[2]]); // n * period in seconds, minimum 10 minutes
+ } else {
+ $p['refresh'] = 14400; // default to 4 hours
+ }
+
+ $this->_addCall('rss',array($link,$p),$pos);
+ return true;
+ }
+
+ function externallink($match, $state, $pos) {
+ $url = $match;
+ $title = null;
+
+ // add protocol on simple short URLs
+ if(substr($url,0,3) == 'ftp' && (substr($url,0,6) != 'ftp://')){
+ $title = $url;
+ $url = 'ftp://'.$url;
+ }
+ if(substr($url,0,3) == 'www' && (substr($url,0,7) != 'http://')){
+ $title = $url;
+ $url = 'http://'.$url;
+ }
+
+ $this->_addCall('externallink',array($url, $title), $pos);
+ return true;
+ }
+
+ function emaillink($match, $state, $pos) {
+ $email = preg_replace(array('/^</','/>$/'),'',$match);
+ $this->_addCall('emaillink',array($email, NULL), $pos);
+ return true;
+ }
+
+ function table($match, $state, $pos) {
+ switch ( $state ) {
+
+ case DOKU_LEXER_ENTER:
+
+ $ReWriter = & new Doku_Handler_Table($this->CallWriter);
+ $this->CallWriter = & $ReWriter;
+
+ $this->_addCall('table_start', array(), $pos);
+ //$this->_addCall('table_row', array(), $pos);
+ if ( trim($match) == '^' ) {
+ $this->_addCall('tableheader', array(), $pos);
+ } else {
+ $this->_addCall('tablecell', array(), $pos);
+ }
+ break;
+
+ case DOKU_LEXER_EXIT:
+ $this->_addCall('table_end', array(), $pos);
+ $this->CallWriter->process();
+ $ReWriter = & $this->CallWriter;
+ $this->CallWriter = & $ReWriter->CallWriter;
+ break;
+
+ case DOKU_LEXER_UNMATCHED:
+ if ( trim($match) != '' ) {
+ $this->_addCall('cdata',array($match), $pos);
+ }
+ break;
+
+ case DOKU_LEXER_MATCHED:
+ if ( $match == ' ' ){
+ $this->_addCall('cdata', array($match), $pos);
+ } else if ( preg_match('/\t+/',$match) ) {
+ $this->_addCall('table_align', array($match), $pos);
+ } else if ( preg_match('/ {2,}/',$match) ) {
+ $this->_addCall('table_align', array($match), $pos);
+ } else if ( $match == "\n|" ) {
+ $this->_addCall('table_row', array(), $pos);
+ $this->_addCall('tablecell', array(), $pos);
+ } else if ( $match == "\n^" ) {
+ $this->_addCall('table_row', array(), $pos);
+ $this->_addCall('tableheader', array(), $pos);
+ } else if ( $match == '|' ) {
+ $this->_addCall('tablecell', array(), $pos);
+ } else if ( $match == '^' ) {
+ $this->_addCall('tableheader', array(), $pos);
+ }
+ break;
+ }
+ return true;
+ }
+}
+
+//------------------------------------------------------------------------
+function Doku_Handler_Parse_Media($match) {
+
+ // Strip the opening and closing markup
+ $link = preg_replace(array('/^\{\{/','/\}\}$/u'),'',$match);
+
+ // Split title from URL
+ $link = preg_split('/\|/u',$link,2);
+
+
+ // Check alignment
+ $ralign = (bool)preg_match('/^ /',$link[0]);
+ $lalign = (bool)preg_match('/ $/',$link[0]);
+
+ // Logic = what's that ;)...
+ if ( $lalign & $ralign ) {
+ $align = 'center';
+ } else if ( $ralign ) {
+ $align = 'right';
+ } else if ( $lalign ) {
+ $align = 'left';
+ } else {
+ $align = NULL;
+ }
+
+ // The title...
+ if ( !isset($link[1]) ) {
+ $link[1] = NULL;
+ }
+
+ //remove aligning spaces
+ $link[0] = trim($link[0]);
+
+ //split into src and parameters (using the very last questionmark)
+ $pos = strrpos($link[0], '?');
+ if($pos !== false){
+ $src = substr($link[0],0,$pos);
+ $param = substr($link[0],$pos+1);
+ }else{
+ $src = $link[0];
+ $param = '';
+ }
+
+ //parse width and height
+ if(preg_match('#(\d+)(x(\d+))?#i',$param,$size)){
+ ($size[1]) ? $w = $size[1] : $w = NULL;
+ ($size[3]) ? $h = $size[3] : $h = NULL;
+ } else {
+ $w = NULL;
+ $h = NULL;
+ }
+
+ //get linking command
+ if(preg_match('/nolink/i',$param)){
+ $linking = 'nolink';
+ }else if(preg_match('/direct/i',$param)){
+ $linking = 'direct';
+ }else if(preg_match('/linkonly/i',$param)){
+ $linking = 'linkonly';
+ }else{
+ $linking = 'details';
+ }
+
+ //get caching command
+ if (preg_match('/(nocache|recache)/i',$param,$cachemode)){
+ $cache = $cachemode[1];
+ }else{
+ $cache = 'cache';
+ }
+
+ // Check whether this is a local or remote image
+ if ( preg_match('#^(https?|ftp)#i',$src) ) {
+ $call = 'externalmedia';
+ } else {
+ $call = 'internalmedia';
+ }
+
+ $params = array(
+ 'type'=>$call,
+ 'src'=>$src,
+ 'title'=>$link[1],
+ 'align'=>$align,
+ 'width'=>$w,
+ 'height'=>$h,
+ 'cache'=>$cache,
+ 'linking'=>$linking,
+ );
+
+ return $params;
+}
+
+//------------------------------------------------------------------------
+class Doku_Handler_CallWriter {
+
+ var $Handler;
+
+ function Doku_Handler_CallWriter(& $Handler) {
+ $this->Handler = & $Handler;
+ }
+
+ function writeCall($call) {
+ $this->Handler->calls[] = $call;
+ }
+
+ function writeCalls($calls) {
+ $this->Handler->calls = array_merge($this->Handler->calls, $calls);
+ }
+
+ // function is required, but since this call writer is first/highest in
+ // the chain it is not required to do anything
+ function finalise() {
+ }
+}
+
+//------------------------------------------------------------------------
+/**
+ * Generic call writer class to handle nesting of rendering instructions
+ * within a render instruction. Also see nest() method of renderer base class
+ *
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+class Doku_Handler_Nest {
+
+ var $CallWriter;
+ var $calls = array();
+
+ var $closingInstruction;
+
+ /**
+ * constructor
+ *
+ * @param object $CallWriter the renderers current call writer
+ * @param string $close closing instruction name, this is required to properly terminate the
+ * syntax mode if the document ends without a closing pattern
+ */
+ function Doku_Handler_Nest(& $CallWriter, $close="nest_close") {
+ $this->CallWriter = & $CallWriter;
+
+ $this->closingInstruction = $close;
+ }
+
+ function writeCall($call) {
+ $this->calls[] = $call;
+ }
+
+ function writeCalls($calls) {
+ $this->calls = array_merge($this->calls, $calls);
+ }
+
+ function finalise() {
+ $last_call = end($this->calls);
+ $this->writeCall(array($this->closingInstruction,array(), $last_call[2]));
+
+ $this->process();
+ $this->CallWriter->finalise();
+ }
+
+ function process() {
+ // merge consecutive cdata
+ $unmerged_calls = $this->calls;
+ $this->calls = array();
+
+ foreach ($unmerged_calls as $call) $this->addCall($call);
+
+ $first_call = reset($this->calls);
+ $this->CallWriter->writeCall(array("nest", array($this->calls), $first_call[2]));
+ }
+
+ function addCall($call) {
+ $key = count($this->calls);
+ if ($key and ($call[0] == 'cdata') and ($this->calls[$key-1][0] == 'cdata')) {
+ $this->calls[$key-1][1][0] .= $call[1][0];
+ } else {
+ $this->calls[] = $call;
+ }
+ }
+}
+
+class Doku_Handler_List {
+
+ var $CallWriter;
+
+ var $calls = array();
+ var $listCalls = array();
+ var $listStack = array();
+
+ function Doku_Handler_List(& $CallWriter) {
+ $this->CallWriter = & $CallWriter;
+ }
+
+ function writeCall($call) {
+ $this->calls[] = $call;
+ }
+
+ // Probably not needed but just in case...
+ function writeCalls($calls) {
+ $this->calls = array_merge($this->calls, $calls);
+# $this->CallWriter->writeCalls($this->calls);
+ }
+
+ function finalise() {
+ $last_call = end($this->calls);
+ $this->writeCall(array('list_close',array(), $last_call[2]));
+
+ $this->process();
+ $this->CallWriter->finalise();
+ }
+
+ //------------------------------------------------------------------------
+ function process() {
+
+ foreach ( $this->calls as $call ) {
+ switch ($call[0]) {
+ case 'list_item':
+ $this->listOpen($call);
+ break;
+ case 'list_open':
+ $this->listStart($call);
+ break;
+ case 'list_close':
+ $this->listEnd($call);
+ break;
+ default:
+ $this->listContent($call);
+ break;
+ }
+ }
+
+ $this->CallWriter->writeCalls($this->listCalls);
+ }
+
+ //------------------------------------------------------------------------
+ function listStart($call) {
+ $depth = $this->interpretSyntax($call[1][0], $listType);
+
+ $this->initialDepth = $depth;
+ $this->listStack[] = array($listType, $depth);
+
+ $this->listCalls[] = array('list'.$listType.'_open',array(),$call[2]);
+ $this->listCalls[] = array('listitem_open',array(1),$call[2]);
+ $this->listCalls[] = array('listcontent_open',array(),$call[2]);
+ }
+
+ //------------------------------------------------------------------------
+ function listEnd($call) {
+ $closeContent = true;
+
+ while ( $list = array_pop($this->listStack) ) {
+ if ( $closeContent ) {
+ $this->listCalls[] = array('listcontent_close',array(),$call[2]);
+ $closeContent = false;
+ }
+ $this->listCalls[] = array('listitem_close',array(),$call[2]);
+ $this->listCalls[] = array('list'.$list[0].'_close', array(), $call[2]);
+ }
+ }
+
+ //------------------------------------------------------------------------
+ function listOpen($call) {
+ $depth = $this->interpretSyntax($call[1][0], $listType);
+ $end = end($this->listStack);
+
+ // Not allowed to be shallower than initialDepth
+ if ( $depth < $this->initialDepth ) {
+ $depth = $this->initialDepth;
+ }
+
+ //------------------------------------------------------------------------
+ if ( $depth == $end[1] ) {
+
+ // Just another item in the list...
+ if ( $listType == $end[0] ) {
+ $this->listCalls[] = array('listcontent_close',array(),$call[2]);
+ $this->listCalls[] = array('listitem_close',array(),$call[2]);
+ $this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
+ $this->listCalls[] = array('listcontent_open',array(),$call[2]);
+
+ // Switched list type...
+ } else {
+
+ $this->listCalls[] = array('listcontent_close',array(),$call[2]);
+ $this->listCalls[] = array('listitem_close',array(),$call[2]);
+ $this->listCalls[] = array('list'.$end[0].'_close', array(), $call[2]);
+ $this->listCalls[] = array('list'.$listType.'_open', array(), $call[2]);
+ $this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
+ $this->listCalls[] = array('listcontent_open',array(),$call[2]);
+
+ array_pop($this->listStack);
+ $this->listStack[] = array($listType, $depth);
+ }
+
+ //------------------------------------------------------------------------
+ // Getting deeper...
+ } else if ( $depth > $end[1] ) {
+
+ $this->listCalls[] = array('listcontent_close',array(),$call[2]);
+ $this->listCalls[] = array('list'.$listType.'_open', array(), $call[2]);
+ $this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
+ $this->listCalls[] = array('listcontent_open',array(),$call[2]);
+
+ $this->listStack[] = array($listType, $depth);
+
+ //------------------------------------------------------------------------
+ // Getting shallower ( $depth < $end[1] )
+ } else {
+ $this->listCalls[] = array('listcontent_close',array(),$call[2]);
+ $this->listCalls[] = array('listitem_close',array(),$call[2]);
+ $this->listCalls[] = array('list'.$end[0].'_close',array(),$call[2]);
+
+ // Throw away the end - done
+ array_pop($this->listStack);
+
+ while (1) {
+ $end = end($this->listStack);
+
+ if ( $end[1] <= $depth ) {
+
+ // Normalize depths
+ $depth = $end[1];
+
+ $this->listCalls[] = array('listitem_close',array(),$call[2]);
+
+ if ( $end[0] == $listType ) {
+ $this->listCalls[] = array('listitem_open',array($depth-1),$call[2]);
+ $this->listCalls[] = array('listcontent_open',array(),$call[2]);
+
+ } else {
+ // Switching list type...
+ $this->listCalls[] = array('list'.$end[0].'_close', array(), $call[2]);
+ $this->listCalls[] = array('list'.$listType.'_open', array(), $call[2]);
+ $this->listCalls[] = array('listitem_open', array($depth-1), $call[2]);
+ $this->listCalls[] = array('listcontent_open',array(),$call[2]);
+
+ array_pop($this->listStack);
+ $this->listStack[] = array($listType, $depth);
+ }
+
+ break;
+
+ // Haven't dropped down far enough yet.... ( $end[1] > $depth )
+ } else {
+
+ $this->listCalls[] = array('listitem_close',array(),$call[2]);
+ $this->listCalls[] = array('list'.$end[0].'_close',array(),$call[2]);
+
+ array_pop($this->listStack);
+
+ }
+
+ }
+
+ }
+ }
+
+ //------------------------------------------------------------------------
+ function listContent($call) {
+ $this->listCalls[] = $call;
+ }
+
+ //------------------------------------------------------------------------
+ function interpretSyntax($match, & $type) {
+ if ( substr($match,-1) == '*' ) {
+ $type = 'u';
+ } else {
+ $type = 'o';
+ }
+ return count(explode(' ',str_replace("\t",' ',$match)));
+ }
+}
+
+//------------------------------------------------------------------------
+class Doku_Handler_Preformatted {
+
+ var $CallWriter;
+
+ var $calls = array();
+ var $pos;
+ var $text ='';
+
+
+
+ function Doku_Handler_Preformatted(& $CallWriter) {
+ $this->CallWriter = & $CallWriter;
+ }
+
+ function writeCall($call) {
+ $this->calls[] = $call;
+ }
+
+ // Probably not needed but just in case...
+ function writeCalls($calls) {
+ $this->calls = array_merge($this->calls, $calls);
+# $this->CallWriter->writeCalls($this->calls);
+ }
+
+ function finalise() {
+ $last_call = end($this->calls);
+ $this->writeCall(array('preformatted_end',array(), $last_call[2]));
+
+ $this->process();
+ $this->CallWriter->finalise();
+ }
+
+ function process() {
+ foreach ( $this->calls as $call ) {
+ switch ($call[0]) {
+ case 'preformatted_start':
+ $this->pos = $call[2];
+ break;
+ case 'preformatted_newline':
+ $this->text .= "\n";
+ break;
+ case 'preformatted_content':
+ $this->text .= $call[1][0];
+ break;
+ case 'preformatted_end':
+ if (trim($this->text)) {
+ $this->CallWriter->writeCall(array('preformatted',array($this->text),$this->pos));
+ }
+ break;
+ }
+ }
+ }
+
+}
+
+//------------------------------------------------------------------------
+class Doku_Handler_Quote {
+
+ var $CallWriter;
+
+ var $calls = array();
+
+ var $quoteCalls = array();
+
+ function Doku_Handler_Quote(& $CallWriter) {
+ $this->CallWriter = & $CallWriter;
+ }
+
+ function writeCall($call) {
+ $this->calls[] = $call;
+ }
+
+ // Probably not needed but just in case...
+ function writeCalls($calls) {
+ $this->calls = array_merge($this->calls, $calls);
+ }
+
+ function finalise() {
+ $last_call = end($this->calls);
+ $this->writeCall(array('quote_end',array(), $last_call[2]));
+
+ $this->process();
+ $this->CallWriter->finalise();
+ }
+
+ function process() {
+
+ $quoteDepth = 1;
+
+ foreach ( $this->calls as $call ) {
+ switch ($call[0]) {
+
+ case 'quote_start':
+
+ $this->quoteCalls[] = array('quote_open',array(),$call[2]);
+
+ case 'quote_newline':
+
+ $quoteLength = $this->getDepth($call[1][0]);
+
+ if ( $quoteLength > $quoteDepth ) {
+ $quoteDiff = $quoteLength - $quoteDepth;
+ for ( $i = 1; $i <= $quoteDiff; $i++ ) {
+ $this->quoteCalls[] = array('quote_open',array(),$call[2]);
+ }
+ } else if ( $quoteLength < $quoteDepth ) {
+ $quoteDiff = $quoteDepth - $quoteLength;
+ for ( $i = 1; $i <= $quoteDiff; $i++ ) {
+ $this->quoteCalls[] = array('quote_close',array(),$call[2]);
+ }
+ } else {
+ if ($call[0] != 'quote_start') $this->quoteCalls[] = array('linebreak',array(),$call[2]);
+ }
+
+ $quoteDepth = $quoteLength;
+
+ break;
+
+ case 'quote_end':
+
+ if ( $quoteDepth > 1 ) {
+ $quoteDiff = $quoteDepth - 1;
+ for ( $i = 1; $i <= $quoteDiff; $i++ ) {
+ $this->quoteCalls[] = array('quote_close',array(),$call[2]);
+ }
+ }
+
+ $this->quoteCalls[] = array('quote_close',array(),$call[2]);
+
+ $this->CallWriter->writeCalls($this->quoteCalls);
+ break;
+
+ default:
+ $this->quoteCalls[] = $call;
+ break;
+ }
+ }
+ }
+
+ function getDepth($marker) {
+ preg_match('/>{1,}/', $marker, $matches);
+ $quoteLength = strlen($matches[0]);
+ return $quoteLength;
+ }
+}
+
+//------------------------------------------------------------------------
+class Doku_Handler_Table {
+
+ var $CallWriter;
+
+ var $calls = array();
+ var $tableCalls = array();
+ var $maxCols = 0;
+ var $maxRows = 1;
+ var $currentCols = 0;
+ var $firstCell = false;
+ var $lastCellType = 'tablecell';
+
+ function Doku_Handler_Table(& $CallWriter) {
+ $this->CallWriter = & $CallWriter;
+ }
+
+ function writeCall($call) {
+ $this->calls[] = $call;
+ }
+
+ // Probably not needed but just in case...
+ function writeCalls($calls) {
+ $this->calls = array_merge($this->calls, $calls);
+ }
+
+ function finalise() {
+ $last_call = end($this->calls);
+ $this->writeCall(array('table_end',array(), $last_call[2]));
+
+ $this->process();
+ $this->CallWriter->finalise();
+ }
+
+ //------------------------------------------------------------------------
+ function process() {
+ foreach ( $this->calls as $call ) {
+ switch ( $call[0] ) {
+ case 'table_start':
+ $this->tableStart($call);
+ break;
+ case 'table_row':
+ $this->tableRowClose(array('tablerow_close',$call[1],$call[2]));
+ $this->tableRowOpen(array('tablerow_open',$call[1],$call[2]));
+ break;
+ case 'tableheader':
+ case 'tablecell':
+ $this->tableCell($call);
+ break;
+ case 'table_end':
+ $this->tableRowClose(array('tablerow_close',$call[1],$call[2]));
+ $this->tableEnd($call);
+ break;
+ default:
+ $this->tableDefault($call);
+ break;
+ }
+ }
+ $this->CallWriter->writeCalls($this->tableCalls);
+ }
+
+ function tableStart($call) {
+ $this->tableCalls[] = array('table_open',array(),$call[2]);
+ $this->tableCalls[] = array('tablerow_open',array(),$call[2]);
+ $this->firstCell = true;
+ }
+
+ function tableEnd($call) {
+ $this->tableCalls[] = array('table_close',array(),$call[2]);
+ $this->finalizeTable();
+ }
+
+ function tableRowOpen($call) {
+ $this->tableCalls[] = $call;
+ $this->currentCols = 0;
+ $this->firstCell = true;
+ $this->lastCellType = 'tablecell';
+ $this->maxRows++;
+ }
+
+ function tableRowClose($call) {
+ // Strip off final cell opening and anything after it
+ while ( $discard = array_pop($this->tableCalls ) ) {
+
+ if ( $discard[0] == 'tablecell_open' || $discard[0] == 'tableheader_open') {
+
+ // Its a spanning element - put it back and close it
+ if ( $discard[1][0] > 1 ) {
+
+ $this->tableCalls[] = $discard;
+ if ( strstr($discard[0],'cell') ) {
+ $name = 'tablecell';
+ } else {
+ $name = 'tableheader';
+ }
+ $this->tableCalls[] = array($name.'_close',array(),$call[2]);
+ }
+
+ break;
+ }
+ }
+ $this->tableCalls[] = $call;
+
+ if ( $this->currentCols > $this->maxCols ) {
+ $this->maxCols = $this->currentCols;
+ }
+ }
+
+ function tableCell($call) {
+ if ( !$this->firstCell ) {
+
+ // Increase the span
+ $lastCall = end($this->tableCalls);
+
+ // A cell call which follows an open cell means an empty cell so span
+ if ( $lastCall[0] == 'tablecell_open' || $lastCall[0] == 'tableheader_open' ) {
+ $this->tableCalls[] = array('colspan',array(),$call[2]);
+
+ }
+
+ $this->tableCalls[] = array($this->lastCellType.'_close',array(),$call[2]);
+ $this->tableCalls[] = array($call[0].'_open',array(1,NULL),$call[2]);
+ $this->lastCellType = $call[0];
+
+ } else {
+
+ $this->tableCalls[] = array($call[0].'_open',array(1,NULL),$call[2]);
+ $this->lastCellType = $call[0];
+ $this->firstCell = false;
+
+ }
+
+ $this->currentCols++;
+ }
+
+ function tableDefault($call) {
+ $this->tableCalls[] = $call;
+ }
+
+ function finalizeTable() {
+
+ // Add the max cols and rows to the table opening
+ if ( $this->tableCalls[0][0] == 'table_open' ) {
+ // Adjust to num cols not num col delimeters
+ $this->tableCalls[0][1][] = $this->maxCols - 1;
+ $this->tableCalls[0][1][] = $this->maxRows;
+ } else {
+ trigger_error('First element in table call list is not table_open');
+ }
+
+ $lastRow = 0;
+ $lastCell = 0;
+ $toDelete = array();
+
+ // Look for the colspan elements and increment the colspan on the
+ // previous non-empty opening cell. Once done, delete all the cells
+ // that contain colspans
+ foreach ( $this->tableCalls as $key => $call ) {
+
+ if ( $call[0] == 'tablerow_open' ) {
+
+ $lastRow = $key;
+
+ } else if ( $call[0] == 'tablecell_open' || $call[0] == 'tableheader_open' ) {
+
+ $lastCell = $key;
+
+ } else if ( $call[0] == 'table_align' ) {
+
+ // If the previous element was a cell open, align right
+ if ( $this->tableCalls[$key-1][0] == 'tablecell_open' || $this->tableCalls[$key-1][0] == 'tableheader_open' ) {
+ $this->tableCalls[$key-1][1][1] = 'right';
+
+ // If the next element if the close of an element, align either center or left
+ } else if ( $this->tableCalls[$key+1][0] == 'tablecell_close' || $this->tableCalls[$key+1][0] == 'tableheader_close' ) {
+ if ( $this->tableCalls[$lastCell][1][1] == 'right' ) {
+ $this->tableCalls[$lastCell][1][1] = 'center';
+ } else {
+ $this->tableCalls[$lastCell][1][1] = 'left';
+ }
+
+ }
+
+ // Now convert the whitespace back to cdata
+ $this->tableCalls[$key][0] = 'cdata';
+
+ } else if ( $call[0] == 'colspan' ) {
+
+ $this->tableCalls[$key-1][1][0] = false;
+
+ for($i = $key-2; $i > $lastRow; $i--) {
+
+ if ( $this->tableCalls[$i][0] == 'tablecell_open' || $this->tableCalls[$i][0] == 'tableheader_open' ) {
+
+ if ( false !== $this->tableCalls[$i][1][0] ) {
+ $this->tableCalls[$i][1][0]++;
+ break;
+ }
+
+
+ }
+ }
+
+ $toDelete[] = $key-1;
+ $toDelete[] = $key;
+ $toDelete[] = $key+1;
+ }
+ }
+
+
+ // condense cdata
+ $cnt = count($this->tableCalls);
+ for( $key = 0; $key < $cnt; $key++){
+ if($this->tableCalls[$key][0] == 'cdata'){
+ $ckey = $key;
+ $key++;
+ while($this->tableCalls[$key][0] == 'cdata'){
+ $this->tableCalls[$ckey][1][0] .= $this->tableCalls[$key][1][0];
+ $toDelete[] = $key;
+ $key++;
+ }
+ continue;
+ }
+ }
+
+ foreach ( $toDelete as $delete ) {
+ unset($this->tableCalls[$delete]);
+ }
+ $this->tableCalls = array_values($this->tableCalls);
+ }
+}
+
+//------------------------------------------------------------------------
+class Doku_Handler_Section {
+
+ function process($calls) {
+
+ $sectionCalls = array();
+ $inSection = false;
+
+ foreach ( $calls as $call ) {
+
+ if ( $call[0] == 'header' ) {
+
+ if ( $inSection ) {
+ $sectionCalls[] = array('section_close',array(), $call[2]);
+ }
+
+ $sectionCalls[] = $call;
+ $sectionCalls[] = array('section_open',array($call[1][1]), $call[2]);
+ $inSection = true;
+
+ } else {
+
+ if ($call[0] == 'section_open' ) {
+ $inSection = true;
+ } else if ($call[0] == 'section_open' ) {
+ $inSection = false;
+ }
+ $sectionCalls[] = $call;
+ }
+ }
+
+ if ( $inSection ) {
+ $sectionCalls[] = array('section_close',array(), $call[2]);
+ }
+
+ return $sectionCalls;
+ }
+
+}
+
+/**
+ * Handler for paragraphs
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+class Doku_Handler_Block {
+
+ var $calls = array();
+
+ var $blockStack = array();
+
+ var $inParagraph = false;
+ var $atStart = true;
+ var $skipEolKey = -1;
+
+ // Blocks these should not be inside paragraphs
+ var $blockOpen = array(
+ 'header',
+ 'listu_open','listo_open','listitem_open','listcontent_open',
+ 'table_open','tablerow_open','tablecell_open','tableheader_open',
+ 'quote_open',
+ 'section_open', // Needed to prevent p_open between header and section_open
+ 'code','file','hr','preformatted','rss',
+ 'htmlblock','phpblock',
+ );
+
+ var $blockClose = array(
+ 'header',
+ 'listu_close','listo_close','listitem_close','listcontent_close',
+ 'table_close','tablerow_close','tablecell_close','tableheader_close',
+ 'quote_close',
+ 'section_close', // Needed to prevent p_close after section_close
+ 'code','file','hr','preformatted','rss',
+ 'htmlblock','phpblock',
+ );
+
+ // Stacks can contain paragraphs
+ var $stackOpen = array(
+ 'footnote_open','section_open',
+ );
+
+ var $stackClose = array(
+ 'footnote_close','section_close',
+ );
+
+
+ /**
+ * Constructor. Adds loaded syntax plugins to the block and stack
+ * arrays
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function Doku_Handler_Block(){
+ global $DOKU_PLUGINS;
+ //check if syntax plugins were loaded
+ if(empty($DOKU_PLUGINS['syntax'])) return;
+ foreach($DOKU_PLUGINS['syntax'] as $n => $p){
+ $ptype = $p->getPType();
+ if($ptype == 'block'){
+ $this->blockOpen[] = 'plugin_'.$n;
+ $this->blockClose[] = 'plugin_'.$n;
+ }elseif($ptype == 'stack'){
+ $this->stackOpen[] = 'plugin_'.$n;
+ $this->stackClose[] = 'plugin_'.$n;
+ }
+ }
+ }
+
+ /**
+ * Close a paragraph if needed
+ *
+ * This function makes sure there are no empty paragraphs on the stack
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function closeParagraph($pos){
+ // look back if there was any content - we don't want empty paragraphs
+ $content = '';
+ for($i=count($this->calls)-1; $i>=0; $i--){
+ if($this->calls[$i][0] == 'p_open'){
+ break;
+ }elseif($this->calls[$i][0] == 'cdata'){
+ $content .= $this->calls[$i][1][0];
+ }else{
+ $content = 'found markup';
+ break;
+ }
+ }
+
+ if(trim($content)==''){
+ //remove the whole paragraph
+ array_splice($this->calls,$i);
+ }else{
+ if ($this->calls[count($this->calls)-1][0] == 'section_edit') {
+ $tmp = array_pop($this->calls);
+ $this->calls[] = array('p_close',array(), $pos);
+ $this->calls[] = $tmp;
+ } else {
+ $this->calls[] = array('p_close',array(), $pos);
+ }
+ }
+
+ $this->inParagraph = false;
+ }
+
+ /**
+ * Processes the whole instruction stack to open and close paragraphs
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @todo This thing is really messy and should be rewritten
+ */
+ function process($calls) {
+ foreach ( $calls as $key => $call ) {
+ $cname = $call[0];
+ if($cname == 'plugin') {
+ $cname='plugin_'.$call[1][0];
+
+ $plugin = true;
+ $plugin_open = (($call[1][2] == DOKU_LEXER_ENTER) || ($call[1][2] == DOKU_LEXER_SPECIAL));
+ $plugin_close = (($call[1][2] == DOKU_LEXER_EXIT) || ($call[1][2] == DOKU_LEXER_SPECIAL));
+ } else {
+ $plugin = false;
+ }
+
+ // Process blocks which are stack like... (contain linefeeds)
+ if ( in_array($cname,$this->stackOpen ) && (!$plugin || $plugin_open) ) {
+
+ $this->calls[] = $call;
+
+ // Hack - footnotes shouldn't immediately contain a p_open
+ if ( $cname != 'footnote_open' ) {
+ $this->addToStack();
+ } else {
+ $this->addToStack(false);
+ }
+ continue;
+ }
+
+ if ( in_array($cname,$this->stackClose ) && (!$plugin || $plugin_close)) {
+
+ if ( $this->inParagraph ) {
+ $this->closeParagraph($call[2]);
+ }
+ $this->calls[] = $call;
+ $this->removeFromStack();
+ continue;
+ }
+
+ if ( !$this->atStart ) {
+
+ if ( $cname == 'eol' ) {
+
+ // Check this isn't an eol instruction to skip...
+ if ( $this->skipEolKey != $key ) {
+ // Look to see if the next instruction is an EOL
+ if ( isset($calls[$key+1]) && $calls[$key+1][0] == 'eol' ) {
+
+ if ( $this->inParagraph ) {
+ //$this->calls[] = array('p_close',array(), $call[2]);
+ $this->closeParagraph($call[2]);
+ }
+
+ $this->calls[] = array('p_open',array(), $call[2]);
+ $this->inParagraph = true;
+
+
+ // Mark the next instruction for skipping
+ $this->skipEolKey = $key+1;
+
+ }else{
+ //if this is just a single eol make a space from it
+ $this->addCall(array('cdata',array(DOKU_PARSER_EOL), $call[2]));
+ }
+ }
+
+
+ } else {
+
+ $storeCall = true;
+ if ( $this->inParagraph && (in_array($cname, $this->blockOpen) && (!$plugin || $plugin_open))) {
+ $this->closeParagraph($call[2]);
+ $this->calls[] = $call;
+ $storeCall = false;
+ }
+
+ if ( in_array($cname, $this->blockClose) && (!$plugin || $plugin_close)) {
+ if ( $this->inParagraph ) {
+ $this->closeParagraph($call[2]);
+ }
+ if ( $storeCall ) {
+ $this->calls[] = $call;
+ $storeCall = false;
+ }
+
+ // This really sucks and suggests this whole class sucks but...
+ if ( isset($calls[$key+1])) {
+ $cname_plusone = $calls[$key+1][0];
+ if ($cname_plusone == 'plugin') {
+ $cname_plusone = 'plugin'.$calls[$key+1][1][0];
+
+ // plugin test, true if plugin has a state which precludes it requiring blockOpen or blockClose
+ $plugin_plusone = true;
+ $plugin_test = ($call[$key+1][1][2] == DOKU_LEXER_MATCHED) || ($call[$key+1][1][2] == DOKU_LEXER_MATCHED);
+ } else {
+ $plugin_plusone = false;
+ }
+ if ((!in_array($cname_plusone, $this->blockOpen) && !in_array($cname_plusone, $this->blockClose)) ||
+ ($plugin_plusone && $plugin_test)
+ ) {
+
+ $this->calls[] = array('p_open',array(), $call[2]);
+ $this->inParagraph = true;
+ }
+ }
+ }
+
+ if ( $storeCall ) {
+ $this->addCall($call);
+ }
+
+ }
+
+
+ } else {
+
+ // Unless there's already a block at the start, start a paragraph
+ if ( !in_array($cname,$this->blockOpen) ) {
+ $this->calls[] = array('p_open',array(), $call[2]);
+ if ( $call[0] != 'eol' ) {
+ $this->calls[] = $call;
+ }
+ $this->atStart = false;
+ $this->inParagraph = true;
+ } else {
+ $this->addCall($call);
+ $this->atStart = false;
+ }
+
+ }
+
+ }
+
+ if ( $this->inParagraph ) {
+ if ( $cname == 'p_open' ) {
+ // Ditch the last call
+ array_pop($this->calls);
+ } else if ( !in_array($cname, $this->blockClose) ) {
+ //$this->calls[] = array('p_close',array(), $call[2]);
+ $this->closeParagraph($call[2]);
+ } else {
+ $last_call = array_pop($this->calls);
+ //$this->calls[] = array('p_close',array(), $call[2]);
+ $this->closeParagraph($call[2]);
+ $this->calls[] = $last_call;
+ }
+ }
+
+ return $this->calls;
+ }
+
+ function addToStack($newStart = true) {
+ $this->blockStack[] = array($this->atStart, $this->inParagraph);
+ $this->atStart = $newStart;
+ $this->inParagraph = false;
+ }
+
+ function removeFromStack() {
+ $state = array_pop($this->blockStack);
+ $this->atStart = $state[0];
+ $this->inParagraph = $state[1];
+ }
+
+ function addCall($call) {
+ $key = count($this->calls);
+ if ($key and ($call[0] == 'cdata') and ($this->calls[$key-1][0] == 'cdata')) {
+ $this->calls[$key-1][1][0] .= $call[1][0];
+ } else {
+ $this->calls[] = $call;
+ }
+ }
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parser/lexer.php
===================================================================
--- site/trunk/www-root/wiki/inc/parser/lexer.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parser/lexer.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,601 +1,601 @@
-<?php
-/**
-* Author Markus Baker: http://www.lastcraft.com
-* Version adapted from Simple Test: http://sourceforge.net/projects/simpletest/
-* For an intro to the Lexer see:
-* http://www.phppatterns.com/index.php/article/articleview/106/1/2/
-* @author Marcus Baker
-* @package Doku
-* @subpackage Lexer
-* @version $Id: lexer.php,v 1.1 2005/03/23 23:14:09 harryf Exp $
-*/
-
-/**
-* Init path constant
-*/
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
-
-/**#@+
- * lexer mode constant
- */
-define("DOKU_LEXER_ENTER", 1);
-define("DOKU_LEXER_MATCHED", 2);
-define("DOKU_LEXER_UNMATCHED", 3);
-define("DOKU_LEXER_EXIT", 4);
-define("DOKU_LEXER_SPECIAL", 5);
-/**#@-*/
-
-/**
- * Compounded regular expression. Any of
- * the contained patterns could match and
- * when one does it's label is returned.
- * @package Doku
- * @subpackage Lexer
- */
-class Doku_LexerParallelRegex {
- var $_patterns;
- var $_labels;
- var $_regex;
- var $_case;
-
- /**
- * Constructor. Starts with no patterns.
- * @param boolean $case True for case sensitive, false
- * for insensitive.
- * @access public
- */
- function Doku_LexerParallelRegex($case) {
- $this->_case = $case;
- $this->_patterns = array();
- $this->_labels = array();
- $this->_regex = null;
- }
-
- /**
- * Adds a pattern with an optional label.
- * @param mixed $pattern Perl style regex. Must be UTF-8
- * encoded. If its a string, the (, )
- * lose their meaning unless they
- * form part of a lookahead or
- * lookbehind assertation.
- * @param string $label Label of regex to be returned
- * on a match. Label must be ASCII
- * @access public
- */
- function addPattern($pattern, $label = true) {
- $count = count($this->_patterns);
- $this->_patterns[$count] = $pattern;
- $this->_labels[$count] = $label;
- $this->_regex = null;
- }
-
- /**
- * Attempts to match all patterns at once against
- * a string.
- * @param string $subject String to match against.
- * @param string $match First matched portion of
- * subject.
- * @return boolean True on success.
- * @access public
- */
- function match($subject, &$match) {
- if (count($this->_patterns) == 0) {
- return false;
- }
- if (! preg_match($this->_getCompoundedRegex(), $subject, $matches)) {
- $match = "";
- return false;
- }
-
- $match = $matches[0];
- $size = count($matches);
- for ($i = 1; $i < $size; $i++) {
- if ($matches[$i] && isset($this->_labels[$i - 1])) {
- return $this->_labels[$i - 1];
- }
- }
- return true;
- }
-
- /**
- * Attempts to split the string against all patterns at once
- *
- * @param string $subject String to match against.
- * @param array $split The split result: array containing, pre-match, match & post-match strings
- * @return boolean True on success.
- * @access public
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
- function split($subject, &$split) {
- if (count($this->_patterns) == 0) {
- return false;
- }
-
- if (! preg_match($this->_getCompoundedRegex(), $subject, $matches)) {
- if(function_exists('preg_last_error')){
- $err = preg_last_error();
- switch($err){
- case PREG_BACKTRACK_LIMIT_ERROR:
- msg('A PCRE backtrack error occured. Try to increase the pcre.backtrack_limit in php.ini',-1);
- break;
- case PREG_RECURSION_LIMIT_ERROR:
- msg('A PCRE recursion error occured. Try to increase the pcre.recursion_limit in php.ini',-1);
- break;
- case PREG_BAD_UTF8_ERROR:
- msg('A PCRE UTF-8 error occured. This might be caused by a faulty plugin',-1);
- break;
- case PREG_INTERNAL_ERROR:
- msg('A PCRE internal error occured. This might be caused by a faulty plugin',-1);
- break;
- }
- }
-
- $split = array($subject, "", "");
- return false;
- }
-
- $idx = count($matches)-2;
-
- list($pre, $post) = preg_split($this->_patterns[$idx].$this->_getPerlMatchingFlags(), $subject, 2);
-
- $split = array($pre, $matches[0], $post);
- return isset($this->_labels[$idx]) ? $this->_labels[$idx] : true;
- }
-
- /**
- * Compounds the patterns into a single
- * regular expression separated with the
- * "or" operator. Caches the regex.
- * Will automatically escape (, ) and / tokens.
- * @param array $patterns List of patterns in order.
- * @access private
- */
- function _getCompoundedRegex() {
- if ($this->_regex == null) {
- $cnt = count($this->_patterns);
- for ($i = 0; $i < $cnt; $i++) {
-
- /*
- * decompose the input pattern into "(", "(?", ")",
- * "[...]", "[]..]", "[^]..]", "[...[:...:]..]", "\x"...
- * elements.
- */
- preg_match_all('/\\\\.|' .
- '\(\?|' .
- '[()]|' .
- '\[\^?\]?(?:\\\\.|\[:[^]]*:\]|[^]\\\\])*\]|' .
- '[^[()\\\\]+/', $this->_patterns[$i], $elts);
-
- $pattern = "";
- $level = 0;
-
- foreach ($elts[0] as $elt) {
- /*
- * for "(", ")" remember the nesting level, add "\"
- * only to the non-"(?" ones.
- */
-
- switch($elt) {
- case '(':
- $pattern .= '\(';
- break;
- case ')':
- if ($level > 0)
- $level--; /* closing (? */
- else
- $pattern .= '\\';
- $pattern .= ')';
- break;
- case '(?':
- $level++;
- $pattern .= '(?';
- break;
- default:
- if (substr($elt, 0, 1) == '\\')
- $pattern .= $elt;
- else
- $pattern .= str_replace('/', '\/', $elt);
- }
- }
- $this->_patterns[$i] = "($pattern)";
- }
- $this->_regex = "/" . implode("|", $this->_patterns) . "/" . $this->_getPerlMatchingFlags();
- }
- return $this->_regex;
- }
-
- /**
- * Accessor for perl regex mode flags to use.
- * @return string Perl regex flags.
- * @access private
- */
- function _getPerlMatchingFlags() {
- return ($this->_case ? "msS" : "msSi");
- }
-}
-
-/**
- * States for a stack machine.
- * @package Lexer
- * @subpackage Lexer
- */
-class Doku_LexerStateStack {
- var $_stack;
-
- /**
- * Constructor. Starts in named state.
- * @param string $start Starting state name.
- * @access public
- */
- function Doku_LexerStateStack($start) {
- $this->_stack = array($start);
- }
-
- /**
- * Accessor for current state.
- * @return string State.
- * @access public
- */
- function getCurrent() {
- return $this->_stack[count($this->_stack) - 1];
- }
-
- /**
- * Adds a state to the stack and sets it
- * to be the current state.
- * @param string $state New state.
- * @access public
- */
- function enter($state) {
- array_push($this->_stack, $state);
- }
-
- /**
- * Leaves the current state and reverts
- * to the previous one.
- * @return boolean False if we drop off
- * the bottom of the list.
- * @access public
- */
- function leave() {
- if (count($this->_stack) == 1) {
- return false;
- }
- array_pop($this->_stack);
- return true;
- }
-}
-
-/**
- * Accepts text and breaks it into tokens.
- * Some optimisation to make the sure the
- * content is only scanned by the PHP regex
- * parser once. Lexer modes must not start
- * with leading underscores.
- * @package Doku
- * @subpackage Lexer
- */
-class Doku_Lexer {
- var $_regexes;
- var $_parser;
- var $_mode;
- var $_mode_handlers;
- var $_case;
-
- /**
- * Sets up the lexer in case insensitive matching
- * by default.
- * @param Doku_Parser $parser Handling strategy by
- * reference.
- * @param string $start Starting handler.
- * @param boolean $case True for case sensitive.
- * @access public
- */
- function Doku_Lexer(&$parser, $start = "accept", $case = false) {
- $this->_case = $case;
- $this->_regexes = array();
- $this->_parser = &$parser;
- $this->_mode = &new Doku_LexerStateStack($start);
- $this->_mode_handlers = array();
- }
-
- /**
- * Adds a token search pattern for a particular
- * parsing mode. The pattern does not change the
- * current mode.
- * @param string $pattern Perl style regex, but ( and )
- * lose the usual meaning.
- * @param string $mode Should only apply this
- * pattern when dealing with
- * this type of input.
- * @access public
- */
- function addPattern($pattern, $mode = "accept") {
- if (! isset($this->_regexes[$mode])) {
- $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
- }
- $this->_regexes[$mode]->addPattern($pattern);
- }
-
- /**
- * Adds a pattern that will enter a new parsing
- * mode. Useful for entering parenthesis, strings,
- * tags, etc.
- * @param string $pattern Perl style regex, but ( and )
- * lose the usual meaning.
- * @param string $mode Should only apply this
- * pattern when dealing with
- * this type of input.
- * @param string $new_mode Change parsing to this new
- * nested mode.
- * @access public
- */
- function addEntryPattern($pattern, $mode, $new_mode) {
- if (! isset($this->_regexes[$mode])) {
- $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
- }
- $this->_regexes[$mode]->addPattern($pattern, $new_mode);
- }
-
- /**
- * Adds a pattern that will exit the current mode
- * and re-enter the previous one.
- * @param string $pattern Perl style regex, but ( and )
- * lose the usual meaning.
- * @param string $mode Mode to leave.
- * @access public
- */
- function addExitPattern($pattern, $mode) {
- if (! isset($this->_regexes[$mode])) {
- $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
- }
- $this->_regexes[$mode]->addPattern($pattern, "__exit");
- }
-
- /**
- * Adds a pattern that has a special mode. Acts as an entry
- * and exit pattern in one go, effectively calling a special
- * parser handler for this token only.
- * @param string $pattern Perl style regex, but ( and )
- * lose the usual meaning.
- * @param string $mode Should only apply this
- * pattern when dealing with
- * this type of input.
- * @param string $special Use this mode for this one token.
- * @access public
- */
- function addSpecialPattern($pattern, $mode, $special) {
- if (! isset($this->_regexes[$mode])) {
- $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
- }
- $this->_regexes[$mode]->addPattern($pattern, "_$special");
- }
-
- /**
- * Adds a mapping from a mode to another handler.
- * @param string $mode Mode to be remapped.
- * @param string $handler New target handler.
- * @access public
- */
- function mapHandler($mode, $handler) {
- $this->_mode_handlers[$mode] = $handler;
- }
-
- /**
- * Splits the page text into tokens. Will fail
- * if the handlers report an error or if no
- * content is consumed. If successful then each
- * unparsed and parsed token invokes a call to the
- * held listener.
- * @param string $raw Raw HTML text.
- * @return boolean True on success, else false.
- * @access public
- */
- function parse($raw) {
- if (! isset($this->_parser)) {
- return false;
- }
- $initialLength = strlen($raw);
- $length = $initialLength;
- $pos = 0;
- while (is_array($parsed = $this->_reduce($raw))) {
- list($unmatched, $matched, $mode) = $parsed;
- $currentLength = strlen($raw);
- $matchPos = $initialLength - $currentLength - strlen($matched);
- if (! $this->_dispatchTokens($unmatched, $matched, $mode, $pos, $matchPos)) {
- return false;
- }
- if ($currentLength == $length) {
- return false;
- }
- $length = $currentLength;
- $pos = $initialLength - $currentLength;
- }
- if (!$parsed) {
- return false;
- }
- return $this->_invokeParser($raw, DOKU_LEXER_UNMATCHED, $pos);
- }
-
- /**
- * Sends the matched token and any leading unmatched
- * text to the parser changing the lexer to a new
- * mode if one is listed.
- * @param string $unmatched Unmatched leading portion.
- * @param string $matched Actual token match.
- * @param string $mode Mode after match. A boolean
- * false mode causes no change.
- * @param int $pos Current byte index location in raw doc
- * thats being parsed
- * @return boolean False if there was any error
- * from the parser.
- * @access private
- */
- function _dispatchTokens($unmatched, $matched, $mode = false, $initialPos, $matchPos) {
- if (! $this->_invokeParser($unmatched, DOKU_LEXER_UNMATCHED, $initialPos) ){
- return false;
- }
- if ($this->_isModeEnd($mode)) {
- if (! $this->_invokeParser($matched, DOKU_LEXER_EXIT, $matchPos)) {
- return false;
- }
- return $this->_mode->leave();
- }
- if ($this->_isSpecialMode($mode)) {
- $this->_mode->enter($this->_decodeSpecial($mode));
- if (! $this->_invokeParser($matched, DOKU_LEXER_SPECIAL, $matchPos)) {
- return false;
- }
- return $this->_mode->leave();
- }
- if (is_string($mode)) {
- $this->_mode->enter($mode);
- return $this->_invokeParser($matched, DOKU_LEXER_ENTER, $matchPos);
- }
- return $this->_invokeParser($matched, DOKU_LEXER_MATCHED, $matchPos);
- }
-
- /**
- * Tests to see if the new mode is actually to leave
- * the current mode and pop an item from the matching
- * mode stack.
- * @param string $mode Mode to test.
- * @return boolean True if this is the exit mode.
- * @access private
- */
- function _isModeEnd($mode) {
- return ($mode === "__exit");
- }
-
- /**
- * Test to see if the mode is one where this mode
- * is entered for this token only and automatically
- * leaves immediately afterwoods.
- * @param string $mode Mode to test.
- * @return boolean True if this is the exit mode.
- * @access private
- */
- function _isSpecialMode($mode) {
- return (strncmp($mode, "_", 1) == 0);
- }
-
- /**
- * Strips the magic underscore marking single token
- * modes.
- * @param string $mode Mode to decode.
- * @return string Underlying mode name.
- * @access private
- */
- function _decodeSpecial($mode) {
- return substr($mode, 1);
- }
-
- /**
- * Calls the parser method named after the current
- * mode. Empty content will be ignored. The lexer
- * has a parser handler for each mode in the lexer.
- * @param string $content Text parsed.
- * @param boolean $is_match Token is recognised rather
- * than unparsed data.
- * @param int $pos Current byte index location in raw doc
- * thats being parsed
- * @access private
- */
- function _invokeParser($content, $is_match, $pos) {
- if (($content === "") || ($content === false)) {
- return true;
- }
- $handler = $this->_mode->getCurrent();
- if (isset($this->_mode_handlers[$handler])) {
- $handler = $this->_mode_handlers[$handler];
- }
-
- // modes starting with plugin_ are all handled by the same
- // handler but with an additional parameter
- if(substr($handler,0,7)=='plugin_'){
- list($handler,$plugin) = split('_',$handler,2);
- return $this->_parser->$handler($content, $is_match, $pos, $plugin);
- }
-
- return $this->_parser->$handler($content, $is_match, $pos);
- }
-
- /**
- * Tries to match a chunk of text and if successful
- * removes the recognised chunk and any leading
- * unparsed data. Empty strings will not be matched.
- * @param string $raw The subject to parse. This is the
- * content that will be eaten.
- * @return array Three item list of unparsed
- * content followed by the
- * recognised token and finally the
- * action the parser is to take.
- * True if no match, false if there
- * is a parsing error.
- * @access private
- */
- function _reduce(&$raw) {
- if (! isset($this->_regexes[$this->_mode->getCurrent()])) {
- return false;
- }
- if ($raw === "") {
- return true;
- }
- if ($action = $this->_regexes[$this->_mode->getCurrent()]->split($raw, $split)) {
- list($unparsed, $match, $raw) = $split;
- return array($unparsed, $match, $action);
- }
- return true;
- }
-}
-
-/**
-* Escapes regex characters other than (, ) and /
-* @TODO
-*/
-function Doku_Lexer_Escape($str) {
- //$str = addslashes($str);
- $chars = array(
- '/\\\\/',
- '/\./',
- '/\+/',
- '/\*/',
- '/\?/',
- '/\[/',
- '/\^/',
- '/\]/',
- '/\$/',
- '/\{/',
- '/\}/',
- '/\=/',
- '/\!/',
- '/\</',
- '/\>/',
- '/\|/',
- '/\:/'
- );
-
- $escaped = array(
- '\\\\\\\\',
- '\.',
- '\+',
- '\*',
- '\?',
- '\[',
- '\^',
- '\]',
- '\$',
- '\{',
- '\}',
- '\=',
- '\!',
- '\<',
- '\>',
- '\|',
- '\:'
- );
- return preg_replace($chars, $escaped, $str);
-}
-
-//Setup VIM: ex: et ts=4 sw=4 enc=utf-8 :
+<?php
+/**
+* Author Markus Baker: http://www.lastcraft.com
+* Version adapted from Simple Test: http://sourceforge.net/projects/simpletest/
+* For an intro to the Lexer see:
+* http://www.phppatterns.com/index.php/article/articleview/106/1/2/
+* @author Marcus Baker
+* @package Doku
+* @subpackage Lexer
+* @version $Id: lexer.php,v 1.1 2005/03/23 23:14:09 harryf Exp $
+*/
+
+/**
+* Init path constant
+*/
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
+
+/**#@+
+ * lexer mode constant
+ */
+define("DOKU_LEXER_ENTER", 1);
+define("DOKU_LEXER_MATCHED", 2);
+define("DOKU_LEXER_UNMATCHED", 3);
+define("DOKU_LEXER_EXIT", 4);
+define("DOKU_LEXER_SPECIAL", 5);
+/**#@-*/
+
+/**
+ * Compounded regular expression. Any of
+ * the contained patterns could match and
+ * when one does it's label is returned.
+ * @package Doku
+ * @subpackage Lexer
+ */
+class Doku_LexerParallelRegex {
+ var $_patterns;
+ var $_labels;
+ var $_regex;
+ var $_case;
+
+ /**
+ * Constructor. Starts with no patterns.
+ * @param boolean $case True for case sensitive, false
+ * for insensitive.
+ * @access public
+ */
+ function Doku_LexerParallelRegex($case) {
+ $this->_case = $case;
+ $this->_patterns = array();
+ $this->_labels = array();
+ $this->_regex = null;
+ }
+
+ /**
+ * Adds a pattern with an optional label.
+ * @param mixed $pattern Perl style regex. Must be UTF-8
+ * encoded. If its a string, the (, )
+ * lose their meaning unless they
+ * form part of a lookahead or
+ * lookbehind assertation.
+ * @param string $label Label of regex to be returned
+ * on a match. Label must be ASCII
+ * @access public
+ */
+ function addPattern($pattern, $label = true) {
+ $count = count($this->_patterns);
+ $this->_patterns[$count] = $pattern;
+ $this->_labels[$count] = $label;
+ $this->_regex = null;
+ }
+
+ /**
+ * Attempts to match all patterns at once against
+ * a string.
+ * @param string $subject String to match against.
+ * @param string $match First matched portion of
+ * subject.
+ * @return boolean True on success.
+ * @access public
+ */
+ function match($subject, &$match) {
+ if (count($this->_patterns) == 0) {
+ return false;
+ }
+ if (! preg_match($this->_getCompoundedRegex(), $subject, $matches)) {
+ $match = "";
+ return false;
+ }
+
+ $match = $matches[0];
+ $size = count($matches);
+ for ($i = 1; $i < $size; $i++) {
+ if ($matches[$i] && isset($this->_labels[$i - 1])) {
+ return $this->_labels[$i - 1];
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Attempts to split the string against all patterns at once
+ *
+ * @param string $subject String to match against.
+ * @param array $split The split result: array containing, pre-match, match & post-match strings
+ * @return boolean True on success.
+ * @access public
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+ function split($subject, &$split) {
+ if (count($this->_patterns) == 0) {
+ return false;
+ }
+
+ if (! preg_match($this->_getCompoundedRegex(), $subject, $matches)) {
+ if(function_exists('preg_last_error')){
+ $err = preg_last_error();
+ switch($err){
+ case PREG_BACKTRACK_LIMIT_ERROR:
+ msg('A PCRE backtrack error occured. Try to increase the pcre.backtrack_limit in php.ini',-1);
+ break;
+ case PREG_RECURSION_LIMIT_ERROR:
+ msg('A PCRE recursion error occured. Try to increase the pcre.recursion_limit in php.ini',-1);
+ break;
+ case PREG_BAD_UTF8_ERROR:
+ msg('A PCRE UTF-8 error occured. This might be caused by a faulty plugin',-1);
+ break;
+ case PREG_INTERNAL_ERROR:
+ msg('A PCRE internal error occured. This might be caused by a faulty plugin',-1);
+ break;
+ }
+ }
+
+ $split = array($subject, "", "");
+ return false;
+ }
+
+ $idx = count($matches)-2;
+
+ list($pre, $post) = preg_split($this->_patterns[$idx].$this->_getPerlMatchingFlags(), $subject, 2);
+
+ $split = array($pre, $matches[0], $post);
+ return isset($this->_labels[$idx]) ? $this->_labels[$idx] : true;
+ }
+
+ /**
+ * Compounds the patterns into a single
+ * regular expression separated with the
+ * "or" operator. Caches the regex.
+ * Will automatically escape (, ) and / tokens.
+ * @param array $patterns List of patterns in order.
+ * @access private
+ */
+ function _getCompoundedRegex() {
+ if ($this->_regex == null) {
+ $cnt = count($this->_patterns);
+ for ($i = 0; $i < $cnt; $i++) {
+
+ /*
+ * decompose the input pattern into "(", "(?", ")",
+ * "[...]", "[]..]", "[^]..]", "[...[:...:]..]", "\x"...
+ * elements.
+ */
+ preg_match_all('/\\\\.|' .
+ '\(\?|' .
+ '[()]|' .
+ '\[\^?\]?(?:\\\\.|\[:[^]]*:\]|[^]\\\\])*\]|' .
+ '[^[()\\\\]+/', $this->_patterns[$i], $elts);
+
+ $pattern = "";
+ $level = 0;
+
+ foreach ($elts[0] as $elt) {
+ /*
+ * for "(", ")" remember the nesting level, add "\"
+ * only to the non-"(?" ones.
+ */
+
+ switch($elt) {
+ case '(':
+ $pattern .= '\(';
+ break;
+ case ')':
+ if ($level > 0)
+ $level--; /* closing (? */
+ else
+ $pattern .= '\\';
+ $pattern .= ')';
+ break;
+ case '(?':
+ $level++;
+ $pattern .= '(?';
+ break;
+ default:
+ if (substr($elt, 0, 1) == '\\')
+ $pattern .= $elt;
+ else
+ $pattern .= str_replace('/', '\/', $elt);
+ }
+ }
+ $this->_patterns[$i] = "($pattern)";
+ }
+ $this->_regex = "/" . implode("|", $this->_patterns) . "/" . $this->_getPerlMatchingFlags();
+ }
+ return $this->_regex;
+ }
+
+ /**
+ * Accessor for perl regex mode flags to use.
+ * @return string Perl regex flags.
+ * @access private
+ */
+ function _getPerlMatchingFlags() {
+ return ($this->_case ? "msS" : "msSi");
+ }
+}
+
+/**
+ * States for a stack machine.
+ * @package Lexer
+ * @subpackage Lexer
+ */
+class Doku_LexerStateStack {
+ var $_stack;
+
+ /**
+ * Constructor. Starts in named state.
+ * @param string $start Starting state name.
+ * @access public
+ */
+ function Doku_LexerStateStack($start) {
+ $this->_stack = array($start);
+ }
+
+ /**
+ * Accessor for current state.
+ * @return string State.
+ * @access public
+ */
+ function getCurrent() {
+ return $this->_stack[count($this->_stack) - 1];
+ }
+
+ /**
+ * Adds a state to the stack and sets it
+ * to be the current state.
+ * @param string $state New state.
+ * @access public
+ */
+ function enter($state) {
+ array_push($this->_stack, $state);
+ }
+
+ /**
+ * Leaves the current state and reverts
+ * to the previous one.
+ * @return boolean False if we drop off
+ * the bottom of the list.
+ * @access public
+ */
+ function leave() {
+ if (count($this->_stack) == 1) {
+ return false;
+ }
+ array_pop($this->_stack);
+ return true;
+ }
+}
+
+/**
+ * Accepts text and breaks it into tokens.
+ * Some optimisation to make the sure the
+ * content is only scanned by the PHP regex
+ * parser once. Lexer modes must not start
+ * with leading underscores.
+ * @package Doku
+ * @subpackage Lexer
+ */
+class Doku_Lexer {
+ var $_regexes;
+ var $_parser;
+ var $_mode;
+ var $_mode_handlers;
+ var $_case;
+
+ /**
+ * Sets up the lexer in case insensitive matching
+ * by default.
+ * @param Doku_Parser $parser Handling strategy by
+ * reference.
+ * @param string $start Starting handler.
+ * @param boolean $case True for case sensitive.
+ * @access public
+ */
+ function Doku_Lexer(&$parser, $start = "accept", $case = false) {
+ $this->_case = $case;
+ $this->_regexes = array();
+ $this->_parser = &$parser;
+ $this->_mode = &new Doku_LexerStateStack($start);
+ $this->_mode_handlers = array();
+ }
+
+ /**
+ * Adds a token search pattern for a particular
+ * parsing mode. The pattern does not change the
+ * current mode.
+ * @param string $pattern Perl style regex, but ( and )
+ * lose the usual meaning.
+ * @param string $mode Should only apply this
+ * pattern when dealing with
+ * this type of input.
+ * @access public
+ */
+ function addPattern($pattern, $mode = "accept") {
+ if (! isset($this->_regexes[$mode])) {
+ $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
+ }
+ $this->_regexes[$mode]->addPattern($pattern);
+ }
+
+ /**
+ * Adds a pattern that will enter a new parsing
+ * mode. Useful for entering parenthesis, strings,
+ * tags, etc.
+ * @param string $pattern Perl style regex, but ( and )
+ * lose the usual meaning.
+ * @param string $mode Should only apply this
+ * pattern when dealing with
+ * this type of input.
+ * @param string $new_mode Change parsing to this new
+ * nested mode.
+ * @access public
+ */
+ function addEntryPattern($pattern, $mode, $new_mode) {
+ if (! isset($this->_regexes[$mode])) {
+ $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
+ }
+ $this->_regexes[$mode]->addPattern($pattern, $new_mode);
+ }
+
+ /**
+ * Adds a pattern that will exit the current mode
+ * and re-enter the previous one.
+ * @param string $pattern Perl style regex, but ( and )
+ * lose the usual meaning.
+ * @param string $mode Mode to leave.
+ * @access public
+ */
+ function addExitPattern($pattern, $mode) {
+ if (! isset($this->_regexes[$mode])) {
+ $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
+ }
+ $this->_regexes[$mode]->addPattern($pattern, "__exit");
+ }
+
+ /**
+ * Adds a pattern that has a special mode. Acts as an entry
+ * and exit pattern in one go, effectively calling a special
+ * parser handler for this token only.
+ * @param string $pattern Perl style regex, but ( and )
+ * lose the usual meaning.
+ * @param string $mode Should only apply this
+ * pattern when dealing with
+ * this type of input.
+ * @param string $special Use this mode for this one token.
+ * @access public
+ */
+ function addSpecialPattern($pattern, $mode, $special) {
+ if (! isset($this->_regexes[$mode])) {
+ $this->_regexes[$mode] = new Doku_LexerParallelRegex($this->_case);
+ }
+ $this->_regexes[$mode]->addPattern($pattern, "_$special");
+ }
+
+ /**
+ * Adds a mapping from a mode to another handler.
+ * @param string $mode Mode to be remapped.
+ * @param string $handler New target handler.
+ * @access public
+ */
+ function mapHandler($mode, $handler) {
+ $this->_mode_handlers[$mode] = $handler;
+ }
+
+ /**
+ * Splits the page text into tokens. Will fail
+ * if the handlers report an error or if no
+ * content is consumed. If successful then each
+ * unparsed and parsed token invokes a call to the
+ * held listener.
+ * @param string $raw Raw HTML text.
+ * @return boolean True on success, else false.
+ * @access public
+ */
+ function parse($raw) {
+ if (! isset($this->_parser)) {
+ return false;
+ }
+ $initialLength = strlen($raw);
+ $length = $initialLength;
+ $pos = 0;
+ while (is_array($parsed = $this->_reduce($raw))) {
+ list($unmatched, $matched, $mode) = $parsed;
+ $currentLength = strlen($raw);
+ $matchPos = $initialLength - $currentLength - strlen($matched);
+ if (! $this->_dispatchTokens($unmatched, $matched, $mode, $pos, $matchPos)) {
+ return false;
+ }
+ if ($currentLength == $length) {
+ return false;
+ }
+ $length = $currentLength;
+ $pos = $initialLength - $currentLength;
+ }
+ if (!$parsed) {
+ return false;
+ }
+ return $this->_invokeParser($raw, DOKU_LEXER_UNMATCHED, $pos);
+ }
+
+ /**
+ * Sends the matched token and any leading unmatched
+ * text to the parser changing the lexer to a new
+ * mode if one is listed.
+ * @param string $unmatched Unmatched leading portion.
+ * @param string $matched Actual token match.
+ * @param string $mode Mode after match. A boolean
+ * false mode causes no change.
+ * @param int $pos Current byte index location in raw doc
+ * thats being parsed
+ * @return boolean False if there was any error
+ * from the parser.
+ * @access private
+ */
+ function _dispatchTokens($unmatched, $matched, $mode = false, $initialPos, $matchPos) {
+ if (! $this->_invokeParser($unmatched, DOKU_LEXER_UNMATCHED, $initialPos) ){
+ return false;
+ }
+ if ($this->_isModeEnd($mode)) {
+ if (! $this->_invokeParser($matched, DOKU_LEXER_EXIT, $matchPos)) {
+ return false;
+ }
+ return $this->_mode->leave();
+ }
+ if ($this->_isSpecialMode($mode)) {
+ $this->_mode->enter($this->_decodeSpecial($mode));
+ if (! $this->_invokeParser($matched, DOKU_LEXER_SPECIAL, $matchPos)) {
+ return false;
+ }
+ return $this->_mode->leave();
+ }
+ if (is_string($mode)) {
+ $this->_mode->enter($mode);
+ return $this->_invokeParser($matched, DOKU_LEXER_ENTER, $matchPos);
+ }
+ return $this->_invokeParser($matched, DOKU_LEXER_MATCHED, $matchPos);
+ }
+
+ /**
+ * Tests to see if the new mode is actually to leave
+ * the current mode and pop an item from the matching
+ * mode stack.
+ * @param string $mode Mode to test.
+ * @return boolean True if this is the exit mode.
+ * @access private
+ */
+ function _isModeEnd($mode) {
+ return ($mode === "__exit");
+ }
+
+ /**
+ * Test to see if the mode is one where this mode
+ * is entered for this token only and automatically
+ * leaves immediately afterwoods.
+ * @param string $mode Mode to test.
+ * @return boolean True if this is the exit mode.
+ * @access private
+ */
+ function _isSpecialMode($mode) {
+ return (strncmp($mode, "_", 1) == 0);
+ }
+
+ /**
+ * Strips the magic underscore marking single token
+ * modes.
+ * @param string $mode Mode to decode.
+ * @return string Underlying mode name.
+ * @access private
+ */
+ function _decodeSpecial($mode) {
+ return substr($mode, 1);
+ }
+
+ /**
+ * Calls the parser method named after the current
+ * mode. Empty content will be ignored. The lexer
+ * has a parser handler for each mode in the lexer.
+ * @param string $content Text parsed.
+ * @param boolean $is_match Token is recognised rather
+ * than unparsed data.
+ * @param int $pos Current byte index location in raw doc
+ * thats being parsed
+ * @access private
+ */
+ function _invokeParser($content, $is_match, $pos) {
+ if (($content === "") || ($content === false)) {
+ return true;
+ }
+ $handler = $this->_mode->getCurrent();
+ if (isset($this->_mode_handlers[$handler])) {
+ $handler = $this->_mode_handlers[$handler];
+ }
+
+ // modes starting with plugin_ are all handled by the same
+ // handler but with an additional parameter
+ if(substr($handler,0,7)=='plugin_'){
+ list($handler,$plugin) = split('_',$handler,2);
+ return $this->_parser->$handler($content, $is_match, $pos, $plugin);
+ }
+
+ return $this->_parser->$handler($content, $is_match, $pos);
+ }
+
+ /**
+ * Tries to match a chunk of text and if successful
+ * removes the recognised chunk and any leading
+ * unparsed data. Empty strings will not be matched.
+ * @param string $raw The subject to parse. This is the
+ * content that will be eaten.
+ * @return array Three item list of unparsed
+ * content followed by the
+ * recognised token and finally the
+ * action the parser is to take.
+ * True if no match, false if there
+ * is a parsing error.
+ * @access private
+ */
+ function _reduce(&$raw) {
+ if (! isset($this->_regexes[$this->_mode->getCurrent()])) {
+ return false;
+ }
+ if ($raw === "") {
+ return true;
+ }
+ if ($action = $this->_regexes[$this->_mode->getCurrent()]->split($raw, $split)) {
+ list($unparsed, $match, $raw) = $split;
+ return array($unparsed, $match, $action);
+ }
+ return true;
+ }
+}
+
+/**
+* Escapes regex characters other than (, ) and /
+* @TODO
+*/
+function Doku_Lexer_Escape($str) {
+ //$str = addslashes($str);
+ $chars = array(
+ '/\\\\/',
+ '/\./',
+ '/\+/',
+ '/\*/',
+ '/\?/',
+ '/\[/',
+ '/\^/',
+ '/\]/',
+ '/\$/',
+ '/\{/',
+ '/\}/',
+ '/\=/',
+ '/\!/',
+ '/\</',
+ '/\>/',
+ '/\|/',
+ '/\:/'
+ );
+
+ $escaped = array(
+ '\\\\\\\\',
+ '\.',
+ '\+',
+ '\*',
+ '\?',
+ '\[',
+ '\^',
+ '\]',
+ '\$',
+ '\{',
+ '\}',
+ '\=',
+ '\!',
+ '\<',
+ '\>',
+ '\|',
+ '\:'
+ );
+ return preg_replace($chars, $escaped, $str);
+}
+
+//Setup VIM: ex: et ts=4 sw=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parser/metadata.php
===================================================================
--- site/trunk/www-root/wiki/inc/parser/metadata.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parser/metadata.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,444 +1,444 @@
-<?php
-/**
- * Renderer for metadata
- *
- * @author Esther Brunner <wikidesign at gmail.com>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
-
-if ( !defined('DOKU_LF') ) {
- // Some whitespace to help View > Source
- define ('DOKU_LF',"\n");
-}
-
-if ( !defined('DOKU_TAB') ) {
- // Some whitespace to help View > Source
- define ('DOKU_TAB',"\t");
-}
-
-require_once DOKU_INC . 'inc/parser/renderer.php';
-
-/**
- * The Renderer
- */
-class Doku_Renderer_metadata extends Doku_Renderer {
-
- var $doc = '';
- var $meta = array();
- var $persistent = array();
-
- var $headers = array();
- var $capture = true;
- var $store = '';
-
- function getFormat(){
- return 'metadata';
- }
-
- function document_start(){
- // reset metadata to persistent values
- $this->meta = $this->persistent;
- }
-
- function document_end(){
- // store internal info in metadata (notoc,nocache)
- $this->meta['internal'] = $this->info;
-
- if (!$this->meta['description']['abstract']){
- // cut off too long abstracts
- $this->doc = trim($this->doc);
- if (strlen($this->doc) > 500)
- $this->doc = utf8_substr($this->doc, 0, 500).'â¦';
- $this->meta['description']['abstract'] = $this->doc;
- }
- }
-
- function toc_additem($id, $text, $level) {
- global $conf;
-
- //only add items within configured levels
- if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){
- // the TOC is one of our standard ul list arrays ;-)
- $this->meta['description']['tableofcontents'][] = array(
- 'hid' => $id,
- 'title' => $text,
- 'type' => 'ul',
- 'level' => $level-$conf['toptoclevel']+1
- );
- }
-
- }
-
- function header($text, $level, $pos) {
-
- if (!$this->meta['title']) $this->meta['title'] = $text;
-
- // add the header to the TOC
- $hid = $this->_headerToLink($text,'true');
- $this->toc_additem($hid, $text, $level);
-
- // add to summary
- if ($this->capture && ($level > 1)) $this->doc .= DOKU_LF.$text.DOKU_LF;
- }
-
- function section_open($level){}
- function section_close(){}
-
- function cdata($text){
- if ($this->capture) $this->doc .= $text;
- }
-
- function p_open(){
- if ($this->capture) $this->doc .= DOKU_LF;
- }
-
- function p_close(){
- if ($this->capture){
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
- }
-
- function linebreak(){
- if ($this->capture) $this->doc .= DOKU_LF;
- }
-
- function hr(){
- if ($this->capture){
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF.'----------'.DOKU_LF;
- }
- }
-
- function strong_open(){}
- function strong_close(){}
-
- function emphasis_open(){}
- function emphasis_close(){}
-
- function underline_open(){}
- function underline_close(){}
-
- function monospace_open(){}
- function monospace_close(){}
-
- function subscript_open(){}
- function subscript_close(){}
-
- function superscript_open(){}
- function superscript_close(){}
-
- function deleted_open(){}
- function deleted_close(){}
-
- /**
- * Callback for footnote start syntax
- *
- * All following content will go to the footnote instead of
- * the document. To achieve this the previous rendered content
- * is moved to $store and $doc is cleared
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function footnote_open() {
- if ($this->capture){
- // move current content to store and record footnote
- $this->store = $this->doc;
- $this->doc = '';
- }
- }
-
- /**
- * Callback for footnote end syntax
- *
- * All rendered content is moved to the $footnotes array and the old
- * content is restored from $store again
- *
- * @author Andreas Gohr
- */
- function footnote_close() {
- if ($this->capture){
- // restore old content
- $this->doc = $this->store;
- $this->store = '';
- }
- }
-
- function listu_open(){
- if ($this->capture) $this->doc .= DOKU_LF;
- }
-
- function listu_close(){
- if ($this->capture && (strlen($this->doc) > 250)) $this->capture = false;
- }
-
- function listo_open(){
- if ($this->capture) $this->doc .= DOKU_LF;
- }
-
- function listo_close(){
- if ($this->capture && (strlen($this->doc) > 250)) $this->capture = false;
- }
-
- function listitem_open($level){
- if ($this->capture) $this->doc .= str_repeat(DOKU_TAB, $level).'* ';
- }
-
- function listitem_close(){
- if ($this->capture) $this->doc .= DOKU_LF;
- }
-
- function listcontent_open(){}
- function listcontent_close(){}
-
- function unformatted($text){
- if ($this->capture) $this->doc .= $text;
- }
-
- function php($text){}
-
- function phpblock($text){}
-
- function html($text){}
-
- function htmlblock($text){}
-
- function preformatted($text){
- if ($this->capture) $this->doc .= $text;
- }
-
- function file($text){
- if ($this->capture){
- $this->doc .= DOKU_LF.$text;
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
- }
-
- function quote_open(){
- if ($this->capture) $this->doc .= DOKU_LF.DOKU_TAB.'"';
- }
-
- function quote_close(){
- if ($this->capture){
- $this->doc .= '"';
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
- }
-
- function code($text, $language = NULL){
- if ($this->capture){
- $this->doc .= DOKU_LF.$text;
- if (strlen($this->doc) > 250) $this->capture = false;
- else $this->doc .= DOKU_LF;
- }
- }
-
- function acronym($acronym){
- if ($this->capture) $this->doc .= $acronym;
- }
-
- function smiley($smiley){
- if ($this->capture) $this->doc .= $smiley;
- }
-
- function entity($entity){
- if ($this->capture) $this->doc .= $entity;
- }
-
- function multiplyentity($x, $y){
- if ($this->capture) $this->doc .= $x.'Ã'.$y;
- }
-
- function singlequoteopening(){
- global $lang;
- if ($this->capture) $this->doc .= $lang['singlequoteopening'];
- }
-
- function singlequoteclosing(){
- global $lang;
- if ($this->capture) $this->doc .= $lang['singlequoteclosing'];
- }
-
- function apostrophe() {
- global $lang;
- if ($this->capture) $this->doc .= $lang['apostrophe'];
- }
-
- function doublequoteopening(){
- global $lang;
- if ($this->capture) $this->doc .= $lang['doublequoteopening'];
- }
-
- function doublequoteclosing(){
- global $lang;
- if ($this->capture) $this->doc .= $lang['doublequoteclosing'];
- }
-
- function camelcaselink($link) {
- $this->internallink($link, $link);
- }
-
- function locallink($hash, $name = NULL){}
-
- /**
- * keep track of internal links in $this->meta['relation']['references']
- */
- function internallink($id, $name = NULL){
- global $ID;
-
- $default = $this->_simpleTitle($id);
-
- // first resolve and clean up the $id
- resolve_pageid(getNS($ID), $id, $exists);
- list($page, $hash) = split('#', $id, 2);
-
- // set metadata
- $this->meta['relation']['references'][$page] = $exists;
- // $data = array('relation' => array('isreferencedby' => array($ID => true)));
- // p_set_metadata($id, $data);
-
- // add link title to summary
- if ($this->capture){
- $name = $this->_getLinkTitle($name, $default, $id);
- $this->doc .= $name;
- }
- }
-
- function externallink($url, $name = NULL){
- if ($this->capture){
- if ($name) $this->doc .= $name;
- else $this->doc .= '<'.$url.'>';
- }
- }
-
- function interwikilink($match, $name = NULL, $wikiName, $wikiUri){
- if ($this->capture){
- list($wikiUri, $hash) = explode('#', $wikiUri, 2);
- $name = $this->_getLinkTitle($name, $wikiName.'>'.$wikiUri);
- $this->doc .= $name;
- }
- }
-
- function windowssharelink($url, $name = NULL){
- if ($this->capture){
- if ($name) $this->doc .= $name;
- else $this->doc .= '<'.$url.'>';
- }
- }
-
- function emaillink($address, $name = NULL){
- if ($this->capture){
- if ($name) $this->doc .= $name;
- else $this->doc .= '<'.$address.'>';
- }
- }
-
- function internalmedia($src, $title=NULL, $align=NULL, $width=NULL,
- $height=NULL, $cache=NULL, $linking=NULL){
- if ($this->capture && $title) $this->doc .= '['.$title.']';
- }
-
- function externalmedia($src, $title=NULL, $align=NULL, $width=NULL,
- $height=NULL, $cache=NULL, $linking=NULL){
- if ($this->capture && $title) $this->doc .= '['.$title.']';
- }
-
- function rss($url,$params) {
- $this->meta['relation']['haspart'][$url] = true;
-
- $this->meta['date']['valid']['age'] =
- isset($this->meta['date']['valid']['age']) ?
- min($this->meta['date']['valid']['age'],$params['refresh']) :
- $params['refresh'];
- }
-
- function table_open($maxcols = NULL, $numrows = NULL){}
- function table_close(){}
-
- function tablerow_open(){}
- function tablerow_close(){}
-
- function tableheader_open($colspan = 1, $align = NULL){}
- function tableheader_close(){}
-
- function tablecell_open($colspan = 1, $align = NULL){}
- function tablecell_close(){}
-
- //----------------------------------------------------------
- // Utils
-
- /**
- * Removes any Namespace from the given name but keeps
- * casing and special chars
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _simpleTitle($name){
- global $conf;
-
- if(is_array($name)) return '';
-
- if($conf['useslash']){
- $nssep = '[:;/]';
- }else{
- $nssep = '[:;]';
- }
- $name = preg_replace('!.*'.$nssep.'!','',$name);
- //if there is a hash we use the anchor name only
- $name = preg_replace('!.*#!','',$name);
- return $name;
- }
-
- /**
- * Creates a linkid from a headline
- *
- * @param string $title The headline title
- * @param boolean $create Create a new unique ID?
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _headerToLink($title, $create=false) {
- $title = str_replace(':','',cleanID($title));
- $title = ltrim($title,'0123456789._-');
- if(empty($title)) $title='section';
-
- if($create){
- // make sure tiles are unique
- $num = '';
- while(in_array($title.$num,$this->headers)){
- ($num) ? $num++ : $num = 1;
- }
- $title = $title.$num;
- $this->headers[] = $title;
- }
-
- return $title;
- }
-
- /**
- * Construct a title and handle images in titles
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
- function _getLinkTitle($title, $default, $id=NULL) {
- global $conf;
-
- $isImage = false;
- if (is_null($title)){
- if ($conf['useheading'] && $id){
- $heading = p_get_first_heading($id,false);
- if ($heading) return $heading;
- }
- return $default;
- } else if (is_string($title)){
- return $title;
- } else if (is_array($title)){
- return '['.$title.']';
- }
- }
-
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * Renderer for metadata
+ *
+ * @author Esther Brunner <wikidesign at gmail.com>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
+
+if ( !defined('DOKU_LF') ) {
+ // Some whitespace to help View > Source
+ define ('DOKU_LF',"\n");
+}
+
+if ( !defined('DOKU_TAB') ) {
+ // Some whitespace to help View > Source
+ define ('DOKU_TAB',"\t");
+}
+
+require_once DOKU_INC . 'inc/parser/renderer.php';
+
+/**
+ * The Renderer
+ */
+class Doku_Renderer_metadata extends Doku_Renderer {
+
+ var $doc = '';
+ var $meta = array();
+ var $persistent = array();
+
+ var $headers = array();
+ var $capture = true;
+ var $store = '';
+
+ function getFormat(){
+ return 'metadata';
+ }
+
+ function document_start(){
+ // reset metadata to persistent values
+ $this->meta = $this->persistent;
+ }
+
+ function document_end(){
+ // store internal info in metadata (notoc,nocache)
+ $this->meta['internal'] = $this->info;
+
+ if (!$this->meta['description']['abstract']){
+ // cut off too long abstracts
+ $this->doc = trim($this->doc);
+ if (strlen($this->doc) > 500)
+ $this->doc = utf8_substr($this->doc, 0, 500).'â¦';
+ $this->meta['description']['abstract'] = $this->doc;
+ }
+ }
+
+ function toc_additem($id, $text, $level) {
+ global $conf;
+
+ //only add items within configured levels
+ if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){
+ // the TOC is one of our standard ul list arrays ;-)
+ $this->meta['description']['tableofcontents'][] = array(
+ 'hid' => $id,
+ 'title' => $text,
+ 'type' => 'ul',
+ 'level' => $level-$conf['toptoclevel']+1
+ );
+ }
+
+ }
+
+ function header($text, $level, $pos) {
+
+ if (!$this->meta['title']) $this->meta['title'] = $text;
+
+ // add the header to the TOC
+ $hid = $this->_headerToLink($text,'true');
+ $this->toc_additem($hid, $text, $level);
+
+ // add to summary
+ if ($this->capture && ($level > 1)) $this->doc .= DOKU_LF.$text.DOKU_LF;
+ }
+
+ function section_open($level){}
+ function section_close(){}
+
+ function cdata($text){
+ if ($this->capture) $this->doc .= $text;
+ }
+
+ function p_open(){
+ if ($this->capture) $this->doc .= DOKU_LF;
+ }
+
+ function p_close(){
+ if ($this->capture){
+ if (strlen($this->doc) > 250) $this->capture = false;
+ else $this->doc .= DOKU_LF;
+ }
+ }
+
+ function linebreak(){
+ if ($this->capture) $this->doc .= DOKU_LF;
+ }
+
+ function hr(){
+ if ($this->capture){
+ if (strlen($this->doc) > 250) $this->capture = false;
+ else $this->doc .= DOKU_LF.'----------'.DOKU_LF;
+ }
+ }
+
+ function strong_open(){}
+ function strong_close(){}
+
+ function emphasis_open(){}
+ function emphasis_close(){}
+
+ function underline_open(){}
+ function underline_close(){}
+
+ function monospace_open(){}
+ function monospace_close(){}
+
+ function subscript_open(){}
+ function subscript_close(){}
+
+ function superscript_open(){}
+ function superscript_close(){}
+
+ function deleted_open(){}
+ function deleted_close(){}
+
+ /**
+ * Callback for footnote start syntax
+ *
+ * All following content will go to the footnote instead of
+ * the document. To achieve this the previous rendered content
+ * is moved to $store and $doc is cleared
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function footnote_open() {
+ if ($this->capture){
+ // move current content to store and record footnote
+ $this->store = $this->doc;
+ $this->doc = '';
+ }
+ }
+
+ /**
+ * Callback for footnote end syntax
+ *
+ * All rendered content is moved to the $footnotes array and the old
+ * content is restored from $store again
+ *
+ * @author Andreas Gohr
+ */
+ function footnote_close() {
+ if ($this->capture){
+ // restore old content
+ $this->doc = $this->store;
+ $this->store = '';
+ }
+ }
+
+ function listu_open(){
+ if ($this->capture) $this->doc .= DOKU_LF;
+ }
+
+ function listu_close(){
+ if ($this->capture && (strlen($this->doc) > 250)) $this->capture = false;
+ }
+
+ function listo_open(){
+ if ($this->capture) $this->doc .= DOKU_LF;
+ }
+
+ function listo_close(){
+ if ($this->capture && (strlen($this->doc) > 250)) $this->capture = false;
+ }
+
+ function listitem_open($level){
+ if ($this->capture) $this->doc .= str_repeat(DOKU_TAB, $level).'* ';
+ }
+
+ function listitem_close(){
+ if ($this->capture) $this->doc .= DOKU_LF;
+ }
+
+ function listcontent_open(){}
+ function listcontent_close(){}
+
+ function unformatted($text){
+ if ($this->capture) $this->doc .= $text;
+ }
+
+ function php($text){}
+
+ function phpblock($text){}
+
+ function html($text){}
+
+ function htmlblock($text){}
+
+ function preformatted($text){
+ if ($this->capture) $this->doc .= $text;
+ }
+
+ function file($text){
+ if ($this->capture){
+ $this->doc .= DOKU_LF.$text;
+ if (strlen($this->doc) > 250) $this->capture = false;
+ else $this->doc .= DOKU_LF;
+ }
+ }
+
+ function quote_open(){
+ if ($this->capture) $this->doc .= DOKU_LF.DOKU_TAB.'"';
+ }
+
+ function quote_close(){
+ if ($this->capture){
+ $this->doc .= '"';
+ if (strlen($this->doc) > 250) $this->capture = false;
+ else $this->doc .= DOKU_LF;
+ }
+ }
+
+ function code($text, $language = NULL){
+ if ($this->capture){
+ $this->doc .= DOKU_LF.$text;
+ if (strlen($this->doc) > 250) $this->capture = false;
+ else $this->doc .= DOKU_LF;
+ }
+ }
+
+ function acronym($acronym){
+ if ($this->capture) $this->doc .= $acronym;
+ }
+
+ function smiley($smiley){
+ if ($this->capture) $this->doc .= $smiley;
+ }
+
+ function entity($entity){
+ if ($this->capture) $this->doc .= $entity;
+ }
+
+ function multiplyentity($x, $y){
+ if ($this->capture) $this->doc .= $x.'Ã'.$y;
+ }
+
+ function singlequoteopening(){
+ global $lang;
+ if ($this->capture) $this->doc .= $lang['singlequoteopening'];
+ }
+
+ function singlequoteclosing(){
+ global $lang;
+ if ($this->capture) $this->doc .= $lang['singlequoteclosing'];
+ }
+
+ function apostrophe() {
+ global $lang;
+ if ($this->capture) $this->doc .= $lang['apostrophe'];
+ }
+
+ function doublequoteopening(){
+ global $lang;
+ if ($this->capture) $this->doc .= $lang['doublequoteopening'];
+ }
+
+ function doublequoteclosing(){
+ global $lang;
+ if ($this->capture) $this->doc .= $lang['doublequoteclosing'];
+ }
+
+ function camelcaselink($link) {
+ $this->internallink($link, $link);
+ }
+
+ function locallink($hash, $name = NULL){}
+
+ /**
+ * keep track of internal links in $this->meta['relation']['references']
+ */
+ function internallink($id, $name = NULL){
+ global $ID;
+
+ $default = $this->_simpleTitle($id);
+
+ // first resolve and clean up the $id
+ resolve_pageid(getNS($ID), $id, $exists);
+ list($page, $hash) = split('#', $id, 2);
+
+ // set metadata
+ $this->meta['relation']['references'][$page] = $exists;
+ // $data = array('relation' => array('isreferencedby' => array($ID => true)));
+ // p_set_metadata($id, $data);
+
+ // add link title to summary
+ if ($this->capture){
+ $name = $this->_getLinkTitle($name, $default, $id);
+ $this->doc .= $name;
+ }
+ }
+
+ function externallink($url, $name = NULL){
+ if ($this->capture){
+ if ($name) $this->doc .= $name;
+ else $this->doc .= '<'.$url.'>';
+ }
+ }
+
+ function interwikilink($match, $name = NULL, $wikiName, $wikiUri){
+ if ($this->capture){
+ list($wikiUri, $hash) = explode('#', $wikiUri, 2);
+ $name = $this->_getLinkTitle($name, $wikiName.'>'.$wikiUri);
+ $this->doc .= $name;
+ }
+ }
+
+ function windowssharelink($url, $name = NULL){
+ if ($this->capture){
+ if ($name) $this->doc .= $name;
+ else $this->doc .= '<'.$url.'>';
+ }
+ }
+
+ function emaillink($address, $name = NULL){
+ if ($this->capture){
+ if ($name) $this->doc .= $name;
+ else $this->doc .= '<'.$address.'>';
+ }
+ }
+
+ function internalmedia($src, $title=NULL, $align=NULL, $width=NULL,
+ $height=NULL, $cache=NULL, $linking=NULL){
+ if ($this->capture && $title) $this->doc .= '['.$title.']';
+ }
+
+ function externalmedia($src, $title=NULL, $align=NULL, $width=NULL,
+ $height=NULL, $cache=NULL, $linking=NULL){
+ if ($this->capture && $title) $this->doc .= '['.$title.']';
+ }
+
+ function rss($url,$params) {
+ $this->meta['relation']['haspart'][$url] = true;
+
+ $this->meta['date']['valid']['age'] =
+ isset($this->meta['date']['valid']['age']) ?
+ min($this->meta['date']['valid']['age'],$params['refresh']) :
+ $params['refresh'];
+ }
+
+ function table_open($maxcols = NULL, $numrows = NULL){}
+ function table_close(){}
+
+ function tablerow_open(){}
+ function tablerow_close(){}
+
+ function tableheader_open($colspan = 1, $align = NULL){}
+ function tableheader_close(){}
+
+ function tablecell_open($colspan = 1, $align = NULL){}
+ function tablecell_close(){}
+
+ //----------------------------------------------------------
+ // Utils
+
+ /**
+ * Removes any Namespace from the given name but keeps
+ * casing and special chars
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _simpleTitle($name){
+ global $conf;
+
+ if(is_array($name)) return '';
+
+ if($conf['useslash']){
+ $nssep = '[:;/]';
+ }else{
+ $nssep = '[:;]';
+ }
+ $name = preg_replace('!.*'.$nssep.'!','',$name);
+ //if there is a hash we use the anchor name only
+ $name = preg_replace('!.*#!','',$name);
+ return $name;
+ }
+
+ /**
+ * Creates a linkid from a headline
+ *
+ * @param string $title The headline title
+ * @param boolean $create Create a new unique ID?
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _headerToLink($title, $create=false) {
+ $title = str_replace(':','',cleanID($title));
+ $title = ltrim($title,'0123456789._-');
+ if(empty($title)) $title='section';
+
+ if($create){
+ // make sure tiles are unique
+ $num = '';
+ while(in_array($title.$num,$this->headers)){
+ ($num) ? $num++ : $num = 1;
+ }
+ $title = $title.$num;
+ $this->headers[] = $title;
+ }
+
+ return $title;
+ }
+
+ /**
+ * Construct a title and handle images in titles
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+ function _getLinkTitle($title, $default, $id=NULL) {
+ global $conf;
+
+ $isImage = false;
+ if (is_null($title)){
+ if ($conf['useheading'] && $id){
+ $heading = p_get_first_heading($id,false);
+ if ($heading) return $heading;
+ }
+ return $default;
+ } else if (is_string($title)){
+ return $title;
+ } else if (is_array($title)){
+ return '['.$title.']';
+ }
+ }
+
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parser/parser.php
===================================================================
--- site/trunk/www-root/wiki/inc/parser/parser.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parser/parser.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,941 +1,941 @@
-<?php
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
-
-require_once DOKU_INC . 'inc/parser/lexer.php';
-require_once DOKU_INC . 'inc/parser/handler.php';
-
-
-/**
- * Define various types of modes used by the parser - they are used to
- * populate the list of modes another mode accepts
- */
-global $PARSER_MODES;
-$PARSER_MODES = array(
- // containers are complex modes that can contain many other modes
- // hr breaks the principle but they shouldn't be used in tables / lists
- // so they are put here
- 'container' => array('listblock','table','quote','hr'),
-
- // some mode are allowed inside the base mode only
- 'baseonly' => array('header'),
-
- // modes for styling text -- footnote behaves similar to styling
- 'formatting' => array('strong', 'emphasis', 'underline', 'monospace',
- 'subscript', 'superscript', 'deleted', 'footnote'),
-
- // modes where the token is simply replaced - they can not contain any
- // other modes
- 'substition' => array('acronym','smiley','wordblock','entity',
- 'camelcaselink', 'internallink','media',
- 'externallink','linebreak','emaillink',
- 'windowssharelink','filelink','notoc',
- 'nocache','multiplyentity','quotes','rss'),
-
- // modes which have a start and end token but inside which
- // no other modes should be applied
- 'protected' => array('preformatted','code','file','php','html','htmlblock','phpblock'),
-
- // inside this mode no wiki markup should be applied but lineendings
- // and whitespace isn't preserved
- 'disabled' => array('unformatted'),
-
- // used to mark paragraph boundaries
- 'paragraphs' => array('eol')
-);
-
-//-------------------------------------------------------------------
-
-/**
-* Sets up the Lexer with modes and points it to the Handler
-* For an intro to the Lexer see: wiki:parser
-*/
-class Doku_Parser {
-
- var $Handler;
-
- var $Lexer;
-
- var $modes = array();
-
- var $connected = false;
-
- function addBaseMode(& $BaseMode) {
- $this->modes['base'] = & $BaseMode;
- if ( !$this->Lexer ) {
- $this->Lexer = & new Doku_Lexer($this->Handler,'base', true);
- }
- $this->modes['base']->Lexer = & $this->Lexer;
- }
-
- /**
- * PHP preserves order of associative elements
- * Mode sequence is important
- */
- function addMode($name, & $Mode) {
- if ( !isset($this->modes['base']) ) {
- $this->addBaseMode(new Doku_Parser_Mode_base());
- }
- $Mode->Lexer = & $this->Lexer;
- $this->modes[$name] = & $Mode;
- }
-
- function connectModes() {
-
- if ( $this->connected ) {
- return;
- }
-
- foreach ( array_keys($this->modes) as $mode ) {
-
- // Base isn't connected to anything
- if ( $mode == 'base' ) {
- continue;
- }
-
- $this->modes[$mode]->preConnect();
-
- foreach ( array_keys($this->modes) as $cm ) {
-
- if ( $this->modes[$cm]->accepts($mode) ) {
- $this->modes[$mode]->connectTo($cm);
- }
-
- }
-
- $this->modes[$mode]->postConnect();
- }
-
- $this->connected = true;
- }
-
- function parse($doc) {
- if ( $this->Lexer ) {
- $this->connectModes();
- // Normalize CRs and pad doc
- $doc = "\n".str_replace("\r\n","\n",$doc)."\n";
- $this->Lexer->parse($doc);
- $this->Handler->_finalize();
- return $this->Handler->calls;
- } else {
- return false;
- }
- }
-
-}
-
-//-------------------------------------------------------------------
-/**
- * This class and all the subclasses below are
- * used to reduce the effort required to register
- * modes with the Lexer. For performance these
- * could all be eliminated later perhaps, or
- * the Parser could be serialized to a file once
- * all modes are registered
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
-*/
-class Doku_Parser_Mode {
-
- var $Lexer;
-
- var $allowedModes = array();
-
- // returns a number used to determine in which order modes are added
- function getSort() {
- trigger_error('getSort() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
- // Called before any calls to connectTo
- function preConnect() {}
-
- // Connects the mode
- function connectTo($mode) {}
-
- // Called after all calls to connectTo
- function postConnect() {}
-
- function accepts($mode) {
- return in_array($mode, (array) $this->allowedModes );
- }
-
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_base extends Doku_Parser_Mode {
-
- function Doku_Parser_Mode_base() {
- global $PARSER_MODES;
-
- $this->allowedModes = array_merge (
- $PARSER_MODES['container'],
- $PARSER_MODES['baseonly'],
- $PARSER_MODES['paragraphs'],
- $PARSER_MODES['formatting'],
- $PARSER_MODES['substition'],
- $PARSER_MODES['protected'],
- $PARSER_MODES['disabled']
- );
- }
-
- function getSort() {
- return 0;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_footnote extends Doku_Parser_Mode {
-
- function Doku_Parser_Mode_footnote() {
- global $PARSER_MODES;
-
- $this->allowedModes = array_merge (
- $PARSER_MODES['container'],
- $PARSER_MODES['formatting'],
- $PARSER_MODES['substition'],
- $PARSER_MODES['protected'],
- $PARSER_MODES['disabled']
- );
-
- unset($this->allowedModes[array_search('footnote', $this->allowedModes)]);
- }
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern(
- '\x28\x28(?=.*\x29\x29)',$mode,'footnote'
- );
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern(
- '\x29\x29','footnote'
- );
- }
-
- function getSort() {
- return 150;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_header extends Doku_Parser_Mode {
-
- function preConnect() {
- //we're not picky about the closing ones, two are enough
- $this->Lexer->addSpecialPattern(
- '[ \t]*={2,}[^\n]+={2,}[ \t]*(?=\n)',
- 'base',
- 'header'
- );
- }
-
- function getSort() {
- return 50;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_notoc extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern('~~NOTOC~~',$mode,'notoc');
- }
-
- function getSort() {
- return 30;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_nocache extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern('~~NOCACHE~~',$mode,'nocache');
- }
-
- function getSort() {
- return 40;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_linebreak extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern('\x5C{2}(?=\s)',$mode,'linebreak');
- }
-
- function getSort() {
- return 140;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_eol extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $badModes = array('listblock','table');
- if ( in_array($mode, $badModes) ) {
- return;
- }
- $this->Lexer->addSpecialPattern('\n',$mode,'eol');
- }
-
- function getSort() {
- return 370;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_hr extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern('\n[ \t]*-{4,}[ \t]*(?=\n)',$mode,'hr');
- }
-
- function getSort() {
- return 160;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_formatting extends Doku_Parser_Mode {
- var $type;
-
- var $formatting = array (
- 'strong' => array (
- 'entry'=>'\*\*(?=.*\*\*)',
- 'exit'=>'\*\*',
- 'sort'=>70
- ),
-
- 'emphasis'=> array (
- 'entry'=>'//(?=[^\x00]*[^:]//)', //hack for bug #384
- 'exit'=>'//',
- 'sort'=>80
- ),
-
- 'underline'=> array (
- 'entry'=>'__(?=.*__)',
- 'exit'=>'__',
- 'sort'=>90
- ),
-
- 'monospace'=> array (
- 'entry'=>'\x27\x27(?=.*\x27\x27)',
- 'exit'=>'\x27\x27',
- 'sort'=>100
- ),
-
- 'subscript'=> array (
- 'entry'=>'<sub>(?=.*</sub>)',
- 'exit'=>'</sub>',
- 'sort'=>110
- ),
-
- 'superscript'=> array (
- 'entry'=>'<sup>(?=.*</sup>)',
- 'exit'=>'</sup>',
- 'sort'=>120
- ),
-
- 'deleted'=> array (
- 'entry'=>'<del>(?=.*</del>)',
- 'exit'=>'</del>',
- 'sort'=>130
- ),
- );
-
- function Doku_Parser_Mode_formatting($type) {
- global $PARSER_MODES;
-
- if ( !array_key_exists($type, $this->formatting) ) {
- trigger_error('Invalid formatting type '.$type, E_USER_WARNING);
- }
-
- $this->type = $type;
-
- // formatting may contain other formatting but not it self
- $modes = $PARSER_MODES['formatting'];
- $key = array_search($type, $modes);
- if ( is_int($key) ) {
- unset($modes[$key]);
- }
-
- $this->allowedModes = array_merge (
- $modes,
- $PARSER_MODES['substition'],
- $PARSER_MODES['disabled']
- );
- }
-
- function connectTo($mode) {
-
- // Can't nest formatting in itself
- if ( $mode == $this->type ) {
- return;
- }
-
- $this->Lexer->addEntryPattern(
- $this->formatting[$this->type]['entry'],
- $mode,
- $this->type
- );
- }
-
- function postConnect() {
-
- $this->Lexer->addExitPattern(
- $this->formatting[$this->type]['exit'],
- $this->type
- );
-
- }
-
- function getSort() {
- return $this->formatting[$this->type]['sort'];
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_listblock extends Doku_Parser_Mode {
-
- function Doku_Parser_Mode_listblock() {
- global $PARSER_MODES;
-
- $this->allowedModes = array_merge (
- $PARSER_MODES['formatting'],
- $PARSER_MODES['substition'],
- $PARSER_MODES['disabled'],
- $PARSER_MODES['protected'] #XXX new
- );
-
- // $this->allowedModes[] = 'footnote';
- }
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('\n {2,}[\-\*]',$mode,'listblock');
- $this->Lexer->addEntryPattern('\n\t{1,}[\-\*]',$mode,'listblock');
-
- $this->Lexer->addPattern('\n {2,}[\-\*]','listblock');
- $this->Lexer->addPattern('\n\t{1,}[\-\*]','listblock');
-
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern('\n','listblock');
- }
-
- function getSort() {
- return 10;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_table extends Doku_Parser_Mode {
-
- function Doku_Parser_Mode_table() {
- global $PARSER_MODES;
-
- $this->allowedModes = array_merge (
- $PARSER_MODES['formatting'],
- $PARSER_MODES['substition'],
- $PARSER_MODES['disabled'],
- $PARSER_MODES['protected']
- );
- }
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('\n\^',$mode,'table');
- $this->Lexer->addEntryPattern('\n\|',$mode,'table');
- }
-
- function postConnect() {
- $this->Lexer->addPattern('\n\^','table');
- $this->Lexer->addPattern('\n\|','table');
- #$this->Lexer->addPattern(' {2,}','table');
- $this->Lexer->addPattern('[\t ]+','table');
- $this->Lexer->addPattern('\^','table');
- $this->Lexer->addPattern('\|','table');
- $this->Lexer->addExitPattern('\n','table');
- }
-
- function getSort() {
- return 60;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_unformatted extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('<nowiki>(?=.*</nowiki>)',$mode,'unformatted');
- $this->Lexer->addEntryPattern('%%(?=.*%%)',$mode,'unformattedalt');
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern('</nowiki>','unformatted');
- $this->Lexer->addExitPattern('%%','unformattedalt');
- $this->Lexer->mapHandler('unformattedalt','unformatted');
- }
-
- function getSort() {
- return 170;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_php extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('<php>(?=.*</php>)',$mode,'php');
- $this->Lexer->addEntryPattern('<PHP>(?=.*</PHP>)',$mode,'phpblock');
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern('</php>','php');
- $this->Lexer->addExitPattern('</PHP>','phpblock');
- }
-
- function getSort() {
- return 180;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_html extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('<html>(?=.*</html>)',$mode,'html');
- $this->Lexer->addEntryPattern('<HTML>(?=.*</HTML>)',$mode,'htmlblock');
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern('</html>','html');
- $this->Lexer->addExitPattern('</HTML>','htmlblock');
- }
-
- function getSort() {
- return 190;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_preformatted extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- // Has hard coded awareness of lists...
- $this->Lexer->addEntryPattern('\n (?![\*\-])',$mode,'preformatted');
- $this->Lexer->addEntryPattern('\n\t(?![\*\-])',$mode,'preformatted');
-
- // How to effect a sub pattern with the Lexer!
- $this->Lexer->addPattern('\n ','preformatted');
- $this->Lexer->addPattern('\n\t','preformatted');
-
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern('\n','preformatted');
- }
-
- function getSort() {
- return 20;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_code extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('<code(?=.*</code>)',$mode,'code');
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern('</code>','code');
- }
-
- function getSort() {
- return 200;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_file extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('<file>(?=.*</file>)',$mode,'file');
- }
-
- function postConnect() {
- $this->Lexer->addExitPattern('</file>','file');
- }
-
- function getSort() {
- return 210;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_quote extends Doku_Parser_Mode {
-
- function Doku_Parser_Mode_quote() {
- global $PARSER_MODES;
-
- $this->allowedModes = array_merge (
- $PARSER_MODES['formatting'],
- $PARSER_MODES['substition'],
- $PARSER_MODES['disabled'],
- $PARSER_MODES['protected'] #XXX new
- );
- #$this->allowedModes[] = 'footnote';
- #$this->allowedModes[] = 'preformatted';
- #$this->allowedModes[] = 'unformatted';
- }
-
- function connectTo($mode) {
- $this->Lexer->addEntryPattern('\n>{1,}',$mode,'quote');
- }
-
- function postConnect() {
- $this->Lexer->addPattern('\n>{1,}','quote');
- $this->Lexer->addExitPattern('\n','quote');
- }
-
- function getSort() {
- return 220;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_acronym extends Doku_Parser_Mode {
- // A list
- var $acronyms = array();
- var $pattern = '';
-
- function Doku_Parser_Mode_acronym($acronyms) {
- $this->acronyms = $acronyms;
- }
-
- function preConnect() {
- if(!count($this->acronyms)) return;
-
- $bound = '[\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]';
- $acronyms = array_map('Doku_Lexer_Escape',$this->acronyms);
- $this->pattern = '(?<=^|'.$bound.')(?:'.join('|',$acronyms).')(?='.$bound.')';
- }
-
- function connectTo($mode) {
- if(!count($this->acronyms)) return;
-
- if ( strlen($this->pattern) > 0 ) {
- $this->Lexer->addSpecialPattern($this->pattern,$mode,'acronym');
- }
- }
-
- function getSort() {
- return 240;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_smiley extends Doku_Parser_Mode {
- // A list
- var $smileys = array();
- var $pattern = '';
-
- function Doku_Parser_Mode_smiley($smileys) {
- $this->smileys = $smileys;
- }
-
- function preConnect() {
- if(!count($this->smileys) || $this->pattern != '') return;
-
- $sep = '';
- foreach ( $this->smileys as $smiley ) {
- $this->pattern .= $sep.Doku_Lexer_Escape($smiley);
- $sep = '|';
- }
- }
-
- function connectTo($mode) {
- if(!count($this->smileys)) return;
-
- if ( strlen($this->pattern) > 0 ) {
- $this->Lexer->addSpecialPattern($this->pattern,$mode,'smiley');
- }
- }
-
- function getSort() {
- return 230;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_wordblock extends Doku_Parser_Mode {
- // A list
- var $badwords = array();
- var $pattern = '';
-
- function Doku_Parser_Mode_wordblock($badwords) {
- $this->badwords = $badwords;
- }
-
- function preConnect() {
-
- if ( count($this->badwords) == 0 || $this->pattern != '') {
- return;
- }
-
- $sep = '';
- foreach ( $this->badwords as $badword ) {
- $this->pattern .= $sep.'(?<=\b)(?i)'.Doku_Lexer_Escape($badword).'(?-i)(?=\b)';
- $sep = '|';
- }
-
- }
-
- function connectTo($mode) {
- if ( strlen($this->pattern) > 0 ) {
- $this->Lexer->addSpecialPattern($this->pattern,$mode,'wordblock');
- }
- }
-
- function getSort() {
- return 250;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_entity extends Doku_Parser_Mode {
- // A list
- var $entities = array();
- var $pattern = '';
-
- function Doku_Parser_Mode_entity($entities) {
- $this->entities = $entities;
- }
-
- function preConnect() {
- if(!count($this->entities) || $this->pattern != '') return;
-
- $sep = '';
- foreach ( $this->entities as $entity ) {
- $this->pattern .= $sep.Doku_Lexer_Escape($entity);
- $sep = '|';
- }
- }
-
- function connectTo($mode) {
- if(!count($this->entities)) return;
-
- if ( strlen($this->pattern) > 0 ) {
- $this->Lexer->addSpecialPattern($this->pattern,$mode,'entity');
- }
- }
-
- function getSort() {
- return 260;
- }
-}
-
-//-------------------------------------------------------------------
-// Implements the 640x480 replacement
-class Doku_Parser_Mode_multiplyentity extends Doku_Parser_Mode {
-
- function connectTo($mode) {
-
- $this->Lexer->addSpecialPattern(
- '(?<=\b)\d+[xX]\d+(?=\b)',$mode,'multiplyentity'
- );
-
- }
-
- function getSort() {
- return 270;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_quotes extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- global $conf;
-
- $ws = '\s/\#~:+=&%@\-\x28\x29\]\[{}><"\''; // whitespace
- $punc = ';,\.?!';
-
- if($conf['typography'] == 2){
- $this->Lexer->addSpecialPattern(
- "(?<=^|[$ws])'(?=[^$ws$punc])",$mode,'singlequoteopening'
- );
- $this->Lexer->addSpecialPattern(
- "(?<=^|[^$ws]|[$punc])'(?=$|[$ws$punc])",$mode,'singlequoteclosing'
- );
- $this->Lexer->addSpecialPattern(
- "(?<=^|[^$ws$punc])'(?=$|[^$ws$punc])",$mode,'apostrophe'
- );
- }
-
- $this->Lexer->addSpecialPattern(
- "(?<=^|[$ws])\"(?=[^$ws$punc])",$mode,'doublequoteopening'
- );
- $this->Lexer->addSpecialPattern(
- "\"",$mode,'doublequoteclosing'
- );
-
-
- }
-
- function getSort() {
- return 280;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_camelcaselink extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern(
- '\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b',$mode,'camelcaselink'
- );
- }
-
- function getSort() {
- return 290;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_internallink extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- // Word boundaries?
- $this->Lexer->addSpecialPattern("\[\[.+?\]\]",$mode,'internallink');
- }
-
- function getSort() {
- return 300;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_media extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- // Word boundaries?
- $this->Lexer->addSpecialPattern("\{\{[^\}]+\}\}",$mode,'media');
- }
-
- function getSort() {
- return 320;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_rss extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern("\{\{rss>[^\}]+\}\}",$mode,'rss');
- }
-
- function getSort() {
- return 310;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_externallink extends Doku_Parser_Mode {
- var $schemes = array('http','https','telnet','gopher','wais','ftp','ed2k','irc','ldap');
- var $patterns = array();
-
- function preConnect() {
- if(count($this->patterns)) return;
-
- $ltrs = '\w';
- $gunk = '/\#~:.?+=&%@!\-';
- $punc = '.:?\-;,';
- $host = $ltrs.$punc;
- $any = $ltrs.$gunk.$punc;
-
- foreach ( $this->schemes as $scheme ) {
- $this->patterns[] = '\b(?i)'.$scheme.'(?-i)://['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
- }
-
- $this->patterns[] = '\b(?i)www?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
- $this->patterns[] = '\b(?i)ftp?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
-
- }
-
- function connectTo($mode) {
-
- foreach ( $this->patterns as $pattern ) {
- $this->Lexer->addSpecialPattern($pattern,$mode,'externallink');
- }
- }
-
- function getSort() {
- return 330;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_filelink extends Doku_Parser_Mode {
-
- var $pattern;
-
- function preConnect() {
-
- $ltrs = '\w';
- $gunk = '/\#~:.?+=&%@!\-';
- $punc = '.:?\-;,';
- $host = $ltrs.$punc;
- $any = $ltrs.$gunk.$punc;
-
- $this->pattern = '\b(?i)file(?-i)://['.$any.']+?['.
- $punc.']*[^'.$any.']';
- }
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern(
- $this->pattern,$mode,'filelink');
- }
-
- function getSort() {
- return 360;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_windowssharelink extends Doku_Parser_Mode {
-
- var $pattern;
-
- function preConnect() {
- $this->pattern = "\\\\\\\\\w+?(?:\\\\[\w$]+)+";
- }
-
- function connectTo($mode) {
- $this->Lexer->addSpecialPattern(
- $this->pattern,$mode,'windowssharelink');
- }
-
- function getSort() {
- return 350;
- }
-}
-
-//-------------------------------------------------------------------
-class Doku_Parser_Mode_emaillink extends Doku_Parser_Mode {
-
- function connectTo($mode) {
- // pattern below is defined in inc/mail.php
- $this->Lexer->addSpecialPattern('<'.PREG_PATTERN_VALID_EMAIL.'>',$mode,'emaillink');
- }
-
- function getSort() {
- return 340;
- }
-}
-
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
+
+require_once DOKU_INC . 'inc/parser/lexer.php';
+require_once DOKU_INC . 'inc/parser/handler.php';
+
+
+/**
+ * Define various types of modes used by the parser - they are used to
+ * populate the list of modes another mode accepts
+ */
+global $PARSER_MODES;
+$PARSER_MODES = array(
+ // containers are complex modes that can contain many other modes
+ // hr breaks the principle but they shouldn't be used in tables / lists
+ // so they are put here
+ 'container' => array('listblock','table','quote','hr'),
+
+ // some mode are allowed inside the base mode only
+ 'baseonly' => array('header'),
+
+ // modes for styling text -- footnote behaves similar to styling
+ 'formatting' => array('strong', 'emphasis', 'underline', 'monospace',
+ 'subscript', 'superscript', 'deleted', 'footnote'),
+
+ // modes where the token is simply replaced - they can not contain any
+ // other modes
+ 'substition' => array('acronym','smiley','wordblock','entity',
+ 'camelcaselink', 'internallink','media',
+ 'externallink','linebreak','emaillink',
+ 'windowssharelink','filelink','notoc',
+ 'nocache','multiplyentity','quotes','rss'),
+
+ // modes which have a start and end token but inside which
+ // no other modes should be applied
+ 'protected' => array('preformatted','code','file','php','html','htmlblock','phpblock'),
+
+ // inside this mode no wiki markup should be applied but lineendings
+ // and whitespace isn't preserved
+ 'disabled' => array('unformatted'),
+
+ // used to mark paragraph boundaries
+ 'paragraphs' => array('eol')
+);
+
+//-------------------------------------------------------------------
+
+/**
+* Sets up the Lexer with modes and points it to the Handler
+* For an intro to the Lexer see: wiki:parser
+*/
+class Doku_Parser {
+
+ var $Handler;
+
+ var $Lexer;
+
+ var $modes = array();
+
+ var $connected = false;
+
+ function addBaseMode(& $BaseMode) {
+ $this->modes['base'] = & $BaseMode;
+ if ( !$this->Lexer ) {
+ $this->Lexer = & new Doku_Lexer($this->Handler,'base', true);
+ }
+ $this->modes['base']->Lexer = & $this->Lexer;
+ }
+
+ /**
+ * PHP preserves order of associative elements
+ * Mode sequence is important
+ */
+ function addMode($name, & $Mode) {
+ if ( !isset($this->modes['base']) ) {
+ $this->addBaseMode(new Doku_Parser_Mode_base());
+ }
+ $Mode->Lexer = & $this->Lexer;
+ $this->modes[$name] = & $Mode;
+ }
+
+ function connectModes() {
+
+ if ( $this->connected ) {
+ return;
+ }
+
+ foreach ( array_keys($this->modes) as $mode ) {
+
+ // Base isn't connected to anything
+ if ( $mode == 'base' ) {
+ continue;
+ }
+
+ $this->modes[$mode]->preConnect();
+
+ foreach ( array_keys($this->modes) as $cm ) {
+
+ if ( $this->modes[$cm]->accepts($mode) ) {
+ $this->modes[$mode]->connectTo($cm);
+ }
+
+ }
+
+ $this->modes[$mode]->postConnect();
+ }
+
+ $this->connected = true;
+ }
+
+ function parse($doc) {
+ if ( $this->Lexer ) {
+ $this->connectModes();
+ // Normalize CRs and pad doc
+ $doc = "\n".str_replace("\r\n","\n",$doc)."\n";
+ $this->Lexer->parse($doc);
+ $this->Handler->_finalize();
+ return $this->Handler->calls;
+ } else {
+ return false;
+ }
+ }
+
+}
+
+//-------------------------------------------------------------------
+/**
+ * This class and all the subclasses below are
+ * used to reduce the effort required to register
+ * modes with the Lexer. For performance these
+ * could all be eliminated later perhaps, or
+ * the Parser could be serialized to a file once
+ * all modes are registered
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+*/
+class Doku_Parser_Mode {
+
+ var $Lexer;
+
+ var $allowedModes = array();
+
+ // returns a number used to determine in which order modes are added
+ function getSort() {
+ trigger_error('getSort() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+ // Called before any calls to connectTo
+ function preConnect() {}
+
+ // Connects the mode
+ function connectTo($mode) {}
+
+ // Called after all calls to connectTo
+ function postConnect() {}
+
+ function accepts($mode) {
+ return in_array($mode, (array) $this->allowedModes );
+ }
+
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_base extends Doku_Parser_Mode {
+
+ function Doku_Parser_Mode_base() {
+ global $PARSER_MODES;
+
+ $this->allowedModes = array_merge (
+ $PARSER_MODES['container'],
+ $PARSER_MODES['baseonly'],
+ $PARSER_MODES['paragraphs'],
+ $PARSER_MODES['formatting'],
+ $PARSER_MODES['substition'],
+ $PARSER_MODES['protected'],
+ $PARSER_MODES['disabled']
+ );
+ }
+
+ function getSort() {
+ return 0;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_footnote extends Doku_Parser_Mode {
+
+ function Doku_Parser_Mode_footnote() {
+ global $PARSER_MODES;
+
+ $this->allowedModes = array_merge (
+ $PARSER_MODES['container'],
+ $PARSER_MODES['formatting'],
+ $PARSER_MODES['substition'],
+ $PARSER_MODES['protected'],
+ $PARSER_MODES['disabled']
+ );
+
+ unset($this->allowedModes[array_search('footnote', $this->allowedModes)]);
+ }
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern(
+ '\x28\x28(?=.*\x29\x29)',$mode,'footnote'
+ );
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern(
+ '\x29\x29','footnote'
+ );
+ }
+
+ function getSort() {
+ return 150;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_header extends Doku_Parser_Mode {
+
+ function preConnect() {
+ //we're not picky about the closing ones, two are enough
+ $this->Lexer->addSpecialPattern(
+ '[ \t]*={2,}[^\n]+={2,}[ \t]*(?=\n)',
+ 'base',
+ 'header'
+ );
+ }
+
+ function getSort() {
+ return 50;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_notoc extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern('~~NOTOC~~',$mode,'notoc');
+ }
+
+ function getSort() {
+ return 30;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_nocache extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern('~~NOCACHE~~',$mode,'nocache');
+ }
+
+ function getSort() {
+ return 40;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_linebreak extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern('\x5C{2}(?=\s)',$mode,'linebreak');
+ }
+
+ function getSort() {
+ return 140;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_eol extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $badModes = array('listblock','table');
+ if ( in_array($mode, $badModes) ) {
+ return;
+ }
+ $this->Lexer->addSpecialPattern('\n',$mode,'eol');
+ }
+
+ function getSort() {
+ return 370;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_hr extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern('\n[ \t]*-{4,}[ \t]*(?=\n)',$mode,'hr');
+ }
+
+ function getSort() {
+ return 160;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_formatting extends Doku_Parser_Mode {
+ var $type;
+
+ var $formatting = array (
+ 'strong' => array (
+ 'entry'=>'\*\*(?=.*\*\*)',
+ 'exit'=>'\*\*',
+ 'sort'=>70
+ ),
+
+ 'emphasis'=> array (
+ 'entry'=>'//(?=[^\x00]*[^:]//)', //hack for bug #384
+ 'exit'=>'//',
+ 'sort'=>80
+ ),
+
+ 'underline'=> array (
+ 'entry'=>'__(?=.*__)',
+ 'exit'=>'__',
+ 'sort'=>90
+ ),
+
+ 'monospace'=> array (
+ 'entry'=>'\x27\x27(?=.*\x27\x27)',
+ 'exit'=>'\x27\x27',
+ 'sort'=>100
+ ),
+
+ 'subscript'=> array (
+ 'entry'=>'<sub>(?=.*</sub>)',
+ 'exit'=>'</sub>',
+ 'sort'=>110
+ ),
+
+ 'superscript'=> array (
+ 'entry'=>'<sup>(?=.*</sup>)',
+ 'exit'=>'</sup>',
+ 'sort'=>120
+ ),
+
+ 'deleted'=> array (
+ 'entry'=>'<del>(?=.*</del>)',
+ 'exit'=>'</del>',
+ 'sort'=>130
+ ),
+ );
+
+ function Doku_Parser_Mode_formatting($type) {
+ global $PARSER_MODES;
+
+ if ( !array_key_exists($type, $this->formatting) ) {
+ trigger_error('Invalid formatting type '.$type, E_USER_WARNING);
+ }
+
+ $this->type = $type;
+
+ // formatting may contain other formatting but not it self
+ $modes = $PARSER_MODES['formatting'];
+ $key = array_search($type, $modes);
+ if ( is_int($key) ) {
+ unset($modes[$key]);
+ }
+
+ $this->allowedModes = array_merge (
+ $modes,
+ $PARSER_MODES['substition'],
+ $PARSER_MODES['disabled']
+ );
+ }
+
+ function connectTo($mode) {
+
+ // Can't nest formatting in itself
+ if ( $mode == $this->type ) {
+ return;
+ }
+
+ $this->Lexer->addEntryPattern(
+ $this->formatting[$this->type]['entry'],
+ $mode,
+ $this->type
+ );
+ }
+
+ function postConnect() {
+
+ $this->Lexer->addExitPattern(
+ $this->formatting[$this->type]['exit'],
+ $this->type
+ );
+
+ }
+
+ function getSort() {
+ return $this->formatting[$this->type]['sort'];
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_listblock extends Doku_Parser_Mode {
+
+ function Doku_Parser_Mode_listblock() {
+ global $PARSER_MODES;
+
+ $this->allowedModes = array_merge (
+ $PARSER_MODES['formatting'],
+ $PARSER_MODES['substition'],
+ $PARSER_MODES['disabled'],
+ $PARSER_MODES['protected'] #XXX new
+ );
+
+ // $this->allowedModes[] = 'footnote';
+ }
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('\n {2,}[\-\*]',$mode,'listblock');
+ $this->Lexer->addEntryPattern('\n\t{1,}[\-\*]',$mode,'listblock');
+
+ $this->Lexer->addPattern('\n {2,}[\-\*]','listblock');
+ $this->Lexer->addPattern('\n\t{1,}[\-\*]','listblock');
+
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern('\n','listblock');
+ }
+
+ function getSort() {
+ return 10;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_table extends Doku_Parser_Mode {
+
+ function Doku_Parser_Mode_table() {
+ global $PARSER_MODES;
+
+ $this->allowedModes = array_merge (
+ $PARSER_MODES['formatting'],
+ $PARSER_MODES['substition'],
+ $PARSER_MODES['disabled'],
+ $PARSER_MODES['protected']
+ );
+ }
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('\n\^',$mode,'table');
+ $this->Lexer->addEntryPattern('\n\|',$mode,'table');
+ }
+
+ function postConnect() {
+ $this->Lexer->addPattern('\n\^','table');
+ $this->Lexer->addPattern('\n\|','table');
+ #$this->Lexer->addPattern(' {2,}','table');
+ $this->Lexer->addPattern('[\t ]+','table');
+ $this->Lexer->addPattern('\^','table');
+ $this->Lexer->addPattern('\|','table');
+ $this->Lexer->addExitPattern('\n','table');
+ }
+
+ function getSort() {
+ return 60;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_unformatted extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('<nowiki>(?=.*</nowiki>)',$mode,'unformatted');
+ $this->Lexer->addEntryPattern('%%(?=.*%%)',$mode,'unformattedalt');
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern('</nowiki>','unformatted');
+ $this->Lexer->addExitPattern('%%','unformattedalt');
+ $this->Lexer->mapHandler('unformattedalt','unformatted');
+ }
+
+ function getSort() {
+ return 170;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_php extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('<php>(?=.*</php>)',$mode,'php');
+ $this->Lexer->addEntryPattern('<PHP>(?=.*</PHP>)',$mode,'phpblock');
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern('</php>','php');
+ $this->Lexer->addExitPattern('</PHP>','phpblock');
+ }
+
+ function getSort() {
+ return 180;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_html extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('<html>(?=.*</html>)',$mode,'html');
+ $this->Lexer->addEntryPattern('<HTML>(?=.*</HTML>)',$mode,'htmlblock');
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern('</html>','html');
+ $this->Lexer->addExitPattern('</HTML>','htmlblock');
+ }
+
+ function getSort() {
+ return 190;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_preformatted extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ // Has hard coded awareness of lists...
+ $this->Lexer->addEntryPattern('\n (?![\*\-])',$mode,'preformatted');
+ $this->Lexer->addEntryPattern('\n\t(?![\*\-])',$mode,'preformatted');
+
+ // How to effect a sub pattern with the Lexer!
+ $this->Lexer->addPattern('\n ','preformatted');
+ $this->Lexer->addPattern('\n\t','preformatted');
+
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern('\n','preformatted');
+ }
+
+ function getSort() {
+ return 20;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_code extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('<code(?=.*</code>)',$mode,'code');
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern('</code>','code');
+ }
+
+ function getSort() {
+ return 200;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_file extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('<file>(?=.*</file>)',$mode,'file');
+ }
+
+ function postConnect() {
+ $this->Lexer->addExitPattern('</file>','file');
+ }
+
+ function getSort() {
+ return 210;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_quote extends Doku_Parser_Mode {
+
+ function Doku_Parser_Mode_quote() {
+ global $PARSER_MODES;
+
+ $this->allowedModes = array_merge (
+ $PARSER_MODES['formatting'],
+ $PARSER_MODES['substition'],
+ $PARSER_MODES['disabled'],
+ $PARSER_MODES['protected'] #XXX new
+ );
+ #$this->allowedModes[] = 'footnote';
+ #$this->allowedModes[] = 'preformatted';
+ #$this->allowedModes[] = 'unformatted';
+ }
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('\n>{1,}',$mode,'quote');
+ }
+
+ function postConnect() {
+ $this->Lexer->addPattern('\n>{1,}','quote');
+ $this->Lexer->addExitPattern('\n','quote');
+ }
+
+ function getSort() {
+ return 220;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_acronym extends Doku_Parser_Mode {
+ // A list
+ var $acronyms = array();
+ var $pattern = '';
+
+ function Doku_Parser_Mode_acronym($acronyms) {
+ $this->acronyms = $acronyms;
+ }
+
+ function preConnect() {
+ if(!count($this->acronyms)) return;
+
+ $bound = '[\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]';
+ $acronyms = array_map('Doku_Lexer_Escape',$this->acronyms);
+ $this->pattern = '(?<=^|'.$bound.')(?:'.join('|',$acronyms).')(?='.$bound.')';
+ }
+
+ function connectTo($mode) {
+ if(!count($this->acronyms)) return;
+
+ if ( strlen($this->pattern) > 0 ) {
+ $this->Lexer->addSpecialPattern($this->pattern,$mode,'acronym');
+ }
+ }
+
+ function getSort() {
+ return 240;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_smiley extends Doku_Parser_Mode {
+ // A list
+ var $smileys = array();
+ var $pattern = '';
+
+ function Doku_Parser_Mode_smiley($smileys) {
+ $this->smileys = $smileys;
+ }
+
+ function preConnect() {
+ if(!count($this->smileys) || $this->pattern != '') return;
+
+ $sep = '';
+ foreach ( $this->smileys as $smiley ) {
+ $this->pattern .= $sep.Doku_Lexer_Escape($smiley);
+ $sep = '|';
+ }
+ }
+
+ function connectTo($mode) {
+ if(!count($this->smileys)) return;
+
+ if ( strlen($this->pattern) > 0 ) {
+ $this->Lexer->addSpecialPattern($this->pattern,$mode,'smiley');
+ }
+ }
+
+ function getSort() {
+ return 230;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_wordblock extends Doku_Parser_Mode {
+ // A list
+ var $badwords = array();
+ var $pattern = '';
+
+ function Doku_Parser_Mode_wordblock($badwords) {
+ $this->badwords = $badwords;
+ }
+
+ function preConnect() {
+
+ if ( count($this->badwords) == 0 || $this->pattern != '') {
+ return;
+ }
+
+ $sep = '';
+ foreach ( $this->badwords as $badword ) {
+ $this->pattern .= $sep.'(?<=\b)(?i)'.Doku_Lexer_Escape($badword).'(?-i)(?=\b)';
+ $sep = '|';
+ }
+
+ }
+
+ function connectTo($mode) {
+ if ( strlen($this->pattern) > 0 ) {
+ $this->Lexer->addSpecialPattern($this->pattern,$mode,'wordblock');
+ }
+ }
+
+ function getSort() {
+ return 250;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_entity extends Doku_Parser_Mode {
+ // A list
+ var $entities = array();
+ var $pattern = '';
+
+ function Doku_Parser_Mode_entity($entities) {
+ $this->entities = $entities;
+ }
+
+ function preConnect() {
+ if(!count($this->entities) || $this->pattern != '') return;
+
+ $sep = '';
+ foreach ( $this->entities as $entity ) {
+ $this->pattern .= $sep.Doku_Lexer_Escape($entity);
+ $sep = '|';
+ }
+ }
+
+ function connectTo($mode) {
+ if(!count($this->entities)) return;
+
+ if ( strlen($this->pattern) > 0 ) {
+ $this->Lexer->addSpecialPattern($this->pattern,$mode,'entity');
+ }
+ }
+
+ function getSort() {
+ return 260;
+ }
+}
+
+//-------------------------------------------------------------------
+// Implements the 640x480 replacement
+class Doku_Parser_Mode_multiplyentity extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+
+ $this->Lexer->addSpecialPattern(
+ '(?<=\b)\d+[xX]\d+(?=\b)',$mode,'multiplyentity'
+ );
+
+ }
+
+ function getSort() {
+ return 270;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_quotes extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ global $conf;
+
+ $ws = '\s/\#~:+=&%@\-\x28\x29\]\[{}><"\''; // whitespace
+ $punc = ';,\.?!';
+
+ if($conf['typography'] == 2){
+ $this->Lexer->addSpecialPattern(
+ "(?<=^|[$ws])'(?=[^$ws$punc])",$mode,'singlequoteopening'
+ );
+ $this->Lexer->addSpecialPattern(
+ "(?<=^|[^$ws]|[$punc])'(?=$|[$ws$punc])",$mode,'singlequoteclosing'
+ );
+ $this->Lexer->addSpecialPattern(
+ "(?<=^|[^$ws$punc])'(?=$|[^$ws$punc])",$mode,'apostrophe'
+ );
+ }
+
+ $this->Lexer->addSpecialPattern(
+ "(?<=^|[$ws])\"(?=[^$ws$punc])",$mode,'doublequoteopening'
+ );
+ $this->Lexer->addSpecialPattern(
+ "\"",$mode,'doublequoteclosing'
+ );
+
+
+ }
+
+ function getSort() {
+ return 280;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_camelcaselink extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern(
+ '\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b',$mode,'camelcaselink'
+ );
+ }
+
+ function getSort() {
+ return 290;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_internallink extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ // Word boundaries?
+ $this->Lexer->addSpecialPattern("\[\[.+?\]\]",$mode,'internallink');
+ }
+
+ function getSort() {
+ return 300;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_media extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ // Word boundaries?
+ $this->Lexer->addSpecialPattern("\{\{[^\}]+\}\}",$mode,'media');
+ }
+
+ function getSort() {
+ return 320;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_rss extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern("\{\{rss>[^\}]+\}\}",$mode,'rss');
+ }
+
+ function getSort() {
+ return 310;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_externallink extends Doku_Parser_Mode {
+ var $schemes = array('http','https','telnet','gopher','wais','ftp','ed2k','irc','ldap');
+ var $patterns = array();
+
+ function preConnect() {
+ if(count($this->patterns)) return;
+
+ $ltrs = '\w';
+ $gunk = '/\#~:.?+=&%@!\-';
+ $punc = '.:?\-;,';
+ $host = $ltrs.$punc;
+ $any = $ltrs.$gunk.$punc;
+
+ foreach ( $this->schemes as $scheme ) {
+ $this->patterns[] = '\b(?i)'.$scheme.'(?-i)://['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
+ }
+
+ $this->patterns[] = '\b(?i)www?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
+ $this->patterns[] = '\b(?i)ftp?(?-i)\.['.$host.']+?\.['.$host.']+?['.$any.']+?(?=['.$punc.']*[^'.$any.'])';
+
+ }
+
+ function connectTo($mode) {
+
+ foreach ( $this->patterns as $pattern ) {
+ $this->Lexer->addSpecialPattern($pattern,$mode,'externallink');
+ }
+ }
+
+ function getSort() {
+ return 330;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_filelink extends Doku_Parser_Mode {
+
+ var $pattern;
+
+ function preConnect() {
+
+ $ltrs = '\w';
+ $gunk = '/\#~:.?+=&%@!\-';
+ $punc = '.:?\-;,';
+ $host = $ltrs.$punc;
+ $any = $ltrs.$gunk.$punc;
+
+ $this->pattern = '\b(?i)file(?-i)://['.$any.']+?['.
+ $punc.']*[^'.$any.']';
+ }
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern(
+ $this->pattern,$mode,'filelink');
+ }
+
+ function getSort() {
+ return 360;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_windowssharelink extends Doku_Parser_Mode {
+
+ var $pattern;
+
+ function preConnect() {
+ $this->pattern = "\\\\\\\\\w+?(?:\\\\[\w$]+)+";
+ }
+
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern(
+ $this->pattern,$mode,'windowssharelink');
+ }
+
+ function getSort() {
+ return 350;
+ }
+}
+
+//-------------------------------------------------------------------
+class Doku_Parser_Mode_emaillink extends Doku_Parser_Mode {
+
+ function connectTo($mode) {
+ // pattern below is defined in inc/mail.php
+ $this->Lexer->addSpecialPattern('<'.PREG_PATTERN_VALID_EMAIL.'>',$mode,'emaillink');
+ }
+
+ function getSort() {
+ return 340;
+ }
+}
+
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parser/renderer.php
===================================================================
--- site/trunk/www-root/wiki/inc/parser/renderer.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parser/renderer.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,321 +1,321 @@
-<?php
-/**
- * Renderer output base class
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
-
-require_once DOKU_INC . 'inc/parser/renderer.php';
-require_once DOKU_INC . 'inc/plugin.php';
-require_once DOKU_INC . 'inc/pluginutils.php';
-
-/**
- * An empty renderer, produces no output
- *
- * Inherits from DokuWiki_Plugin for giving additional functions to render plugins
- */
-class Doku_Renderer extends DokuWiki_Plugin {
- var $info = array(
- 'cache' => true, // may the rendered result cached?
- 'toc' => true, // render the TOC?
- );
-
- // keep some config options
- var $acronyms = array();
- var $smileys = array();
- var $badwords = array();
- var $entities = array();
- var $interwiki = array();
-
- // allows renderer to be used again, clean out any per-use values
- function reset() {
- }
-
- function nocache() {
- $this->info['cache'] = false;
- }
-
- function notoc() {
- $this->info['toc'] = false;
- }
-
- /**
- * Returns the format produced by this renderer.
- *
- * Has to be overidden by decendend classes
- */
- function getFormat(){
- trigger_error('getFormat() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
-
- //handle plugin rendering
- function plugin($name,$data){
- $plugin =& plugin_load('syntax',$name);
- if($plugin != null){
- $plugin->render($this->getFormat(),$this,$data);
- }
- }
-
- /**
- * handle nested render instructions
- * this method (and nest_close method) should not be overloaded in actual renderer output classes
- */
- function nest($instructions) {
-
- foreach ( $instructions as $instruction ) {
- // execute the callback against ourself
- call_user_func_array(array(&$this, $instruction[0]),$instruction[1]);
- }
- }
-
- // dummy closing instruction issued by Doku_Handler_Nest, normally the syntax mode should
- // override this instruction when instantiating Doku_Handler_Nest - however plugins will not
- // be able to - as their instructions require data.
- function nest_close() {}
-
- function document_start() {}
-
- function document_end() {}
-
- function render_TOC() { return ''; }
-
- function toc_additem($id, $text, $level) {}
-
- function header($text, $level, $pos) {}
-
- function section_edit($start, $end, $level, $name) {}
-
- function section_open($level) {}
-
- function section_close() {}
-
- function cdata($text) {}
-
- function p_open() {}
-
- function p_close() {}
-
- function linebreak() {}
-
- function hr() {}
-
- function strong_open() {}
-
- function strong_close() {}
-
- function emphasis_open() {}
-
- function emphasis_close() {}
-
- function underline_open() {}
-
- function underline_close() {}
-
- function monospace_open() {}
-
- function monospace_close() {}
-
- function subscript_open() {}
-
- function subscript_close() {}
-
- function superscript_open() {}
-
- function superscript_close() {}
-
- function deleted_open() {}
-
- function deleted_close() {}
-
- function footnote_open() {}
-
- function footnote_close() {}
-
- function listu_open() {}
-
- function listu_close() {}
-
- function listo_open() {}
-
- function listo_close() {}
-
- function listitem_open($level) {}
-
- function listitem_close() {}
-
- function listcontent_open() {}
-
- function listcontent_close() {}
-
- function unformatted($text) {}
-
- function php($text) {}
-
- function phpblock($text) {}
-
- function html($text) {}
-
- function htmlblock($text) {}
-
- function preformatted($text) {}
-
- function file($text) {}
-
- function quote_open() {}
-
- function quote_close() {}
-
- function code($text, $lang = NULL) {}
-
- function acronym($acronym) {}
-
- function smiley($smiley) {}
-
- function wordblock($word) {}
-
- function entity($entity) {}
-
- // 640x480 ($x=640, $y=480)
- function multiplyentity($x, $y) {}
-
- function singlequoteopening() {}
-
- function singlequoteclosing() {}
-
- function apostrophe() {}
-
- function doublequoteopening() {}
-
- function doublequoteclosing() {}
-
- // $link like 'SomePage'
- function camelcaselink($link) {}
-
- function locallink($hash, $name = NULL) {}
-
- // $link like 'wiki:syntax', $title could be an array (media)
- function internallink($link, $title = NULL) {}
-
- // $link is full URL with scheme, $title could be an array (media)
- function externallink($link, $title = NULL) {}
-
- // $link is the original link - probably not much use
- // $wikiName is an indentifier for the wiki
- // $wikiUri is the URL fragment to append to some known URL
- function interwikilink($link, $title = NULL, $wikiName, $wikiUri) {}
-
- // Link to file on users OS, $title could be an array (media)
- function filelink($link, $title = NULL) {}
-
- // Link to a Windows share, , $title could be an array (media)
- function windowssharelink($link, $title = NULL) {}
-
-// function email($address, $title = NULL) {}
- function emaillink($address, $name = NULL) {}
-
- function internalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
- $height=NULL, $cache=NULL, $linking=NULL) {}
-
- function externalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
- $height=NULL, $cache=NULL, $linking=NULL) {}
-
- function internalmedialink (
- $src,$title=NULL,$align=NULL,$width=NULL,$height=NULL,$cache=NULL
- ) {}
-
- function externalmedialink(
- $src,$title=NULL,$align=NULL,$width=NULL,$height=NULL,$cache=NULL
- ) {}
-
- function table_open($maxcols = NULL, $numrows = NULL){}
-
- function table_close(){}
-
- function tablerow_open(){}
-
- function tablerow_close(){}
-
- function tableheader_open($colspan = 1, $align = NULL){}
-
- function tableheader_close(){}
-
- function tablecell_open($colspan = 1, $align = NULL){}
-
- function tablecell_close(){}
-
-
- // util functions follow, you probably won't need to reimplement them
-
-
- /**
- * Removes any Namespace from the given name but keeps
- * casing and special chars
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _simpleTitle($name){
- global $conf;
-
- //if there is a hash we use the ancor name only
- list($name,$hash) = explode('#',$name,2);
- if($hash) return $hash;
-
- //trim colons or slash of a namespace link
- $name = rtrim($name,':');
- if($conf['useslash'])
- $name = rtrim($name,'/');
-
- if($conf['useslash']){
- $nssep = '[:;/]';
- }else{
- $nssep = '[:;]';
- }
- $name = preg_replace('!.*'.$nssep.'!','',$name);
-
- if(!$name) return $this->_simpleTitle($conf['start']);
- return $name;
- }
-
- /**
- * Resolve an interwikilink
- */
- function _resolveInterWiki(&$shortcut,$reference){
- //get interwiki URL
- if ( isset($this->interwiki[$shortcut]) ) {
- $url = $this->interwiki[$shortcut];
- } else {
- // Default to Google I'm feeling lucky
- $url = 'http://www.google.com/search?q={URL}&btnI=lucky';
- $shortcut = 'go';
- }
-
- //split into hash and url part
- list($wikiUri,$hash) = explode('#',$wikiUri,2);
-
- //replace placeholder
- if(preg_match('#\{(URL|NAME|SCHEME|HOST|PORT|PATH|QUERY)\}#',$url)){
- //use placeholders
- $url = str_replace('{URL}',rawurlencode($reference),$url);
- $url = str_replace('{NAME}',$reference,$url);
- $parsed = parse_url($reference);
- if(!$parsed['port']) $parsed['port'] = 80;
- $url = str_replace('{SCHEME}',$parsed['scheme'],$url);
- $url = str_replace('{HOST}',$parsed['host'],$url);
- $url = str_replace('{PORT}',$parsed['port'],$url);
- $url = str_replace('{PATH}',$parsed['path'],$url);
- $url = str_replace('{QUERY}',$parsed['query'],$url);
- }else{
- //default
- $url = $url.rawurlencode($reference);
- }
- if($hash) $url .= '#'.rawurlencode($hash);
-
- return $url;
- }
-}
-
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * Renderer output base class
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
+
+require_once DOKU_INC . 'inc/parser/renderer.php';
+require_once DOKU_INC . 'inc/plugin.php';
+require_once DOKU_INC . 'inc/pluginutils.php';
+
+/**
+ * An empty renderer, produces no output
+ *
+ * Inherits from DokuWiki_Plugin for giving additional functions to render plugins
+ */
+class Doku_Renderer extends DokuWiki_Plugin {
+ var $info = array(
+ 'cache' => true, // may the rendered result cached?
+ 'toc' => true, // render the TOC?
+ );
+
+ // keep some config options
+ var $acronyms = array();
+ var $smileys = array();
+ var $badwords = array();
+ var $entities = array();
+ var $interwiki = array();
+
+ // allows renderer to be used again, clean out any per-use values
+ function reset() {
+ }
+
+ function nocache() {
+ $this->info['cache'] = false;
+ }
+
+ function notoc() {
+ $this->info['toc'] = false;
+ }
+
+ /**
+ * Returns the format produced by this renderer.
+ *
+ * Has to be overidden by decendend classes
+ */
+ function getFormat(){
+ trigger_error('getFormat() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+
+ //handle plugin rendering
+ function plugin($name,$data){
+ $plugin =& plugin_load('syntax',$name);
+ if($plugin != null){
+ $plugin->render($this->getFormat(),$this,$data);
+ }
+ }
+
+ /**
+ * handle nested render instructions
+ * this method (and nest_close method) should not be overloaded in actual renderer output classes
+ */
+ function nest($instructions) {
+
+ foreach ( $instructions as $instruction ) {
+ // execute the callback against ourself
+ call_user_func_array(array(&$this, $instruction[0]),$instruction[1]);
+ }
+ }
+
+ // dummy closing instruction issued by Doku_Handler_Nest, normally the syntax mode should
+ // override this instruction when instantiating Doku_Handler_Nest - however plugins will not
+ // be able to - as their instructions require data.
+ function nest_close() {}
+
+ function document_start() {}
+
+ function document_end() {}
+
+ function render_TOC() { return ''; }
+
+ function toc_additem($id, $text, $level) {}
+
+ function header($text, $level, $pos) {}
+
+ function section_edit($start, $end, $level, $name) {}
+
+ function section_open($level) {}
+
+ function section_close() {}
+
+ function cdata($text) {}
+
+ function p_open() {}
+
+ function p_close() {}
+
+ function linebreak() {}
+
+ function hr() {}
+
+ function strong_open() {}
+
+ function strong_close() {}
+
+ function emphasis_open() {}
+
+ function emphasis_close() {}
+
+ function underline_open() {}
+
+ function underline_close() {}
+
+ function monospace_open() {}
+
+ function monospace_close() {}
+
+ function subscript_open() {}
+
+ function subscript_close() {}
+
+ function superscript_open() {}
+
+ function superscript_close() {}
+
+ function deleted_open() {}
+
+ function deleted_close() {}
+
+ function footnote_open() {}
+
+ function footnote_close() {}
+
+ function listu_open() {}
+
+ function listu_close() {}
+
+ function listo_open() {}
+
+ function listo_close() {}
+
+ function listitem_open($level) {}
+
+ function listitem_close() {}
+
+ function listcontent_open() {}
+
+ function listcontent_close() {}
+
+ function unformatted($text) {}
+
+ function php($text) {}
+
+ function phpblock($text) {}
+
+ function html($text) {}
+
+ function htmlblock($text) {}
+
+ function preformatted($text) {}
+
+ function file($text) {}
+
+ function quote_open() {}
+
+ function quote_close() {}
+
+ function code($text, $lang = NULL) {}
+
+ function acronym($acronym) {}
+
+ function smiley($smiley) {}
+
+ function wordblock($word) {}
+
+ function entity($entity) {}
+
+ // 640x480 ($x=640, $y=480)
+ function multiplyentity($x, $y) {}
+
+ function singlequoteopening() {}
+
+ function singlequoteclosing() {}
+
+ function apostrophe() {}
+
+ function doublequoteopening() {}
+
+ function doublequoteclosing() {}
+
+ // $link like 'SomePage'
+ function camelcaselink($link) {}
+
+ function locallink($hash, $name = NULL) {}
+
+ // $link like 'wiki:syntax', $title could be an array (media)
+ function internallink($link, $title = NULL) {}
+
+ // $link is full URL with scheme, $title could be an array (media)
+ function externallink($link, $title = NULL) {}
+
+ // $link is the original link - probably not much use
+ // $wikiName is an indentifier for the wiki
+ // $wikiUri is the URL fragment to append to some known URL
+ function interwikilink($link, $title = NULL, $wikiName, $wikiUri) {}
+
+ // Link to file on users OS, $title could be an array (media)
+ function filelink($link, $title = NULL) {}
+
+ // Link to a Windows share, , $title could be an array (media)
+ function windowssharelink($link, $title = NULL) {}
+
+// function email($address, $title = NULL) {}
+ function emaillink($address, $name = NULL) {}
+
+ function internalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
+ $height=NULL, $cache=NULL, $linking=NULL) {}
+
+ function externalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
+ $height=NULL, $cache=NULL, $linking=NULL) {}
+
+ function internalmedialink (
+ $src,$title=NULL,$align=NULL,$width=NULL,$height=NULL,$cache=NULL
+ ) {}
+
+ function externalmedialink(
+ $src,$title=NULL,$align=NULL,$width=NULL,$height=NULL,$cache=NULL
+ ) {}
+
+ function table_open($maxcols = NULL, $numrows = NULL){}
+
+ function table_close(){}
+
+ function tablerow_open(){}
+
+ function tablerow_close(){}
+
+ function tableheader_open($colspan = 1, $align = NULL){}
+
+ function tableheader_close(){}
+
+ function tablecell_open($colspan = 1, $align = NULL){}
+
+ function tablecell_close(){}
+
+
+ // util functions follow, you probably won't need to reimplement them
+
+
+ /**
+ * Removes any Namespace from the given name but keeps
+ * casing and special chars
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _simpleTitle($name){
+ global $conf;
+
+ //if there is a hash we use the ancor name only
+ list($name,$hash) = explode('#',$name,2);
+ if($hash) return $hash;
+
+ //trim colons or slash of a namespace link
+ $name = rtrim($name,':');
+ if($conf['useslash'])
+ $name = rtrim($name,'/');
+
+ if($conf['useslash']){
+ $nssep = '[:;/]';
+ }else{
+ $nssep = '[:;]';
+ }
+ $name = preg_replace('!.*'.$nssep.'!','',$name);
+
+ if(!$name) return $this->_simpleTitle($conf['start']);
+ return $name;
+ }
+
+ /**
+ * Resolve an interwikilink
+ */
+ function _resolveInterWiki(&$shortcut,$reference){
+ //get interwiki URL
+ if ( isset($this->interwiki[$shortcut]) ) {
+ $url = $this->interwiki[$shortcut];
+ } else {
+ // Default to Google I'm feeling lucky
+ $url = 'http://www.google.com/search?q={URL}&btnI=lucky';
+ $shortcut = 'go';
+ }
+
+ //split into hash and url part
+ list($wikiUri,$hash) = explode('#',$wikiUri,2);
+
+ //replace placeholder
+ if(preg_match('#\{(URL|NAME|SCHEME|HOST|PORT|PATH|QUERY)\}#',$url)){
+ //use placeholders
+ $url = str_replace('{URL}',rawurlencode($reference),$url);
+ $url = str_replace('{NAME}',$reference,$url);
+ $parsed = parse_url($reference);
+ if(!$parsed['port']) $parsed['port'] = 80;
+ $url = str_replace('{SCHEME}',$parsed['scheme'],$url);
+ $url = str_replace('{HOST}',$parsed['host'],$url);
+ $url = str_replace('{PORT}',$parsed['port'],$url);
+ $url = str_replace('{PATH}',$parsed['path'],$url);
+ $url = str_replace('{QUERY}',$parsed['query'],$url);
+ }else{
+ //default
+ $url = $url.rawurlencode($reference);
+ }
+ if($hash) $url .= '#'.rawurlencode($hash);
+
+ return $url;
+ }
+}
+
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parser/xhtml.php
===================================================================
--- site/trunk/www-root/wiki/inc/parser/xhtml.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parser/xhtml.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1085 +1,1085 @@
-<?php
-/**
- * Renderer for XHTML output
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
-
-if ( !defined('DOKU_LF') ) {
- // Some whitespace to help View > Source
- define ('DOKU_LF',"\n");
-}
-
-if ( !defined('DOKU_TAB') ) {
- // Some whitespace to help View > Source
- define ('DOKU_TAB',"\t");
-}
-
-require_once DOKU_INC . 'inc/parser/renderer.php';
-require_once DOKU_INC . 'inc/html.php';
-
-/**
- * The Renderer
- */
-class Doku_Renderer_xhtml extends Doku_Renderer {
-
- // @access public
- var $doc = ''; // will contain the whole document
- var $toc = array(); // will contain the Table of Contents
-
-
- var $headers = array();
- var $footnotes = array();
- var $lastsec = 0;
- var $store = '';
-
- var $_counter = array(); // used as global counter, introduced for table classes
-
- function getFormat(){
- return 'xhtml';
- }
-
-
- function document_start() {
- //reset some internals
- $this->toc = array();
- $this->headers = array();
- }
-
- function document_end() {
- if ( count ($this->footnotes) > 0 ) {
- $this->doc .= '<div class="footnotes">'.DOKU_LF;
-
- $id = 0;
- foreach ( $this->footnotes as $footnote ) {
- $id++; // the number of the current footnote
-
- // check its not a placeholder that indicates actual footnote text is elsewhere
- if (substr($footnote, 0, 5) != "@@FNT") {
-
- // open the footnote and set the anchor and backlink
- $this->doc .= '<div class="fn">';
- $this->doc .= '<sup><a href="#fnt__'.$id.'" id="fn__'.$id.'" name="fn__'.$id.'" class="fn_bot">';
- $this->doc .= $id.')</a></sup> '.DOKU_LF;
-
- // get any other footnotes that use the same markup
- $alt = array_keys($this->footnotes, "@@FNT$id");
-
- if (count($alt)) {
- foreach ($alt as $ref) {
- // set anchor and backlink for the other footnotes
- $this->doc .= ', <sup><a href="#fnt__'.($ref+1).'" id="fn__'.($ref+1).'" name="fn__'.($ref+1).'" class="fn_bot">';
- $this->doc .= ($ref+1).')</a></sup> '.DOKU_LF;
- }
- }
-
- // add footnote markup and close this footnote
- $this->doc .= $footnote;
- $this->doc .= '</div>' . DOKU_LF;
- }
- }
- $this->doc .= '</div>'.DOKU_LF;
- }
-
- // Prepare the TOC
- if($this->info['toc'] && is_array($this->toc) && count($this->toc) > 2){
- global $TOC;
- $TOC = $this->toc;
- }
-
- // make sure there are no empty paragraphs
- $this->doc = preg_replace('#<p>\s*</p>#','',$this->doc);
- }
-
- function toc_additem($id, $text, $level) {
- global $conf;
-
- //handle TOC
- if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){
- $this->toc[] = html_mktocitem($id, $text, $level-$conf['toptoclevel']+1);
- }
- }
-
- function header($text, $level, $pos) {
-
- $hid = $this->_headerToLink($text,true);
-
- //only add items within configured levels
- $this->toc_additem($hid, $text, $level);
-
- // write the header
- $this->doc .= DOKU_LF.'<h'.$level.'><a name="'.$hid.'" id="'.$hid.'">';
- $this->doc .= $this->_xmlEntities($text);
- $this->doc .= "</a></h$level>".DOKU_LF;
- }
-
- /**
- * Section edit marker is replaced by an edit button when
- * the page is editable. Replacement done in 'inc/html.php#html_secedit'
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
- function section_edit($start, $end, $level, $name) {
- global $conf;
-
- if ($start!=-1 && $level<=$conf['maxseclevel']) {
- $name = str_replace('"', '', $name);
- $this->doc .= '<!-- SECTION "'.$name.'" ['.$start.'-'.(($end===0)?'':$end).'] -->';
- }
- }
-
- function section_open($level) {
- $this->doc .= "<div class=\"level$level\">".DOKU_LF;
- }
-
- function section_close() {
- $this->doc .= DOKU_LF.'</div>'.DOKU_LF;
- }
-
- function cdata($text) {
- $this->doc .= $this->_xmlEntities($text);
- }
-
- function p_open() {
- $this->doc .= DOKU_LF.'<p>'.DOKU_LF;
- }
-
- function p_close() {
- $this->doc .= DOKU_LF.'</p>'.DOKU_LF;
- }
-
- function linebreak() {
- $this->doc .= '<br/>'.DOKU_LF;
- }
-
- function hr() {
- $this->doc .= '<hr />'.DOKU_LF;
- }
-
- function strong_open() {
- $this->doc .= '<strong>';
- }
-
- function strong_close() {
- $this->doc .= '</strong>';
- }
-
- function emphasis_open() {
- $this->doc .= '<em>';
- }
-
- function emphasis_close() {
- $this->doc .= '</em>';
- }
-
- function underline_open() {
- $this->doc .= '<em class="u">';
- }
-
- function underline_close() {
- $this->doc .= '</em>';
- }
-
- function monospace_open() {
- $this->doc .= '<code>';
- }
-
- function monospace_close() {
- $this->doc .= '</code>';
- }
-
- function subscript_open() {
- $this->doc .= '<sub>';
- }
-
- function subscript_close() {
- $this->doc .= '</sub>';
- }
-
- function superscript_open() {
- $this->doc .= '<sup>';
- }
-
- function superscript_close() {
- $this->doc .= '</sup>';
- }
-
- function deleted_open() {
- $this->doc .= '<del>';
- }
-
- function deleted_close() {
- $this->doc .= '</del>';
- }
-
- /**
- * Callback for footnote start syntax
- *
- * All following content will go to the footnote instead of
- * the document. To achieve this the previous rendered content
- * is moved to $store and $doc is cleared
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function footnote_open() {
-
- // move current content to store and record footnote
- $this->store = $this->doc;
- $this->doc = '';
- }
-
- /**
- * Callback for footnote end syntax
- *
- * All rendered content is moved to the $footnotes array and the old
- * content is restored from $store again
- *
- * @author Andreas Gohr
- */
- function footnote_close() {
-
- // recover footnote into the stack and restore old content
- $footnote = $this->doc;
- $this->doc = $this->store;
- $this->store = '';
-
- // check to see if this footnote has been seen before
- $i = array_search($footnote, $this->footnotes);
-
- if ($i === false) {
- // its a new footnote, add it to the $footnotes array
- $id = count($this->footnotes)+1;
- $this->footnotes[count($this->footnotes)] = $footnote;
- } else {
- // seen this one before, translate the index to an id and save a placeholder
- $i++;
- $id = count($this->footnotes)+1;
- $this->footnotes[count($this->footnotes)] = "@@FNT".($i);
- }
-
- // output the footnote reference and link
- $this->doc .= '<sup><a href="#fn__'.$id.'" name="fnt__'.$id.'" id="fnt__'.$id.'" class="fn_top">'.$id.')</a></sup>';
- }
-
- function listu_open() {
- $this->doc .= '<ul>'.DOKU_LF;
- }
-
- function listu_close() {
- $this->doc .= '</ul>'.DOKU_LF;
- }
-
- function listo_open() {
- $this->doc .= '<ol>'.DOKU_LF;
- }
-
- function listo_close() {
- $this->doc .= '</ol>'.DOKU_LF;
- }
-
- function listitem_open($level) {
- $this->doc .= '<li class="level'.$level.'">';
- }
-
- function listitem_close() {
- $this->doc .= '</li>'.DOKU_LF;
- }
-
- function listcontent_open() {
- $this->doc .= '<div class="li">';
- }
-
- function listcontent_close() {
- $this->doc .= '</div>'.DOKU_LF;
- }
-
- function unformatted($text) {
- $this->doc .= $this->_xmlEntities($text);
- }
-
- /**
- * Execute PHP code if allowed
- *
- * @param string $wrapper html element to wrap result if $conf['phpok'] is okff
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function php($text, $wrapper='code') {
- global $conf;
-
- if($conf['phpok']){
- ob_start();
- eval($text);
- $this->doc .= ob_get_contents();
- ob_end_clean();
- } else {
- $this->doc .= p_xhtml_cached_geshi($text, 'php', $wrapper);
- }
- }
-
- function phpblock($text) {
- $this->php($text, 'pre');
- }
-
- /**
- * Insert HTML if allowed
- *
- * @param string $wrapper html element to wrap result if $conf['htmlok'] is okff
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function html($text, $wrapper='code') {
- global $conf;
-
- if($conf['htmlok']){
- $this->doc .= $text;
- } else {
- $this->doc .= p_xhtml_cached_geshi($text, 'html4strict', $wrapper);
- }
- }
-
- function htmlblock($text) {
- $this->html($text, 'pre');
- }
-
- function preformatted($text) {
- $this->doc .= '<pre class="code">' . $this->_xmlEntities($text) . '</pre>'. DOKU_LF;
- }
-
- function file($text) {
- $this->doc .= '<pre class="file">' . $this->_xmlEntities($text). '</pre>'. DOKU_LF;
- }
-
- function quote_open() {
- $this->doc .= '<blockquote><div class="no">'.DOKU_LF;
- }
-
- function quote_close() {
- $this->doc .= '</div></blockquote>'.DOKU_LF;
- }
-
- /**
- * Callback for code text
- *
- * Uses GeSHi to highlight language syntax
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function code($text, $language = NULL) {
- global $conf;
-
- if ( is_null($language) ) {
- $this->preformatted($text);
- } else {
- $this->doc .= p_xhtml_cached_geshi($text, $language);
- }
- }
-
- function acronym($acronym) {
-
- if ( array_key_exists($acronym, $this->acronyms) ) {
-
- $title = $this->_xmlEntities($this->acronyms[$acronym]);
-
- $this->doc .= '<acronym title="'.$title
- .'">'.$this->_xmlEntities($acronym).'</acronym>';
-
- } else {
- $this->doc .= $this->_xmlEntities($acronym);
- }
- }
-
- function smiley($smiley) {
- if ( array_key_exists($smiley, $this->smileys) ) {
- $title = $this->_xmlEntities($this->smileys[$smiley]);
- $this->doc .= '<img src="'.DOKU_BASE.'lib/images/smileys/'.$this->smileys[$smiley].
- '" class="middle" alt="'.
- $this->_xmlEntities($smiley).'" />';
- } else {
- $this->doc .= $this->_xmlEntities($smiley);
- }
- }
-
- /*
- * not used
- function wordblock($word) {
- if ( array_key_exists($word, $this->badwords) ) {
- $this->doc .= '** BLEEP **';
- } else {
- $this->doc .= $this->_xmlEntities($word);
- }
- }
- */
-
- function entity($entity) {
- if ( array_key_exists($entity, $this->entities) ) {
- $this->doc .= $this->entities[$entity];
- } else {
- $this->doc .= $this->_xmlEntities($entity);
- }
- }
-
- function multiplyentity($x, $y) {
- $this->doc .= "$x×$y";
- }
-
- function singlequoteopening() {
- global $lang;
- $this->doc .= $lang['singlequoteopening'];
- }
-
- function singlequoteclosing() {
- global $lang;
- $this->doc .= $lang['singlequoteclosing'];
- }
-
- function apostrophe() {
- global $lang;
- $this->doc .= $lang['apostrophe'];
- }
-
- function doublequoteopening() {
- global $lang;
- $this->doc .= $lang['doublequoteopening'];
- }
-
- function doublequoteclosing() {
- global $lang;
- $this->doc .= $lang['doublequoteclosing'];
- }
-
- /**
- */
- function camelcaselink($link) {
- $this->internallink($link,$link);
- }
-
-
- function locallink($hash, $name = NULL){
- global $ID;
- $name = $this->_getLinkTitle($name, $hash, $isImage);
- $hash = $this->_headerToLink($hash);
- $title = $ID.' ↵';
- $this->doc .= '<a href="#'.$hash.'" title="'.$title.'" class="wikilink1">';
- $this->doc .= $name;
- $this->doc .= '</a>';
- }
-
- /**
- * Render an internal Wiki Link
- *
- * $search and $returnonly are not for the renderer but are used
- * elsewhere - no need to implement them in other renderers
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function internallink($id, $name = NULL, $search=NULL,$returnonly=false) {
- global $conf;
- global $ID;
- // default name is based on $id as given
- $default = $this->_simpleTitle($id);
-
- // now first resolve and clean up the $id
- resolve_pageid(getNS($ID),$id,$exists);
- $name = $this->_getLinkTitle($name, $default, $isImage, $id);
- if ( !$isImage ) {
- if ( $exists ) {
- $class='wikilink1';
- } else {
- $class='wikilink2';
- $link['rel']='nofollow';
- }
- } else {
- $class='media';
- }
-
- //keep hash anchor
- list($id,$hash) = explode('#',$id,2);
- if(!empty($hash)) $hash = $this->_headerToLink($hash);
-
- //prepare for formating
- $link['target'] = $conf['target']['wiki'];
- $link['style'] = '';
- $link['pre'] = '';
- $link['suf'] = '';
- // highlight link to current page
- if ($id == $ID) {
- $link['pre'] = '<span class="curid">';
- $link['suf'] = '</span>';
- }
- $link['more'] = '';
- $link['class'] = $class;
- $link['url'] = wl($id);
- $link['name'] = $name;
- $link['title'] = $id;
- //add search string
- if($search){
- ($conf['userewrite']) ? $link['url'].='?' : $link['url'].='&';
- if(is_array($search)){
- $search = array_map('rawurlencode',$search);
- $link['url'] .= 's[]='.join('&s[]=',$search);
- }else{
- $link['url'] .= 's='.rawurlencode($search);
- }
- }
-
- //keep hash
- if($hash) $link['url'].='#'.$hash;
-
- //output formatted
- if($returnonly){
- return $this->_formatLink($link);
- }else{
- $this->doc .= $this->_formatLink($link);
- }
- }
-
- function externallink($url, $name = NULL) {
- global $conf;
-
- $name = $this->_getLinkTitle($name, $url, $isImage);
-
- if ( !$isImage ) {
- $class='urlextern';
- } else {
- $class='media';
- }
-
- //prepare for formating
- $link['target'] = $conf['target']['extern'];
- $link['style'] = '';
- $link['pre'] = '';
- $link['suf'] = '';
- $link['more'] = '';
- $link['class'] = $class;
- $link['url'] = $url;
-
- $link['name'] = $name;
- $link['title'] = $this->_xmlEntities($url);
- if($conf['relnofollow']) $link['more'] .= ' rel="nofollow"';
-
- //output formatted
- $this->doc .= $this->_formatLink($link);
- }
-
- /**
- */
- function interwikilink($match, $name = NULL, $wikiName, $wikiUri) {
- global $conf;
-
- $link = array();
- $link['target'] = $conf['target']['interwiki'];
- $link['pre'] = '';
- $link['suf'] = '';
- $link['more'] = '';
- $link['name'] = $this->_getLinkTitle($name, $wikiUri, $isImage);
-
- //get interwiki URL
- $url = $this-> _resolveInterWiki($wikiName,$wikiUri);
-
- if ( !$isImage ) {
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$wikiName);
- $link['class'] = "interwiki iw_$class";
- } else {
- $link['class'] = 'media';
- }
-
- //do we stay at the same server? Use local target
- if( strpos($url,DOKU_URL) === 0 ){
- $link['target'] = $conf['target']['wiki'];
- }
-
- $link['url'] = $url;
- $link['title'] = htmlspecialchars($link['url']);
-
- //output formatted
- $this->doc .= $this->_formatLink($link);
- }
-
- /**
- */
- function windowssharelink($url, $name = NULL) {
- global $conf;
- global $lang;
- //simple setup
- $link['target'] = $conf['target']['windows'];
- $link['pre'] = '';
- $link['suf'] = '';
- $link['style'] = '';
- //Display error on browsers other than IE
- $link['more'] = 'onclick="if(document.all == null){alert(\''.
- str_replace('\\\\n','\\n',addslashes($lang['nosmblinks'])).
- '\');}" onkeypress="if(document.all == null){alert(\''.
- str_replace('\\\\n','\\n',addslashes($lang['nosmblinks'])).'\');}"';
-
- $link['name'] = $this->_getLinkTitle($name, $url, $isImage);
- if ( !$isImage ) {
- $link['class'] = 'windows';
- } else {
- $link['class'] = 'media';
- }
-
-
- $link['title'] = $this->_xmlEntities($url);
- $url = str_replace('\\','/',$url);
- $url = 'file:///'.$url;
- $link['url'] = $url;
-
- //output formatted
- $this->doc .= $this->_formatLink($link);
- }
-
- function emaillink($address, $name = NULL) {
- global $conf;
- //simple setup
- $link = array();
- $link['target'] = '';
- $link['pre'] = '';
- $link['suf'] = '';
- $link['style'] = '';
- $link['more'] = '';
-
- $name = $this->_getLinkTitle($name, '', $isImage);
- if ( !$isImage ) {
- $link['class']='mail JSnocheck';
- } else {
- $link['class']='media JSnocheck';
- }
-
- $address = $this->_xmlEntities($address);
- $address = obfuscate($address);
- $title = $address;
-
- if(empty($name)){
- $name = $address;
- }
-#elseif($isImage{
-# $name = $this->_xmlEntities($name);
-# }
-
- if($conf['mailguard'] == 'visible') $address = rawurlencode($address);
-
- $link['url'] = 'mailto:'.$address;
- $link['name'] = $name;
- $link['title'] = $title;
-
- //output formatted
- $this->doc .= $this->_formatLink($link);
- }
-
- function internalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
- $height=NULL, $cache=NULL, $linking=NULL) {
- global $ID;
- resolve_mediaid(getNS($ID),$src, $exists);
-
- $noLink = false;
- $render = ($linking == 'linkonly') ? false : true;
- $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
-
- list($ext,$mime) = mimetype($src);
- if(substr($mime,0,5) == 'image' && $render){
- $link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),($linking=='direct'));
- }elseif($mime == 'application/x-shockwave-flash'){
- // don't link flash movies
- $noLink = true;
- }else{
- // add file icons
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
- $link['class'] .= ' mediafile mf_'.$class;
- $link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),true);
- }
-
- //output formatted
- if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
- else $this->doc .= $this->_formatLink($link);
- }
-
- /**
- * @todo don't add link for flash
- */
- function externalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
- $height=NULL, $cache=NULL, $linking=NULL) {
- $noLink = false;
- $render = ($linking == 'linkonly') ? false : true;
- $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
-
- $link['url'] = ml($src,array('cache'=>$cache));
-
- list($ext,$mime) = mimetype($src);
- if(substr($mime,0,5) == 'image' && $render){
- // link only jpeg images
- // if ($ext != 'jpg' && $ext != 'jpeg') $noLink = true;
- }elseif($mime == 'application/x-shockwave-flash'){
- // don't link flash movies
- $noLink = true;
- }else{
- // add file icons
- $link['class'] .= ' mediafile mf_'.$ext;
- }
-
- //output formatted
- if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
- else $this->doc .= $this->_formatLink($link);
- }
-
- /**
- * Renders an RSS feed
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function rss ($url,$params){
- global $lang;
- global $conf;
-
- require_once(DOKU_INC.'inc/FeedParser.php');
- $feed = new FeedParser();
- $feed->set_feed_url($url);
-
- //disable warning while fetching
- if (!defined('DOKU_E_LEVEL')) { $elvl = error_reporting(E_ERROR); }
- $rc = $feed->init();
- if (!defined('DOKU_E_LEVEL')) { error_reporting($elvl); }
-
- //decide on start and end
- if($params['reverse']){
- $mod = -1;
- $start = $feed->get_item_quantity()-1;
- $end = $start - ($params['max']);
- $end = ($end < -1) ? -1 : $end;
- }else{
- $mod = 1;
- $start = 0;
- $end = $feed->get_item_quantity();
- $end = ($end > $params['max']) ? $params['max'] : $end;;
- }
-
- $this->doc .= '<ul class="rss">';
- if($rc){
- for ($x = $start; $x != $end; $x += $mod) {
- $item = $feed->get_item($x);
- $this->doc .= '<li><div class="li">';
- $this->externallink($item->get_permalink(),
- $item->get_title());
- if($params['author']){
- $author = $item->get_author(0);
- if($author){
- $name = $author->get_name();
- if(!$name) $name = $author->get_email();
- if($name) $this->doc .= ' '.$lang['by'].' '.$name;
- }
- }
- if($params['date']){
- $this->doc .= ' ('.$item->get_local_date($conf['dformat']).')';
- }
- if($params['details']){
- $this->doc .= '<div class="detail">';
- if($conf['htmlok']){
- $this->doc .= $item->get_description();
- }else{
- $this->doc .= strip_tags($item->get_description());
- }
- $this->doc .= '</div>';
- }
-
- $this->doc .= '</div></li>';
- }
- }else{
- $this->doc .= '<li><div class="li">';
- $this->doc .= '<em>'.$lang['rssfailed'].'</em>';
- $this->externallink($url);
- if($conf['allowdebug']){
- $this->doc .= '<!--'.hsc($feed->error).'-->';
- }
- $this->doc .= '</div></li>';
- }
- $this->doc .= '</ul>';
- }
-
- // $numrows not yet implemented
- function table_open($maxcols = NULL, $numrows = NULL){
- // initialize the row counter used for classes
- $this->_counter['row_counter'] = 0;
- $this->doc .= '<table class="inline">'.DOKU_LF;
- }
-
- function table_close(){
- $this->doc .= '</table>'.DOKU_LF;
- }
-
- function tablerow_open(){
- // initialize the cell counter used for classes
- $this->_counter['cell_counter'] = 0;
- $class = 'row' . $this->_counter['row_counter']++;
- $this->doc .= DOKU_TAB . '<tr class="'.$class.'">' . DOKU_LF . DOKU_TAB . DOKU_TAB;
- }
-
- function tablerow_close(){
- $this->doc .= DOKU_LF . DOKU_TAB . '</tr>' . DOKU_LF;
- }
-
- function tableheader_open($colspan = 1, $align = NULL){
- $class = 'class="col' . $this->_counter['cell_counter']++;
- if ( !is_null($align) ) {
- $class .= ' '.$align.'align';
- }
- $class .= '"';
- $this->doc .= '<th ' . $class;
- if ( $colspan > 1 ) {
- $this->_counter['cell_counter'] += $colspan;
- $this->doc .= ' colspan="'.$colspan.'"';
- }
- $this->doc .= '>';
- }
-
- function tableheader_close(){
- $this->doc .= '</th>';
- }
-
- function tablecell_open($colspan = 1, $align = NULL){
- $class = 'class="col' . $this->_counter['cell_counter']++;
- if ( !is_null($align) ) {
- $class .= ' '.$align.'align';
- }
- $class .= '"';
- $this->doc .= '<td '.$class;
- if ( $colspan > 1 ) {
- $this->_counter['cell_counter'] += $colspan;
- $this->doc .= ' colspan="'.$colspan.'"';
- }
- $this->doc .= '>';
- }
-
- function tablecell_close(){
- $this->doc .= '</td>';
- }
-
- //----------------------------------------------------------
- // Utils
-
- /**
- * Build a link
- *
- * Assembles all parts defined in $link returns HTML for the link
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _formatLink($link){
- //make sure the url is XHTML compliant (skip mailto)
- if(substr($link['url'],0,7) != 'mailto:'){
- $link['url'] = str_replace('&','&',$link['url']);
- $link['url'] = str_replace('&','&',$link['url']);
- }
- //remove double encodings in titles
- $link['title'] = str_replace('&','&',$link['title']);
-
- // be sure there are no bad chars in url or title
- // (we can't do this for name because it can contain an img tag)
- $link['url'] = strtr($link['url'],array('>'=>'%3E','<'=>'%3C','"'=>'%22'));
- $link['title'] = strtr($link['title'],array('>'=>'>','<'=>'<','"'=>'"'));
-
- $ret = '';
- $ret .= $link['pre'];
- $ret .= '<a href="'.$link['url'].'"';
- if(!empty($link['class'])) $ret .= ' class="'.$link['class'].'"';
- if(!empty($link['target'])) $ret .= ' target="'.$link['target'].'"';
- if(!empty($link['title'])) $ret .= ' title="'.$link['title'].'"';
- if(!empty($link['style'])) $ret .= ' style="'.$link['style'].'"';
- if(!empty($link['rel'])) $ret .= ' rel="'.$link['rel'].'"';
- if(!empty($link['more'])) $ret .= ' '.$link['more'];
- $ret .= '>';
- $ret .= $link['name'];
- $ret .= '</a>';
- $ret .= $link['suf'];
- return $ret;
- }
-
- /**
- * Renders internal and external media
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _media ($src, $title=NULL, $align=NULL, $width=NULL,
- $height=NULL, $cache=NULL, $render = true) {
-
- $ret = '';
-
- list($ext,$mime) = mimetype($src);
- if(substr($mime,0,5) == 'image'){
- // first get the $title
- if (!is_null($title)) {
- $title = $this->_xmlEntities($title);
- }elseif($ext == 'jpg' || $ext == 'jpeg'){
- //try to use the caption from IPTC/EXIF
- require_once(DOKU_INC.'inc/JpegMeta.php');
- $jpeg =& new JpegMeta(mediaFN($src));
- if($jpeg !== false) $cap = $jpeg->getTitle();
- if($cap){
- $title = $this->_xmlEntities($cap);
- }
- }
- if (!$render) {
- // if the picture is not supposed to be rendered
- // return the title of the picture
- if (!$title) {
- // just show the sourcename
- $title = $this->_xmlEntities(basename(noNS($src)));
- }
- return $title;
- }
- //add image tag
- $ret .= '<img src="'.ml($src,array('w'=>$width,'h'=>$height,'cache'=>$cache)).'"';
- $ret .= ' class="media'.$align.'"';
-
- // make left/right alignment for no-CSS view work (feeds)
- if($align == 'right') $ret .= ' align="right"';
- if($align == 'left') $ret .= ' align="left"';
-
- if ($title) {
- $ret .= ' title="' . $title . '"';
- $ret .= ' alt="' . $title .'"';
- }else{
- $ret .= ' alt=""';
- }
-
- if ( !is_null($width) )
- $ret .= ' width="'.$this->_xmlEntities($width).'"';
-
- if ( !is_null($height) )
- $ret .= ' height="'.$this->_xmlEntities($height).'"';
-
- $ret .= ' />';
-
- }elseif($mime == 'application/x-shockwave-flash'){
- $ret .= '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'.
- ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"';
- if ( !is_null($width) ) $ret .= ' width="'.$this->_xmlEntities($width).'"';
- if ( !is_null($height) ) $ret .= ' height="'.$this->_xmlEntities($height).'"';
- $ret .= '>'.DOKU_LF;
- $ret .= '<param name="movie" value="'.ml($src).'" />'.DOKU_LF;
- $ret .= '<param name="quality" value="high" />'.DOKU_LF;
- $ret .= '<embed src="'.ml($src).'"'.
- ' quality="high"';
- if ( !is_null($width) ) $ret .= ' width="'.$this->_xmlEntities($width).'"';
- if ( !is_null($height) ) $ret .= ' height="'.$this->_xmlEntities($height).'"';
- $ret .= ' type="application/x-shockwave-flash"'.
- ' pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>'.DOKU_LF;
- $ret .= '</object>'.DOKU_LF;
-
- }elseif($title){
- // well at least we have a title to display
- $ret .= $this->_xmlEntities($title);
- }else{
- // just show the sourcename
- $ret .= $this->_xmlEntities(basename(noNS($src)));
- }
-
- return $ret;
- }
-
- function _xmlEntities($string) {
- return htmlspecialchars($string,ENT_QUOTES,'UTF-8');
- }
-
- /**
- * Creates a linkid from a headline
- *
- * @param string $title The headline title
- * @param boolean $create Create a new unique ID?
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _headerToLink($title,$create=false) {
- $title = str_replace(':','',cleanID($title));
- $title = ltrim($title,'0123456789._-');
- if(empty($title)) $title='section';
-
- if($create){
- // make sure tiles are unique
- $num = '';
- while(in_array($title.$num,$this->headers)){
- ($num) ? $num++ : $num = 1;
- }
- $title = $title.$num;
- $this->headers[] = $title;
- }
-
- return $title;
- }
-
- /**
- * Construct a title and handle images in titles
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
- function _getLinkTitle($title, $default, & $isImage, $id=NULL) {
- global $conf;
-
- $isImage = false;
- if ( is_null($title) ) {
- if ($conf['useheading'] && $id) {
- $heading = p_get_first_heading($id,true);
- if ($heading) {
- return $this->_xmlEntities($heading);
- }
- }
- return $this->_xmlEntities($default);
- } else if ( is_array($title) ) {
- $isImage = true;
- return $this->_imageTitle($title);
- } else {
- return $this->_xmlEntities($title);
- }
- }
-
- /**
- * Returns an HTML code for images used in link titles
- *
- * @todo Resolve namespace on internal images
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _imageTitle($img) {
- return $this->_media($img['src'],
- $img['title'],
- $img['align'],
- $img['width'],
- $img['height'],
- $img['cache']);
- }
-
- /**
- * _getMediaLinkConf is a helperfunction to internalmedia() and externalmedia()
- * which returns a basic link to a media.
- *
- * @author Pierre Spring <pierre.spring at liip.ch>
- * @param string $src
- * @param string $title
- * @param string $align
- * @param string $width
- * @param string $height
- * @param string $cache
- * @param string $render
- * @access protected
- * @return array
- */
- function _getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render)
- {
- global $conf;
-
- $link = array();
- $link['class'] = 'media';
- $link['style'] = '';
- $link['pre'] = '';
- $link['suf'] = '';
- $link['more'] = '';
- $link['target'] = $conf['target']['media'];
- $link['title'] = $this->_xmlEntities($src);
- $link['name'] = $this->_media($src, $title, $align, $width, $height, $cache, $render);
-
- return $link;
- }
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * Renderer for XHTML output
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
+
+if ( !defined('DOKU_LF') ) {
+ // Some whitespace to help View > Source
+ define ('DOKU_LF',"\n");
+}
+
+if ( !defined('DOKU_TAB') ) {
+ // Some whitespace to help View > Source
+ define ('DOKU_TAB',"\t");
+}
+
+require_once DOKU_INC . 'inc/parser/renderer.php';
+require_once DOKU_INC . 'inc/html.php';
+
+/**
+ * The Renderer
+ */
+class Doku_Renderer_xhtml extends Doku_Renderer {
+
+ // @access public
+ var $doc = ''; // will contain the whole document
+ var $toc = array(); // will contain the Table of Contents
+
+
+ var $headers = array();
+ var $footnotes = array();
+ var $lastsec = 0;
+ var $store = '';
+
+ var $_counter = array(); // used as global counter, introduced for table classes
+
+ function getFormat(){
+ return 'xhtml';
+ }
+
+
+ function document_start() {
+ //reset some internals
+ $this->toc = array();
+ $this->headers = array();
+ }
+
+ function document_end() {
+ if ( count ($this->footnotes) > 0 ) {
+ $this->doc .= '<div class="footnotes">'.DOKU_LF;
+
+ $id = 0;
+ foreach ( $this->footnotes as $footnote ) {
+ $id++; // the number of the current footnote
+
+ // check its not a placeholder that indicates actual footnote text is elsewhere
+ if (substr($footnote, 0, 5) != "@@FNT") {
+
+ // open the footnote and set the anchor and backlink
+ $this->doc .= '<div class="fn">';
+ $this->doc .= '<sup><a href="#fnt__'.$id.'" id="fn__'.$id.'" name="fn__'.$id.'" class="fn_bot">';
+ $this->doc .= $id.')</a></sup> '.DOKU_LF;
+
+ // get any other footnotes that use the same markup
+ $alt = array_keys($this->footnotes, "@@FNT$id");
+
+ if (count($alt)) {
+ foreach ($alt as $ref) {
+ // set anchor and backlink for the other footnotes
+ $this->doc .= ', <sup><a href="#fnt__'.($ref+1).'" id="fn__'.($ref+1).'" name="fn__'.($ref+1).'" class="fn_bot">';
+ $this->doc .= ($ref+1).')</a></sup> '.DOKU_LF;
+ }
+ }
+
+ // add footnote markup and close this footnote
+ $this->doc .= $footnote;
+ $this->doc .= '</div>' . DOKU_LF;
+ }
+ }
+ $this->doc .= '</div>'.DOKU_LF;
+ }
+
+ // Prepare the TOC
+ if($this->info['toc'] && is_array($this->toc) && count($this->toc) > 2){
+ global $TOC;
+ $TOC = $this->toc;
+ }
+
+ // make sure there are no empty paragraphs
+ $this->doc = preg_replace('#<p>\s*</p>#','',$this->doc);
+ }
+
+ function toc_additem($id, $text, $level) {
+ global $conf;
+
+ //handle TOC
+ if($level >= $conf['toptoclevel'] && $level <= $conf['maxtoclevel']){
+ $this->toc[] = html_mktocitem($id, $text, $level-$conf['toptoclevel']+1);
+ }
+ }
+
+ function header($text, $level, $pos) {
+
+ $hid = $this->_headerToLink($text,true);
+
+ //only add items within configured levels
+ $this->toc_additem($hid, $text, $level);
+
+ // write the header
+ $this->doc .= DOKU_LF.'<h'.$level.'><a name="'.$hid.'" id="'.$hid.'">';
+ $this->doc .= $this->_xmlEntities($text);
+ $this->doc .= "</a></h$level>".DOKU_LF;
+ }
+
+ /**
+ * Section edit marker is replaced by an edit button when
+ * the page is editable. Replacement done in 'inc/html.php#html_secedit'
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+ function section_edit($start, $end, $level, $name) {
+ global $conf;
+
+ if ($start!=-1 && $level<=$conf['maxseclevel']) {
+ $name = str_replace('"', '', $name);
+ $this->doc .= '<!-- SECTION "'.$name.'" ['.$start.'-'.(($end===0)?'':$end).'] -->';
+ }
+ }
+
+ function section_open($level) {
+ $this->doc .= "<div class=\"level$level\">".DOKU_LF;
+ }
+
+ function section_close() {
+ $this->doc .= DOKU_LF.'</div>'.DOKU_LF;
+ }
+
+ function cdata($text) {
+ $this->doc .= $this->_xmlEntities($text);
+ }
+
+ function p_open() {
+ $this->doc .= DOKU_LF.'<p>'.DOKU_LF;
+ }
+
+ function p_close() {
+ $this->doc .= DOKU_LF.'</p>'.DOKU_LF;
+ }
+
+ function linebreak() {
+ $this->doc .= '<br/>'.DOKU_LF;
+ }
+
+ function hr() {
+ $this->doc .= '<hr />'.DOKU_LF;
+ }
+
+ function strong_open() {
+ $this->doc .= '<strong>';
+ }
+
+ function strong_close() {
+ $this->doc .= '</strong>';
+ }
+
+ function emphasis_open() {
+ $this->doc .= '<em>';
+ }
+
+ function emphasis_close() {
+ $this->doc .= '</em>';
+ }
+
+ function underline_open() {
+ $this->doc .= '<em class="u">';
+ }
+
+ function underline_close() {
+ $this->doc .= '</em>';
+ }
+
+ function monospace_open() {
+ $this->doc .= '<code>';
+ }
+
+ function monospace_close() {
+ $this->doc .= '</code>';
+ }
+
+ function subscript_open() {
+ $this->doc .= '<sub>';
+ }
+
+ function subscript_close() {
+ $this->doc .= '</sub>';
+ }
+
+ function superscript_open() {
+ $this->doc .= '<sup>';
+ }
+
+ function superscript_close() {
+ $this->doc .= '</sup>';
+ }
+
+ function deleted_open() {
+ $this->doc .= '<del>';
+ }
+
+ function deleted_close() {
+ $this->doc .= '</del>';
+ }
+
+ /**
+ * Callback for footnote start syntax
+ *
+ * All following content will go to the footnote instead of
+ * the document. To achieve this the previous rendered content
+ * is moved to $store and $doc is cleared
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function footnote_open() {
+
+ // move current content to store and record footnote
+ $this->store = $this->doc;
+ $this->doc = '';
+ }
+
+ /**
+ * Callback for footnote end syntax
+ *
+ * All rendered content is moved to the $footnotes array and the old
+ * content is restored from $store again
+ *
+ * @author Andreas Gohr
+ */
+ function footnote_close() {
+
+ // recover footnote into the stack and restore old content
+ $footnote = $this->doc;
+ $this->doc = $this->store;
+ $this->store = '';
+
+ // check to see if this footnote has been seen before
+ $i = array_search($footnote, $this->footnotes);
+
+ if ($i === false) {
+ // its a new footnote, add it to the $footnotes array
+ $id = count($this->footnotes)+1;
+ $this->footnotes[count($this->footnotes)] = $footnote;
+ } else {
+ // seen this one before, translate the index to an id and save a placeholder
+ $i++;
+ $id = count($this->footnotes)+1;
+ $this->footnotes[count($this->footnotes)] = "@@FNT".($i);
+ }
+
+ // output the footnote reference and link
+ $this->doc .= '<sup><a href="#fn__'.$id.'" name="fnt__'.$id.'" id="fnt__'.$id.'" class="fn_top">'.$id.')</a></sup>';
+ }
+
+ function listu_open() {
+ $this->doc .= '<ul>'.DOKU_LF;
+ }
+
+ function listu_close() {
+ $this->doc .= '</ul>'.DOKU_LF;
+ }
+
+ function listo_open() {
+ $this->doc .= '<ol>'.DOKU_LF;
+ }
+
+ function listo_close() {
+ $this->doc .= '</ol>'.DOKU_LF;
+ }
+
+ function listitem_open($level) {
+ $this->doc .= '<li class="level'.$level.'">';
+ }
+
+ function listitem_close() {
+ $this->doc .= '</li>'.DOKU_LF;
+ }
+
+ function listcontent_open() {
+ $this->doc .= '<div class="li">';
+ }
+
+ function listcontent_close() {
+ $this->doc .= '</div>'.DOKU_LF;
+ }
+
+ function unformatted($text) {
+ $this->doc .= $this->_xmlEntities($text);
+ }
+
+ /**
+ * Execute PHP code if allowed
+ *
+ * @param string $wrapper html element to wrap result if $conf['phpok'] is okff
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function php($text, $wrapper='code') {
+ global $conf;
+
+ if($conf['phpok']){
+ ob_start();
+ eval($text);
+ $this->doc .= ob_get_contents();
+ ob_end_clean();
+ } else {
+ $this->doc .= p_xhtml_cached_geshi($text, 'php', $wrapper);
+ }
+ }
+
+ function phpblock($text) {
+ $this->php($text, 'pre');
+ }
+
+ /**
+ * Insert HTML if allowed
+ *
+ * @param string $wrapper html element to wrap result if $conf['htmlok'] is okff
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function html($text, $wrapper='code') {
+ global $conf;
+
+ if($conf['htmlok']){
+ $this->doc .= $text;
+ } else {
+ $this->doc .= p_xhtml_cached_geshi($text, 'html4strict', $wrapper);
+ }
+ }
+
+ function htmlblock($text) {
+ $this->html($text, 'pre');
+ }
+
+ function preformatted($text) {
+ $this->doc .= '<pre class="code">' . $this->_xmlEntities($text) . '</pre>'. DOKU_LF;
+ }
+
+ function file($text) {
+ $this->doc .= '<pre class="file">' . $this->_xmlEntities($text). '</pre>'. DOKU_LF;
+ }
+
+ function quote_open() {
+ $this->doc .= '<blockquote><div class="no">'.DOKU_LF;
+ }
+
+ function quote_close() {
+ $this->doc .= '</div></blockquote>'.DOKU_LF;
+ }
+
+ /**
+ * Callback for code text
+ *
+ * Uses GeSHi to highlight language syntax
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function code($text, $language = NULL) {
+ global $conf;
+
+ if ( is_null($language) ) {
+ $this->preformatted($text);
+ } else {
+ $this->doc .= p_xhtml_cached_geshi($text, $language);
+ }
+ }
+
+ function acronym($acronym) {
+
+ if ( array_key_exists($acronym, $this->acronyms) ) {
+
+ $title = $this->_xmlEntities($this->acronyms[$acronym]);
+
+ $this->doc .= '<acronym title="'.$title
+ .'">'.$this->_xmlEntities($acronym).'</acronym>';
+
+ } else {
+ $this->doc .= $this->_xmlEntities($acronym);
+ }
+ }
+
+ function smiley($smiley) {
+ if ( array_key_exists($smiley, $this->smileys) ) {
+ $title = $this->_xmlEntities($this->smileys[$smiley]);
+ $this->doc .= '<img src="'.DOKU_BASE.'lib/images/smileys/'.$this->smileys[$smiley].
+ '" class="middle" alt="'.
+ $this->_xmlEntities($smiley).'" />';
+ } else {
+ $this->doc .= $this->_xmlEntities($smiley);
+ }
+ }
+
+ /*
+ * not used
+ function wordblock($word) {
+ if ( array_key_exists($word, $this->badwords) ) {
+ $this->doc .= '** BLEEP **';
+ } else {
+ $this->doc .= $this->_xmlEntities($word);
+ }
+ }
+ */
+
+ function entity($entity) {
+ if ( array_key_exists($entity, $this->entities) ) {
+ $this->doc .= $this->entities[$entity];
+ } else {
+ $this->doc .= $this->_xmlEntities($entity);
+ }
+ }
+
+ function multiplyentity($x, $y) {
+ $this->doc .= "$x×$y";
+ }
+
+ function singlequoteopening() {
+ global $lang;
+ $this->doc .= $lang['singlequoteopening'];
+ }
+
+ function singlequoteclosing() {
+ global $lang;
+ $this->doc .= $lang['singlequoteclosing'];
+ }
+
+ function apostrophe() {
+ global $lang;
+ $this->doc .= $lang['apostrophe'];
+ }
+
+ function doublequoteopening() {
+ global $lang;
+ $this->doc .= $lang['doublequoteopening'];
+ }
+
+ function doublequoteclosing() {
+ global $lang;
+ $this->doc .= $lang['doublequoteclosing'];
+ }
+
+ /**
+ */
+ function camelcaselink($link) {
+ $this->internallink($link,$link);
+ }
+
+
+ function locallink($hash, $name = NULL){
+ global $ID;
+ $name = $this->_getLinkTitle($name, $hash, $isImage);
+ $hash = $this->_headerToLink($hash);
+ $title = $ID.' ↵';
+ $this->doc .= '<a href="#'.$hash.'" title="'.$title.'" class="wikilink1">';
+ $this->doc .= $name;
+ $this->doc .= '</a>';
+ }
+
+ /**
+ * Render an internal Wiki Link
+ *
+ * $search and $returnonly are not for the renderer but are used
+ * elsewhere - no need to implement them in other renderers
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function internallink($id, $name = NULL, $search=NULL,$returnonly=false) {
+ global $conf;
+ global $ID;
+ // default name is based on $id as given
+ $default = $this->_simpleTitle($id);
+
+ // now first resolve and clean up the $id
+ resolve_pageid(getNS($ID),$id,$exists);
+ $name = $this->_getLinkTitle($name, $default, $isImage, $id);
+ if ( !$isImage ) {
+ if ( $exists ) {
+ $class='wikilink1';
+ } else {
+ $class='wikilink2';
+ $link['rel']='nofollow';
+ }
+ } else {
+ $class='media';
+ }
+
+ //keep hash anchor
+ list($id,$hash) = explode('#',$id,2);
+ if(!empty($hash)) $hash = $this->_headerToLink($hash);
+
+ //prepare for formating
+ $link['target'] = $conf['target']['wiki'];
+ $link['style'] = '';
+ $link['pre'] = '';
+ $link['suf'] = '';
+ // highlight link to current page
+ if ($id == $ID) {
+ $link['pre'] = '<span class="curid">';
+ $link['suf'] = '</span>';
+ }
+ $link['more'] = '';
+ $link['class'] = $class;
+ $link['url'] = wl($id);
+ $link['name'] = $name;
+ $link['title'] = $id;
+ //add search string
+ if($search){
+ ($conf['userewrite']) ? $link['url'].='?' : $link['url'].='&';
+ if(is_array($search)){
+ $search = array_map('rawurlencode',$search);
+ $link['url'] .= 's[]='.join('&s[]=',$search);
+ }else{
+ $link['url'] .= 's='.rawurlencode($search);
+ }
+ }
+
+ //keep hash
+ if($hash) $link['url'].='#'.$hash;
+
+ //output formatted
+ if($returnonly){
+ return $this->_formatLink($link);
+ }else{
+ $this->doc .= $this->_formatLink($link);
+ }
+ }
+
+ function externallink($url, $name = NULL) {
+ global $conf;
+
+ $name = $this->_getLinkTitle($name, $url, $isImage);
+
+ if ( !$isImage ) {
+ $class='urlextern';
+ } else {
+ $class='media';
+ }
+
+ //prepare for formating
+ $link['target'] = $conf['target']['extern'];
+ $link['style'] = '';
+ $link['pre'] = '';
+ $link['suf'] = '';
+ $link['more'] = '';
+ $link['class'] = $class;
+ $link['url'] = $url;
+
+ $link['name'] = $name;
+ $link['title'] = $this->_xmlEntities($url);
+ if($conf['relnofollow']) $link['more'] .= ' rel="nofollow"';
+
+ //output formatted
+ $this->doc .= $this->_formatLink($link);
+ }
+
+ /**
+ */
+ function interwikilink($match, $name = NULL, $wikiName, $wikiUri) {
+ global $conf;
+
+ $link = array();
+ $link['target'] = $conf['target']['interwiki'];
+ $link['pre'] = '';
+ $link['suf'] = '';
+ $link['more'] = '';
+ $link['name'] = $this->_getLinkTitle($name, $wikiUri, $isImage);
+
+ //get interwiki URL
+ $url = $this-> _resolveInterWiki($wikiName,$wikiUri);
+
+ if ( !$isImage ) {
+ $class = preg_replace('/[^_\-a-z0-9]+/i','_',$wikiName);
+ $link['class'] = "interwiki iw_$class";
+ } else {
+ $link['class'] = 'media';
+ }
+
+ //do we stay at the same server? Use local target
+ if( strpos($url,DOKU_URL) === 0 ){
+ $link['target'] = $conf['target']['wiki'];
+ }
+
+ $link['url'] = $url;
+ $link['title'] = htmlspecialchars($link['url']);
+
+ //output formatted
+ $this->doc .= $this->_formatLink($link);
+ }
+
+ /**
+ */
+ function windowssharelink($url, $name = NULL) {
+ global $conf;
+ global $lang;
+ //simple setup
+ $link['target'] = $conf['target']['windows'];
+ $link['pre'] = '';
+ $link['suf'] = '';
+ $link['style'] = '';
+ //Display error on browsers other than IE
+ $link['more'] = 'onclick="if(document.all == null){alert(\''.
+ str_replace('\\\\n','\\n',addslashes($lang['nosmblinks'])).
+ '\');}" onkeypress="if(document.all == null){alert(\''.
+ str_replace('\\\\n','\\n',addslashes($lang['nosmblinks'])).'\');}"';
+
+ $link['name'] = $this->_getLinkTitle($name, $url, $isImage);
+ if ( !$isImage ) {
+ $link['class'] = 'windows';
+ } else {
+ $link['class'] = 'media';
+ }
+
+
+ $link['title'] = $this->_xmlEntities($url);
+ $url = str_replace('\\','/',$url);
+ $url = 'file:///'.$url;
+ $link['url'] = $url;
+
+ //output formatted
+ $this->doc .= $this->_formatLink($link);
+ }
+
+ function emaillink($address, $name = NULL) {
+ global $conf;
+ //simple setup
+ $link = array();
+ $link['target'] = '';
+ $link['pre'] = '';
+ $link['suf'] = '';
+ $link['style'] = '';
+ $link['more'] = '';
+
+ $name = $this->_getLinkTitle($name, '', $isImage);
+ if ( !$isImage ) {
+ $link['class']='mail JSnocheck';
+ } else {
+ $link['class']='media JSnocheck';
+ }
+
+ $address = $this->_xmlEntities($address);
+ $address = obfuscate($address);
+ $title = $address;
+
+ if(empty($name)){
+ $name = $address;
+ }
+#elseif($isImage{
+# $name = $this->_xmlEntities($name);
+# }
+
+ if($conf['mailguard'] == 'visible') $address = rawurlencode($address);
+
+ $link['url'] = 'mailto:'.$address;
+ $link['name'] = $name;
+ $link['title'] = $title;
+
+ //output formatted
+ $this->doc .= $this->_formatLink($link);
+ }
+
+ function internalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
+ $height=NULL, $cache=NULL, $linking=NULL) {
+ global $ID;
+ resolve_mediaid(getNS($ID),$src, $exists);
+
+ $noLink = false;
+ $render = ($linking == 'linkonly') ? false : true;
+ $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
+
+ list($ext,$mime) = mimetype($src);
+ if(substr($mime,0,5) == 'image' && $render){
+ $link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),($linking=='direct'));
+ }elseif($mime == 'application/x-shockwave-flash'){
+ // don't link flash movies
+ $noLink = true;
+ }else{
+ // add file icons
+ $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
+ $link['class'] .= ' mediafile mf_'.$class;
+ $link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),true);
+ }
+
+ //output formatted
+ if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
+ else $this->doc .= $this->_formatLink($link);
+ }
+
+ /**
+ * @todo don't add link for flash
+ */
+ function externalmedia ($src, $title=NULL, $align=NULL, $width=NULL,
+ $height=NULL, $cache=NULL, $linking=NULL) {
+ $noLink = false;
+ $render = ($linking == 'linkonly') ? false : true;
+ $link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
+
+ $link['url'] = ml($src,array('cache'=>$cache));
+
+ list($ext,$mime) = mimetype($src);
+ if(substr($mime,0,5) == 'image' && $render){
+ // link only jpeg images
+ // if ($ext != 'jpg' && $ext != 'jpeg') $noLink = true;
+ }elseif($mime == 'application/x-shockwave-flash'){
+ // don't link flash movies
+ $noLink = true;
+ }else{
+ // add file icons
+ $link['class'] .= ' mediafile mf_'.$ext;
+ }
+
+ //output formatted
+ if ($linking == 'nolink' || $noLink) $this->doc .= $link['name'];
+ else $this->doc .= $this->_formatLink($link);
+ }
+
+ /**
+ * Renders an RSS feed
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function rss ($url,$params){
+ global $lang;
+ global $conf;
+
+ require_once(DOKU_INC.'inc/FeedParser.php');
+ $feed = new FeedParser();
+ $feed->set_feed_url($url);
+
+ //disable warning while fetching
+ if (!defined('DOKU_E_LEVEL')) { $elvl = error_reporting(E_ERROR); }
+ $rc = $feed->init();
+ if (!defined('DOKU_E_LEVEL')) { error_reporting($elvl); }
+
+ //decide on start and end
+ if($params['reverse']){
+ $mod = -1;
+ $start = $feed->get_item_quantity()-1;
+ $end = $start - ($params['max']);
+ $end = ($end < -1) ? -1 : $end;
+ }else{
+ $mod = 1;
+ $start = 0;
+ $end = $feed->get_item_quantity();
+ $end = ($end > $params['max']) ? $params['max'] : $end;;
+ }
+
+ $this->doc .= '<ul class="rss">';
+ if($rc){
+ for ($x = $start; $x != $end; $x += $mod) {
+ $item = $feed->get_item($x);
+ $this->doc .= '<li><div class="li">';
+ $this->externallink($item->get_permalink(),
+ $item->get_title());
+ if($params['author']){
+ $author = $item->get_author(0);
+ if($author){
+ $name = $author->get_name();
+ if(!$name) $name = $author->get_email();
+ if($name) $this->doc .= ' '.$lang['by'].' '.$name;
+ }
+ }
+ if($params['date']){
+ $this->doc .= ' ('.$item->get_local_date($conf['dformat']).')';
+ }
+ if($params['details']){
+ $this->doc .= '<div class="detail">';
+ if($conf['htmlok']){
+ $this->doc .= $item->get_description();
+ }else{
+ $this->doc .= strip_tags($item->get_description());
+ }
+ $this->doc .= '</div>';
+ }
+
+ $this->doc .= '</div></li>';
+ }
+ }else{
+ $this->doc .= '<li><div class="li">';
+ $this->doc .= '<em>'.$lang['rssfailed'].'</em>';
+ $this->externallink($url);
+ if($conf['allowdebug']){
+ $this->doc .= '<!--'.hsc($feed->error).'-->';
+ }
+ $this->doc .= '</div></li>';
+ }
+ $this->doc .= '</ul>';
+ }
+
+ // $numrows not yet implemented
+ function table_open($maxcols = NULL, $numrows = NULL){
+ // initialize the row counter used for classes
+ $this->_counter['row_counter'] = 0;
+ $this->doc .= '<table class="inline">'.DOKU_LF;
+ }
+
+ function table_close(){
+ $this->doc .= '</table>'.DOKU_LF;
+ }
+
+ function tablerow_open(){
+ // initialize the cell counter used for classes
+ $this->_counter['cell_counter'] = 0;
+ $class = 'row' . $this->_counter['row_counter']++;
+ $this->doc .= DOKU_TAB . '<tr class="'.$class.'">' . DOKU_LF . DOKU_TAB . DOKU_TAB;
+ }
+
+ function tablerow_close(){
+ $this->doc .= DOKU_LF . DOKU_TAB . '</tr>' . DOKU_LF;
+ }
+
+ function tableheader_open($colspan = 1, $align = NULL){
+ $class = 'class="col' . $this->_counter['cell_counter']++;
+ if ( !is_null($align) ) {
+ $class .= ' '.$align.'align';
+ }
+ $class .= '"';
+ $this->doc .= '<th ' . $class;
+ if ( $colspan > 1 ) {
+ $this->_counter['cell_counter'] += $colspan;
+ $this->doc .= ' colspan="'.$colspan.'"';
+ }
+ $this->doc .= '>';
+ }
+
+ function tableheader_close(){
+ $this->doc .= '</th>';
+ }
+
+ function tablecell_open($colspan = 1, $align = NULL){
+ $class = 'class="col' . $this->_counter['cell_counter']++;
+ if ( !is_null($align) ) {
+ $class .= ' '.$align.'align';
+ }
+ $class .= '"';
+ $this->doc .= '<td '.$class;
+ if ( $colspan > 1 ) {
+ $this->_counter['cell_counter'] += $colspan;
+ $this->doc .= ' colspan="'.$colspan.'"';
+ }
+ $this->doc .= '>';
+ }
+
+ function tablecell_close(){
+ $this->doc .= '</td>';
+ }
+
+ //----------------------------------------------------------
+ // Utils
+
+ /**
+ * Build a link
+ *
+ * Assembles all parts defined in $link returns HTML for the link
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _formatLink($link){
+ //make sure the url is XHTML compliant (skip mailto)
+ if(substr($link['url'],0,7) != 'mailto:'){
+ $link['url'] = str_replace('&','&',$link['url']);
+ $link['url'] = str_replace('&','&',$link['url']);
+ }
+ //remove double encodings in titles
+ $link['title'] = str_replace('&','&',$link['title']);
+
+ // be sure there are no bad chars in url or title
+ // (we can't do this for name because it can contain an img tag)
+ $link['url'] = strtr($link['url'],array('>'=>'%3E','<'=>'%3C','"'=>'%22'));
+ $link['title'] = strtr($link['title'],array('>'=>'>','<'=>'<','"'=>'"'));
+
+ $ret = '';
+ $ret .= $link['pre'];
+ $ret .= '<a href="'.$link['url'].'"';
+ if(!empty($link['class'])) $ret .= ' class="'.$link['class'].'"';
+ if(!empty($link['target'])) $ret .= ' target="'.$link['target'].'"';
+ if(!empty($link['title'])) $ret .= ' title="'.$link['title'].'"';
+ if(!empty($link['style'])) $ret .= ' style="'.$link['style'].'"';
+ if(!empty($link['rel'])) $ret .= ' rel="'.$link['rel'].'"';
+ if(!empty($link['more'])) $ret .= ' '.$link['more'];
+ $ret .= '>';
+ $ret .= $link['name'];
+ $ret .= '</a>';
+ $ret .= $link['suf'];
+ return $ret;
+ }
+
+ /**
+ * Renders internal and external media
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _media ($src, $title=NULL, $align=NULL, $width=NULL,
+ $height=NULL, $cache=NULL, $render = true) {
+
+ $ret = '';
+
+ list($ext,$mime) = mimetype($src);
+ if(substr($mime,0,5) == 'image'){
+ // first get the $title
+ if (!is_null($title)) {
+ $title = $this->_xmlEntities($title);
+ }elseif($ext == 'jpg' || $ext == 'jpeg'){
+ //try to use the caption from IPTC/EXIF
+ require_once(DOKU_INC.'inc/JpegMeta.php');
+ $jpeg =& new JpegMeta(mediaFN($src));
+ if($jpeg !== false) $cap = $jpeg->getTitle();
+ if($cap){
+ $title = $this->_xmlEntities($cap);
+ }
+ }
+ if (!$render) {
+ // if the picture is not supposed to be rendered
+ // return the title of the picture
+ if (!$title) {
+ // just show the sourcename
+ $title = $this->_xmlEntities(basename(noNS($src)));
+ }
+ return $title;
+ }
+ //add image tag
+ $ret .= '<img src="'.ml($src,array('w'=>$width,'h'=>$height,'cache'=>$cache)).'"';
+ $ret .= ' class="media'.$align.'"';
+
+ // make left/right alignment for no-CSS view work (feeds)
+ if($align == 'right') $ret .= ' align="right"';
+ if($align == 'left') $ret .= ' align="left"';
+
+ if ($title) {
+ $ret .= ' title="' . $title . '"';
+ $ret .= ' alt="' . $title .'"';
+ }else{
+ $ret .= ' alt=""';
+ }
+
+ if ( !is_null($width) )
+ $ret .= ' width="'.$this->_xmlEntities($width).'"';
+
+ if ( !is_null($height) )
+ $ret .= ' height="'.$this->_xmlEntities($height).'"';
+
+ $ret .= ' />';
+
+ }elseif($mime == 'application/x-shockwave-flash'){
+ $ret .= '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'.
+ ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"';
+ if ( !is_null($width) ) $ret .= ' width="'.$this->_xmlEntities($width).'"';
+ if ( !is_null($height) ) $ret .= ' height="'.$this->_xmlEntities($height).'"';
+ $ret .= '>'.DOKU_LF;
+ $ret .= '<param name="movie" value="'.ml($src).'" />'.DOKU_LF;
+ $ret .= '<param name="quality" value="high" />'.DOKU_LF;
+ $ret .= '<embed src="'.ml($src).'"'.
+ ' quality="high"';
+ if ( !is_null($width) ) $ret .= ' width="'.$this->_xmlEntities($width).'"';
+ if ( !is_null($height) ) $ret .= ' height="'.$this->_xmlEntities($height).'"';
+ $ret .= ' type="application/x-shockwave-flash"'.
+ ' pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>'.DOKU_LF;
+ $ret .= '</object>'.DOKU_LF;
+
+ }elseif($title){
+ // well at least we have a title to display
+ $ret .= $this->_xmlEntities($title);
+ }else{
+ // just show the sourcename
+ $ret .= $this->_xmlEntities(basename(noNS($src)));
+ }
+
+ return $ret;
+ }
+
+ function _xmlEntities($string) {
+ return htmlspecialchars($string,ENT_QUOTES,'UTF-8');
+ }
+
+ /**
+ * Creates a linkid from a headline
+ *
+ * @param string $title The headline title
+ * @param boolean $create Create a new unique ID?
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _headerToLink($title,$create=false) {
+ $title = str_replace(':','',cleanID($title));
+ $title = ltrim($title,'0123456789._-');
+ if(empty($title)) $title='section';
+
+ if($create){
+ // make sure tiles are unique
+ $num = '';
+ while(in_array($title.$num,$this->headers)){
+ ($num) ? $num++ : $num = 1;
+ }
+ $title = $title.$num;
+ $this->headers[] = $title;
+ }
+
+ return $title;
+ }
+
+ /**
+ * Construct a title and handle images in titles
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+ function _getLinkTitle($title, $default, & $isImage, $id=NULL) {
+ global $conf;
+
+ $isImage = false;
+ if ( is_null($title) ) {
+ if ($conf['useheading'] && $id) {
+ $heading = p_get_first_heading($id,true);
+ if ($heading) {
+ return $this->_xmlEntities($heading);
+ }
+ }
+ return $this->_xmlEntities($default);
+ } else if ( is_array($title) ) {
+ $isImage = true;
+ return $this->_imageTitle($title);
+ } else {
+ return $this->_xmlEntities($title);
+ }
+ }
+
+ /**
+ * Returns an HTML code for images used in link titles
+ *
+ * @todo Resolve namespace on internal images
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _imageTitle($img) {
+ return $this->_media($img['src'],
+ $img['title'],
+ $img['align'],
+ $img['width'],
+ $img['height'],
+ $img['cache']);
+ }
+
+ /**
+ * _getMediaLinkConf is a helperfunction to internalmedia() and externalmedia()
+ * which returns a basic link to a media.
+ *
+ * @author Pierre Spring <pierre.spring at liip.ch>
+ * @param string $src
+ * @param string $title
+ * @param string $align
+ * @param string $width
+ * @param string $height
+ * @param string $cache
+ * @param string $render
+ * @access protected
+ * @return array
+ */
+ function _getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render)
+ {
+ global $conf;
+
+ $link = array();
+ $link['class'] = 'media';
+ $link['style'] = '';
+ $link['pre'] = '';
+ $link['suf'] = '';
+ $link['more'] = '';
+ $link['target'] = $conf['target']['media'];
+ $link['title'] = $this->_xmlEntities($src);
+ $link['name'] = $this->_media($src, $title, $align, $width, $height, $cache, $render);
+
+ return $link;
+ }
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parser/xhtmlsummary.php
===================================================================
--- site/trunk/www-root/wiki/inc/parser/xhtmlsummary.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parser/xhtmlsummary.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,91 +1,91 @@
-<?php
-if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
-
-require_once DOKU_INC . 'inc/parser/xhtml.php';
-
-/**
- * The summary XHTML form selects either up to the first two paragraphs
- * it find in a page or the first section (whichever comes first)
- * It strips out the table of contents if one exists
- * Section divs are not used - everything should be nested in a single
- * div with CSS class "page"
- * Headings have their a name link removed and section editing links
- * removed
- * It also attempts to capture the first heading in a page for
- * use as the title of the page.
- *
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @todo Is this currently used anywhere? Should it?
- */
-class Doku_Renderer_xhtmlsummary extends Doku_Renderer_xhtml {
-
- // Namespace these variables to
- // avoid clashes with parent classes
- var $sum_paragraphs = 0;
- var $sum_capture = true;
- var $sum_inSection = false;
- var $sum_summary = '';
- var $sum_pageTitle = false;
-
- function document_start() {
- $this->doc .= DOKU_LF.'<div>'.DOKU_LF;
- }
-
- function document_end() {
- $this->doc = $this->sum_summary;
- $this->doc .= DOKU_LF.'</div>'.DOKU_LF;
- }
-
- // FIXME not supported anymore
- function toc_open() {
- $this->sum_summary .= $this->doc;
- }
-
- // FIXME not supported anymore
- function toc_close() {
- $this->doc = '';
- }
-
- function header($text, $level, $pos) {
- if ( !$this->sum_pageTitle ) {
- $this->info['sum_pagetitle'] = $text;
- $this->sum_pageTitle = true;
- }
- $this->doc .= DOKU_LF.'<h'.$level.'>';
- $this->doc .= $this->_xmlEntities($text);
- $this->doc .= "</h$level>".DOKU_LF;
- }
-
- function section_open($level) {
- if ( $this->sum_capture ) {
- $this->sum_inSection = true;
- }
- }
-
- function section_close() {
- if ( $this->sum_capture && $this->sum_inSection ) {
- $this->sum_summary .= $this->doc;
- $this->sum_capture = false;
- }
- }
-
- function p_open() {
- if ( $this->sum_capture && $this->sum_paragraphs < 2 ) {
- $this->sum_paragraphs++;
- }
- parent :: p_open();
- }
-
- function p_close() {
- parent :: p_close();
- if ( $this->sum_capture && $this->sum_paragraphs >= 2 ) {
- $this->sum_summary .= $this->doc;
- $this->sum_capture = false;
- }
- }
-
-}
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../../').'/');
+
+require_once DOKU_INC . 'inc/parser/xhtml.php';
+
+/**
+ * The summary XHTML form selects either up to the first two paragraphs
+ * it find in a page or the first section (whichever comes first)
+ * It strips out the table of contents if one exists
+ * Section divs are not used - everything should be nested in a single
+ * div with CSS class "page"
+ * Headings have their a name link removed and section editing links
+ * removed
+ * It also attempts to capture the first heading in a page for
+ * use as the title of the page.
+ *
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @todo Is this currently used anywhere? Should it?
+ */
+class Doku_Renderer_xhtmlsummary extends Doku_Renderer_xhtml {
+
+ // Namespace these variables to
+ // avoid clashes with parent classes
+ var $sum_paragraphs = 0;
+ var $sum_capture = true;
+ var $sum_inSection = false;
+ var $sum_summary = '';
+ var $sum_pageTitle = false;
+
+ function document_start() {
+ $this->doc .= DOKU_LF.'<div>'.DOKU_LF;
+ }
+
+ function document_end() {
+ $this->doc = $this->sum_summary;
+ $this->doc .= DOKU_LF.'</div>'.DOKU_LF;
+ }
+
+ // FIXME not supported anymore
+ function toc_open() {
+ $this->sum_summary .= $this->doc;
+ }
+
+ // FIXME not supported anymore
+ function toc_close() {
+ $this->doc = '';
+ }
+
+ function header($text, $level, $pos) {
+ if ( !$this->sum_pageTitle ) {
+ $this->info['sum_pagetitle'] = $text;
+ $this->sum_pageTitle = true;
+ }
+ $this->doc .= DOKU_LF.'<h'.$level.'>';
+ $this->doc .= $this->_xmlEntities($text);
+ $this->doc .= "</h$level>".DOKU_LF;
+ }
+
+ function section_open($level) {
+ if ( $this->sum_capture ) {
+ $this->sum_inSection = true;
+ }
+ }
+
+ function section_close() {
+ if ( $this->sum_capture && $this->sum_inSection ) {
+ $this->sum_summary .= $this->doc;
+ $this->sum_capture = false;
+ }
+ }
+
+ function p_open() {
+ if ( $this->sum_capture && $this->sum_paragraphs < 2 ) {
+ $this->sum_paragraphs++;
+ }
+ parent :: p_open();
+ }
+
+ function p_close() {
+ parent :: p_close();
+ if ( $this->sum_capture && $this->sum_paragraphs >= 2 ) {
+ $this->sum_summary .= $this->doc;
+ $this->sum_capture = false;
+ }
+ }
+
+}
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/parserutils.php
===================================================================
--- site/trunk/www-root/wiki/inc/parserutils.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/parserutils.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,672 +1,674 @@
-<?php
-/**
- * Utilities for accessing the parser
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-
- require_once(DOKU_INC.'inc/confutils.php');
- require_once(DOKU_INC.'inc/pageutils.php');
- require_once(DOKU_INC.'inc/pluginutils.php');
- require_once(DOKU_INC.'inc/cache.php');
-
-/**
- * Returns the parsed Wikitext in XHTML for the given id and revision.
- *
- * If $excuse is true an explanation is returned if the file
- * wasn't found
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_wiki_xhtml($id, $rev='', $excuse=true){
- $file = wikiFN($id,$rev);
- $ret = '';
-
- //ensure $id is in global $ID (needed for parsing)
- global $ID;
- $keep = $ID;
- $ID = $id;
-
- if($rev){
- if(@file_exists($file)){
- $ret = p_render('xhtml',p_get_instructions(io_readfile($file)),$info); //no caching on old revisions
- }elseif($excuse){
- $ret = p_locale_xhtml('norev');
- }
- }else{
- if(@file_exists($file)){
- $ret = p_cached_output($file,'xhtml',$id);
- }elseif($excuse){
- $ret = p_locale_xhtml('newpage');
- }
- }
-
- //restore ID (just in case)
- $ID = $keep;
-
- return $ret;
-}
-
-/**
- * Returns starting summary for a page (e.g. the first few
- * paragraphs), marked up in XHTML.
- *
- * If $excuse is true an explanation is returned if the file
- * wasn't found
- *
- * @param string wiki page id
- * @param reference populated with page title from heading or page id
- * @deprecated
- * @author Harry Fuecks <hfuecks at gmail.com>
- */
-function p_wiki_xhtml_summary($id, &$title, $rev='', $excuse=true){
- $file = wikiFN($id,$rev);
- $ret = '';
-
- //ensure $id is in global $ID (needed for parsing)
- global $ID;
- $keep = $ID;
- $ID = $id;
-
- if($rev){
- if(@file_exists($file)){
- //no caching on old revisions
- $ins = p_get_instructions(io_readfile($file));
- }elseif($excuse){
- $ret = p_locale_xhtml('norev');
- //restore ID (just in case)
- $ID = $keep;
- return $ret;
- }
-
- }else{
-
- if(@file_exists($file)){
- // The XHTML for a summary is not cached so use the instruction cache
- $ins = p_cached_instructions($file);
- }elseif($excuse){
- $ret = p_locale_xhtml('newpage');
- //restore ID (just in case)
- $ID = $keep;
- return $ret;
- }
- }
-
- $ret = p_render('xhtmlsummary',$ins,$info);
-
- if ( $info['sum_pagetitle'] ) {
- $title = $info['sum_pagetitle'];
- } else {
- $title = $id;
- }
-
- $ID = $keep;
- return $ret;
-}
-
-/**
- * Returns the specified local text in parsed format
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_locale_xhtml($id){
- //fetch parsed locale
- $html = p_cached_output(localeFN($id));
- return $html;
-}
-
-/**
- * *** DEPRECATED ***
- *
- * use p_cached_output()
- *
- * Returns the given file parsed to XHTML
- *
- * Uses and creates a cachefile
- *
- * @deprecated
- * @author Andreas Gohr <andi at splitbrain.org>
- * @todo rewrite to use mode instead of hardcoded XHTML
- */
-function p_cached_xhtml($file){
- return p_cached_output($file);
-}
-
-/**
- * Returns the given file parsed into the requested output format
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Chris Smith <chris at jalakai.co.uk>
- */
-function p_cached_output($file, $format='xhtml', $id='') {
- global $conf;
-
- $cache = new cache_renderer($id, $file, $format);
- if ($cache->useCache()) {
- $parsed = $cache->retrieveCache(false);
- if($conf['allowdebug'] && $format=='xhtml') $parsed .= "\n<!-- cachefile {$cache->cache} used -->\n";
- } else {
- $parsed = p_render($format, p_cached_instructions($file,false,$id), $info);
-
- if ($info['cache']) {
- $cache->storeCache($parsed); //save cachefile
- if($conf['allowdebug'] && $format=='xhtml') $parsed .= "\n<!-- no cachefile used, but created {$cache->cache} -->\n";
- }else{
- $cache->removeCache(); //try to delete cachefile
- if($conf['allowdebug'] && $format=='xhtml') $parsed .= "\n<!-- no cachefile used, caching forbidden -->\n";
- }
- }
-
- return $parsed;
-}
-
-/**
- * Returns the render instructions for a file
- *
- * Uses and creates a serialized cache file
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_cached_instructions($file,$cacheonly=false,$id='') {
- global $conf;
- static $run = null;
- if(is_null($run)) $run = array();
-
- $cache = new cache_instructions($id, $file);
-
- if ($cacheonly || $cache->useCache() || isset($run[$file])) {
- return $cache->retrieveCache();
- } else if (@file_exists($file)) {
- // no cache - do some work
- $ins = p_get_instructions(io_readfile($file));
- if ($cache->storeCache($ins)) {
- $run[$file] = true; // we won't rebuild these instructions in the same run again
- } else {
- msg('Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.',-1);
- }
- return $ins;
- }
-
- return null;
-}
-
-/**
- * turns a page into a list of instructions
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_get_instructions($text){
-
- $modes = p_get_parsermodes();
-
- // Create the parser
- $Parser = & new Doku_Parser();
-
- // Add the Handler
- $Parser->Handler = & new Doku_Handler();
-
- //add modes to parser
- foreach($modes as $mode){
- $Parser->addMode($mode['mode'],$mode['obj']);
- }
-
- // Do the parsing
- trigger_event('PARSER_WIKITEXT_PREPROCESS', $text);
- $p = $Parser->parse($text);
-// dbg($p);
- return $p;
-}
-
-/**
- * returns the metadata of a page
- *
- * @author Esther Brunner <esther at kaffeehaus.ch>
- */
-function p_get_metadata($id, $key=false, $render=false){
- global $ID, $INFO, $cache_metadata;
-
- // cache the current page
- // Benchmarking shows the current page's metadata is generally the only page metadata
- // accessed several times. This may catch a few other pages, but that shouldn't be an issue.
- $cache = ($ID == $id);
- $meta = p_read_metadata($id, $cache);
-
- // metadata has never been rendered before - do it! (but not for non-existent pages)
- if ($render && !$meta['current']['description']['abstract'] && page_exists($id)){
- $meta = p_render_metadata($id, $meta);
- io_saveFile(metaFN($id, '.meta'), serialize($meta));
-
- // sync cached copies, including $INFO metadata
- if (!empty($cache_metadata[$id])) $cache_metadata[$id] = $meta;
- if (!empty($INFO) && ($id == $INFO['id'])) { $INFO['meta'] = $meta['current']; }
- }
-
- // filter by $key
- if ($key){
- list($key, $subkey) = explode(' ', $key, 2);
- $subkey = trim($subkey);
-
- if ($subkey) {
- return isset($meta['current'][$key][$subkey]) ? $meta['current'][$key][$subkey] : null;
- }
-
- return isset($meta['current'][$key]) ? $meta['current'][$key] : null;
- }
-
- return $meta['current'];
-}
-
-/**
- * sets metadata elements of a page
- *
- * @author Esther Brunner <esther at kaffeehaus.ch>
- */
-function p_set_metadata($id, $data, $render=false, $persistent=true){
- if (!is_array($data)) return false;
-
- global $ID;
-
- // cache the current page
- $cache = ($ID == $id);
- $orig = p_read_metadata($id, $cache);
-
- // render metadata first?
- $meta = $render ? p_render_metadata($id, $orig) : $orig;
-
- // now add the passed metadata
- $protected = array('description', 'date', 'contributor');
- foreach ($data as $key => $value){
-
- // be careful with sub-arrays of $meta['relation']
- if ($key == 'relation'){
-
- foreach ($value as $subkey => $subvalue){
- $meta['current'][$key][$subkey] = !empty($meta['current'][$key][$subkey]) ? array_merge($meta['current'][$key][$subkey], $subvalue) : $subvalue;
- if ($persistent)
- $meta['persistent'][$key][$subkey] = !empty($meta['persistent'][$key][$subkey]) ? array_merge($meta['persistent'][$key][$subkey], $subvalue) : $subvalue;
- }
-
- // be careful with some senisitive arrays of $meta
- } elseif (in_array($key, $protected)){
-
- // these keys, must have subkeys - a legitimate value must be an array
- if (is_array($value)) {
- $meta['current'][$key] = !empty($meta['current'][$key]) ? array_merge($meta['current'][$key],$value) : $value;
-
- if ($persistent) {
- $meta['persistent'][$key] = !empty($meta['persistent'][$key]) ? array_merge($meta['persistent'][$key],$value) : $value;
- }
- }
-
- // no special treatment for the rest
- } else {
- $meta['current'][$key] = $value;
- if ($persistent) $meta['persistent'][$key] = $value;
- }
- }
-
- // save only if metadata changed
- if ($meta == $orig) return true;
-
- // sync cached copies, including $INFO metadata
- global $cache_metadata, $INFO;
-
- if (!empty($cache_metadata[$id])) $cache_metadata[$id] = $meta;
- if (!empty($INFO) && ($id == $INFO['id'])) { $INFO['meta'] = $meta['current']; }
-
- return io_saveFile(metaFN($id, '.meta'), serialize($meta));
-}
-
-/**
- * Purges the non-persistant part of the meta data
- * used on page deletion
- *
- * @author Michael Klier <chi at chimeric.de>
- */
-function p_purge_metadata($id) {
- $metafn = metaFN('id', '.meta');
- $meta = p_read_metadata($id);
- foreach($meta['current'] as $key => $value) {
- if(is_array($meta[$key])) {
- $meta['current'][$key] = array();
- } else {
- $meta['current'][$key] = '';
- }
- }
- return io_saveFile(metaFN($id, '.meta'), serialize($meta));
-}
-
-/**
- * read the metadata from source/cache for $id
- * (internal use only - called by p_get_metadata & p_set_metadata)
- *
- * this function also converts the metadata from the original format to
- * the current format ('current' & 'persistent' arrays)
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- *
- * @param string $id absolute wiki page id
- * @param bool $cache whether or not to cache metadata in memory
- * (only use for metadata likely to be accessed several times)
- *
- * @return array metadata
- */
-function p_read_metadata($id,$cache=false) {
- global $cache_metadata;
-
- if (isset($cache_metadata[$id])) return $cache_metadata[$id];
-
- $file = metaFN($id, '.meta');
- $meta = @file_exists($file) ? unserialize(io_readFile($file, false)) : array('current'=>array(),'persistent'=>array());
-
- // convert $meta from old format to new (current+persistent) format
- if (!isset($meta['current'])) {
- $meta = array('current'=>$meta,'persistent'=>$meta);
-
- // remove non-persistent keys
- unset($meta['persistent']['title']);
- unset($meta['persistent']['description']['abstract']);
- unset($meta['persistent']['description']['tableofcontents']);
- unset($meta['persistent']['relation']['haspart']);
- unset($meta['persistent']['relation']['references']);
- unset($meta['persistent']['date']['valid']);
-
- if (empty($meta['persistent']['description'])) unset($meta['persistent']['description']);
- if (empty($meta['persistent']['relation'])) unset($meta['persistent']['relation']);
- if (empty($meta['persistent']['date'])) unset($meta['persistent']['date']);
-
- // save converted metadata
- io_saveFile($file, serialize($meta));
- }
-
- if ($cache) {
- $cache_metadata[$id] = $meta;
- }
-
- return $meta;
-}
-
-/**
- * renders the metadata of a page
- *
- * @author Esther Brunner <esther at kaffeehaus.ch>
- */
-function p_render_metadata($id, $orig){
- // make sure the correct ID is in global ID
- global $ID;
- $keep = $ID;
- $ID = $id;
-
-
- // add an extra key for the event - to tell event handlers the page whose metadata this is
- $orig['page'] = $id;
- $evt = new Doku_Event('PARSER_METADATA_RENDER', $orig);
- if ($evt->advise_before()) {
-
- require_once DOKU_INC."inc/parser/metadata.php";
-
- // get instructions
- $instructions = p_cached_instructions(wikiFN($id),false,$id);
- if(is_null($instructions)){
- $ID = $keep;
- return null; // something went wrong with the instructions
- }
-
- // set up the renderer
- $renderer = & new Doku_Renderer_metadata();
- $renderer->meta = $orig['current'];
- $renderer->persistent = $orig['persistent'];
-
- // loop through the instructions
- foreach ($instructions as $instruction){
- // execute the callback against the renderer
- call_user_func_array(array(&$renderer, $instruction[0]), $instruction[1]);
- }
-
- $evt->result = array('current'=>$renderer->meta,'persistent'=>$renderer->persistent);
- }
- $evt->advise_after();
-
- $ID = $keep;
- return $evt->result;
-}
-
-/**
- * returns all available parser syntax modes in correct order
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_get_parsermodes(){
- global $conf;
-
- //reuse old data
- static $modes = null;
- if($modes != null){
- return $modes;
- }
-
- //import parser classes and mode definitions
- require_once DOKU_INC . 'inc/parser/parser.php';
-
- // we now collect all syntax modes and their objects, then they will
- // be sorted and added to the parser in correct order
- $modes = array();
-
- // add syntax plugins
- $pluginlist = plugin_list('syntax');
- if(count($pluginlist)){
- global $PARSER_MODES;
- $obj = null;
- foreach($pluginlist as $p){
- if(!$obj =& plugin_load('syntax',$p)) continue; //attempt to load plugin into $obj
- $PARSER_MODES[$obj->getType()][] = "plugin_$p"; //register mode type
- //add to modes
- $modes[] = array(
- 'sort' => $obj->getSort(),
- 'mode' => "plugin_$p",
- 'obj' => $obj,
- );
- unset($obj); //remove the reference
- }
- }
-
- // add default modes
- $std_modes = array('listblock','preformatted','notoc','nocache',
- 'header','table','linebreak','footnote','hr',
- 'unformatted','php','html','code','file','quote',
- 'internallink','rss','media','externallink',
- 'emaillink','windowssharelink','eol');
- if($conf['typography']){
- $std_modes[] = 'quotes';
- $std_modes[] = 'multiplyentity';
- }
- foreach($std_modes as $m){
- $class = "Doku_Parser_Mode_$m";
- $obj = new $class();
- $modes[] = array(
- 'sort' => $obj->getSort(),
- 'mode' => $m,
- 'obj' => $obj
- );
- }
-
- // add formatting modes
- $fmt_modes = array('strong','emphasis','underline','monospace',
- 'subscript','superscript','deleted');
- foreach($fmt_modes as $m){
- $obj = new Doku_Parser_Mode_formatting($m);
- $modes[] = array(
- 'sort' => $obj->getSort(),
- 'mode' => $m,
- 'obj' => $obj
- );
- }
-
- // add modes which need files
- $obj = new Doku_Parser_Mode_smiley(array_keys(getSmileys()));
- $modes[] = array('sort' => $obj->getSort(), 'mode' => 'smiley','obj' => $obj );
- $obj = new Doku_Parser_Mode_acronym(array_keys(getAcronyms()));
- $modes[] = array('sort' => $obj->getSort(), 'mode' => 'acronym','obj' => $obj );
- $obj = new Doku_Parser_Mode_entity(array_keys(getEntities()));
- $modes[] = array('sort' => $obj->getSort(), 'mode' => 'entity','obj' => $obj );
-
-
- // add optional camelcase mode
- if($conf['camelcase']){
- $obj = new Doku_Parser_Mode_camelcaselink();
- $modes[] = array('sort' => $obj->getSort(), 'mode' => 'camelcaselink','obj' => $obj );
- }
-
- //sort modes
- usort($modes,'p_sort_modes');
-
- return $modes;
-}
-
-/**
- * Callback function for usort
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_sort_modes($a, $b){
- if($a['sort'] == $b['sort']) return 0;
- return ($a['sort'] < $b['sort']) ? -1 : 1;
-}
-
-/**
- * Renders a list of instruction to the specified output mode
- *
- * In the $info array are informations from the renderer returned
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_render($mode,$instructions,&$info){
- if(is_null($instructions)) return '';
-
- $Renderer =& p_get_renderer($mode);
- if (is_null($Renderer)) return null;
-
- $Renderer->reset();
-
- $Renderer->smileys = getSmileys();
- $Renderer->entities = getEntities();
- $Renderer->acronyms = getAcronyms();
- $Renderer->interwiki = getInterwiki();
- #$Renderer->badwords = getBadWords();
-
- // Loop through the instructions
- foreach ( $instructions as $instruction ) {
- // Execute the callback against the Renderer
- call_user_func_array(array(&$Renderer, $instruction[0]),$instruction[1]);
- }
-
- //set info array
- $info = $Renderer->info;
-
- // Post process and return the output
- $data = array($mode,& $Renderer->doc);
- trigger_event('RENDERER_CONTENT_POSTPROCESS',$data);
- return $Renderer->doc;
-}
-
-function & p_get_renderer($mode) {
- global $conf;
-
- $rname = !empty($conf['renderer_'.$mode]) ? $conf['renderer_'.$mode] : $mode;
-
- // try default renderer first:
- $file = DOKU_INC."inc/parser/$rname.php";
- if(@file_exists($file)){
- require_once $file;
- $rclass = "Doku_Renderer_$rname";
-
- if ( !class_exists($rclass) ) {
- trigger_error("Unable to resolve render class $rclass",E_USER_WARNING);
- msg("Renderer '$rname' for $mode not valid",-1);
- return null;
- }
- $Renderer = & new $rclass();
- }else{
- // Maybe a plugin is available?
- $Renderer =& plugin_load('renderer',$rname);
- if(is_null($Renderer)){
- msg("No renderer '$rname' found for mode '$mode'",-1);
- return null;
- }
- }
-
- return $Renderer;
-}
-
-/**
- * Gets the first heading from a file
- *
- * @param string $id dokuwiki page id
- * @param bool $render rerender if first heading not known
- * default: true -- must be set to false for calls from the metadata renderer to
- * protects against loops and excessive resource usage when pages
- * for which only a first heading is required will attempt to
- * render metadata for all the pages for which they require first
- * headings ... and so on.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function p_get_first_heading($id, $render=true){
- global $conf;
- return $conf['useheading'] ? p_get_metadata($id,'title',$render) : null;
-}
-
-/**
- * Wrapper for GeSHi Code Highlighter, provides caching of its output
- *
- * @param string $code source code to be highlighted
- * @param string $language language to provide highlighting
- * @param string $wrapper html element to wrap the returned highlighted text
- *
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-function p_xhtml_cached_geshi($code, $language, $wrapper='pre') {
- global $conf;
-
- // remove any leading or trailing blank lines
- $code = preg_replace('/^\s*?\n|\s*?\n$/','',$code);
-
- $cache = getCacheName($language.$code,".code");
-
- if (@file_exists($cache) && !$_REQUEST['purge'] &&
- (filemtime($cache) > filemtime(DOKU_INC . 'inc/geshi.php'))) {
-
- $highlighted_code = io_readFile($cache, false);
- @touch($cache);
-
- } else {
-
- require_once(DOKU_INC . 'inc/geshi.php');
-
- $geshi = new GeSHi($code, strtolower($language), DOKU_INC . 'inc/geshi');
- $geshi->set_encoding('utf-8');
- $geshi->enable_classes();
- $geshi->set_header_type(GESHI_HEADER_PRE);
- $geshi->set_link_target($conf['target']['extern']);
-
- // remove GeSHi's wrapper element (we'll replace it with our own later)
- // we need to use a GeSHi wrapper to avoid <BR> throughout the highlighted text
- $highlighted_code = preg_replace('!^<pre[^>]*>|</pre>$!','',$geshi->parse_code());
- io_saveFile($cache,$highlighted_code);
- }
-
- // add a wrapper element if required
- if ($wrapper) {
- return "<$wrapper class=\"code $language\">$highlighted_code</$wrapper>";
- } else {
- return $highlighted_code;
- }
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Utilities for accessing the parser
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+
+ require_once(DOKU_INC.'inc/confutils.php');
+ require_once(DOKU_INC.'inc/pageutils.php');
+ require_once(DOKU_INC.'inc/pluginutils.php');
+ require_once(DOKU_INC.'inc/cache.php');
+
+/**
+ * Returns the parsed Wikitext in XHTML for the given id and revision.
+ *
+ * If $excuse is true an explanation is returned if the file
+ * wasn't found
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_wiki_xhtml($id, $rev='', $excuse=true){
+ $file = wikiFN($id,$rev);
+ $ret = '';
+
+ //ensure $id is in global $ID (needed for parsing)
+ global $ID;
+ $keep = $ID;
+ $ID = $id;
+
+ if($rev){
+ if(@file_exists($file)){
+ $ret = p_render('xhtml',p_get_instructions(io_readWikiPage($file,$id,$rev)),$info); //no caching on old revisions
+ }elseif($excuse){
+ $ret = p_locale_xhtml('norev');
+ }
+ }else{
+ if(@file_exists($file)){
+ $ret = p_cached_output($file,'xhtml',$id);
+ }elseif($excuse){
+ $ret = p_locale_xhtml('newpage');
+ }
+ }
+
+ //restore ID (just in case)
+ $ID = $keep;
+
+ return $ret;
+}
+
+/**
+ * Returns starting summary for a page (e.g. the first few
+ * paragraphs), marked up in XHTML.
+ *
+ * If $excuse is true an explanation is returned if the file
+ * wasn't found
+ *
+ * @param string wiki page id
+ * @param reference populated with page title from heading or page id
+ * @deprecated
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ */
+function p_wiki_xhtml_summary($id, &$title, $rev='', $excuse=true){
+ $file = wikiFN($id,$rev);
+ $ret = '';
+
+ //ensure $id is in global $ID (needed for parsing)
+ global $ID;
+ $keep = $ID;
+ $ID = $id;
+
+ if($rev){
+ if(@file_exists($file)){
+ //no caching on old revisions
+ $ins = p_get_instructions(io_readWikiPage($file,$id,$rev));
+ }elseif($excuse){
+ $ret = p_locale_xhtml('norev');
+ //restore ID (just in case)
+ $ID = $keep;
+ return $ret;
+ }
+
+ }else{
+
+ if(@file_exists($file)){
+ // The XHTML for a summary is not cached so use the instruction cache
+ $ins = p_cached_instructions($file);
+ }elseif($excuse){
+ $ret = p_locale_xhtml('newpage');
+ //restore ID (just in case)
+ $ID = $keep;
+ return $ret;
+ }
+ }
+
+ $ret = p_render('xhtmlsummary',$ins,$info);
+
+ if ( $info['sum_pagetitle'] ) {
+ $title = $info['sum_pagetitle'];
+ } else {
+ $title = $id;
+ }
+
+ $ID = $keep;
+ return $ret;
+}
+
+/**
+ * Returns the specified local text in parsed format
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_locale_xhtml($id){
+ //fetch parsed locale
+ $html = p_cached_output(localeFN($id));
+ return $html;
+}
+
+/**
+ * *** DEPRECATED ***
+ *
+ * use p_cached_output()
+ *
+ * Returns the given file parsed to XHTML
+ *
+ * Uses and creates a cachefile
+ *
+ * @deprecated
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @todo rewrite to use mode instead of hardcoded XHTML
+ */
+function p_cached_xhtml($file){
+ return p_cached_output($file);
+}
+
+/**
+ * Returns the given file parsed into the requested output format
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ */
+function p_cached_output($file, $format='xhtml', $id='') {
+ global $conf;
+
+ $cache = new cache_renderer($id, $file, $format);
+ if ($cache->useCache()) {
+ $parsed = $cache->retrieveCache(false);
+ if($conf['allowdebug'] && $format=='xhtml') $parsed .= "\n<!-- cachefile {$cache->cache} used -->\n";
+ } else {
+ $parsed = p_render($format, p_cached_instructions($file,false,$id), $info);
+
+ if ($info['cache']) {
+ $cache->storeCache($parsed); //save cachefile
+ if($conf['allowdebug'] && $format=='xhtml') $parsed .= "\n<!-- no cachefile used, but created {$cache->cache} -->\n";
+ }else{
+ $cache->removeCache(); //try to delete cachefile
+ if($conf['allowdebug'] && $format=='xhtml') $parsed .= "\n<!-- no cachefile used, caching forbidden -->\n";
+ }
+ }
+
+ return $parsed;
+}
+
+/**
+ * Returns the render instructions for a file
+ *
+ * Uses and creates a serialized cache file
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_cached_instructions($file,$cacheonly=false,$id='') {
+ global $conf;
+ static $run = null;
+ if(is_null($run)) $run = array();
+
+ $cache = new cache_instructions($id, $file);
+
+ if ($cacheonly || $cache->useCache() || isset($run[$file])) {
+ return $cache->retrieveCache();
+ } else if (@file_exists($file)) {
+ // no cache - do some work
+ $ins = p_get_instructions(io_readWikiPage($file,$id));
+ if ($cache->storeCache($ins)) {
+ $run[$file] = true; // we won't rebuild these instructions in the same run again
+ } else {
+ msg('Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.',-1);
+ }
+ return $ins;
+ }
+
+ return null;
+}
+
+/**
+ * turns a page into a list of instructions
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_get_instructions($text){
+
+ $modes = p_get_parsermodes();
+
+ // Create the parser
+ $Parser = & new Doku_Parser();
+
+ // Add the Handler
+ $Parser->Handler = & new Doku_Handler();
+
+ //add modes to parser
+ foreach($modes as $mode){
+ $Parser->addMode($mode['mode'],$mode['obj']);
+ }
+
+ // Do the parsing
+ trigger_event('PARSER_WIKITEXT_PREPROCESS', $text);
+ $p = $Parser->parse($text);
+// dbg($p);
+ return $p;
+}
+
+/**
+ * returns the metadata of a page
+ *
+ * @author Esther Brunner <esther at kaffeehaus.ch>
+ */
+function p_get_metadata($id, $key=false, $render=false){
+ global $ID, $INFO, $cache_metadata;
+
+ // cache the current page
+ // Benchmarking shows the current page's metadata is generally the only page metadata
+ // accessed several times. This may catch a few other pages, but that shouldn't be an issue.
+ $cache = ($ID == $id);
+ $meta = p_read_metadata($id, $cache);
+
+ // metadata has never been rendered before - do it! (but not for non-existent pages)
+ if ($render && !$meta['current']['description']['abstract'] && page_exists($id)){
+ $meta = p_render_metadata($id, $meta);
+ io_saveFile(metaFN($id, '.meta'), serialize($meta));
+
+ // sync cached copies, including $INFO metadata
+ if (!empty($cache_metadata[$id])) $cache_metadata[$id] = $meta;
+ if (!empty($INFO) && ($id == $INFO['id'])) { $INFO['meta'] = $meta['current']; }
+ }
+
+ // filter by $key
+ if ($key){
+ list($key, $subkey) = explode(' ', $key, 2);
+ $subkey = trim($subkey);
+
+ if ($subkey) {
+ return isset($meta['current'][$key][$subkey]) ? $meta['current'][$key][$subkey] : null;
+ }
+
+ return isset($meta['current'][$key]) ? $meta['current'][$key] : null;
+ }
+
+ return $meta['current'];
+}
+
+/**
+ * sets metadata elements of a page
+ *
+ * @author Esther Brunner <esther at kaffeehaus.ch>
+ */
+function p_set_metadata($id, $data, $render=false, $persistent=true){
+ if (!is_array($data)) return false;
+
+ global $ID;
+
+ // cache the current page
+ $cache = ($ID == $id);
+ $orig = p_read_metadata($id, $cache);
+
+ // render metadata first?
+ $meta = $render ? p_render_metadata($id, $orig) : $orig;
+
+ // now add the passed metadata
+ $protected = array('description', 'date', 'contributor');
+ foreach ($data as $key => $value){
+
+ // be careful with sub-arrays of $meta['relation']
+ if ($key == 'relation'){
+
+ foreach ($value as $subkey => $subvalue){
+ $meta['current'][$key][$subkey] = !empty($meta['current'][$key][$subkey]) ? array_merge($meta['current'][$key][$subkey], $subvalue) : $subvalue;
+ if ($persistent)
+ $meta['persistent'][$key][$subkey] = !empty($meta['persistent'][$key][$subkey]) ? array_merge($meta['persistent'][$key][$subkey], $subvalue) : $subvalue;
+ }
+
+ // be careful with some senisitive arrays of $meta
+ } elseif (in_array($key, $protected)){
+
+ // these keys, must have subkeys - a legitimate value must be an array
+ if (is_array($value)) {
+ $meta['current'][$key] = !empty($meta['current'][$key]) ? array_merge($meta['current'][$key],$value) : $value;
+
+ if ($persistent) {
+ $meta['persistent'][$key] = !empty($meta['persistent'][$key]) ? array_merge($meta['persistent'][$key],$value) : $value;
+ }
+ }
+
+ // no special treatment for the rest
+ } else {
+ $meta['current'][$key] = $value;
+ if ($persistent) $meta['persistent'][$key] = $value;
+ }
+ }
+
+ // save only if metadata changed
+ if ($meta == $orig) return true;
+
+ // sync cached copies, including $INFO metadata
+ global $cache_metadata, $INFO;
+
+ if (!empty($cache_metadata[$id])) $cache_metadata[$id] = $meta;
+ if (!empty($INFO) && ($id == $INFO['id'])) { $INFO['meta'] = $meta['current']; }
+
+ return io_saveFile(metaFN($id, '.meta'), serialize($meta));
+}
+
+/**
+ * Purges the non-persistant part of the meta data
+ * used on page deletion
+ *
+ * @author Michael Klier <chi at chimeric.de>
+ */
+function p_purge_metadata($id) {
+ $metafn = metaFN('id', '.meta');
+ $meta = p_read_metadata($id);
+ foreach($meta['current'] as $key => $value) {
+ if(is_array($meta[$key])) {
+ $meta['current'][$key] = array();
+ } else {
+ $meta['current'][$key] = '';
+ }
+ }
+ return io_saveFile(metaFN($id, '.meta'), serialize($meta));
+}
+
+/**
+ * read the metadata from source/cache for $id
+ * (internal use only - called by p_get_metadata & p_set_metadata)
+ *
+ * this function also converts the metadata from the original format to
+ * the current format ('current' & 'persistent' arrays)
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ *
+ * @param string $id absolute wiki page id
+ * @param bool $cache whether or not to cache metadata in memory
+ * (only use for metadata likely to be accessed several times)
+ *
+ * @return array metadata
+ */
+function p_read_metadata($id,$cache=false) {
+ global $cache_metadata;
+
+ if (isset($cache_metadata[$id])) return $cache_metadata[$id];
+
+ $file = metaFN($id, '.meta');
+ $meta = @file_exists($file) ? unserialize(io_readFile($file, false)) : array('current'=>array(),'persistent'=>array());
+
+ // convert $meta from old format to new (current+persistent) format
+ if (!isset($meta['current'])) {
+ $meta = array('current'=>$meta,'persistent'=>$meta);
+
+ // remove non-persistent keys
+ unset($meta['persistent']['title']);
+ unset($meta['persistent']['description']['abstract']);
+ unset($meta['persistent']['description']['tableofcontents']);
+ unset($meta['persistent']['relation']['haspart']);
+ unset($meta['persistent']['relation']['references']);
+ unset($meta['persistent']['date']['valid']);
+
+ if (empty($meta['persistent']['description'])) unset($meta['persistent']['description']);
+ if (empty($meta['persistent']['relation'])) unset($meta['persistent']['relation']);
+ if (empty($meta['persistent']['date'])) unset($meta['persistent']['date']);
+
+ // save converted metadata
+ io_saveFile($file, serialize($meta));
+ }
+
+ if ($cache) {
+ $cache_metadata[$id] = $meta;
+ }
+
+ return $meta;
+}
+
+/**
+ * renders the metadata of a page
+ *
+ * @author Esther Brunner <esther at kaffeehaus.ch>
+ */
+function p_render_metadata($id, $orig){
+ // make sure the correct ID is in global ID
+ global $ID;
+ $keep = $ID;
+ $ID = $id;
+
+
+ // add an extra key for the event - to tell event handlers the page whose metadata this is
+ $orig['page'] = $id;
+ $evt = new Doku_Event('PARSER_METADATA_RENDER', $orig);
+ if ($evt->advise_before()) {
+
+ require_once DOKU_INC."inc/parser/metadata.php";
+
+ // get instructions
+ $instructions = p_cached_instructions(wikiFN($id),false,$id);
+ if(is_null($instructions)){
+ $ID = $keep;
+ return null; // something went wrong with the instructions
+ }
+
+ // set up the renderer
+ $renderer = & new Doku_Renderer_metadata();
+ $renderer->meta = $orig['current'];
+ $renderer->persistent = $orig['persistent'];
+
+ // loop through the instructions
+ foreach ($instructions as $instruction){
+ // execute the callback against the renderer
+ call_user_func_array(array(&$renderer, $instruction[0]), $instruction[1]);
+ }
+
+ $evt->result = array('current'=>$renderer->meta,'persistent'=>$renderer->persistent);
+ }
+ $evt->advise_after();
+
+ $ID = $keep;
+ return $evt->result;
+}
+
+/**
+ * returns all available parser syntax modes in correct order
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_get_parsermodes(){
+ global $conf;
+
+ //reuse old data
+ static $modes = null;
+ if($modes != null){
+ return $modes;
+ }
+
+ //import parser classes and mode definitions
+ require_once DOKU_INC . 'inc/parser/parser.php';
+
+ // we now collect all syntax modes and their objects, then they will
+ // be sorted and added to the parser in correct order
+ $modes = array();
+
+ // add syntax plugins
+ $pluginlist = plugin_list('syntax');
+ if(count($pluginlist)){
+ global $PARSER_MODES;
+ $obj = null;
+ foreach($pluginlist as $p){
+ if(!$obj =& plugin_load('syntax',$p)) continue; //attempt to load plugin into $obj
+ $PARSER_MODES[$obj->getType()][] = "plugin_$p"; //register mode type
+ //add to modes
+ $modes[] = array(
+ 'sort' => $obj->getSort(),
+ 'mode' => "plugin_$p",
+ 'obj' => $obj,
+ );
+ unset($obj); //remove the reference
+ }
+ }
+
+ // add default modes
+ $std_modes = array('listblock','preformatted','notoc','nocache',
+ 'header','table','linebreak','footnote','hr',
+ 'unformatted','php','html','code','file','quote',
+ 'internallink','rss','media','externallink',
+ 'emaillink','windowssharelink','eol');
+ if($conf['typography']){
+ $std_modes[] = 'quotes';
+ $std_modes[] = 'multiplyentity';
+ }
+ foreach($std_modes as $m){
+ $class = "Doku_Parser_Mode_$m";
+ $obj = new $class();
+ $modes[] = array(
+ 'sort' => $obj->getSort(),
+ 'mode' => $m,
+ 'obj' => $obj
+ );
+ }
+
+ // add formatting modes
+ $fmt_modes = array('strong','emphasis','underline','monospace',
+ 'subscript','superscript','deleted');
+ foreach($fmt_modes as $m){
+ $obj = new Doku_Parser_Mode_formatting($m);
+ $modes[] = array(
+ 'sort' => $obj->getSort(),
+ 'mode' => $m,
+ 'obj' => $obj
+ );
+ }
+
+ // add modes which need files
+ $obj = new Doku_Parser_Mode_smiley(array_keys(getSmileys()));
+ $modes[] = array('sort' => $obj->getSort(), 'mode' => 'smiley','obj' => $obj );
+ $obj = new Doku_Parser_Mode_acronym(array_keys(getAcronyms()));
+ $modes[] = array('sort' => $obj->getSort(), 'mode' => 'acronym','obj' => $obj );
+ $obj = new Doku_Parser_Mode_entity(array_keys(getEntities()));
+ $modes[] = array('sort' => $obj->getSort(), 'mode' => 'entity','obj' => $obj );
+
+
+ // add optional camelcase mode
+ if($conf['camelcase']){
+ $obj = new Doku_Parser_Mode_camelcaselink();
+ $modes[] = array('sort' => $obj->getSort(), 'mode' => 'camelcaselink','obj' => $obj );
+ }
+
+ //sort modes
+ usort($modes,'p_sort_modes');
+
+ return $modes;
+}
+
+/**
+ * Callback function for usort
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_sort_modes($a, $b){
+ if($a['sort'] == $b['sort']) return 0;
+ return ($a['sort'] < $b['sort']) ? -1 : 1;
+}
+
+/**
+ * Renders a list of instruction to the specified output mode
+ *
+ * In the $info array are informations from the renderer returned
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_render($mode,$instructions,&$info){
+ if(is_null($instructions)) return '';
+
+ $Renderer =& p_get_renderer($mode);
+ if (is_null($Renderer)) return null;
+
+ $Renderer->reset();
+
+ $Renderer->smileys = getSmileys();
+ $Renderer->entities = getEntities();
+ $Renderer->acronyms = getAcronyms();
+ $Renderer->interwiki = getInterwiki();
+ #$Renderer->badwords = getBadWords();
+
+ // Loop through the instructions
+ foreach ( $instructions as $instruction ) {
+ // Execute the callback against the Renderer
+ call_user_func_array(array(&$Renderer, $instruction[0]),$instruction[1]);
+ }
+
+ //set info array
+ $info = $Renderer->info;
+
+ // Post process and return the output
+ $data = array($mode,& $Renderer->doc);
+ trigger_event('RENDERER_CONTENT_POSTPROCESS',$data);
+ return $Renderer->doc;
+}
+
+function & p_get_renderer($mode) {
+ global $conf;
+
+ $rname = !empty($conf['renderer_'.$mode]) ? $conf['renderer_'.$mode] : $mode;
+
+ // try default renderer first:
+ $file = DOKU_INC."inc/parser/$rname.php";
+ if(@file_exists($file)){
+ require_once $file;
+ $rclass = "Doku_Renderer_$rname";
+
+ if ( !class_exists($rclass) ) {
+ trigger_error("Unable to resolve render class $rclass",E_USER_WARNING);
+ msg("Renderer '$rname' for $mode not valid",-1);
+ return null;
+ }
+ $Renderer = & new $rclass();
+ }else{
+ // Maybe a plugin is available?
+ $Renderer =& plugin_load('renderer',$rname);
+ if(is_null($Renderer)){
+ msg("No renderer '$rname' found for mode '$mode'",-1);
+ return null;
+ }
+ }
+
+ return $Renderer;
+}
+
+/**
+ * Gets the first heading from a file
+ *
+ * @param string $id dokuwiki page id
+ * @param bool $render rerender if first heading not known
+ * default: true -- must be set to false for calls from the metadata renderer to
+ * protects against loops and excessive resource usage when pages
+ * for which only a first heading is required will attempt to
+ * render metadata for all the pages for which they require first
+ * headings ... and so on.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_get_first_heading($id, $render=true){
+ global $conf;
+ return $conf['useheading'] ? p_get_metadata($id,'title',$render) : null;
+}
+
+/**
+ * Wrapper for GeSHi Code Highlighter, provides caching of its output
+ *
+ * @param string $code source code to be highlighted
+ * @param string $language language to provide highlighting
+ * @param string $wrapper html element to wrap the returned highlighted text
+ *
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function p_xhtml_cached_geshi($code, $language, $wrapper='pre') {
+ global $conf;
+ $language = strtolower($language);
+
+ // remove any leading or trailing blank lines
+ $code = preg_replace('/^\s*?\n|\s*?\n$/','',$code);
+
+ $cache = getCacheName($language.$code,".code");
+ $ctime = @filemtime($cache);
+ if($ctime && !$_REQUEST['purge'] &&
+ $ctime > filemtime(DOKU_INC.'inc/geshi.php') &&
+ $ctime > @filemtime(DOKU_INC.'inc/geshi/'.$language.'.php') &&
+ $ctime > filemtime(DOKU_CONF.'dokuwiki.php')){
+ $highlighted_code = io_readFile($cache, false);
+
+ } else {
+
+ require_once(DOKU_INC . 'inc/geshi.php');
+
+ $geshi = new GeSHi($code, $language, DOKU_INC . 'inc/geshi');
+ $geshi->set_encoding('utf-8');
+ $geshi->enable_classes();
+ $geshi->set_header_type(GESHI_HEADER_PRE);
+ $geshi->set_link_target($conf['target']['extern']);
+
+ // remove GeSHi's wrapper element (we'll replace it with our own later)
+ // we need to use a GeSHi wrapper to avoid <BR> throughout the highlighted text
+ $highlighted_code = preg_replace('!^<pre[^>]*>|</pre>$!','',$geshi->parse_code());
+ io_saveFile($cache,$highlighted_code);
+ }
+
+ // add a wrapper element if required
+ if ($wrapper) {
+ return "<$wrapper class=\"code $language\">$highlighted_code</$wrapper>";
+ } else {
+ return $highlighted_code;
+ }
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/plugin.php
===================================================================
--- site/trunk/www-root/wiki/inc/plugin.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/plugin.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,224 +1,224 @@
-<?php
-/**
- * DokuWiki Plugin base class
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-
-/**
- * Do not inherit directly from this class, instead inherit from the specialized
- * ones in lib/plugin
- */
-class DokuWiki_Plugin {
-
- var $localised = false; // set to true by setupLocale() after loading language dependent strings
- var $lang = array(); // array to hold language dependent strings, best accessed via ->getLang()
- var $configloaded = false; // set to true by loadConfig() after loading plugin configuration variables
- var $conf = array(); // array to hold plugin settings, best accessed via ->getConf()
-
- /**
- * General Info
- *
- * Needs to return a associative array with the following values:
- *
- * author - Author of the plugin
- * email - Email address to contact the author
- * date - Last modified date of the plugin in YYYY-MM-DD format
- * name - Name of the plugin
- * desc - Short description of the plugin (Text only)
- * url - Website with more information on the plugin (eg. syntax description)
- */
- function getInfo(){
- trigger_error('getInfo() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
- // plugin introspection methods
- // extract from class name, format = <plugin type>_plugin_<name>[_<component name>]
- function getPluginType() { list($t) = explode('_', get_class($this), 2); return $t; }
- function getPluginName() { list($t, $p, $n) = explode('_', get_class($this), 4); return $n; }
- function getPluginComponent() { list($t, $p, $n, $c) = explode('_', get_class($this), 4); return (isset($c)?$c:''); }
-
- // localisation methods
- /**
- * getLang($id)
- * use this function to access plugin language strings
- * to try to minimise unnecessary loading of the strings when the plugin doesn't require them
- * e.g. when info plugin is querying plugins for information about themselves.
- *
- * @param $id id of the string to be retrieved
- * @return string string in appropriate language or english if not available
- */
- function getLang($id) {
- if (!$this->localised) $this->setupLocale();
-
- return (isset($this->lang[$id]) ? $this->lang[$id] : '');
- }
-
- /**
- * locale_xhtml($id)
- *
- * retrieve a language dependent file and pass to xhtml renderer for display
- * plugin equivalent of p_locale_xhtml()
- *
- * @param $id id of language dependent wiki page
- * @return string parsed contents of the wiki page in xhtml format
- */
- function locale_xhtml($id) {
- return p_cached_output($this->localFN($id));
- }
-
- /**
- * localFN($id)
- * prepends appropriate path for a language dependent filename
- * plugin equivalent of localFN()
- */
- function localFN($id) {
- global $conf;
- $plugin = $this->getPluginName();
- $file = DOKU_PLUGIN.$plugin.'/lang/'.$conf['lang'].'/'.$id.'.txt';
- if(!@file_exists($file)){
- //fall back to english
- $file = DOKU_PLUGIN.$plugin.'/lang/en/'.$id.'.txt';
- }
- return $file;
- }
-
- /**
- * setupLocale()
- * reads all the plugins language dependent strings into $this->lang
- * this function is automatically called by getLang()
- */
- function setupLocale() {
- if ($this->localised) return;
-
- global $conf; // definitely don't invoke "global $lang"
- $path = DOKU_PLUGIN.$this->getPluginName().'/lang/';
-
- $lang = array();
-
- // don't include once, in case several plugin components require the same language file
- @include($path.'en/lang.php');
- if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
-
- $this->lang = $lang;
- $this->localised = true;
- }
-
- // configuration methods
- /**
- * getConf($setting)
- *
- * use this function to access plugin configuration variables
- */
- function getConf($setting){
-
- if (!$this->configloaded){ $this->loadConfig(); }
-
- return $this->conf[$setting];
- }
-
- /**
- * loadConfig()
- * merges the plugin's default settings with any local settings
- * this function is automatically called through getConf()
- */
- function loadConfig(){
- global $conf;
-
- $defaults = $this->readDefaultSettings();
- $plugin = $this->getPluginName();
-
- foreach ($defaults as $key => $value) {
- if (isset($conf['plugin'][$plugin][$key])) continue;
- $conf['plugin'][$plugin][$key] = $value;
- }
-
- $this->configloaded = true;
- $this->conf =& $conf['plugin'][$plugin];
- }
-
- /**
- * read the plugin's default configuration settings from conf/default.php
- * this function is automatically called through getConf()
- *
- * @return array setting => value
- */
- function readDefaultSettings() {
-
- $path = DOKU_PLUGIN.$this->getPluginName().'/conf/';
- $conf = array();
-
- if (@file_exists($path.'default.php')) {
- include($path.'default.php');
- }
-
- return $conf;
- }
-
- /**
- * Loads a given helper plugin (if enabled)
- *
- * @author Esther Brunner <wikidesign at gmail.com>
- *
- * @param $name name of plugin to load
- * @param $msg message to display in case the plugin is not available
- *
- * @return object helper plugin object
- */
- function loadHelper($name, $msg){
- if (!plugin_isdisabled($name)) $obj =& plugin_load('helper',$name);
- else $obj = NULL;
- if (is_null($obj) && $msg) msg("Helper plugin $name is not available or invalid.",-1);
- return $obj;
- }
-
- // standard functions for outputing email addresses and links
- // use these to avoid having to duplicate code to produce links in line with the installation configuration
-
- /**
- * email
- * standardised function to generate an email link according to obfuscation settings
- */
- function email($email, $name='', $class='', $more='') {
- if (!$email) return $name;
- $email = obfuscate($email);
- if (!$name) $name = $email;
- $class = "class='".($class ? $class : 'mail')."'";
- return "<a href='mailto:$email' $class title='$email' $more>$name</a>";
- }
-
- /**
- * external_link
- * standardised function to generate an external link according to conf settings
- */
- function external_link($link, $title='', $class='', $target='', $more='') {
- global $conf;
-
- $link = htmlentities($link);
- if (!$title) $title = $link;
- if (!$target) $target = $conf['target']['extern'];
- if ($conf['relnofollow']) $more .= ' rel="nofollow"';
-
- if ($class) $class = " class='$class'";
- if ($target) $target = " target='$target'";
- if ($more) $more = " ".trim($more);
-
- return "<a href='$link'$class$target$more>$title</a>";
- }
-
- /**
- * output text string through the parser, allows dokuwiki markup to be used
- * very ineffecient for small pieces of data - try not to use
- */
- function render($text, $format='xhtml') {
- return p_render($format, p_get_instructions($text),$info);
- }
-
- // deprecated functions
- function plugin_localFN($id) { return $this->localFN($id); }
- function plugin_locale_xhtml($id) { return $this->locale_xhtml($id); }
- function plugin_email($e, $n='', $c='', $m='') { return $this->email($e, $n, $c, $m); }
- function plugin_link($l, $t='', $c='', $to='', $m='') { return $this->external_link($l, $t, $c, $to, $m); }
- function plugin_render($t, $f='xhtml') { return $this->render($t, $f); }
-}
+<?php
+/**
+ * DokuWiki Plugin base class
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+
+/**
+ * Do not inherit directly from this class, instead inherit from the specialized
+ * ones in lib/plugin
+ */
+class DokuWiki_Plugin {
+
+ var $localised = false; // set to true by setupLocale() after loading language dependent strings
+ var $lang = array(); // array to hold language dependent strings, best accessed via ->getLang()
+ var $configloaded = false; // set to true by loadConfig() after loading plugin configuration variables
+ var $conf = array(); // array to hold plugin settings, best accessed via ->getConf()
+
+ /**
+ * General Info
+ *
+ * Needs to return a associative array with the following values:
+ *
+ * author - Author of the plugin
+ * email - Email address to contact the author
+ * date - Last modified date of the plugin in YYYY-MM-DD format
+ * name - Name of the plugin
+ * desc - Short description of the plugin (Text only)
+ * url - Website with more information on the plugin (eg. syntax description)
+ */
+ function getInfo(){
+ trigger_error('getInfo() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+ // plugin introspection methods
+ // extract from class name, format = <plugin type>_plugin_<name>[_<component name>]
+ function getPluginType() { list($t) = explode('_', get_class($this), 2); return $t; }
+ function getPluginName() { list($t, $p, $n) = explode('_', get_class($this), 4); return $n; }
+ function getPluginComponent() { list($t, $p, $n, $c) = explode('_', get_class($this), 4); return (isset($c)?$c:''); }
+
+ // localisation methods
+ /**
+ * getLang($id)
+ * use this function to access plugin language strings
+ * to try to minimise unnecessary loading of the strings when the plugin doesn't require them
+ * e.g. when info plugin is querying plugins for information about themselves.
+ *
+ * @param $id id of the string to be retrieved
+ * @return string string in appropriate language or english if not available
+ */
+ function getLang($id) {
+ if (!$this->localised) $this->setupLocale();
+
+ return (isset($this->lang[$id]) ? $this->lang[$id] : '');
+ }
+
+ /**
+ * locale_xhtml($id)
+ *
+ * retrieve a language dependent file and pass to xhtml renderer for display
+ * plugin equivalent of p_locale_xhtml()
+ *
+ * @param $id id of language dependent wiki page
+ * @return string parsed contents of the wiki page in xhtml format
+ */
+ function locale_xhtml($id) {
+ return p_cached_output($this->localFN($id));
+ }
+
+ /**
+ * localFN($id)
+ * prepends appropriate path for a language dependent filename
+ * plugin equivalent of localFN()
+ */
+ function localFN($id) {
+ global $conf;
+ $plugin = $this->getPluginName();
+ $file = DOKU_PLUGIN.$plugin.'/lang/'.$conf['lang'].'/'.$id.'.txt';
+ if(!@file_exists($file)){
+ //fall back to english
+ $file = DOKU_PLUGIN.$plugin.'/lang/en/'.$id.'.txt';
+ }
+ return $file;
+ }
+
+ /**
+ * setupLocale()
+ * reads all the plugins language dependent strings into $this->lang
+ * this function is automatically called by getLang()
+ */
+ function setupLocale() {
+ if ($this->localised) return;
+
+ global $conf; // definitely don't invoke "global $lang"
+ $path = DOKU_PLUGIN.$this->getPluginName().'/lang/';
+
+ $lang = array();
+
+ // don't include once, in case several plugin components require the same language file
+ @include($path.'en/lang.php');
+ if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
+
+ $this->lang = $lang;
+ $this->localised = true;
+ }
+
+ // configuration methods
+ /**
+ * getConf($setting)
+ *
+ * use this function to access plugin configuration variables
+ */
+ function getConf($setting){
+
+ if (!$this->configloaded){ $this->loadConfig(); }
+
+ return $this->conf[$setting];
+ }
+
+ /**
+ * loadConfig()
+ * merges the plugin's default settings with any local settings
+ * this function is automatically called through getConf()
+ */
+ function loadConfig(){
+ global $conf;
+
+ $defaults = $this->readDefaultSettings();
+ $plugin = $this->getPluginName();
+
+ foreach ($defaults as $key => $value) {
+ if (isset($conf['plugin'][$plugin][$key])) continue;
+ $conf['plugin'][$plugin][$key] = $value;
+ }
+
+ $this->configloaded = true;
+ $this->conf =& $conf['plugin'][$plugin];
+ }
+
+ /**
+ * read the plugin's default configuration settings from conf/default.php
+ * this function is automatically called through getConf()
+ *
+ * @return array setting => value
+ */
+ function readDefaultSettings() {
+
+ $path = DOKU_PLUGIN.$this->getPluginName().'/conf/';
+ $conf = array();
+
+ if (@file_exists($path.'default.php')) {
+ include($path.'default.php');
+ }
+
+ return $conf;
+ }
+
+ /**
+ * Loads a given helper plugin (if enabled)
+ *
+ * @author Esther Brunner <wikidesign at gmail.com>
+ *
+ * @param $name name of plugin to load
+ * @param $msg message to display in case the plugin is not available
+ *
+ * @return object helper plugin object
+ */
+ function loadHelper($name, $msg){
+ if (!plugin_isdisabled($name)) $obj =& plugin_load('helper',$name);
+ else $obj = NULL;
+ if (is_null($obj) && $msg) msg("Helper plugin $name is not available or invalid.",-1);
+ return $obj;
+ }
+
+ // standard functions for outputing email addresses and links
+ // use these to avoid having to duplicate code to produce links in line with the installation configuration
+
+ /**
+ * email
+ * standardised function to generate an email link according to obfuscation settings
+ */
+ function email($email, $name='', $class='', $more='') {
+ if (!$email) return $name;
+ $email = obfuscate($email);
+ if (!$name) $name = $email;
+ $class = "class='".($class ? $class : 'mail')."'";
+ return "<a href='mailto:$email' $class title='$email' $more>$name</a>";
+ }
+
+ /**
+ * external_link
+ * standardised function to generate an external link according to conf settings
+ */
+ function external_link($link, $title='', $class='', $target='', $more='') {
+ global $conf;
+
+ $link = htmlentities($link);
+ if (!$title) $title = $link;
+ if (!$target) $target = $conf['target']['extern'];
+ if ($conf['relnofollow']) $more .= ' rel="nofollow"';
+
+ if ($class) $class = " class='$class'";
+ if ($target) $target = " target='$target'";
+ if ($more) $more = " ".trim($more);
+
+ return "<a href='$link'$class$target$more>$title</a>";
+ }
+
+ /**
+ * output text string through the parser, allows dokuwiki markup to be used
+ * very ineffecient for small pieces of data - try not to use
+ */
+ function render($text, $format='xhtml') {
+ return p_render($format, p_get_instructions($text),$info);
+ }
+
+ // deprecated functions
+ function plugin_localFN($id) { return $this->localFN($id); }
+ function plugin_locale_xhtml($id) { return $this->locale_xhtml($id); }
+ function plugin_email($e, $n='', $c='', $m='') { return $this->email($e, $n, $c, $m); }
+ function plugin_link($l, $t='', $c='', $to='', $m='') { return $this->external_link($l, $t, $c, $to, $m); }
+ function plugin_render($t, $f='xhtml') { return $this->render($t, $f); }
+}
Modified: site/trunk/www-root/wiki/inc/pluginutils.php
===================================================================
--- site/trunk/www-root/wiki/inc/pluginutils.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/pluginutils.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,95 +1,95 @@
-<?php
-/**
- * Utilities for handling plugins
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-// plugin related constants
-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-$plugin_types = array('admin','syntax','action','renderer', 'helper');
-
-/**
- * Returns a list of available plugins of given type
- *
- * @param $type string, plugin_type name;
- * the type of plugin to return,
- * use empty string for all types
- * @param $all bool;
- * false to only return enabled plugins,
- * true to return both enabled and disabled plugins
- *
- * @return array of plugin names
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function plugin_list($type='',$all=false){
- $plugins = array();
- if ($dh = opendir(DOKU_PLUGIN)) {
- while (false !== ($plugin = readdir($dh))) {
- if ($plugin == '.' || $plugin == '..' || $plugin == 'tmp') continue;
- if (is_file(DOKU_PLUGIN.$plugin)) continue;
-
- // if required, skip disabled plugins
- if (!$all && plugin_isdisabled($plugin)) continue;
-
- if ($type=='' || @file_exists(DOKU_PLUGIN."$plugin/$type.php")){
- $plugins[] = $plugin;
- } else {
- if ($dp = @opendir(DOKU_PLUGIN."$plugin/$type/")) {
- while (false !== ($component = readdir($dp))) {
- if (substr($component,0,1) == '.' || strtolower(substr($component, -4)) != ".php") continue;
- if (is_file(DOKU_PLUGIN."$plugin/$type/$component")) {
- $plugins[] = $plugin.'_'.substr($component, 0, -4);
- }
- }
- closedir($dp);
- }
- }
- }
- closedir($dh);
- }
- return $plugins;
-}
-
-/**
- * Loads the given plugin and creates an object of it
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- *
- * @param $type string type of plugin to load
- * @param $name string name of the plugin to load
- * @return objectreference the plugin object or null on failure
- */
-function &plugin_load($type,$name){
- //we keep all loaded plugins available in global scope for reuse
- global $DOKU_PLUGINS;
-
-
- //plugin already loaded?
- if(!empty($DOKU_PLUGINS[$type][$name])){
- return $DOKU_PLUGINS[$type][$name];
- }
-
- //try to load the wanted plugin file
- if (@file_exists(DOKU_PLUGIN."$name/$type.php")){
- include_once(DOKU_PLUGIN."$name/$type.php");
- }else{
- list($plugin, $component) = preg_split("/_/",$name, 2);
- if (!$component || !include_once(DOKU_PLUGIN."$plugin/$type/$component.php")) {
- return null;
- }
- }
-
- //construct class and instantiate
- $class = $type.'_plugin_'.$name;
- if (!class_exists($class)) return null;
-
- $DOKU_PLUGINS[$type][$name] = new $class;
- return $DOKU_PLUGINS[$type][$name];
-}
-
-function plugin_isdisabled($name) { return @file_exists(DOKU_PLUGIN.$name.'/disabled'); }
-function plugin_enable($name) { return @unlink(DOKU_PLUGIN.$name.'/disabled'); }
-function plugin_disable($name) { return @touch(DOKU_PLUGIN.$name.'/disabled'); }
+<?php
+/**
+ * Utilities for handling plugins
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+// plugin related constants
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+$plugin_types = array('admin','syntax','action','renderer', 'helper');
+
+/**
+ * Returns a list of available plugins of given type
+ *
+ * @param $type string, plugin_type name;
+ * the type of plugin to return,
+ * use empty string for all types
+ * @param $all bool;
+ * false to only return enabled plugins,
+ * true to return both enabled and disabled plugins
+ *
+ * @return array of plugin names
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function plugin_list($type='',$all=false){
+ $plugins = array();
+ if ($dh = opendir(DOKU_PLUGIN)) {
+ while (false !== ($plugin = readdir($dh))) {
+ if ($plugin == '.' || $plugin == '..' || $plugin == 'tmp') continue;
+ if (is_file(DOKU_PLUGIN.$plugin)) continue;
+
+ // if required, skip disabled plugins
+ if (!$all && plugin_isdisabled($plugin)) continue;
+
+ if ($type=='' || @file_exists(DOKU_PLUGIN."$plugin/$type.php")){
+ $plugins[] = $plugin;
+ } else {
+ if ($dp = @opendir(DOKU_PLUGIN."$plugin/$type/")) {
+ while (false !== ($component = readdir($dp))) {
+ if (substr($component,0,1) == '.' || strtolower(substr($component, -4)) != ".php") continue;
+ if (is_file(DOKU_PLUGIN."$plugin/$type/$component")) {
+ $plugins[] = $plugin.'_'.substr($component, 0, -4);
+ }
+ }
+ closedir($dp);
+ }
+ }
+ }
+ closedir($dh);
+ }
+ return $plugins;
+}
+
+/**
+ * Loads the given plugin and creates an object of it
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ *
+ * @param $type string type of plugin to load
+ * @param $name string name of the plugin to load
+ * @return objectreference the plugin object or null on failure
+ */
+function &plugin_load($type,$name){
+ //we keep all loaded plugins available in global scope for reuse
+ global $DOKU_PLUGINS;
+
+
+ //plugin already loaded?
+ if(!empty($DOKU_PLUGINS[$type][$name])){
+ return $DOKU_PLUGINS[$type][$name];
+ }
+
+ //try to load the wanted plugin file
+ if (@file_exists(DOKU_PLUGIN."$name/$type.php")){
+ include_once(DOKU_PLUGIN."$name/$type.php");
+ }else{
+ list($plugin, $component) = preg_split("/_/",$name, 2);
+ if (!$component || !include_once(DOKU_PLUGIN."$plugin/$type/$component.php")) {
+ return null;
+ }
+ }
+
+ //construct class and instantiate
+ $class = $type.'_plugin_'.$name;
+ if (!class_exists($class)) return null;
+
+ $DOKU_PLUGINS[$type][$name] = new $class;
+ return $DOKU_PLUGINS[$type][$name];
+}
+
+function plugin_isdisabled($name) { return @file_exists(DOKU_PLUGIN.$name.'/disabled'); }
+function plugin_enable($name) { return @unlink(DOKU_PLUGIN.$name.'/disabled'); }
+function plugin_disable($name) { return @touch(DOKU_PLUGIN.$name.'/disabled'); }
Modified: site/trunk/www-root/wiki/inc/search.php
===================================================================
--- site/trunk/www-root/wiki/inc/search.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/search.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,523 +1,523 @@
-<?php
-/**
- * DokuWiki search functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_INC.'inc/common.php');
-
-/**
- * recurse direcory
- *
- * This function recurses into a given base directory
- * and calls the supplied function for each file and directory
- *
- * @param array ref $data The results of the search are stored here
- * @param string $base Where to start the search
- * @param callback $func Callback (function name or arayy with object,method)
- * @param string $dir Current directory beyond $base
- * @param int $lvl Recursion Level
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search(&$data,$base,$func,$opts,$dir='',$lvl=1){
- $dirs = array();
- $files = array();
-
- //read in directories and files
- $dh = @opendir($base.'/'.$dir);
- if(!$dh) return;
- while(($file = readdir($dh)) !== false){
- if(preg_match('/^[\._]/',$file)) continue; //skip hidden files and upper dirs
- if(is_dir($base.'/'.$dir.'/'.$file)){
- $dirs[] = $dir.'/'.$file;
- continue;
- }
- $files[] = $dir.'/'.$file;
- }
- closedir($dh);
- sort($files);
- sort($dirs);
-
- //give directories to userfunction then recurse
- foreach($dirs as $dir){
- if (search_callback($func,$data,$base,$dir,'d',$lvl,$opts)){
- search($data,$base,$func,$opts,$dir,$lvl+1);
- }
- }
- //now handle the files
- foreach($files as $file){
- search_callback($func,$data,$base,$file,'f',$lvl,$opts);
- }
-}
-
-/**
- * Used to run a user callback
- *
- * Makes sure the $data array is passed by reference (unlike when using
- * call_user_func())
- *
- * @todo If this can be generalized it may be useful elsewhere in the code
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_callback($func,&$data,$base,$file,$type,$lvl,$opts){
- if(is_array($func)){
- if(is_object($func[0])){
- // instanciated object
- return $func[0]->$func[1]($data,$base,$file,$type,$lvl,$opts);
- }else{
- // static call
- $f = $func[0].'::'.$func[1];
- return $f($data,$base,$file,$type,$lvl,$opts);
- }
- }
- // simple function call
- return $func($data,$base,$file,$type,$lvl,$opts);
-}
-
-/**
- * The following functions are userfunctions to use with the search
- * function above. This function is called for every found file or
- * directory. When a directory is given to the function it has to
- * decide if this directory should be traversed (true) or not (false)
- * The function has to accept the following parameters:
- *
- * &$data - Reference to the result data structure
- * $base - Base usually $conf['datadir']
- * $file - current file or directory relative to $base
- * $type - Type either 'd' for directory or 'f' for file
- * $lvl - Current recursion depht
- * $opts - option array as given to search()
- *
- * return values for files are ignored
- *
- * All functions should check the ACL for document READ rights
- * namespaces (directories) are NOT checked as this would break
- * the recursion (You can have an nonreadable dir over a readable
- * one deeper nested) also make sure to check the file type (for example
- * in case of lockfiles).
- */
-
-/**
- * Searches for pages beginning with the given query
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_qsearch(&$data,$base,$file,$type,$lvl,$opts){
- $item = array();
-
- if($type == 'd'){
- return false; //no handling yet
- }
-
- //only search txt files
- if(substr($file,-4) != '.txt') return false;
-
- //get id
- $id = pathID($file);
-
- //check if it matches the query
- if(!preg_match('/^'.preg_quote($opts['query'],'/').'/u',$id)){
- return false;
- }
-
- //check ACL
- if(auth_quickaclcheck($id) < AUTH_READ){
- return false;
- }
-
- $data[]=array( 'id' => $id,
- 'type' => $type,
- 'level' => 1,
- 'open' => true);
- return true;
-}
-
-/**
- * Build the browsable index of pages
- *
- * $opts['ns'] is the current namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_index(&$data,$base,$file,$type,$lvl,$opts){
- global $conf;
- $return = true;
-
- $item = array();
-
- if($type == 'd' && !preg_match('#^'.$file.'(/|$)#','/'.$opts['ns'])){
- //add but don't recurse
- $return = false;
- }elseif($type == 'f' && ($opts['nofiles'] || substr($file,-4) != '.txt')){
- //don't add
- return false;
- }
-
- $id = pathID($file);
-
- if($type=='d' && $conf['sneaky_index'] && auth_quickaclcheck($id.':') < AUTH_READ){
- return false;
- }
-
- //check hidden
- if(isHiddenPage($id)){
- return false;
- }
-
- //check ACL
- if($type=='f' && auth_quickaclcheck($id) < AUTH_READ){
- return false;
- }
-
- $data[]=array( 'id' => $id,
- 'type' => $type,
- 'level' => $lvl,
- 'open' => $return );
- return $return;
-}
-
-/**
- * List all namespaces
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_namespaces(&$data,$base,$file,$type,$lvl,$opts){
- if($type == 'f') return true; //nothing to do on files
-
- $id = pathID($file);
- $data[]=array( 'id' => $id,
- 'type' => $type,
- 'level' => $lvl );
- return true;
-}
-
-/**
- * List all mediafiles in a namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_media(&$data,$base,$file,$type,$lvl,$opts){
- //we do nothing with directories
- if($type == 'd') return false;
-
- $info = array();
- $info['id'] = pathID($file,true);
- if($info['id'] != cleanID($info['id'])){
- if($opts['showmsg'])
- msg(hsc($info['id']).' is not a valid file name for DokuWiki - skipped',-1);
- return false; // skip non-valid files
- }
-
- //check ACL for namespace (we have no ACL for mediafiles)
- if(auth_quickaclcheck(getNS($info['id']).':*') < AUTH_READ){
- return false;
- }
-
- $info['file'] = basename($file);
- $info['size'] = filesize($base.'/'.$file);
- $info['mtime'] = filemtime($base.'/'.$file);
- $info['writable'] = is_writable($base.'/'.$file);
- if(preg_match("/\.(jpe?g|gif|png)$/",$file)){
- $info['isimg'] = true;
- require_once(DOKU_INC.'inc/JpegMeta.php');
- $info['meta'] = new JpegMeta($base.'/'.$file);
- }else{
- $info['isimg'] = false;
- }
- $data[] = $info;
-
- return false;
-}
-
-/**
- * This function just lists documents (for RSS namespace export)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_list(&$data,$base,$file,$type,$lvl,$opts){
- //we do nothing with directories
- if($type == 'd') return false;
- //only search txt files
- if(substr($file,-4) == '.txt'){
- //check ACL
- $id = pathID($file);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return false;
- }
- $data[]['id'] = $id;
- }
- return false;
-}
-
-/**
- * Quicksearch for searching matching pagenames
- *
- * $opts['query'] is the search query
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_pagename(&$data,$base,$file,$type,$lvl,$opts){
- //we do nothing with directories
- if($type == 'd') return true;
- //only search txt files
- if(substr($file,-4) != '.txt') return true;
-
- //simple stringmatching
- if (!empty($opts['query'])){
- if(strpos($file,$opts['query']) !== false){
- //check ACL
- $id = pathID($file);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return false;
- }
- $data[]['id'] = $id;
- }
- }
- return true;
-}
-
-/**
- * Just lists all documents
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function search_allpages(&$data,$base,$file,$type,$lvl,$opts){
- //we do nothing with directories
- if($type == 'd') return true;
- //only search txt files
- if(substr($file,-4) != '.txt') return true;
-
- $data[]['id'] = pathID($file);
- return true;
-}
-
-/**
- * Search for backlinks to a given page
- *
- * $opts['ns'] namespace of the page
- * $opts['name'] name of the page without namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @deprecated Replaced by ft_backlinks()
- */
-function search_backlinks(&$data,$base,$file,$type,$lvl,$opts){
- //we do nothing with directories
- if($type == 'd') return true;
- //only search txt files
- if(substr($file,-4) != '.txt') return true;
-
- //absolute search id
- $sid = cleanID($opts['ns'].':'.$opts['name']);
-
- //current id and namespace
- $cid = pathID($file);
- $cns = getNS($cid);
-
- //check ACL
- if(auth_quickaclcheck($cid) < AUTH_READ){
- return false;
- }
-
- //fetch instructions
- require_once(DOKU_INC.'inc/parserutils.php');
- $instructions = p_cached_instructions($base.$file,true);
- if(is_null($instructions)) return false;
-
- //check all links for match
- foreach($instructions as $ins){
- if($ins[0] == 'internallink' || ($conf['camelcase'] && $ins[0] == 'camelcaselink') ){
- $mid = $ins[1][0];
- resolve_pageid($cns,$mid,$exists); //exists is not used
- if($mid == $sid){
- //we have a match - finish
- $data[]['id'] = $cid;
- break;
- }
- }
- }
-
- return false;
-}
-
-/**
- * Fulltextsearch
- *
- * $opts['query'] is the search query
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @deprecated - fulltext indexer is used instead
- */
-function search_fulltext(&$data,$base,$file,$type,$lvl,$opts){
- //we do nothing with directories
- if($type == 'd') return true;
- //only search txt files
- if(substr($file,-4) != '.txt') return true;
-
- //check ACL
- $id = pathID($file);
- if(auth_quickaclcheck($id) < AUTH_READ){
- return false;
- }
-
- //create regexp from queries
- $poswords = array();
- $negwords = array();
- $qpreg = preg_split('/\s+/',$opts['query']);
-
- foreach($qpreg as $word){
- switch(substr($word,0,1)){
- case '-':
- if(strlen($word) > 1){ // catch single '-'
- array_push($negwords,preg_quote(substr($word,1),'#'));
- }
- break;
- case '+':
- if(strlen($word) > 1){ // catch single '+'
- array_push($poswords,preg_quote(substr($word,1),'#'));
- }
- break;
- default:
- array_push($poswords,preg_quote($word,'#'));
- break;
- }
- }
-
- // a search without any posword is useless
- if (!count($poswords)) return true;
-
- $reg = '^(?=.*?'.join(')(?=.*?',$poswords).')';
- $reg .= count($negwords) ? '((?!'.join('|',$negwords).').)*$' : '.*$';
- search_regex($data,$base,$file,$reg,$poswords);
- return true;
-}
-
-/**
- * Reference search
- * This fuction searches for existing references to a given media file
- * and returns an array with the found pages. It doesn't pay any
- * attention to ACL permissions to find every reference. The caller
- * must check if the user has the appropriate rights to see the found
- * page and eventually have to prevent the result from displaying.
- *
- * @param array $data Reference to the result data structure
- * @param string $base Base usually $conf['datadir']
- * @param string $file current file or directory relative to $base
- * @param char $type Type either 'd' for directory or 'f' for file
- * @param int $lvl Current recursion depht
- * @param mixed $opts option array as given to search()
- *
- * $opts['query'] is the demanded media file name
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
-function search_reference(&$data,$base,$file,$type,$lvl,$opts){
- global $conf;
-
- //we do nothing with directories
- if($type == 'd') return true;
-
- //only search txt files
- if(substr($file,-4) != '.txt') return true;
-
- //we finish after 'cnt' references found. The return value
- //'false' will skip subdirectories to speed search up.
- $cnt = $conf['refshow'] > 0 ? $conf['refshow'] : 1;
- if(count($data) >= $cnt) return false;
-
- $reg = '\{\{ *\:?'.$opts['query'].' *(\|.*)?\}\}';
- search_regex($data,$base,$file,$reg,array($opts['query']));
- return true;
-}
-
-/* ------------- helper functions below -------------- */
-
-/**
- * fulltext search helper
- * searches a text file with a given regular expression
- * no ACL checks are performed. This have to be done by
- * the caller if necessary.
- *
- * @param array $data reference to array for results
- * @param string $base base directory
- * @param string $file file name to search in
- * @param string $reg regular expression to search for
- * @param array $words words that should be marked in the results
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- *
- * @deprecated - fulltext indexer is used instead
- */
-function search_regex(&$data,$base,$file,$reg,$words){
-
- //get text
- $text = io_readfile($base.'/'.$file);
- //lowercase text (u modifier does not help with case)
- $lctext = utf8_strtolower($text);
-
- //do the fulltext search
- $matches = array();
- if($cnt = preg_match_all('#'.$reg.'#usi',$lctext,$matches)){
- //this is not the best way for snippet generation but the fastest I could find
- $q = $words[0]; //use first word for snippet creation
- $p = utf8_strpos($lctext,$q);
- $f = $p - 100;
- $l = utf8_strlen($q) + 200;
- if($f < 0) $f = 0;
- $snippet = '<span class="search_sep"> ... </span>'.
- htmlspecialchars(utf8_substr($text,$f,$l)).
- '<span class="search_sep"> ... </span>';
- $mark = '('.join('|', $words).')';
- $snippet = preg_replace('#'.$mark.'#si','<strong class="search_hit">\\1</strong>',$snippet);
-
- $data[] = array(
- 'id' => pathID($file),
- 'count' => preg_match_all('#'.$mark.'#usi',$lctext,$matches),
- 'poswords' => join(' ',$words),
- 'snippet' => $snippet,
- );
- }
-
- return true;
-}
-
-
-/**
- * fulltext sort
- *
- * Callback sort function for use with usort to sort the data
- * structure created by search_fulltext. Sorts descending by count
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function sort_search_fulltext($a,$b){
- if($a['count'] > $b['count']){
- return -1;
- }elseif($a['count'] < $b['count']){
- return 1;
- }else{
- return strcmp($a['id'],$b['id']);
- }
-}
-
-/**
- * translates a document path to an ID
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @todo move to pageutils
- */
-function pathID($path,$keeptxt=false){
- $id = utf8_decodeFN($path);
- $id = str_replace('/',':',$id);
- if(!$keeptxt) $id = preg_replace('#\.txt$#','',$id);
- $id = preg_replace('#^:+#','',$id);
- $id = preg_replace('#:+$#','',$id);
- return $id;
-}
-
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * DokuWiki search functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_INC.'inc/common.php');
+
+/**
+ * recurse direcory
+ *
+ * This function recurses into a given base directory
+ * and calls the supplied function for each file and directory
+ *
+ * @param array ref $data The results of the search are stored here
+ * @param string $base Where to start the search
+ * @param callback $func Callback (function name or arayy with object,method)
+ * @param string $dir Current directory beyond $base
+ * @param int $lvl Recursion Level
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search(&$data,$base,$func,$opts,$dir='',$lvl=1){
+ $dirs = array();
+ $files = array();
+
+ //read in directories and files
+ $dh = @opendir($base.'/'.$dir);
+ if(!$dh) return;
+ while(($file = readdir($dh)) !== false){
+ if(preg_match('/^[\._]/',$file)) continue; //skip hidden files and upper dirs
+ if(is_dir($base.'/'.$dir.'/'.$file)){
+ $dirs[] = $dir.'/'.$file;
+ continue;
+ }
+ $files[] = $dir.'/'.$file;
+ }
+ closedir($dh);
+ sort($files);
+ sort($dirs);
+
+ //give directories to userfunction then recurse
+ foreach($dirs as $dir){
+ if (search_callback($func,$data,$base,$dir,'d',$lvl,$opts)){
+ search($data,$base,$func,$opts,$dir,$lvl+1);
+ }
+ }
+ //now handle the files
+ foreach($files as $file){
+ search_callback($func,$data,$base,$file,'f',$lvl,$opts);
+ }
+}
+
+/**
+ * Used to run a user callback
+ *
+ * Makes sure the $data array is passed by reference (unlike when using
+ * call_user_func())
+ *
+ * @todo If this can be generalized it may be useful elsewhere in the code
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_callback($func,&$data,$base,$file,$type,$lvl,$opts){
+ if(is_array($func)){
+ if(is_object($func[0])){
+ // instanciated object
+ return $func[0]->$func[1]($data,$base,$file,$type,$lvl,$opts);
+ }else{
+ // static call
+ $f = $func[0].'::'.$func[1];
+ return $f($data,$base,$file,$type,$lvl,$opts);
+ }
+ }
+ // simple function call
+ return $func($data,$base,$file,$type,$lvl,$opts);
+}
+
+/**
+ * The following functions are userfunctions to use with the search
+ * function above. This function is called for every found file or
+ * directory. When a directory is given to the function it has to
+ * decide if this directory should be traversed (true) or not (false)
+ * The function has to accept the following parameters:
+ *
+ * &$data - Reference to the result data structure
+ * $base - Base usually $conf['datadir']
+ * $file - current file or directory relative to $base
+ * $type - Type either 'd' for directory or 'f' for file
+ * $lvl - Current recursion depht
+ * $opts - option array as given to search()
+ *
+ * return values for files are ignored
+ *
+ * All functions should check the ACL for document READ rights
+ * namespaces (directories) are NOT checked as this would break
+ * the recursion (You can have an nonreadable dir over a readable
+ * one deeper nested) also make sure to check the file type (for example
+ * in case of lockfiles).
+ */
+
+/**
+ * Searches for pages beginning with the given query
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_qsearch(&$data,$base,$file,$type,$lvl,$opts){
+ $item = array();
+
+ if($type == 'd'){
+ return false; //no handling yet
+ }
+
+ //only search txt files
+ if(substr($file,-4) != '.txt') return false;
+
+ //get id
+ $id = pathID($file);
+
+ //check if it matches the query
+ if(!preg_match('/^'.preg_quote($opts['query'],'/').'/u',$id)){
+ return false;
+ }
+
+ //check ACL
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return false;
+ }
+
+ $data[]=array( 'id' => $id,
+ 'type' => $type,
+ 'level' => 1,
+ 'open' => true);
+ return true;
+}
+
+/**
+ * Build the browsable index of pages
+ *
+ * $opts['ns'] is the current namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_index(&$data,$base,$file,$type,$lvl,$opts){
+ global $conf;
+ $return = true;
+
+ $item = array();
+
+ if($type == 'd' && !preg_match('#^'.$file.'(/|$)#','/'.$opts['ns'])){
+ //add but don't recurse
+ $return = false;
+ }elseif($type == 'f' && ($opts['nofiles'] || substr($file,-4) != '.txt')){
+ //don't add
+ return false;
+ }
+
+ $id = pathID($file);
+
+ if($type=='d' && $conf['sneaky_index'] && auth_quickaclcheck($id.':') < AUTH_READ){
+ return false;
+ }
+
+ //check hidden
+ if(isHiddenPage($id)){
+ return false;
+ }
+
+ //check ACL
+ if($type=='f' && auth_quickaclcheck($id) < AUTH_READ){
+ return false;
+ }
+
+ $data[]=array( 'id' => $id,
+ 'type' => $type,
+ 'level' => $lvl,
+ 'open' => $return );
+ return $return;
+}
+
+/**
+ * List all namespaces
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_namespaces(&$data,$base,$file,$type,$lvl,$opts){
+ if($type == 'f') return true; //nothing to do on files
+
+ $id = pathID($file);
+ $data[]=array( 'id' => $id,
+ 'type' => $type,
+ 'level' => $lvl );
+ return true;
+}
+
+/**
+ * List all mediafiles in a namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_media(&$data,$base,$file,$type,$lvl,$opts){
+ //we do nothing with directories
+ if($type == 'd') return false;
+
+ $info = array();
+ $info['id'] = pathID($file,true);
+ if($info['id'] != cleanID($info['id'])){
+ if($opts['showmsg'])
+ msg(hsc($info['id']).' is not a valid file name for DokuWiki - skipped',-1);
+ return false; // skip non-valid files
+ }
+
+ //check ACL for namespace (we have no ACL for mediafiles)
+ if(auth_quickaclcheck(getNS($info['id']).':*') < AUTH_READ){
+ return false;
+ }
+
+ $info['file'] = basename($file);
+ $info['size'] = filesize($base.'/'.$file);
+ $info['mtime'] = filemtime($base.'/'.$file);
+ $info['writable'] = is_writable($base.'/'.$file);
+ if(preg_match("/\.(jpe?g|gif|png)$/",$file)){
+ $info['isimg'] = true;
+ require_once(DOKU_INC.'inc/JpegMeta.php');
+ $info['meta'] = new JpegMeta($base.'/'.$file);
+ }else{
+ $info['isimg'] = false;
+ }
+ $data[] = $info;
+
+ return false;
+}
+
+/**
+ * This function just lists documents (for RSS namespace export)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_list(&$data,$base,$file,$type,$lvl,$opts){
+ //we do nothing with directories
+ if($type == 'd') return false;
+ //only search txt files
+ if(substr($file,-4) == '.txt'){
+ //check ACL
+ $id = pathID($file);
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return false;
+ }
+ $data[]['id'] = $id;
+ }
+ return false;
+}
+
+/**
+ * Quicksearch for searching matching pagenames
+ *
+ * $opts['query'] is the search query
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_pagename(&$data,$base,$file,$type,$lvl,$opts){
+ //we do nothing with directories
+ if($type == 'd') return true;
+ //only search txt files
+ if(substr($file,-4) != '.txt') return true;
+
+ //simple stringmatching
+ if (!empty($opts['query'])){
+ if(strpos($file,$opts['query']) !== false){
+ //check ACL
+ $id = pathID($file);
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return false;
+ }
+ $data[]['id'] = $id;
+ }
+ }
+ return true;
+}
+
+/**
+ * Just lists all documents
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function search_allpages(&$data,$base,$file,$type,$lvl,$opts){
+ //we do nothing with directories
+ if($type == 'd') return true;
+ //only search txt files
+ if(substr($file,-4) != '.txt') return true;
+
+ $data[]['id'] = pathID($file);
+ return true;
+}
+
+/**
+ * Search for backlinks to a given page
+ *
+ * $opts['ns'] namespace of the page
+ * $opts['name'] name of the page without namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @deprecated Replaced by ft_backlinks()
+ */
+function search_backlinks(&$data,$base,$file,$type,$lvl,$opts){
+ //we do nothing with directories
+ if($type == 'd') return true;
+ //only search txt files
+ if(substr($file,-4) != '.txt') return true;
+
+ //absolute search id
+ $sid = cleanID($opts['ns'].':'.$opts['name']);
+
+ //current id and namespace
+ $cid = pathID($file);
+ $cns = getNS($cid);
+
+ //check ACL
+ if(auth_quickaclcheck($cid) < AUTH_READ){
+ return false;
+ }
+
+ //fetch instructions
+ require_once(DOKU_INC.'inc/parserutils.php');
+ $instructions = p_cached_instructions($base.$file,true);
+ if(is_null($instructions)) return false;
+
+ //check all links for match
+ foreach($instructions as $ins){
+ if($ins[0] == 'internallink' || ($conf['camelcase'] && $ins[0] == 'camelcaselink') ){
+ $mid = $ins[1][0];
+ resolve_pageid($cns,$mid,$exists); //exists is not used
+ if($mid == $sid){
+ //we have a match - finish
+ $data[]['id'] = $cid;
+ break;
+ }
+ }
+ }
+
+ return false;
+}
+
+/**
+ * Fulltextsearch
+ *
+ * $opts['query'] is the search query
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @deprecated - fulltext indexer is used instead
+ */
+function search_fulltext(&$data,$base,$file,$type,$lvl,$opts){
+ //we do nothing with directories
+ if($type == 'd') return true;
+ //only search txt files
+ if(substr($file,-4) != '.txt') return true;
+
+ //check ACL
+ $id = pathID($file);
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return false;
+ }
+
+ //create regexp from queries
+ $poswords = array();
+ $negwords = array();
+ $qpreg = preg_split('/\s+/',$opts['query']);
+
+ foreach($qpreg as $word){
+ switch(substr($word,0,1)){
+ case '-':
+ if(strlen($word) > 1){ // catch single '-'
+ array_push($negwords,preg_quote(substr($word,1),'#'));
+ }
+ break;
+ case '+':
+ if(strlen($word) > 1){ // catch single '+'
+ array_push($poswords,preg_quote(substr($word,1),'#'));
+ }
+ break;
+ default:
+ array_push($poswords,preg_quote($word,'#'));
+ break;
+ }
+ }
+
+ // a search without any posword is useless
+ if (!count($poswords)) return true;
+
+ $reg = '^(?=.*?'.join(')(?=.*?',$poswords).')';
+ $reg .= count($negwords) ? '((?!'.join('|',$negwords).').)*$' : '.*$';
+ search_regex($data,$base,$file,$reg,$poswords);
+ return true;
+}
+
+/**
+ * Reference search
+ * This fuction searches for existing references to a given media file
+ * and returns an array with the found pages. It doesn't pay any
+ * attention to ACL permissions to find every reference. The caller
+ * must check if the user has the appropriate rights to see the found
+ * page and eventually have to prevent the result from displaying.
+ *
+ * @param array $data Reference to the result data structure
+ * @param string $base Base usually $conf['datadir']
+ * @param string $file current file or directory relative to $base
+ * @param char $type Type either 'd' for directory or 'f' for file
+ * @param int $lvl Current recursion depht
+ * @param mixed $opts option array as given to search()
+ *
+ * $opts['query'] is the demanded media file name
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+function search_reference(&$data,$base,$file,$type,$lvl,$opts){
+ global $conf;
+
+ //we do nothing with directories
+ if($type == 'd') return true;
+
+ //only search txt files
+ if(substr($file,-4) != '.txt') return true;
+
+ //we finish after 'cnt' references found. The return value
+ //'false' will skip subdirectories to speed search up.
+ $cnt = $conf['refshow'] > 0 ? $conf['refshow'] : 1;
+ if(count($data) >= $cnt) return false;
+
+ $reg = '\{\{ *\:?'.$opts['query'].' *(\|.*)?\}\}';
+ search_regex($data,$base,$file,$reg,array($opts['query']));
+ return true;
+}
+
+/* ------------- helper functions below -------------- */
+
+/**
+ * fulltext search helper
+ * searches a text file with a given regular expression
+ * no ACL checks are performed. This have to be done by
+ * the caller if necessary.
+ *
+ * @param array $data reference to array for results
+ * @param string $base base directory
+ * @param string $file file name to search in
+ * @param string $reg regular expression to search for
+ * @param array $words words that should be marked in the results
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ *
+ * @deprecated - fulltext indexer is used instead
+ */
+function search_regex(&$data,$base,$file,$reg,$words){
+
+ //get text
+ $text = io_readfile($base.'/'.$file);
+ //lowercase text (u modifier does not help with case)
+ $lctext = utf8_strtolower($text);
+
+ //do the fulltext search
+ $matches = array();
+ if($cnt = preg_match_all('#'.$reg.'#usi',$lctext,$matches)){
+ //this is not the best way for snippet generation but the fastest I could find
+ $q = $words[0]; //use first word for snippet creation
+ $p = utf8_strpos($lctext,$q);
+ $f = $p - 100;
+ $l = utf8_strlen($q) + 200;
+ if($f < 0) $f = 0;
+ $snippet = '<span class="search_sep"> ... </span>'.
+ htmlspecialchars(utf8_substr($text,$f,$l)).
+ '<span class="search_sep"> ... </span>';
+ $mark = '('.join('|', $words).')';
+ $snippet = preg_replace('#'.$mark.'#si','<strong class="search_hit">\\1</strong>',$snippet);
+
+ $data[] = array(
+ 'id' => pathID($file),
+ 'count' => preg_match_all('#'.$mark.'#usi',$lctext,$matches),
+ 'poswords' => join(' ',$words),
+ 'snippet' => $snippet,
+ );
+ }
+
+ return true;
+}
+
+
+/**
+ * fulltext sort
+ *
+ * Callback sort function for use with usort to sort the data
+ * structure created by search_fulltext. Sorts descending by count
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function sort_search_fulltext($a,$b){
+ if($a['count'] > $b['count']){
+ return -1;
+ }elseif($a['count'] < $b['count']){
+ return 1;
+ }else{
+ return strcmp($a['id'],$b['id']);
+ }
+}
+
+/**
+ * translates a document path to an ID
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @todo move to pageutils
+ */
+function pathID($path,$keeptxt=false){
+ $id = utf8_decodeFN($path);
+ $id = str_replace('/',':',$id);
+ if(!$keeptxt) $id = preg_replace('#\.txt$#','',$id);
+ $id = preg_replace('#^:+#','',$id);
+ $id = preg_replace('#:+$#','',$id);
+ return $id;
+}
+
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/template.php
===================================================================
--- site/trunk/www-root/wiki/inc/template.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/template.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1139 +1,1139 @@
-<?php
-/**
- * DokuWiki template functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
- require_once(DOKU_CONF.'dokuwiki.php');
-
-/**
- * Returns the path to the given template, uses
- * default one if the custom version doesn't exist.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function template($tpl){
- global $conf;
-
- if(@is_readable(DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl))
- return DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl;
-
- return DOKU_INC.'lib/tpl/default/'.$tpl;
-}
-
-/**
- * Print the content
- *
- * This function is used for printing all the usual content
- * (defined by the global $ACT var) by calling the appropriate
- * outputfunction(s) from html.php
- *
- * Everything that doesn't use the main template file isn't
- * handled by this function. ACL stuff is not done here either.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_content($prependTOC=true) {
- global $ACT;
- global $INFO;
- $INFO['prependTOC'] = $prependTOC;
-
- ob_start();
- trigger_event('TPL_ACT_RENDER',$ACT,'tpl_content_core');
- $html_output = ob_get_clean();
- trigger_event('TPL_CONTENT_DISPLAY',$html_output,'ptln');
-
- return !empty($html_output);
-}
-
-function tpl_content_core(){
- global $ACT;
- global $TEXT;
- global $PRE;
- global $SUF;
- global $SUM;
- global $IDX;
-
- switch($ACT){
- case 'show':
- html_show();
- break;
- case 'preview':
- html_edit($TEXT);
- html_show($TEXT);
- break;
- case 'recover':
- html_edit($TEXT);
- break;
- case 'edit':
- html_edit();
- break;
- case 'draft':
- html_draft();
- break;
- case 'wordblock':
- html_edit($TEXT,'wordblock');
- break;
- case 'search':
- html_search();
- break;
- case 'revisions':
- $first = is_numeric($_REQUEST['first']) ? intval($_REQUEST['first']) : 0;
- html_revisions($first);
- break;
- case 'diff':
- html_diff();
- break;
- case 'recent':
- $first = is_numeric($_REQUEST['first']) ? intval($_REQUEST['first']) : 0;
- html_recent($first);
- break;
- case 'index':
- html_index($IDX); #FIXME can this be pulled from globals? is it sanitized correctly?
- break;
- case 'backlink':
- html_backlinks();
- break;
- case 'conflict':
- html_conflict(con($PRE,$TEXT,$SUF),$SUM);
- html_diff(con($PRE,$TEXT,$SUF),false);
- break;
- case 'locked':
- html_locked();
- break;
- case 'login':
- html_login();
- break;
- case 'register':
- html_register();
- break;
- case 'resendpwd':
- html_resendpwd();
- break;
- case 'denied':
- print p_locale_xhtml('denied');
- break;
- case 'profile' :
- html_updateprofile();
- break;
- case 'admin':
- tpl_admin();
- break;
- default:
- $evt = new Doku_Event('TPL_ACT_UNKNOWN',$ACT);
- if ($evt->advise_before())
- msg("Failed to handle command: ".hsc($ACT),-1);
- $evt->advise_after();
- unset($evt);
- return false;
- }
- return true;
-}
-
-/**
- * Places the TOC where the function is called
- *
- * If you use this you most probably want to call tpl_content with
- * a false argument
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_toc($return=false){
- global $TOC;
- global $ACT;
- global $ID;
- global $REV;
- global $INFO;
- $toc = array();
-
- if(is_array($TOC)){
- // if a TOC was prepared in global scope, always use it
- $toc = $TOC;
- }elseif($ACT == 'show' && !$REV && $INFO['exists']){
- // get TOC from metadata, render if neccessary
- $meta = p_get_metadata($ID, false, true);
- if(isset($meta['internal']['toc'])){
- $tocok = $meta['internal']['toc'];
- }else{
- $tocok = true;
- }
- $toc = $meta['description']['tableofcontents'];
- if(!$tocok || !is_array($toc) || count($toc) < 3){
- $toc = array();
- }
- }elseif($ACT == 'admin'){
- // try to load admin plugin TOC FIXME: duplicates code from tpl_admin
- $plugin = null;
- if (!empty($_REQUEST['page'])) {
- $pluginlist = plugin_list('admin');
- if (in_array($_REQUEST['page'], $pluginlist)) {
- // attempt to load the plugin
- $plugin =& plugin_load('admin',$_REQUEST['page']);
- }
- }
- if ( ($plugin !== null) &&
- (!$plugin->forAdminOnly() || $INFO['isadmin']) ){
- $toc = $plugin->getTOC();
- $TOC = $toc; // avoid later rebuild
- }
- }
-
- $html = html_TOC($toc);
- if($return) return $html;
- echo $html;
-}
-
-/**
- * Handle the admin page contents
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_admin(){
- global $INFO;
- global $TOC;
-
- $plugin = null;
- if (!empty($_REQUEST['page'])) {
- $pluginlist = plugin_list('admin');
-
- if (in_array($_REQUEST['page'], $pluginlist)) {
-
- // attempt to load the plugin
- $plugin =& plugin_load('admin',$_REQUEST['page']);
- }
- }
-
- if ($plugin !== null){
- if($plugin->forAdminOnly() && !$INFO['isadmin']){
- msg('For admins only',-1);
- html_admin();
- }else{
- if(!is_array($TOC)) $TOC = $plugin->getTOC(); //if TOC wasn't requested yet
- if($INFO['prependTOC']) tpl_toc();
- $plugin->html();
- }
- }else{
- html_admin();
- }
- return true;
-}
-
-/**
- * Print the correct HTML meta headers
- *
- * This has to go into the head section of your template.
- *
- * @triggers TPL_METAHEADER_OUTPUT
- * @param boolean $alt Should feeds and alternative format links be added?
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_metaheaders($alt=true){
- global $ID;
- global $REV;
- global $INFO;
- global $ACT;
- global $QUERY;
- global $lang;
- global $conf;
- $it=2;
-
- // prepare the head array
- $head = array();
-
-
- // the usual stuff
- $head['meta'][] = array( 'name'=>'generator', 'content'=>'DokuWiki '.getVersion() );
- $head['link'][] = array( 'rel'=>'search', 'type'=>'application/opensearchdescription+xml',
- 'href'=>DOKU_BASE.'lib/exe/opensearch.php', 'title'=>$conf['title'] );
- $head['link'][] = array( 'rel'=>'start', 'href'=>DOKU_BASE );
- $head['link'][] = array( 'rel'=>'contents', 'href'=> wl($ID,'do=index',false,'&'),
- 'title'=>$lang['btn_index'] );
-
- if($alt){
- $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml',
- 'title'=>'Recent Changes', 'href'=>DOKU_BASE.'feed.php');
- $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml',
- 'title'=>'Current Namespace',
- 'href'=>DOKU_BASE.'feed.php?mode=list&ns='.$INFO['namespace']);
- if($ACT == 'search'){
- $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml',
- 'title'=>'Search Result',
- 'href'=>DOKU_BASE.'feed.php?mode=search&q='.$QUERY);
- }
-
- if(actionOK('export_xhtml')){
- $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/html', 'title'=>'Plain HTML',
- 'href'=>exportlink($ID, 'xhtml', '', false, '&'));
- }
-
- if(actionOK('export_raw')){
- $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/plain', 'title'=>'Wiki Markup',
- 'href'=>exportlink($ID, 'raw', '', false, '&'));
- }
- }
-
- // setup robot tags apropriate for different modes
- if( ($ACT=='show' || $ACT=='export_xhtml') && !$REV){
- if($INFO['exists']){
- //delay indexing:
- if((time() - $INFO['lastmod']) >= $conf['indexdelay']){
- $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow');
- }else{
- $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow');
- }
- }else{
- $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,follow');
- }
- }elseif(defined('DOKU_MEDIADETAIL')){
- $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow');
- }else{
- $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow');
- }
-
- // set metadata
- if($ACT == 'show' || $ACT=='export_xhtml'){
- // date of modification
- if($REV){
- $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$REV));
- }else{
- $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$INFO['lastmod']));
- }
-
- // keywords (explicit or implicit)
- if(!empty($INFO['meta']['subject'])){
- $head['meta'][] = array( 'name'=>'keywords', 'content'=>join(',',$INFO['meta']['subject']));
- }else{
- $head['meta'][] = array( 'name'=>'keywords', 'content'=>str_replace(':',',',$ID));
- }
- }
-
- // load stylesheets
- $head['link'][] = array('rel'=>'stylesheet', 'media'=>'all', 'type'=>'text/css',
- 'href'=>DOKU_BASE.'lib/exe/css.php?s=all&t='.$conf['template']);
- $head['link'][] = array('rel'=>'stylesheet', 'media'=>'screen', 'type'=>'text/css',
- 'href'=>DOKU_BASE.'lib/exe/css.php?t='.$conf['template']);
- $head['link'][] = array('rel'=>'stylesheet', 'media'=>'print', 'type'=>'text/css',
- 'href'=>DOKU_BASE.'lib/exe/css.php?s=print&t='.$conf['template']);
-
- // load javascript
- $js_edit = ($ACT=='edit' || $ACT=='preview' || $ACT=='recover' || $ACT=='wordblock' ) ? 1 : 0;
- $js_write = ($INFO['writable']) ? 1 : 0;
- if(defined('DOKU_MEDIAMANAGER')){
- $js_edit = 1;
- $js_write = 0;
- }
- if(($js_edit && $js_write) || defined('DOKU_MEDIAMANAGER')){
- $script = "NS='".$INFO['namespace']."';";
- if($conf['useacl'] && $_SERVER['REMOTE_USER']){
- require_once(DOKU_INC.'inc/toolbar.php');
- $script .= "SIG='".toolbar_signature()."';";
- }
- $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8',
- '_data'=> $script);
- }
- $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', '_data'=>'',
- 'src'=>DOKU_BASE.'lib/exe/js.php?edit='.$js_edit.'&write='.$js_write);
-
- // trigger event here
- trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true);
- return true;
-}
-
-/**
- * prints the array build by tpl_metaheaders
- *
- * $data is an array of different header tags. Each tag can have multiple
- * instances. Attributes are given as key value pairs. Values will be HTML
- * encoded automatically so they should be provided as is in the $data array.
- *
- * For tags having a body attribute specify the the body data in the special
- * attribute '_data'. This field will NOT BE ESCAPED automatically.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function _tpl_metaheaders_action($data){
- foreach($data as $tag => $inst){
- foreach($inst as $attr){
- echo '<',$tag,' ',buildAttributes($attr);
- if(isset($attr['_data'])){
- if($tag == 'script' && $attr['_data'])
- $attr['_data'] = "<!--//--><![CDATA[//><!--\n".
- $attr['_data'].
- "\n//--><!]]>";
-
- echo '>',$attr['_data'],'</',$tag,'>';
- }else{
- echo '/>';
- }
- echo "\n";
- }
- }
-}
-
-/**
- * Print a link
- *
- * Just builds a link.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_link($url,$name,$more=''){
- print '<a href="'.$url.'" ';
- if ($more) print ' '.$more;
- print ">$name</a>";
- return true;
-}
-
-/**
- * Prints a link to a WikiPage
- *
- * Wrapper around html_wikilink
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_pagelink($id,$name=NULL){
- print html_wikilink($id,$name);
- return true;
-}
-
-/**
- * get the parent page
- *
- * Tries to find out which page is parent.
- * returns false if none is available
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_getparent($id){
- global $conf;
- $parent = getNS($id).':';
- resolve_pageid('',$parent,$exists);
- if($parent == $id) {
- $pos = strrpos (getNS($id),':');
- $parent = substr($parent,0,$pos).':';
- resolve_pageid('',$parent,$exists);
- if($parent == $id) return false;
- }
- return $parent;
-}
-
-/**
- * Print one of the buttons
- *
- * Available Buttons are
- *
- * edit - edit/create/show/draft button
- * history - old revisions
- * recent - recent changes
- * login - login/logout button - if ACL enabled
- * profile - user profile button (if logged in)
- * index - The index
- * admin - admin page - if enough rights
- * top - a back to top button
- * back - a back to parent button - if available
- * backlink - links to the list of backlinks
- * subscription- subscribe/unsubscribe button
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
-function tpl_button($type){
- global $ACT;
- global $ID;
- global $REV;
- global $NS;
- global $INFO;
- global $conf;
- global $auth;
-
- // check disabled actions and fix the badly named ones
- $ctype = $type;
- if($type == 'history') $ctype='revisions';
- if(!actionOK($ctype)) return false;
-
- switch($type){
- case 'edit':
- #most complicated type - we need to decide on current action
- if($ACT == 'show' || $ACT == 'search'){
- if($INFO['writable']){
- if(!empty($INFO['draft'])){
- echo html_btn('draft',$ID,'e',array('do' => 'draft'),'post');
- }else{
- if($INFO['exists']){
- echo html_btn('edit',$ID,'e',array('do' => 'edit','rev' => $REV),'post');
- }else{
- echo html_btn('create',$ID,'e',array('do' => 'edit','rev' => $REV),'post');
- }
- }
- }else{
- if(!actionOK('source')) return false; //pseudo action
- echo html_btn('source',$ID,'v',array('do' => 'edit','rev' => $REV),'post');
- }
- }else{
- echo html_btn('show',$ID,'v',array('do' => 'show'));
- }
- return true;
- case 'history':
- print html_btn('revs',$ID,'o',array('do' => 'revisions'));
- return true;
- case 'recent':
- print html_btn('recent','','r',array('do' => 'recent'));
- return true;
- case 'index':
- print html_btn('index',$ID,'x',array('do' => 'index'));
- return true;
- case 'back':
- if ($parent = tpl_getparent($ID)) {
- print html_btn('back',$parent,'b',array('do' => 'show'));
- return true;
- }
- return false;
- case 'top':
- print html_topbtn();
- return true;
- case 'login':
- if($conf['useacl'] && $auth){
- if($_SERVER['REMOTE_USER']){
- print html_btn('logout',$ID,'',array('do' => 'logout', 'sectok' => getSecurityToken()));
- }else{
- print html_btn('login',$ID,'',array('do' => 'login', 'sectok' => getSecurityToken()));
- }
- return true;
- }
- return false;
- case 'admin':
- if($INFO['ismanager']){
- print html_btn('admin',$ID,'',array('do' => 'admin'));
- return true;
- }
- return false;
- case 'subscription':
- if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){
- if($_SERVER['REMOTE_USER']){
- if($INFO['subscribed']){
- print html_btn('unsubscribe',$ID,'',array('do' => 'unsubscribe',));
- } else {
- print html_btn('subscribe',$ID,'',array('do' => 'subscribe',));
- }
- if($INFO['subscribedns']){
- print html_btn('unsubscribens',$ID,'',array('do' => 'unsubscribens',));
- } else {
- print html_btn('subscribens',$ID,'',array('do' => 'subscribens',));
- }
- return true;
- }
- }
- return false;
- case 'backlink':
- print html_btn('backlink',$ID,'',array('do' => 'backlink'));
- return true;
- case 'profile':
- if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $auth &&
- $auth->canDo('Profile') && ($ACT!='profile')){
- print html_btn('profile',$ID,'',array('do' => 'profile'));
- return true;
- }
- return false;
- default:
- print '[unknown button type]';
- return true;
- }
-}
-
-/**
- * Like the action buttons but links
- *
- * Available links are
- *
- * edit - edit/create/show link
- * history - old revisions
- * recent - recent changes
- * login - login/logout link - if ACL enabled
- * profile - user profile link (if logged in)
- * index - The index
- * admin - admin page - if enough rights
- * top - a back to top link
- * back - a back to parent link - if available
- * backlink - links to the list of backlinks
- * subscribe/subscription - subscribe/unsubscribe link
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @see tpl_button
- */
-function tpl_actionlink($type,$pre='',$suf='',$inner=''){
- global $ID;
- global $INFO;
- global $REV;
- global $ACT;
- global $conf;
- global $lang;
- global $auth;
-
- // check disabled actions and fix the badly named ones
- $ctype = $type;
- if($type == 'history') $ctype='revisions';
- if(!actionOK($ctype)) return false;
-
- switch($type){
- case 'edit':
- #most complicated type - we need to decide on current action
- if($ACT == 'show' || $ACT == 'search'){
- if($INFO['writable']){
- if(!empty($INFO['draft'])) {
- tpl_link(wl($ID,'do=draft'),
- $pre.(($inner)?$inner:$lang['btn_draft']).$suf,
- 'class="action edit" accesskey="e" rel="nofollow"');
- } else {
- if($INFO['exists']){
- tpl_link(wl($ID,'do=edit&rev='.$REV),
- $pre.(($inner)?$inner:$lang['btn_edit']).$suf,
- 'class="action edit" accesskey="e" rel="nofollow"');
- }else{
- tpl_link(wl($ID,'do=edit&rev='.$REV),
- $pre.(($inner)?$inner:$lang['btn_create']).$suf,
- 'class="action create" accesskey="e" rel="nofollow"');
- }
- }
- }else{
- if(!actionOK('source')) return false; //pseudo action
- tpl_link(wl($ID,'do=edit&rev='.$REV),
- $pre.(($inner)?$inner:$lang['btn_source']).$suf,
- 'class="action source" accesskey="v" rel="nofollow"');
- }
- }else{
- tpl_link(wl($ID,'do=show'),
- $pre.(($inner)?$inner:$lang['btn_show']).$suf,
- 'class="action show" accesskey="v" rel="nofollow"');
- }
- return true;
- case 'history':
- tpl_link(wl($ID,'do=revisions'),
- $pre.(($inner)?$inner:$lang['btn_revs']).$suf,
- 'class="action revisions" accesskey="o" rel="nofollow"');
- return true;
- case 'recent':
- tpl_link(wl('','do=recent'),
- $pre.(($inner)?$inner:$lang['btn_recent']).$suf,
- 'class="action recent" accesskey="r" rel="nofollow"');
- return true;
- case 'index':
- tpl_link(wl($ID,'do=index'),
- $pre.(($inner)?$inner:$lang['btn_index']).$suf,
- 'class="action index" accesskey="x" rel="nofollow"');
- return true;
- case 'top':
- print '<a href="#dokuwiki__top" class="action top" accesskey="x">'.
- $pre.(($inner)?$inner:$lang['btn_top']).$suf.'</a>';
- return true;
- case 'back':
- if ($parent = tpl_getparent($ID)) {
- tpl_link(wl($parent,'do=show'),
- $pre.(($inner)?$inner:$lang['btn_back']).$suf,
- 'class="action back" accesskey="b" rel="nofollow"');
- return true;
- }
- return false;
- case 'login':
- if($conf['useacl'] && $auth){
- if($_SERVER['REMOTE_USER']){
- tpl_link(wl($ID,'do=logout§ok='.getSecurityToken()),
- $pre.(($inner)?$inner:$lang['btn_logout']).$suf,
- 'class="action logout" rel="nofollow"');
- }else{
- tpl_link(wl($ID,'do=login§ok='.getSecurityToken()),
- $pre.(($inner)?$inner:$lang['btn_login']).$suf,
- 'class="action login" rel="nofollow"');
- }
- return true;
- }
- return false;
- case 'admin':
- if($INFO['ismanager']){
- tpl_link(wl($ID,'do=admin'),
- $pre.(($inner)?$inner:$lang['btn_admin']).$suf,
- 'class="action admin" rel="nofollow"');
- return true;
- }
- return false;
- case 'subscribe':
- case 'subscription':
- if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){
- if($_SERVER['REMOTE_USER']){
- if($INFO['subscribed']) {
- tpl_link(wl($ID,'do=unsubscribe'),
- $pre.(($inner)?$inner:$lang['btn_unsubscribe']).$suf,
- 'class="action unsubscribe" rel="nofollow"');
- } else {
- tpl_link(wl($ID,'do=subscribe'),
- $pre.(($inner)?$inner:$lang['btn_subscribe']).$suf,
- 'class="action subscribe" rel="nofollow"');
- }
- return true;
- }
- }
- return false;
- case 'subscribens':
- if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){
- if($_SERVER['REMOTE_USER']){
- if($INFO['subscribedns']) {
- tpl_link(wl($ID,'do=unsubscribens'),
- $pre.(($inner)?$inner:$lang['btn_unsubscribens']).$suf,
- 'class="action unsubscribens" rel="nofollow"');
- } else {
- tpl_link(wl($ID,'do=subscribens'),
- $pre.(($inner)?$inner:$lang['btn_subscribens']).$suf,
- 'class="action subscribens" rel="nofollow"');
- }
- return true;
- }
- }
- return false;
- case 'backlink':
- tpl_link(wl($ID,'do=backlink'),
- $pre.(($inner)?$inner:$lang['btn_backlink']).$suf,
- 'class="action backlink" rel="nofollow"');
- return true;
- case 'profile':
- if($conf['useacl'] && $auth && $_SERVER['REMOTE_USER'] &&
- $auth->canDo('Profile') && ($ACT!='profile')){
- tpl_link(wl($ID,'do=profile'),
- $pre.(($inner)?$inner:$lang['btn_profile']).$suf,
- 'class="action profile" rel="nofollow"');
- return true;
- }
- return false;
- default:
- print '[unknown link type]';
- return true;
- }
-}
-
-/**
- * Print the search form
- *
- * If the first parameter is given a div with the ID 'qsearch_out' will
- * be added which instructs the ajax pagequicksearch to kick in and place
- * its output into this div. The second parameter controls the propritary
- * attribute autocomplete. If set to false this attribute will be set with an
- * value of "off" to instruct the browser to disable it's own built in
- * autocompletion feature (MSIE and Firefox)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_searchform($ajax=true,$autocomplete=true){
- global $lang;
- global $ACT;
-
- // don't print the search form if search action has been disabled
- if (!actionOk('search')) return false;
-
- print '<form action="'.wl().'" accept-charset="utf-8" class="search" id="dw__search"><div class="no">';
- print '<input type="hidden" name="do" value="search" />';
- print '<input type="text" ';
- if($ACT == 'search') print 'value="'.htmlspecialchars($_REQUEST['id']).'" ';
- if(!$autocomplete) print 'autocomplete="off" ';
- print 'id="qsearch__in" accesskey="f" name="id" class="edit" title="[ALT+F]" />';
- print '<input type="submit" value="'.$lang['btn_search'].'" class="button" title="'.$lang['btn_search'].'" />';
- if($ajax) print '<div id="qsearch__out" class="ajax_qsearch JSpopup"></div>';
- print '</div></form>';
- return true;
-}
-
-/**
- * Print the breadcrumbs trace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_breadcrumbs($sep='»'){
- global $lang;
- global $conf;
-
- //check if enabled
- if(!$conf['breadcrumbs']) return false;
-
- $crumbs = breadcrumbs(); //setup crumb trace
-
- //reverse crumborder in right-to-left mode, add RLM character to fix heb/eng display mixups
- if($lang['direction'] == 'rtl') {
- $crumbs = array_reverse($crumbs,true);
- $crumbs_sep = ' <span class="bcsep">'.$sep.'</span> ';
- } else {
- $crumbs_sep = ' <span class="bcsep">'.$sep.'</span> ';
- }
-
- //render crumbs, highlight the last one
- print '<span class="bchead">'.$lang['breadcrumb'].':</span>';
- $last = count($crumbs);
- $i = 0;
- foreach ($crumbs as $id => $name){
- $i++;
- echo $crumbs_sep;
- if ($i == $last) print '<span class="curid">';
- tpl_link(wl($id),hsc($name),'class="breadcrumbs" title="'.$id.'"');
- if ($i == $last) print '</span>';
- }
- return true;
-}
-
-/**
- * Hierarchical breadcrumbs
- *
- * This code was suggested as replacement for the usual breadcrumbs.
- * It only makes sense with a deep site structure.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Nigel McNie <oracle.shinoda at gmail.com>
- * @author Sean Coates <sean at caedmon.net>
- * @link http://wiki.splitbrain.org/wiki:tipsandtricks:hierarchicalbreadcrumbs
- * @todo May behave strangely in RTL languages
- */
-function tpl_youarehere($sep=' » '){
- global $conf;
- global $ID;
- global $lang;
-
- // check if enabled
- if(!$conf['youarehere']) return false;
-
- $parts = explode(':', $ID);
- $count = count($parts);
-
- echo '<span class="bchead">'.$lang['youarehere'].': </span>';
-
- // always print the startpage
- $title = p_get_first_heading($conf['start']);
- if(!$title) $title = $conf['start'];
- tpl_link(wl($conf['start']),hsc($title),'title="'.$conf['start'].'"');
-
- // print intermediate namespace links
- $part = '';
- for($i=0; $i<$count - 1; $i++){
- $part .= $parts[$i].':';
- $page = $part;
- resolve_pageid('',$page,$exists);
- if ($page == $conf['start']) continue; // Skip startpage
-
- // output
- echo $sep;
- if($exists){
- $title = p_get_first_heading($page);
- if(!$title) $title = $parts[$i];
- tpl_link(wl($page),hsc($title),'title="'.$page.'"');
- }else{
- tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
- }
- }
-
- // print current page, skipping start page, skipping for namespace index
- if(isset($page) && $page==$part.$parts[$i]) return;
- $page = $part.$parts[$i];
- if($page == $conf['start']) return;
- echo $sep;
- if(page_exists($page)){
- $title = p_get_first_heading($page);
- if(!$title) $title = $parts[$i];
- tpl_link(wl($page),hsc($title),'title="'.$page.'"');
- }else{
- tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
- }
- return true;
-}
-
-/**
- * Print info if the user is logged in
- * and show full name in that case
- *
- * Could be enhanced with a profile link in future?
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_userinfo(){
- global $lang;
- global $INFO;
- if($_SERVER['REMOTE_USER']){
- print $lang['loggedinas'].': '.$INFO['userinfo']['name'];
- return true;
- }
- return false;
-}
-
-/**
- * Print some info about the current page
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_pageinfo(){
- global $conf;
- global $lang;
- global $INFO;
- global $REV;
- global $ID;
-
- // return if we are not allowed to view the page
- if (!auth_quickaclcheck($ID)) { return; }
-
- // prepare date and path
- $fn = $INFO['filepath'];
- if(!$conf['fullpath']){
- if($REV){
- $fn = str_replace(fullpath($conf['olddir']).DIRECTORY_SEPARATOR,'',$fn);
- }else{
- $fn = str_replace(fullpath($conf['datadir']).DIRECTORY_SEPARATOR,'',$fn);
- }
- }
- $fn = utf8_decodeFN($fn);
- $date = strftime($conf['dformat'],$INFO['lastmod']);
-
- // print it
- if($INFO['exists']){
- print $fn;
- print ' · ';
- print $lang['lastmod'];
- print ': ';
- print $date;
- if($INFO['editor']){
- print ' '.$lang['by'].' ';
- print $INFO['editor'];
- }else{
- print ' ('.$lang['external_edit'].')';
- }
- if($INFO['locked']){
- print ' · ';
- print $lang['lockedby'];
- print ': ';
- print $INFO['locked'];
- }
- return true;
- }
- return false;
-}
-
-/**
- * Prints or returns the name of the given page (current one if none given).
- *
- * If useheading is enabled this will use the first headline else
- * the given ID is used.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_pagetitle($id=null, $ret=false){
- global $conf;
- if(is_null($id)){
- global $ID;
- $id = $ID;
- }
-
- $name = $id;
- if ($conf['useheading']) {
- $title = p_get_first_heading($id);
- if ($title) $name = $title;
- }
-
- if ($ret) {
- return hsc($name);
- } else {
- print hsc($name);
- return true;
- }
-}
-
-/**
- * Returns the requested EXIF/IPTC tag from the current image
- *
- * If $tags is an array all given tags are tried until a
- * value is found. If no value is found $alt is returned.
- *
- * Which texts are known is defined in the functions _exifTagNames
- * and _iptcTagNames() in inc/jpeg.php (You need to prepend IPTC
- * to the names of the latter one)
- *
- * Only allowed in: detail.php
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_img_getTag($tags,$alt='',$src=null){
- // Init Exif Reader
- global $SRC;
-
- if(is_null($src)) $src = $SRC;
-
- static $meta = null;
- if(is_null($meta)) $meta = new JpegMeta($src);
- if($meta === false) return $alt;
- $info = $meta->getField($tags);
- if($info == false) return $alt;
- return $info;
-}
-
-/**
- * Prints the image with a link to the full sized version
- *
- * Only allowed in: detail.php
- */
-function tpl_img($maxwidth=0,$maxheight=0){
- global $IMG;
- $w = tpl_img_getTag('File.Width');
- $h = tpl_img_getTag('File.Height');
-
- //resize to given max values
- $ratio = 1;
- if($w >= $h){
- if($maxwidth && $w >= $maxwidth){
- $ratio = $maxwidth/$w;
- }elseif($maxheight && $h > $maxheight){
- $ratio = $maxheight/$h;
- }
- }else{
- if($maxheight && $h >= $maxheight){
- $ratio = $maxheight/$h;
- }elseif($maxwidth && $w > $maxwidth){
- $ratio = $maxwidth/$w;
- }
- }
- if($ratio){
- $w = floor($ratio*$w);
- $h = floor($ratio*$h);
- }
-
- //prepare URLs
- $url=ml($IMG,array('cache'=>$_REQUEST['cache']));
- $src=ml($IMG,array('cache'=>$_REQUEST['cache'],'w'=>$w,'h'=>$h));
-
- //prepare attributes
- $alt=tpl_img_getTag('Simple.Title');
- $p = array();
- if($w) $p['width'] = $w;
- if($h) $p['height'] = $h;
- $p['class'] = 'img_detail';
- if($alt){
- $p['alt'] = $alt;
- $p['title'] = $alt;
- }else{
- $p['alt'] = '';
- }
- $p = buildAttributes($p);
-
- print '<a href="'.$url.'">';
- print '<img src="'.$src.'" '.$p.'/>';
- print '</a>';
- return true;
-}
-
-/**
- * This function inserts a 1x1 pixel gif which in reality
- * is the inexer function.
- *
- * Should be called somewhere at the very end of the main.php
- * template
- */
-function tpl_indexerWebBug(){
- global $ID;
- global $INFO;
- if(!$INFO['exists']) return false;
-
- if(isHiddenPage($ID)) return false; //no need to index hidden pages
-
- $p = array();
- $p['src'] = DOKU_BASE.'lib/exe/indexer.php?id='.rawurlencode($ID).
- '&'.time();
- $p['width'] = 1;
- $p['height'] = 1;
- $p['alt'] = '';
- $att = buildAttributes($p);
- print "<img $att />";
- return true;
-}
-
-// configuration methods
-/**
- * tpl_getConf($id)
- *
- * use this function to access template configuration variables
- */
-function tpl_getConf($id){
- global $conf;
- global $tpl_configloaded;
-
- $tpl = $conf['template'];
-
- if (!$tpl_configloaded){
- $tconf = tpl_loadConfig();
- if ($tconf !== false){
- foreach ($tconf as $key => $value){
- if (isset($conf['tpl'][$tpl][$key])) continue;
- $conf['tpl'][$tpl][$key] = $value;
- }
- $tpl_configloaded = true;
- }
- }
-
- return $conf['tpl'][$tpl][$id];
-}
-
-/**
- * tpl_loadConfig()
- * reads all template configuration variables
- * this function is automatically called by tpl_getConf()
- */
-function tpl_loadConfig(){
-
- $file = DOKU_TPLINC.'/conf/default.php';
- $conf = array();
-
- if (!@file_exists($file)) return false;
-
- // load default config file
- include($file);
-
- return $conf;
-}
-
-/**
- * prints the "main content" in the mediamanger popup
- *
- * Depending on the user's actions this may be a list of
- * files in a namespace, the meta editing dialog or
- * a message of referencing pages
- *
- * Only allowed in mediamanager.php
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_mediaContent(){
- global $IMG;
- global $AUTH;
- global $INUSE;
- global $NS;
- global $JUMPTO;
-
- ptln('<div id="media__content">');
- if($_REQUEST['edit']){
- media_metaform($IMG,$AUTH);
- }elseif(is_array($INUSE)){
- media_filesinuse($INUSE,$IMG);
- }else{
- media_filelist($NS,$AUTH,$JUMPTO);
- }
- ptln('</div>');
-}
-
-/**
- * prints the namespace tree in the mediamanger popup
- *
- * Only allowed in mediamanager.php
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function tpl_mediaTree(){
- global $NS;
-
- ptln('<div id="media__tree">');
- media_nstree($NS);
- ptln('</div>');
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * DokuWiki template functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+ require_once(DOKU_CONF.'dokuwiki.php');
+
+/**
+ * Returns the path to the given template, uses
+ * default one if the custom version doesn't exist.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function template($tpl){
+ global $conf;
+
+ if(@is_readable(DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl))
+ return DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl;
+
+ return DOKU_INC.'lib/tpl/default/'.$tpl;
+}
+
+/**
+ * Print the content
+ *
+ * This function is used for printing all the usual content
+ * (defined by the global $ACT var) by calling the appropriate
+ * outputfunction(s) from html.php
+ *
+ * Everything that doesn't use the main template file isn't
+ * handled by this function. ACL stuff is not done here either.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_content($prependTOC=true) {
+ global $ACT;
+ global $INFO;
+ $INFO['prependTOC'] = $prependTOC;
+
+ ob_start();
+ trigger_event('TPL_ACT_RENDER',$ACT,'tpl_content_core');
+ $html_output = ob_get_clean();
+ trigger_event('TPL_CONTENT_DISPLAY',$html_output,'ptln');
+
+ return !empty($html_output);
+}
+
+function tpl_content_core(){
+ global $ACT;
+ global $TEXT;
+ global $PRE;
+ global $SUF;
+ global $SUM;
+ global $IDX;
+
+ switch($ACT){
+ case 'show':
+ html_show();
+ break;
+ case 'preview':
+ html_edit($TEXT);
+ html_show($TEXT);
+ break;
+ case 'recover':
+ html_edit($TEXT);
+ break;
+ case 'edit':
+ html_edit();
+ break;
+ case 'draft':
+ html_draft();
+ break;
+ case 'wordblock':
+ html_edit($TEXT,'wordblock');
+ break;
+ case 'search':
+ html_search();
+ break;
+ case 'revisions':
+ $first = is_numeric($_REQUEST['first']) ? intval($_REQUEST['first']) : 0;
+ html_revisions($first);
+ break;
+ case 'diff':
+ html_diff();
+ break;
+ case 'recent':
+ $first = is_numeric($_REQUEST['first']) ? intval($_REQUEST['first']) : 0;
+ html_recent($first);
+ break;
+ case 'index':
+ html_index($IDX); #FIXME can this be pulled from globals? is it sanitized correctly?
+ break;
+ case 'backlink':
+ html_backlinks();
+ break;
+ case 'conflict':
+ html_conflict(con($PRE,$TEXT,$SUF),$SUM);
+ html_diff(con($PRE,$TEXT,$SUF),false);
+ break;
+ case 'locked':
+ html_locked();
+ break;
+ case 'login':
+ html_login();
+ break;
+ case 'register':
+ html_register();
+ break;
+ case 'resendpwd':
+ html_resendpwd();
+ break;
+ case 'denied':
+ print p_locale_xhtml('denied');
+ break;
+ case 'profile' :
+ html_updateprofile();
+ break;
+ case 'admin':
+ tpl_admin();
+ break;
+ default:
+ $evt = new Doku_Event('TPL_ACT_UNKNOWN',$ACT);
+ if ($evt->advise_before())
+ msg("Failed to handle command: ".hsc($ACT),-1);
+ $evt->advise_after();
+ unset($evt);
+ return false;
+ }
+ return true;
+}
+
+/**
+ * Places the TOC where the function is called
+ *
+ * If you use this you most probably want to call tpl_content with
+ * a false argument
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_toc($return=false){
+ global $TOC;
+ global $ACT;
+ global $ID;
+ global $REV;
+ global $INFO;
+ $toc = array();
+
+ if(is_array($TOC)){
+ // if a TOC was prepared in global scope, always use it
+ $toc = $TOC;
+ }elseif(($ACT == 'show' || substr($ACT,0,6) == 'export') && !$REV && $INFO['exists']){
+ // get TOC from metadata, render if neccessary
+ $meta = p_get_metadata($ID, false, true);
+ if(isset($meta['internal']['toc'])){
+ $tocok = $meta['internal']['toc'];
+ }else{
+ $tocok = true;
+ }
+ $toc = $meta['description']['tableofcontents'];
+ if(!$tocok || !is_array($toc) || count($toc) < 3){
+ $toc = array();
+ }
+ }elseif($ACT == 'admin'){
+ // try to load admin plugin TOC FIXME: duplicates code from tpl_admin
+ $plugin = null;
+ if (!empty($_REQUEST['page'])) {
+ $pluginlist = plugin_list('admin');
+ if (in_array($_REQUEST['page'], $pluginlist)) {
+ // attempt to load the plugin
+ $plugin =& plugin_load('admin',$_REQUEST['page']);
+ }
+ }
+ if ( ($plugin !== null) &&
+ (!$plugin->forAdminOnly() || $INFO['isadmin']) ){
+ $toc = $plugin->getTOC();
+ $TOC = $toc; // avoid later rebuild
+ }
+ }
+
+ $html = html_TOC($toc);
+ if($return) return $html;
+ echo $html;
+}
+
+/**
+ * Handle the admin page contents
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_admin(){
+ global $INFO;
+ global $TOC;
+
+ $plugin = null;
+ if (!empty($_REQUEST['page'])) {
+ $pluginlist = plugin_list('admin');
+
+ if (in_array($_REQUEST['page'], $pluginlist)) {
+
+ // attempt to load the plugin
+ $plugin =& plugin_load('admin',$_REQUEST['page']);
+ }
+ }
+
+ if ($plugin !== null){
+ if($plugin->forAdminOnly() && !$INFO['isadmin']){
+ msg('For admins only',-1);
+ html_admin();
+ }else{
+ if(!is_array($TOC)) $TOC = $plugin->getTOC(); //if TOC wasn't requested yet
+ if($INFO['prependTOC']) tpl_toc();
+ $plugin->html();
+ }
+ }else{
+ html_admin();
+ }
+ return true;
+}
+
+/**
+ * Print the correct HTML meta headers
+ *
+ * This has to go into the head section of your template.
+ *
+ * @triggers TPL_METAHEADER_OUTPUT
+ * @param boolean $alt Should feeds and alternative format links be added?
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_metaheaders($alt=true){
+ global $ID;
+ global $REV;
+ global $INFO;
+ global $ACT;
+ global $QUERY;
+ global $lang;
+ global $conf;
+ $it=2;
+
+ // prepare the head array
+ $head = array();
+
+
+ // the usual stuff
+ $head['meta'][] = array( 'name'=>'generator', 'content'=>'DokuWiki '.getVersion() );
+ $head['link'][] = array( 'rel'=>'search', 'type'=>'application/opensearchdescription+xml',
+ 'href'=>DOKU_BASE.'lib/exe/opensearch.php', 'title'=>$conf['title'] );
+ $head['link'][] = array( 'rel'=>'start', 'href'=>DOKU_BASE );
+ $head['link'][] = array( 'rel'=>'contents', 'href'=> wl($ID,'do=index',false,'&'),
+ 'title'=>$lang['btn_index'] );
+
+ if($alt){
+ $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml',
+ 'title'=>'Recent Changes', 'href'=>DOKU_BASE.'feed.php');
+ $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml',
+ 'title'=>'Current Namespace',
+ 'href'=>DOKU_BASE.'feed.php?mode=list&ns='.$INFO['namespace']);
+ if($ACT == 'search'){
+ $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml',
+ 'title'=>'Search Result',
+ 'href'=>DOKU_BASE.'feed.php?mode=search&q='.$QUERY);
+ }
+
+ if(actionOK('export_xhtml')){
+ $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/html', 'title'=>'Plain HTML',
+ 'href'=>exportlink($ID, 'xhtml', '', false, '&'));
+ }
+
+ if(actionOK('export_raw')){
+ $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/plain', 'title'=>'Wiki Markup',
+ 'href'=>exportlink($ID, 'raw', '', false, '&'));
+ }
+ }
+
+ // setup robot tags apropriate for different modes
+ if( ($ACT=='show' || $ACT=='export_xhtml') && !$REV){
+ if($INFO['exists']){
+ //delay indexing:
+ if((time() - $INFO['lastmod']) >= $conf['indexdelay']){
+ $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow');
+ }else{
+ $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow');
+ }
+ }else{
+ $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,follow');
+ }
+ }elseif(defined('DOKU_MEDIADETAIL')){
+ $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow');
+ }else{
+ $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow');
+ }
+
+ // set metadata
+ if($ACT == 'show' || $ACT=='export_xhtml'){
+ // date of modification
+ if($REV){
+ $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$REV));
+ }else{
+ $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$INFO['lastmod']));
+ }
+
+ // keywords (explicit or implicit)
+ if(!empty($INFO['meta']['subject'])){
+ $head['meta'][] = array( 'name'=>'keywords', 'content'=>join(',',$INFO['meta']['subject']));
+ }else{
+ $head['meta'][] = array( 'name'=>'keywords', 'content'=>str_replace(':',',',$ID));
+ }
+ }
+
+ // load stylesheets
+ $head['link'][] = array('rel'=>'stylesheet', 'media'=>'all', 'type'=>'text/css',
+ 'href'=>DOKU_BASE.'lib/exe/css.php?s=all&t='.$conf['template']);
+ $head['link'][] = array('rel'=>'stylesheet', 'media'=>'screen', 'type'=>'text/css',
+ 'href'=>DOKU_BASE.'lib/exe/css.php?t='.$conf['template']);
+ $head['link'][] = array('rel'=>'stylesheet', 'media'=>'print', 'type'=>'text/css',
+ 'href'=>DOKU_BASE.'lib/exe/css.php?s=print&t='.$conf['template']);
+
+ // load javascript
+ $js_edit = ($ACT=='edit' || $ACT=='preview' || $ACT=='recover' || $ACT=='wordblock' ) ? 1 : 0;
+ $js_write = ($INFO['writable']) ? 1 : 0;
+ if(defined('DOKU_MEDIAMANAGER')){
+ $js_edit = 1;
+ $js_write = 0;
+ }
+ if(($js_edit && $js_write) || defined('DOKU_MEDIAMANAGER')){
+ $script = "NS='".$INFO['namespace']."';";
+ if($conf['useacl'] && $_SERVER['REMOTE_USER']){
+ require_once(DOKU_INC.'inc/toolbar.php');
+ $script .= "SIG='".toolbar_signature()."';";
+ }
+ $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8',
+ '_data'=> $script);
+ }
+ $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', '_data'=>'',
+ 'src'=>DOKU_BASE.'lib/exe/js.php?edit='.$js_edit.'&write='.$js_write);
+
+ // trigger event here
+ trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true);
+ return true;
+}
+
+/**
+ * prints the array build by tpl_metaheaders
+ *
+ * $data is an array of different header tags. Each tag can have multiple
+ * instances. Attributes are given as key value pairs. Values will be HTML
+ * encoded automatically so they should be provided as is in the $data array.
+ *
+ * For tags having a body attribute specify the the body data in the special
+ * attribute '_data'. This field will NOT BE ESCAPED automatically.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function _tpl_metaheaders_action($data){
+ foreach($data as $tag => $inst){
+ foreach($inst as $attr){
+ echo '<',$tag,' ',buildAttributes($attr);
+ if(isset($attr['_data'])){
+ if($tag == 'script' && $attr['_data'])
+ $attr['_data'] = "<!--//--><![CDATA[//><!--\n".
+ $attr['_data'].
+ "\n//--><!]]>";
+
+ echo '>',$attr['_data'],'</',$tag,'>';
+ }else{
+ echo '/>';
+ }
+ echo "\n";
+ }
+ }
+}
+
+/**
+ * Print a link
+ *
+ * Just builds a link.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_link($url,$name,$more=''){
+ print '<a href="'.$url.'" ';
+ if ($more) print ' '.$more;
+ print ">$name</a>";
+ return true;
+}
+
+/**
+ * Prints a link to a WikiPage
+ *
+ * Wrapper around html_wikilink
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_pagelink($id,$name=NULL){
+ print html_wikilink($id,$name);
+ return true;
+}
+
+/**
+ * get the parent page
+ *
+ * Tries to find out which page is parent.
+ * returns false if none is available
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_getparent($id){
+ global $conf;
+ $parent = getNS($id).':';
+ resolve_pageid('',$parent,$exists);
+ if($parent == $id) {
+ $pos = strrpos (getNS($id),':');
+ $parent = substr($parent,0,$pos).':';
+ resolve_pageid('',$parent,$exists);
+ if($parent == $id) return false;
+ }
+ return $parent;
+}
+
+/**
+ * Print one of the buttons
+ *
+ * Available Buttons are
+ *
+ * edit - edit/create/show/draft button
+ * history - old revisions
+ * recent - recent changes
+ * login - login/logout button - if ACL enabled
+ * profile - user profile button (if logged in)
+ * index - The index
+ * admin - admin page - if enough rights
+ * top - a back to top button
+ * back - a back to parent button - if available
+ * backlink - links to the list of backlinks
+ * subscription- subscribe/unsubscribe button
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+function tpl_button($type){
+ global $ACT;
+ global $ID;
+ global $REV;
+ global $NS;
+ global $INFO;
+ global $conf;
+ global $auth;
+
+ // check disabled actions and fix the badly named ones
+ $ctype = $type;
+ if($type == 'history') $ctype='revisions';
+ if(!actionOK($ctype)) return false;
+
+ switch($type){
+ case 'edit':
+ #most complicated type - we need to decide on current action
+ if($ACT == 'show' || $ACT == 'search'){
+ if($INFO['writable']){
+ if(!empty($INFO['draft'])){
+ echo html_btn('draft',$ID,'e',array('do' => 'draft'),'post');
+ }else{
+ if($INFO['exists']){
+ echo html_btn('edit',$ID,'e',array('do' => 'edit','rev' => $REV),'post');
+ }else{
+ echo html_btn('create',$ID,'e',array('do' => 'edit','rev' => $REV),'post');
+ }
+ }
+ }else{
+ if(!actionOK('source')) return false; //pseudo action
+ echo html_btn('source',$ID,'v',array('do' => 'edit','rev' => $REV),'post');
+ }
+ }else{
+ echo html_btn('show',$ID,'v',array('do' => 'show'));
+ }
+ return true;
+ case 'history':
+ print html_btn('revs',$ID,'o',array('do' => 'revisions'));
+ return true;
+ case 'recent':
+ print html_btn('recent','','r',array('do' => 'recent'));
+ return true;
+ case 'index':
+ print html_btn('index',$ID,'x',array('do' => 'index'));
+ return true;
+ case 'back':
+ if ($parent = tpl_getparent($ID)) {
+ print html_btn('back',$parent,'b',array('do' => 'show'));
+ return true;
+ }
+ return false;
+ case 'top':
+ print html_topbtn();
+ return true;
+ case 'login':
+ if($conf['useacl'] && $auth){
+ if($_SERVER['REMOTE_USER']){
+ print html_btn('logout',$ID,'',array('do' => 'logout', 'sectok' => getSecurityToken()));
+ }else{
+ print html_btn('login',$ID,'',array('do' => 'login', 'sectok' => getSecurityToken()));
+ }
+ return true;
+ }
+ return false;
+ case 'admin':
+ if($INFO['ismanager']){
+ print html_btn('admin',$ID,'',array('do' => 'admin'));
+ return true;
+ }
+ return false;
+ case 'subscription':
+ if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){
+ if($_SERVER['REMOTE_USER']){
+ if($INFO['subscribed']){
+ print html_btn('unsubscribe',$ID,'',array('do' => 'unsubscribe',));
+ } else {
+ print html_btn('subscribe',$ID,'',array('do' => 'subscribe',));
+ }
+ if($INFO['subscribedns']){
+ print html_btn('unsubscribens',$ID,'',array('do' => 'unsubscribens',));
+ } else {
+ print html_btn('subscribens',$ID,'',array('do' => 'subscribens',));
+ }
+ return true;
+ }
+ }
+ return false;
+ case 'backlink':
+ print html_btn('backlink',$ID,'',array('do' => 'backlink'));
+ return true;
+ case 'profile':
+ if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $auth &&
+ $auth->canDo('Profile') && ($ACT!='profile')){
+ print html_btn('profile',$ID,'',array('do' => 'profile'));
+ return true;
+ }
+ return false;
+ default:
+ print '[unknown button type]';
+ return true;
+ }
+}
+
+/**
+ * Like the action buttons but links
+ *
+ * Available links are
+ *
+ * edit - edit/create/show link
+ * history - old revisions
+ * recent - recent changes
+ * login - login/logout link - if ACL enabled
+ * profile - user profile link (if logged in)
+ * index - The index
+ * admin - admin page - if enough rights
+ * top - a back to top link
+ * back - a back to parent link - if available
+ * backlink - links to the list of backlinks
+ * subscribe/subscription - subscribe/unsubscribe link
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @see tpl_button
+ */
+function tpl_actionlink($type,$pre='',$suf='',$inner=''){
+ global $ID;
+ global $INFO;
+ global $REV;
+ global $ACT;
+ global $conf;
+ global $lang;
+ global $auth;
+
+ // check disabled actions and fix the badly named ones
+ $ctype = $type;
+ if($type == 'history') $ctype='revisions';
+ if(!actionOK($ctype)) return false;
+
+ switch($type){
+ case 'edit':
+ #most complicated type - we need to decide on current action
+ if($ACT == 'show' || $ACT == 'search'){
+ if($INFO['writable']){
+ if(!empty($INFO['draft'])) {
+ tpl_link(wl($ID,'do=draft'),
+ $pre.(($inner)?$inner:$lang['btn_draft']).$suf,
+ 'class="action edit" accesskey="e" rel="nofollow"');
+ } else {
+ if($INFO['exists']){
+ tpl_link(wl($ID,'do=edit&rev='.$REV),
+ $pre.(($inner)?$inner:$lang['btn_edit']).$suf,
+ 'class="action edit" accesskey="e" rel="nofollow"');
+ }else{
+ tpl_link(wl($ID,'do=edit&rev='.$REV),
+ $pre.(($inner)?$inner:$lang['btn_create']).$suf,
+ 'class="action create" accesskey="e" rel="nofollow"');
+ }
+ }
+ }else{
+ if(!actionOK('source')) return false; //pseudo action
+ tpl_link(wl($ID,'do=edit&rev='.$REV),
+ $pre.(($inner)?$inner:$lang['btn_source']).$suf,
+ 'class="action source" accesskey="v" rel="nofollow"');
+ }
+ }else{
+ tpl_link(wl($ID,'do=show'),
+ $pre.(($inner)?$inner:$lang['btn_show']).$suf,
+ 'class="action show" accesskey="v" rel="nofollow"');
+ }
+ return true;
+ case 'history':
+ tpl_link(wl($ID,'do=revisions'),
+ $pre.(($inner)?$inner:$lang['btn_revs']).$suf,
+ 'class="action revisions" accesskey="o" rel="nofollow"');
+ return true;
+ case 'recent':
+ tpl_link(wl('','do=recent'),
+ $pre.(($inner)?$inner:$lang['btn_recent']).$suf,
+ 'class="action recent" accesskey="r" rel="nofollow"');
+ return true;
+ case 'index':
+ tpl_link(wl($ID,'do=index'),
+ $pre.(($inner)?$inner:$lang['btn_index']).$suf,
+ 'class="action index" accesskey="x" rel="nofollow"');
+ return true;
+ case 'top':
+ print '<a href="#dokuwiki__top" class="action top" accesskey="x">'.
+ $pre.(($inner)?$inner:$lang['btn_top']).$suf.'</a>';
+ return true;
+ case 'back':
+ if ($parent = tpl_getparent($ID)) {
+ tpl_link(wl($parent,'do=show'),
+ $pre.(($inner)?$inner:$lang['btn_back']).$suf,
+ 'class="action back" accesskey="b" rel="nofollow"');
+ return true;
+ }
+ return false;
+ case 'login':
+ if($conf['useacl'] && $auth){
+ if($_SERVER['REMOTE_USER']){
+ tpl_link(wl($ID,'do=logout§ok='.getSecurityToken()),
+ $pre.(($inner)?$inner:$lang['btn_logout']).$suf,
+ 'class="action logout" rel="nofollow"');
+ }else{
+ tpl_link(wl($ID,'do=login§ok='.getSecurityToken()),
+ $pre.(($inner)?$inner:$lang['btn_login']).$suf,
+ 'class="action login" rel="nofollow"');
+ }
+ return true;
+ }
+ return false;
+ case 'admin':
+ if($INFO['ismanager']){
+ tpl_link(wl($ID,'do=admin'),
+ $pre.(($inner)?$inner:$lang['btn_admin']).$suf,
+ 'class="action admin" rel="nofollow"');
+ return true;
+ }
+ return false;
+ case 'subscribe':
+ case 'subscription':
+ if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){
+ if($_SERVER['REMOTE_USER']){
+ if($INFO['subscribed']) {
+ tpl_link(wl($ID,'do=unsubscribe'),
+ $pre.(($inner)?$inner:$lang['btn_unsubscribe']).$suf,
+ 'class="action unsubscribe" rel="nofollow"');
+ } else {
+ tpl_link(wl($ID,'do=subscribe'),
+ $pre.(($inner)?$inner:$lang['btn_subscribe']).$suf,
+ 'class="action subscribe" rel="nofollow"');
+ }
+ return true;
+ }
+ }
+ return false;
+ case 'subscribens':
+ if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){
+ if($_SERVER['REMOTE_USER']){
+ if($INFO['subscribedns']) {
+ tpl_link(wl($ID,'do=unsubscribens'),
+ $pre.(($inner)?$inner:$lang['btn_unsubscribens']).$suf,
+ 'class="action unsubscribens" rel="nofollow"');
+ } else {
+ tpl_link(wl($ID,'do=subscribens'),
+ $pre.(($inner)?$inner:$lang['btn_subscribens']).$suf,
+ 'class="action subscribens" rel="nofollow"');
+ }
+ return true;
+ }
+ }
+ return false;
+ case 'backlink':
+ tpl_link(wl($ID,'do=backlink'),
+ $pre.(($inner)?$inner:$lang['btn_backlink']).$suf,
+ 'class="action backlink" rel="nofollow"');
+ return true;
+ case 'profile':
+ if($conf['useacl'] && $auth && $_SERVER['REMOTE_USER'] &&
+ $auth->canDo('Profile') && ($ACT!='profile')){
+ tpl_link(wl($ID,'do=profile'),
+ $pre.(($inner)?$inner:$lang['btn_profile']).$suf,
+ 'class="action profile" rel="nofollow"');
+ return true;
+ }
+ return false;
+ default:
+ print '[unknown link type]';
+ return true;
+ }
+}
+
+/**
+ * Print the search form
+ *
+ * If the first parameter is given a div with the ID 'qsearch_out' will
+ * be added which instructs the ajax pagequicksearch to kick in and place
+ * its output into this div. The second parameter controls the propritary
+ * attribute autocomplete. If set to false this attribute will be set with an
+ * value of "off" to instruct the browser to disable it's own built in
+ * autocompletion feature (MSIE and Firefox)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_searchform($ajax=true,$autocomplete=true){
+ global $lang;
+ global $ACT;
+
+ // don't print the search form if search action has been disabled
+ if (!actionOk('search')) return false;
+
+ print '<form action="'.wl().'" accept-charset="utf-8" class="search" id="dw__search"><div class="no">';
+ print '<input type="hidden" name="do" value="search" />';
+ print '<input type="text" ';
+ if($ACT == 'search') print 'value="'.htmlspecialchars($_REQUEST['id']).'" ';
+ if(!$autocomplete) print 'autocomplete="off" ';
+ print 'id="qsearch__in" accesskey="f" name="id" class="edit" title="[ALT+F]" />';
+ print '<input type="submit" value="'.$lang['btn_search'].'" class="button" title="'.$lang['btn_search'].'" />';
+ if($ajax) print '<div id="qsearch__out" class="ajax_qsearch JSpopup"></div>';
+ print '</div></form>';
+ return true;
+}
+
+/**
+ * Print the breadcrumbs trace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_breadcrumbs($sep='»'){
+ global $lang;
+ global $conf;
+
+ //check if enabled
+ if(!$conf['breadcrumbs']) return false;
+
+ $crumbs = breadcrumbs(); //setup crumb trace
+
+ //reverse crumborder in right-to-left mode, add RLM character to fix heb/eng display mixups
+ if($lang['direction'] == 'rtl') {
+ $crumbs = array_reverse($crumbs,true);
+ $crumbs_sep = ' <span class="bcsep">'.$sep.'</span> ';
+ } else {
+ $crumbs_sep = ' <span class="bcsep">'.$sep.'</span> ';
+ }
+
+ //render crumbs, highlight the last one
+ print '<span class="bchead">'.$lang['breadcrumb'].':</span>';
+ $last = count($crumbs);
+ $i = 0;
+ foreach ($crumbs as $id => $name){
+ $i++;
+ echo $crumbs_sep;
+ if ($i == $last) print '<span class="curid">';
+ tpl_link(wl($id),hsc($name),'class="breadcrumbs" title="'.$id.'"');
+ if ($i == $last) print '</span>';
+ }
+ return true;
+}
+
+/**
+ * Hierarchical breadcrumbs
+ *
+ * This code was suggested as replacement for the usual breadcrumbs.
+ * It only makes sense with a deep site structure.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Nigel McNie <oracle.shinoda at gmail.com>
+ * @author Sean Coates <sean at caedmon.net>
+ * @link http://wiki.splitbrain.org/wiki:tipsandtricks:hierarchicalbreadcrumbs
+ * @todo May behave strangely in RTL languages
+ */
+function tpl_youarehere($sep=' » '){
+ global $conf;
+ global $ID;
+ global $lang;
+
+ // check if enabled
+ if(!$conf['youarehere']) return false;
+
+ $parts = explode(':', $ID);
+ $count = count($parts);
+
+ echo '<span class="bchead">'.$lang['youarehere'].': </span>';
+
+ // always print the startpage
+ $title = p_get_first_heading($conf['start']);
+ if(!$title) $title = $conf['start'];
+ tpl_link(wl($conf['start']),hsc($title),'title="'.$conf['start'].'"');
+
+ // print intermediate namespace links
+ $part = '';
+ for($i=0; $i<$count - 1; $i++){
+ $part .= $parts[$i].':';
+ $page = $part;
+ resolve_pageid('',$page,$exists);
+ if ($page == $conf['start']) continue; // Skip startpage
+
+ // output
+ echo $sep;
+ if($exists){
+ $title = p_get_first_heading($page);
+ if(!$title) $title = $parts[$i];
+ tpl_link(wl($page),hsc($title),'title="'.$page.'"');
+ }else{
+ tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
+ }
+ }
+
+ // print current page, skipping start page, skipping for namespace index
+ if(isset($page) && $page==$part.$parts[$i]) return;
+ $page = $part.$parts[$i];
+ if($page == $conf['start']) return;
+ echo $sep;
+ if(page_exists($page)){
+ $title = p_get_first_heading($page);
+ if(!$title) $title = $parts[$i];
+ tpl_link(wl($page),hsc($title),'title="'.$page.'"');
+ }else{
+ tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"');
+ }
+ return true;
+}
+
+/**
+ * Print info if the user is logged in
+ * and show full name in that case
+ *
+ * Could be enhanced with a profile link in future?
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_userinfo(){
+ global $lang;
+ global $INFO;
+ if($_SERVER['REMOTE_USER']){
+ print $lang['loggedinas'].': '.$INFO['userinfo']['name'];
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Print some info about the current page
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_pageinfo(){
+ global $conf;
+ global $lang;
+ global $INFO;
+ global $REV;
+ global $ID;
+
+ // return if we are not allowed to view the page
+ if (!auth_quickaclcheck($ID)) { return; }
+
+ // prepare date and path
+ $fn = $INFO['filepath'];
+ if(!$conf['fullpath']){
+ if($REV){
+ $fn = str_replace(fullpath($conf['olddir']).'/','',$fn);
+ }else{
+ $fn = str_replace(fullpath($conf['datadir']).'/','',$fn);
+ }
+ }
+ $fn = utf8_decodeFN($fn);
+ $date = strftime($conf['dformat'],$INFO['lastmod']);
+
+ // print it
+ if($INFO['exists']){
+ print $fn;
+ print ' · ';
+ print $lang['lastmod'];
+ print ': ';
+ print $date;
+ if($INFO['editor']){
+ print ' '.$lang['by'].' ';
+ print $INFO['editor'];
+ }else{
+ print ' ('.$lang['external_edit'].')';
+ }
+ if($INFO['locked']){
+ print ' · ';
+ print $lang['lockedby'];
+ print ': ';
+ print $INFO['locked'];
+ }
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Prints or returns the name of the given page (current one if none given).
+ *
+ * If useheading is enabled this will use the first headline else
+ * the given ID is used.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_pagetitle($id=null, $ret=false){
+ global $conf;
+ if(is_null($id)){
+ global $ID;
+ $id = $ID;
+ }
+
+ $name = $id;
+ if ($conf['useheading']) {
+ $title = p_get_first_heading($id);
+ if ($title) $name = $title;
+ }
+
+ if ($ret) {
+ return hsc($name);
+ } else {
+ print hsc($name);
+ return true;
+ }
+}
+
+/**
+ * Returns the requested EXIF/IPTC tag from the current image
+ *
+ * If $tags is an array all given tags are tried until a
+ * value is found. If no value is found $alt is returned.
+ *
+ * Which texts are known is defined in the functions _exifTagNames
+ * and _iptcTagNames() in inc/jpeg.php (You need to prepend IPTC
+ * to the names of the latter one)
+ *
+ * Only allowed in: detail.php
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_img_getTag($tags,$alt='',$src=null){
+ // Init Exif Reader
+ global $SRC;
+
+ if(is_null($src)) $src = $SRC;
+
+ static $meta = null;
+ if(is_null($meta)) $meta = new JpegMeta($src);
+ if($meta === false) return $alt;
+ $info = $meta->getField($tags);
+ if($info == false) return $alt;
+ return $info;
+}
+
+/**
+ * Prints the image with a link to the full sized version
+ *
+ * Only allowed in: detail.php
+ */
+function tpl_img($maxwidth=0,$maxheight=0){
+ global $IMG;
+ $w = tpl_img_getTag('File.Width');
+ $h = tpl_img_getTag('File.Height');
+
+ //resize to given max values
+ $ratio = 1;
+ if($w >= $h){
+ if($maxwidth && $w >= $maxwidth){
+ $ratio = $maxwidth/$w;
+ }elseif($maxheight && $h > $maxheight){
+ $ratio = $maxheight/$h;
+ }
+ }else{
+ if($maxheight && $h >= $maxheight){
+ $ratio = $maxheight/$h;
+ }elseif($maxwidth && $w > $maxwidth){
+ $ratio = $maxwidth/$w;
+ }
+ }
+ if($ratio){
+ $w = floor($ratio*$w);
+ $h = floor($ratio*$h);
+ }
+
+ //prepare URLs
+ $url=ml($IMG,array('cache'=>$_REQUEST['cache']));
+ $src=ml($IMG,array('cache'=>$_REQUEST['cache'],'w'=>$w,'h'=>$h));
+
+ //prepare attributes
+ $alt=tpl_img_getTag('Simple.Title');
+ $p = array();
+ if($w) $p['width'] = $w;
+ if($h) $p['height'] = $h;
+ $p['class'] = 'img_detail';
+ if($alt){
+ $p['alt'] = $alt;
+ $p['title'] = $alt;
+ }else{
+ $p['alt'] = '';
+ }
+ $p = buildAttributes($p);
+
+ print '<a href="'.$url.'">';
+ print '<img src="'.$src.'" '.$p.'/>';
+ print '</a>';
+ return true;
+}
+
+/**
+ * This function inserts a 1x1 pixel gif which in reality
+ * is the inexer function.
+ *
+ * Should be called somewhere at the very end of the main.php
+ * template
+ */
+function tpl_indexerWebBug(){
+ global $ID;
+ global $INFO;
+ if(!$INFO['exists']) return false;
+
+ if(isHiddenPage($ID)) return false; //no need to index hidden pages
+
+ $p = array();
+ $p['src'] = DOKU_BASE.'lib/exe/indexer.php?id='.rawurlencode($ID).
+ '&'.time();
+ $p['width'] = 1;
+ $p['height'] = 1;
+ $p['alt'] = '';
+ $att = buildAttributes($p);
+ print "<img $att />";
+ return true;
+}
+
+// configuration methods
+/**
+ * tpl_getConf($id)
+ *
+ * use this function to access template configuration variables
+ */
+function tpl_getConf($id){
+ global $conf;
+ global $tpl_configloaded;
+
+ $tpl = $conf['template'];
+
+ if (!$tpl_configloaded){
+ $tconf = tpl_loadConfig();
+ if ($tconf !== false){
+ foreach ($tconf as $key => $value){
+ if (isset($conf['tpl'][$tpl][$key])) continue;
+ $conf['tpl'][$tpl][$key] = $value;
+ }
+ $tpl_configloaded = true;
+ }
+ }
+
+ return $conf['tpl'][$tpl][$id];
+}
+
+/**
+ * tpl_loadConfig()
+ * reads all template configuration variables
+ * this function is automatically called by tpl_getConf()
+ */
+function tpl_loadConfig(){
+
+ $file = DOKU_TPLINC.'/conf/default.php';
+ $conf = array();
+
+ if (!@file_exists($file)) return false;
+
+ // load default config file
+ include($file);
+
+ return $conf;
+}
+
+/**
+ * prints the "main content" in the mediamanger popup
+ *
+ * Depending on the user's actions this may be a list of
+ * files in a namespace, the meta editing dialog or
+ * a message of referencing pages
+ *
+ * Only allowed in mediamanager.php
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_mediaContent(){
+ global $IMG;
+ global $AUTH;
+ global $INUSE;
+ global $NS;
+ global $JUMPTO;
+
+ ptln('<div id="media__content">');
+ if($_REQUEST['edit']){
+ media_metaform($IMG,$AUTH);
+ }elseif(is_array($INUSE)){
+ media_filesinuse($INUSE,$IMG);
+ }else{
+ media_filelist($NS,$AUTH,$JUMPTO);
+ }
+ ptln('</div>');
+}
+
+/**
+ * prints the namespace tree in the mediamanger popup
+ *
+ * Only allowed in mediamanager.php
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function tpl_mediaTree(){
+ global $NS;
+
+ ptln('<div id="media__tree">');
+ media_nstree($NS);
+ ptln('</div>');
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/toolbar.php
===================================================================
--- site/trunk/www-root/wiki/inc/toolbar.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/toolbar.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,205 +1,205 @@
-<?php
-/**
- * Editing toolbar functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
-
-require_once(DOKU_INC.'inc/JSON.php');
-
-
-/**
- * Prepares and prints an JavaScript array with all toolbar buttons
- *
- * @todo add toolbar plugins
- * @param string $varname Name of the JS variable to fill
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function toolbar_JSdefines($varname){
- global $ID;
- global $conf;
- global $lang;
-
- $menu = array();
-
- $evt = new Doku_Event('TOOLBAR_DEFINE', $menu);
- if ($evt->advise_before()){
-
- // build button array
- $menu = array_merge($menu, array(
- array(
- 'type' => 'format',
- 'title' => $lang['qb_bold'],
- 'icon' => 'bold.png',
- 'key' => 'b',
- 'open' => '**',
- 'close' => '**',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_italic'],
- 'icon' => 'italic.png',
- 'key' => 'i',
- 'open' => '//',
- 'close' => '//',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_underl'],
- 'icon' => 'underline.png',
- 'key' => 'u',
- 'open' => '__',
- 'close' => '__',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_code'],
- 'icon' => 'mono.png',
- 'key' => 'c',
- 'open' => "''",
- 'close' => "''",
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_strike'],
- 'icon' => 'strike.png',
- 'key' => 'd',
- 'open' => '<del>',
- 'close' => '</del>',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_h1'],
- 'icon' => 'h1.png',
- 'key' => '1',
- 'open' => '====== ',
- 'close' => ' ======\n',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_h2'],
- 'icon' => 'h2.png',
- 'key' => '2',
- 'open' => '===== ',
- 'close' => ' =====\n',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_h3'],
- 'icon' => 'h3.png',
- 'key' => '3',
- 'open' => '==== ',
- 'close' => ' ====\n',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_h4'],
- 'icon' => 'h4.png',
- 'key' => '4',
- 'open' => '=== ',
- 'close' => ' ===\n',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_h5'],
- 'icon' => 'h5.png',
- 'key' => '5',
- 'open' => '== ',
- 'close' => ' ==\n',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_link'],
- 'icon' => 'link.png',
- 'key' => 'l',
- 'open' => '[[',
- 'close' => ']]',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_extlink'],
- 'icon' => 'linkextern.png',
- 'open' => '[[',
- 'close' => ']]',
- 'sample' => 'http://example.com|'.$lang['qb_extlink'],
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_ol'],
- 'icon' => 'ol.png',
- 'open' => ' - ',
- 'close' => '\n',
- ),
- array(
- 'type' => 'format',
- 'title' => $lang['qb_ul'],
- 'icon' => 'ul.png',
- 'open' => ' * ',
- 'close' => '\n',
- ),
- array(
- 'type' => 'insert',
- 'title' => $lang['qb_hr'],
- 'icon' => 'hr.png',
- 'insert' => '----\n',
- ),
- array(
- 'type' => 'mediapopup',
- 'title' => $lang['qb_media'],
- 'icon' => 'image.png',
- 'url' => DOKU_BASE.'lib/exe/mediamanager.php?ns=',
- 'name' => 'mediaselect',
- 'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes',
- ),
- array(
- 'type' => 'picker',
- 'title' => $lang['qb_smileys'],
- 'icon' => 'smiley.png',
- 'list' => getSmileys(),
- 'icobase'=> 'smileys',
- ),
- array(
- 'type' => 'picker',
- 'title' => $lang['qb_chars'],
- 'icon' => 'chars.png',
- 'list' => explode(' ','à à à á à â à ã à ä Ç Ç Ä Ä Ã
Ã¥ Ä Ä Ä Ä
à æ Ä Ä Ã Ã§ Ä Ä Ä Ä Ä Ä Ã Ä Ã° Ä Ä Ã Ã¨ à é à ê à ë Ä Ä Ä Ä Ä Ä Ä Ä Ä¢ Ä£ Ä Ä Ä Ä Ä Ä¡ Ĥ Ä¥ à ì à à à î à ï Ç Ç Äª Ä« İ ı Ä® į Ä´ ĵ Ķ Ä· Ĺ ĺ Ä» ļ Ľ ľ Å Å Ä¿ ŠŠŠà ñ Å
ŠŠŠà ò à ó à ô à õ à ö Ç Ç Å Å Å Å Å Å Ã Ã¸ Å Å Å Å Å Å Å Å Å Å Å Å¡ ŠŠŢ Å£ Ť Å¥ à ù à ú à û à ü Ç Ç Å¬ ŠŪ Å« Å® ů Ç Ç Ç Ç Å² ų Ű ű Å´ ŵ à ý Ÿ ÿ Ŷ Å· Ź ź Ž ž Å» ż à þ à Ħ ħ ¿ ¡ ¢ £ ¤ Â¥ ⬠¦ § ª ¬ ¯ ° ± ÷ Ⱐ¼ ½ ¾ ¹ ² ³ µ ¶ â ⡠· ⢠º â â â Æ É â
â â â â â â â¾ â â â â â â ⧠⨠⩠⪠⫠ⴠ⼠â
â â ⡠⤠⥠â â â â â â â ⥠â
â â â â âµ â ⣠⥠⦠α β Πγ Πδ ε ζ η Πθ ι κ Πλ μ Πξ Î Ï Ï Î£ Ï Î¤ Ï Ï
Φ Ï Ï Î¨ Ï Î© Ï â
â â â
â â â â â ⹠⺠â â à â â â â â â « » ⹠⺠â â ⦠â â â â â â â â â â © ⢠® â² â³'),
- ),
- array(
- 'type' => 'signature',
- 'title' => $lang['qb_sig'],
- 'icon' => 'sig.png',
- 'key' => 'y',
- ),
- ));
- } // end event TOOLBAR_DEFINE default action
- $evt->advise_after();
- unset($evt);
-
- // use JSON to build the JavaScript array
- $json = new JSON();
- print "var $varname = ".$json->encode($menu).";\n";
-}
-
-/**
- * prepares the signature string as configured in the config
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function toolbar_signature(){
- global $conf;
- global $INFO;
-
- $sig = $conf['signature'];
- $sig = strftime($sig);
- $sig = str_replace('@USER@',$_SERVER['REMOTE_USER'],$sig);
- $sig = str_replace('@NAME@',$INFO['userinfo']['name'],$sig);
- $sig = str_replace('@MAIL@',$INFO['userinfo']['mail'],$sig);
- $sig = str_replace('@DATE@',strftime($conf['dformat']),$sig);
- $sig = str_replace('\\\\n','\\n',addslashes($sig));
- return $sig;
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * Editing toolbar functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/');
+
+require_once(DOKU_INC.'inc/JSON.php');
+
+
+/**
+ * Prepares and prints an JavaScript array with all toolbar buttons
+ *
+ * @todo add toolbar plugins
+ * @param string $varname Name of the JS variable to fill
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function toolbar_JSdefines($varname){
+ global $ID;
+ global $conf;
+ global $lang;
+
+ $menu = array();
+
+ $evt = new Doku_Event('TOOLBAR_DEFINE', $menu);
+ if ($evt->advise_before()){
+
+ // build button array
+ $menu = array_merge($menu, array(
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_bold'],
+ 'icon' => 'bold.png',
+ 'key' => 'b',
+ 'open' => '**',
+ 'close' => '**',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_italic'],
+ 'icon' => 'italic.png',
+ 'key' => 'i',
+ 'open' => '//',
+ 'close' => '//',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_underl'],
+ 'icon' => 'underline.png',
+ 'key' => 'u',
+ 'open' => '__',
+ 'close' => '__',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_code'],
+ 'icon' => 'mono.png',
+ 'key' => 'c',
+ 'open' => "''",
+ 'close' => "''",
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_strike'],
+ 'icon' => 'strike.png',
+ 'key' => 'd',
+ 'open' => '<del>',
+ 'close' => '</del>',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_h1'],
+ 'icon' => 'h1.png',
+ 'key' => '1',
+ 'open' => '====== ',
+ 'close' => ' ======\n',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_h2'],
+ 'icon' => 'h2.png',
+ 'key' => '2',
+ 'open' => '===== ',
+ 'close' => ' =====\n',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_h3'],
+ 'icon' => 'h3.png',
+ 'key' => '3',
+ 'open' => '==== ',
+ 'close' => ' ====\n',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_h4'],
+ 'icon' => 'h4.png',
+ 'key' => '4',
+ 'open' => '=== ',
+ 'close' => ' ===\n',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_h5'],
+ 'icon' => 'h5.png',
+ 'key' => '5',
+ 'open' => '== ',
+ 'close' => ' ==\n',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_link'],
+ 'icon' => 'link.png',
+ 'key' => 'l',
+ 'open' => '[[',
+ 'close' => ']]',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_extlink'],
+ 'icon' => 'linkextern.png',
+ 'open' => '[[',
+ 'close' => ']]',
+ 'sample' => 'http://example.com|'.$lang['qb_extlink'],
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_ol'],
+ 'icon' => 'ol.png',
+ 'open' => ' - ',
+ 'close' => '\n',
+ ),
+ array(
+ 'type' => 'format',
+ 'title' => $lang['qb_ul'],
+ 'icon' => 'ul.png',
+ 'open' => ' * ',
+ 'close' => '\n',
+ ),
+ array(
+ 'type' => 'insert',
+ 'title' => $lang['qb_hr'],
+ 'icon' => 'hr.png',
+ 'insert' => '----\n',
+ ),
+ array(
+ 'type' => 'mediapopup',
+ 'title' => $lang['qb_media'],
+ 'icon' => 'image.png',
+ 'url' => DOKU_BASE.'lib/exe/mediamanager.php?ns=',
+ 'name' => 'mediaselect',
+ 'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes',
+ ),
+ array(
+ 'type' => 'picker',
+ 'title' => $lang['qb_smileys'],
+ 'icon' => 'smiley.png',
+ 'list' => getSmileys(),
+ 'icobase'=> 'smileys',
+ ),
+ array(
+ 'type' => 'picker',
+ 'title' => $lang['qb_chars'],
+ 'icon' => 'chars.png',
+ 'list' => explode(' ','à à à á à â à ã à ä Ç Ç Ä Ä Ã
Ã¥ Ä Ä Ä Ä
à æ Ä Ä Ã Ã§ Ä Ä Ä Ä Ä Ä Ã Ä Ã° Ä Ä Ã Ã¨ à é à ê à ë Ä Ä Ä Ä Ä Ä Ä Ä Ä¢ Ä£ Ä Ä Ä Ä Ä Ä¡ Ĥ Ä¥ à ì à à à î à ï Ç Ç Äª Ä« İ ı Ä® į Ä´ ĵ Ķ Ä· Ĺ ĺ Ä» ļ Ľ ľ Å Å Ä¿ ŠŠŠà ñ Å
ŠŠŠà ò à ó à ô à õ à ö Ç Ç Å Å Å Å Å Å Ã Ã¸ Å Å Å Å Å Å Å Å Å Å Å Å¡ ŠŠŢ Å£ Ť Å¥ à ù à ú à û à ü Ç Ç Å¬ ŠŪ Å« Å® ů Ç Ç Ç Ç Å² ų Ű ű Å´ ŵ à ý Ÿ ÿ Ŷ Å· Ź ź Ž ž Å» ż à þ à Ħ ħ ¿ ¡ ¢ £ ¤ Â¥ ⬠¦ § ª ¬ ¯ ° ± ÷ Ⱐ¼ ½ ¾ ¹ ² ³ µ ¶ â ⡠· ⢠º â â â Æ É â
â â â â â â â¾ â â â â â â ⧠⨠⩠⪠⫠ⴠ⼠â
â â ⡠⤠⥠â â â â â â â ⥠â
â â â â âµ â ⣠⥠⦠α β Πγ Πδ ε ζ η Πθ ι κ Πλ μ Πξ Î Ï Ï Î£ Ï Î¤ Ï Ï
Φ Ï Ï Î¨ Ï Î© Ï â
â â â
â â â â â ⹠⺠â â à â â â â â â « » ⹠⺠â â ⦠â â â â â â â â â â © ⢠® â² â³'),
+ ),
+ array(
+ 'type' => 'signature',
+ 'title' => $lang['qb_sig'],
+ 'icon' => 'sig.png',
+ 'key' => 'y',
+ ),
+ ));
+ } // end event TOOLBAR_DEFINE default action
+ $evt->advise_after();
+ unset($evt);
+
+ // use JSON to build the JavaScript array
+ $json = new JSON();
+ print "var $varname = ".$json->encode($menu).";\n";
+}
+
+/**
+ * prepares the signature string as configured in the config
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function toolbar_signature(){
+ global $conf;
+ global $INFO;
+
+ $sig = $conf['signature'];
+ $sig = strftime($sig);
+ $sig = str_replace('@USER@',$_SERVER['REMOTE_USER'],$sig);
+ $sig = str_replace('@NAME@',$INFO['userinfo']['name'],$sig);
+ $sig = str_replace('@MAIL@',$INFO['userinfo']['mail'],$sig);
+ $sig = str_replace('@DATE@',strftime($conf['dformat']),$sig);
+ $sig = str_replace('\\\\n','\\n',addslashes($sig));
+ return $sig;
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/inc/utf8.php
===================================================================
--- site/trunk/www-root/wiki/inc/utf8.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/inc/utf8.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,1336 +1,1507 @@
-<?php
-/**
- * UTF8 helper functions
- *
- * @license LGPL (http://www.gnu.org/copyleft/lesser.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-/**
- * check for mb_string support
- */
-if(!defined('UTF8_MBSTRING')){
- if(function_exists('mb_substr') && !defined('UTF8_NOMBSTRING')){
- define('UTF8_MBSTRING',1);
- }else{
- define('UTF8_MBSTRING',0);
- }
-}
-
-if(UTF8_MBSTRING){ mb_internal_encoding('UTF-8'); }
-
-
-/**
- * URL-Encode a filename to allow unicodecharacters
- *
- * Slashes are not encoded
- *
- * When the second parameter is true the string will
- * be encoded only if non ASCII characters are detected -
- * This makes it safe to run it multiple times on the
- * same string (default is true)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see urlencode
- */
-function utf8_encodeFN($file,$safe=true){
- if($safe && preg_match('#^[a-zA-Z0-9/_\-.%]+$#',$file)){
- return $file;
- }
- $file = urlencode($file);
- $file = str_replace('%2F','/',$file);
- return $file;
-}
-
-/**
- * URL-Decode a filename
- *
- * This is just a wrapper around urldecode
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see urldecode
- */
-function utf8_decodeFN($file){
- $file = urldecode($file);
- return $file;
-}
-
-/**
- * Checks if a string contains 7bit ASCII only
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function utf8_isASCII($str){
- for($i=0; $i<strlen($str); $i++){
- if(ord($str{$i}) >127) return false;
- }
- return true;
-}
-
-/**
- * Strips all highbyte chars
- *
- * Returns a pure ASCII7 string
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function utf8_strip($str){
- $ascii = '';
- for($i=0; $i<strlen($str); $i++){
- if(ord($str{$i}) <128){
- $ascii .= $str{$i};
- }
- }
- return $ascii;
-}
-
-/**
- * Tries to detect if a string is in Unicode encoding
- *
- * @author <bmorel at ssi.fr>
- * @link http://www.php.net/manual/en/function.utf8-encode.php
- */
-function utf8_check($Str) {
- for ($i=0; $i<strlen($Str); $i++) {
- $b = ord($Str[$i]);
- if ($b < 0x80) continue; # 0bbbbbbb
- elseif (($b & 0xE0) == 0xC0) $n=1; # 110bbbbb
- elseif (($b & 0xF0) == 0xE0) $n=2; # 1110bbbb
- elseif (($b & 0xF8) == 0xF0) $n=3; # 11110bbb
- elseif (($b & 0xFC) == 0xF8) $n=4; # 111110bb
- elseif (($b & 0xFE) == 0xFC) $n=5; # 1111110b
- else return false; # Does not match any model
- for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
- if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
- return false;
- }
- }
- return true;
-}
-
-/**
- * Unicode aware replacement for strlen()
- *
- * utf8_decode() converts characters that are not in ISO-8859-1
- * to '?', which, for the purpose of counting, is alright - It's
- * even faster than mb_strlen.
- *
- * @author <chernyshevsky at hotmail dot com>
- * @see strlen()
- * @see utf8_decode()
- */
-function utf8_strlen($string){
- return strlen(utf8_decode($string));
-}
-
-/**
- * UTF-8 aware alternative to substr
- *
- * Return part of a string given character offset (and optionally length)
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @author Chris Smith <chris at jalakai.co.uk>
- * @param string
- * @param integer number of UTF-8 characters offset (from left)
- * @param integer (optional) length in UTF-8 characters from offset
- * @return mixed string or false if failure
- */
-function utf8_substr($str, $offset, $length = null) {
- if(UTF8_MBSTRING){
- if( $length === null ){
- return mb_substr($str, $offset);
- }else{
- return mb_substr($str, $offset, $length);
- }
- }
-
- /*
- * Notes:
- *
- * no mb string support, so we'll use pcre regex's with 'u' flag
- * pcre only supports repetitions of less than 65536, in order to accept up to MAXINT values for
- * offset and length, we'll repeat a group of 65535 characters when needed (ok, up to MAXINT-65536)
- *
- * substr documentation states false can be returned in some cases (e.g. offset > string length)
- * mb_substr never returns false, it will return an empty string instead.
- *
- * calculating the number of characters in the string is a relatively expensive operation, so
- * we only carry it out when necessary. It isn't necessary for +ve offsets and no specified length
- */
-
- // cast parameters to appropriate types to avoid multiple notices/warnings
- $str = (string)$str; // generates E_NOTICE for PHP4 objects, but not PHP5 objects
- $offset = (int)$offset;
- if (!is_null($length)) $length = (int)$length;
-
- // handle trivial cases
- if ($length === 0) return '';
- if ($offset < 0 && $length < 0 && $length < $offset) return '';
-
- $offset_pattern = '';
- $length_pattern = '';
-
- // normalise -ve offsets (we could use a tail anchored pattern, but they are horribly slow!)
- if ($offset < 0) {
- $strlen = strlen(utf8_decode($str)); // see notes
- $offset = $strlen + $offset;
- if ($offset < 0) $offset = 0;
- }
-
- // establish a pattern for offset, a non-captured group equal in length to offset
- if ($offset > 0) {
- $Ox = (int)($offset/65535);
- $Oy = $offset%65535;
-
- if ($Ox) $offset_pattern = '(?:.{65535}){'.$Ox.'}';
- $offset_pattern = '^(?:'.$offset_pattern.'.{'.$Oy.'})';
- } else {
- $offset_pattern = '^'; // offset == 0; just anchor the pattern
- }
-
- // establish a pattern for length
- if (is_null($length)) {
- $length_pattern = '(.*)$'; // the rest of the string
- } else {
-
- if (!isset($strlen)) $strlen = strlen(utf8_decode($str)); // see notes
- if ($offset > $strlen) return ''; // another trivial case
-
- if ($length > 0) {
-
- $length = min($strlen-$offset, $length); // reduce any length that would go passed the end of the string
-
- $Lx = (int)($length/65535);
- $Ly = $length%65535;
-
- // +ve length requires ... a captured group of length characters
- if ($Lx) $length_pattern = '(?:.{65535}){'.$Lx.'}';
- $length_pattern = '('.$length_pattern.'.{'.$Ly.'})';
-
- } else if ($length < 0) {
-
- if ($length < ($offset - $strlen)) return '';
-
- $Lx = (int)((-$length)/65535);
- $Ly = (-$length)%65535;
-
- // -ve length requires ... capture everything except a group of -length characters
- // anchored at the tail-end of the string
- if ($Lx) $length_pattern = '(?:.{65535}){'.$Lx.'}';
- $length_pattern = '(.*)(?:'.$length_pattern.'.{'.$Ly.'})$';
- }
- }
-
- if (!preg_match('#'.$offset_pattern.$length_pattern.'#us',$str,$match)) return '';
- return $match[1];
-}
-
-/**
- * Unicode aware replacement for substr_replace()
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see substr_replace()
- */
-function utf8_substr_replace($string, $replacement, $start , $length=0 ){
- $ret = '';
- if($start>0) $ret .= utf8_substr($string, 0, $start);
- $ret .= $replacement;
- $ret .= utf8_substr($string, $start+$length);
- return $ret;
-}
-
-/**
- * Unicode aware replacement for ltrim()
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see ltrim()
- * @return string
- */
-function utf8_ltrim($str,$charlist=''){
- if($charlist == '') return ltrim($str);
-
- //quote charlist for use in a characterclass
- $charlist = preg_replace('!([\\\\\\-\\]\\[/])!','\\\${1}',$charlist);
-
- return preg_replace('/^['.$charlist.']+/u','',$str);
-}
-
-/**
- * Unicode aware replacement for rtrim()
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see rtrim()
- * @return string
- */
-function utf8_rtrim($str,$charlist=''){
- if($charlist == '') return rtrim($str);
-
- //quote charlist for use in a characterclass
- $charlist = preg_replace('!([\\\\\\-\\]\\[/])!','\\\${1}',$charlist);
-
- return preg_replace('/['.$charlist.']+$/u','',$str);
-}
-
-/**
- * Unicode aware replacement for trim()
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see trim()
- * @return string
- */
-function utf8_trim($str,$charlist='') {
- if($charlist == '') return trim($str);
-
- return utf8_ltrim(utf8_rtrim($str,$charlist),$charlist);
-}
-
-
-/**
- * This is a unicode aware replacement for strtolower()
- *
- * Uses mb_string extension if available
- *
- * @author Leo Feyer <leo at typolight.org>
- * @see strtolower()
- * @see utf8_strtoupper()
- */
-function utf8_strtolower($string){
- if(UTF8_MBSTRING) return mb_strtolower($string,'utf-8');
-
- global $UTF8_UPPER_TO_LOWER;
- return strtr($string,$UTF8_UPPER_TO_LOWER);
-}
-
-/**
- * This is a unicode aware replacement for strtoupper()
- *
- * Uses mb_string extension if available
- *
- * @author Leo Feyer <leo at typolight.org>
- * @see strtoupper()
- * @see utf8_strtoupper()
- */
-function utf8_strtoupper($string){
- if(UTF8_MBSTRING) return mb_strtoupper($string,'utf-8');
-
- global $UTF8_LOWER_TO_UPPER;
- return strtr($string,$UTF8_LOWER_TO_UPPER);
-}
-
-/**
- * Replace accented UTF-8 characters by unaccented ASCII-7 equivalents
- *
- * Use the optional parameter to just deaccent lower ($case = -1) or upper ($case = 1)
- * letters. Default is to deaccent both cases ($case = 0)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function utf8_deaccent($string,$case=0){
- if($case <= 0){
- global $UTF8_LOWER_ACCENTS;
- $string = strtr($string,$UTF8_LOWER_ACCENTS);
- }
- if($case >= 0){
- global $UTF8_UPPER_ACCENTS;
- $string = strtr($string,$UTF8_UPPER_ACCENTS);
- }
- return $string;
-}
-
-/**
- * Romanize a non-latin string
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function utf8_romanize($string){
- if(utf8_isASCII($string)) return $string; //nothing to do
-
- global $UTF8_ROMANIZATION;
- return strtr($string,$UTF8_ROMANIZATION);
-}
-
-/**
- * Removes special characters (nonalphanumeric) from a UTF-8 string
- *
- * This function adds the controlchars 0x00 to 0x19 to the array of
- * stripped chars (they are not included in $UTF8_SPECIAL_CHARS)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @param string $string The UTF8 string to strip of special chars
- * @param string $repl Replace special with this string
- * @param string $additional Additional chars to strip (used in regexp char class)
- */
-function utf8_stripspecials($string,$repl='',$additional=''){
- global $UTF8_SPECIAL_CHARS;
- global $UTF8_SPECIAL_CHARS2;
-
- static $specials = null;
- if(is_null($specials)){
-# $specials = preg_quote(unicode_to_utf8($UTF8_SPECIAL_CHARS), '/');
- $specials = preg_quote($UTF8_SPECIAL_CHARS2, '/');
- }
-
- return preg_replace('/['.$additional.'\x00-\x19'.$specials.']/u',$repl,$string);
-}
-
-/**
- * This is an Unicode aware replacement for strpos
- *
- * @author Leo Feyer <leo at typolight.org>
- * @see strpos()
- * @param string
- * @param string
- * @param integer
- * @return integer
- */
-function utf8_strpos($haystack, $needle, $offset=0){
- $comp = 0;
- $length = null;
-
- while (is_null($length) || $length < $offset) {
- $pos = strpos($haystack, $needle, $offset + $comp);
-
- if ($pos === false)
- return false;
-
- $length = utf8_strlen(substr($haystack, 0, $pos));
-
- if ($length < $offset)
- $comp = $pos - $length;
- }
-
- return $length;
-}
-
-
-/**
- * Encodes UTF-8 characters to HTML entities
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- * @author <vpribish at shopping dot com>
- * @link http://www.php.net/manual/en/function.utf8-decode.php
- */
-function utf8_tohtml ($str) {
- $ret = '';
- foreach (utf8_to_unicode($str) as $cp) {
- if ($cp < 0x80)
- $ret .= chr($cp);
- elseif ($cp < 0x100)
- $ret .= "&#$cp;";
- else
- $ret .= '&#x'.dechex($cp).';';
- }
- return $ret;
-}
-
-/**
- * Decodes HTML entities to UTF-8 characters
- *
- * Convert any &#..; entity to a codepoint,
- * The entities flag defaults to only decoding numeric entities.
- * Pass HTML_ENTITIES and named entities, including & < etc.
- * are handled as well. Avoids the problem that would occur if you
- * had to decode "&&#38;"
- *
- * unhtmlspecialchars(utf8_unhtml($s)) -> "&&"
- * utf8_unhtml(unhtmlspecialchars($s)) -> "&&#38;"
- * what it should be -> "&&#38;"
- *
- * @author Tom N Harris <tnharris at whoopdedo.org>
- * @param string $str UTF-8 encoded string
- * @param boolean $entities Flag controlling decoding of named entities.
- * @return UTF-8 encoded string with numeric (and named) entities replaced.
- */
-function utf8_unhtml($str, $entities=null) {
- static $decoder = null;
- if (is_null($decoder))
- $decoder = new utf8_entity_decoder();
- if (is_null($entities))
- return preg_replace_callback('/(&#([Xx])?([0-9A-Za-z]+);)/m',
- 'utf8_decode_numeric', $str);
- else
- return preg_replace_callback('/&(#)?([Xx])?([0-9A-Za-z]+);/m',
- array(&$decoder, 'decode'), $str);
-}
-function utf8_decode_numeric($ent) {
- switch ($ent[2]) {
- case 'X':
- case 'x':
- $cp = hexdec($ent[3]);
- break;
- default:
- $cp = intval($ent[3]);
- break;
- }
- return unicode_to_utf8(array($cp));
-}
-class utf8_entity_decoder {
- var $table;
- function utf8_entity_decoder() {
- $table = get_html_translation_table(HTML_ENTITIES);
- $table = array_flip($table);
- $this->table = array_map(array(&$this,'makeutf8'), $table);
- }
- function makeutf8($c) {
- return unicode_to_utf8(array(ord($c)));
- }
- function decode($ent) {
- if ($ent[1] == '#') {
- return utf8_decode_numeric($ent);
- } elseif (array_key_exists($ent[0],$this->table)) {
- return $this->table[$ent[0]];
- } else {
- return $ent[0];
- }
- }
-}
-
-/**
- * Takes an UTF-8 string and returns an array of ints representing the
- * Unicode characters. Astral planes are supported ie. the ints in the
- * output can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates
- * are not allowed.
- *
- * If $strict is set to true the function returns false if the input
- * string isn't a valid UTF-8 octet sequence and raises a PHP error at
- * level E_USER_WARNING
- *
- * Note: this function has been modified slightly in this library to
- * trigger errors on encountering bad bytes
- *
- * @author <hsivonen at iki.fi>
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @param string UTF-8 encoded string
- * @param boolean Check for invalid sequences?
- * @return mixed array of unicode code points or false if UTF-8 invalid
- * @see unicode_to_utf8
- * @link http://hsivonen.iki.fi/php-utf8/
- * @link http://sourceforge.net/projects/phputf8/
- */
-function utf8_to_unicode($str,$strict=false) {
- $mState = 0; // cached expected number of octets after the current octet
- // until the beginning of the next UTF8 character sequence
- $mUcs4 = 0; // cached Unicode character
- $mBytes = 1; // cached expected number of octets in the current sequence
-
- $out = array();
-
- $len = strlen($str);
-
- for($i = 0; $i < $len; $i++) {
-
- $in = ord($str{$i});
-
- if ( $mState == 0) {
-
- // When mState is zero we expect either a US-ASCII character or a
- // multi-octet sequence.
- if (0 == (0x80 & ($in))) {
- // US-ASCII, pass straight through.
- $out[] = $in;
- $mBytes = 1;
-
- } else if (0xC0 == (0xE0 & ($in))) {
- // First octet of 2 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x1F) << 6;
- $mState = 1;
- $mBytes = 2;
-
- } else if (0xE0 == (0xF0 & ($in))) {
- // First octet of 3 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x0F) << 12;
- $mState = 2;
- $mBytes = 3;
-
- } else if (0xF0 == (0xF8 & ($in))) {
- // First octet of 4 octet sequence
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x07) << 18;
- $mState = 3;
- $mBytes = 4;
-
- } else if (0xF8 == (0xFC & ($in))) {
- /* First octet of 5 octet sequence.
- *
- * This is illegal because the encoded codepoint must be either
- * (a) not the shortest form or
- * (b) outside the Unicode range of 0-0x10FFFF.
- * Rather than trying to resynchronize, we will carry on until the end
- * of the sequence and let the later error handling code catch it.
- */
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 0x03) << 24;
- $mState = 4;
- $mBytes = 5;
-
- } else if (0xFC == (0xFE & ($in))) {
- // First octet of 6 octet sequence, see comments for 5 octet sequence.
- $mUcs4 = ($in);
- $mUcs4 = ($mUcs4 & 1) << 30;
- $mState = 5;
- $mBytes = 6;
-
- } elseif($strict) {
- /* Current octet is neither in the US-ASCII range nor a legal first
- * octet of a multi-octet sequence.
- */
- trigger_error(
- 'utf8_to_unicode: Illegal sequence identifier '.
- 'in UTF-8 at byte '.$i,
- E_USER_WARNING
- );
- return false;
-
- }
-
- } else {
-
- // When mState is non-zero, we expect a continuation of the multi-octet
- // sequence
- if (0x80 == (0xC0 & ($in))) {
-
- // Legal continuation.
- $shift = ($mState - 1) * 6;
- $tmp = $in;
- $tmp = ($tmp & 0x0000003F) << $shift;
- $mUcs4 |= $tmp;
-
- /**
- * End of the multi-octet sequence. mUcs4 now contains the final
- * Unicode codepoint to be output
- */
- if (0 == --$mState) {
-
- /*
- * Check for illegal sequences and codepoints.
- */
- // From Unicode 3.1, non-shortest form is illegal
- if (((2 == $mBytes) && ($mUcs4 < 0x0080)) ||
- ((3 == $mBytes) && ($mUcs4 < 0x0800)) ||
- ((4 == $mBytes) && ($mUcs4 < 0x10000)) ||
- (4 < $mBytes) ||
- // From Unicode 3.2, surrogate characters are illegal
- (($mUcs4 & 0xFFFFF800) == 0xD800) ||
- // Codepoints outside the Unicode range are illegal
- ($mUcs4 > 0x10FFFF)) {
-
- if($strict){
- trigger_error(
- 'utf8_to_unicode: Illegal sequence or codepoint '.
- 'in UTF-8 at byte '.$i,
- E_USER_WARNING
- );
-
- return false;
- }
-
- }
-
- if (0xFEFF != $mUcs4) {
- // BOM is legal but we don't want to output it
- $out[] = $mUcs4;
- }
-
- //initialize UTF8 cache
- $mState = 0;
- $mUcs4 = 0;
- $mBytes = 1;
- }
-
- } elseif($strict) {
- /**
- *((0xC0 & (*in) != 0x80) && (mState != 0))
- * Incomplete multi-octet sequence.
- */
- trigger_error(
- 'utf8_to_unicode: Incomplete multi-octet '.
- ' sequence in UTF-8 at byte '.$i,
- E_USER_WARNING
- );
-
- return false;
- }
- }
- }
- return $out;
-}
-
-/**
- * Takes an array of ints representing the Unicode characters and returns
- * a UTF-8 string. Astral planes are supported ie. the ints in the
- * input can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates
- * are not allowed.
- *
- * If $strict is set to true the function returns false if the input
- * array contains ints that represent surrogates or are outside the
- * Unicode range and raises a PHP error at level E_USER_WARNING
- *
- * Note: this function has been modified slightly in this library to use
- * output buffering to concatenate the UTF-8 string (faster) as well as
- * reference the array by it's keys
- *
- * @param array of unicode code points representing a string
- * @param boolean Check for invalid sequences?
- * @return mixed UTF-8 string or false if array contains invalid code points
- * @author <hsivonen at iki.fi>
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @see utf8_to_unicode
- * @link http://hsivonen.iki.fi/php-utf8/
- * @link http://sourceforge.net/projects/phputf8/
- */
-function unicode_to_utf8($arr,$strict=false) {
- if (!is_array($arr)) return '';
- ob_start();
-
- foreach (array_keys($arr) as $k) {
-
- # ASCII range (including control chars)
- if ( ($arr[$k] >= 0) && ($arr[$k] <= 0x007f) ) {
-
- echo chr($arr[$k]);
-
- # 2 byte sequence
- } else if ($arr[$k] <= 0x07ff) {
-
- echo chr(0xc0 | ($arr[$k] >> 6));
- echo chr(0x80 | ($arr[$k] & 0x003f));
-
- # Byte order mark (skip)
- } else if($arr[$k] == 0xFEFF) {
-
- // nop -- zap the BOM
-
- # Test for illegal surrogates
- } else if ($arr[$k] >= 0xD800 && $arr[$k] <= 0xDFFF) {
-
- // found a surrogate
- if($strict){
- trigger_error(
- 'unicode_to_utf8: Illegal surrogate '.
- 'at index: '.$k.', value: '.$arr[$k],
- E_USER_WARNING
- );
- return false;
- }
-
- # 3 byte sequence
- } else if ($arr[$k] <= 0xffff) {
-
- echo chr(0xe0 | ($arr[$k] >> 12));
- echo chr(0x80 | (($arr[$k] >> 6) & 0x003f));
- echo chr(0x80 | ($arr[$k] & 0x003f));
-
- # 4 byte sequence
- } else if ($arr[$k] <= 0x10ffff) {
-
- echo chr(0xf0 | ($arr[$k] >> 18));
- echo chr(0x80 | (($arr[$k] >> 12) & 0x3f));
- echo chr(0x80 | (($arr[$k] >> 6) & 0x3f));
- echo chr(0x80 | ($arr[$k] & 0x3f));
-
- } elseif($strict) {
-
- trigger_error(
- 'unicode_to_utf8: Codepoint out of Unicode range '.
- 'at index: '.$k.', value: '.$arr[$k],
- E_USER_WARNING
- );
-
- // out of range
- return false;
- }
- }
-
- $result = ob_get_contents();
- ob_end_clean();
- return $result;
-}
-
-/**
- * UTF-8 to UTF-16BE conversion.
- *
- * Maybe really UCS-2 without mb_string due to utf8_to_unicode limits
- */
-function utf8_to_utf16be(&$str, $bom = false) {
- $out = $bom ? "\xFE\xFF" : '';
- if(UTF8_MBSTRING) return $out.mb_convert_encoding($str,'UTF-16BE','UTF-8');
-
- $uni = utf8_to_unicode($str);
- foreach($uni as $cp){
- $out .= pack('n',$cp);
- }
- return $out;
-}
-
-/**
- * UTF-8 to UTF-16BE conversion.
- *
- * Maybe really UCS-2 without mb_string due to utf8_to_unicode limits
- */
-function utf16be_to_utf8(&$str) {
- $uni = unpack('n*',$str);
- return unicode_to_utf8($uni);
-}
-
-/**
- * Replace bad bytes with an alternative character
- *
- * ASCII character is recommended for replacement char
- *
- * PCRE Pattern to locate bad bytes in a UTF-8 string
- * Comes from W3 FAQ: Multilingual Forms
- * Note: modified to include full ASCII range including control chars
- *
- * @author Harry Fuecks <hfuecks at gmail.com>
- * @see http://www.w3.org/International/questions/qa-forms-utf-8
- * @param string to search
- * @param string to replace bad bytes with (defaults to '?') - use ASCII
- * @return string
- */
-function utf8_bad_replace($str, $replace = '') {
- $UTF8_BAD =
- '([\x00-\x7F]'. # ASCII (including control chars)
- '|[\xC2-\xDF][\x80-\xBF]'. # non-overlong 2-byte
- '|\xE0[\xA0-\xBF][\x80-\xBF]'. # excluding overlongs
- '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'. # straight 3-byte
- '|\xED[\x80-\x9F][\x80-\xBF]'. # excluding surrogates
- '|\xF0[\x90-\xBF][\x80-\xBF]{2}'. # planes 1-3
- '|[\xF1-\xF3][\x80-\xBF]{3}'. # planes 4-15
- '|\xF4[\x80-\x8F][\x80-\xBF]{2}'. # plane 16
- '|(.{1}))'; # invalid byte
- ob_start();
- while (preg_match('/'.$UTF8_BAD.'/S', $str, $matches)) {
- if ( !isset($matches[2])) {
- echo $matches[0];
- } else {
- echo $replace;
- }
- $str = substr($str,strlen($matches[0]));
- }
- $result = ob_get_contents();
- ob_end_clean();
- return $result;
-}
-
-/**
- * adjust a byte index into a utf8 string to a utf8 character boundary
- *
- * @param $str string utf8 character string
- * @param $i int byte index into $str
- * @param $next bool direction to search for boundary,
- * false = up (current character)
- * true = down (next character)
- *
- * @return int byte index into $str now pointing to a utf8 character boundary
- *
- * @author chris smith <chris at jalakai.co.uk>
- */
-function utf8_correctIdx(&$str,$i,$next=false) {
-
- if ($i <= 0) return 0;
-
- $limit = strlen($str);
- if ($i>=$limit) return $limit;
-
- if ($next) {
- while (($i<$limit) && ((ord($str[$i]) & 0xC0) == 0x80)) $i++;
- } else {
- while ($i && ((ord($str[$i]) & 0xC0) == 0x80)) $i--;
- }
-
- return $i;
-}
-
-// only needed if no mb_string available
-if(!UTF8_MBSTRING){
- /**
- * UTF-8 Case lookup table
- *
- * This lookuptable defines the upper case letters to their correspponding
- * lower case letter in UTF-8
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- global $UTF8_LOWER_TO_UPPER;
- $UTF8_LOWER_TO_UPPER = array(
- "ï½"=>"Z","ï½"=>"ï¼¹","ï½"=>"X","ï½"=>"ï¼·","ï½"=>"ï¼¶","ï½"=>"ï¼µ","ï½"=>"ï¼´","ï½"=>"ï¼³","ï½"=>"ï¼²","ï½"=>"ï¼±",
- "ï½"=>"ï¼°","ï½"=>"O","ï½"=>"ï¼®","ï½"=>"ï¼","ï½"=>"L","ï½"=>"K","ï½"=>"J","ï½"=>"I","ï½"=>"H","ï½"=>"ï¼§",
- "ï½"=>"F","ï½
"=>"ï¼¥","ï½"=>"D","ï½"=>"ï¼£","ï½"=>"ï¼¢","ï½"=>"A","ῳ"=>"ῼ","á¿¥"=>"Ῥ","á¿¡"=>"á¿©","á¿"=>"á¿",
- "á¿"=>"á¿","á¿"=>"á¿","á¾¾"=>"Î","á¾³"=>"á¾¼","á¾±"=>"á¾¹","á¾°"=>"Ᾰ","á¾§"=>"ᾯ","ᾦ"=>"á¾®","á¾¥"=>"á¾","ᾤ"=>"ᾬ",
- "á¾£"=>"ᾫ","á¾¢"=>"ᾪ","ᾡ"=>"ᾩ","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾",
- "á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾
"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á½½"=>"á¿»",
- "á½¼"=>"Ὼ","á½»"=>"á¿«","ὺ"=>"Ὺ","á½¹"=>"Ό","ὸ"=>"Ὸ","á½·"=>"á¿","á½¶"=>"á¿","á½µ"=>"á¿","á½´"=>"á¿","á½³"=>"á¿",
- "á½²"=>"á¿","á½±"=>"á¾»","á½°"=>"Ὰ","á½§"=>"Ὧ","ὦ"=>"á½®","á½¥"=>"á½","ὤ"=>"Ὤ","á½£"=>"Ὣ","á½¢"=>"Ὢ","ὡ"=>"Ὡ",
- "á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½
"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½",
- "ἷ"=>"Ἷ","ἶ"=>"Ἶ","ἵ"=>"Ἵ","ἴ"=>"Ἴ","ἳ"=>"Ἳ","ἲ"=>"Ἲ","ἱ"=>"Ἱ","ἰ"=>"Ἰ","ἧ"=>"Ἧ","ἦ"=>"Ἦ",
- "á¼¥"=>"á¼","ἤ"=>"Ἤ","á¼£"=>"Ἣ","á¼¢"=>"Ἢ","ἡ"=>"Ἡ","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼",
- "á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼
"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","ỹ"=>"Ỹ",
- "á»·"=>"á»¶","ỵ"=>"á»´","ỳ"=>"Ỳ","á»±"=>"á»°","ữ"=>"á»®","á»"=>"Ử","ừ"=>"Ừ","ứ"=>"Ứ","á»§"=>"Ủ","ụ"=>"Ụ",
- "ợ"=>"Ợ","ỡ"=>"á» ","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»",
- "á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»
"=>"á»","á»"=>"á»","á»"=>"á»","ế"=>"Ế","ẽ"=>"Ẽ",
- "ẻ"=>"Ẻ","ẹ"=>"Ẹ","ặ"=>"Ặ","ẵ"=>"Ẵ","ẳ"=>"Ẳ","ằ"=>"Ằ","ắ"=>"Ắ","áº"=>"Ậ","ẫ"=>"Ẫ","ẩ"=>"Ẩ",
- "ầ"=>"Ầ","ấ"=>"Ấ","ả"=>"Ả","ạ"=>"Ạ","áº"=>"á¹ ","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº",
- "áº"=>"áº","áº"=>"áº","áº"=>"áº","áº
"=>"áº","áº"=>"áº","áº"=>"áº","ṿ"=>"á¹¾","á¹½"=>"á¹¼","á¹»"=>"Ṻ","á¹¹"=>"Ṹ",
- "á¹·"=>"á¹¶","á¹µ"=>"á¹´","á¹³"=>"á¹²","á¹±"=>"á¹°","ṯ"=>"á¹®","á¹"=>"Ṭ","ṫ"=>"Ṫ","ṩ"=>"Ṩ","á¹§"=>"Ṧ","á¹¥"=>"Ṥ",
- "á¹£"=>"á¹¢","ṡ"=>"á¹ ","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹",
- "á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹
"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","ḿ"=>"Ḿ","ḽ"=>"Ḽ",
- "ḻ"=>"Ḻ","ḹ"=>"Ḹ","ḷ"=>"Ḷ","ḵ"=>"Ḵ","ḳ"=>"Ḳ","ḱ"=>"Ḱ","ḯ"=>"Ḯ","á¸"=>"Ḭ","ḫ"=>"Ḫ","ḩ"=>"Ḩ",
- "ḧ"=>"Ḧ","ḥ"=>"Ḥ","ḣ"=>"Ḣ","ḡ"=>"Ḡ","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸",
- "á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸
"=>"á¸","á¸"=>"á¸","á¸"=>"á¸",
- "Ö"=>"Õ","Ö
"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Õ¿"=>"Õ","Õ¾"=>"Õ","Õ½"=>"Õ",
- "Õ¼"=>"Õ","Õ»"=>"Õ","Õº"=>"Õ","Õ¹"=>"Õ","Õ¸"=>"Õ","Õ·"=>"Õ","Õ¶"=>"Õ","Õµ"=>"Õ
","Õ´"=>"Õ","Õ³"=>"Õ",
- "Õ²"=>"Õ","Õ±"=>"Õ","Õ°"=>"Õ","Õ¯"=>"Ô¿","Õ®"=>"Ô¾","Õ"=>"Ô½","Õ¬"=>"Ô¼","Õ«"=>"Ô»","Õª"=>"Ôº","Õ©"=>"Ô¹",
- "Õ¨"=>"Ô¸","Õ§"=>"Ô·","Õ¦"=>"Ô¶","Õ¥"=>"Ôµ","Õ¤"=>"Ô´","Õ£"=>"Ô³","Õ¢"=>"Ô²","Õ¡"=>"Ô±","Ô"=>"Ô","Ô"=>"Ô",
- "Ô"=>"Ô","Ô"=>"Ô","Ô"=>"Ô","Ô
"=>"Ô","Ô"=>"Ô","Ô"=>"Ô","Ó¹"=>"Ó¸","Óµ"=>"Ó´","Ó³"=>"Ó²","Ó±"=>"Ó°",
- "Ó¯"=>"Ó®","Ó"=>"Ó¬","Ó«"=>"Óª","Ó©"=>"Ó¨","Ó§"=>"Ó¦","Ó¥"=>"Ó¤","Ó£"=>"Ó¢","Ó¡"=>"Ó ","Ó"=>"Ó","Ó"=>"Ó",
- "Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó",
- "Ó"=>"Ó
","Ó"=>"Ó","Ó"=>"Ó","Ò¿"=>"Ò¾","Ò½"=>"Ò¼","Ò»"=>"Òº","Ò¹"=>"Ò¸","Ò·"=>"Ò¶","Òµ"=>"Ò´","Ò³"=>"Ò²",
- "Ò±"=>"Ò°","Ò¯"=>"Ò®","Ò"=>"Ò¬","Ò«"=>"Òª","Ò©"=>"Ò¨","Ò§"=>"Ò¦","Ò¥"=>"Ò¤","Ò£"=>"Ò¢","Ò¡"=>"Ò ","Ò"=>"Ò",
- "Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò",
- "Ò"=>"Ò","Ñ¿"=>"Ѿ","ѽ"=>"Ѽ","Ñ»"=>"Ѻ","ѹ"=>"Ѹ","Ñ·"=>"Ѷ","ѵ"=>"Ñ´","ѳ"=>"Ѳ","ѱ"=>"Ѱ","ѯ"=>"Ñ®",
- "Ñ"=>"Ѭ","Ñ«"=>"Ѫ","Ñ©"=>"Ѩ","ѧ"=>"Ѧ","Ñ¥"=>"Ѥ","Ñ£"=>"Ñ¢","Ñ¡"=>"Ñ ","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð",
- "Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð
","Ñ"=>"Ð","Ñ"=>"Ð",
- "Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Я","Ñ"=>"Ю","Ñ"=>"Ð","Ñ"=>"Ь","Ñ"=>"Ы","Ñ"=>"Ъ","Ñ"=>"Щ",
- "Ñ"=>"Ш","Ñ"=>"Ч","Ñ"=>"Ц","Ñ
"=>"Ð¥","Ñ"=>"Ф","Ñ"=>"У","Ñ"=>"Т","Ñ"=>"С","Ñ"=>"Ð ","п"=>"Ð",
- "о"=>"Ð","н"=>"Ð","м"=>"Ð","л"=>"Ð","к"=>"Ð","й"=>"Ð","и"=>"Ð","з"=>"Ð","ж"=>"Ð","е"=>"Ð",
- "д"=>"Ð","г"=>"Ð","в"=>"Ð","б"=>"Ð","а"=>"Ð","ϵ"=>"Î","ϲ"=>"Σ","ϱ"=>"Ρ","ϰ"=>"Î","ϯ"=>"Ï®",
- "Ï"=>"Ϭ","Ï«"=>"Ϫ","Ï©"=>"Ϩ","ϧ"=>"Ϧ","Ï¥"=>"Ϥ","Ï£"=>"Ï¢","Ï¡"=>"Ï ","Ï"=>"Ï","Ï"=>"Ï","Ï"=>"Ï",
- "Ï"=>"Ï","Ï"=>"Î ","Ï"=>"Φ","Ï"=>"Î","Ï"=>"Î","Ï"=>"Î","Ï"=>"Î","Ï"=>"Î","Ï"=>"Ϋ","Ï"=>"Ϊ",
- "Ï"=>"Ω","Ï"=>"Ψ","Ï"=>"Χ","Ï"=>"Φ","Ï
"=>"Î¥","Ï"=>"Τ","Ï"=>"Σ","Ï"=>"Σ","Ï"=>"Ρ","Ï"=>"Î ",
- "ο"=>"Î","ξ"=>"Î","ν"=>"Î","μ"=>"Î","λ"=>"Î","κ"=>"Î","ι"=>"Î","θ"=>"Î","η"=>"Î","ζ"=>"Î",
- "ε"=>"Î","δ"=>"Î","γ"=>"Î","β"=>"Î","α"=>"Î","ί"=>"Î","ή"=>"Î","Î"=>"Î","ά"=>"Î","Ê"=>"Æ·",
- "Ê"=>"Ʋ","Ê"=>"Ʊ","Ê"=>"Æ®","Ê"=>"Æ©","Ê"=>"Ʀ","ɵ"=>"Æ","ɲ"=>"Æ","ɯ"=>"Æ","É©"=>"Æ","ɨ"=>"Æ",
- "É£"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","ȳ"=>"Ȳ","ȱ"=>"Ȱ","ȯ"=>"È®",
- "È"=>"Ȭ","È«"=>"Ȫ","È©"=>"Ȩ","ȧ"=>"Ȧ","È¥"=>"Ȥ","È£"=>"È¢","È"=>"È","È"=>"È","È"=>"È","È"=>"È",
- "È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È
"=>"È",
- "È"=>"È","È"=>"È","Ç¿"=>"Ǿ","ǽ"=>"Ǽ","Ç»"=>"Ǻ","ǹ"=>"Ǹ","ǵ"=>"Ç´","dz"=>"Dz","ǯ"=>"Ç®","Ç"=>"Ǭ",
- "Ç«"=>"Ǫ","Ç©"=>"Ǩ","ǧ"=>"Ǧ","Ç¥"=>"Ǥ","Ç£"=>"Ç¢","Ç¡"=>"Ç ","Ç"=>"Ç","Ç"=>"Æ","Ç"=>"Ç","Ç"=>"Ç",
- "Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç
","Æ¿"=>"Ç·",
- "ƽ"=>"Ƽ","ƹ"=>"Ƹ","ƶ"=>"Ƶ","Æ´"=>"Ƴ","ư"=>"Ư","Æ"=>"Ƭ","ƨ"=>"Ƨ","Æ¥"=>"Ƥ","Æ£"=>"Æ¢","Æ¡"=>"Æ ",
- "Æ"=>"È ","Æ"=>"Æ","Æ"=>"Ƕ","Æ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ","Æ
"=>"Æ","Æ"=>"Æ","Å¿"=>"S","ž"=>"Ž",
- "ż"=>"Å»","ź"=>"Ź","Å·"=>"Ŷ","ŵ"=>"Å´","ų"=>"Ų","ű"=>"Ű","ů"=>"Å®","Å"=>"Ŭ","Å«"=>"Ū","Å©"=>"Ũ",
- "ŧ"=>"Ŧ","Å¥"=>"Ť","Å£"=>"Å¢","Å¡"=>"Å ","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å",
- "Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å
","Å"=>"Å","Å"=>"Å","Å"=>"Ä¿",
- "ľ"=>"Ľ","ļ"=>"Ä»","ĺ"=>"Ĺ","Ä·"=>"Ķ","ĵ"=>"Ä´","ij"=>"IJ","ı"=>"I","į"=>"Ä®","Ä"=>"Ĭ","Ä«"=>"Ī",
- "Ä©"=>"Ĩ","ħ"=>"Ħ","Ä¥"=>"Ĥ","Ä£"=>"Ä¢","Ä¡"=>"Ä ","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä",
- "Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä
"=>"Ä","Ä"=>"Ä",
- "Ä"=>"Ä","ÿ"=>"Ÿ","þ"=>"Ã","ý"=>"Ã","ü"=>"Ã","û"=>"Ã","ú"=>"Ã","ù"=>"Ã","ø"=>"Ã","ö"=>"Ã",
- "õ"=>"Ã","ô"=>"Ã","ó"=>"Ã","ò"=>"Ã","ñ"=>"Ã","ð"=>"Ã","ï"=>"Ã","î"=>"Ã","Ã"=>"Ã","ì"=>"Ã",
- "ë"=>"Ã","ê"=>"Ã","é"=>"Ã","è"=>"Ã","ç"=>"Ã","æ"=>"Ã","Ã¥"=>"Ã
","ä"=>"Ã","ã"=>"Ã","â"=>"Ã",
- "á"=>"Ã","à "=>"Ã","µ"=>"Î","z"=>"Z","y"=>"Y","x"=>"X","w"=>"W","v"=>"V","u"=>"U","t"=>"T",
- "s"=>"S","r"=>"R","q"=>"Q","p"=>"P","o"=>"O","n"=>"N","m"=>"M","l"=>"L","k"=>"K","j"=>"J",
- "i"=>"I","h"=>"H","g"=>"G","f"=>"F","e"=>"E","d"=>"D","c"=>"C","b"=>"B","a"=>"A"
- );
-
- /**
- * UTF-8 Case lookup table
- *
- * This lookuptable defines the lower case letters to their correspponding
- * upper case letter in UTF-8
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- global $UTF8_UPPER_TO_LOWER;
- $UTF8_UPPER_TO_LOWER = array (
- "Z"=>"ï½","ï¼¹"=>"ï½","X"=>"ï½","ï¼·"=>"ï½","ï¼¶"=>"ï½","ï¼µ"=>"ï½","ï¼´"=>"ï½","ï¼³"=>"ï½","ï¼²"=>"ï½","ï¼±"=>"ï½",
- "ï¼°"=>"ï½","O"=>"ï½","ï¼®"=>"ï½","ï¼"=>"ï½","L"=>"ï½","K"=>"ï½","J"=>"ï½","I"=>"ï½","H"=>"ï½","ï¼§"=>"ï½",
- "F"=>"ï½","ï¼¥"=>"ï½
","D"=>"ï½","ï¼£"=>"ï½","ï¼¢"=>"ï½","A"=>"ï½","ῼ"=>"ῳ","Ῥ"=>"á¿¥","á¿©"=>"á¿¡","á¿"=>"á¿",
- "á¿"=>"á¿","á¿"=>"á¿","Î"=>"á¾¾","á¾¼"=>"á¾³","á¾¹"=>"á¾±","Ᾰ"=>"á¾°","ᾯ"=>"á¾§","á¾®"=>"ᾦ","á¾"=>"á¾¥","ᾬ"=>"ᾤ",
- "ᾫ"=>"á¾£","ᾪ"=>"á¾¢","ᾩ"=>"ᾡ","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾",
- "á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾
","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¿»"=>"á½½",
- "Ὼ"=>"á½¼","á¿«"=>"á½»","Ὺ"=>"ὺ","Ό"=>"á½¹","Ὸ"=>"ὸ","á¿"=>"á½·","á¿"=>"á½¶","á¿"=>"á½µ","á¿"=>"á½´","á¿"=>"á½³",
- "á¿"=>"á½²","á¾»"=>"á½±","Ὰ"=>"á½°","Ὧ"=>"á½§","á½®"=>"ὦ","á½"=>"á½¥","Ὤ"=>"ὤ","Ὣ"=>"á½£","Ὢ"=>"á½¢","Ὡ"=>"ὡ",
- "á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½
","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½",
- "Ἷ"=>"ἷ","Ἶ"=>"ἶ","Ἵ"=>"ἵ","Ἴ"=>"ἴ","Ἳ"=>"ἳ","Ἲ"=>"ἲ","Ἱ"=>"ἱ","Ἰ"=>"ἰ","Ἧ"=>"ἧ","Ἦ"=>"ἦ",
- "á¼"=>"á¼¥","Ἤ"=>"ἤ","Ἣ"=>"á¼£","Ἢ"=>"á¼¢","Ἡ"=>"ἡ","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼",
- "á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼
","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","Ỹ"=>"ỹ",
- "á»¶"=>"á»·","á»´"=>"ỵ","Ỳ"=>"ỳ","á»°"=>"á»±","á»®"=>"ữ","Ử"=>"á»","Ừ"=>"ừ","Ứ"=>"ứ","Ủ"=>"á»§","Ụ"=>"ụ",
- "Ợ"=>"ợ","á» "=>"ỡ","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»",
- "á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»
","á»"=>"á»","á»"=>"á»","Ế"=>"ế","Ẽ"=>"ẽ",
- "Ẻ"=>"ẻ","Ẹ"=>"ẹ","Ặ"=>"ặ","Ẵ"=>"ẵ","Ẳ"=>"ẳ","Ằ"=>"ằ","Ắ"=>"ắ","Ậ"=>"áº","Ẫ"=>"ẫ","Ẩ"=>"ẩ",
- "Ầ"=>"ầ","Ấ"=>"ấ","Ả"=>"ả","Ạ"=>"ạ","á¹ "=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº",
- "áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº
","áº"=>"áº","áº"=>"áº","á¹¾"=>"ṿ","á¹¼"=>"á¹½","Ṻ"=>"á¹»","Ṹ"=>"á¹¹",
- "á¹¶"=>"á¹·","á¹´"=>"á¹µ","á¹²"=>"á¹³","á¹°"=>"á¹±","á¹®"=>"ṯ","Ṭ"=>"á¹","Ṫ"=>"ṫ","Ṩ"=>"ṩ","Ṧ"=>"á¹§","Ṥ"=>"á¹¥",
- "á¹¢"=>"á¹£","á¹ "=>"ṡ","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹",
- "á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹
","á¹"=>"á¹","á¹"=>"á¹","Ḿ"=>"ḿ","Ḽ"=>"ḽ",
- "Ḻ"=>"ḻ","Ḹ"=>"ḹ","Ḷ"=>"ḷ","Ḵ"=>"ḵ","Ḳ"=>"ḳ","Ḱ"=>"ḱ","Ḯ"=>"ḯ","Ḭ"=>"á¸","Ḫ"=>"ḫ","Ḩ"=>"ḩ",
- "Ḧ"=>"ḧ","Ḥ"=>"ḥ","Ḣ"=>"ḣ","Ḡ"=>"ḡ","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸",
- "á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸
","á¸"=>"á¸","á¸"=>"á¸",
- "Õ"=>"Ö","Õ"=>"Ö
","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Õ¿","Õ"=>"Õ¾","Õ"=>"Õ½",
- "Õ"=>"Õ¼","Õ"=>"Õ»","Õ"=>"Õº","Õ"=>"Õ¹","Õ"=>"Õ¸","Õ"=>"Õ·","Õ"=>"Õ¶","Õ
"=>"Õµ","Õ"=>"Õ´","Õ"=>"Õ³",
- "Õ"=>"Õ²","Õ"=>"Õ±","Õ"=>"Õ°","Ô¿"=>"Õ¯","Ô¾"=>"Õ®","Ô½"=>"Õ","Ô¼"=>"Õ¬","Ô»"=>"Õ«","Ôº"=>"Õª","Ô¹"=>"Õ©",
- "Ô¸"=>"Õ¨","Ô·"=>"Õ§","Ô¶"=>"Õ¦","Ôµ"=>"Õ¥","Ô´"=>"Õ¤","Ô³"=>"Õ£","Ô²"=>"Õ¢","Ô±"=>"Õ¡","Ô"=>"Ô","Ô"=>"Ô",
- "Ô"=>"Ô","Ô"=>"Ô","Ô"=>"Ô","Ô"=>"Ô
","Ô"=>"Ô","Ô"=>"Ô","Ó¸"=>"Ó¹","Ó´"=>"Óµ","Ó²"=>"Ó³","Ó°"=>"Ó±",
- "Ó®"=>"Ó¯","Ó¬"=>"Ó","Óª"=>"Ó«","Ó¨"=>"Ó©","Ó¦"=>"Ó§","Ó¤"=>"Ó¥","Ó¢"=>"Ó£","Ó "=>"Ó¡","Ó"=>"Ó","Ó"=>"Ó",
- "Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó",
- "Ó
"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ò¾"=>"Ò¿","Ò¼"=>"Ò½","Òº"=>"Ò»","Ò¸"=>"Ò¹","Ò¶"=>"Ò·","Ò´"=>"Òµ","Ò²"=>"Ò³",
- "Ò°"=>"Ò±","Ò®"=>"Ò¯","Ò¬"=>"Ò","Òª"=>"Ò«","Ò¨"=>"Ò©","Ò¦"=>"Ò§","Ò¤"=>"Ò¥","Ò¢"=>"Ò£","Ò "=>"Ò¡","Ò"=>"Ò",
- "Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò",
- "Ò"=>"Ò","Ѿ"=>"Ñ¿","Ѽ"=>"ѽ","Ѻ"=>"Ñ»","Ѹ"=>"ѹ","Ѷ"=>"Ñ·","Ñ´"=>"ѵ","Ѳ"=>"ѳ","Ѱ"=>"ѱ","Ñ®"=>"ѯ",
- "Ѭ"=>"Ñ","Ѫ"=>"Ñ«","Ѩ"=>"Ñ©","Ѧ"=>"ѧ","Ѥ"=>"Ñ¥","Ñ¢"=>"Ñ£","Ñ "=>"Ñ¡","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ",
- "Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð
"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ",
- "Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Я"=>"Ñ","Ю"=>"Ñ","Ð"=>"Ñ","Ь"=>"Ñ","Ы"=>"Ñ","Ъ"=>"Ñ","Щ"=>"Ñ",
- "Ш"=>"Ñ","Ч"=>"Ñ","Ц"=>"Ñ","Ð¥"=>"Ñ
","Ф"=>"Ñ","У"=>"Ñ","Т"=>"Ñ","С"=>"Ñ","Ð "=>"Ñ","Ð"=>"п",
- "Ð"=>"о","Ð"=>"н","Ð"=>"м","Ð"=>"л","Ð"=>"к","Ð"=>"й","Ð"=>"и","Ð"=>"з","Ð"=>"ж","Ð"=>"е",
- "Ð"=>"д","Ð"=>"г","Ð"=>"в","Ð"=>"б","Ð"=>"а","Î"=>"ϵ","Σ"=>"ϲ","Ρ"=>"ϱ","Î"=>"ϰ","Ï®"=>"ϯ",
- "Ϭ"=>"Ï","Ϫ"=>"Ï«","Ϩ"=>"Ï©","Ϧ"=>"ϧ","Ϥ"=>"Ï¥","Ï¢"=>"Ï£","Ï "=>"Ï¡","Ï"=>"Ï","Ï"=>"Ï","Ï"=>"Ï",
- "Ï"=>"Ï","Î "=>"Ï","Φ"=>"Ï","Î"=>"Ï","Î"=>"Ï","Î"=>"Ï","Î"=>"Ï","Î"=>"Ï","Ϋ"=>"Ï","Ϊ"=>"Ï",
- "Ω"=>"Ï","Ψ"=>"Ï","Χ"=>"Ï","Φ"=>"Ï","Î¥"=>"Ï
","Τ"=>"Ï","Σ"=>"Ï","Σ"=>"Ï","Ρ"=>"Ï","Î "=>"Ï",
- "Î"=>"ο","Î"=>"ξ","Î"=>"ν","Î"=>"μ","Î"=>"λ","Î"=>"κ","Î"=>"ι","Î"=>"θ","Î"=>"η","Î"=>"ζ",
- "Î"=>"ε","Î"=>"δ","Î"=>"γ","Î"=>"β","Î"=>"α","Î"=>"ί","Î"=>"ή","Î"=>"Î","Î"=>"ά","Æ·"=>"Ê",
- "Ʋ"=>"Ê","Ʊ"=>"Ê","Æ®"=>"Ê","Æ©"=>"Ê","Ʀ"=>"Ê","Æ"=>"ɵ","Æ"=>"ɲ","Æ"=>"ɯ","Æ"=>"É©","Æ"=>"ɨ",
- "Æ"=>"É£","Æ"=>"É","Æ"=>"É","Æ"=>"É","Æ"=>"É","Æ"=>"É","Æ"=>"É","Ȳ"=>"ȳ","Ȱ"=>"ȱ","È®"=>"ȯ",
- "Ȭ"=>"È","Ȫ"=>"È«","Ȩ"=>"È©","Ȧ"=>"ȧ","Ȥ"=>"È¥","È¢"=>"È£","È"=>"È","È"=>"È","È"=>"È","È"=>"È",
- "È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È
",
- "È"=>"È","È"=>"È","Ǿ"=>"Ç¿","Ǽ"=>"ǽ","Ǻ"=>"Ç»","Ǹ"=>"ǹ","Ç´"=>"ǵ","Dz"=>"dz","Ç®"=>"ǯ","Ǭ"=>"Ç",
- "Ǫ"=>"Ç«","Ǩ"=>"Ç©","Ǧ"=>"ǧ","Ǥ"=>"Ç¥","Ç¢"=>"Ç£","Ç "=>"Ç¡","Ç"=>"Ç","Æ"=>"Ç","Ç"=>"Ç","Ç"=>"Ç",
- "Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç
"=>"Ç","Ç·"=>"Æ¿",
- "Ƽ"=>"ƽ","Ƹ"=>"ƹ","Ƶ"=>"ƶ","Ƴ"=>"Æ´","Ư"=>"ư","Ƭ"=>"Æ","Ƨ"=>"ƨ","Ƥ"=>"Æ¥","Æ¢"=>"Æ£","Æ "=>"Æ¡",
- "È "=>"Æ","Æ"=>"Æ","Ƕ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ
","Æ"=>"Æ","S"=>"Å¿","Ž"=>"ž",
- "Å»"=>"ż","Ź"=>"ź","Ŷ"=>"Å·","Å´"=>"ŵ","Ų"=>"ų","Ű"=>"ű","Å®"=>"ů","Ŭ"=>"Å","Ū"=>"Å«","Ũ"=>"Å©",
- "Ŧ"=>"ŧ","Ť"=>"Å¥","Å¢"=>"Å£","Å "=>"Å¡","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å",
- "Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å
"=>"Å","Å"=>"Å","Å"=>"Å","Ä¿"=>"Å",
- "Ľ"=>"ľ","Ä»"=>"ļ","Ĺ"=>"ĺ","Ķ"=>"Ä·","Ä´"=>"ĵ","IJ"=>"ij","I"=>"ı","Ä®"=>"į","Ĭ"=>"Ä","Ī"=>"Ä«",
- "Ĩ"=>"Ä©","Ħ"=>"ħ","Ĥ"=>"Ä¥","Ä¢"=>"Ä£","Ä "=>"Ä¡","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä",
- "Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä
","Ä"=>"Ä",
- "Ä"=>"Ä","Ÿ"=>"ÿ","Ã"=>"þ","Ã"=>"ý","Ã"=>"ü","Ã"=>"û","Ã"=>"ú","Ã"=>"ù","Ã"=>"ø","Ã"=>"ö",
- "Ã"=>"õ","Ã"=>"ô","Ã"=>"ó","Ã"=>"ò","Ã"=>"ñ","Ã"=>"ð","Ã"=>"ï","Ã"=>"î","Ã"=>"Ã","Ã"=>"ì",
- "Ã"=>"ë","Ã"=>"ê","Ã"=>"é","Ã"=>"è","Ã"=>"ç","Ã"=>"æ","Ã
"=>"Ã¥","Ã"=>"ä","Ã"=>"ã","Ã"=>"â",
- "Ã"=>"á","Ã"=>"à ","Î"=>"µ","Z"=>"z","Y"=>"y","X"=>"x","W"=>"w","V"=>"v","U"=>"u","T"=>"t",
- "S"=>"s","R"=>"r","Q"=>"q","P"=>"p","O"=>"o","N"=>"n","M"=>"m","L"=>"l","K"=>"k","J"=>"j",
- "I"=>"i","H"=>"h","G"=>"g","F"=>"f","E"=>"e","D"=>"d","C"=>"c","B"=>"b","A"=>"a"
- );
-}; // end of case lookup tables
-
-/**
- * UTF-8 lookup table for lower case accented letters
- *
- * This lookuptable defines replacements for accented characters from the ASCII-7
- * range. This are lower case letters only.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see utf8_deaccent()
- */
-global $UTF8_LOWER_ACCENTS;
-$UTF8_LOWER_ACCENTS = array(
- 'à ' => 'a', 'ô' => 'o', 'Ä' => 'd', 'á¸' => 'f', 'ë' => 'e', 'Å¡' => 's', 'Æ¡' => 'o',
- 'Ã' => 'ss', 'Ä' => 'a', 'Å' => 'r', 'È' => 't', 'Å' => 'n', 'Ä' => 'a', 'Ä·' => 'k',
- 'Å' => 's', 'ỳ' => 'y', 'Å' => 'n', 'ĺ' => 'l', 'ħ' => 'h', 'á¹' => 'p', 'ó' => 'o',
- 'ú' => 'u', 'Ä' => 'e', 'é' => 'e', 'ç' => 'c', 'áº' => 'w', 'Ä' => 'c', 'õ' => 'o',
- 'ṡ' => 's', 'ø' => 'o', 'Ä£' => 'g', 'ŧ' => 't', 'È' => 's', 'Ä' => 'e', 'Ä' => 'c',
- 'Å' => 's', 'î' => 'i', 'ű' => 'u', 'Ä' => 'c', 'Ä' => 'e', 'ŵ' => 'w', 'ṫ' => 't',
- 'Å«' => 'u', 'Ä' => 'c', 'ö' => 'oe', 'è' => 'e', 'Å·' => 'y', 'Ä
' => 'a', 'Å' => 'l',
- 'ų' => 'u', 'ů' => 'u', 'Å' => 's', 'Ä' => 'g', 'ļ' => 'l', 'Æ' => 'f', 'ž' => 'z',
- 'áº' => 'w', 'á¸' => 'b', 'Ã¥' => 'a', 'ì' => 'i', 'ï' => 'i', 'á¸' => 'd', 'Å¥' => 't',
- 'Å' => 'r', 'ä' => 'ae', 'Ã' => 'i', 'Å' => 'r', 'ê' => 'e', 'ü' => 'ue', 'ò' => 'o',
- 'Ä' => 'e', 'ñ' => 'n', 'Å' => 'n', 'Ä¥' => 'h', 'Ä' => 'g', 'Ä' => 'd', 'ĵ' => 'j',
- 'ÿ' => 'y', 'Å©' => 'u', 'Å' => 'u', 'ư' => 'u', 'Å£' => 't', 'ý' => 'y', 'Å' => 'o',
- 'â' => 'a', 'ľ' => 'l', 'áº
' => 'w', 'ż' => 'z', 'ī' => 'i', 'ã' => 'a', 'ġ' => 'g',
- 'á¹' => 'm', 'Å' => 'o', 'Ä©' => 'i', 'ù' => 'u', 'į' => 'i', 'ź' => 'z', 'á' => 'a',
- 'û' => 'u', 'þ' => 'th', 'ð' => 'dh', 'æ' => 'ae', 'µ' => 'u', 'Ä' => 'e',
-);
-
-/**
- * UTF-8 lookup table for upper case accented letters
- *
- * This lookuptable defines replacements for accented characters from the ASCII-7
- * range. This are upper case letters only.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see utf8_deaccent()
- */
-global $UTF8_UPPER_ACCENTS;
-$UTF8_UPPER_ACCENTS = array(
- 'Ã' => 'A', 'Ã' => 'O', 'Ä' => 'D', 'á¸' => 'F', 'Ã' => 'E', 'Å ' => 'S', 'Æ ' => 'O',
- 'Ä' => 'A', 'Å' => 'R', 'È' => 'T', 'Å' => 'N', 'Ä' => 'A', 'Ķ' => 'K',
- 'Å' => 'S', 'Ỳ' => 'Y', 'Å
' => 'N', 'Ĺ' => 'L', 'Ħ' => 'H', 'á¹' => 'P', 'Ã' => 'O',
- 'Ã' => 'U', 'Ä' => 'E', 'Ã' => 'E', 'Ã' => 'C', 'áº' => 'W', 'Ä' => 'C', 'Ã' => 'O',
- 'á¹ ' => 'S', 'Ã' => 'O', 'Ä¢' => 'G', 'Ŧ' => 'T', 'È' => 'S', 'Ä' => 'E', 'Ä' => 'C',
- 'Å' => 'S', 'Ã' => 'I', 'Ű' => 'U', 'Ä' => 'C', 'Ä' => 'E', 'Å´' => 'W', 'Ṫ' => 'T',
- 'Ū' => 'U', 'Ä' => 'C', 'Ã' => 'Oe', 'Ã' => 'E', 'Ŷ' => 'Y', 'Ä' => 'A', 'Å' => 'L',
- 'Ų' => 'U', 'Å®' => 'U', 'Å' => 'S', 'Ä' => 'G', 'Ä»' => 'L', 'Æ' => 'F', 'Ž' => 'Z',
- 'áº' => 'W', 'á¸' => 'B', 'Ã
' => 'A', 'Ã' => 'I', 'Ã' => 'I', 'á¸' => 'D', 'Ť' => 'T',
- 'Å' => 'R', 'Ã' => 'Ae', 'Ã' => 'I', 'Å' => 'R', 'Ã' => 'E', 'Ã' => 'Ue', 'Ã' => 'O',
- 'Ä' => 'E', 'Ã' => 'N', 'Å' => 'N', 'Ĥ' => 'H', 'Ä' => 'G', 'Ä' => 'D', 'Ä´' => 'J',
- 'Ÿ' => 'Y', 'Ũ' => 'U', 'Ŭ' => 'U', 'Ư' => 'U', 'Å¢' => 'T', 'Ã' => 'Y', 'Å' => 'O',
- 'Ã' => 'A', 'Ľ' => 'L', 'áº' => 'W', 'Å»' => 'Z', 'Ī' => 'I', 'Ã' => 'A', 'Ä ' => 'G',
- 'á¹' => 'M', 'Å' => 'O', 'Ĩ' => 'I', 'Ã' => 'U', 'Ä®' => 'I', 'Ź' => 'Z', 'Ã' => 'A',
- 'Ã' => 'U', 'Ã' => 'Th', 'Ã' => 'Dh', 'Ã' => 'Ae', 'Ä' => 'E',
-);
-
-/**
- * UTF-8 array of common special characters
- *
- * This array should contain all special characters (not a letter or digit)
- * defined in the various local charsets - it's not a complete list of non-alphanum
- * characters in UTF-8. It's not perfect but should match most cases of special
- * chars.
- *
- * The controlchars 0x00 to 0x19 are _not_ included in this array. The space 0x20 is!
- * These chars are _not_ in the array either: _ (0x5f), : 0x3a, . 0x2e, - 0x2d, * 0x2a
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @see utf8_stripspecials()
- */
-global $UTF8_SPECIAL_CHARS;
-$UTF8_SPECIAL_CHARS = array(
- 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023,
- 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002b, 0x002c,
- 0x002f, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x005b,
- 0x005c, 0x005d, 0x005e, 0x0060, 0x007b, 0x007c, 0x007d, 0x007e,
- 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088,
- 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092,
- 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c,
- 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6,
- 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0,
- 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba,
- 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00d7, 0x00f7, 0x02c7, 0x02d8, 0x02d9,
- 0x02da, 0x02db, 0x02dc, 0x02dd, 0x0300, 0x0301, 0x0303, 0x0309, 0x0323, 0x0384,
- 0x0385, 0x0387, 0x03b2, 0x03c6, 0x03d1, 0x03d2, 0x03d5, 0x03d6, 0x05b0, 0x05b1,
- 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, 0x05b8, 0x05b9, 0x05bb, 0x05bc,
- 0x05bd, 0x05be, 0x05bf, 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f3, 0x05f4, 0x060c,
- 0x061b, 0x061f, 0x0640, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, 0x0650, 0x0651,
- 0x0652, 0x066a, 0x0e3f, 0x200c, 0x200d, 0x200e, 0x200f, 0x2013, 0x2014, 0x2015,
- 0x2017, 0x2018, 0x2019, 0x201a, 0x201c, 0x201d, 0x201e, 0x2020, 0x2021, 0x2022,
- 0x2026, 0x2030, 0x2032, 0x2033, 0x2039, 0x203a, 0x2044, 0x20a7, 0x20aa, 0x20ab,
- 0x20ac, 0x2116, 0x2118, 0x2122, 0x2126, 0x2135, 0x2190, 0x2191, 0x2192, 0x2193,
- 0x2194, 0x2195, 0x21b5, 0x21d0, 0x21d1, 0x21d2, 0x21d3, 0x21d4, 0x2200, 0x2202,
- 0x2203, 0x2205, 0x2206, 0x2207, 0x2208, 0x2209, 0x220b, 0x220f, 0x2211, 0x2212,
- 0x2215, 0x2217, 0x2219, 0x221a, 0x221d, 0x221e, 0x2220, 0x2227, 0x2228, 0x2229,
- 0x222a, 0x222b, 0x2234, 0x223c, 0x2245, 0x2248, 0x2260, 0x2261, 0x2264, 0x2265,
- 0x2282, 0x2283, 0x2284, 0x2286, 0x2287, 0x2295, 0x2297, 0x22a5, 0x22c5, 0x2310,
- 0x2320, 0x2321, 0x2329, 0x232a, 0x2469, 0x2500, 0x2502, 0x250c, 0x2510, 0x2514,
- 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2550, 0x2551, 0x2552, 0x2553,
- 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d,
- 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567,
- 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
- 0x2591, 0x2592, 0x2593, 0x25a0, 0x25b2, 0x25bc, 0x25c6, 0x25ca, 0x25cf, 0x25d7,
- 0x2605, 0x260e, 0x261b, 0x261e, 0x2660, 0x2663, 0x2665, 0x2666, 0x2701, 0x2702,
- 0x2703, 0x2704, 0x2706, 0x2707, 0x2708, 0x2709, 0x270c, 0x270d, 0x270e, 0x270f,
- 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x2718, 0x2719,
- 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f, 0x2720, 0x2721, 0x2722, 0x2723,
- 0x2724, 0x2725, 0x2726, 0x2727, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e,
- 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738,
- 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2742,
- 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b, 0x274d,
- 0x274f, 0x2750, 0x2751, 0x2752, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c,
- 0x275d, 0x275e, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x277f,
- 0x2789, 0x2793, 0x2794, 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e,
- 0x279f, 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7, 0x27a8,
- 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af, 0x27b1, 0x27b2, 0x27b3,
- 0x27b4, 0x27b5, 0x27b6, 0x27b7, 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd,
- 0x27be, 0x3000, 0x3001, 0x3002, 0x3003, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x3012, 0x3014, 0x3015, 0x3016, 0x3017,
- 0x3018, 0x3019, 0x301a, 0x301b, 0x3036,
- 0xf6d9, 0xf6da, 0xf6db, 0xf8d7, 0xf8d8, 0xf8d9, 0xf8da, 0xf8db, 0xf8dc,
- 0xf8dd, 0xf8de, 0xf8df, 0xf8e0, 0xf8e1, 0xf8e2, 0xf8e3, 0xf8e4, 0xf8e5, 0xf8e6,
- 0xf8e7, 0xf8e8, 0xf8e9, 0xf8ea, 0xf8eb, 0xf8ec, 0xf8ed, 0xf8ee, 0xf8ef, 0xf8f0,
- 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4, 0xf8f5, 0xf8f6, 0xf8f7, 0xf8f8, 0xf8f9, 0xf8fa,
- 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0xfe7c, 0xfe7d,
- 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09,
- 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff1a, 0xff1b, 0xff1c,
- 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff40, 0xff5b,
- 0xff5c, 0xff5d, 0xff5e, 0xff5f, 0xff60, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65,
- 0xffe0, 0xffe1, 0xffe2, 0xffe3, 0xffe4, 0xffe5, 0xffe6, 0xffe8, 0xffe9, 0xffea,
- 0xffeb, 0xffec, 0xffed, 0xffee,
-);
-
-// utf8 version of above data
-global $UTF8_SPECIAL_CHARS2;
-$UTF8_SPECIAL_CHARS2 =
- "\x1A".' !"#$%&\'()+,/;<=>?@[\]^`{|}~ÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ�'.
- '� ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½�'.
- '�¿Ã÷ËËËËËËËÌÌÌÌÌ£ÎÎ
ÎβÏÏÏÏÏְֱֲֳִֵֶַָֹֻּֽ־ֿ�'.
- '�××××³×´ØØØÙÙÙÙÙÙÙÙÙ٪฿âââââââââââââ�'.
- '��â â¡â¢â¦â°â²â³â¹âºââ§âªâ«â¬âââ¢â¦âµâââââââµ'.
- 'âââââââââ
âââââââââââââââ â§â¨ï¿½'.
- '�âªâ«â´â¼â
ââ â¡â¤â¥ââââââââ¥â
ââ â¡â©âªâ©â�'.
- '��ââââââ¤â¬â´â¼âââââââââââââââââ '.
- 'â¡â¢â£â¤â¥â¦â§â¨â©âªâ«â¬âââââââââ â²â¼âââ�'.
- '�â
ââââ â£â¥â¦ââââââââââââââââââ�'.
- '��ââââââââââ â¡â¢â£â¤â¥â¦â§â©âªâ«â¬ââ®â¯â°â±'.
- 'â²â³â´âµâ¶â·â¸â¹âºâ»â¼â½â¾â¿ââââââ
ââââââ�'.
- '�âââââââââââââ¡â¢â£â¤â¥â¦â§â¿ââââââ�'.
- '��âââââ â¡â¢â£â¤â¥â¦â§â¨â©âªâ«â¬ââ®â¯â±â²â³â´âµâ¶'.
- 'â·â¸â¹âºâ»â¼â½â¾'.
- 'ãããããããããããããããããããããããã¶'.
- 'ïïïï£ï£ï£ï£ï£ï£ï£ï£ï£ï£ �'.
- '�ï£ï£®ï£¯ï£°ï£±ï£²ï£³ï£´ï£µï£¶ï£·ï£¸ï£¹ï£ºï£»ï£¼ï£½ï£¾ï¹¼ï¹½'.
- 'ï¼ï¼ï¼ï¼ï¼
ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ [\]^ï½ï½ï½ï½ï½'.
- 'ï½ï½ ï½¡ï½¢ï½£ï½¤ï½¥ï¿ ï¿¡ï¿¢ï¿£ï¿¤ï¿¥ï¿¦ï¿¨ï¿©ï¿ªï¿«ï¿¬ï¿ï¿®';
-
-/**
- * Romanization lookup table
- *
- * This lookup tables provides a way to transform strings written in a language
- * different from the ones based upon latin letters into plain ASCII.
- *
- * Please note: this is not a scientific transliteration table. It only works
- * oneway from nonlatin to ASCII and it works by simple character replacement
- * only. Specialities of each language are not supported.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Vitaly Blokhin <vitinfo at vitn.com>
- * @link http://www.uconv.com/translit.htm
- * @author Bisqwit <bisqwit at iki.fi>
- * @link http://kanjidict.stc.cx/hiragana.php?src=2
- * @link http://www.translatum.gr/converter/greek-transliteration.htm
- * @link http://en.wikipedia.org/wiki/Royal_Thai_General_System_of_Transcription
- * @link http://www.btranslations.com/resources/romanization/korean.asp
- * @author Arthit Suriyawongkul <arthit at gmail.com>
- */
-global $UTF8_ROMANIZATION;
-$UTF8_ROMANIZATION = array(
- //russian cyrillic
- 'а'=>'a','Ð'=>'A','б'=>'b','Ð'=>'B','в'=>'v','Ð'=>'V','г'=>'g','Ð'=>'G',
- 'д'=>'d','Ð'=>'D','е'=>'e','Ð'=>'E','Ñ'=>'jo','Ð'=>'Jo','ж'=>'zh','Ð'=>'Zh',
- 'з'=>'z','Ð'=>'Z','и'=>'i','Ð'=>'I','й'=>'j','Ð'=>'J','к'=>'k','Ð'=>'K',
- 'л'=>'l','Ð'=>'L','м'=>'m','Ð'=>'M','н'=>'n','Ð'=>'N','о'=>'o','Ð'=>'O',
- 'п'=>'p','Ð'=>'P','Ñ'=>'r','Ð '=>'R','Ñ'=>'s','С'=>'S','Ñ'=>'t','Т'=>'T',
- 'Ñ'=>'u','У'=>'U','Ñ'=>'f','Ф'=>'F','Ñ
'=>'x','Ð¥'=>'X','Ñ'=>'c','Ц'=>'C',
- 'Ñ'=>'ch','Ч'=>'Ch','Ñ'=>'sh','Ш'=>'Sh','Ñ'=>'sch','Щ'=>'Sch','Ñ'=>'',
- 'Ъ'=>'','Ñ'=>'y','Ы'=>'Y','Ñ'=>'','Ь'=>'','Ñ'=>'eh','Ð'=>'Eh','Ñ'=>'ju',
- 'Ю'=>'Ju','Ñ'=>'ja','Я'=>'Ja',
- // Ukrainian cyrillic
- 'Ò'=>'Gh','Ò'=>'gh','Ð'=>'Je','Ñ'=>'je','Ð'=>'I','Ñ'=>'i','Ð'=>'Ji','Ñ'=>'ji',
- // Georgian
- 'á'=>'a','á'=>'b','á'=>'g','á'=>'d','á'=>'e','á'=>'v','á'=>'z','á'=>'th',
- 'á'=>'i','á'=>'p','á'=>'l','á'=>'m','á'=>'n','á'=>'o','á'=>'p','á'=>'zh',
- 'á '=>'r','á¡'=>'s','á¢'=>'t','á£'=>'u','á¤'=>'ph','á¥'=>'kh','á¦'=>'gh','á§'=>'q',
- 'á¨'=>'sh','á©'=>'ch','áª'=>'c','á«'=>'dh','á¬'=>'w','á'=>'j','á®'=>'x','á¯'=>'jh',
- 'á°'=>'xh',
- //Sanskrit
- 'à¤
'=>'a','à¤'=>'ah','à¤'=>'i','à¤'=>'ih','à¤'=>'u','à¤'=>'uh','à¤'=>'ry',
- 'ॠ'=>'ryh','à¤'=>'ly','ॡ'=>'lyh','à¤'=>'e','à¤'=>'ay','à¤'=>'o','à¤'=>'aw',
- 'à¤
à¤'=>'amh','à¤
à¤'=>'aq','à¤'=>'k','à¤'=>'kh','à¤'=>'g','à¤'=>'gh','à¤'=>'nh',
- 'à¤'=>'c','à¤'=>'ch','à¤'=>'j','à¤'=>'jh','à¤'=>'ny','à¤'=>'tq','ठ'=>'tqh',
- 'ड'=>'dq','ढ'=>'dqh','ण'=>'nq','त'=>'t','थ'=>'th','द'=>'d','ध'=>'dh',
- 'न'=>'n','प'=>'p','फ'=>'ph','ब'=>'b','à¤'=>'bh','म'=>'m','य'=>'z','र'=>'r',
- 'ल'=>'l','व'=>'v','श'=>'sh','ष'=>'sqh','स'=>'s','ह'=>'x',
- //Hebrew
- '×'=>'a', '×'=>'b','×'=>'g','×'=>'d','×'=>'h','×'=>'v','×'=>'z','×'=>'kh','×'=>'th',
- '×'=>'y','×'=>'h','×'=>'k','×'=>'l','×'=>'m','×'=>'m','×'=>'n','× '=>'n',
- 'ס'=>'s','ע'=>'ah','ף'=>'f','פ'=>'p','ץ'=>'c','צ'=>'c','ק'=>'q','ר'=>'r',
- 'ש'=>'sh','ת'=>'t',
- //Arabic
- 'ا'=>'a','ب'=>'b','ت'=>'t','Ø«'=>'th','ج'=>'g','Ø'=>'xh','Ø®'=>'x','د'=>'d',
- 'ذ'=>'dh','ر'=>'r','ز'=>'z','س'=>'s','ش'=>'sh','ص'=>'s\'','ض'=>'d\'',
- 'Ø·'=>'t\'','ظ'=>'z\'','ع'=>'y','غ'=>'gh','Ù'=>'f','Ù'=>'q','Ù'=>'k',
- 'Ù'=>'l','Ù
'=>'m','Ù'=>'n','Ù'=>'x\'','Ù'=>'u','Ù'=>'i',
-
- // Japanese hiragana
- 'ã'=>'a','ã'=>'e','ã'=>'i','ã'=>'o','ã'=>'u','ã°'=>'ba','ã¹'=>'be',
- 'ã³'=>'bi','ã¼'=>'bo','ã¶'=>'bu','ã'=>'ci','ã '=>'da','ã§'=>'de','ã¢'=>'di',
- 'ã©'=>'do','ã¥'=>'du','ãµã'=>'fa','ãµã'=>'fe','ãµã'=>'fi','ãµã'=>'fo',
- 'ãµ'=>'fu','ã'=>'ga','ã'=>'ge','ã'=>'gi','ã'=>'go','ã'=>'gu','ã¯'=>'ha',
- 'ã¸'=>'he','ã²'=>'hi','ã»'=>'ho','ãµ'=>'hu','ãã'=>'ja','ãã'=>'je',
- 'ã'=>'ji','ãã'=>'jo','ãã
'=>'ju','ã'=>'ka','ã'=>'ke','ã'=>'ki',
- 'ã'=>'ko','ã'=>'ku','ã'=>'la','ã'=>'le','ã'=>'li','ã'=>'lo','ã'=>'lu',
- 'ã¾'=>'ma','ã'=>'me','ã¿'=>'mi','ã'=>'mo','ã'=>'mu','ãª'=>'na','ã'=>'ne',
- 'ã«'=>'ni','ã®'=>'no','ã¬'=>'nu','ã±'=>'pa','ãº'=>'pe','ã´'=>'pi','ã½'=>'po',
- 'ã·'=>'pu','ã'=>'ra','ã'=>'re','ã'=>'ri','ã'=>'ro','ã'=>'ru','ã'=>'sa',
- 'ã'=>'se','ã'=>'si','ã'=>'so','ã'=>'su','ã'=>'ta','ã¦'=>'te','ã¡'=>'ti',
- 'ã¨'=>'to','ã¤'=>'tu','ã´ã'=>'va','ã´ã'=>'ve','ã´ã'=>'vi','ã´ã'=>'vo',
- 'ã´'=>'vu','ã'=>'wa','ãã'=>'we','ãã'=>'wi','ã'=>'wo','ã'=>'ya','ãã'=>'ye',
- 'ã'=>'yi','ã'=>'yo','ã'=>'yu','ã'=>'za','ã'=>'ze','ã'=>'zi','ã'=>'zo',
- 'ã'=>'zu','ã³ã'=>'bya','ã³ã'=>'bye','ã³ã'=>'byi','ã³ã'=>'byo','ã³ã
'=>'byu',
- 'ã¡ã'=>'cha','ã¡ã'=>'che','ã¡'=>'chi','ã¡ã'=>'cho','ã¡ã
'=>'chu','ã¡ã'=>'cya',
- 'ã¡ã'=>'cye','ã¡ã'=>'cyi','ã¡ã'=>'cyo','ã¡ã
'=>'cyu','ã§ã'=>'dha','ã§ã'=>'dhe',
- 'ã§ã'=>'dhi','ã§ã'=>'dho','ã§ã
'=>'dhu','ã©ã'=>'dwa','ã©ã'=>'dwe','ã©ã'=>'dwi',
- 'ã©ã'=>'dwo','ã©ã
'=>'dwu','ã¢ã'=>'dya','ã¢ã'=>'dye','ã¢ã'=>'dyi','ã¢ã'=>'dyo',
- 'ã¢ã
'=>'dyu','ã¢'=>'dzi','ãµã'=>'fwa','ãµã'=>'fwe','ãµã'=>'fwi','ãµã'=>'fwo',
- 'ãµã
'=>'fwu','ãµã'=>'fya','ãµã'=>'fye','ãµã'=>'fyi','ãµã'=>'fyo','ãµã
'=>'fyu',
- 'ãã'=>'gya','ãã'=>'gye','ãã'=>'gyi','ãã'=>'gyo','ãã
'=>'gyu','ã²ã'=>'hya',
- 'ã²ã'=>'hye','ã²ã'=>'hyi','ã²ã'=>'hyo','ã²ã
'=>'hyu','ãã'=>'jya','ãã'=>'jye',
- 'ãã'=>'jyi','ãã'=>'jyo','ãã
'=>'jyu','ãã'=>'kya','ãã'=>'kye','ãã'=>'kyi',
- 'ãã'=>'kyo','ãã
'=>'kyu','ãã'=>'lya','ãã'=>'lye','ãã'=>'lyi','ãã'=>'lyo',
- 'ãã
'=>'lyu','ã¿ã'=>'mya','ã¿ã'=>'mye','ã¿ã'=>'myi','ã¿ã'=>'myo','ã¿ã
'=>'myu',
- 'ã'=>'n','ã«ã'=>'nya','ã«ã'=>'nye','ã«ã'=>'nyi','ã«ã'=>'nyo','ã«ã
'=>'nyu',
- 'ã´ã'=>'pya','ã´ã'=>'pye','ã´ã'=>'pyi','ã´ã'=>'pyo','ã´ã
'=>'pyu','ãã'=>'rya',
- 'ãã'=>'rye','ãã'=>'ryi','ãã'=>'ryo','ãã
'=>'ryu','ãã'=>'sha','ãã'=>'she',
- 'ã'=>'shi','ãã'=>'sho','ãã
'=>'shu','ãã'=>'swa','ãã'=>'swe','ãã'=>'swi',
- 'ãã'=>'swo','ãã
'=>'swu','ãã'=>'sya','ãã'=>'sye','ãã'=>'syi','ãã'=>'syo',
- 'ãã
'=>'syu','ã¦ã'=>'tha','ã¦ã'=>'the','ã¦ã'=>'thi','ã¦ã'=>'tho','ã¦ã
'=>'thu',
- 'ã¤ã'=>'tsa','ã¤ã'=>'tse','ã¤ã'=>'tsi','ã¤ã'=>'tso','ã¤'=>'tsu','ã¨ã'=>'twa',
- 'ã¨ã'=>'twe','ã¨ã'=>'twi','ã¨ã'=>'two','ã¨ã
'=>'twu','ã¡ã'=>'tya','ã¡ã'=>'tye',
- 'ã¡ã'=>'tyi','ã¡ã'=>'tyo','ã¡ã
'=>'tyu','ã´ã'=>'vya','ã´ã'=>'vye','ã´ã'=>'vyi',
- 'ã´ã'=>'vyo','ã´ã
'=>'vyu','ãã'=>'wha','ãã'=>'whe','ãã'=>'whi','ãã'=>'who',
- 'ãã
'=>'whu','ã'=>'wye','ã'=>'wyi','ãã'=>'zha','ãã'=>'zhe','ãã'=>'zhi',
- 'ãã'=>'zho','ãã
'=>'zhu','ãã'=>'zya','ãã'=>'zye','ãã'=>'zyi','ãã'=>'zyo',
- 'ãã
'=>'zyu',
- // Japanese katakana
- 'ã¢'=>'a','ã¨'=>'e','ã¤'=>'i','ãª'=>'o','ã¦'=>'u','ã'=>'ba','ã'=>'be','ã'=>'bi',
- 'ã'=>'bo','ã'=>'bu','ã·'=>'ci','ã'=>'da','ã'=>'de','ã'=>'di','ã'=>'do',
- 'ã
'=>'du','ãã¡'=>'fa','ãã§'=>'fe','ãã£'=>'fi','ãã©'=>'fo','ã'=>'fu','ã¬'=>'ga',
- 'ã²'=>'ge','ã®'=>'gi','ã´'=>'go','ã°'=>'gu','ã'=>'ha','ã'=>'he','ã'=>'hi','ã'=>'ho',
- 'ã'=>'hu','ã¸ã£'=>'ja','ã¸ã§'=>'je','ã¸'=>'ji','ã¸ã§'=>'jo','ã¸ã¥'=>'ju','ã«'=>'ka',
- 'ã±'=>'ke','ã'=>'ki','ã³'=>'ko','ã¯'=>'ku','ã©'=>'la','ã¬'=>'le','ãª'=>'li','ã'=>'lo',
- 'ã«'=>'lu','ã'=>'ma','ã¡'=>'me','ã'=>'mi','ã¢'=>'mo','ã '=>'mu','ã'=>'na','ã'=>'ne',
- 'ã'=>'ni','ã'=>'no','ã'=>'nu','ã'=>'pa','ã'=>'pe','ã'=>'pi','ã'=>'po','ã'=>'pu',
- 'ã©'=>'ra','ã¬'=>'re','ãª'=>'ri','ã'=>'ro','ã«'=>'ru','ãµ'=>'sa','ã»'=>'se','ã·'=>'si',
- 'ã½'=>'so','ã¹'=>'su','ã¿'=>'ta','ã'=>'te','ã'=>'ti','ã'=>'to','ã'=>'tu','ã´ã¡'=>'va',
- 'ã´ã§'=>'ve','ã´ã£'=>'vi','ã´ã©'=>'vo','ã´'=>'vu','ã¯'=>'wa','ã¦ã§'=>'we','ã¦ã£'=>'wi',
- 'ã²'=>'wo','ã¤'=>'ya','ã¤ã§'=>'ye','ã¤'=>'yi','ã¨'=>'yo','ã¦'=>'yu','ã¶'=>'za','ã¼'=>'ze',
- 'ã¸'=>'zi','ã¾'=>'zo','ãº'=>'zu','ãã£'=>'bya','ãã§'=>'bye','ãã£'=>'byi','ãã§'=>'byo',
- 'ãã¥'=>'byu','ãã£'=>'cha','ãã§'=>'che','ã'=>'chi','ãã§'=>'cho','ãã¥'=>'chu',
- 'ãã£'=>'cya','ãã§'=>'cye','ãã£'=>'cyi','ãã§'=>'cyo','ãã¥'=>'cyu','ãã£'=>'dha',
- 'ãã§'=>'dhe','ãã£'=>'dhi','ãã§'=>'dho','ãã¥'=>'dhu','ãã¡'=>'dwa','ãã§'=>'dwe',
- 'ãã£'=>'dwi','ãã©'=>'dwo','ãã¥'=>'dwu','ãã£'=>'dya','ãã§'=>'dye','ãã£'=>'dyi',
- 'ãã§'=>'dyo','ãã¥'=>'dyu','ã'=>'dzi','ãã¡'=>'fwa','ãã§'=>'fwe','ãã£'=>'fwi',
- 'ãã©'=>'fwo','ãã¥'=>'fwu','ãã£'=>'fya','ãã§'=>'fye','ãã£'=>'fyi','ãã§'=>'fyo',
- 'ãã¥'=>'fyu','ã®ã£'=>'gya','ã®ã§'=>'gye','ã®ã£'=>'gyi','ã®ã§'=>'gyo','ã®ã¥'=>'gyu',
- 'ãã£'=>'hya','ãã§'=>'hye','ãã£'=>'hyi','ãã§'=>'hyo','ãã¥'=>'hyu','ã¸ã£'=>'jya',
- 'ã¸ã§'=>'jye','ã¸ã£'=>'jyi','ã¸ã§'=>'jyo','ã¸ã¥'=>'jyu','ãã£'=>'kya','ãã§'=>'kye',
- 'ãã£'=>'kyi','ãã§'=>'kyo','ãã¥'=>'kyu','ãªã£'=>'lya','ãªã§'=>'lye','ãªã£'=>'lyi',
- 'ãªã§'=>'lyo','ãªã¥'=>'lyu','ãã£'=>'mya','ãã§'=>'mye','ãã£'=>'myi','ãã§'=>'myo',
- 'ãã¥'=>'myu','ã³'=>'n','ãã£'=>'nya','ãã§'=>'nye','ãã£'=>'nyi','ãã§'=>'nyo',
- 'ãã¥'=>'nyu','ãã£'=>'pya','ãã§'=>'pye','ãã£'=>'pyi','ãã§'=>'pyo','ãã¥'=>'pyu',
- 'ãªã£'=>'rya','ãªã§'=>'rye','ãªã£'=>'ryi','ãªã§'=>'ryo','ãªã¥'=>'ryu','ã·ã£'=>'sha',
- 'ã·ã§'=>'she','ã·'=>'shi','ã·ã§'=>'sho','ã·ã¥'=>'shu','ã¹ã¡'=>'swa','ã¹ã§'=>'swe',
- 'ã¹ã£'=>'swi','ã¹ã©'=>'swo','ã¹ã¥'=>'swu','ã·ã£'=>'sya','ã·ã§'=>'sye','ã·ã£'=>'syi',
- 'ã·ã§'=>'syo','ã·ã¥'=>'syu','ãã£'=>'tha','ãã§'=>'the','ãã£'=>'thi','ãã§'=>'tho',
- 'ãã¥'=>'thu','ãã£'=>'tsa','ãã§'=>'tse','ãã£'=>'tsi','ãã§'=>'tso','ã'=>'tsu',
- 'ãã¡'=>'twa','ãã§'=>'twe','ãã£'=>'twi','ãã©'=>'two','ãã¥'=>'twu','ãã£'=>'tya',
- 'ãã§'=>'tye','ãã£'=>'tyi','ãã§'=>'tyo','ãã¥'=>'tyu','ã´ã£'=>'vya','ã´ã§'=>'vye',
- 'ã´ã£'=>'vyi','ã´ã§'=>'vyo','ã´ã¥'=>'vyu','ã¦ã¡'=>'wha','ã¦ã§'=>'whe','ã¦ã£'=>'whi',
- 'ã¦ã©'=>'who','ã¦ã¥'=>'whu','ã±'=>'wye','ã°'=>'wyi','ã¸ã£'=>'zha','ã¸ã§'=>'zhe',
- 'ã¸ã£'=>'zhi','ã¸ã§'=>'zho','ã¸ã¥'=>'zhu','ã¸ã£'=>'zya','ã¸ã§'=>'zye','ã¸ã£'=>'zyi',
- 'ã¸ã§'=>'zyo','ã¸ã¥'=>'zyu',
-
- // "Greeklish"
- 'Î'=>'G','Î'=>'E','Î'=>'Th','Î'=>'L','Î'=>'X','Î '=>'P','Σ'=>'S','Φ'=>'F','Ψ'=>'Ps',
- 'γ'=>'g','δ'=>'e','θ'=>'th','λ'=>'l','ξ'=>'x','Ï'=>'p','Ï'=>'s','Ï'=>'f','Ï'=>'ps',
-
- // Thai
- 'à¸'=>'k','à¸'=>'kh','à¸'=>'kh','à¸'=>'kh','à¸
'=>'kh','à¸'=>'kh','à¸'=>'ng','à¸'=>'ch',
- 'à¸'=>'ch','à¸'=>'ch','à¸'=>'s','à¸'=>'ch','à¸'=>'y','à¸'=>'d','à¸'=>'t','à¸'=>'th',
- 'à¸'=>'d','à¸'=>'th','à¸'=>'n','à¸'=>'d','à¸'=>'t','à¸'=>'th','à¸'=>'th','à¸'=>'th',
- 'à¸'=>'n','à¸'=>'b','à¸'=>'p','à¸'=>'ph','à¸'=>'f','à¸'=>'ph','à¸'=>'f','ภ'=>'ph',
- 'ม'=>'m','ย'=>'y','ร'=>'r','ฤ'=>'rue','ฤà¹
'=>'rue','ล'=>'l','ฦ'=>'lue',
- 'ฦà¹
'=>'lue','ว'=>'w','ศ'=>'s','ษ'=>'s','ส'=>'s','ห'=>'h','ฬ'=>'l','ฮ'=>'h',
- 'ะ'=>'a','ั'=>'a','รร'=>'a','า'=>'a','à¹
'=>'a','ำ'=>'am','à¹à¸²'=>'am',
- 'ิ'=>'i','ี'=>'i','ึ'=>'ue','ี'=>'ue','ุ'=>'u','ู'=>'u',
- 'à¹'=>'e','à¹'=>'ae','à¹'=>'o','à¸'=>'o',
- 'ียะ'=>'ia','ีย'=>'ia','ืà¸à¸°'=>'uea','ืà¸'=>'uea','ัวะ'=>'ua','ัว'=>'ua',
- 'à¹'=>'ai','à¹'=>'ai','ัย'=>'ai','าย'=>'ai','าว'=>'ao',
- 'ุย'=>'ui','à¸à¸¢'=>'oi','ืà¸à¸¢'=>'ueai','วย'=>'uai',
- 'ิว'=>'io','à¹à¸§'=>'eo','ียว'=>'iao',
- 'à¹'=>'','à¹'=>'','à¹'=>'','à¹'=>'','à¹'=>'',
- 'à¹'=>'','à¹'=>'','à¹'=>'','ฺ'=>'',
- 'à¹'=>'2','à¹'=>'o','ฯ'=>'-','à¹'=>'-','à¹'=>'-',
- 'à¹'=>'0','à¹'=>'1','à¹'=>'2','à¹'=>'3','à¹'=>'4',
- 'à¹'=>'5','à¹'=>'6','à¹'=>'7','à¹'=>'8','à¹'=>'9',
-
- // Korean
- 'ã±'=>'k','ã
'=>'kh','ã²'=>'kk','ã·'=>'t','ã
'=>'th','ã¸'=>'tt','ã
'=>'p',
- 'ã
'=>'ph','ã
'=>'pp','ã
'=>'c','ã
'=>'ch','ã
'=>'cc','ã
'=>'s','ã
'=>'ss',
- 'ã
'=>'h','ã
'=>'ng','ã´'=>'n','ã¹'=>'l','ã
'=>'m', 'ã
'=>'a','ã
'=>'e','ã
'=>'o',
- 'ã
'=>'wu','ã
¡'=>'u','ã
£'=>'i','ã
'=>'ay','ã
'=>'ey','ã
'=>'oy','ã
'=>'wa','ã
'=>'we',
- 'ã
'=>'wi','ã
'=>'way','ã
'=>'wey','ã
¢'=>'uy','ã
'=>'ya','ã
'=>'ye','ã
'=>'oy',
- 'ã
'=>'yu','ã
'=>'yay','ã
'=>'yey',
-);
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
-
+<?php
+/**
+ * UTF8 helper functions
+ *
+ * @license LGPL (http://www.gnu.org/copyleft/lesser.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+/**
+ * check for mb_string support
+ */
+if(!defined('UTF8_MBSTRING')){
+ if(function_exists('mb_substr') && !defined('UTF8_NOMBSTRING')){
+ define('UTF8_MBSTRING',1);
+ }else{
+ define('UTF8_MBSTRING',0);
+ }
+}
+
+if(UTF8_MBSTRING){ mb_internal_encoding('UTF-8'); }
+
+
+/**
+ * URL-Encode a filename to allow unicodecharacters
+ *
+ * Slashes are not encoded
+ *
+ * When the second parameter is true the string will
+ * be encoded only if non ASCII characters are detected -
+ * This makes it safe to run it multiple times on the
+ * same string (default is true)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see urlencode
+ */
+function utf8_encodeFN($file,$safe=true){
+ if($safe && preg_match('#^[a-zA-Z0-9/_\-.%]+$#',$file)){
+ return $file;
+ }
+ $file = urlencode($file);
+ $file = str_replace('%2F','/',$file);
+ return $file;
+}
+
+/**
+ * URL-Decode a filename
+ *
+ * This is just a wrapper around urldecode
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see urldecode
+ */
+function utf8_decodeFN($file){
+ $file = urldecode($file);
+ return $file;
+}
+
+/**
+ * Checks if a string contains 7bit ASCII only
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function utf8_isASCII($str){
+ for($i=0; $i<strlen($str); $i++){
+ if(ord($str{$i}) >127) return false;
+ }
+ return true;
+}
+
+/**
+ * Strips all highbyte chars
+ *
+ * Returns a pure ASCII7 string
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function utf8_strip($str){
+ $ascii = '';
+ for($i=0; $i<strlen($str); $i++){
+ if(ord($str{$i}) <128){
+ $ascii .= $str{$i};
+ }
+ }
+ return $ascii;
+}
+
+/**
+ * Tries to detect if a string is in Unicode encoding
+ *
+ * @author <bmorel at ssi.fr>
+ * @link http://www.php.net/manual/en/function.utf8-encode.php
+ */
+function utf8_check($Str) {
+ for ($i=0; $i<strlen($Str); $i++) {
+ $b = ord($Str[$i]);
+ if ($b < 0x80) continue; # 0bbbbbbb
+ elseif (($b & 0xE0) == 0xC0) $n=1; # 110bbbbb
+ elseif (($b & 0xF0) == 0xE0) $n=2; # 1110bbbb
+ elseif (($b & 0xF8) == 0xF0) $n=3; # 11110bbb
+ elseif (($b & 0xFC) == 0xF8) $n=4; # 111110bb
+ elseif (($b & 0xFE) == 0xFC) $n=5; # 1111110b
+ else return false; # Does not match any model
+ for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
+ if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * Unicode aware replacement for strlen()
+ *
+ * utf8_decode() converts characters that are not in ISO-8859-1
+ * to '?', which, for the purpose of counting, is alright - It's
+ * even faster than mb_strlen.
+ *
+ * @author <chernyshevsky at hotmail dot com>
+ * @see strlen()
+ * @see utf8_decode()
+ */
+function utf8_strlen($string){
+ return strlen(utf8_decode($string));
+}
+
+/**
+ * UTF-8 aware alternative to substr
+ *
+ * Return part of a string given character offset (and optionally length)
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @author Chris Smith <chris at jalakai.co.uk>
+ * @param string
+ * @param integer number of UTF-8 characters offset (from left)
+ * @param integer (optional) length in UTF-8 characters from offset
+ * @return mixed string or false if failure
+ */
+function utf8_substr($str, $offset, $length = null) {
+ if(UTF8_MBSTRING){
+ if( $length === null ){
+ return mb_substr($str, $offset);
+ }else{
+ return mb_substr($str, $offset, $length);
+ }
+ }
+
+ /*
+ * Notes:
+ *
+ * no mb string support, so we'll use pcre regex's with 'u' flag
+ * pcre only supports repetitions of less than 65536, in order to accept up to MAXINT values for
+ * offset and length, we'll repeat a group of 65535 characters when needed (ok, up to MAXINT-65536)
+ *
+ * substr documentation states false can be returned in some cases (e.g. offset > string length)
+ * mb_substr never returns false, it will return an empty string instead.
+ *
+ * calculating the number of characters in the string is a relatively expensive operation, so
+ * we only carry it out when necessary. It isn't necessary for +ve offsets and no specified length
+ */
+
+ // cast parameters to appropriate types to avoid multiple notices/warnings
+ $str = (string)$str; // generates E_NOTICE for PHP4 objects, but not PHP5 objects
+ $offset = (int)$offset;
+ if (!is_null($length)) $length = (int)$length;
+
+ // handle trivial cases
+ if ($length === 0) return '';
+ if ($offset < 0 && $length < 0 && $length < $offset) return '';
+
+ $offset_pattern = '';
+ $length_pattern = '';
+
+ // normalise -ve offsets (we could use a tail anchored pattern, but they are horribly slow!)
+ if ($offset < 0) {
+ $strlen = strlen(utf8_decode($str)); // see notes
+ $offset = $strlen + $offset;
+ if ($offset < 0) $offset = 0;
+ }
+
+ // establish a pattern for offset, a non-captured group equal in length to offset
+ if ($offset > 0) {
+ $Ox = (int)($offset/65535);
+ $Oy = $offset%65535;
+
+ if ($Ox) $offset_pattern = '(?:.{65535}){'.$Ox.'}';
+ $offset_pattern = '^(?:'.$offset_pattern.'.{'.$Oy.'})';
+ } else {
+ $offset_pattern = '^'; // offset == 0; just anchor the pattern
+ }
+
+ // establish a pattern for length
+ if (is_null($length)) {
+ $length_pattern = '(.*)$'; // the rest of the string
+ } else {
+
+ if (!isset($strlen)) $strlen = strlen(utf8_decode($str)); // see notes
+ if ($offset > $strlen) return ''; // another trivial case
+
+ if ($length > 0) {
+
+ $length = min($strlen-$offset, $length); // reduce any length that would go passed the end of the string
+
+ $Lx = (int)($length/65535);
+ $Ly = $length%65535;
+
+ // +ve length requires ... a captured group of length characters
+ if ($Lx) $length_pattern = '(?:.{65535}){'.$Lx.'}';
+ $length_pattern = '('.$length_pattern.'.{'.$Ly.'})';
+
+ } else if ($length < 0) {
+
+ if ($length < ($offset - $strlen)) return '';
+
+ $Lx = (int)((-$length)/65535);
+ $Ly = (-$length)%65535;
+
+ // -ve length requires ... capture everything except a group of -length characters
+ // anchored at the tail-end of the string
+ if ($Lx) $length_pattern = '(?:.{65535}){'.$Lx.'}';
+ $length_pattern = '(.*)(?:'.$length_pattern.'.{'.$Ly.'})$';
+ }
+ }
+
+ if (!preg_match('#'.$offset_pattern.$length_pattern.'#us',$str,$match)) return '';
+ return $match[1];
+}
+
+/**
+ * Unicode aware replacement for substr_replace()
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see substr_replace()
+ */
+function utf8_substr_replace($string, $replacement, $start , $length=0 ){
+ $ret = '';
+ if($start>0) $ret .= utf8_substr($string, 0, $start);
+ $ret .= $replacement;
+ $ret .= utf8_substr($string, $start+$length);
+ return $ret;
+}
+
+/**
+ * Unicode aware replacement for ltrim()
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see ltrim()
+ * @return string
+ */
+function utf8_ltrim($str,$charlist=''){
+ if($charlist == '') return ltrim($str);
+
+ //quote charlist for use in a characterclass
+ $charlist = preg_replace('!([\\\\\\-\\]\\[/])!','\\\${1}',$charlist);
+
+ return preg_replace('/^['.$charlist.']+/u','',$str);
+}
+
+/**
+ * Unicode aware replacement for rtrim()
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see rtrim()
+ * @return string
+ */
+function utf8_rtrim($str,$charlist=''){
+ if($charlist == '') return rtrim($str);
+
+ //quote charlist for use in a characterclass
+ $charlist = preg_replace('!([\\\\\\-\\]\\[/])!','\\\${1}',$charlist);
+
+ return preg_replace('/['.$charlist.']+$/u','',$str);
+}
+
+/**
+ * Unicode aware replacement for trim()
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see trim()
+ * @return string
+ */
+function utf8_trim($str,$charlist='') {
+ if($charlist == '') return trim($str);
+
+ return utf8_ltrim(utf8_rtrim($str,$charlist),$charlist);
+}
+
+
+/**
+ * This is a unicode aware replacement for strtolower()
+ *
+ * Uses mb_string extension if available
+ *
+ * @author Leo Feyer <leo at typolight.org>
+ * @see strtolower()
+ * @see utf8_strtoupper()
+ */
+function utf8_strtolower($string){
+ if(UTF8_MBSTRING) return mb_strtolower($string,'utf-8');
+
+ global $UTF8_UPPER_TO_LOWER;
+ return strtr($string,$UTF8_UPPER_TO_LOWER);
+}
+
+/**
+ * This is a unicode aware replacement for strtoupper()
+ *
+ * Uses mb_string extension if available
+ *
+ * @author Leo Feyer <leo at typolight.org>
+ * @see strtoupper()
+ * @see utf8_strtoupper()
+ */
+function utf8_strtoupper($string){
+ if(UTF8_MBSTRING) return mb_strtoupper($string,'utf-8');
+
+ global $UTF8_LOWER_TO_UPPER;
+ return strtr($string,$UTF8_LOWER_TO_UPPER);
+}
+
+/**
+ * Replace accented UTF-8 characters by unaccented ASCII-7 equivalents
+ *
+ * Use the optional parameter to just deaccent lower ($case = -1) or upper ($case = 1)
+ * letters. Default is to deaccent both cases ($case = 0)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function utf8_deaccent($string,$case=0){
+ if($case <= 0){
+ global $UTF8_LOWER_ACCENTS;
+ $string = strtr($string,$UTF8_LOWER_ACCENTS);
+ }
+ if($case >= 0){
+ global $UTF8_UPPER_ACCENTS;
+ $string = strtr($string,$UTF8_UPPER_ACCENTS);
+ }
+ return $string;
+}
+
+/**
+ * Romanize a non-latin string
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function utf8_romanize($string){
+ if(utf8_isASCII($string)) return $string; //nothing to do
+
+ global $UTF8_ROMANIZATION;
+ return strtr($string,$UTF8_ROMANIZATION);
+}
+
+/**
+ * Removes special characters (nonalphanumeric) from a UTF-8 string
+ *
+ * This function adds the controlchars 0x00 to 0x19 to the array of
+ * stripped chars (they are not included in $UTF8_SPECIAL_CHARS)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @param string $string The UTF8 string to strip of special chars
+ * @param string $repl Replace special with this string
+ * @param string $additional Additional chars to strip (used in regexp char class)
+ */
+function utf8_stripspecials($string,$repl='',$additional=''){
+ global $UTF8_SPECIAL_CHARS;
+ global $UTF8_SPECIAL_CHARS2;
+
+ static $specials = null;
+ if(is_null($specials)){
+# $specials = preg_quote(unicode_to_utf8($UTF8_SPECIAL_CHARS), '/');
+ $specials = preg_quote($UTF8_SPECIAL_CHARS2, '/');
+ }
+
+ return preg_replace('/['.$additional.'\x00-\x19'.$specials.']/u',$repl,$string);
+}
+
+/**
+ * This is an Unicode aware replacement for strpos
+ *
+ * @author Leo Feyer <leo at typolight.org>
+ * @see strpos()
+ * @param string
+ * @param string
+ * @param integer
+ * @return integer
+ */
+function utf8_strpos($haystack, $needle, $offset=0){
+ $comp = 0;
+ $length = null;
+
+ while (is_null($length) || $length < $offset) {
+ $pos = strpos($haystack, $needle, $offset + $comp);
+
+ if ($pos === false)
+ return false;
+
+ $length = utf8_strlen(substr($haystack, 0, $pos));
+
+ if ($length < $offset)
+ $comp = $pos - $length;
+ }
+
+ return $length;
+}
+
+
+/**
+ * Encodes UTF-8 characters to HTML entities
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ * @author <vpribish at shopping dot com>
+ * @link http://www.php.net/manual/en/function.utf8-decode.php
+ */
+function utf8_tohtml ($str) {
+ $ret = '';
+ foreach (utf8_to_unicode($str) as $cp) {
+ if ($cp < 0x80)
+ $ret .= chr($cp);
+ elseif ($cp < 0x100)
+ $ret .= "&#$cp;";
+ else
+ $ret .= '&#x'.dechex($cp).';';
+ }
+ return $ret;
+}
+
+/**
+ * Decodes HTML entities to UTF-8 characters
+ *
+ * Convert any &#..; entity to a codepoint,
+ * The entities flag defaults to only decoding numeric entities.
+ * Pass HTML_ENTITIES and named entities, including & < etc.
+ * are handled as well. Avoids the problem that would occur if you
+ * had to decode "&&#38;"
+ *
+ * unhtmlspecialchars(utf8_unhtml($s)) -> "&&"
+ * utf8_unhtml(unhtmlspecialchars($s)) -> "&&#38;"
+ * what it should be -> "&&#38;"
+ *
+ * @author Tom N Harris <tnharris at whoopdedo.org>
+ * @param string $str UTF-8 encoded string
+ * @param boolean $entities Flag controlling decoding of named entities.
+ * @return UTF-8 encoded string with numeric (and named) entities replaced.
+ */
+function utf8_unhtml($str, $entities=null) {
+ static $decoder = null;
+ if (is_null($decoder))
+ $decoder = new utf8_entity_decoder();
+ if (is_null($entities))
+ return preg_replace_callback('/(&#([Xx])?([0-9A-Za-z]+);)/m',
+ 'utf8_decode_numeric', $str);
+ else
+ return preg_replace_callback('/&(#)?([Xx])?([0-9A-Za-z]+);/m',
+ array(&$decoder, 'decode'), $str);
+}
+function utf8_decode_numeric($ent) {
+ switch ($ent[2]) {
+ case 'X':
+ case 'x':
+ $cp = hexdec($ent[3]);
+ break;
+ default:
+ $cp = intval($ent[3]);
+ break;
+ }
+ return unicode_to_utf8(array($cp));
+}
+class utf8_entity_decoder {
+ var $table;
+ function utf8_entity_decoder() {
+ $table = get_html_translation_table(HTML_ENTITIES);
+ $table = array_flip($table);
+ $this->table = array_map(array(&$this,'makeutf8'), $table);
+ }
+ function makeutf8($c) {
+ return unicode_to_utf8(array(ord($c)));
+ }
+ function decode($ent) {
+ if ($ent[1] == '#') {
+ return utf8_decode_numeric($ent);
+ } elseif (array_key_exists($ent[0],$this->table)) {
+ return $this->table[$ent[0]];
+ } else {
+ return $ent[0];
+ }
+ }
+}
+
+/**
+ * Takes an UTF-8 string and returns an array of ints representing the
+ * Unicode characters. Astral planes are supported ie. the ints in the
+ * output can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates
+ * are not allowed.
+ *
+ * If $strict is set to true the function returns false if the input
+ * string isn't a valid UTF-8 octet sequence and raises a PHP error at
+ * level E_USER_WARNING
+ *
+ * Note: this function has been modified slightly in this library to
+ * trigger errors on encountering bad bytes
+ *
+ * @author <hsivonen at iki.fi>
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @param string UTF-8 encoded string
+ * @param boolean Check for invalid sequences?
+ * @return mixed array of unicode code points or false if UTF-8 invalid
+ * @see unicode_to_utf8
+ * @link http://hsivonen.iki.fi/php-utf8/
+ * @link http://sourceforge.net/projects/phputf8/
+ */
+function utf8_to_unicode($str,$strict=false) {
+ $mState = 0; // cached expected number of octets after the current octet
+ // until the beginning of the next UTF8 character sequence
+ $mUcs4 = 0; // cached Unicode character
+ $mBytes = 1; // cached expected number of octets in the current sequence
+
+ $out = array();
+
+ $len = strlen($str);
+
+ for($i = 0; $i < $len; $i++) {
+
+ $in = ord($str{$i});
+
+ if ( $mState == 0) {
+
+ // When mState is zero we expect either a US-ASCII character or a
+ // multi-octet sequence.
+ if (0 == (0x80 & ($in))) {
+ // US-ASCII, pass straight through.
+ $out[] = $in;
+ $mBytes = 1;
+
+ } else if (0xC0 == (0xE0 & ($in))) {
+ // First octet of 2 octet sequence
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x1F) << 6;
+ $mState = 1;
+ $mBytes = 2;
+
+ } else if (0xE0 == (0xF0 & ($in))) {
+ // First octet of 3 octet sequence
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x0F) << 12;
+ $mState = 2;
+ $mBytes = 3;
+
+ } else if (0xF0 == (0xF8 & ($in))) {
+ // First octet of 4 octet sequence
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x07) << 18;
+ $mState = 3;
+ $mBytes = 4;
+
+ } else if (0xF8 == (0xFC & ($in))) {
+ /* First octet of 5 octet sequence.
+ *
+ * This is illegal because the encoded codepoint must be either
+ * (a) not the shortest form or
+ * (b) outside the Unicode range of 0-0x10FFFF.
+ * Rather than trying to resynchronize, we will carry on until the end
+ * of the sequence and let the later error handling code catch it.
+ */
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 0x03) << 24;
+ $mState = 4;
+ $mBytes = 5;
+
+ } else if (0xFC == (0xFE & ($in))) {
+ // First octet of 6 octet sequence, see comments for 5 octet sequence.
+ $mUcs4 = ($in);
+ $mUcs4 = ($mUcs4 & 1) << 30;
+ $mState = 5;
+ $mBytes = 6;
+
+ } elseif($strict) {
+ /* Current octet is neither in the US-ASCII range nor a legal first
+ * octet of a multi-octet sequence.
+ */
+ trigger_error(
+ 'utf8_to_unicode: Illegal sequence identifier '.
+ 'in UTF-8 at byte '.$i,
+ E_USER_WARNING
+ );
+ return false;
+
+ }
+
+ } else {
+
+ // When mState is non-zero, we expect a continuation of the multi-octet
+ // sequence
+ if (0x80 == (0xC0 & ($in))) {
+
+ // Legal continuation.
+ $shift = ($mState - 1) * 6;
+ $tmp = $in;
+ $tmp = ($tmp & 0x0000003F) << $shift;
+ $mUcs4 |= $tmp;
+
+ /**
+ * End of the multi-octet sequence. mUcs4 now contains the final
+ * Unicode codepoint to be output
+ */
+ if (0 == --$mState) {
+
+ /*
+ * Check for illegal sequences and codepoints.
+ */
+ // From Unicode 3.1, non-shortest form is illegal
+ if (((2 == $mBytes) && ($mUcs4 < 0x0080)) ||
+ ((3 == $mBytes) && ($mUcs4 < 0x0800)) ||
+ ((4 == $mBytes) && ($mUcs4 < 0x10000)) ||
+ (4 < $mBytes) ||
+ // From Unicode 3.2, surrogate characters are illegal
+ (($mUcs4 & 0xFFFFF800) == 0xD800) ||
+ // Codepoints outside the Unicode range are illegal
+ ($mUcs4 > 0x10FFFF)) {
+
+ if($strict){
+ trigger_error(
+ 'utf8_to_unicode: Illegal sequence or codepoint '.
+ 'in UTF-8 at byte '.$i,
+ E_USER_WARNING
+ );
+
+ return false;
+ }
+
+ }
+
+ if (0xFEFF != $mUcs4) {
+ // BOM is legal but we don't want to output it
+ $out[] = $mUcs4;
+ }
+
+ //initialize UTF8 cache
+ $mState = 0;
+ $mUcs4 = 0;
+ $mBytes = 1;
+ }
+
+ } elseif($strict) {
+ /**
+ *((0xC0 & (*in) != 0x80) && (mState != 0))
+ * Incomplete multi-octet sequence.
+ */
+ trigger_error(
+ 'utf8_to_unicode: Incomplete multi-octet '.
+ ' sequence in UTF-8 at byte '.$i,
+ E_USER_WARNING
+ );
+
+ return false;
+ }
+ }
+ }
+ return $out;
+}
+
+/**
+ * Takes an array of ints representing the Unicode characters and returns
+ * a UTF-8 string. Astral planes are supported ie. the ints in the
+ * input can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates
+ * are not allowed.
+ *
+ * If $strict is set to true the function returns false if the input
+ * array contains ints that represent surrogates or are outside the
+ * Unicode range and raises a PHP error at level E_USER_WARNING
+ *
+ * Note: this function has been modified slightly in this library to use
+ * output buffering to concatenate the UTF-8 string (faster) as well as
+ * reference the array by it's keys
+ *
+ * @param array of unicode code points representing a string
+ * @param boolean Check for invalid sequences?
+ * @return mixed UTF-8 string or false if array contains invalid code points
+ * @author <hsivonen at iki.fi>
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @see utf8_to_unicode
+ * @link http://hsivonen.iki.fi/php-utf8/
+ * @link http://sourceforge.net/projects/phputf8/
+ */
+function unicode_to_utf8($arr,$strict=false) {
+ if (!is_array($arr)) return '';
+ ob_start();
+
+ foreach (array_keys($arr) as $k) {
+
+ # ASCII range (including control chars)
+ if ( ($arr[$k] >= 0) && ($arr[$k] <= 0x007f) ) {
+
+ echo chr($arr[$k]);
+
+ # 2 byte sequence
+ } else if ($arr[$k] <= 0x07ff) {
+
+ echo chr(0xc0 | ($arr[$k] >> 6));
+ echo chr(0x80 | ($arr[$k] & 0x003f));
+
+ # Byte order mark (skip)
+ } else if($arr[$k] == 0xFEFF) {
+
+ // nop -- zap the BOM
+
+ # Test for illegal surrogates
+ } else if ($arr[$k] >= 0xD800 && $arr[$k] <= 0xDFFF) {
+
+ // found a surrogate
+ if($strict){
+ trigger_error(
+ 'unicode_to_utf8: Illegal surrogate '.
+ 'at index: '.$k.', value: '.$arr[$k],
+ E_USER_WARNING
+ );
+ return false;
+ }
+
+ # 3 byte sequence
+ } else if ($arr[$k] <= 0xffff) {
+
+ echo chr(0xe0 | ($arr[$k] >> 12));
+ echo chr(0x80 | (($arr[$k] >> 6) & 0x003f));
+ echo chr(0x80 | ($arr[$k] & 0x003f));
+
+ # 4 byte sequence
+ } else if ($arr[$k] <= 0x10ffff) {
+
+ echo chr(0xf0 | ($arr[$k] >> 18));
+ echo chr(0x80 | (($arr[$k] >> 12) & 0x3f));
+ echo chr(0x80 | (($arr[$k] >> 6) & 0x3f));
+ echo chr(0x80 | ($arr[$k] & 0x3f));
+
+ } elseif($strict) {
+
+ trigger_error(
+ 'unicode_to_utf8: Codepoint out of Unicode range '.
+ 'at index: '.$k.', value: '.$arr[$k],
+ E_USER_WARNING
+ );
+
+ // out of range
+ return false;
+ }
+ }
+
+ $result = ob_get_contents();
+ ob_end_clean();
+ return $result;
+}
+
+/**
+ * UTF-8 to UTF-16BE conversion.
+ *
+ * Maybe really UCS-2 without mb_string due to utf8_to_unicode limits
+ */
+function utf8_to_utf16be(&$str, $bom = false) {
+ $out = $bom ? "\xFE\xFF" : '';
+ if(UTF8_MBSTRING) return $out.mb_convert_encoding($str,'UTF-16BE','UTF-8');
+
+ $uni = utf8_to_unicode($str);
+ foreach($uni as $cp){
+ $out .= pack('n',$cp);
+ }
+ return $out;
+}
+
+/**
+ * UTF-8 to UTF-16BE conversion.
+ *
+ * Maybe really UCS-2 without mb_string due to utf8_to_unicode limits
+ */
+function utf16be_to_utf8(&$str) {
+ $uni = unpack('n*',$str);
+ return unicode_to_utf8($uni);
+}
+
+/**
+ * Replace bad bytes with an alternative character
+ *
+ * ASCII character is recommended for replacement char
+ *
+ * PCRE Pattern to locate bad bytes in a UTF-8 string
+ * Comes from W3 FAQ: Multilingual Forms
+ * Note: modified to include full ASCII range including control chars
+ *
+ * @author Harry Fuecks <hfuecks at gmail.com>
+ * @see http://www.w3.org/International/questions/qa-forms-utf-8
+ * @param string to search
+ * @param string to replace bad bytes with (defaults to '?') - use ASCII
+ * @return string
+ */
+function utf8_bad_replace($str, $replace = '') {
+ $UTF8_BAD =
+ '([\x00-\x7F]'. # ASCII (including control chars)
+ '|[\xC2-\xDF][\x80-\xBF]'. # non-overlong 2-byte
+ '|\xE0[\xA0-\xBF][\x80-\xBF]'. # excluding overlongs
+ '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'. # straight 3-byte
+ '|\xED[\x80-\x9F][\x80-\xBF]'. # excluding surrogates
+ '|\xF0[\x90-\xBF][\x80-\xBF]{2}'. # planes 1-3
+ '|[\xF1-\xF3][\x80-\xBF]{3}'. # planes 4-15
+ '|\xF4[\x80-\x8F][\x80-\xBF]{2}'. # plane 16
+ '|(.{1}))'; # invalid byte
+ ob_start();
+ while (preg_match('/'.$UTF8_BAD.'/S', $str, $matches)) {
+ if ( !isset($matches[2])) {
+ echo $matches[0];
+ } else {
+ echo $replace;
+ }
+ $str = substr($str,strlen($matches[0]));
+ }
+ $result = ob_get_contents();
+ ob_end_clean();
+ return $result;
+}
+
+/**
+ * adjust a byte index into a utf8 string to a utf8 character boundary
+ *
+ * @param $str string utf8 character string
+ * @param $i int byte index into $str
+ * @param $next bool direction to search for boundary,
+ * false = up (current character)
+ * true = down (next character)
+ *
+ * @return int byte index into $str now pointing to a utf8 character boundary
+ *
+ * @author chris smith <chris at jalakai.co.uk>
+ */
+function utf8_correctIdx(&$str,$i,$next=false) {
+
+ if ($i <= 0) return 0;
+
+ $limit = strlen($str);
+ if ($i>=$limit) return $limit;
+
+ if ($next) {
+ while (($i<$limit) && ((ord($str[$i]) & 0xC0) == 0x80)) $i++;
+ } else {
+ while ($i && ((ord($str[$i]) & 0xC0) == 0x80)) $i--;
+ }
+
+ return $i;
+}
+
+// only needed if no mb_string available
+if(!UTF8_MBSTRING){
+ /**
+ * UTF-8 Case lookup table
+ *
+ * This lookuptable defines the upper case letters to their correspponding
+ * lower case letter in UTF-8
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ global $UTF8_LOWER_TO_UPPER;
+ $UTF8_LOWER_TO_UPPER = array(
+ "ï½"=>"Z","ï½"=>"ï¼¹","ï½"=>"X","ï½"=>"ï¼·","ï½"=>"ï¼¶","ï½"=>"ï¼µ","ï½"=>"ï¼´","ï½"=>"ï¼³","ï½"=>"ï¼²","ï½"=>"ï¼±",
+ "ï½"=>"ï¼°","ï½"=>"O","ï½"=>"ï¼®","ï½"=>"ï¼","ï½"=>"L","ï½"=>"K","ï½"=>"J","ï½"=>"I","ï½"=>"H","ï½"=>"ï¼§",
+ "ï½"=>"F","ï½
"=>"ï¼¥","ï½"=>"D","ï½"=>"ï¼£","ï½"=>"ï¼¢","ï½"=>"A","ῳ"=>"ῼ","á¿¥"=>"Ῥ","á¿¡"=>"á¿©","á¿"=>"á¿",
+ "á¿"=>"á¿","á¿"=>"á¿","á¾¾"=>"Î","á¾³"=>"á¾¼","á¾±"=>"á¾¹","á¾°"=>"Ᾰ","á¾§"=>"ᾯ","ᾦ"=>"á¾®","á¾¥"=>"á¾","ᾤ"=>"ᾬ",
+ "á¾£"=>"ᾫ","á¾¢"=>"ᾪ","ᾡ"=>"ᾩ","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾",
+ "á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾
"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á½½"=>"á¿»",
+ "á½¼"=>"Ὼ","á½»"=>"á¿«","ὺ"=>"Ὺ","á½¹"=>"Ό","ὸ"=>"Ὸ","á½·"=>"á¿","á½¶"=>"á¿","á½µ"=>"á¿","á½´"=>"á¿","á½³"=>"á¿",
+ "á½²"=>"á¿","á½±"=>"á¾»","á½°"=>"Ὰ","á½§"=>"Ὧ","ὦ"=>"á½®","á½¥"=>"á½","ὤ"=>"Ὤ","á½£"=>"Ὣ","á½¢"=>"Ὢ","ὡ"=>"Ὡ",
+ "á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½
"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½",
+ "ἷ"=>"Ἷ","ἶ"=>"Ἶ","ἵ"=>"Ἵ","ἴ"=>"Ἴ","ἳ"=>"Ἳ","ἲ"=>"Ἲ","ἱ"=>"Ἱ","ἰ"=>"Ἰ","ἧ"=>"Ἧ","ἦ"=>"Ἦ",
+ "á¼¥"=>"á¼","ἤ"=>"Ἤ","á¼£"=>"Ἣ","á¼¢"=>"Ἢ","ἡ"=>"Ἡ","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼",
+ "á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼
"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","ỹ"=>"Ỹ",
+ "á»·"=>"á»¶","ỵ"=>"á»´","ỳ"=>"Ỳ","á»±"=>"á»°","ữ"=>"á»®","á»"=>"Ử","ừ"=>"Ừ","ứ"=>"Ứ","á»§"=>"Ủ","ụ"=>"Ụ",
+ "ợ"=>"Ợ","ỡ"=>"á» ","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»",
+ "á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»
"=>"á»","á»"=>"á»","á»"=>"á»","ế"=>"Ế","ẽ"=>"Ẽ",
+ "ẻ"=>"Ẻ","ẹ"=>"Ẹ","ặ"=>"Ặ","ẵ"=>"Ẵ","ẳ"=>"Ẳ","ằ"=>"Ằ","ắ"=>"Ắ","áº"=>"Ậ","ẫ"=>"Ẫ","ẩ"=>"Ẩ",
+ "ầ"=>"Ầ","ấ"=>"Ấ","ả"=>"Ả","ạ"=>"Ạ","áº"=>"á¹ ","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº",
+ "áº"=>"áº","áº"=>"áº","áº"=>"áº","áº
"=>"áº","áº"=>"áº","áº"=>"áº","ṿ"=>"á¹¾","á¹½"=>"á¹¼","á¹»"=>"Ṻ","á¹¹"=>"Ṹ",
+ "á¹·"=>"á¹¶","á¹µ"=>"á¹´","á¹³"=>"á¹²","á¹±"=>"á¹°","ṯ"=>"á¹®","á¹"=>"Ṭ","ṫ"=>"Ṫ","ṩ"=>"Ṩ","á¹§"=>"Ṧ","á¹¥"=>"Ṥ",
+ "á¹£"=>"á¹¢","ṡ"=>"á¹ ","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹",
+ "á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹
"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","ḿ"=>"Ḿ","ḽ"=>"Ḽ",
+ "ḻ"=>"Ḻ","ḹ"=>"Ḹ","ḷ"=>"Ḷ","ḵ"=>"Ḵ","ḳ"=>"Ḳ","ḱ"=>"Ḱ","ḯ"=>"Ḯ","á¸"=>"Ḭ","ḫ"=>"Ḫ","ḩ"=>"Ḩ",
+ "ḧ"=>"Ḧ","ḥ"=>"Ḥ","ḣ"=>"Ḣ","ḡ"=>"Ḡ","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸",
+ "á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸
"=>"á¸","á¸"=>"á¸","á¸"=>"á¸",
+ "Ö"=>"Õ","Ö
"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Ö"=>"Õ","Õ¿"=>"Õ","Õ¾"=>"Õ","Õ½"=>"Õ",
+ "Õ¼"=>"Õ","Õ»"=>"Õ","Õº"=>"Õ","Õ¹"=>"Õ","Õ¸"=>"Õ","Õ·"=>"Õ","Õ¶"=>"Õ","Õµ"=>"Õ
","Õ´"=>"Õ","Õ³"=>"Õ",
+ "Õ²"=>"Õ","Õ±"=>"Õ","Õ°"=>"Õ","Õ¯"=>"Ô¿","Õ®"=>"Ô¾","Õ"=>"Ô½","Õ¬"=>"Ô¼","Õ«"=>"Ô»","Õª"=>"Ôº","Õ©"=>"Ô¹",
+ "Õ¨"=>"Ô¸","Õ§"=>"Ô·","Õ¦"=>"Ô¶","Õ¥"=>"Ôµ","Õ¤"=>"Ô´","Õ£"=>"Ô³","Õ¢"=>"Ô²","Õ¡"=>"Ô±","Ô"=>"Ô","Ô"=>"Ô",
+ "Ô"=>"Ô","Ô"=>"Ô","Ô"=>"Ô","Ô
"=>"Ô","Ô"=>"Ô","Ô"=>"Ô","Ó¹"=>"Ó¸","Óµ"=>"Ó´","Ó³"=>"Ó²","Ó±"=>"Ó°",
+ "Ó¯"=>"Ó®","Ó"=>"Ó¬","Ó«"=>"Óª","Ó©"=>"Ó¨","Ó§"=>"Ó¦","Ó¥"=>"Ó¤","Ó£"=>"Ó¢","Ó¡"=>"Ó ","Ó"=>"Ó","Ó"=>"Ó",
+ "Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó",
+ "Ó"=>"Ó
","Ó"=>"Ó","Ó"=>"Ó","Ò¿"=>"Ò¾","Ò½"=>"Ò¼","Ò»"=>"Òº","Ò¹"=>"Ò¸","Ò·"=>"Ò¶","Òµ"=>"Ò´","Ò³"=>"Ò²",
+ "Ò±"=>"Ò°","Ò¯"=>"Ò®","Ò"=>"Ò¬","Ò«"=>"Òª","Ò©"=>"Ò¨","Ò§"=>"Ò¦","Ò¥"=>"Ò¤","Ò£"=>"Ò¢","Ò¡"=>"Ò ","Ò"=>"Ò",
+ "Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò",
+ "Ò"=>"Ò","Ñ¿"=>"Ѿ","ѽ"=>"Ѽ","Ñ»"=>"Ѻ","ѹ"=>"Ѹ","Ñ·"=>"Ѷ","ѵ"=>"Ñ´","ѳ"=>"Ѳ","ѱ"=>"Ѱ","ѯ"=>"Ñ®",
+ "Ñ"=>"Ѭ","Ñ«"=>"Ѫ","Ñ©"=>"Ѩ","ѧ"=>"Ѧ","Ñ¥"=>"Ѥ","Ñ£"=>"Ñ¢","Ñ¡"=>"Ñ ","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð",
+ "Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð
","Ñ"=>"Ð","Ñ"=>"Ð",
+ "Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Ð","Ñ"=>"Я","Ñ"=>"Ю","Ñ"=>"Ð","Ñ"=>"Ь","Ñ"=>"Ы","Ñ"=>"Ъ","Ñ"=>"Щ",
+ "Ñ"=>"Ш","Ñ"=>"Ч","Ñ"=>"Ц","Ñ
"=>"Ð¥","Ñ"=>"Ф","Ñ"=>"У","Ñ"=>"Т","Ñ"=>"С","Ñ"=>"Ð ","п"=>"Ð",
+ "о"=>"Ð","н"=>"Ð","м"=>"Ð","л"=>"Ð","к"=>"Ð","й"=>"Ð","и"=>"Ð","з"=>"Ð","ж"=>"Ð","е"=>"Ð",
+ "д"=>"Ð","г"=>"Ð","в"=>"Ð","б"=>"Ð","а"=>"Ð","ϵ"=>"Î","ϲ"=>"Σ","ϱ"=>"Ρ","ϰ"=>"Î","ϯ"=>"Ï®",
+ "Ï"=>"Ϭ","Ï«"=>"Ϫ","Ï©"=>"Ϩ","ϧ"=>"Ϧ","Ï¥"=>"Ϥ","Ï£"=>"Ï¢","Ï¡"=>"Ï ","Ï"=>"Ï","Ï"=>"Ï","Ï"=>"Ï",
+ "Ï"=>"Ï","Ï"=>"Î ","Ï"=>"Φ","Ï"=>"Î","Ï"=>"Î","Ï"=>"Î","Ï"=>"Î","Ï"=>"Î","Ï"=>"Ϋ","Ï"=>"Ϊ",
+ "Ï"=>"Ω","Ï"=>"Ψ","Ï"=>"Χ","Ï"=>"Φ","Ï
"=>"Î¥","Ï"=>"Τ","Ï"=>"Σ","Ï"=>"Σ","Ï"=>"Ρ","Ï"=>"Î ",
+ "ο"=>"Î","ξ"=>"Î","ν"=>"Î","μ"=>"Î","λ"=>"Î","κ"=>"Î","ι"=>"Î","θ"=>"Î","η"=>"Î","ζ"=>"Î",
+ "ε"=>"Î","δ"=>"Î","γ"=>"Î","β"=>"Î","α"=>"Î","ί"=>"Î","ή"=>"Î","Î"=>"Î","ά"=>"Î","Ê"=>"Æ·",
+ "Ê"=>"Ʋ","Ê"=>"Ʊ","Ê"=>"Æ®","Ê"=>"Æ©","Ê"=>"Ʀ","ɵ"=>"Æ","ɲ"=>"Æ","ɯ"=>"Æ","É©"=>"Æ","ɨ"=>"Æ",
+ "É£"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","É"=>"Æ","ȳ"=>"Ȳ","ȱ"=>"Ȱ","ȯ"=>"È®",
+ "È"=>"Ȭ","È«"=>"Ȫ","È©"=>"Ȩ","ȧ"=>"Ȧ","È¥"=>"Ȥ","È£"=>"È¢","È"=>"È","È"=>"È","È"=>"È","È"=>"È",
+ "È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È
"=>"È",
+ "È"=>"È","È"=>"È","Ç¿"=>"Ǿ","ǽ"=>"Ǽ","Ç»"=>"Ǻ","ǹ"=>"Ǹ","ǵ"=>"Ç´","dz"=>"Dz","ǯ"=>"Ç®","Ç"=>"Ǭ",
+ "Ç«"=>"Ǫ","Ç©"=>"Ǩ","ǧ"=>"Ǧ","Ç¥"=>"Ǥ","Ç£"=>"Ç¢","Ç¡"=>"Ç ","Ç"=>"Ç","Ç"=>"Æ","Ç"=>"Ç","Ç"=>"Ç",
+ "Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç
","Æ¿"=>"Ç·",
+ "ƽ"=>"Ƽ","ƹ"=>"Ƹ","ƶ"=>"Ƶ","Æ´"=>"Ƴ","ư"=>"Ư","Æ"=>"Ƭ","ƨ"=>"Ƨ","Æ¥"=>"Ƥ","Æ£"=>"Æ¢","Æ¡"=>"Æ ",
+ "Æ"=>"È ","Æ"=>"Æ","Æ"=>"Ƕ","Æ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ","Æ
"=>"Æ","Æ"=>"Æ","Å¿"=>"S","ž"=>"Ž",
+ "ż"=>"Å»","ź"=>"Ź","Å·"=>"Ŷ","ŵ"=>"Å´","ų"=>"Ų","ű"=>"Ű","ů"=>"Å®","Å"=>"Ŭ","Å«"=>"Ū","Å©"=>"Ũ",
+ "ŧ"=>"Ŧ","Å¥"=>"Ť","Å£"=>"Å¢","Å¡"=>"Å ","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å",
+ "Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å
","Å"=>"Å","Å"=>"Å","Å"=>"Ä¿",
+ "ľ"=>"Ľ","ļ"=>"Ä»","ĺ"=>"Ĺ","Ä·"=>"Ķ","ĵ"=>"Ä´","ij"=>"IJ","ı"=>"I","į"=>"Ä®","Ä"=>"Ĭ","Ä«"=>"Ī",
+ "Ä©"=>"Ĩ","ħ"=>"Ħ","Ä¥"=>"Ĥ","Ä£"=>"Ä¢","Ä¡"=>"Ä ","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä",
+ "Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä
"=>"Ä","Ä"=>"Ä",
+ "Ä"=>"Ä","ÿ"=>"Ÿ","þ"=>"Ã","ý"=>"Ã","ü"=>"Ã","û"=>"Ã","ú"=>"Ã","ù"=>"Ã","ø"=>"Ã","ö"=>"Ã",
+ "õ"=>"Ã","ô"=>"Ã","ó"=>"Ã","ò"=>"Ã","ñ"=>"Ã","ð"=>"Ã","ï"=>"Ã","î"=>"Ã","Ã"=>"Ã","ì"=>"Ã",
+ "ë"=>"Ã","ê"=>"Ã","é"=>"Ã","è"=>"Ã","ç"=>"Ã","æ"=>"Ã","Ã¥"=>"Ã
","ä"=>"Ã","ã"=>"Ã","â"=>"Ã",
+ "á"=>"Ã","à "=>"Ã","µ"=>"Î","z"=>"Z","y"=>"Y","x"=>"X","w"=>"W","v"=>"V","u"=>"U","t"=>"T",
+ "s"=>"S","r"=>"R","q"=>"Q","p"=>"P","o"=>"O","n"=>"N","m"=>"M","l"=>"L","k"=>"K","j"=>"J",
+ "i"=>"I","h"=>"H","g"=>"G","f"=>"F","e"=>"E","d"=>"D","c"=>"C","b"=>"B","a"=>"A"
+ );
+
+ /**
+ * UTF-8 Case lookup table
+ *
+ * This lookuptable defines the lower case letters to their correspponding
+ * upper case letter in UTF-8
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ global $UTF8_UPPER_TO_LOWER;
+ $UTF8_UPPER_TO_LOWER = array (
+ "Z"=>"ï½","ï¼¹"=>"ï½","X"=>"ï½","ï¼·"=>"ï½","ï¼¶"=>"ï½","ï¼µ"=>"ï½","ï¼´"=>"ï½","ï¼³"=>"ï½","ï¼²"=>"ï½","ï¼±"=>"ï½",
+ "ï¼°"=>"ï½","O"=>"ï½","ï¼®"=>"ï½","ï¼"=>"ï½","L"=>"ï½","K"=>"ï½","J"=>"ï½","I"=>"ï½","H"=>"ï½","ï¼§"=>"ï½",
+ "F"=>"ï½","ï¼¥"=>"ï½
","D"=>"ï½","ï¼£"=>"ï½","ï¼¢"=>"ï½","A"=>"ï½","ῼ"=>"ῳ","Ῥ"=>"á¿¥","á¿©"=>"á¿¡","á¿"=>"á¿",
+ "á¿"=>"á¿","á¿"=>"á¿","Î"=>"á¾¾","á¾¼"=>"á¾³","á¾¹"=>"á¾±","Ᾰ"=>"á¾°","ᾯ"=>"á¾§","á¾®"=>"ᾦ","á¾"=>"á¾¥","ᾬ"=>"ᾤ",
+ "ᾫ"=>"á¾£","ᾪ"=>"á¾¢","ᾩ"=>"ᾡ","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾",
+ "á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾
","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¾"=>"á¾","á¿»"=>"á½½",
+ "Ὼ"=>"á½¼","á¿«"=>"á½»","Ὺ"=>"ὺ","Ό"=>"á½¹","Ὸ"=>"ὸ","á¿"=>"á½·","á¿"=>"á½¶","á¿"=>"á½µ","á¿"=>"á½´","á¿"=>"á½³",
+ "á¿"=>"á½²","á¾»"=>"á½±","Ὰ"=>"á½°","Ὧ"=>"á½§","á½®"=>"ὦ","á½"=>"á½¥","Ὤ"=>"ὤ","Ὣ"=>"á½£","Ὢ"=>"á½¢","Ὡ"=>"ὡ",
+ "á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½
","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½","á½"=>"á½",
+ "Ἷ"=>"ἷ","Ἶ"=>"ἶ","Ἵ"=>"ἵ","Ἴ"=>"ἴ","Ἳ"=>"ἳ","Ἲ"=>"ἲ","Ἱ"=>"ἱ","Ἰ"=>"ἰ","Ἧ"=>"ἧ","Ἦ"=>"ἦ",
+ "á¼"=>"á¼¥","Ἤ"=>"ἤ","Ἣ"=>"á¼£","Ἢ"=>"á¼¢","Ἡ"=>"ἡ","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼",
+ "á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼
","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","á¼"=>"á¼","Ỹ"=>"ỹ",
+ "á»¶"=>"á»·","á»´"=>"ỵ","Ỳ"=>"ỳ","á»°"=>"á»±","á»®"=>"ữ","Ử"=>"á»","Ừ"=>"ừ","Ứ"=>"ứ","Ủ"=>"á»§","Ụ"=>"ụ",
+ "Ợ"=>"ợ","á» "=>"ỡ","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»",
+ "á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»","á»"=>"á»
","á»"=>"á»","á»"=>"á»","Ế"=>"ế","Ẽ"=>"ẽ",
+ "Ẻ"=>"ẻ","Ẹ"=>"ẹ","Ặ"=>"ặ","Ẵ"=>"ẵ","Ẳ"=>"ẳ","Ằ"=>"ằ","Ắ"=>"ắ","Ậ"=>"áº","Ẫ"=>"ẫ","Ẩ"=>"ẩ",
+ "Ầ"=>"ầ","Ấ"=>"ấ","Ả"=>"ả","Ạ"=>"ạ","á¹ "=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº",
+ "áº"=>"áº","áº"=>"áº","áº"=>"áº","áº"=>"áº
","áº"=>"áº","áº"=>"áº","á¹¾"=>"ṿ","á¹¼"=>"á¹½","Ṻ"=>"á¹»","Ṹ"=>"á¹¹",
+ "á¹¶"=>"á¹·","á¹´"=>"á¹µ","á¹²"=>"á¹³","á¹°"=>"á¹±","á¹®"=>"ṯ","Ṭ"=>"á¹","Ṫ"=>"ṫ","Ṩ"=>"ṩ","Ṧ"=>"á¹§","Ṥ"=>"á¹¥",
+ "á¹¢"=>"á¹£","á¹ "=>"ṡ","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹",
+ "á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹","á¹"=>"á¹
","á¹"=>"á¹","á¹"=>"á¹","Ḿ"=>"ḿ","Ḽ"=>"ḽ",
+ "Ḻ"=>"ḻ","Ḹ"=>"ḹ","Ḷ"=>"ḷ","Ḵ"=>"ḵ","Ḳ"=>"ḳ","Ḱ"=>"ḱ","Ḯ"=>"ḯ","Ḭ"=>"á¸","Ḫ"=>"ḫ","Ḩ"=>"ḩ",
+ "Ḧ"=>"ḧ","Ḥ"=>"ḥ","Ḣ"=>"ḣ","Ḡ"=>"ḡ","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸",
+ "á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸","á¸"=>"á¸
","á¸"=>"á¸","á¸"=>"á¸",
+ "Õ"=>"Ö","Õ"=>"Ö
","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Ö","Õ"=>"Õ¿","Õ"=>"Õ¾","Õ"=>"Õ½",
+ "Õ"=>"Õ¼","Õ"=>"Õ»","Õ"=>"Õº","Õ"=>"Õ¹","Õ"=>"Õ¸","Õ"=>"Õ·","Õ"=>"Õ¶","Õ
"=>"Õµ","Õ"=>"Õ´","Õ"=>"Õ³",
+ "Õ"=>"Õ²","Õ"=>"Õ±","Õ"=>"Õ°","Ô¿"=>"Õ¯","Ô¾"=>"Õ®","Ô½"=>"Õ","Ô¼"=>"Õ¬","Ô»"=>"Õ«","Ôº"=>"Õª","Ô¹"=>"Õ©",
+ "Ô¸"=>"Õ¨","Ô·"=>"Õ§","Ô¶"=>"Õ¦","Ôµ"=>"Õ¥","Ô´"=>"Õ¤","Ô³"=>"Õ£","Ô²"=>"Õ¢","Ô±"=>"Õ¡","Ô"=>"Ô","Ô"=>"Ô",
+ "Ô"=>"Ô","Ô"=>"Ô","Ô"=>"Ô","Ô"=>"Ô
","Ô"=>"Ô","Ô"=>"Ô","Ó¸"=>"Ó¹","Ó´"=>"Óµ","Ó²"=>"Ó³","Ó°"=>"Ó±",
+ "Ó®"=>"Ó¯","Ó¬"=>"Ó","Óª"=>"Ó«","Ó¨"=>"Ó©","Ó¦"=>"Ó§","Ó¤"=>"Ó¥","Ó¢"=>"Ó£","Ó "=>"Ó¡","Ó"=>"Ó","Ó"=>"Ó",
+ "Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ó"=>"Ó",
+ "Ó
"=>"Ó","Ó"=>"Ó","Ó"=>"Ó","Ò¾"=>"Ò¿","Ò¼"=>"Ò½","Òº"=>"Ò»","Ò¸"=>"Ò¹","Ò¶"=>"Ò·","Ò´"=>"Òµ","Ò²"=>"Ò³",
+ "Ò°"=>"Ò±","Ò®"=>"Ò¯","Ò¬"=>"Ò","Òª"=>"Ò«","Ò¨"=>"Ò©","Ò¦"=>"Ò§","Ò¤"=>"Ò¥","Ò¢"=>"Ò£","Ò "=>"Ò¡","Ò"=>"Ò",
+ "Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò","Ò"=>"Ò",
+ "Ò"=>"Ò","Ѿ"=>"Ñ¿","Ѽ"=>"ѽ","Ѻ"=>"Ñ»","Ѹ"=>"ѹ","Ѷ"=>"Ñ·","Ñ´"=>"ѵ","Ѳ"=>"ѳ","Ѱ"=>"ѱ","Ñ®"=>"ѯ",
+ "Ѭ"=>"Ñ","Ѫ"=>"Ñ«","Ѩ"=>"Ñ©","Ѧ"=>"ѧ","Ѥ"=>"Ñ¥","Ñ¢"=>"Ñ£","Ñ "=>"Ñ¡","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ",
+ "Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Ð
"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ",
+ "Ð"=>"Ñ","Ð"=>"Ñ","Ð"=>"Ñ","Я"=>"Ñ","Ю"=>"Ñ","Ð"=>"Ñ","Ь"=>"Ñ","Ы"=>"Ñ","Ъ"=>"Ñ","Щ"=>"Ñ",
+ "Ш"=>"Ñ","Ч"=>"Ñ","Ц"=>"Ñ","Ð¥"=>"Ñ
","Ф"=>"Ñ","У"=>"Ñ","Т"=>"Ñ","С"=>"Ñ","Ð "=>"Ñ","Ð"=>"п",
+ "Ð"=>"о","Ð"=>"н","Ð"=>"м","Ð"=>"л","Ð"=>"к","Ð"=>"й","Ð"=>"и","Ð"=>"з","Ð"=>"ж","Ð"=>"е",
+ "Ð"=>"д","Ð"=>"г","Ð"=>"в","Ð"=>"б","Ð"=>"а","Î"=>"ϵ","Σ"=>"ϲ","Ρ"=>"ϱ","Î"=>"ϰ","Ï®"=>"ϯ",
+ "Ϭ"=>"Ï","Ϫ"=>"Ï«","Ϩ"=>"Ï©","Ϧ"=>"ϧ","Ϥ"=>"Ï¥","Ï¢"=>"Ï£","Ï "=>"Ï¡","Ï"=>"Ï","Ï"=>"Ï","Ï"=>"Ï",
+ "Ï"=>"Ï","Î "=>"Ï","Φ"=>"Ï","Î"=>"Ï","Î"=>"Ï","Î"=>"Ï","Î"=>"Ï","Î"=>"Ï","Ϋ"=>"Ï","Ϊ"=>"Ï",
+ "Ω"=>"Ï","Ψ"=>"Ï","Χ"=>"Ï","Φ"=>"Ï","Î¥"=>"Ï
","Τ"=>"Ï","Σ"=>"Ï","Σ"=>"Ï","Ρ"=>"Ï","Î "=>"Ï",
+ "Î"=>"ο","Î"=>"ξ","Î"=>"ν","Î"=>"μ","Î"=>"λ","Î"=>"κ","Î"=>"ι","Î"=>"θ","Î"=>"η","Î"=>"ζ",
+ "Î"=>"ε","Î"=>"δ","Î"=>"γ","Î"=>"β","Î"=>"α","Î"=>"ί","Î"=>"ή","Î"=>"Î","Î"=>"ά","Æ·"=>"Ê",
+ "Ʋ"=>"Ê","Ʊ"=>"Ê","Æ®"=>"Ê","Æ©"=>"Ê","Ʀ"=>"Ê","Æ"=>"ɵ","Æ"=>"ɲ","Æ"=>"ɯ","Æ"=>"É©","Æ"=>"ɨ",
+ "Æ"=>"É£","Æ"=>"É","Æ"=>"É","Æ"=>"É","Æ"=>"É","Æ"=>"É","Æ"=>"É","Ȳ"=>"ȳ","Ȱ"=>"ȱ","È®"=>"ȯ",
+ "Ȭ"=>"È","Ȫ"=>"È«","Ȩ"=>"È©","Ȧ"=>"ȧ","Ȥ"=>"È¥","È¢"=>"È£","È"=>"È","È"=>"È","È"=>"È","È"=>"È",
+ "È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È","È"=>"È
",
+ "È"=>"È","È"=>"È","Ǿ"=>"Ç¿","Ǽ"=>"ǽ","Ǻ"=>"Ç»","Ǹ"=>"ǹ","Ç´"=>"ǵ","Dz"=>"dz","Ç®"=>"ǯ","Ǭ"=>"Ç",
+ "Ǫ"=>"Ç«","Ǩ"=>"Ç©","Ǧ"=>"ǧ","Ǥ"=>"Ç¥","Ç¢"=>"Ç£","Ç "=>"Ç¡","Ç"=>"Ç","Æ"=>"Ç","Ç"=>"Ç","Ç"=>"Ç",
+ "Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç"=>"Ç","Ç
"=>"Ç","Ç·"=>"Æ¿",
+ "Ƽ"=>"ƽ","Ƹ"=>"ƹ","Ƶ"=>"ƶ","Ƴ"=>"Æ´","Ư"=>"ư","Ƭ"=>"Æ","Ƨ"=>"ƨ","Ƥ"=>"Æ¥","Æ¢"=>"Æ£","Æ "=>"Æ¡",
+ "È "=>"Æ","Æ"=>"Æ","Ƕ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ","Æ"=>"Æ
","Æ"=>"Æ","S"=>"Å¿","Ž"=>"ž",
+ "Å»"=>"ż","Ź"=>"ź","Ŷ"=>"Å·","Å´"=>"ŵ","Ų"=>"ų","Ű"=>"ű","Å®"=>"ů","Ŭ"=>"Å","Ū"=>"Å«","Ũ"=>"Å©",
+ "Ŧ"=>"ŧ","Ť"=>"Å¥","Å¢"=>"Å£","Å "=>"Å¡","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å",
+ "Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å"=>"Å","Å
"=>"Å","Å"=>"Å","Å"=>"Å","Ä¿"=>"Å",
+ "Ľ"=>"ľ","Ä»"=>"ļ","Ĺ"=>"ĺ","Ķ"=>"Ä·","Ä´"=>"ĵ","IJ"=>"ij","I"=>"ı","Ä®"=>"į","Ĭ"=>"Ä","Ī"=>"Ä«",
+ "Ĩ"=>"Ä©","Ħ"=>"ħ","Ĥ"=>"Ä¥","Ä¢"=>"Ä£","Ä "=>"Ä¡","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä",
+ "Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä","Ä"=>"Ä
","Ä"=>"Ä",
+ "Ä"=>"Ä","Ÿ"=>"ÿ","Ã"=>"þ","Ã"=>"ý","Ã"=>"ü","Ã"=>"û","Ã"=>"ú","Ã"=>"ù","Ã"=>"ø","Ã"=>"ö",
+ "Ã"=>"õ","Ã"=>"ô","Ã"=>"ó","Ã"=>"ò","Ã"=>"ñ","Ã"=>"ð","Ã"=>"ï","Ã"=>"î","Ã"=>"Ã","Ã"=>"ì",
+ "Ã"=>"ë","Ã"=>"ê","Ã"=>"é","Ã"=>"è","Ã"=>"ç","Ã"=>"æ","Ã
"=>"Ã¥","Ã"=>"ä","Ã"=>"ã","Ã"=>"â",
+ "Ã"=>"á","Ã"=>"à ","Î"=>"µ","Z"=>"z","Y"=>"y","X"=>"x","W"=>"w","V"=>"v","U"=>"u","T"=>"t",
+ "S"=>"s","R"=>"r","Q"=>"q","P"=>"p","O"=>"o","N"=>"n","M"=>"m","L"=>"l","K"=>"k","J"=>"j",
+ "I"=>"i","H"=>"h","G"=>"g","F"=>"f","E"=>"e","D"=>"d","C"=>"c","B"=>"b","A"=>"a"
+ );
+}; // end of case lookup tables
+
+/**
+ * UTF-8 lookup table for lower case accented letters
+ *
+ * This lookuptable defines replacements for accented characters from the ASCII-7
+ * range. This are lower case letters only.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see utf8_deaccent()
+ */
+global $UTF8_LOWER_ACCENTS;
+$UTF8_LOWER_ACCENTS = array(
+ 'à ' => 'a', 'ô' => 'o', 'Ä' => 'd', 'á¸' => 'f', 'ë' => 'e', 'Å¡' => 's', 'Æ¡' => 'o',
+ 'Ã' => 'ss', 'Ä' => 'a', 'Å' => 'r', 'È' => 't', 'Å' => 'n', 'Ä' => 'a', 'Ä·' => 'k',
+ 'Å' => 's', 'ỳ' => 'y', 'Å' => 'n', 'ĺ' => 'l', 'ħ' => 'h', 'á¹' => 'p', 'ó' => 'o',
+ 'ú' => 'u', 'Ä' => 'e', 'é' => 'e', 'ç' => 'c', 'áº' => 'w', 'Ä' => 'c', 'õ' => 'o',
+ 'ṡ' => 's', 'ø' => 'o', 'Ä£' => 'g', 'ŧ' => 't', 'È' => 's', 'Ä' => 'e', 'Ä' => 'c',
+ 'Å' => 's', 'î' => 'i', 'ű' => 'u', 'Ä' => 'c', 'Ä' => 'e', 'ŵ' => 'w', 'ṫ' => 't',
+ 'Å«' => 'u', 'Ä' => 'c', 'ö' => 'oe', 'è' => 'e', 'Å·' => 'y', 'Ä
' => 'a', 'Å' => 'l',
+ 'ų' => 'u', 'ů' => 'u', 'Å' => 's', 'Ä' => 'g', 'ļ' => 'l', 'Æ' => 'f', 'ž' => 'z',
+ 'áº' => 'w', 'á¸' => 'b', 'Ã¥' => 'a', 'ì' => 'i', 'ï' => 'i', 'á¸' => 'd', 'Å¥' => 't',
+ 'Å' => 'r', 'ä' => 'ae', 'Ã' => 'i', 'Å' => 'r', 'ê' => 'e', 'ü' => 'ue', 'ò' => 'o',
+ 'Ä' => 'e', 'ñ' => 'n', 'Å' => 'n', 'Ä¥' => 'h', 'Ä' => 'g', 'Ä' => 'd', 'ĵ' => 'j',
+ 'ÿ' => 'y', 'Å©' => 'u', 'Å' => 'u', 'ư' => 'u', 'Å£' => 't', 'ý' => 'y', 'Å' => 'o',
+ 'â' => 'a', 'ľ' => 'l', 'áº
' => 'w', 'ż' => 'z', 'ī' => 'i', 'ã' => 'a', 'ġ' => 'g',
+ 'á¹' => 'm', 'Å' => 'o', 'Ä©' => 'i', 'ù' => 'u', 'į' => 'i', 'ź' => 'z', 'á' => 'a',
+ 'û' => 'u', 'þ' => 'th', 'ð' => 'dh', 'æ' => 'ae', 'µ' => 'u', 'Ä' => 'e',
+);
+
+/**
+ * UTF-8 lookup table for upper case accented letters
+ *
+ * This lookuptable defines replacements for accented characters from the ASCII-7
+ * range. This are upper case letters only.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see utf8_deaccent()
+ */
+global $UTF8_UPPER_ACCENTS;
+$UTF8_UPPER_ACCENTS = array(
+ 'Ã' => 'A', 'Ã' => 'O', 'Ä' => 'D', 'á¸' => 'F', 'Ã' => 'E', 'Å ' => 'S', 'Æ ' => 'O',
+ 'Ä' => 'A', 'Å' => 'R', 'È' => 'T', 'Å' => 'N', 'Ä' => 'A', 'Ķ' => 'K',
+ 'Å' => 'S', 'Ỳ' => 'Y', 'Å
' => 'N', 'Ĺ' => 'L', 'Ħ' => 'H', 'á¹' => 'P', 'Ã' => 'O',
+ 'Ã' => 'U', 'Ä' => 'E', 'Ã' => 'E', 'Ã' => 'C', 'áº' => 'W', 'Ä' => 'C', 'Ã' => 'O',
+ 'á¹ ' => 'S', 'Ã' => 'O', 'Ä¢' => 'G', 'Ŧ' => 'T', 'È' => 'S', 'Ä' => 'E', 'Ä' => 'C',
+ 'Å' => 'S', 'Ã' => 'I', 'Ű' => 'U', 'Ä' => 'C', 'Ä' => 'E', 'Å´' => 'W', 'Ṫ' => 'T',
+ 'Ū' => 'U', 'Ä' => 'C', 'Ã' => 'Oe', 'Ã' => 'E', 'Ŷ' => 'Y', 'Ä' => 'A', 'Å' => 'L',
+ 'Ų' => 'U', 'Å®' => 'U', 'Å' => 'S', 'Ä' => 'G', 'Ä»' => 'L', 'Æ' => 'F', 'Ž' => 'Z',
+ 'áº' => 'W', 'á¸' => 'B', 'Ã
' => 'A', 'Ã' => 'I', 'Ã' => 'I', 'á¸' => 'D', 'Ť' => 'T',
+ 'Å' => 'R', 'Ã' => 'Ae', 'Ã' => 'I', 'Å' => 'R', 'Ã' => 'E', 'Ã' => 'Ue', 'Ã' => 'O',
+ 'Ä' => 'E', 'Ã' => 'N', 'Å' => 'N', 'Ĥ' => 'H', 'Ä' => 'G', 'Ä' => 'D', 'Ä´' => 'J',
+ 'Ÿ' => 'Y', 'Ũ' => 'U', 'Ŭ' => 'U', 'Ư' => 'U', 'Å¢' => 'T', 'Ã' => 'Y', 'Å' => 'O',
+ 'Ã' => 'A', 'Ľ' => 'L', 'áº' => 'W', 'Å»' => 'Z', 'Ī' => 'I', 'Ã' => 'A', 'Ä ' => 'G',
+ 'á¹' => 'M', 'Å' => 'O', 'Ĩ' => 'I', 'Ã' => 'U', 'Ä®' => 'I', 'Ź' => 'Z', 'Ã' => 'A',
+ 'Ã' => 'U', 'Ã' => 'Th', 'Ã' => 'Dh', 'Ã' => 'Ae', 'Ä' => 'E',
+);
+
+/**
+ * UTF-8 array of common special characters
+ *
+ * This array should contain all special characters (not a letter or digit)
+ * defined in the various local charsets - it's not a complete list of non-alphanum
+ * characters in UTF-8. It's not perfect but should match most cases of special
+ * chars.
+ *
+ * The controlchars 0x00 to 0x19 are _not_ included in this array. The space 0x20 is!
+ * These chars are _not_ in the array either: _ (0x5f), : 0x3a, . 0x2e, - 0x2d, * 0x2a
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @see utf8_stripspecials()
+ */
+global $UTF8_SPECIAL_CHARS;
+$UTF8_SPECIAL_CHARS = array(
+ 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002b, 0x002c,
+ 0x002f, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x005b,
+ 0x005c, 0x005d, 0x005e, 0x0060, 0x007b, 0x007c, 0x007d, 0x007e,
+ 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088,
+ 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092,
+ 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c,
+ 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6,
+ 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0,
+ 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba,
+ 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00d7, 0x00f7, 0x02c7, 0x02d8, 0x02d9,
+ 0x02da, 0x02db, 0x02dc, 0x02dd, 0x0300, 0x0301, 0x0303, 0x0309, 0x0323, 0x0384,
+ 0x0385, 0x0387, 0x03b2, 0x03c6, 0x03d1, 0x03d2, 0x03d5, 0x03d6, 0x05b0, 0x05b1,
+ 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, 0x05b8, 0x05b9, 0x05bb, 0x05bc,
+ 0x05bd, 0x05be, 0x05bf, 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f3, 0x05f4, 0x060c,
+ 0x061b, 0x061f, 0x0640, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, 0x0650, 0x0651,
+ 0x0652, 0x066a, 0x0e3f, 0x200c, 0x200d, 0x200e, 0x200f, 0x2013, 0x2014, 0x2015,
+ 0x2017, 0x2018, 0x2019, 0x201a, 0x201c, 0x201d, 0x201e, 0x2020, 0x2021, 0x2022,
+ 0x2026, 0x2030, 0x2032, 0x2033, 0x2039, 0x203a, 0x2044, 0x20a7, 0x20aa, 0x20ab,
+ 0x20ac, 0x2116, 0x2118, 0x2122, 0x2126, 0x2135, 0x2190, 0x2191, 0x2192, 0x2193,
+ 0x2194, 0x2195, 0x21b5, 0x21d0, 0x21d1, 0x21d2, 0x21d3, 0x21d4, 0x2200, 0x2202,
+ 0x2203, 0x2205, 0x2206, 0x2207, 0x2208, 0x2209, 0x220b, 0x220f, 0x2211, 0x2212,
+ 0x2215, 0x2217, 0x2219, 0x221a, 0x221d, 0x221e, 0x2220, 0x2227, 0x2228, 0x2229,
+ 0x222a, 0x222b, 0x2234, 0x223c, 0x2245, 0x2248, 0x2260, 0x2261, 0x2264, 0x2265,
+ 0x2282, 0x2283, 0x2284, 0x2286, 0x2287, 0x2295, 0x2297, 0x22a5, 0x22c5, 0x2310,
+ 0x2320, 0x2321, 0x2329, 0x232a, 0x2469, 0x2500, 0x2502, 0x250c, 0x2510, 0x2514,
+ 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2550, 0x2551, 0x2552, 0x2553,
+ 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d,
+ 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567,
+ 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ 0x2591, 0x2592, 0x2593, 0x25a0, 0x25b2, 0x25bc, 0x25c6, 0x25ca, 0x25cf, 0x25d7,
+ 0x2605, 0x260e, 0x261b, 0x261e, 0x2660, 0x2663, 0x2665, 0x2666, 0x2701, 0x2702,
+ 0x2703, 0x2704, 0x2706, 0x2707, 0x2708, 0x2709, 0x270c, 0x270d, 0x270e, 0x270f,
+ 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x2718, 0x2719,
+ 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f, 0x2720, 0x2721, 0x2722, 0x2723,
+ 0x2724, 0x2725, 0x2726, 0x2727, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e,
+ 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738,
+ 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2742,
+ 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b, 0x274d,
+ 0x274f, 0x2750, 0x2751, 0x2752, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c,
+ 0x275d, 0x275e, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x277f,
+ 0x2789, 0x2793, 0x2794, 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e,
+ 0x279f, 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7, 0x27a8,
+ 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af, 0x27b1, 0x27b2, 0x27b3,
+ 0x27b4, 0x27b5, 0x27b6, 0x27b7, 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd,
+ 0x27be, 0x3000, 0x3001, 0x3002, 0x3003, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x3012, 0x3014, 0x3015, 0x3016, 0x3017,
+ 0x3018, 0x3019, 0x301a, 0x301b, 0x3036,
+ 0xf6d9, 0xf6da, 0xf6db, 0xf8d7, 0xf8d8, 0xf8d9, 0xf8da, 0xf8db, 0xf8dc,
+ 0xf8dd, 0xf8de, 0xf8df, 0xf8e0, 0xf8e1, 0xf8e2, 0xf8e3, 0xf8e4, 0xf8e5, 0xf8e6,
+ 0xf8e7, 0xf8e8, 0xf8e9, 0xf8ea, 0xf8eb, 0xf8ec, 0xf8ed, 0xf8ee, 0xf8ef, 0xf8f0,
+ 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4, 0xf8f5, 0xf8f6, 0xf8f7, 0xf8f8, 0xf8f9, 0xf8fa,
+ 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0xfe7c, 0xfe7d,
+ 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff1a, 0xff1b, 0xff1c,
+ 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff40, 0xff5b,
+ 0xff5c, 0xff5d, 0xff5e, 0xff5f, 0xff60, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65,
+ 0xffe0, 0xffe1, 0xffe2, 0xffe3, 0xffe4, 0xffe5, 0xffe6, 0xffe8, 0xffe9, 0xffea,
+ 0xffeb, 0xffec, 0xffed, 0xffee,
+);
+
+// utf8 version of above data
+global $UTF8_SPECIAL_CHARS2;
+$UTF8_SPECIAL_CHARS2 =
+ "\x1A".' !"#$%&\'()+,/;<=>?@[\]^`{|}~ÂÂÂÂÂÂ
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ�'.
+ '� ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½�'.
+ '�¿Ã÷ËËËËËËËÌÌÌÌÌ£ÎÎ
ÎβÏÏÏÏÏְֱֲֳִֵֶַָֹֻּֽ־ֿ�'.
+ '�××××³×´ØØØÙÙÙÙÙÙÙÙÙ٪฿âââââââââââââ�'.
+ '��â â¡â¢â¦â°â²â³â¹âºââ§âªâ«â¬âââ¢â¦âµâââââââµ'.
+ 'âââââââââ
âââââââââââââââ â§â¨ï¿½'.
+ '�âªâ«â´â¼â
ââ â¡â¤â¥ââââââââ¥â
ââ â¡â©âªâ©â�'.
+ '��ââââââ¤â¬â´â¼âââââââââââââââââ '.
+ 'â¡â¢â£â¤â¥â¦â§â¨â©âªâ«â¬âââââââââ â²â¼âââ�'.
+ '�â
ââââ â£â¥â¦ââââââââââââââââââ�'.
+ '��ââââââââââ â¡â¢â£â¤â¥â¦â§â©âªâ«â¬ââ®â¯â°â±'.
+ 'â²â³â´âµâ¶â·â¸â¹âºâ»â¼â½â¾â¿ââââââ
ââââââ�'.
+ '�âââââââââââââ¡â¢â£â¤â¥â¦â§â¿ââââââ�'.
+ '��âââââ â¡â¢â£â¤â¥â¦â§â¨â©âªâ«â¬ââ®â¯â±â²â³â´âµâ¶'.
+ 'â·â¸â¹âºâ»â¼â½â¾'.
+ 'ãããããããããããããããããããããããã¶'.
+ 'ïïïï£ï£ï£ï£ï£ï£ï£ï£ï£ï£ �'.
+ '�ï£ï£®ï£¯ï£°ï£±ï£²ï£³ï£´ï£µï£¶ï£·ï£¸ï£¹ï£ºï£»ï£¼ï£½ï£¾ï¹¼ï¹½'.
+ 'ï¼ï¼ï¼ï¼ï¼
ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ [\]^ï½ï½ï½ï½ï½'.
+ 'ï½ï½ ï½¡ï½¢ï½£ï½¤ï½¥ï¿ ï¿¡ï¿¢ï¿£ï¿¤ï¿¥ï¿¦ï¿¨ï¿©ï¿ªï¿«ï¿¬ï¿ï¿®';
+
+/**
+ * Romanization lookup table
+ *
+ * This lookup tables provides a way to transform strings written in a language
+ * different from the ones based upon latin letters into plain ASCII.
+ *
+ * Please note: this is not a scientific transliteration table. It only works
+ * oneway from nonlatin to ASCII and it works by simple character replacement
+ * only. Specialities of each language are not supported.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Vitaly Blokhin <vitinfo at vitn.com>
+ * @link http://www.uconv.com/translit.htm
+ * @author Bisqwit <bisqwit at iki.fi>
+ * @link http://kanjidict.stc.cx/hiragana.php?src=2
+ * @link http://www.translatum.gr/converter/greek-transliteration.htm
+ * @link http://en.wikipedia.org/wiki/Royal_Thai_General_System_of_Transcription
+ * @link http://www.btranslations.com/resources/romanization/korean.asp
+ * @author Arthit Suriyawongkul <arthit at gmail.com>
+ * @author Denis Scheither <amorphis at uni-bremen.de>
+ */
+global $UTF8_ROMANIZATION;
+$UTF8_ROMANIZATION = array(
+ //russian cyrillic
+ 'а'=>'a','Ð'=>'A','б'=>'b','Ð'=>'B','в'=>'v','Ð'=>'V','г'=>'g','Ð'=>'G',
+ 'д'=>'d','Ð'=>'D','е'=>'e','Ð'=>'E','Ñ'=>'jo','Ð'=>'Jo','ж'=>'zh','Ð'=>'Zh',
+ 'з'=>'z','Ð'=>'Z','и'=>'i','Ð'=>'I','й'=>'j','Ð'=>'J','к'=>'k','Ð'=>'K',
+ 'л'=>'l','Ð'=>'L','м'=>'m','Ð'=>'M','н'=>'n','Ð'=>'N','о'=>'o','Ð'=>'O',
+ 'п'=>'p','Ð'=>'P','Ñ'=>'r','Ð '=>'R','Ñ'=>'s','С'=>'S','Ñ'=>'t','Т'=>'T',
+ 'Ñ'=>'u','У'=>'U','Ñ'=>'f','Ф'=>'F','Ñ
'=>'x','Ð¥'=>'X','Ñ'=>'c','Ц'=>'C',
+ 'Ñ'=>'ch','Ч'=>'Ch','Ñ'=>'sh','Ш'=>'Sh','Ñ'=>'sch','Щ'=>'Sch','Ñ'=>'',
+ 'Ъ'=>'','Ñ'=>'y','Ы'=>'Y','Ñ'=>'','Ь'=>'','Ñ'=>'eh','Ð'=>'Eh','Ñ'=>'ju',
+ 'Ю'=>'Ju','Ñ'=>'ja','Я'=>'Ja',
+ // Ukrainian cyrillic
+ 'Ò'=>'Gh','Ò'=>'gh','Ð'=>'Je','Ñ'=>'je','Ð'=>'I','Ñ'=>'i','Ð'=>'Ji','Ñ'=>'ji',
+ // Georgian
+ 'á'=>'a','á'=>'b','á'=>'g','á'=>'d','á'=>'e','á'=>'v','á'=>'z','á'=>'th',
+ 'á'=>'i','á'=>'p','á'=>'l','á'=>'m','á'=>'n','á'=>'o','á'=>'p','á'=>'zh',
+ 'á '=>'r','á¡'=>'s','á¢'=>'t','á£'=>'u','á¤'=>'ph','á¥'=>'kh','á¦'=>'gh','á§'=>'q',
+ 'á¨'=>'sh','á©'=>'ch','áª'=>'c','á«'=>'dh','á¬'=>'w','á'=>'j','á®'=>'x','á¯'=>'jh',
+ 'á°'=>'xh',
+ //Sanskrit
+ 'à¤
'=>'a','à¤'=>'ah','à¤'=>'i','à¤'=>'ih','à¤'=>'u','à¤'=>'uh','à¤'=>'ry',
+ 'ॠ'=>'ryh','à¤'=>'ly','ॡ'=>'lyh','à¤'=>'e','à¤'=>'ay','à¤'=>'o','à¤'=>'aw',
+ 'à¤
à¤'=>'amh','à¤
à¤'=>'aq','à¤'=>'k','à¤'=>'kh','à¤'=>'g','à¤'=>'gh','à¤'=>'nh',
+ 'à¤'=>'c','à¤'=>'ch','à¤'=>'j','à¤'=>'jh','à¤'=>'ny','à¤'=>'tq','ठ'=>'tqh',
+ 'ड'=>'dq','ढ'=>'dqh','ण'=>'nq','त'=>'t','थ'=>'th','द'=>'d','ध'=>'dh',
+ 'न'=>'n','प'=>'p','फ'=>'ph','ब'=>'b','à¤'=>'bh','म'=>'m','य'=>'z','र'=>'r',
+ 'ल'=>'l','व'=>'v','श'=>'sh','ष'=>'sqh','स'=>'s','ह'=>'x',
+ //Hebrew
+ '×'=>'a', '×'=>'b','×'=>'g','×'=>'d','×'=>'h','×'=>'v','×'=>'z','×'=>'kh','×'=>'th',
+ '×'=>'y','×'=>'h','×'=>'k','×'=>'l','×'=>'m','×'=>'m','×'=>'n','× '=>'n',
+ 'ס'=>'s','ע'=>'ah','ף'=>'f','פ'=>'p','ץ'=>'c','צ'=>'c','ק'=>'q','ר'=>'r',
+ 'ש'=>'sh','ת'=>'t',
+ //Arabic
+ 'ا'=>'a','ب'=>'b','ت'=>'t','Ø«'=>'th','ج'=>'g','Ø'=>'xh','Ø®'=>'x','د'=>'d',
+ 'ذ'=>'dh','ر'=>'r','ز'=>'z','س'=>'s','ش'=>'sh','ص'=>'s\'','ض'=>'d\'',
+ 'Ø·'=>'t\'','ظ'=>'z\'','ع'=>'y','غ'=>'gh','Ù'=>'f','Ù'=>'q','Ù'=>'k',
+ 'Ù'=>'l','Ù
'=>'m','Ù'=>'n','Ù'=>'x\'','Ù'=>'u','Ù'=>'i',
+
+ // Japanese hiragana
+
+ // 3 character syllables, 㣠doubles the consonant after
+ 'ã£ã¡ã'=>'ccha','ã£ã¡ã'=>'cche','ã£ã¡ã'=>'ccho','ã£ã¡ã
'=>'cchu',
+ 'ã£ã³ã'=>'bya','ã£ã³ã'=>'bye','ã£ã³ã'=>'byi','ã£ã³ã'=>'byo','ã£ã³ã
'=>'byu',
+ 'ã£ã¡ã'=>'cha','ã£ã¡ã'=>'che','ã£ã¡'=>'chi','ã£ã¡ã'=>'cho','ã£ã¡ã
'=>'chu',
+ 'ã£ã²ã'=>'hya','ã£ã²ã'=>'hye','ã£ã²ã'=>'hyi','ã£ã²ã'=>'hyo','ã£ã²ã
'=>'hyu',
+ 'ã£ãã'=>'kya','ã£ãã'=>'kye','ã£ãã'=>'kyi','ã£ãã'=>'kyo','ã£ãã
'=>'kyu',
+ 'ã£ãã'=>'gya','ã£ãã'=>'gye','ã£ãã'=>'gyi','ã£ãã'=>'gyo','ã£ãã
'=>'gyu',
+ 'ã£ã¿ã'=>'mya','ã£ã¿ã'=>'mye','ã£ã¿ã'=>'myi','ã£ã¿ã'=>'myo','ã£ã¿ã
'=>'myu',
+ 'ã£ã«ã'=>'nya','ã£ã«ã'=>'nye','ã£ã«ã'=>'nyi','ã£ã«ã'=>'nyo','ã£ã«ã
'=>'nyu',
+ 'ã£ãã'=>'rya','ã£ãã'=>'rye','ã£ãã'=>'ryi','ã£ãã'=>'ryo','ã£ãã
'=>'ryu',
+ 'ã£ãã'=>'sha','ã£ãã'=>'she','ã£ã'=>'shi','ã£ãã'=>'sho','ã£ãã
'=>'shu',
+
+ // 2 character syllables - normal
+ 'ãµã'=>'fa','ãµã'=>'fe','ãµã'=>'fi','ãµã'=>'fo','ãµ'=>'fu',
+ 'ã´ã'=>'va','ã´ã'=>'ve','ã´ã'=>'vi','ã´ã'=>'vo','ã´'=>'vu',
+ 'ã³ã'=>'bya','ã³ã'=>'bye','ã³ã'=>'byi','ã³ã'=>'byo','ã³ã
'=>'byu',
+ 'ã¡ã'=>'cha','ã¡ã'=>'che','ã¡'=>'chi','ã¡ã'=>'cho','ã¡ã
'=>'chu',
+ 'ã²ã'=>'hya','ã²ã'=>'hye','ã²ã'=>'hyi','ã²ã'=>'hyo','ã²ã
'=>'hyu',
+ 'ãã'=>'kya','ãã'=>'kye','ãã'=>'kyi','ãã'=>'kyo','ãã
'=>'kyu',
+ 'ãã'=>'gya','ãã'=>'gye','ãã'=>'gyi','ãã'=>'gyo','ãã
'=>'gyu',
+ 'ã¿ã'=>'mya','ã¿ã'=>'mye','ã¿ã'=>'myi','ã¿ã'=>'myo','ã¿ã
'=>'myu',
+ 'ã«ã'=>'nya','ã«ã'=>'nye','ã«ã'=>'nyi','ã«ã'=>'nyo','ã«ã
'=>'nyu',
+ 'ãã'=>'rya','ãã'=>'rye','ãã'=>'ryi','ãã'=>'ryo','ãã
'=>'ryu',
+ 'ãã'=>'sha','ãã'=>'she','ã'=>'shi','ãã'=>'sho','ãã
'=>'shu',
+ 'ãã'=>'ja','ãã'=>'je','ã'=>'ji','ãã'=>'jo','ãã
'=>'ju',
+
+ // 2 character syllables, 㣠doubles the consonant after
+ 'ã£ã°'=>'bba','ã£ã¹'=>'bbe','ã£ã³'=>'bbi','ã£ã¼'=>'bbo','ã£ã¶'=>'bbu',
+ 'ã£ã±'=>'ppa','ã£ãº'=>'ppe','ã£ã´'=>'ppi','ã£ã½'=>'ppo','ã£ã·'=>'ppu',
+ 'ã£ã'=>'tta','ã£ã¦'=>'tte','ã£ã¡'=>'cchi','ã£ã¨'=>'tto','ã£ã¤'=>'ttsu',
+ 'ã£ã '=>'dda','ã£ã§'=>'dde','ã£ã¢'=>'ddi','ã£ã©'=>'ddo','ã£ã¥'=>'ddu',
+ 'ã£ã'=>'gga','ã£ã'=>'gge','ã£ã'=>'ggi','ã£ã'=>'ggo','ã£ã'=>'ggu',
+ 'ã£ã'=>'kka','ã£ã'=>'kke','ã£ã'=>'kki','ã£ã'=>'kko','ã£ã'=>'kku',
+ 'ã£ã¾'=>'mma','ã£ã'=>'mme','ã£ã¿'=>'mmi','ã£ã'=>'mmo','ã£ã'=>'mmu',
+ 'ã£ãª'=>'nna','ã£ã'=>'nne','ã£ã«'=>'nni','ã£ã®'=>'nno','ã£ã¬'=>'nnu',
+ 'ã£ã'=>'rra','ã£ã'=>'rre','ã£ã'=>'rri','ã£ã'=>'rro','ã£ã'=>'rru',
+ 'ã£ã'=>'ssa','ã£ã'=>'sse','ã£ã'=>'sshi','ã£ã'=>'sso','ã£ã'=>'ssu',
+ 'ã£ã'=>'zza','ã£ã'=>'zze','ã£ã'=>'zzi','ã£ã'=>'zzo','ã£ã'=>'zzu',
+
+ // 1 character syllabels
+ 'ã'=>'a','ã'=>'e','ã'=>'i','ã'=>'o','ã'=>'u','ã'=>'n',
+ 'ã¯'=>'ha','ã¸'=>'he','ã²'=>'hi','ã»'=>'ho','ãµ'=>'hu',
+ 'ã°'=>'ba','ã¹'=>'be','ã³'=>'bi','ã¼'=>'bo','ã¶'=>'bu',
+ 'ã±'=>'pa','ãº'=>'pe','ã´'=>'pi','ã½'=>'po','ã·'=>'pu',
+ 'ã'=>'ta','ã¦'=>'te','ã¡'=>'ti','ã¨'=>'to','ã¤'=>'tu',
+ 'ã '=>'da','ã§'=>'de','ã¢'=>'di','ã©'=>'do','ã¥'=>'du',
+ 'ã'=>'ga','ã'=>'ge','ã'=>'gi','ã'=>'go','ã'=>'gu',
+ 'ã'=>'ka','ã'=>'ke','ã'=>'ki','ã'=>'ko','ã'=>'ku',
+ 'ã¾'=>'ma','ã'=>'me','ã¿'=>'mi','ã'=>'mo','ã'=>'mu',
+ 'ãª'=>'na','ã'=>'ne','ã«'=>'ni','ã®'=>'no','ã¬'=>'nu',
+ 'ã'=>'ra','ã'=>'re','ã'=>'ri','ã'=>'ro','ã'=>'ru',
+ 'ã'=>'sa','ã'=>'se','ã'=>'shi','ã'=>'so','ã'=>'su',
+ 'ã'=>'wa','ãã'=>'we','ãã'=>'wi','ã'=>'wo',
+ 'ã'=>'za','ã'=>'ze','ã'=>'zi','ã'=>'zo','ã'=>'zu',
+ 'ã'=>'ya','ãã'=>'ye','ã'=>'yo','ã'=>'yu',
+
+ // never seen one of those, but better save than sorry
+ 'ã§ã'=>'dha','ã§ã'=>'dhe','ã§ã'=>'dhi','ã§ã'=>'dho','ã§ã
'=>'dhu',
+ 'ã©ã'=>'dwa','ã©ã'=>'dwe','ã©ã'=>'dwi','ã©ã'=>'dwo','ã©ã
'=>'dwu',
+ 'ã¢ã'=>'dya','ã¢ã'=>'dye','ã¢ã'=>'dyi','ã¢ã'=>'dyo','ã¢ã
'=>'dyu',
+ 'ãµã'=>'fwa','ãµã'=>'fwe','ãµã'=>'fwi','ãµã'=>'fwo','ãµã
'=>'fwu',
+ 'ãµã'=>'fya','ãµã'=>'fye','ãµã'=>'fyi','ãµã'=>'fyo','ãµã
'=>'fyu',
+ 'ã´ã'=>'pya','ã´ã'=>'pye','ã´ã'=>'pyi','ã´ã'=>'pyo','ã´ã
'=>'pyu',
+ 'ãã'=>'swa','ãã'=>'swe','ãã'=>'swi','ãã'=>'swo','ãã
'=>'swu',
+ 'ã¦ã'=>'tha','ã¦ã'=>'the','ã¦ã'=>'thi','ã¦ã'=>'tho','ã¦ã
'=>'thu',
+ 'ã¤ã'=>'tsa','ã¤ã'=>'tse','ã¤ã'=>'tsi','ã¤ã'=>'tso','ã¤'=>'tsu',
+ 'ã¨ã'=>'twa','ã¨ã'=>'twe','ã¨ã'=>'twi','ã¨ã'=>'two','ã¨ã
'=>'twu',
+ 'ã´ã'=>'vya','ã´ã'=>'vye','ã´ã'=>'vyi','ã´ã'=>'vyo','ã´ã
'=>'vyu',
+ 'ãã'=>'wha','ãã'=>'whe','ãã'=>'whi','ãã'=>'who','ãã
'=>'whu',
+ 'ã'=>'wye','ã'=>'wyi',
+ 'ãã'=>'zha','ãã'=>'zhe','ãã'=>'zhi','ãã'=>'zho','ãã
'=>'zhu',
+ 'ãã'=>'zya','ãã'=>'zye','ãã'=>'zyi','ãã'=>'zyo','ãã
'=>'zyu',
+
+ // convert what's left (probably only kicks in when something's missing above
+ 'ã'=>'a','ã'=>'e','ã'=>'i','ã'=>'o','ã
'=>'u',
+ 'ã'=>'ya','ã'=>'yo','ã
'=>'yu',
+
+ // 'spare' characters from other romanization systems
+ // 'ã '=>'da','ã§'=>'de','ã¢'=>'di','ã©'=>'do','ã¥'=>'du',
+ // 'ã'=>'la','ã'=>'le','ã'=>'li','ã'=>'lo','ã'=>'lu',
+ // 'ã'=>'sa','ã'=>'se','ã'=>'si','ã'=>'so','ã'=>'su',
+ // 'ã¡ã'=>'cya','ã¡ã'=>'cye','ã¡ã'=>'cyi','ã¡ã'=>'cyo','ã¡ã
'=>'cyu',
+ //'ãã'=>'jya','ãã'=>'jye','ãã'=>'jyi','ãã'=>'jyo','ãã
'=>'jyu',
+ //'ãã'=>'lya','ãã'=>'lye','ãã'=>'lyi','ãã'=>'lyo','ãã
'=>'lyu',
+ //'ãã'=>'sya','ãã'=>'sye','ãã'=>'syi','ãã'=>'syo','ãã
'=>'syu',
+ //'ã¡ã'=>'tya','ã¡ã'=>'tye','ã¡ã'=>'tyi','ã¡ã'=>'tyo','ã¡ã
'=>'tyu',
+ //'ã'=>'ci',,ã'=>'yi','ã¢'=>'dzi',
+ //'ã£ãã'=>'jja','ã£ãã'=>'jje','ã£ã'=>'jji','ã£ãã'=>'jjo','ã£ãã
'=>'jju',
+
+
+ // Japanese katakana
+
+ // 4 character syllables: ã doubles the consonant after, ã¼ doubles the vowel before (usualy written with macron, but we don't want that in our URLs)
+ 'ããã£ã¼'=>'bbyaa','ããã§ã¼'=>'bbyee','ããã£ã¼'=>'bbyii','ããã§ã¼'=>'bbyoo','ããã¥ã¼'=>'bbyuu',
+ 'ããã£ã¼'=>'ppyaa','ããã§ã¼'=>'ppyee','ããã£ã¼'=>'ppyii','ããã§ã¼'=>'ppyoo','ããã¥ã¼'=>'ppyuu',
+ 'ããã£ã¼'=>'kkyaa','ããã§ã¼'=>'kkyee','ããã£ã¼'=>'kkyii','ããã§ã¼'=>'kkyoo','ããã¥ã¼'=>'kkyuu',
+ 'ãã®ã£ã¼'=>'ggyaa','ãã®ã§ã¼'=>'ggyee','ãã®ã£ã¼'=>'ggyii','ãã®ã§ã¼'=>'ggyoo','ãã®ã¥ã¼'=>'ggyuu',
+ 'ããã£ã¼'=>'mmyaa','ããã§ã¼'=>'mmyee','ããã£ã¼'=>'mmyii','ããã§ã¼'=>'mmyoo','ããã¥ã¼'=>'mmyuu',
+ 'ããã£ã¼'=>'nnyaa','ããã§ã¼'=>'nnyee','ããã£ã¼'=>'nnyii','ããã§ã¼'=>'nnyoo','ããã¥ã¼'=>'nnyuu',
+ 'ããªã£ã¼'=>'rryaa','ããªã§ã¼'=>'rryee','ããªã£ã¼'=>'rryii','ããªã§ã¼'=>'rryoo','ããªã¥ã¼'=>'rryuu',
+ 'ãã·ã£ã¼'=>'sshaa','ãã·ã§ã¼'=>'sshee','ãã·ã¼'=>'sshii','ãã·ã§ã¼'=>'sshoo','ãã·ã¥ã¼'=>'sshuu',
+ 'ããã£ã¼'=>'cchaa','ããã§ã¼'=>'cchee','ããã¼'=>'cchii','ããã§ã¼'=>'cchoo','ããã¥ã¼'=>'cchuu',
+
+ // 3 character syllables - doubled vowels
+ 'ãã¡ã¼'=>'faa','ãã§ã¼'=>'fee','ãã£ã¼'=>'fii','ãã©ã¼'=>'foo',
+ 'ãã£ã¼'=>'fyaa','ãã§ã¼'=>'fyee','ãã£ã¼'=>'fyii','ãã§ã¼'=>'fyoo','ãã¥ã¼'=>'fyuu',
+ 'ãã£ã¼'=>'hyaa','ãã§ã¼'=>'hyee','ãã£ã¼'=>'hyii','ãã§ã¼'=>'hyoo','ãã¥ã¼'=>'hyuu',
+ 'ãã£ã¼'=>'byaa','ãã§ã¼'=>'byee','ãã£ã¼'=>'byii','ãã§ã¼'=>'byoo','ãã¥ã¼'=>'byuu',
+ 'ãã£ã¼'=>'pyaa','ãã§ã¼'=>'pyee','ãã£ã¼'=>'pyii','ãã§ã¼'=>'pyoo','ãã¥ã¼'=>'pyuu',
+ 'ãã£ã¼'=>'kyaa','ãã§ã¼'=>'kyee','ãã£ã¼'=>'kyii','ãã§ã¼'=>'kyoo','ãã¥ã¼'=>'kyuu',
+ 'ã®ã£ã¼'=>'gyaa','ã®ã§ã¼'=>'gyee','ã®ã£ã¼'=>'gyii','ã®ã§ã¼'=>'gyoo','ã®ã¥ã¼'=>'gyuu',
+ 'ãã£ã¼'=>'myaa','ãã§ã¼'=>'myee','ãã£ã¼'=>'myii','ãã§ã¼'=>'myoo','ãã¥ã¼'=>'myuu',
+ 'ãã£ã¼'=>'nyaa','ãã§ã¼'=>'nyee','ãã£ã¼'=>'nyii','ãã§ã¼'=>'nyoo','ãã¥ã¼'=>'nyuu',
+ 'ãªã£ã¼'=>'ryaa','ãªã§ã¼'=>'ryee','ãªã£ã¼'=>'ryii','ãªã§ã¼'=>'ryoo','ãªã¥ã¼'=>'ryuu',
+ 'ã·ã£ã¼'=>'shaa','ã·ã§ã¼'=>'shee','ã·ã¼'=>'shii','ã·ã§ã¼'=>'shoo','ã·ã¥ã¼'=>'shuu',
+ 'ã¸ã£ã¼'=>'jaa','ã¸ã§ã¼'=>'jee','ã¸ã¼'=>'jii','ã¸ã§ã¼'=>'joo','ã¸ã¥ã¼'=>'juu',
+ 'ã¹ã¡ã¼'=>'swaa','ã¹ã§ã¼'=>'swee','ã¹ã£ã¼'=>'swii','ã¹ã©ã¼'=>'swoo','ã¹ã¥ã¼'=>'swuu',
+ 'ãã¡ã¼'=>'daa','ãã§ã¼'=>'dee','ãã£ã¼'=>'dii','ãã©ã¼'=>'doo','ãã¥ã¼'=>'duu',
+ 'ãã£ã¼'=>'chaa','ãã§ã¼'=>'chee','ãã¼'=>'chii','ãã§ã¼'=>'choo','ãã¥ã¼'=>'chuu',
+ 'ãã£ã¼'=>'dyaa','ãã§ã¼'=>'dyee','ãã£ã¼'=>'dyii','ãã§ã¼'=>'dyoo','ãã¥ã¼'=>'dyuu',
+ 'ãã£ã¼'=>'tsaa','ãã§ã¼'=>'tsee','ãã£ã¼'=>'tsii','ãã§ã¼'=>'tsoo','ãã¼'=>'tsuu',
+ 'ãã¡ã¼'=>'twaa','ãã§ã¼'=>'twee','ãã£ã¼'=>'twii','ãã©ã¼'=>'twoo','ãã¥ã¼'=>'twuu',
+ 'ãã¡ã¼'=>'dwaa','ãã§ã¼'=>'dwee','ãã£ã¼'=>'dwii','ãã©ã¼'=>'dwoo','ãã¥ã¼'=>'dwuu',
+ 'ã¦ã¡ã¼'=>'whaa','ã¦ã§ã¼'=>'whee','ã¦ã£ã¼'=>'whii','ã¦ã©ã¼'=>'whoo','ã¦ã¥ã¼'=>'whuu',
+ 'ã´ã£ã¼'=>'vyaa','ã´ã§ã¼'=>'vyee','ã´ã£ã¼'=>'vyii','ã´ã§ã¼'=>'vyoo','ã´ã¥ã¼'=>'vyuu',
+ 'ã´ã¡ã¼'=>'vaa','ã´ã§ã¼'=>'vee','ã´ã£ã¼'=>'vii','ã´ã©ã¼'=>'voo','ã´ã¼'=>'vuu',
+ 'ã¦ã§ã¼'=>'wee','ã¦ã£ã¼'=>'wii',
+ 'ã¤ã§ã¼'=>'yee',
+
+ // 3 character syllables - doubled consonants
+ 'ããã£'=>'bbya','ããã§'=>'bbye','ããã£'=>'bbyi','ããã§'=>'bbyo','ããã¥'=>'bbyu',
+ 'ããã£'=>'ppya','ããã§'=>'ppye','ããã£'=>'ppyi','ããã§'=>'ppyo','ããã¥'=>'ppyu',
+ 'ããã£'=>'kkya','ããã§'=>'kkye','ããã£'=>'kkyi','ããã§'=>'kkyo','ããã¥'=>'kkyu',
+ 'ãã®ã£'=>'ggya','ãã®ã§'=>'ggye','ãã®ã£'=>'ggyi','ãã®ã§'=>'ggyo','ãã®ã¥'=>'ggyu',
+ 'ããã£'=>'mmya','ããã§'=>'mmye','ããã£'=>'mmyi','ããã§'=>'mmyo','ããã¥'=>'mmyu',
+ 'ããã£'=>'nnya','ããã§'=>'nnye','ããã£'=>'nnyi','ããã§'=>'nnyo','ããã¥'=>'nnyu',
+ 'ããªã£'=>'rrya','ããªã§'=>'rrye','ããªã£'=>'rryi','ããªã§'=>'rryo','ããªã¥'=>'rryu',
+ 'ãã·ã£'=>'ssha','ãã·ã§'=>'sshe','ãã·'=>'sshi','ãã·ã§'=>'ssho','ãã·ã¥'=>'sshu',
+ 'ããã£'=>'ccha','ããã§'=>'cche','ãã'=>'cchi','ããã§'=>'ccho','ããã¥'=>'cchu',
+
+ // 3 character syllables - doubled vowel and consonants
+ 'ããã¼'=>'bbaa','ããã¼'=>'bbee','ããã¼'=>'bbii','ããã¼'=>'bboo','ããã¼'=>'bbuu',
+ 'ããã¼'=>'ppaa','ããã¼'=>'ppee','ããã¼'=>'ppii','ããã¼'=>'ppoo','ããã¼'=>'ppuu',
+ 'ãã±ã¼'=>'kkee','ããã¼'=>'kkii','ãã³ã¼'=>'kkoo','ãã¯ã¼'=>'kkuu','ãã«ã¼'=>'kkaa',
+ 'ãã¬ã¼'=>'ggaa','ãã²ã¼'=>'ggee','ãã®ã¼'=>'ggii','ãã´ã¼'=>'ggoo','ãã°ã¼'=>'gguu',
+ 'ããã¼'=>'maa','ãã¡ã¼'=>'mee','ããã¼'=>'mii','ãã¢ã¼'=>'moo','ãã ã¼'=>'muu',
+ 'ããã¼'=>'nnaa','ããã¼'=>'nnee','ããã¼'=>'nnii','ããã¼'=>'nnoo','ããã¼'=>'nnuu',
+ 'ãã©ã¼'=>'rraa','ãã¬ã¼'=>'rree','ããªã¼'=>'rrii','ããã¼'=>'rroo','ãã«ã¼'=>'rruu',
+ 'ããµã¼'=>'ssaa','ãã»ã¼'=>'ssee','ãã·ã¼'=>'sshii','ãã½ã¼'=>'ssoo','ãã¹ã¼'=>'ssuu',
+ 'ãã¶ã¼'=>'zzaa','ãã¼ã¼'=>'zzee','ãã¸ã¼'=>'zzii','ãã¾ã¼'=>'zzoo','ããºã¼'=>'zzuu',
+ 'ãã¿ã¼'=>'ttaa','ããã¼'=>'ttee','ããã¼'=>'chii','ããã¼'=>'ttoo','ããã¼'=>'ttssuu',
+ 'ããã¼'=>'ddaa','ããã¼'=>'ddee','ããã¼'=>'ddii','ããã¼'=>'ddoo','ãã
ã¼'=>'dduu',
+
+ // 2 character syllables - normal
+ 'ãã¡'=>'fa','ãã§'=>'fe','ãã£'=>'fi','ãã©'=>'fo',
+ 'ãã£'=>'fya','ãã§'=>'fye','ãã£'=>'fyi','ãã§'=>'fyo','ãã¥'=>'fyu',
+ 'ãã£'=>'hya','ãã§'=>'hye','ãã£'=>'hyi','ãã§'=>'hyo','ãã¥'=>'hyu',
+ 'ãã£'=>'bya','ãã§'=>'bye','ãã£'=>'byi','ãã§'=>'byo','ãã¥'=>'byu',
+ 'ãã£'=>'pya','ãã§'=>'pye','ãã£'=>'pyi','ãã§'=>'pyo','ãã¥'=>'pyu',
+ 'ãã£'=>'kya','ãã§'=>'kye','ãã£'=>'kyi','ãã§'=>'kyo','ãã¥'=>'kyu',
+ 'ã®ã£'=>'gya','ã®ã§'=>'gye','ã®ã£'=>'gyi','ã®ã§'=>'gyo','ã®ã¥'=>'gyu',
+ 'ãã£'=>'mya','ãã§'=>'mye','ãã£'=>'myi','ãã§'=>'myo','ãã¥'=>'myu',
+ 'ãã£'=>'nya','ãã§'=>'nye','ãã£'=>'nyi','ãã§'=>'nyo','ãã¥'=>'nyu',
+ 'ãªã£'=>'rya','ãªã§'=>'rye','ãªã£'=>'ryi','ãªã§'=>'ryo','ãªã¥'=>'ryu',
+ 'ã·ã£'=>'sha','ã·ã§'=>'she','ã·'=>'shi','ã·ã§'=>'sho','ã·ã¥'=>'shu',
+ 'ã¸ã£'=>'ja','ã¸ã§'=>'je','ã¸'=>'ji','ã¸ã§'=>'jo','ã¸ã¥'=>'ju',
+ 'ã¹ã¡'=>'swa','ã¹ã§'=>'swe','ã¹ã£'=>'swi','ã¹ã©'=>'swo','ã¹ã¥'=>'swu',
+ 'ãã¡'=>'da','ãã§'=>'de','ãã£'=>'di','ãã©'=>'do','ãã¥'=>'du',
+ 'ãã£'=>'cha','ãã§'=>'che','ã'=>'chi','ãã§'=>'cho','ãã¥'=>'chu',
+ 'ãã£'=>'dya','ãã§'=>'dye','ãã£'=>'dyi','ãã§'=>'dyo','ãã¥'=>'dyu',
+ 'ãã£'=>'tsa','ãã§'=>'tse','ãã£'=>'tsi','ãã§'=>'tso','ã'=>'tsu',
+ 'ãã¡'=>'twa','ãã§'=>'twe','ãã£'=>'twi','ãã©'=>'two','ãã¥'=>'twu',
+ 'ãã¡'=>'dwa','ãã§'=>'dwe','ãã£'=>'dwi','ãã©'=>'dwo','ãã¥'=>'dwu',
+ 'ã¦ã¡'=>'wha','ã¦ã§'=>'whe','ã¦ã£'=>'whi','ã¦ã©'=>'who','ã¦ã¥'=>'whu',
+ 'ã´ã£'=>'vya','ã´ã§'=>'vye','ã´ã£'=>'vyi','ã´ã§'=>'vyo','ã´ã¥'=>'vyu',
+ 'ã´ã¡'=>'va','ã´ã§'=>'ve','ã´ã£'=>'vi','ã´ã©'=>'vo','ã´'=>'vu',
+ 'ã¦ã§'=>'we','ã¦ã£'=>'wi',
+ 'ã¤ã§'=>'ye',
+
+ // 2 character syllables - doubled vocal
+ 'ã¢ã¼'=>'aa','ã¨ã¼'=>'ee','ã¤ã¼'=>'ii','ãªã¼'=>'oo','ã¦ã¼'=>'uu',
+ 'ãã¼'=>'daa','ãã¼'=>'dee','ãã¼'=>'dii','ãã¼'=>'doo','ã
ã¼'=>'duu',
+ 'ãã¼'=>'haa','ãã¼'=>'hee','ãã¼'=>'hii','ãã¼'=>'hoo','ãã¼'=>'fuu',
+ 'ãã¼'=>'baa','ãã¼'=>'bee','ãã¼'=>'bii','ãã¼'=>'boo','ãã¼'=>'buu',
+ 'ãã¼'=>'paa','ãã¼'=>'pee','ãã¼'=>'pii','ãã¼'=>'poo','ãã¼'=>'puu',
+ 'ã±ã¼'=>'kee','ãã¼'=>'kii','ã³ã¼'=>'koo','ã¯ã¼'=>'kuu','ã«ã¼'=>'kaa',
+ 'ã¬ã¼'=>'gaa','ã²ã¼'=>'gee','ã®ã¼'=>'gii','ã´ã¼'=>'goo','ã°ã¼'=>'guu',
+ 'ãã¼'=>'maa','ã¡ã¼'=>'mee','ãã¼'=>'mii','ã¢ã¼'=>'moo','ã ã¼'=>'muu',
+ 'ãã¼'=>'naa','ãã¼'=>'nee','ãã¼'=>'nii','ãã¼'=>'noo','ãã¼'=>'nuu',
+ 'ã©ã¼'=>'raa','ã¬ã¼'=>'ree','ãªã¼'=>'rii','ãã¼'=>'roo','ã«ã¼'=>'ruu',
+ 'ãµã¼'=>'saa','ã»ã¼'=>'see','ã·ã¼'=>'shii','ã½ã¼'=>'soo','ã¹ã¼'=>'suu',
+ 'ã¶ã¼'=>'zaa','ã¼ã¼'=>'zee','ã¸ã¼'=>'zii','ã¾ã¼'=>'zoo','ãºã¼'=>'zuu',
+ 'ã¿ã¼'=>'taa','ãã¼'=>'tee','ãã¼'=>'chii','ãã¼'=>'too','ãã¼'=>'tsuu',
+ 'ã¯ã¼'=>'waa','ã²ã¼'=>'woo',
+ 'ã¤ã¼'=>'yaa','ã¨ã¼'=>'yoo','ã¦ã¼'=>'yuu',
+ 'ã±ã¼'=>'wyee','ã°ã¼'=>'wyii',
+ 'ãµã¼'=>'kaa','ã¶ã¼'=>'kee',
+
+ // 2 character syllables - doubled consonants
+ 'ãã'=>'bba','ãã'=>'bbe','ãã'=>'bbi','ãã'=>'bbo','ãã'=>'bbu',
+ 'ãã'=>'ppa','ãã'=>'ppe','ãã'=>'ppi','ãã'=>'ppo','ãã'=>'ppu',
+ 'ãã±'=>'kke','ãã'=>'kki','ãã³'=>'kko','ãã¯'=>'kku','ãã«'=>'kka',
+ 'ãã¬'=>'gga','ãã²'=>'gge','ãã®'=>'ggi','ãã´'=>'ggo','ãã°'=>'ggu',
+ 'ãã'=>'ma','ãã¡'=>'me','ãã'=>'mi','ãã¢'=>'mo','ãã '=>'mu',
+ 'ãã'=>'nna','ãã'=>'nne','ãã'=>'nni','ãã'=>'nno','ãã'=>'nnu',
+ 'ãã©'=>'rra','ãã¬'=>'rre','ããª'=>'rri','ãã'=>'rro','ãã«'=>'rru',
+ 'ããµ'=>'ssa','ãã»'=>'sse','ãã·'=>'sshi','ãã½'=>'sso','ãã¹'=>'ssu',
+ 'ãã¶'=>'zza','ãã¼'=>'zze','ãã¸'=>'zzi','ãã¾'=>'zzo','ããº'=>'zzu',
+ 'ãã¿'=>'tta','ãã'=>'tte','ãã'=>'chi','ãã'=>'tto','ãã'=>'ttssu',
+ 'ãã'=>'dda','ãã'=>'dde','ãã'=>'ddi','ãã'=>'ddo','ãã
'=>'ddu',
+
+ // 1 character syllables
+ 'ã¢'=>'a','ã¨'=>'e','ã¤'=>'i','ãª'=>'o','ã¦'=>'u','ã³'=>'n',
+ 'ã'=>'ha','ã'=>'he','ã'=>'hi','ã'=>'ho','ã'=>'fu',
+ 'ã'=>'ba','ã'=>'be','ã'=>'bi','ã'=>'bo','ã'=>'bu',
+ 'ã'=>'pa','ã'=>'pe','ã'=>'pi','ã'=>'po','ã'=>'pu',
+ 'ã±'=>'ke','ã'=>'ki','ã³'=>'ko','ã¯'=>'ku','ã«'=>'ka',
+ 'ã¬'=>'ga','ã²'=>'ge','ã®'=>'gi','ã´'=>'go','ã°'=>'gu',
+ 'ã'=>'ma','ã¡'=>'me','ã'=>'mi','ã¢'=>'mo','ã '=>'mu',
+ 'ã'=>'na','ã'=>'ne','ã'=>'ni','ã'=>'no','ã'=>'nu',
+ 'ã©'=>'ra','ã¬'=>'re','ãª'=>'ri','ã'=>'ro','ã«'=>'ru',
+ 'ãµ'=>'sa','ã»'=>'se','ã·'=>'shi','ã½'=>'so','ã¹'=>'su',
+ 'ã¶'=>'za','ã¼'=>'ze','ã¸'=>'zi','ã¾'=>'zo','ãº'=>'zu',
+ 'ã¿'=>'ta','ã'=>'te','ã'=>'chi','ã'=>'to','ã'=>'tsu',
+ 'ã'=>'da','ã'=>'de','ã'=>'di','ã'=>'do','ã
'=>'du',
+ 'ã¯'=>'wa','ã²'=>'wo',
+ 'ã¤'=>'ya','ã¨'=>'yo','ã¦'=>'yu',
+ 'ã±'=>'wye','ã°'=>'wyi',
+ 'ãµ'=>'ka','ã¶'=>'ke',
+
+ // convert what's left (probably only kicks in when something's missing above
+ 'ã¡'=>'a','ã§'=>'e','ã£'=>'i','ã©'=>'o','ã¥'=>'u',
+ 'ã£'=>'ya','ã§'=>'yo','ã¥'=>'yu',
+
+ // 'ã©'=>'la','ã¬'=>'le','ãª'=>'li','ã'=>'lo','ã«'=>'lu',
+ // 'ãã£'=>'cya','ãã§'=>'cye','ãã£'=>'cyi','ãã§'=>'cyo','ãã¥'=>'cyu',
+ //'ãã£'=>'dha','ãã§'=>'dhe','ãã£'=>'dhi','ãã§'=>'dho','ãã¥'=>'dhu',
+ // 'ãªã£'=>'lya','ãªã§'=>'lye','ãªã£'=>'lyi','ãªã§'=>'lyo','ãªã¥'=>'lyu',
+ // 'ãã£'=>'tha','ãã§'=>'the','ãã£'=>'thi','ãã§'=>'tho','ãã¥'=>'thu',
+ //'ãã¡'=>'fwa','ãã§'=>'fwe','ãã£'=>'fwi','ãã©'=>'fwo','ãã¥'=>'fwu',
+ //'ãã£'=>'tya','ãã§'=>'tye','ãã£'=>'tyi','ãã§'=>'tyo','ãã¥'=>'tyu',
+ // 'ã¸ã£'=>'jya','ã¸ã§'=>'jye','ã¸ã£'=>'jyi','ã¸ã§'=>'jyo','ã¸ã¥'=>'jyu',
+ // 'ã¸ã£'=>'zha','ã¸ã§'=>'zhe','ã¸ã£'=>'zhi','ã¸ã§'=>'zho','ã¸ã¥'=>'zhu',
+ //'ã¸ã£'=>'zya','ã¸ã§'=>'zye','ã¸ã£'=>'zyi','ã¸ã§'=>'zyo','ã¸ã¥'=>'zyu',
+ //'ã·ã£'=>'sya','ã·ã§'=>'sye','ã·ã£'=>'syi','ã·ã§'=>'syo','ã·ã¥'=>'syu',
+ //'ã·'=>'ci','ã'=>'hu',ã·'=>'si','ã'=>'ti','ã'=>'tu','ã¤'=>'yi','ã'=>'dzi',
+
+ // "Greeklish"
+ 'Î'=>'G','Î'=>'E','Î'=>'Th','Î'=>'L','Î'=>'X','Î '=>'P','Σ'=>'S','Φ'=>'F','Ψ'=>'Ps',
+ 'γ'=>'g','δ'=>'e','θ'=>'th','λ'=>'l','ξ'=>'x','Ï'=>'p','Ï'=>'s','Ï'=>'f','Ï'=>'ps',
+
+ // Thai
+ 'à¸'=>'k','à¸'=>'kh','à¸'=>'kh','à¸'=>'kh','à¸
'=>'kh','à¸'=>'kh','à¸'=>'ng','à¸'=>'ch',
+ 'à¸'=>'ch','à¸'=>'ch','à¸'=>'s','à¸'=>'ch','à¸'=>'y','à¸'=>'d','à¸'=>'t','à¸'=>'th',
+ 'à¸'=>'d','à¸'=>'th','à¸'=>'n','à¸'=>'d','à¸'=>'t','à¸'=>'th','à¸'=>'th','à¸'=>'th',
+ 'à¸'=>'n','à¸'=>'b','à¸'=>'p','à¸'=>'ph','à¸'=>'f','à¸'=>'ph','à¸'=>'f','ภ'=>'ph',
+ 'ม'=>'m','ย'=>'y','ร'=>'r','ฤ'=>'rue','ฤà¹
'=>'rue','ล'=>'l','ฦ'=>'lue',
+ 'ฦà¹
'=>'lue','ว'=>'w','ศ'=>'s','ษ'=>'s','ส'=>'s','ห'=>'h','ฬ'=>'l','ฮ'=>'h',
+ 'ะ'=>'a','ั'=>'a','รร'=>'a','า'=>'a','à¹
'=>'a','ำ'=>'am','à¹à¸²'=>'am',
+ 'ิ'=>'i','ี'=>'i','ึ'=>'ue','ี'=>'ue','ุ'=>'u','ู'=>'u',
+ 'à¹'=>'e','à¹'=>'ae','à¹'=>'o','à¸'=>'o',
+ 'ียะ'=>'ia','ีย'=>'ia','ืà¸à¸°'=>'uea','ืà¸'=>'uea','ัวะ'=>'ua','ัว'=>'ua',
+ 'à¹'=>'ai','à¹'=>'ai','ัย'=>'ai','าย'=>'ai','าว'=>'ao',
+ 'ุย'=>'ui','à¸à¸¢'=>'oi','ืà¸à¸¢'=>'ueai','วย'=>'uai',
+ 'ิว'=>'io','à¹à¸§'=>'eo','ียว'=>'iao',
+ 'à¹'=>'','à¹'=>'','à¹'=>'','à¹'=>'','à¹'=>'',
+ 'à¹'=>'','à¹'=>'','à¹'=>'','ฺ'=>'',
+ 'à¹'=>'2','à¹'=>'o','ฯ'=>'-','à¹'=>'-','à¹'=>'-',
+ 'à¹'=>'0','à¹'=>'1','à¹'=>'2','à¹'=>'3','à¹'=>'4',
+ 'à¹'=>'5','à¹'=>'6','à¹'=>'7','à¹'=>'8','à¹'=>'9',
+
+ // Korean
+ 'ã±'=>'k','ã
'=>'kh','ã²'=>'kk','ã·'=>'t','ã
'=>'th','ã¸'=>'tt','ã
'=>'p',
+ 'ã
'=>'ph','ã
'=>'pp','ã
'=>'c','ã
'=>'ch','ã
'=>'cc','ã
'=>'s','ã
'=>'ss',
+ 'ã
'=>'h','ã
'=>'ng','ã´'=>'n','ã¹'=>'l','ã
'=>'m', 'ã
'=>'a','ã
'=>'e','ã
'=>'o',
+ 'ã
'=>'wu','ã
¡'=>'u','ã
£'=>'i','ã
'=>'ay','ã
'=>'ey','ã
'=>'oy','ã
'=>'wa','ã
'=>'we',
+ 'ã
'=>'wi','ã
'=>'way','ã
'=>'wey','ã
¢'=>'uy','ã
'=>'ya','ã
'=>'ye','ã
'=>'oy',
+ 'ã
'=>'yu','ã
'=>'yay','ã
'=>'yey',
+);
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
+
Modified: site/trunk/www-root/wiki/index.php
===================================================================
--- site/trunk/www-root/wiki/index.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/index.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,9 +1,9 @@
-<?php
-/**
- * Forwarder to doku.php
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-header("Location: doku.php");
-?>
+<?php
+/**
+ * Forwarder to doku.php
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+header("Location: doku.php");
+?>
Modified: site/trunk/www-root/wiki/lib/exe/ajax.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/ajax.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/ajax.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,235 +1,235 @@
-<?php
-/**
- * DokuWiki AJAX call handler
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-//fix for Opera XMLHttpRequests
-if(!count($_POST) && $HTTP_RAW_POST_DATA){
- parse_str($HTTP_RAW_POST_DATA, $_POST);
-}
-
-if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
-require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/common.php');
-require_once(DOKU_INC.'inc/pageutils.php');
-require_once(DOKU_INC.'inc/auth.php');
-//close sesseion
-session_write_close();
-
-header('Content-Type: text/html; charset=utf-8');
-
-
-//call the requested function
-if(isset($_POST['call']))
- $call = 'ajax_'.$_POST['call'];
-else if(isset($_GET['call']))
- $call = 'ajax_'.$_GET['call'];
-else
- exit;
-if(function_exists($call)){
- $call();
-}else{
- $call = $_POST['call'];
- $evt = new Doku_Event('AJAX_CALL_UNKNOWN', $call);
- if ($evt->advise_before()) {
- print "AJAX call '".htmlspecialchars($_POST['call'])."' unknown!\n";
- }
- $evt->advise_after();
- unset($evt);
-}
-
-/**
- * Searches for matching pagenames
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ajax_qsearch(){
- global $conf;
- global $lang;
-
- $query = cleanID($_POST['q']);
- if(empty($query)) $query = cleanID($_GET['q']);
- if(empty($query)) return;
-
- require_once(DOKU_INC.'inc/html.php');
- require_once(DOKU_INC.'inc/fulltext.php');
-
- $data = array();
- $data = ft_pageLookup($query);
-
- if(!count($data)) return;
-
- print '<strong>'.$lang['quickhits'].'</strong>';
- print '<ul>';
- foreach($data as $id){
- print '<li>';
- print html_wikilink(':'.$id);
- print '</li>';
- }
- print '</ul>';
-}
-
-/**
- * Support OpenSearch suggestions
- *
- * @link http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions/1.0
- * @author Mike Frysinger <vapier at gentoo.org>
- */
-function ajax_suggestions() {
- global $conf;
- global $lang;
-
- $query = cleanID($_POST['q']);
- if(empty($query)) $query = cleanID($_GET['q']);
- if(empty($query)) return;
-
- require_once(DOKU_INC.'inc/html.php');
- require_once(DOKU_INC.'inc/fulltext.php');
- require_once(DOKU_INC.'inc/JSON.php');
-
- $data = array();
- $data = ft_pageLookup($query);
- if(!count($data)) return;
-
- // limit results to 15 hits
- $data = array_slice($data, 0, 15);
- $data = array_map('trim',$data);
- $data = array_map('noNS',$data);
- $data = array_unique($data);
- sort($data);
-
- /* now construct a json */
- $suggestions = array(
- $query, // the original query
- $data, // some suggestions
- array(), // no description
- array() // no urls
- );
- $json = new JSON();
-
- header('Content-Type: application/x-suggestions+json');
- print $json->encode($suggestions);
-}
-
-/**
- * Refresh a page lock and save draft
- *
- * Andreas Gohr <andi at splitbrain.org>
- */
-function ajax_lock(){
- global $conf;
- global $lang;
- $id = cleanID($_POST['id']);
- if(empty($id)) return;
-
- if(!checklock($id)){
- lock($id);
- echo 1;
- }
-
- if($conf['usedraft'] && $_POST['wikitext']){
- $client = $_SERVER['REMOTE_USER'];
- if(!$client) $client = clientIP(true);
-
- $draft = array('id' => $id,
- 'prefix' => $_POST['prefix'],
- 'text' => $_POST['wikitext'],
- 'suffix' => $_POST['suffix'],
- 'date' => $_POST['date'],
- 'client' => $client,
- );
- $cname = getCacheName($draft['client'].$id,'.draft');
- if(io_saveFile($cname,serialize($draft))){
- echo $lang['draftdate'].' '.strftime($conf['dformat']);
- }
- }
-
-}
-
-/**
- * Delete a draft
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ajax_draftdel(){
- $id = cleanID($_POST['id']);
- if(empty($id)) return;
-
- $client = $_SERVER['REMOTE_USER'];
- if(!$client) $client = clientIP(true);
-
- $cname = getCacheName($client.$id,'.draft');
- @unlink($cname);
-}
-
-/**
- * Return subnamespaces for the Mediamanager
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ajax_medians(){
- global $conf;
- require_once(DOKU_INC.'inc/search.php');
- require_once(DOKU_INC.'inc/media.php');
-
- // wanted namespace
- $ns = cleanID($_POST['ns']);
- $dir = utf8_encodeFN(str_replace(':','/',$ns));
-
- $lvl = count(explode(':',$ns));
-
- $data = array();
- search($data,$conf['mediadir'],'search_index',array('nofiles' => true),$dir);
- foreach($data as $item){
- $item['level'] = $lvl+1;
- echo media_nstree_li($item);
- echo media_nstree_item($item);
- echo '</li>';
- }
-}
-
-/**
- * Return list of files for the Mediamanager
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ajax_medialist(){
- global $conf;
- require_once(DOKU_INC.'inc/media.php');
-
- media_filelist($_POST['ns']);
-}
-
-/**
- * Return sub index for index view
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function ajax_index(){
- global $conf;
- require_once(DOKU_INC.'inc/search.php');
- require_once(DOKU_INC.'inc/html.php');
-
- // wanted namespace
- $ns = cleanID($_POST['idx']);
- $dir = utf8_encodeFN(str_replace(':','/',$ns));
-
- $lvl = count(explode(':',$ns));
-
- $data = array();
- search($data,$conf['datadir'],'search_index',array('ns' => $ns),$dir);
- foreach($data as $item){
- $item['level'] = $lvl+1;
- echo html_li_index($item);
- echo '<div class="li">';
- echo html_list_index($item);
- echo '</div>';
- echo '</li>';
- }
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
-?>
+<?php
+/**
+ * DokuWiki AJAX call handler
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+//fix for Opera XMLHttpRequests
+if(!count($_POST) && $HTTP_RAW_POST_DATA){
+ parse_str($HTTP_RAW_POST_DATA, $_POST);
+}
+
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/common.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/auth.php');
+//close sesseion
+session_write_close();
+
+header('Content-Type: text/html; charset=utf-8');
+
+
+//call the requested function
+if(isset($_POST['call']))
+ $call = 'ajax_'.$_POST['call'];
+else if(isset($_GET['call']))
+ $call = 'ajax_'.$_GET['call'];
+else
+ exit;
+if(function_exists($call)){
+ $call();
+}else{
+ $call = $_POST['call'];
+ $evt = new Doku_Event('AJAX_CALL_UNKNOWN', $call);
+ if ($evt->advise_before()) {
+ print "AJAX call '".htmlspecialchars($_POST['call'])."' unknown!\n";
+ }
+ $evt->advise_after();
+ unset($evt);
+}
+
+/**
+ * Searches for matching pagenames
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ajax_qsearch(){
+ global $conf;
+ global $lang;
+
+ $query = cleanID($_POST['q']);
+ if(empty($query)) $query = cleanID($_GET['q']);
+ if(empty($query)) return;
+
+ require_once(DOKU_INC.'inc/html.php');
+ require_once(DOKU_INC.'inc/fulltext.php');
+
+ $data = array();
+ $data = ft_pageLookup($query);
+
+ if(!count($data)) return;
+
+ print '<strong>'.$lang['quickhits'].'</strong>';
+ print '<ul>';
+ foreach($data as $id){
+ print '<li>';
+ print html_wikilink(':'.$id);
+ print '</li>';
+ }
+ print '</ul>';
+}
+
+/**
+ * Support OpenSearch suggestions
+ *
+ * @link http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions/1.0
+ * @author Mike Frysinger <vapier at gentoo.org>
+ */
+function ajax_suggestions() {
+ global $conf;
+ global $lang;
+
+ $query = cleanID($_POST['q']);
+ if(empty($query)) $query = cleanID($_GET['q']);
+ if(empty($query)) return;
+
+ require_once(DOKU_INC.'inc/html.php');
+ require_once(DOKU_INC.'inc/fulltext.php');
+ require_once(DOKU_INC.'inc/JSON.php');
+
+ $data = array();
+ $data = ft_pageLookup($query);
+ if(!count($data)) return;
+
+ // limit results to 15 hits
+ $data = array_slice($data, 0, 15);
+ $data = array_map('trim',$data);
+ $data = array_map('noNS',$data);
+ $data = array_unique($data);
+ sort($data);
+
+ /* now construct a json */
+ $suggestions = array(
+ $query, // the original query
+ $data, // some suggestions
+ array(), // no description
+ array() // no urls
+ );
+ $json = new JSON();
+
+ header('Content-Type: application/x-suggestions+json');
+ print $json->encode($suggestions);
+}
+
+/**
+ * Refresh a page lock and save draft
+ *
+ * Andreas Gohr <andi at splitbrain.org>
+ */
+function ajax_lock(){
+ global $conf;
+ global $lang;
+ $id = cleanID($_POST['id']);
+ if(empty($id)) return;
+
+ if(!checklock($id)){
+ lock($id);
+ echo 1;
+ }
+
+ if($conf['usedraft'] && $_POST['wikitext']){
+ $client = $_SERVER['REMOTE_USER'];
+ if(!$client) $client = clientIP(true);
+
+ $draft = array('id' => $id,
+ 'prefix' => $_POST['prefix'],
+ 'text' => $_POST['wikitext'],
+ 'suffix' => $_POST['suffix'],
+ 'date' => $_POST['date'],
+ 'client' => $client,
+ );
+ $cname = getCacheName($draft['client'].$id,'.draft');
+ if(io_saveFile($cname,serialize($draft))){
+ echo $lang['draftdate'].' '.strftime($conf['dformat']);
+ }
+ }
+
+}
+
+/**
+ * Delete a draft
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ajax_draftdel(){
+ $id = cleanID($_POST['id']);
+ if(empty($id)) return;
+
+ $client = $_SERVER['REMOTE_USER'];
+ if(!$client) $client = clientIP(true);
+
+ $cname = getCacheName($client.$id,'.draft');
+ @unlink($cname);
+}
+
+/**
+ * Return subnamespaces for the Mediamanager
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ajax_medians(){
+ global $conf;
+ require_once(DOKU_INC.'inc/search.php');
+ require_once(DOKU_INC.'inc/media.php');
+
+ // wanted namespace
+ $ns = cleanID($_POST['ns']);
+ $dir = utf8_encodeFN(str_replace(':','/',$ns));
+
+ $lvl = count(explode(':',$ns));
+
+ $data = array();
+ search($data,$conf['mediadir'],'search_index',array('nofiles' => true),$dir);
+ foreach($data as $item){
+ $item['level'] = $lvl+1;
+ echo media_nstree_li($item);
+ echo media_nstree_item($item);
+ echo '</li>';
+ }
+}
+
+/**
+ * Return list of files for the Mediamanager
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ajax_medialist(){
+ global $conf;
+ require_once(DOKU_INC.'inc/media.php');
+
+ media_filelist($_POST['ns']);
+}
+
+/**
+ * Return sub index for index view
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function ajax_index(){
+ global $conf;
+ require_once(DOKU_INC.'inc/search.php');
+ require_once(DOKU_INC.'inc/html.php');
+
+ // wanted namespace
+ $ns = cleanID($_POST['idx']);
+ $dir = utf8_encodeFN(str_replace(':','/',$ns));
+
+ $lvl = count(explode(':',$ns));
+
+ $data = array();
+ search($data,$conf['datadir'],'search_index',array('ns' => $ns),$dir);
+ foreach($data as $item){
+ $item['level'] = $lvl+1;
+ echo html_li_index($item);
+ echo '<div class="li">';
+ echo html_list_index($item);
+ echo '</div>';
+ echo '</li>';
+ }
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
+?>
Modified: site/trunk/www-root/wiki/lib/exe/css.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/css.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/css.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,313 +1,313 @@
-<?php
-/**
- * DokuWiki StyleSheet creator
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
-if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
-require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/pageutils.php');
-require_once(DOKU_INC.'inc/io.php');
-require_once(DOKU_INC.'inc/confutils.php');
-
-// Main (don't run when UNIT test)
-if(!defined('SIMPLE_TEST')){
- header('Content-Type: text/css; charset=utf-8');
- css_out();
-}
-
-
-// ---------------------- functions ------------------------------
-
-/**
- * Output all needed Styles
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_out(){
- global $conf;
- global $lang;
- switch ($_REQUEST['s']) {
- case 'all':
- case 'print':
- case 'feed':
- $style = $_REQUEST['s'];
- break;
- default:
- $style = '';
- break;
- }
-
- $tpl = trim(preg_replace('/[^\w]+/','',$_REQUEST['t']));
- if($tpl){
- $tplinc = DOKU_INC.'lib/tpl/'.$tpl.'/';
- $tpldir = DOKU_BASE.'lib/tpl/'.$tpl.'/';
- }else{
- $tplinc = DOKU_TPLINC;
- $tpldir = DOKU_TPL;
- }
-
- // The generated script depends on some dynamic options
- $cache = getCacheName('styles'.DOKU_BASE.$tplinc.$style,'.css');
-
- // load template styles
- $tplstyles = array();
- if(@file_exists($tplinc.'style.ini')){
- $ini = parse_ini_file($tplinc.'style.ini',true);
- foreach($ini['stylesheets'] as $file => $mode){
- $tplstyles[$mode][$tplinc.$file] = $tpldir;
- }
- }
-
- // Array of needed files and their web locations, the latter ones
- // are needed to fix relative paths in the stylesheets
- $files = array();
- //if (isset($tplstyles['all'])) $files = array_merge($files, $tplstyles['all']);
- if(!empty($style)){
- $files[DOKU_INC.'lib/styles/'.$style.'.css'] = DOKU_BASE.'lib/styles/';
- // load plugin, template, user styles
- $files = array_merge($files, css_pluginstyles($style));
- if (isset($tplstyles[$style])) $files = array_merge($files, $tplstyles[$style]);
- $files[DOKU_CONF.'user'.$style.'.css'] = '';
- }else{
- $files[DOKU_INC.'lib/styles/style.css'] = DOKU_BASE.'lib/styles/';
- if($conf['spellchecker']){
- $files[DOKU_INC.'lib/styles/spellcheck.css'] = DOKU_BASE.'lib/styles/';
- }
- // load plugin, template, user styles
- $files = array_merge($files, css_pluginstyles('screen'));
- if (isset($tplstyles['screen'])) $files = array_merge($files, $tplstyles['screen']);
- if($lang['direction'] == 'rtl'){
- if (isset($tplstyles['rtl'])) $files = array_merge($files, $tplstyles['rtl']);
- }
- $files[DOKU_CONF.'userstyle.css'] = '';
- }
-
- // check cache age & handle conditional request
- header('Cache-Control: public, max-age=3600');
- header('Pragma: public');
- if(css_cacheok($cache,array_keys($files),$tplinc)){
- http_conditionalRequest(filemtime($cache));
- if($conf['allowdebug']) header("X-CacheUsed: $cache");
- readfile($cache);
- return;
- } else {
- http_conditionalRequest(time());
- }
-
- // start output buffering and build the stylesheet
- ob_start();
-
- // print the default classes for interwiki links and file downloads
- css_interwiki();
- css_filetypes();
-
- // load files
- foreach($files as $file => $location){
- print css_loadfile($file, $location);
- }
-
- // end output buffering and get contents
- $css = ob_get_contents();
- ob_end_clean();
-
- // apply style replacements
- $css = css_applystyle($css,$tplinc);
-
- // compress whitespace and comments
- if($conf['compress']){
- $css = css_compress($css);
- }
-
- // save cache file
- io_saveFile($cache,$css);
-
- // finally send output
- print $css;
-}
-
-/**
- * Checks if a CSS Cache file still is valid
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_cacheok($cache,$files,$tplinc){
- if($_REQUEST['purge']) return false; //support purge request
-
- $ctime = @filemtime($cache);
- if(!$ctime) return false; //There is no cache
-
- // some additional files to check
- $files[] = DOKU_CONF.'dokuwiki.php';
- $files[] = DOKU_CONF.'local.php';
- $files[] = $tplinc.'style.ini';
- $files[] = __FILE__;
-
- // now walk the files
- foreach($files as $file){
- if(@filemtime($file) > $ctime){
- return false;
- }
- }
- return true;
-}
-
-/**
- * Does placeholder replacements in the style according to
- * the ones defined in a templates style.ini file
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_applystyle($css,$tplinc){
- if(@file_exists($tplinc.'style.ini')){
- $ini = parse_ini_file($tplinc.'style.ini',true);
- $css = strtr($css,$ini['replacements']);
- }
- return $css;
-}
-
-/**
- * Prints classes for interwikilinks
- *
- * Interwiki links have two classes: 'interwiki' and 'iw_$name>' where
- * $name is the identifier given in the config. All Interwiki links get
- * an default style with a default icon. If a special icon is available
- * for an interwiki URL it is set in it's own class. Both classes can be
- * overwritten in the template or userstyles.
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_interwiki(){
-
- // default style
- echo 'a.interwiki {';
- echo ' background: transparent url('.DOKU_BASE.'lib/images/interwiki.png) 0px 1px no-repeat;';
- echo ' padding-left: 16px;';
- echo '}';
-
- // additional styles when icon available
- $iwlinks = getInterwiki();
- foreach(array_keys($iwlinks) as $iw){
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$iw);
- if(@file_exists(DOKU_INC.'lib/images/interwiki/'.$iw.'.png')){
- echo "a.iw_$class {";
- echo ' background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$iw.'.png)';
- echo '}';
- }elseif(@file_exists(DOKU_INC.'lib/images/interwiki/'.$iw.'.gif')){
- echo "a.iw_$class {";
- echo ' background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$iw.'.gif)';
- echo '}';
- }
- }
-}
-
-/**
- * Prints classes for file download links
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_filetypes(){
-
- // default style
- echo 'a.mediafile {';
- echo ' background: transparent url('.DOKU_BASE.'lib/images/fileicons/file.png) 0px 1px no-repeat;';
- echo ' padding-left: 18px;';
- echo ' padding-bottom: 1px;';
- echo '}';
-
- // additional styles when icon available
- $mimes = getMimeTypes();
- foreach(array_keys($mimes) as $mime){
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$mime);
- if(@file_exists(DOKU_INC.'lib/images/fileicons/'.$mime.'.png')){
- echo "a.mf_$class {";
- echo ' background-image: url('.DOKU_BASE.'lib/images/fileicons/'.$mime.'.png)';
- echo '}';
- }elseif(@file_exists(DOKU_INC.'lib/images/fileicons/'.$mime.'.gif')){
- echo "a.mf_$class {";
- echo ' background-image: url('.DOKU_BASE.'lib/images/fileicons/'.$mime.'.gif)';
- echo '}';
- }
- }
-}
-
-/**
- * Loads a given file and fixes relative URLs with the
- * given location prefix
- */
-function css_loadfile($file,$location=''){
- if(!@file_exists($file)) return '';
- $css = io_readFile($file);
- if(!$location) return $css;
-
- $css = preg_replace('#(url\([ \'"]*)((?!/|http://|https://| |\'|"))#','\\1'.$location.'\\3',$css);
- return $css;
-}
-
-
-/**
- * Returns a list of possible Plugin Styles (no existance check here)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_pluginstyles($mode='screen'){
- global $lang;
- $list = array();
- $plugins = plugin_list();
- foreach ($plugins as $p){
- if($mode == 'all'){
- $list[DOKU_PLUGIN."$p/all.css"] = DOKU_BASE."lib/plugins/$p/";
- }elseif($mode == 'print'){
- $list[DOKU_PLUGIN."$p/print.css"] = DOKU_BASE."lib/plugins/$p/";
- }elseif($mode == 'feed'){
- $list[DOKU_PLUGIN."$p/feed.css"] = DOKU_BASE."lib/plugins/$p/";
- }else{
- $list[DOKU_PLUGIN."$p/style.css"] = DOKU_BASE."lib/plugins/$p/";
- $list[DOKU_PLUGIN."$p/screen.css"] = DOKU_BASE."lib/plugins/$p/";
- }
- if($lang['direction'] == 'rtl'){
- $list[DOKU_PLUGIN."$p/rtl.css"] = DOKU_BASE."lib/plugins/$p/";
- }
- }
- return $list;
-}
-
-/**
- * Very simple CSS optimizer
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_compress($css){
- //strip comments through a callback
- $css = preg_replace_callback('#(/\*)(.*?)(\*/)#s','css_comment_cb',$css);
-
- //strip (incorrect but common) one line comments
- $css = preg_replace('/(?<!:)\/\/.*$/m','',$css);
-
- // strip whitespaces
- $css = preg_replace('![\r\n\t ]+!',' ',$css);
- $css = preg_replace('/ ?([:;,{}\/]) ?/','\\1',$css);
-
- // shorten colors
- $css = preg_replace("/#([0-9a-fA-F]{1})\\1([0-9a-fA-F]{1})\\2([0-9a-fA-F]{1})\\3/", "#\\1\\2\\3",$css);
-
- return $css;
-}
-
-/**
- * Callback for css_compress()
- *
- * Keeps short comments (< 5 chars) to maintain typical browser hacks
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function css_comment_cb($matches){
- if(strlen($matches[2]) > 4) return '';
- return $matches[0];
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
-?>
+<?php
+/**
+ * DokuWiki StyleSheet creator
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/io.php');
+require_once(DOKU_INC.'inc/confutils.php');
+
+// Main (don't run when UNIT test)
+if(!defined('SIMPLE_TEST')){
+ header('Content-Type: text/css; charset=utf-8');
+ css_out();
+}
+
+
+// ---------------------- functions ------------------------------
+
+/**
+ * Output all needed Styles
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_out(){
+ global $conf;
+ global $lang;
+ switch ($_REQUEST['s']) {
+ case 'all':
+ case 'print':
+ case 'feed':
+ $style = $_REQUEST['s'];
+ break;
+ default:
+ $style = '';
+ break;
+ }
+
+ $tpl = trim(preg_replace('/[^\w-]+/','',$_REQUEST['t']));
+ if($tpl){
+ $tplinc = DOKU_INC.'lib/tpl/'.$tpl.'/';
+ $tpldir = DOKU_BASE.'lib/tpl/'.$tpl.'/';
+ }else{
+ $tplinc = DOKU_TPLINC;
+ $tpldir = DOKU_TPL;
+ }
+
+ // The generated script depends on some dynamic options
+ $cache = getCacheName('styles'.DOKU_BASE.$tplinc.$style,'.css');
+
+ // load template styles
+ $tplstyles = array();
+ if(@file_exists($tplinc.'style.ini')){
+ $ini = parse_ini_file($tplinc.'style.ini',true);
+ foreach($ini['stylesheets'] as $file => $mode){
+ $tplstyles[$mode][$tplinc.$file] = $tpldir;
+ }
+ }
+
+ // Array of needed files and their web locations, the latter ones
+ // are needed to fix relative paths in the stylesheets
+ $files = array();
+ //if (isset($tplstyles['all'])) $files = array_merge($files, $tplstyles['all']);
+ if(!empty($style)){
+ $files[DOKU_INC.'lib/styles/'.$style.'.css'] = DOKU_BASE.'lib/styles/';
+ // load plugin, template, user styles
+ $files = array_merge($files, css_pluginstyles($style));
+ if (isset($tplstyles[$style])) $files = array_merge($files, $tplstyles[$style]);
+ $files[DOKU_CONF.'user'.$style.'.css'] = '';
+ }else{
+ $files[DOKU_INC.'lib/styles/style.css'] = DOKU_BASE.'lib/styles/';
+ if($conf['spellchecker']){
+ $files[DOKU_INC.'lib/styles/spellcheck.css'] = DOKU_BASE.'lib/styles/';
+ }
+ // load plugin, template, user styles
+ $files = array_merge($files, css_pluginstyles('screen'));
+ if (isset($tplstyles['screen'])) $files = array_merge($files, $tplstyles['screen']);
+ if($lang['direction'] == 'rtl'){
+ if (isset($tplstyles['rtl'])) $files = array_merge($files, $tplstyles['rtl']);
+ }
+ $files[DOKU_CONF.'userstyle.css'] = '';
+ }
+
+ // check cache age & handle conditional request
+ header('Cache-Control: public, max-age=3600');
+ header('Pragma: public');
+ if(css_cacheok($cache,array_keys($files),$tplinc)){
+ http_conditionalRequest(filemtime($cache));
+ if($conf['allowdebug']) header("X-CacheUsed: $cache");
+ readfile($cache);
+ return;
+ } else {
+ http_conditionalRequest(time());
+ }
+
+ // start output buffering and build the stylesheet
+ ob_start();
+
+ // print the default classes for interwiki links and file downloads
+ css_interwiki();
+ css_filetypes();
+
+ // load files
+ foreach($files as $file => $location){
+ print css_loadfile($file, $location);
+ }
+
+ // end output buffering and get contents
+ $css = ob_get_contents();
+ ob_end_clean();
+
+ // apply style replacements
+ $css = css_applystyle($css,$tplinc);
+
+ // compress whitespace and comments
+ if($conf['compress']){
+ $css = css_compress($css);
+ }
+
+ // save cache file
+ io_saveFile($cache,$css);
+
+ // finally send output
+ print $css;
+}
+
+/**
+ * Checks if a CSS Cache file still is valid
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_cacheok($cache,$files,$tplinc){
+ if($_REQUEST['purge']) return false; //support purge request
+
+ $ctime = @filemtime($cache);
+ if(!$ctime) return false; //There is no cache
+
+ // some additional files to check
+ $files[] = DOKU_CONF.'dokuwiki.php';
+ $files[] = DOKU_CONF.'local.php';
+ $files[] = $tplinc.'style.ini';
+ $files[] = __FILE__;
+
+ // now walk the files
+ foreach($files as $file){
+ if(@filemtime($file) > $ctime){
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * Does placeholder replacements in the style according to
+ * the ones defined in a templates style.ini file
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_applystyle($css,$tplinc){
+ if(@file_exists($tplinc.'style.ini')){
+ $ini = parse_ini_file($tplinc.'style.ini',true);
+ $css = strtr($css,$ini['replacements']);
+ }
+ return $css;
+}
+
+/**
+ * Prints classes for interwikilinks
+ *
+ * Interwiki links have two classes: 'interwiki' and 'iw_$name>' where
+ * $name is the identifier given in the config. All Interwiki links get
+ * an default style with a default icon. If a special icon is available
+ * for an interwiki URL it is set in it's own class. Both classes can be
+ * overwritten in the template or userstyles.
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_interwiki(){
+
+ // default style
+ echo 'a.interwiki {';
+ echo ' background: transparent url('.DOKU_BASE.'lib/images/interwiki.png) 0px 1px no-repeat;';
+ echo ' padding-left: 16px;';
+ echo '}';
+
+ // additional styles when icon available
+ $iwlinks = getInterwiki();
+ foreach(array_keys($iwlinks) as $iw){
+ $class = preg_replace('/[^_\-a-z0-9]+/i','_',$iw);
+ if(@file_exists(DOKU_INC.'lib/images/interwiki/'.$iw.'.png')){
+ echo "a.iw_$class {";
+ echo ' background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$iw.'.png)';
+ echo '}';
+ }elseif(@file_exists(DOKU_INC.'lib/images/interwiki/'.$iw.'.gif')){
+ echo "a.iw_$class {";
+ echo ' background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$iw.'.gif)';
+ echo '}';
+ }
+ }
+}
+
+/**
+ * Prints classes for file download links
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_filetypes(){
+
+ // default style
+ echo 'a.mediafile {';
+ echo ' background: transparent url('.DOKU_BASE.'lib/images/fileicons/file.png) 0px 1px no-repeat;';
+ echo ' padding-left: 18px;';
+ echo ' padding-bottom: 1px;';
+ echo '}';
+
+ // additional styles when icon available
+ $mimes = getMimeTypes();
+ foreach(array_keys($mimes) as $mime){
+ $class = preg_replace('/[^_\-a-z0-9]+/i','_',$mime);
+ if(@file_exists(DOKU_INC.'lib/images/fileicons/'.$mime.'.png')){
+ echo "a.mf_$class {";
+ echo ' background-image: url('.DOKU_BASE.'lib/images/fileicons/'.$mime.'.png)';
+ echo '}';
+ }elseif(@file_exists(DOKU_INC.'lib/images/fileicons/'.$mime.'.gif')){
+ echo "a.mf_$class {";
+ echo ' background-image: url('.DOKU_BASE.'lib/images/fileicons/'.$mime.'.gif)';
+ echo '}';
+ }
+ }
+}
+
+/**
+ * Loads a given file and fixes relative URLs with the
+ * given location prefix
+ */
+function css_loadfile($file,$location=''){
+ if(!@file_exists($file)) return '';
+ $css = io_readFile($file);
+ if(!$location) return $css;
+
+ $css = preg_replace('#(url\([ \'"]*)((?!/|http://|https://| |\'|"))#','\\1'.$location.'\\3',$css);
+ return $css;
+}
+
+
+/**
+ * Returns a list of possible Plugin Styles (no existance check here)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_pluginstyles($mode='screen'){
+ global $lang;
+ $list = array();
+ $plugins = plugin_list();
+ foreach ($plugins as $p){
+ if($mode == 'all'){
+ $list[DOKU_PLUGIN."$p/all.css"] = DOKU_BASE."lib/plugins/$p/";
+ }elseif($mode == 'print'){
+ $list[DOKU_PLUGIN."$p/print.css"] = DOKU_BASE."lib/plugins/$p/";
+ }elseif($mode == 'feed'){
+ $list[DOKU_PLUGIN."$p/feed.css"] = DOKU_BASE."lib/plugins/$p/";
+ }else{
+ $list[DOKU_PLUGIN."$p/style.css"] = DOKU_BASE."lib/plugins/$p/";
+ $list[DOKU_PLUGIN."$p/screen.css"] = DOKU_BASE."lib/plugins/$p/";
+ }
+ if($lang['direction'] == 'rtl'){
+ $list[DOKU_PLUGIN."$p/rtl.css"] = DOKU_BASE."lib/plugins/$p/";
+ }
+ }
+ return $list;
+}
+
+/**
+ * Very simple CSS optimizer
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_compress($css){
+ //strip comments through a callback
+ $css = preg_replace_callback('#(/\*)(.*?)(\*/)#s','css_comment_cb',$css);
+
+ //strip (incorrect but common) one line comments
+ $css = preg_replace('/(?<!:)\/\/.*$/m','',$css);
+
+ // strip whitespaces
+ $css = preg_replace('![\r\n\t ]+!',' ',$css);
+ $css = preg_replace('/ ?([:;,{}\/]) ?/','\\1',$css);
+
+ // shorten colors
+ $css = preg_replace("/#([0-9a-fA-F]{1})\\1([0-9a-fA-F]{1})\\2([0-9a-fA-F]{1})\\3/", "#\\1\\2\\3",$css);
+
+ return $css;
+}
+
+/**
+ * Callback for css_compress()
+ *
+ * Keeps short comments (< 5 chars) to maintain typical browser hacks
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function css_comment_cb($matches){
+ if(strlen($matches[2]) > 4) return '';
+ return $matches[0];
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
+?>
Modified: site/trunk/www-root/wiki/lib/exe/detail.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/detail.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/detail.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,59 +1,59 @@
-<?php
- if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
- define('DOKU_MEDIADETAIL',1);
- require_once(DOKU_INC.'inc/init.php');
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/lang/en/lang.php');
- require_once(DOKU_INC.'inc/lang/'.$conf['lang'].'/lang.php');
- require_once(DOKU_INC.'inc/JpegMeta.php');
- require_once(DOKU_INC.'inc/html.php');
- require_once(DOKU_INC.'inc/template.php');
- require_once(DOKU_INC.'inc/auth.php');
- //close session
- session_write_close();
-
- $IMG = getID('media');
- $ID = cleanID($_REQUEST['id']);
-
- if($conf['allowdebug'] && $_REQUEST['debug']){
- print '<pre>';
- foreach(explode(' ','basedir userewrite baseurl useslash') as $x){
- print '$'."conf['$x'] = '".$conf[$x]."';\n";
- }
- foreach(explode(' ','DOCUMENT_ROOT HTTP_HOST SCRIPT_FILENAME PHP_SELF '.
- 'REQUEST_URI SCRIPT_NAME PATH_INFO PATH_TRANSLATED') as $x){
- print '$'."_SERVER['$x'] = '".$_SERVER[$x]."';\n";
- }
- print "getID('media'): ".getID('media')."\n";
- print "getID('media',false): ".getID('media',false)."\n";
- print '</pre>';
- }
-
- $ERROR = false;
- // check image permissions
- $AUTH = auth_quickaclcheck($IMG);
- if($AUTH >= AUTH_READ){
- // check if image exists
- $SRC = mediaFN($IMG);
- if(!@file_exists($SRC)){
- //doesn't exist!
-
- }
- }else{
- // no auth
- $ERROR = p_locale_xhtml('denied');
- }
-
- /*if(!$ERROR){
- // load EXIF/IPTC/image details
- $INFO = array();
- $INFO['std']['']
- imagesize
- }*/
-
-
- //start output and load template
- header('Content-Type: text/html; charset=utf-8');
- include(template('detail.php'));
-
-?>
+<?php
+ if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+ define('DOKU_MEDIADETAIL',1);
+ require_once(DOKU_INC.'inc/init.php');
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/lang/en/lang.php');
+ require_once(DOKU_INC.'inc/lang/'.$conf['lang'].'/lang.php');
+ require_once(DOKU_INC.'inc/JpegMeta.php');
+ require_once(DOKU_INC.'inc/html.php');
+ require_once(DOKU_INC.'inc/template.php');
+ require_once(DOKU_INC.'inc/auth.php');
+ //close session
+ session_write_close();
+
+ $IMG = getID('media');
+ $ID = cleanID($_REQUEST['id']);
+
+ if($conf['allowdebug'] && $_REQUEST['debug']){
+ print '<pre>';
+ foreach(explode(' ','basedir userewrite baseurl useslash') as $x){
+ print '$'."conf['$x'] = '".$conf[$x]."';\n";
+ }
+ foreach(explode(' ','DOCUMENT_ROOT HTTP_HOST SCRIPT_FILENAME PHP_SELF '.
+ 'REQUEST_URI SCRIPT_NAME PATH_INFO PATH_TRANSLATED') as $x){
+ print '$'."_SERVER['$x'] = '".$_SERVER[$x]."';\n";
+ }
+ print "getID('media'): ".getID('media')."\n";
+ print "getID('media',false): ".getID('media',false)."\n";
+ print '</pre>';
+ }
+
+ $ERROR = false;
+ // check image permissions
+ $AUTH = auth_quickaclcheck($IMG);
+ if($AUTH >= AUTH_READ){
+ // check if image exists
+ $SRC = mediaFN($IMG);
+ if(!@file_exists($SRC)){
+ //doesn't exist!
+
+ }
+ }else{
+ // no auth
+ $ERROR = p_locale_xhtml('denied');
+ }
+
+ /*if(!$ERROR){
+ // load EXIF/IPTC/image details
+ $INFO = array();
+ $INFO['std']['']
+ imagesize
+ }*/
+
+
+ //start output and load template
+ header('Content-Type: text/html; charset=utf-8');
+ include(template('detail.php'));
+
+?>
Modified: site/trunk/www-root/wiki/lib/exe/fetch.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/fetch.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/fetch.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,459 +1,459 @@
-<?php
-/**
- * DokuWiki media passthrough file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
- if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
- define('DOKU_DISABLE_GZIP_OUTPUT', 1);
- require_once(DOKU_INC.'inc/init.php');
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/pageutils.php');
- require_once(DOKU_INC.'inc/confutils.php');
- require_once(DOKU_INC.'inc/auth.php');
- //close sesseion
- session_write_close();
- if(!defined('CHUNK_SIZE')) define('CHUNK_SIZE',16*1024);
-
- $mimetypes = getMimeTypes();
-
- //get input
- $MEDIA = stripctl(getID('media',false)); // no cleaning except control chars - maybe external
- $CACHE = calc_cache($_REQUEST['cache']);
- $WIDTH = (int) $_REQUEST['w'];
- $HEIGHT = (int) $_REQUEST['h'];
- list($EXT,$MIME) = mimetype($MEDIA);
- if($EXT === false){
- $EXT = 'unknown';
- $MIME = 'application/octet-stream';
- }
-
- //media to local file
- if(preg_match('#^(https?)://#i',$MEDIA)){
- //handle external images
- if(strncmp($MIME,'image/',6) == 0) $FILE = get_from_URL($MEDIA,$EXT,$CACHE);
- if(!$FILE){
- //download failed - redirect to original URL
- header('Location: '.$MEDIA);
- exit;
- }
- }else{
- $MEDIA = cleanID($MEDIA);
- if(empty($MEDIA)){
- header("HTTP/1.0 400 Bad Request");
- print 'Bad request';
- exit;
- }
-
- //check permissions (namespace only)
- if(auth_quickaclcheck(getNS($MEDIA).':X') < AUTH_READ){
- header("HTTP/1.0 401 Unauthorized");
- //fixme add some image for imagefiles
- print 'Unauthorized';
- exit;
- }
- $FILE = mediaFN($MEDIA);
- }
-
- //check file existance
- if(!@file_exists($FILE)){
- header("HTTP/1.0 404 Not Found");
- //FIXME add some default broken image
- print 'Not Found';
- exit;
- }
-
- //handle image resizing
- if((substr($MIME,0,5) == 'image') && $WIDTH){
- $FILE = get_resized($FILE,$EXT,$WIDTH,$HEIGHT);
- }
-
- // finally send the file to the client
- sendFile($FILE,$MIME,$CACHE);
-
-/* ------------------------------------------------------------------------ */
-
-/**
- * Set headers and send the file to the client
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function sendFile($file,$mime,$cache){
- global $conf;
- $fmtime = filemtime($file);
- // send headers
- header("Content-Type: $mime");
- // smart http caching headers
- if ($cache==-1) {
- // cache
- // cachetime or one hour
- header('Expires: '.gmdate("D, d M Y H:i:s", time()+max($conf['cachetime'], 3600)).' GMT');
- header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($conf['cachetime'], 3600));
- header('Pragma: public');
- } else if ($cache>0) {
- // recache
- // remaining cachetime + 10 seconds so the newly recached media is used
- header('Expires: '.gmdate("D, d M Y H:i:s", $fmtime+$conf['cachetime']+10).' GMT');
- header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($fmtime-time()+$conf['cachetime']+10, 0));
- header('Pragma: public');
- } else if ($cache==0) {
- // nocache
- header('Cache-Control: must-revalidate, no-transform, post-check=0, pre-check=0');
- header('Pragma: public');
- }
- //send important headers first, script stops here if '304 Not Modified' response
- http_conditionalRequest($fmtime);
-
-
- //application mime type is downloadable
- if(substr($mime,0,11) == 'application'){
- header('Content-Disposition: attachment; filename="'.basename($file).'";');
- }
-
- //use x-sendfile header to pass the delivery to compatible webservers
- if($conf['xsendfile'] == 1){
- header("X-LIGHTTPD-send-file: $file");
- exit;
- }elseif($conf['xsendfile'] == 2){
- header("X-Sendfile: $file");
- exit;
- }elseif($conf['xsendfile'] == 3){
- header("X-Accel-Redirect: $file");
- exit;
- }
-
- //support download continueing
- header('Accept-Ranges: bytes');
- list($start,$len) = http_rangeRequest(filesize($file));
-
- // send file contents
- $fp = @fopen($file,"rb");
- if($fp){
- fseek($fp,$start); //seek to start of range
-
- $chunk = ($len > CHUNK_SIZE) ? CHUNK_SIZE : $len;
- while (!feof($fp) && $chunk > 0) {
- @set_time_limit(30); // large files can take a lot of time
- print fread($fp, $chunk);
- flush();
- $len -= $chunk;
- $chunk = ($len > CHUNK_SIZE) ? CHUNK_SIZE : $len;
- }
- fclose($fp);
- }else{
- header("HTTP/1.0 500 Internal Server Error");
- print "Could not read $file - bad permissions?";
- }
-}
-
-/**
- * Checks and sets headers to handle range requets
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @returns array The start byte and the amount of bytes to send
- */
-function http_rangeRequest($size){
- if(!isset($_SERVER['HTTP_RANGE'])){
- // no range requested - send the whole file
- header("Content-Length: $size");
- return array(0,$size);
- }
-
- $t = explode('=', $_SERVER['HTTP_RANGE']);
- if (!$t[0]=='bytes') {
- // we only understand byte ranges - send the whole file
- header("Content-Length: $size");
- return array(0,$size);
- }
-
- $r = explode('-', $t[1]);
- $start = (int)$r[0];
- $end = (int)$r[1];
- if (!$end) $end = $size - 1;
- if ($start > $end || $start > $size || $end > $size){
- header('HTTP/1.1 416 Requested Range Not Satisfiable');
- print 'Bad Range Request!';
- exit;
- }
-
- $tot = $end - $start + 1;
- header('HTTP/1.1 206 Partial Content');
- header("Content-Range: bytes {$start}-{$end}/{$size}");
- header("Content-Length: $tot");
-
- return array($start,$tot);
-}
-
-/**
- * Resizes the given image to the given size
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function get_resized($file, $ext, $w, $h=0){
- global $conf;
-
- $info = getimagesize($file);
- if(!$h) $h = round(($w * $info[1]) / $info[0]);
-
- // we wont scale up to infinity
- if($w > 2000 || $h > 2000) return $file;
-
- //cache
- $local = getCacheName($file,'.media.'.$w.'x'.$h.'.'.$ext);
- $mtime = @filemtime($local); // 0 if not exists
-
- if( $mtime > filemtime($file) ||
- resize_imageIM($ext,$file,$info[0],$info[1],$local,$w,$h) ||
- resize_imageGD($ext,$file,$info[0],$info[1],$local,$w,$h) ){
- if($conf['fperm']) chmod($local, $conf['fperm']);
- return $local;
- }
- //still here? resizing failed
- return $file;
-}
-
-/**
- * Returns the wanted cachetime in seconds
- *
- * Resolves named constants
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function calc_cache($cache){
- global $conf;
-
- if(strtolower($cache) == 'nocache') return 0; //never cache
- if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache
- return -1; //cache endless
-}
-
-/**
- * Download a remote file and return local filename
- *
- * returns false if download fails. Uses cached file if available and
- * wanted
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Pavel Vitis <Pavel.Vitis at seznam.cz>
- */
-function get_from_URL($url,$ext,$cache){
- global $conf;
-
- // if no cache or fetchsize just redirect
- if ($cache==0) return false;
- if (!$conf['fetchsize']) return false;
-
- $local = getCacheName(strtolower($url),".media.$ext");
- $mtime = @filemtime($local); // 0 if not exists
-
- //decide if download needed:
- if( ($mtime == 0) || // cache does not exist
- ($cache != -1 && $mtime < time()-$cache) // 'recache' and cache has expired
- ){
- if(image_download($url,$local)){
- return $local;
- }else{
- return false;
- }
- }
-
- //if cache exists use it else
- if($mtime) return $local;
-
- //else return false
- return false;
-}
-
-/**
- * Download image files
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function image_download($url,$file){
- global $conf;
- $http = new DokuHTTPClient();
- $http->max_bodysize = $conf['fetchsize'];
- $http->timeout = 25; //max. 25 sec
- $http->header_regexp = '!\r\nContent-Type: image/(jpe?g|gif|png)!i';
-
- $data = $http->get($url);
- if(!$data) return false;
-
- $fileexists = @file_exists($file);
- $fp = @fopen($file,"w");
- if(!$fp) return false;
- fwrite($fp,$data);
- fclose($fp);
- if(!$fileexists and $conf['fperm']) chmod($file, $conf['fperm']);
-
- // check if it is really an image
- $info = @getimagesize($file);
- if(!$info){
- @unlink($file);
- return false;
- }
-
- return true;
-}
-
-/**
- * resize images using external ImageMagick convert program
- *
- * @author Pavel Vitis <Pavel.Vitis at seznam.cz>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function resize_imageIM($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){
- global $conf;
-
- // check if convert is configured
- if(!$conf['im_convert']) return false;
-
- // prepare command
- $cmd = $conf['im_convert'];
- $cmd .= ' -resize '.$to_w.'x'.$to_h.'!';
- if ($ext == 'jpg' || $ext == 'jpeg') {
- $cmd .= ' -quality '.$conf['jpg_quality'];
- }
- $cmd .= " $from $to";
-
- @exec($cmd,$out,$retval);
- if ($retval == 0) return true;
- return false;
-}
-
-/**
- * resize images using PHP's libGD support
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Sebastian Wienecke <s_wienecke at web.de>
- */
-function resize_imageGD($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){
- global $conf;
-
- if($conf['gdlib'] < 1) return false; //no GDlib available or wanted
-
- // check available memory
- if(!is_mem_available(($from_w * $from_h * 4) + ($to_w * $to_h * 4))){
- return false;
- }
-
- // create an image of the given filetype
- if ($ext == 'jpg' || $ext == 'jpeg'){
- if(!function_exists("imagecreatefromjpeg")) return false;
- $image = @imagecreatefromjpeg($from);
- }elseif($ext == 'png') {
- if(!function_exists("imagecreatefrompng")) return false;
- $image = @imagecreatefrompng($from);
-
- }elseif($ext == 'gif') {
- if(!function_exists("imagecreatefromgif")) return false;
- $image = @imagecreatefromgif($from);
- }
- if(!$image) return false;
-
- if(($conf['gdlib']>1) && function_exists("imagecreatetruecolor") && $ext != 'gif'){
- $newimg = @imagecreatetruecolor ($to_w, $to_h);
- }
- if(!$newimg) $newimg = @imagecreate($to_w, $to_h);
- if(!$newimg){
- imagedestroy($image);
- return false;
- }
-
- //keep png alpha channel if possible
- if($ext == 'png' && $conf['gdlib']>1 && function_exists('imagesavealpha')){
- imagealphablending($newimg, false);
- imagesavealpha($newimg,true);
- }
-
- //keep gif transparent color if possible
- if($ext == 'gif' && function_exists('imagefill') && function_exists('imagecolorallocate')) {
- if(function_exists('imagecolorsforindex') && function_exists('imagecolortransparent')) {
- $transcolorindex = @imagecolortransparent($image);
- if($transcolorindex >= 0 ) { //transparent color exists
- $transcolor = @imagecolorsforindex($image, $transcolorindex);
- $transcolorindex = @imagecolorallocate($newimg, $transcolor['red'], $transcolor['green'], $transcolor['blue']);
- @imagefill($newimg, 0, 0, $transcolorindex);
- @imagecolortransparent($newimg, $transcolorindex);
- }else{ //filling with white
- $whitecolorindex = @imagecolorallocate($newimg, 255, 255, 255);
- @imagefill($newimg, 0, 0, $whitecolorindex);
- }
- }else{ //filling with white
- $whitecolorindex = @imagecolorallocate($newimg, 255, 255, 255);
- @imagefill($newimg, 0, 0, $whitecolorindex);
- }
- }
-
- //try resampling first
- if(function_exists("imagecopyresampled")){
- if(!@imagecopyresampled($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h)) {
- imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h);
- }
- }else{
- imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h);
- }
-
- $okay = false;
- if ($ext == 'jpg' || $ext == 'jpeg'){
- if(!function_exists('imagejpeg')){
- $okay = false;
- }else{
- $okay = imagejpeg($newimg, $to, $conf['jpg_quality']);
- }
- }elseif($ext == 'png') {
- if(!function_exists('imagepng')){
- $okay = false;
- }else{
- $okay = imagepng($newimg, $to);
- }
- }elseif($ext == 'gif') {
- if(!function_exists('imagegif')){
- $okay = false;
- }else{
- $okay = imagegif($newimg, $to);
- }
- }
-
- // destroy GD image ressources
- if($image) imagedestroy($image);
- if($newimg) imagedestroy($newimg);
-
- return $okay;
-}
-
-/**
- * Checks if the given amount of memory is available
- *
- * If the memory_get_usage() function is not available the
- * function just assumes $bytes of already allocated memory
- *
- * @param int $mem Size of memory you want to allocate in bytes
- * @param int $used already allocated memory (see above)
- * @author Filip Oscadal <webmaster at illusionsoftworks.cz>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function is_mem_available($mem,$bytes=1048576){
- $limit = trim(ini_get('memory_limit'));
- if(empty($limit)) return true; // no limit set!
-
- // parse limit to bytes
- $limit = php_to_byte($limit);
-
- // get used memory if possible
- if(function_exists('memory_get_usage')){
- $used = memory_get_usage();
- }
-
- if($used+$mem > $limit){
- return false;
- }
-
- return true;
-}
-
-//Setup VIM: ex: et ts=2 enc=utf-8 :
-?>
+<?php
+/**
+ * DokuWiki media passthrough file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+ if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+ define('DOKU_DISABLE_GZIP_OUTPUT', 1);
+ require_once(DOKU_INC.'inc/init.php');
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/pageutils.php');
+ require_once(DOKU_INC.'inc/confutils.php');
+ require_once(DOKU_INC.'inc/auth.php');
+ //close sesseion
+ session_write_close();
+ if(!defined('CHUNK_SIZE')) define('CHUNK_SIZE',16*1024);
+
+ $mimetypes = getMimeTypes();
+
+ //get input
+ $MEDIA = stripctl(getID('media',false)); // no cleaning except control chars - maybe external
+ $CACHE = calc_cache($_REQUEST['cache']);
+ $WIDTH = (int) $_REQUEST['w'];
+ $HEIGHT = (int) $_REQUEST['h'];
+ list($EXT,$MIME) = mimetype($MEDIA);
+ if($EXT === false){
+ $EXT = 'unknown';
+ $MIME = 'application/octet-stream';
+ }
+
+ //media to local file
+ if(preg_match('#^(https?)://#i',$MEDIA)){
+ //handle external images
+ if(strncmp($MIME,'image/',6) == 0) $FILE = get_from_URL($MEDIA,$EXT,$CACHE);
+ if(!$FILE){
+ //download failed - redirect to original URL
+ header('Location: '.$MEDIA);
+ exit;
+ }
+ }else{
+ $MEDIA = cleanID($MEDIA);
+ if(empty($MEDIA)){
+ header("HTTP/1.0 400 Bad Request");
+ print 'Bad request';
+ exit;
+ }
+
+ //check permissions (namespace only)
+ if(auth_quickaclcheck(getNS($MEDIA).':X') < AUTH_READ){
+ header("HTTP/1.0 401 Unauthorized");
+ //fixme add some image for imagefiles
+ print 'Unauthorized';
+ exit;
+ }
+ $FILE = mediaFN($MEDIA);
+ }
+
+ //check file existance
+ if(!@file_exists($FILE)){
+ header("HTTP/1.0 404 Not Found");
+ //FIXME add some default broken image
+ print 'Not Found';
+ exit;
+ }
+
+ //handle image resizing
+ if((substr($MIME,0,5) == 'image') && $WIDTH){
+ $FILE = get_resized($FILE,$EXT,$WIDTH,$HEIGHT);
+ }
+
+ // finally send the file to the client
+ sendFile($FILE,$MIME,$CACHE);
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * Set headers and send the file to the client
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function sendFile($file,$mime,$cache){
+ global $conf;
+ $fmtime = filemtime($file);
+ // send headers
+ header("Content-Type: $mime");
+ // smart http caching headers
+ if ($cache==-1) {
+ // cache
+ // cachetime or one hour
+ header('Expires: '.gmdate("D, d M Y H:i:s", time()+max($conf['cachetime'], 3600)).' GMT');
+ header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($conf['cachetime'], 3600));
+ header('Pragma: public');
+ } else if ($cache>0) {
+ // recache
+ // remaining cachetime + 10 seconds so the newly recached media is used
+ header('Expires: '.gmdate("D, d M Y H:i:s", $fmtime+$conf['cachetime']+10).' GMT');
+ header('Cache-Control: public, proxy-revalidate, no-transform, max-age='.max($fmtime-time()+$conf['cachetime']+10, 0));
+ header('Pragma: public');
+ } else if ($cache==0) {
+ // nocache
+ header('Cache-Control: must-revalidate, no-transform, post-check=0, pre-check=0');
+ header('Pragma: public');
+ }
+ //send important headers first, script stops here if '304 Not Modified' response
+ http_conditionalRequest($fmtime);
+
+
+ //application mime type is downloadable
+ if(substr($mime,0,11) == 'application'){
+ header('Content-Disposition: attachment; filename="'.basename($file).'";');
+ }
+
+ //use x-sendfile header to pass the delivery to compatible webservers
+ if($conf['xsendfile'] == 1){
+ header("X-LIGHTTPD-send-file: $file");
+ exit;
+ }elseif($conf['xsendfile'] == 2){
+ header("X-Sendfile: $file");
+ exit;
+ }elseif($conf['xsendfile'] == 3){
+ header("X-Accel-Redirect: $file");
+ exit;
+ }
+
+ //support download continueing
+ header('Accept-Ranges: bytes');
+ list($start,$len) = http_rangeRequest(filesize($file));
+
+ // send file contents
+ $fp = @fopen($file,"rb");
+ if($fp){
+ fseek($fp,$start); //seek to start of range
+
+ $chunk = ($len > CHUNK_SIZE) ? CHUNK_SIZE : $len;
+ while (!feof($fp) && $chunk > 0) {
+ @set_time_limit(30); // large files can take a lot of time
+ print fread($fp, $chunk);
+ flush();
+ $len -= $chunk;
+ $chunk = ($len > CHUNK_SIZE) ? CHUNK_SIZE : $len;
+ }
+ fclose($fp);
+ }else{
+ header("HTTP/1.0 500 Internal Server Error");
+ print "Could not read $file - bad permissions?";
+ }
+}
+
+/**
+ * Checks and sets headers to handle range requets
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @returns array The start byte and the amount of bytes to send
+ */
+function http_rangeRequest($size){
+ if(!isset($_SERVER['HTTP_RANGE'])){
+ // no range requested - send the whole file
+ header("Content-Length: $size");
+ return array(0,$size);
+ }
+
+ $t = explode('=', $_SERVER['HTTP_RANGE']);
+ if (!$t[0]=='bytes') {
+ // we only understand byte ranges - send the whole file
+ header("Content-Length: $size");
+ return array(0,$size);
+ }
+
+ $r = explode('-', $t[1]);
+ $start = (int)$r[0];
+ $end = (int)$r[1];
+ if (!$end) $end = $size - 1;
+ if ($start > $end || $start > $size || $end > $size){
+ header('HTTP/1.1 416 Requested Range Not Satisfiable');
+ print 'Bad Range Request!';
+ exit;
+ }
+
+ $tot = $end - $start + 1;
+ header('HTTP/1.1 206 Partial Content');
+ header("Content-Range: bytes {$start}-{$end}/{$size}");
+ header("Content-Length: $tot");
+
+ return array($start,$tot);
+}
+
+/**
+ * Resizes the given image to the given size
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function get_resized($file, $ext, $w, $h=0){
+ global $conf;
+
+ $info = getimagesize($file);
+ if(!$h) $h = round(($w * $info[1]) / $info[0]);
+
+ // we wont scale up to infinity
+ if($w > 2000 || $h > 2000) return $file;
+
+ //cache
+ $local = getCacheName($file,'.media.'.$w.'x'.$h.'.'.$ext);
+ $mtime = @filemtime($local); // 0 if not exists
+
+ if( $mtime > filemtime($file) ||
+ resize_imageIM($ext,$file,$info[0],$info[1],$local,$w,$h) ||
+ resize_imageGD($ext,$file,$info[0],$info[1],$local,$w,$h) ){
+ if($conf['fperm']) chmod($local, $conf['fperm']);
+ return $local;
+ }
+ //still here? resizing failed
+ return $file;
+}
+
+/**
+ * Returns the wanted cachetime in seconds
+ *
+ * Resolves named constants
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function calc_cache($cache){
+ global $conf;
+
+ if(strtolower($cache) == 'nocache') return 0; //never cache
+ if(strtolower($cache) == 'recache') return $conf['cachetime']; //use standard cache
+ return -1; //cache endless
+}
+
+/**
+ * Download a remote file and return local filename
+ *
+ * returns false if download fails. Uses cached file if available and
+ * wanted
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Pavel Vitis <Pavel.Vitis at seznam.cz>
+ */
+function get_from_URL($url,$ext,$cache){
+ global $conf;
+
+ // if no cache or fetchsize just redirect
+ if ($cache==0) return false;
+ if (!$conf['fetchsize']) return false;
+
+ $local = getCacheName(strtolower($url),".media.$ext");
+ $mtime = @filemtime($local); // 0 if not exists
+
+ //decide if download needed:
+ if( ($mtime == 0) || // cache does not exist
+ ($cache != -1 && $mtime < time()-$cache) // 'recache' and cache has expired
+ ){
+ if(image_download($url,$local)){
+ return $local;
+ }else{
+ return false;
+ }
+ }
+
+ //if cache exists use it else
+ if($mtime) return $local;
+
+ //else return false
+ return false;
+}
+
+/**
+ * Download image files
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function image_download($url,$file){
+ global $conf;
+ $http = new DokuHTTPClient();
+ $http->max_bodysize = $conf['fetchsize'];
+ $http->timeout = 25; //max. 25 sec
+ $http->header_regexp = '!\r\nContent-Type: image/(jpe?g|gif|png)!i';
+
+ $data = $http->get($url);
+ if(!$data) return false;
+
+ $fileexists = @file_exists($file);
+ $fp = @fopen($file,"w");
+ if(!$fp) return false;
+ fwrite($fp,$data);
+ fclose($fp);
+ if(!$fileexists and $conf['fperm']) chmod($file, $conf['fperm']);
+
+ // check if it is really an image
+ $info = @getimagesize($file);
+ if(!$info){
+ @unlink($file);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * resize images using external ImageMagick convert program
+ *
+ * @author Pavel Vitis <Pavel.Vitis at seznam.cz>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function resize_imageIM($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){
+ global $conf;
+
+ // check if convert is configured
+ if(!$conf['im_convert']) return false;
+
+ // prepare command
+ $cmd = $conf['im_convert'];
+ $cmd .= ' -resize '.$to_w.'x'.$to_h.'!';
+ if ($ext == 'jpg' || $ext == 'jpeg') {
+ $cmd .= ' -quality '.$conf['jpg_quality'];
+ }
+ $cmd .= " $from $to";
+
+ @exec($cmd,$out,$retval);
+ if ($retval == 0) return true;
+ return false;
+}
+
+/**
+ * resize images using PHP's libGD support
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Sebastian Wienecke <s_wienecke at web.de>
+ */
+function resize_imageGD($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){
+ global $conf;
+
+ if($conf['gdlib'] < 1) return false; //no GDlib available or wanted
+
+ // check available memory
+ if(!is_mem_available(($from_w * $from_h * 4) + ($to_w * $to_h * 4))){
+ return false;
+ }
+
+ // create an image of the given filetype
+ if ($ext == 'jpg' || $ext == 'jpeg'){
+ if(!function_exists("imagecreatefromjpeg")) return false;
+ $image = @imagecreatefromjpeg($from);
+ }elseif($ext == 'png') {
+ if(!function_exists("imagecreatefrompng")) return false;
+ $image = @imagecreatefrompng($from);
+
+ }elseif($ext == 'gif') {
+ if(!function_exists("imagecreatefromgif")) return false;
+ $image = @imagecreatefromgif($from);
+ }
+ if(!$image) return false;
+
+ if(($conf['gdlib']>1) && function_exists("imagecreatetruecolor") && $ext != 'gif'){
+ $newimg = @imagecreatetruecolor ($to_w, $to_h);
+ }
+ if(!$newimg) $newimg = @imagecreate($to_w, $to_h);
+ if(!$newimg){
+ imagedestroy($image);
+ return false;
+ }
+
+ //keep png alpha channel if possible
+ if($ext == 'png' && $conf['gdlib']>1 && function_exists('imagesavealpha')){
+ imagealphablending($newimg, false);
+ imagesavealpha($newimg,true);
+ }
+
+ //keep gif transparent color if possible
+ if($ext == 'gif' && function_exists('imagefill') && function_exists('imagecolorallocate')) {
+ if(function_exists('imagecolorsforindex') && function_exists('imagecolortransparent')) {
+ $transcolorindex = @imagecolortransparent($image);
+ if($transcolorindex >= 0 ) { //transparent color exists
+ $transcolor = @imagecolorsforindex($image, $transcolorindex);
+ $transcolorindex = @imagecolorallocate($newimg, $transcolor['red'], $transcolor['green'], $transcolor['blue']);
+ @imagefill($newimg, 0, 0, $transcolorindex);
+ @imagecolortransparent($newimg, $transcolorindex);
+ }else{ //filling with white
+ $whitecolorindex = @imagecolorallocate($newimg, 255, 255, 255);
+ @imagefill($newimg, 0, 0, $whitecolorindex);
+ }
+ }else{ //filling with white
+ $whitecolorindex = @imagecolorallocate($newimg, 255, 255, 255);
+ @imagefill($newimg, 0, 0, $whitecolorindex);
+ }
+ }
+
+ //try resampling first
+ if(function_exists("imagecopyresampled")){
+ if(!@imagecopyresampled($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h)) {
+ imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h);
+ }
+ }else{
+ imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h);
+ }
+
+ $okay = false;
+ if ($ext == 'jpg' || $ext == 'jpeg'){
+ if(!function_exists('imagejpeg')){
+ $okay = false;
+ }else{
+ $okay = imagejpeg($newimg, $to, $conf['jpg_quality']);
+ }
+ }elseif($ext == 'png') {
+ if(!function_exists('imagepng')){
+ $okay = false;
+ }else{
+ $okay = imagepng($newimg, $to);
+ }
+ }elseif($ext == 'gif') {
+ if(!function_exists('imagegif')){
+ $okay = false;
+ }else{
+ $okay = imagegif($newimg, $to);
+ }
+ }
+
+ // destroy GD image ressources
+ if($image) imagedestroy($image);
+ if($newimg) imagedestroy($newimg);
+
+ return $okay;
+}
+
+/**
+ * Checks if the given amount of memory is available
+ *
+ * If the memory_get_usage() function is not available the
+ * function just assumes $bytes of already allocated memory
+ *
+ * @param int $mem Size of memory you want to allocate in bytes
+ * @param int $used already allocated memory (see above)
+ * @author Filip Oscadal <webmaster at illusionsoftworks.cz>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function is_mem_available($mem,$bytes=1048576){
+ $limit = trim(ini_get('memory_limit'));
+ if(empty($limit)) return true; // no limit set!
+
+ // parse limit to bytes
+ $limit = php_to_byte($limit);
+
+ // get used memory if possible
+ if(function_exists('memory_get_usage')){
+ $used = memory_get_usage();
+ }
+
+ if($used+$mem > $limit){
+ return false;
+ }
+
+ return true;
+}
+
+//Setup VIM: ex: et ts=2 enc=utf-8 :
+?>
Modified: site/trunk/www-root/wiki/lib/exe/indexer.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/indexer.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/indexer.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,374 +1,374 @@
-<?php
-/**
- * DokuWiki indexer
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
-define('DOKU_DISABLE_GZIP_OUTPUT',1);
-require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/auth.php');
-require_once(DOKU_INC.'inc/events.php');
-session_write_close(); //close session
-if(!defined('NL')) define('NL',"\n");
-
-// Version tag used to force rebuild on upgrade
-define('INDEXER_VERSION', 2);
-
-// keep running after browser closes connection
- at ignore_user_abort(true);
-
-// check if user abort worked, if yes send output early
-if(@ignore_user_abort() && !$conf['broken_iua']){
- sendGIF(); // send gif
- $defer = false;
-}else{
- $defer = true;
-}
-
-$ID = cleanID($_REQUEST['id']);
-
-// Catch any possible output (e.g. errors)
-if(!$_REQUEST['debug']) ob_start();
-
-// run one of the jobs
-$tmp = array();
-$evt = new Doku_Event('INDEXER_TASKS_RUN', $tmp);
-if ($evt->advise_before()) {
- runIndexer() or
- metaUpdate() or
- runSitemapper() or
- runTrimRecentChanges() or
- $evt->advise_after();
-}
-if($defer) sendGIF();
-
-if(!$_REQUEST['debug']) ob_end_clean();
-exit;
-
-// --------------------------------------------------------------------
-
-/**
- * Trims the recent changes cache (or imports the old changelog) as needed.
- *
- * @author Ben Coburn <btcoburn at silicodon.net>
- */
-function runTrimRecentChanges() {
- global $conf;
-
- // Import old changelog (if needed)
- // Uses the imporoldchangelog plugin to upgrade the changelog automaticaly.
- // FIXME: Remove this from runTrimRecentChanges when it is no longer needed.
- if (isset($conf['changelog_old']) &&
- @file_exists($conf['changelog_old']) && !@file_exists($conf['changelog']) &&
- !@file_exists($conf['changelog'].'_importing') && !@file_exists($conf['changelog'].'_tmp')) {
- $tmp = array(); // no event data
- trigger_event('TEMPORARY_CHANGELOG_UPGRADE_EVENT', $tmp);
- return true;
- }
-
- // Trim the Recent Changes
- // Trims the recent changes cache to the last $conf['changes_days'] recent
- // changes or $conf['recent'] items, which ever is larger.
- // The trimming is only done once a day.
- if (@file_exists($conf['changelog']) &&
- (filectime($conf['changelog'])+86400)<time() &&
- !@file_exists($conf['changelog'].'_tmp')) {
- io_lock($conf['changelog']);
- $lines = file($conf['changelog']);
- if (count($lines)<=$conf['recent']) {
- // nothing to trim
- io_unlock($conf['changelog']);
- return false;
- }
-
- io_saveFile($conf['changelog'].'_tmp', ''); // presave tmp as 2nd lock
- $trim_time = time() - $conf['recent_days']*86400;
- $out_lines = array();
-
- for ($i=0; $i<count($lines); $i++) {
- $log = parseChangelogLine($lines[$i]);
- if ($log === false) continue; // discard junk
- if ($log['date'] < $trim_time) {
- $old_lines[$log['date'].".$i"] = $lines[$i]; // keep old lines for now (append .$i to prevent key collisions)
- } else {
- $out_lines[$log['date'].".$i"] = $lines[$i]; // definitely keep these lines
- }
- }
-
- // sort the final result, it shouldn't be necessary,
- // however the extra robustness in making the changelog cache self-correcting is worth it
- ksort($out_lines);
- $extra = $conf['recent'] - count($out_lines); // do we need extra lines do bring us up to minimum
- if ($extra > 0) {
- ksort($old_lines);
- $out_lines = array_merge(array_slice($old_lines,-$extra),$out_lines);
- }
-
- // save trimmed changelog
- io_saveFile($conf['changelog'].'_tmp', implode('', $out_lines));
- @unlink($conf['changelog']);
- if (!rename($conf['changelog'].'_tmp', $conf['changelog'])) {
- // rename failed so try another way...
- io_unlock($conf['changelog']);
- io_saveFile($conf['changelog'], implode('', $out_lines));
- @unlink($conf['changelog'].'_tmp');
- } else {
- io_unlock($conf['changelog']);
- }
- return true;
- }
-
- // nothing done
- return false;
-}
-
-/**
- * Runs the indexer for the current page
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function runIndexer(){
- global $ID;
- global $conf;
- print "runIndexer(): started".NL;
-
- // Move index files (if needed)
- // Uses the importoldindex plugin to upgrade the index automatically.
- // FIXME: Remove this from runIndexer when it is no longer needed.
- if (@file_exists($conf['cachedir'].'/page.idx') &&
- (!@file_exists($conf['indexdir'].'/page.idx') ||
- !filesize($conf['indexdir'].'/page.idx')) &&
- !@file_exists($conf['indexdir'].'/index_importing')) {
- echo "trigger TEMPORARY_INDEX_UPGRADE_EVENT\n";
- $tmp = array(); // no event data
- trigger_event('TEMPORARY_INDEX_UPGRADE_EVENT', $tmp);
- }
-
- if(!$ID) return false;
-
- // check if indexing needed
- $idxtag = metaFN($ID,'.indexed');
- if(@file_exists($idxtag)){
- if(io_readFile($idxtag) >= INDEXER_VERSION){
- $last = @filemtime($idxtag);
- if($last > @filemtime(wikiFN($ID))){
- print "runIndexer(): index for $ID up to date".NL;
- return false;
- }
- }
- }
-
- // try to aquire a lock
- $lock = $conf['lockdir'].'/_indexer.lock';
- while(!@mkdir($lock,$conf['dmode'])){
- usleep(50);
- if(time()- at filemtime($lock) > 60*5){
- // looks like a stale lock - remove it
- @rmdir($lock);
- print "runIndexer(): stale lock removed".NL;
- }else{
- print "runIndexer(): indexer locked".NL;
- return false;
- }
- }
- if($conf['dperm']) chmod($lock, $conf['dperm']);
-
- require_once(DOKU_INC.'inc/indexer.php');
-
- // upgrade to version 2
- if (!@file_exists($conf['indexdir'].'/pageword.idx'))
- idx_upgradePageWords();
-
- // do the work
- idx_addPage($ID);
-
- // we're finished - save and free lock
- io_saveFile(metaFN($ID,'.indexed'),INDEXER_VERSION);
- @rmdir($lock);
- print "runIndexer(): finished".NL;
- return true;
-}
-
-/**
- * Will render the metadata for the page if not exists yet
- *
- * This makes sure pages which are created from outside DokuWiki will
- * gain their data when viewed for the first time.
- */
-function metaUpdate(){
- global $ID;
- print "metaUpdate(): started".NL;
-
- if(!$ID) return false;
- $file = metaFN($ID, '.meta');
- echo "meta file: $file".NL;
-
- // rendering needed?
- if (@file_exists($file)) return false;
- if (!@file_exists(wikiFN($ID))) return false;
-
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/parserutils.php');
- global $conf;
-
-
- // gather some additional info from changelog
- $info = io_grep($conf['changelog'],
- '/^(\d+)\t(\d+\.\d+\.\d+\.\d+)\t'.preg_quote($ID,'/').'\t([^\t]+)\t([^\t\n]+)/',
- 0,true);
-
- $meta = array();
- if(!empty($info)){
- $meta['date']['created'] = $info[0][1];
- foreach($info as $item){
- if($item[4] != '*'){
- $meta['date']['modified'] = $item[1];
- if($item[3]){
- $meta['contributor'][$item[3]] = $item[3];
- }
- }
- }
- }
-
- $meta = p_render_metadata($ID, $meta);
- io_saveFile($file, serialize($meta));
-
- echo "metaUpdate(): finished".NL;
- return true;
-}
-
-/**
- * Builds a Google Sitemap of all public pages known to the indexer
- *
- * The map is placed in the root directory named sitemap.xml.gz - This
- * file needs to be writable!
- *
- * @author Andreas Gohr
- * @link https://www.google.com/webmasters/sitemaps/docs/en/about.html
- */
-function runSitemapper(){
- global $conf;
- print "runSitemapper(): started".NL;
- if(!$conf['sitemap']) return false;
-
- if($conf['compression'] == 'bz2' || $conf['compression'] == 'gz'){
- $sitemap = 'sitemap.xml.gz';
- }else{
- $sitemap = 'sitemap.xml';
- }
- print "runSitemapper(): using $sitemap".NL;
-
- if(@file_exists(DOKU_INC.$sitemap)){
- if(!is_writable(DOKU_INC.$sitemap)) return false;
- }else{
- if(!is_writable(DOKU_INC)) return false;
- }
-
- if(@filesize(DOKU_INC.$sitemap) &&
- @filemtime(DOKU_INC.$sitemap) > (time()-($conf['sitemap']*60*60*24))){
- print 'runSitemapper(): Sitemap up to date'.NL;
- return false;
- }
-
- $pages = file($conf['indexdir'].'/page.idx');
- print 'runSitemapper(): creating sitemap using '.count($pages).' pages'.NL;
-
- // build the sitemap
- ob_start();
- print '<?xml version="1.0" encoding="UTF-8"?>'.NL;
- print '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'.NL;
- foreach($pages as $id){
- $id = trim($id);
- $file = wikiFN($id);
-
- //skip hidden, non existing and restricted files
- if(isHiddenPage($id)) continue;
- $date = @filemtime($file);
- if(!$date) continue;
- if(auth_aclcheck($id,'','') < AUTH_READ) continue;
-
- print ' <url>'.NL;
- print ' <loc>'.wl($id,'',true).'</loc>'.NL;
- print ' <lastmod>'.date_iso8601($date).'</lastmod>'.NL;
- print ' </url>'.NL;
- }
- print '</urlset>'.NL;
- $data = ob_get_contents();
- ob_end_clean();
-
- //save the new sitemap
- io_saveFile(DOKU_INC.$sitemap,$data);
-
- //ping search engines...
- $http = new DokuHTTPClient();
- $http->timeout = 8;
-
- //ping google
- print 'runSitemapper(): pinging google'.NL;
- $url = 'http://www.google.com/webmasters/sitemaps/ping?sitemap=';
- $url .= urlencode(DOKU_URL.$sitemap);
- $resp = $http->get($url);
- if($http->error) print 'runSitemapper(): '.$http->error.NL;
- print 'runSitemapper(): '.preg_replace('/[\n\r]/',' ',strip_tags($resp)).NL;
-
- //ping yahoo
- print 'runSitemapper(): pinging yahoo'.NL;
- $url = 'http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=dokuwiki&url=';
- $url .= urlencode(DOKU_URL.$sitemap);
- $resp = $http->get($url);
- if($http->error) print 'runSitemapper(): '.$http->error.NL;
- print 'runSitemapper(): '.preg_replace('/[\n\r]/',' ',strip_tags($resp)).NL;
-
- //ping microsoft
- print 'runSitemapper(): pinging microsoft'.NL;
- $url = 'http://search.live.com/ping?sitemap=';
- $url .= urlencode(DOKU_URL.$sitemap);
- $resp = $http->get($url);
- if($http->error) print 'runSitemapper(): '.$http->error.NL;
- print 'runSitemapper(): '.preg_replace('/[\n\r]/',' ',strip_tags($resp)).NL;
-
- print 'runSitemapper(): finished'.NL;
- return true;
-}
-
-/**
- * Formats a timestamp as ISO 8601 date
- *
- * @author <ungu at terong dot com>
- * @link http://www.php.net/manual/en/function.date.php#54072
- */
-function date_iso8601($int_date) {
- //$int_date: current date in UNIX timestamp
- $date_mod = date('Y-m-d\TH:i:s', $int_date);
- $pre_timezone = date('O', $int_date);
- $time_zone = substr($pre_timezone, 0, 3).":".substr($pre_timezone, 3, 2);
- $date_mod .= $time_zone;
- return $date_mod;
-}
-
-/**
- * Just send a 1x1 pixel blank gif to the browser
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Harry Fuecks <fuecks at gmail.com>
- */
-function sendGIF(){
- if($_REQUEST['debug']){
- header('Content-Type: text/plain');
- return;
- }
- $img = base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7');
- header('Content-Type: image/gif');
- header('Content-Length: '.strlen($img));
- header('Connection: Close');
- print $img;
- flush();
- // Browser should drop connection after this
- // Thinks it's got the whole image
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
-// No trailing PHP closing tag - no output please!
-// See Note at http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php
+<?php
+/**
+ * DokuWiki indexer
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+define('DOKU_DISABLE_GZIP_OUTPUT',1);
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/auth.php');
+require_once(DOKU_INC.'inc/events.php');
+session_write_close(); //close session
+if(!defined('NL')) define('NL',"\n");
+
+// Version tag used to force rebuild on upgrade
+define('INDEXER_VERSION', 2);
+
+// keep running after browser closes connection
+ at ignore_user_abort(true);
+
+// check if user abort worked, if yes send output early
+if(@ignore_user_abort() && !$conf['broken_iua']){
+ sendGIF(); // send gif
+ $defer = false;
+}else{
+ $defer = true;
+}
+
+$ID = cleanID($_REQUEST['id']);
+
+// Catch any possible output (e.g. errors)
+if(!$_REQUEST['debug']) ob_start();
+
+// run one of the jobs
+$tmp = array();
+$evt = new Doku_Event('INDEXER_TASKS_RUN', $tmp);
+if ($evt->advise_before()) {
+ runIndexer() or
+ metaUpdate() or
+ runSitemapper() or
+ runTrimRecentChanges() or
+ $evt->advise_after();
+}
+if($defer) sendGIF();
+
+if(!$_REQUEST['debug']) ob_end_clean();
+exit;
+
+// --------------------------------------------------------------------
+
+/**
+ * Trims the recent changes cache (or imports the old changelog) as needed.
+ *
+ * @author Ben Coburn <btcoburn at silicodon.net>
+ */
+function runTrimRecentChanges() {
+ global $conf;
+
+ // Import old changelog (if needed)
+ // Uses the imporoldchangelog plugin to upgrade the changelog automaticaly.
+ // FIXME: Remove this from runTrimRecentChanges when it is no longer needed.
+ if (isset($conf['changelog_old']) &&
+ @file_exists($conf['changelog_old']) && !@file_exists($conf['changelog']) &&
+ !@file_exists($conf['changelog'].'_importing') && !@file_exists($conf['changelog'].'_tmp')) {
+ $tmp = array(); // no event data
+ trigger_event('TEMPORARY_CHANGELOG_UPGRADE_EVENT', $tmp);
+ return true;
+ }
+
+ // Trim the Recent Changes
+ // Trims the recent changes cache to the last $conf['changes_days'] recent
+ // changes or $conf['recent'] items, which ever is larger.
+ // The trimming is only done once a day.
+ if (@file_exists($conf['changelog']) &&
+ (filectime($conf['changelog'])+86400)<time() &&
+ !@file_exists($conf['changelog'].'_tmp')) {
+ io_lock($conf['changelog']);
+ $lines = file($conf['changelog']);
+ if (count($lines)<=$conf['recent']) {
+ // nothing to trim
+ io_unlock($conf['changelog']);
+ return false;
+ }
+
+ io_saveFile($conf['changelog'].'_tmp', ''); // presave tmp as 2nd lock
+ $trim_time = time() - $conf['recent_days']*86400;
+ $out_lines = array();
+
+ for ($i=0; $i<count($lines); $i++) {
+ $log = parseChangelogLine($lines[$i]);
+ if ($log === false) continue; // discard junk
+ if ($log['date'] < $trim_time) {
+ $old_lines[$log['date'].".$i"] = $lines[$i]; // keep old lines for now (append .$i to prevent key collisions)
+ } else {
+ $out_lines[$log['date'].".$i"] = $lines[$i]; // definitely keep these lines
+ }
+ }
+
+ // sort the final result, it shouldn't be necessary,
+ // however the extra robustness in making the changelog cache self-correcting is worth it
+ ksort($out_lines);
+ $extra = $conf['recent'] - count($out_lines); // do we need extra lines do bring us up to minimum
+ if ($extra > 0) {
+ ksort($old_lines);
+ $out_lines = array_merge(array_slice($old_lines,-$extra),$out_lines);
+ }
+
+ // save trimmed changelog
+ io_saveFile($conf['changelog'].'_tmp', implode('', $out_lines));
+ @unlink($conf['changelog']);
+ if (!rename($conf['changelog'].'_tmp', $conf['changelog'])) {
+ // rename failed so try another way...
+ io_unlock($conf['changelog']);
+ io_saveFile($conf['changelog'], implode('', $out_lines));
+ @unlink($conf['changelog'].'_tmp');
+ } else {
+ io_unlock($conf['changelog']);
+ }
+ return true;
+ }
+
+ // nothing done
+ return false;
+}
+
+/**
+ * Runs the indexer for the current page
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function runIndexer(){
+ global $ID;
+ global $conf;
+ print "runIndexer(): started".NL;
+
+ // Move index files (if needed)
+ // Uses the importoldindex plugin to upgrade the index automatically.
+ // FIXME: Remove this from runIndexer when it is no longer needed.
+ if (@file_exists($conf['cachedir'].'/page.idx') &&
+ (!@file_exists($conf['indexdir'].'/page.idx') ||
+ !filesize($conf['indexdir'].'/page.idx')) &&
+ !@file_exists($conf['indexdir'].'/index_importing')) {
+ echo "trigger TEMPORARY_INDEX_UPGRADE_EVENT\n";
+ $tmp = array(); // no event data
+ trigger_event('TEMPORARY_INDEX_UPGRADE_EVENT', $tmp);
+ }
+
+ if(!$ID) return false;
+
+ // check if indexing needed
+ $idxtag = metaFN($ID,'.indexed');
+ if(@file_exists($idxtag)){
+ if(io_readFile($idxtag) >= INDEXER_VERSION){
+ $last = @filemtime($idxtag);
+ if($last > @filemtime(wikiFN($ID))){
+ print "runIndexer(): index for $ID up to date".NL;
+ return false;
+ }
+ }
+ }
+
+ // try to aquire a lock
+ $lock = $conf['lockdir'].'/_indexer.lock';
+ while(!@mkdir($lock,$conf['dmode'])){
+ usleep(50);
+ if(time()- at filemtime($lock) > 60*5){
+ // looks like a stale lock - remove it
+ @rmdir($lock);
+ print "runIndexer(): stale lock removed".NL;
+ }else{
+ print "runIndexer(): indexer locked".NL;
+ return false;
+ }
+ }
+ if($conf['dperm']) chmod($lock, $conf['dperm']);
+
+ require_once(DOKU_INC.'inc/indexer.php');
+
+ // upgrade to version 2
+ if (!@file_exists($conf['indexdir'].'/pageword.idx'))
+ idx_upgradePageWords();
+
+ // do the work
+ idx_addPage($ID);
+
+ // we're finished - save and free lock
+ io_saveFile(metaFN($ID,'.indexed'),INDEXER_VERSION);
+ @rmdir($lock);
+ print "runIndexer(): finished".NL;
+ return true;
+}
+
+/**
+ * Will render the metadata for the page if not exists yet
+ *
+ * This makes sure pages which are created from outside DokuWiki will
+ * gain their data when viewed for the first time.
+ */
+function metaUpdate(){
+ global $ID;
+ print "metaUpdate(): started".NL;
+
+ if(!$ID) return false;
+ $file = metaFN($ID, '.meta');
+ echo "meta file: $file".NL;
+
+ // rendering needed?
+ if (@file_exists($file)) return false;
+ if (!@file_exists(wikiFN($ID))) return false;
+
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/parserutils.php');
+ global $conf;
+
+
+ // gather some additional info from changelog
+ $info = io_grep($conf['changelog'],
+ '/^(\d+)\t(\d+\.\d+\.\d+\.\d+)\t'.preg_quote($ID,'/').'\t([^\t]+)\t([^\t\n]+)/',
+ 0,true);
+
+ $meta = array();
+ if(!empty($info)){
+ $meta['date']['created'] = $info[0][1];
+ foreach($info as $item){
+ if($item[4] != '*'){
+ $meta['date']['modified'] = $item[1];
+ if($item[3]){
+ $meta['contributor'][$item[3]] = $item[3];
+ }
+ }
+ }
+ }
+
+ $meta = p_render_metadata($ID, $meta);
+ io_saveFile($file, serialize($meta));
+
+ echo "metaUpdate(): finished".NL;
+ return true;
+}
+
+/**
+ * Builds a Google Sitemap of all public pages known to the indexer
+ *
+ * The map is placed in the root directory named sitemap.xml.gz - This
+ * file needs to be writable!
+ *
+ * @author Andreas Gohr
+ * @link https://www.google.com/webmasters/sitemaps/docs/en/about.html
+ */
+function runSitemapper(){
+ global $conf;
+ print "runSitemapper(): started".NL;
+ if(!$conf['sitemap']) return false;
+
+ if($conf['compression'] == 'bz2' || $conf['compression'] == 'gz'){
+ $sitemap = 'sitemap.xml.gz';
+ }else{
+ $sitemap = 'sitemap.xml';
+ }
+ print "runSitemapper(): using $sitemap".NL;
+
+ if(@file_exists(DOKU_INC.$sitemap)){
+ if(!is_writable(DOKU_INC.$sitemap)) return false;
+ }else{
+ if(!is_writable(DOKU_INC)) return false;
+ }
+
+ if(@filesize(DOKU_INC.$sitemap) &&
+ @filemtime(DOKU_INC.$sitemap) > (time()-($conf['sitemap']*60*60*24))){
+ print 'runSitemapper(): Sitemap up to date'.NL;
+ return false;
+ }
+
+ $pages = file($conf['indexdir'].'/page.idx');
+ print 'runSitemapper(): creating sitemap using '.count($pages).' pages'.NL;
+
+ // build the sitemap
+ ob_start();
+ print '<?xml version="1.0" encoding="UTF-8"?>'.NL;
+ print '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'.NL;
+ foreach($pages as $id){
+ $id = trim($id);
+ $file = wikiFN($id);
+
+ //skip hidden, non existing and restricted files
+ if(isHiddenPage($id)) continue;
+ $date = @filemtime($file);
+ if(!$date) continue;
+ if(auth_aclcheck($id,'','') < AUTH_READ) continue;
+
+ print ' <url>'.NL;
+ print ' <loc>'.wl($id,'',true).'</loc>'.NL;
+ print ' <lastmod>'.date_iso8601($date).'</lastmod>'.NL;
+ print ' </url>'.NL;
+ }
+ print '</urlset>'.NL;
+ $data = ob_get_contents();
+ ob_end_clean();
+
+ //save the new sitemap
+ io_saveFile(DOKU_INC.$sitemap,$data);
+
+ //ping search engines...
+ $http = new DokuHTTPClient();
+ $http->timeout = 8;
+
+ //ping google
+ print 'runSitemapper(): pinging google'.NL;
+ $url = 'http://www.google.com/webmasters/sitemaps/ping?sitemap=';
+ $url .= urlencode(DOKU_URL.$sitemap);
+ $resp = $http->get($url);
+ if($http->error) print 'runSitemapper(): '.$http->error.NL;
+ print 'runSitemapper(): '.preg_replace('/[\n\r]/',' ',strip_tags($resp)).NL;
+
+ //ping yahoo
+ print 'runSitemapper(): pinging yahoo'.NL;
+ $url = 'http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=dokuwiki&url=';
+ $url .= urlencode(DOKU_URL.$sitemap);
+ $resp = $http->get($url);
+ if($http->error) print 'runSitemapper(): '.$http->error.NL;
+ print 'runSitemapper(): '.preg_replace('/[\n\r]/',' ',strip_tags($resp)).NL;
+
+ //ping microsoft
+ print 'runSitemapper(): pinging microsoft'.NL;
+ $url = 'http://search.live.com/ping?sitemap=';
+ $url .= urlencode(DOKU_URL.$sitemap);
+ $resp = $http->get($url);
+ if($http->error) print 'runSitemapper(): '.$http->error.NL;
+ print 'runSitemapper(): '.preg_replace('/[\n\r]/',' ',strip_tags($resp)).NL;
+
+ print 'runSitemapper(): finished'.NL;
+ return true;
+}
+
+/**
+ * Formats a timestamp as ISO 8601 date
+ *
+ * @author <ungu at terong dot com>
+ * @link http://www.php.net/manual/en/function.date.php#54072
+ */
+function date_iso8601($int_date) {
+ //$int_date: current date in UNIX timestamp
+ $date_mod = date('Y-m-d\TH:i:s', $int_date);
+ $pre_timezone = date('O', $int_date);
+ $time_zone = substr($pre_timezone, 0, 3).":".substr($pre_timezone, 3, 2);
+ $date_mod .= $time_zone;
+ return $date_mod;
+}
+
+/**
+ * Just send a 1x1 pixel blank gif to the browser
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Harry Fuecks <fuecks at gmail.com>
+ */
+function sendGIF(){
+ if($_REQUEST['debug']){
+ header('Content-Type: text/plain');
+ return;
+ }
+ $img = base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7');
+ header('Content-Type: image/gif');
+ header('Content-Length: '.strlen($img));
+ header('Connection: Close');
+ print $img;
+ flush();
+ // Browser should drop connection after this
+ // Thinks it's got the whole image
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
+// No trailing PHP closing tag - no output please!
+// See Note at http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php
Modified: site/trunk/www-root/wiki/lib/exe/js.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/js.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/js.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,406 +1,406 @@
-<?php
-/**
- * DokuWiki JavaScript creator
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
-if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
-if(!defined('NL')) define('NL',"\n");
-require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/pageutils.php');
-require_once(DOKU_INC.'inc/io.php');
-require_once(DOKU_INC.'inc/JSON.php');
-
-// Main (don't run when UNIT test)
-if(!defined('SIMPLE_TEST')){
- header('Content-Type: text/javascript; charset=utf-8');
- js_out();
-}
-
-
-// ---------------------- functions ------------------------------
-
-/**
- * Output all needed JavaScript
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function js_out(){
- global $conf;
- global $lang;
- $edit = (bool) $_REQUEST['edit']; // edit or preview mode?
- $write = (bool) $_REQUEST['write']; // writable?
-
- // The generated script depends on some dynamic options
- $cache = getCacheName('scripts'.$edit.'x'.$write,'.js');
-
- // Array of needed files
- $files = array(
- DOKU_INC.'lib/scripts/helpers.js',
- DOKU_INC.'lib/scripts/events.js',
- DOKU_INC.'lib/scripts/cookie.js',
- DOKU_INC.'lib/scripts/script.js',
- DOKU_INC.'lib/scripts/tw-sack.js',
- DOKU_INC.'lib/scripts/ajax.js',
- DOKU_INC.'lib/scripts/index.js',
- );
- if($edit){
- if($write){
- $files[] = DOKU_INC.'lib/scripts/edit.js';
- }
- $files[] = DOKU_INC.'lib/scripts/media.js';
- }
- $files[] = DOKU_TPLINC.'script.js';
-
- // get possible plugin scripts
- $plugins = js_pluginscripts();
-
- // check cache age & handle conditional request
- header('Cache-Control: public, max-age=3600');
- header('Pragma: public');
- if(js_cacheok($cache,array_merge($files,$plugins))){
- http_conditionalRequest(filemtime($cache));
- if($conf['allowdebug']) header("X-CacheUsed: $cache");
- readfile($cache);
- return;
- } else {
- http_conditionalRequest(time());
- }
-
- // start output buffering and build the script
- ob_start();
-
- // add some global variables
- print "var DOKU_BASE = '".DOKU_BASE."';";
- print "var DOKU_TPL = '".DOKU_TPL."';";
-
- //FIXME: move thes into LANG
- print "var alertText = '".js_escape($lang['qb_alert'])."';";
- print "var notSavedYet = '".js_escape($lang['notsavedyet'])."';";
- print "var reallyDel = '".js_escape($lang['del_confirm'])."';";
-
- // load JS strings form plugins
- $lang['js']['plugins'] = js_pluginstrings();
-
- // load JS specific translations
- $json = new JSON();
- echo 'LANG = '.$json->encode($lang['js']).";\n";
-
- // load files
- foreach($files as $file){
- echo "\n\n/* XXXXXXXXXX begin of $file XXXXXXXXXX */\n\n";
- js_load($file);
- echo "\n\n/* XXXXXXXXXX end of $file XXXXXXXXXX */\n\n";
- }
-
- // init stuff
- js_runonstart("ajax_qsearch.init('qsearch__in','qsearch__out')");
- js_runonstart("addEvent(document,'click',closePopups)");
- js_runonstart('addTocToggle()');
-
- if($edit){
- // size controls
- js_runonstart("initSizeCtl('size__ctl','wiki__text')");
-
- if($write){
- require_once(DOKU_INC.'inc/toolbar.php');
- toolbar_JSdefines('toolbar');
- js_runonstart("initToolbar('tool__bar','wiki__text',toolbar)");
-
- // add pageleave check
- js_runonstart("initChangeCheck('".js_escape($lang['notsavedyet'])."')");
-
- // add lock timer
- js_runonstart("locktimer.init(".($conf['locktime'] - 60).",'".js_escape($lang['willexpire'])."',".$conf['usedraft'].")");
- }
- }
-
- // load plugin scripts (suppress warnings for missing ones)
- foreach($plugins as $plugin){
- if (@file_exists($plugin)) {
- echo "\n\n/* XXXXXXXXXX begin of $plugin XXXXXXXXXX */\n\n";
- js_load($plugin);
- echo "\n\n/* XXXXXXXXXX end of $plugin XXXXXXXXXX */\n\n";
- }
- }
-
- // load user script
- @readfile(DOKU_CONF.'userscript.js');
-
- // add scroll event and tooltip rewriting
- js_runonstart('updateAccessKeyTooltip()');
- js_runonstart('scrollToMarker()');
- js_runonstart('focusMarker()');
-
- // end output buffering and get contents
- $js = ob_get_contents();
- ob_end_clean();
-
- // compress whitespace and comments
- if($conf['compress']){
- $js = js_compress($js);
- }
-
- $js .= "\n"; // https://bugzilla.mozilla.org/show_bug.cgi?id=316033
-
- // save cache file
- io_saveFile($cache,$js);
-
- // finally send output
- print $js;
-}
-
-/**
- * Load the given file, handle include calls and print it
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function js_load($file){
- if(!@file_exists($file)) return;
- static $loaded = array();
-
- $data = io_readFile($file);
- while(preg_match('#/\*\s*DOKUWIKI:include(_once)?\s+([\w\./]+)\s*\*/#',$data,$match)){
- $ifile = $match[2];
-
- // is it a include_once?
- if($match[1]){
- $base = basename($ifile);
- if($loaded[$base]) continue;
- $loaded[$base] = true;
- }
-
- if($ifile{0} != '/') $ifile = dirname($file).'/'.$ifile;
-
- if(@file_exists($ifile)){
- $idata = io_readFile($ifile);
- }else{
- $idata = '';
- }
- $data = str_replace($match[0],$idata,$data);
- }
- echo $data;
-}
-
-/**
- * Checks if a JavaScript Cache file still is valid
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function js_cacheok($cache,$files){
- if($_REQUEST['purge']) return false; //support purge request
-
- $ctime = @filemtime($cache);
- if(!$ctime) return false; //There is no cache
-
- // some additional files to check
- $files[] = DOKU_CONF.'dokuwiki.php';
- $files[] = DOKU_CONF.'local.php';
- $files[] = DOKU_CONF.'userscript.js';
- $files[] = __FILE__;
-
- // now walk the files
- foreach($files as $file){
- if(@filemtime($file) > $ctime){
- return false;
- }
- }
- return true;
-}
-
-/**
- * Returns a list of possible Plugin Scripts (no existance check here)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function js_pluginscripts(){
- $list = array();
- $plugins = plugin_list();
- foreach ($plugins as $p){
- $list[] = DOKU_PLUGIN."$p/script.js";
- }
- return $list;
-}
-
-/**
- * Return an two-dimensional array with strings from the language file of each plugin.
- *
- * - $lang['js'] must be an array.
- * - Nothing is returned for plugins without an entry for $lang['js']
- *
- * @author Gabriel Birke <birke at d-scribe.de>
- */
-function js_pluginstrings()
-{
- global $conf;
- $pluginstrings = array();
- $plugins = plugin_list();
- foreach ($plugins as $p){
- if (isset($lang)) unset($lang);
- if (@file_exists(DOKU_PLUGIN."$p/lang/en/lang.php")) {
- include DOKU_PLUGIN."$p/lang/en/lang.php";
- }
- if (isset($conf['lang']) && $conf['lang']!='en' && @file_exists(DOKU_PLUGIN."$p/lang/".$conf['lang']."/lang.php")) {
- include DOKU_PLUGIN."$p/lang/".$conf['lang']."/lang.php";
- }
- if (isset($lang['js'])) {
- $pluginstrings[$p] = $lang['js'];
- }
- }
- return $pluginstrings;
-}
-
-/**
- * Escapes a String to be embedded in a JavaScript call, keeps \n
- * as newline
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function js_escape($string){
- return str_replace('\\\\n','\\n',addslashes($string));
-}
-
-/**
- * Adds the given JavaScript code to the window.onload() event
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-function js_runonstart($func){
- echo "addInitEvent(function(){ $func; });".NL;
-}
-
-/**
- * Strip comments and whitespaces from given JavaScript Code
- *
- * This is a port of Nick Galbreath's python tool jsstrip.py which is
- * released under BSD license. See link for original code.
- *
- * @author Nick Galbreath <nickg at modp.com>
- * @author Andreas Gohr <andi at splitbrain.org>
- * @link http://code.google.com/p/jsstrip/
- */
-function js_compress($s){
- $s = ltrim($s); // strip all initial whitespace
- $s .= "\n";
- $i = 0; // char index for input string
- $j = 0; // char forward index for input string
- $line = 0; // line number of file (close to it anyways)
- $slen = strlen($s); // size of input string
- $lch = ''; // last char added
- $result = ''; // we store the final result here
-
- // items that don't need spaces next to them
- $chars = "^&|!+\-*\/%=\?:;,{}()<>% \t\n\r'\"[]";
-
- while($i < $slen){
- // skip all "boring" characters. This is either
- // reserved word (e.g. "for", "else", "if") or a
- // variable/object/method (e.g. "foo.color")
- while ($i < $slen && (strpos($chars,$s[$i]) === false) ){
- $result .= $s{$i};
- $i = $i + 1;
- }
-
- $ch = $s{$i};
- // multiline comments (keeping IE conditionals)
- if($ch == '/' && $s{$i+1} == '*' && $s{$i+2} != '@'){
- $endC = strpos($s,'*/',$i+2);
- if($endC === false) trigger_error('Found invalid /*..*/ comment', E_USER_ERROR);
- $i = $endC + 2;
- continue;
- }
-
- // singleline
- if($ch == '/' && $s{$i+1} == '/'){
- $endC = strpos($s,"\n",$i+2);
- if($endC === false) trigger_error('Invalid comment', E_USER_ERROR);
- $i = $endC;
- continue;
- }
-
- // tricky. might be an RE
- if($ch == '/'){
- // rewind, skip white space
- $j = 1;
- while($s{$i-$j} == ' '){
- $j = $j + 1;
- }
- if( ($s{$i-$j} == '=') || ($s{$i-$j} == '(') ){
- // yes, this is an re
- // now move forward and find the end of it
- $j = 1;
- while($s{$i+$j} != '/'){
- while( ($s{$i+$j} != '\\') && ($s{$i+$j} != '/')){
- $j = $j + 1;
- }
- if($s{$i+$j} == '\\') $j = $j + 2;
- }
- $result .= substr($s,$i,$j+1);
- $i = $i + $j + 1;
- continue;
- }
- }
-
- // double quote strings
- if($ch == '"'){
- $j = 1;
- while( $s{$i+$j} != '"' && ($i+$j < $slen)){
- if( $s{$i+$j} == '\\' && ($s{$i+$j+1} == '"' || $s{$i+$j+1} == '\\') ){
- $j += 2;
- }else{
- $j += 1;
- }
- }
- $result .= substr($s,$i,$j+1);
- $i = $i + $j + 1;
- continue;
- }
-
- // single quote strings
- if($ch == "'"){
- $j = 1;
- while( $s{$i+$j} != "'" && ($i+$j < $slen)){
- if( $s{$i+$j} == '\\' && ($s{$i+$j+1} == "'" || $s{$i+$j+1} == '\\') ){
- $j += 2;
- }else{
- $j += 1;
- }
- }
- $result .= substr($s,$i,$j+1);
- $i = $i + $j + 1;
- continue;
- }
-
- // whitespaces
- if( $ch == ' ' || $ch == "\r" || $ch == "\n" || $ch == "\t" ){
- // leading spaces
- if($i+1 < $slen && (strpos($chars,$s[$i+1]) !== false)){
- $i = $i + 1;
- continue;
- }
- // trailing spaces
- // if this ch is space AND the last char processed
- // is special, then skip the space
- $lch = substr($result,-1);
- if($lch && (strpos($chars,$lch) !== false)){
- $i = $i + 1;
- continue;
- }
- // else after all of this convert the "whitespace" to
- // a single space. It will get appended below
- $ch = ' ';
- }
-
- // other chars
- $result .= $ch;
- $i = $i + 1;
- }
-
- return trim($result);
-}
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
-?>
+<?php
+/**
+ * DokuWiki JavaScript creator
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
+if(!defined('NL')) define('NL',"\n");
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/io.php');
+require_once(DOKU_INC.'inc/JSON.php');
+
+// Main (don't run when UNIT test)
+if(!defined('SIMPLE_TEST')){
+ header('Content-Type: text/javascript; charset=utf-8');
+ js_out();
+}
+
+
+// ---------------------- functions ------------------------------
+
+/**
+ * Output all needed JavaScript
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function js_out(){
+ global $conf;
+ global $lang;
+ $edit = (bool) $_REQUEST['edit']; // edit or preview mode?
+ $write = (bool) $_REQUEST['write']; // writable?
+
+ // The generated script depends on some dynamic options
+ $cache = getCacheName('scripts'.$edit.'x'.$write,'.js');
+
+ // Array of needed files
+ $files = array(
+ DOKU_INC.'lib/scripts/helpers.js',
+ DOKU_INC.'lib/scripts/events.js',
+ DOKU_INC.'lib/scripts/cookie.js',
+ DOKU_INC.'lib/scripts/script.js',
+ DOKU_INC.'lib/scripts/tw-sack.js',
+ DOKU_INC.'lib/scripts/ajax.js',
+ DOKU_INC.'lib/scripts/index.js',
+ );
+ if($edit){
+ if($write){
+ $files[] = DOKU_INC.'lib/scripts/edit.js';
+ }
+ $files[] = DOKU_INC.'lib/scripts/media.js';
+ }
+ $files[] = DOKU_TPLINC.'script.js';
+
+ // get possible plugin scripts
+ $plugins = js_pluginscripts();
+
+ // check cache age & handle conditional request
+ header('Cache-Control: public, max-age=3600');
+ header('Pragma: public');
+ if(js_cacheok($cache,array_merge($files,$plugins))){
+ http_conditionalRequest(filemtime($cache));
+ if($conf['allowdebug']) header("X-CacheUsed: $cache");
+ readfile($cache);
+ return;
+ } else {
+ http_conditionalRequest(time());
+ }
+
+ // start output buffering and build the script
+ ob_start();
+
+ // add some global variables
+ print "var DOKU_BASE = '".DOKU_BASE."';";
+ print "var DOKU_TPL = '".DOKU_TPL."';";
+
+ //FIXME: move thes into LANG
+ print "var alertText = '".js_escape($lang['qb_alert'])."';";
+ print "var notSavedYet = '".js_escape($lang['notsavedyet'])."';";
+ print "var reallyDel = '".js_escape($lang['del_confirm'])."';";
+
+ // load JS strings form plugins
+ $lang['js']['plugins'] = js_pluginstrings();
+
+ // load JS specific translations
+ $json = new JSON();
+ echo 'LANG = '.$json->encode($lang['js']).";\n";
+
+ // load files
+ foreach($files as $file){
+ echo "\n\n/* XXXXXXXXXX begin of $file XXXXXXXXXX */\n\n";
+ js_load($file);
+ echo "\n\n/* XXXXXXXXXX end of $file XXXXXXXXXX */\n\n";
+ }
+
+ // init stuff
+ js_runonstart("ajax_qsearch.init('qsearch__in','qsearch__out')");
+ js_runonstart("addEvent(document,'click',closePopups)");
+ js_runonstart('addTocToggle()');
+
+ if($edit){
+ // size controls
+ js_runonstart("initSizeCtl('size__ctl','wiki__text')");
+
+ if($write){
+ require_once(DOKU_INC.'inc/toolbar.php');
+ toolbar_JSdefines('toolbar');
+ js_runonstart("initToolbar('tool__bar','wiki__text',toolbar)");
+
+ // add pageleave check
+ js_runonstart("initChangeCheck('".js_escape($lang['notsavedyet'])."')");
+
+ // add lock timer
+ js_runonstart("locktimer.init(".($conf['locktime'] - 60).",'".js_escape($lang['willexpire'])."',".$conf['usedraft'].")");
+ }
+ }
+
+ // load plugin scripts (suppress warnings for missing ones)
+ foreach($plugins as $plugin){
+ if (@file_exists($plugin)) {
+ echo "\n\n/* XXXXXXXXXX begin of $plugin XXXXXXXXXX */\n\n";
+ js_load($plugin);
+ echo "\n\n/* XXXXXXXXXX end of $plugin XXXXXXXXXX */\n\n";
+ }
+ }
+
+ // load user script
+ @readfile(DOKU_CONF.'userscript.js');
+
+ // add scroll event and tooltip rewriting
+ js_runonstart('updateAccessKeyTooltip()');
+ js_runonstart('scrollToMarker()');
+ js_runonstart('focusMarker()');
+
+ // end output buffering and get contents
+ $js = ob_get_contents();
+ ob_end_clean();
+
+ // compress whitespace and comments
+ if($conf['compress']){
+ $js = js_compress($js);
+ }
+
+ $js .= "\n"; // https://bugzilla.mozilla.org/show_bug.cgi?id=316033
+
+ // save cache file
+ io_saveFile($cache,$js);
+
+ // finally send output
+ print $js;
+}
+
+/**
+ * Load the given file, handle include calls and print it
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function js_load($file){
+ if(!@file_exists($file)) return;
+ static $loaded = array();
+
+ $data = io_readFile($file);
+ while(preg_match('#/\*\s*DOKUWIKI:include(_once)?\s+([\w\./]+)\s*\*/#',$data,$match)){
+ $ifile = $match[2];
+
+ // is it a include_once?
+ if($match[1]){
+ $base = basename($ifile);
+ if($loaded[$base]) continue;
+ $loaded[$base] = true;
+ }
+
+ if($ifile{0} != '/') $ifile = dirname($file).'/'.$ifile;
+
+ if(@file_exists($ifile)){
+ $idata = io_readFile($ifile);
+ }else{
+ $idata = '';
+ }
+ $data = str_replace($match[0],$idata,$data);
+ }
+ echo $data;
+}
+
+/**
+ * Checks if a JavaScript Cache file still is valid
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function js_cacheok($cache,$files){
+ if($_REQUEST['purge']) return false; //support purge request
+
+ $ctime = @filemtime($cache);
+ if(!$ctime) return false; //There is no cache
+
+ // some additional files to check
+ $files[] = DOKU_CONF.'dokuwiki.php';
+ $files[] = DOKU_CONF.'local.php';
+ $files[] = DOKU_CONF.'userscript.js';
+ $files[] = __FILE__;
+
+ // now walk the files
+ foreach($files as $file){
+ if(@filemtime($file) > $ctime){
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * Returns a list of possible Plugin Scripts (no existance check here)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function js_pluginscripts(){
+ $list = array();
+ $plugins = plugin_list();
+ foreach ($plugins as $p){
+ $list[] = DOKU_PLUGIN."$p/script.js";
+ }
+ return $list;
+}
+
+/**
+ * Return an two-dimensional array with strings from the language file of each plugin.
+ *
+ * - $lang['js'] must be an array.
+ * - Nothing is returned for plugins without an entry for $lang['js']
+ *
+ * @author Gabriel Birke <birke at d-scribe.de>
+ */
+function js_pluginstrings()
+{
+ global $conf;
+ $pluginstrings = array();
+ $plugins = plugin_list();
+ foreach ($plugins as $p){
+ if (isset($lang)) unset($lang);
+ if (@file_exists(DOKU_PLUGIN."$p/lang/en/lang.php")) {
+ include DOKU_PLUGIN."$p/lang/en/lang.php";
+ }
+ if (isset($conf['lang']) && $conf['lang']!='en' && @file_exists(DOKU_PLUGIN."$p/lang/".$conf['lang']."/lang.php")) {
+ include DOKU_PLUGIN."$p/lang/".$conf['lang']."/lang.php";
+ }
+ if (isset($lang['js'])) {
+ $pluginstrings[$p] = $lang['js'];
+ }
+ }
+ return $pluginstrings;
+}
+
+/**
+ * Escapes a String to be embedded in a JavaScript call, keeps \n
+ * as newline
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function js_escape($string){
+ return str_replace('\\\\n','\\n',addslashes($string));
+}
+
+/**
+ * Adds the given JavaScript code to the window.onload() event
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+function js_runonstart($func){
+ echo "addInitEvent(function(){ $func; });".NL;
+}
+
+/**
+ * Strip comments and whitespaces from given JavaScript Code
+ *
+ * This is a port of Nick Galbreath's python tool jsstrip.py which is
+ * released under BSD license. See link for original code.
+ *
+ * @author Nick Galbreath <nickg at modp.com>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @link http://code.google.com/p/jsstrip/
+ */
+function js_compress($s){
+ $s = ltrim($s); // strip all initial whitespace
+ $s .= "\n";
+ $i = 0; // char index for input string
+ $j = 0; // char forward index for input string
+ $line = 0; // line number of file (close to it anyways)
+ $slen = strlen($s); // size of input string
+ $lch = ''; // last char added
+ $result = ''; // we store the final result here
+
+ // items that don't need spaces next to them
+ $chars = "^&|!+\-*\/%=\?:;,{}()<>% \t\n\r'\"[]";
+
+ while($i < $slen){
+ // skip all "boring" characters. This is either
+ // reserved word (e.g. "for", "else", "if") or a
+ // variable/object/method (e.g. "foo.color")
+ while ($i < $slen && (strpos($chars,$s[$i]) === false) ){
+ $result .= $s{$i};
+ $i = $i + 1;
+ }
+
+ $ch = $s{$i};
+ // multiline comments (keeping IE conditionals)
+ if($ch == '/' && $s{$i+1} == '*' && $s{$i+2} != '@'){
+ $endC = strpos($s,'*/',$i+2);
+ if($endC === false) trigger_error('Found invalid /*..*/ comment', E_USER_ERROR);
+ $i = $endC + 2;
+ continue;
+ }
+
+ // singleline
+ if($ch == '/' && $s{$i+1} == '/'){
+ $endC = strpos($s,"\n",$i+2);
+ if($endC === false) trigger_error('Invalid comment', E_USER_ERROR);
+ $i = $endC;
+ continue;
+ }
+
+ // tricky. might be an RE
+ if($ch == '/'){
+ // rewind, skip white space
+ $j = 1;
+ while($s{$i-$j} == ' '){
+ $j = $j + 1;
+ }
+ if( ($s{$i-$j} == '=') || ($s{$i-$j} == '(') ){
+ // yes, this is an re
+ // now move forward and find the end of it
+ $j = 1;
+ while($s{$i+$j} != '/'){
+ while( ($s{$i+$j} != '\\') && ($s{$i+$j} != '/')){
+ $j = $j + 1;
+ }
+ if($s{$i+$j} == '\\') $j = $j + 2;
+ }
+ $result .= substr($s,$i,$j+1);
+ $i = $i + $j + 1;
+ continue;
+ }
+ }
+
+ // double quote strings
+ if($ch == '"'){
+ $j = 1;
+ while( $s{$i+$j} != '"' && ($i+$j < $slen)){
+ if( $s{$i+$j} == '\\' && ($s{$i+$j+1} == '"' || $s{$i+$j+1} == '\\') ){
+ $j += 2;
+ }else{
+ $j += 1;
+ }
+ }
+ $result .= substr($s,$i,$j+1);
+ $i = $i + $j + 1;
+ continue;
+ }
+
+ // single quote strings
+ if($ch == "'"){
+ $j = 1;
+ while( $s{$i+$j} != "'" && ($i+$j < $slen)){
+ if( $s{$i+$j} == '\\' && ($s{$i+$j+1} == "'" || $s{$i+$j+1} == '\\') ){
+ $j += 2;
+ }else{
+ $j += 1;
+ }
+ }
+ $result .= substr($s,$i,$j+1);
+ $i = $i + $j + 1;
+ continue;
+ }
+
+ // whitespaces
+ if( $ch == ' ' || $ch == "\r" || $ch == "\n" || $ch == "\t" ){
+ // leading spaces
+ if($i+1 < $slen && (strpos($chars,$s[$i+1]) !== false)){
+ $i = $i + 1;
+ continue;
+ }
+ // trailing spaces
+ // if this ch is space AND the last char processed
+ // is special, then skip the space
+ $lch = substr($result,-1);
+ if($lch && (strpos($chars,$lch) !== false)){
+ $i = $i + 1;
+ continue;
+ }
+ // else after all of this convert the "whitespace" to
+ // a single space. It will get appended below
+ $ch = ' ';
+ }
+
+ // other chars
+ $result .= $ch;
+ $i = $i + 1;
+ }
+
+ return trim($result);
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
+?>
Modified: site/trunk/www-root/wiki/lib/exe/mediamanager.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/mediamanager.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/mediamanager.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,58 +1,58 @@
-<?php
- if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
- define('DOKU_MEDIAMANAGER',1);
- require_once(DOKU_INC.'inc/init.php');
- require_once(DOKU_INC.'inc/lang/en/lang.php');
- require_once(DOKU_INC.'inc/lang/'.$conf['lang'].'/lang.php');
- require_once(DOKU_INC.'inc/media.php');
- require_once(DOKU_INC.'inc/common.php');
- require_once(DOKU_INC.'inc/search.php');
- require_once(DOKU_INC.'inc/template.php');
- require_once(DOKU_INC.'inc/auth.php');
- session_write_close(); //close session
-
- // handle passed message
- if($_REQUEST['msg1']) msg(hsc($_REQUEST['msg1']),1);
-
-
- // get namespace to display (either direct or from deletion order)
- if($_REQUEST['delete']){
- $DEL = cleanID($_REQUEST['delete']);
- $IMG = $DEL;
- $NS = getNS($DEL);
- }elseif($_REQUEST['edit']){
- $IMG = cleanID($_REQUEST['edit']);
- $NS = getNS($IMG);
- }elseif($_REQUEST['img']){
- $IMG = cleanID($_REQUEST['img']);
- $NS = getNS($IMG);
- }else{
- $NS = $_REQUEST['ns'];
- $NS = cleanID($NS);
- }
-
- // check auth
- $AUTH = auth_quickaclcheck("$NS:*");
-
- // create the given namespace (just for beautification)
- if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); }
-
- // handle upload
- if($_FILES['upload']['tmp_name']){
- $JUMPTO = media_upload($NS,$AUTH);
- if($JUMPTO) $NS = getNS($JUMPTO);
- }
-
- // handle meta saving
- if($IMG && $_REQUEST['do']['save']){
- $JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
- }
-
- // handle deletion
- if($DEL) {
- $INUSE = media_delete($DEL,$AUTH);
- }
-
- // finished - start output
- header('Content-Type: text/html; charset=utf-8');
- include(template('mediamanager.php'));
+<?php
+ if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+ define('DOKU_MEDIAMANAGER',1);
+ require_once(DOKU_INC.'inc/init.php');
+ require_once(DOKU_INC.'inc/lang/en/lang.php');
+ require_once(DOKU_INC.'inc/lang/'.$conf['lang'].'/lang.php');
+ require_once(DOKU_INC.'inc/media.php');
+ require_once(DOKU_INC.'inc/common.php');
+ require_once(DOKU_INC.'inc/search.php');
+ require_once(DOKU_INC.'inc/template.php');
+ require_once(DOKU_INC.'inc/auth.php');
+ session_write_close(); //close session
+
+ // handle passed message
+ if($_REQUEST['msg1']) msg(hsc($_REQUEST['msg1']),1);
+
+
+ // get namespace to display (either direct or from deletion order)
+ if($_REQUEST['delete']){
+ $DEL = cleanID($_REQUEST['delete']);
+ $IMG = $DEL;
+ $NS = getNS($DEL);
+ }elseif($_REQUEST['edit']){
+ $IMG = cleanID($_REQUEST['edit']);
+ $NS = getNS($IMG);
+ }elseif($_REQUEST['img']){
+ $IMG = cleanID($_REQUEST['img']);
+ $NS = getNS($IMG);
+ }else{
+ $NS = $_REQUEST['ns'];
+ $NS = cleanID($NS);
+ }
+
+ // check auth
+ $AUTH = auth_quickaclcheck("$NS:*");
+
+ // create the given namespace (just for beautification)
+ if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); }
+
+ // handle upload
+ if($_FILES['upload']['tmp_name']){
+ $JUMPTO = media_upload($NS,$AUTH);
+ if($JUMPTO) $NS = getNS($JUMPTO);
+ }
+
+ // handle meta saving
+ if($IMG && $_REQUEST['do']['save']){
+ $JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
+ }
+
+ // handle deletion
+ if($DEL) {
+ $INUSE = media_delete($DEL,$AUTH);
+ }
+
+ // finished - start output
+ header('Content-Type: text/html; charset=utf-8');
+ include(template('mediamanager.php'));
Modified: site/trunk/www-root/wiki/lib/exe/opensearch.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/opensearch.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/opensearch.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,38 +1,38 @@
-<?php
-/**
- * DokuWiki OpenSearch creator
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @link http://www.opensearch.org/
- * @author Mike Frysinger <vapier at gentoo.org>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
-if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
-if(!defined('NL')) define('NL',"\n");
-require_once(DOKU_INC.'inc/init.php');
-
-// try to be clever about the favicon location
-if(file_exists(DOKU_INC.'favicon.ico')){
- $ico = DOKU_URL.'favicon.ico';
-}elseif(file_exists(DOKU_TPLINC.'images/favicon.ico')){
- $ico = DOKU_URL.'lib/tpl/'.$conf['template'].'/images/favicon.ico';
-}elseif(file_exists(DOKU_TPLINC.'favicon.ico')){
- $ico = DOKU_URL.'lib/tpl/'.$conf['template'].'/favicon.ico';
-}else{
- $ico = DOKU_URL.'lib/tpl/default/images/favicon.ico';
-}
-
-// output
-header('Content-Type: application/opensearchdescription+xml; charset=utf-8');
-echo '<?xml version="1.0"?>'.NL;
-echo '<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">'.NL;
-echo ' <ShortName>'.htmlspecialchars($conf['title']).'</ShortName>'.NL;
-echo ' <Image width="16" height="16" type="image/x-icon">'.$ico.'</Image>'.NL;
-echo ' <Url type="text/html" template="'.DOKU_URL.DOKU_SCRIPT.'?do=search&id={searchTerms}" />'.NL;
-echo ' <Url type="application/x-suggestions+json" template="'.
- DOKU_URL.'lib/exe/ajax.php?call=suggestions&q={searchTerms}" />'.NL;
-echo '</OpenSearchDescription>'.NL;
-
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * DokuWiki OpenSearch creator
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @link http://www.opensearch.org/
+ * @author Mike Frysinger <vapier at gentoo.org>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
+if(!defined('NL')) define('NL',"\n");
+require_once(DOKU_INC.'inc/init.php');
+
+// try to be clever about the favicon location
+if(file_exists(DOKU_INC.'favicon.ico')){
+ $ico = DOKU_URL.'favicon.ico';
+}elseif(file_exists(DOKU_TPLINC.'images/favicon.ico')){
+ $ico = DOKU_URL.'lib/tpl/'.$conf['template'].'/images/favicon.ico';
+}elseif(file_exists(DOKU_TPLINC.'favicon.ico')){
+ $ico = DOKU_URL.'lib/tpl/'.$conf['template'].'/favicon.ico';
+}else{
+ $ico = DOKU_URL.'lib/tpl/default/images/favicon.ico';
+}
+
+// output
+header('Content-Type: application/opensearchdescription+xml; charset=utf-8');
+echo '<?xml version="1.0"?>'.NL;
+echo '<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">'.NL;
+echo ' <ShortName>'.htmlspecialchars($conf['title']).'</ShortName>'.NL;
+echo ' <Image width="16" height="16" type="image/x-icon">'.$ico.'</Image>'.NL;
+echo ' <Url type="text/html" template="'.DOKU_URL.DOKU_SCRIPT.'?do=search&id={searchTerms}" />'.NL;
+echo ' <Url type="application/x-suggestions+json" template="'.
+ DOKU_URL.'lib/exe/ajax.php?call=suggestions&q={searchTerms}" />'.NL;
+echo '</OpenSearchDescription>'.NL;
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/lib/exe/xmlrpc.php
===================================================================
--- site/trunk/www-root/wiki/lib/exe/xmlrpc.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/exe/xmlrpc.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,429 +1,429 @@
-<?php
-if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
-
-// fix when '<?xml' isn't on the very first line
-if(isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);
-
-
-require_once(DOKU_INC.'inc/init.php');
-
-if(!$conf['xmlrpc']) {
- die('XML-RPC server not enabled.');
-}
-
-require_once(DOKU_INC.'inc/common.php');
-require_once(DOKU_INC.'inc/auth.php');
-session_write_close(); //close session
-require_once(DOKU_INC.'inc/IXR_Library.php');
-
-
-/**
- * Contains needed wrapper functions and registers all available
- * XMLRPC functions.
- */
-class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
- var $methods = array();
-
- /**
- * Constructor. Register methods and run Server
- */
- function dokuwiki_xmlrpc_server(){
- $this->IXR_IntrospectionServer();
-
- /* DokuWiki's own methods */
- $this->addCallback(
- 'dokuwiki.getVersion',
- 'getVersion',
- array('string'),
- 'Returns the running DokuWiki version.'
- );
-
- /* Wiki API v2 http://www.jspwiki.org/wiki/WikiRPCInterface2 */
- $this->addCallback(
- 'wiki.getRPCVersionSupported',
- 'this:wiki_RPCVersion',
- array('int'),
- 'Returns 2 with the supported RPC API version.'
- );
- $this->addCallback(
- 'wiki.getPage',
- 'this:rawPage',
- array('string','string'),
- 'Get the raw Wiki text of page, latest version.'
- );
- $this->addCallback(
- 'wiki.getPageVersion',
- 'this:rawPage',
- array('string','string','int'),
- 'Get the raw Wiki text of page.'
- );
- $this->addCallback(
- 'wiki.getPageHTML',
- 'this:htmlPage',
- array('string','string'),
- 'Return page in rendered HTML, latest version.'
- );
- $this->addCallback(
- 'wiki.getPageHTMLVersion',
- 'this:htmlPage',
- array('string','string','int'),
- 'Return page in rendered HTML.'
- );
- $this->addCallback(
- 'wiki.getAllPages',
- 'this:listPages',
- array('struct'),
- 'Returns a list of all pages. The result is an array of utf8 pagenames.'
- );
- $this->addCallback(
- 'wiki.getBackLinks',
- 'this:listBackLinks',
- array('struct','string'),
- 'Returns the pages that link to this page.'
- );
- $this->addCallback(
- 'wiki.getPageInfo',
- 'this:pageInfo',
- array('struct','string'),
- 'Returns a struct with infos about the page.'
- );
- $this->addCallback(
- 'wiki.getPageInfoVersion',
- 'this:pageInfo',
- array('struct','string','int'),
- 'Returns a struct with infos about the page.'
- );
- $this->addCallback(
- 'wiki.getPageVersions',
- 'this:pageVersions',
- array('struct','string','int'),
- 'Returns the available revisions of the page.'
- );
- $this->addCallback(
- 'wiki.putPage',
- 'this:putPage',
- array('int', 'string', 'string', 'struct'),
- 'Saves a wiki page.'
- );
- $this->addCallback(
- 'wiki.listLinks',
- 'this:listLinks',
- array('struct','string'),
- 'Lists all links contained in a wiki page.'
- );
- $this->addCallback(
- 'wiki.getRecentChanges',
- 'this:getRecentChanges',
- array('struct','int'),
- 'Returns a strukt about all recent changes since given timestamp.'
- );
-
- $this->serve();
- }
-
- /**
- * Return a raw wiki page
- */
- function rawPage($id,$rev=''){
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- $text = rawWiki($id,$rev);
- if(!$text) {
- $data = array($id);
- return trigger_event('HTML_PAGE_FROMTEMPLATE',$data,'pageTemplate',true);
- } else {
- return $text;
- }
- }
-
- /**
- * Return a wiki page rendered to html
- */
- function htmlPage($id,$rev=''){
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- return p_wiki_xhtml($id,$rev,false);
- }
-
- /**
- * List all pages - we use the indexer list here
- */
- function listPages(){
- require_once(DOKU_INC.'inc/fulltext.php');
- return ft_pageLookup('');
- }
-
- /**
- * Return a list of backlinks
- */
- function listBackLinks($id){
- require_once(DOKU_INC.'inc/fulltext.php');
- return ft_backlinks($id);
- }
-
- /**
- * Return some basic data about a page
- */
- function pageInfo($id,$rev=''){
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- $file = wikiFN($id,$rev);
- $time = @filemtime($file);
- if(!$time){
- return new IXR_Error(10, 'The requested page does not exist');
- }
-
- $info = getRevisionInfo($id, $time, 1024);
-
- $data = array(
- 'name' => $id,
- 'lastModified' => new IXR_Date($time),
- 'author' => (($info['user']) ? $info['user'] : $info['ip']),
- 'version' => $time
- );
-
- return ($data);
- }
-
- /**
- * Save a wiki page
- *
- * @author Michael Klier <chi at chimeric.de>
- */
- function putPage($id, $text, $params) {
- global $TEXT;
- global $lang;
-
- $id = cleanID($id);
- $TEXT = trim($text);
- $sum = $params['sum'];
- $minor = $params['minor'];
-
- if(empty($id))
- return new IXR_Error(1, 'Empty page ID');
-
- if(!page_exists($id) && empty($TEXT)) {
- return new IXR_ERROR(1, 'Refusing to write an empty new wiki page');
- }
-
- if(auth_quickaclcheck($id) < AUTH_WRITE)
- return new IXR_Error(1, 'You are not allowed to edit this page');
-
- // Check, if page is locked
- if(checklock($id))
- return new IXR_Error(1, 'The page is currently locked');
-
- // SPAM check
- if(checkwordblock())
- return new IXR_Error(1, 'Positive wordblock check');
-
- // autoset summary on new pages
- if(!page_exists($id) && empty($sum)) {
- $sum = $lang['created'];
- }
-
- // autoset summary on deleted pages
- if(page_exists($id) && empty($TEXT) && empty($sum)) {
- $sum = $lang['deleted'];
- }
-
- lock($id);
-
- saveWikiText($id,$TEXT,$sum,$minor);
-
- unlock($id);
-
- return 0;
- }
-
- /**
- * Lists all links contained in a wiki page
- *
- * @author Michael Klier <chi at chimeric.de>
- */
- function listLinks($id) {
- if(auth_quickaclcheck($id) < AUTH_READ){
- return new IXR_Error(1, 'You are not allowed to read this page');
- }
- $links = array();
-
- // resolve page instructions
- $ins = p_cached_instructions(wikiFN(cleanID($id)));
-
- // instantiate new Renderer - needed for interwiki links
- include(DOKU_INC.'inc/parser/xhtml.php');
- $Renderer = new Doku_Renderer_xhtml();
- $Renderer->interwiki = getInterwiki();
-
- // parse parse instructions
- foreach($ins as $in) {
- $link = array();
- switch($in[0]) {
- case 'internallink':
- $link['type'] = 'local';
- $link['page'] = $in[1][0];
- $link['href'] = wl($in[1][0]);
- array_push($links,$link);
- break;
- case 'externallink':
- $link['type'] = 'extern';
- $link['page'] = $in[1][0];
- $link['href'] = $in[1][0];
- array_push($links,$link);
- break;
- case 'interwikilink':
- $url = $Renderer->_resolveInterWiki($in[1][2],$in[1][3]);
- $link['type'] = 'extern';
- $link['page'] = $url;
- $link['href'] = $url;
- array_push($links,$link);
- break;
- }
- }
-
- return ($links);
- }
-
- /**
- * Returns a list of recent changes since give timestamp
- *
- * @author Michael Klier <chi at chimeric.de>
- */
- function getRecentChanges($timestamp) {
- global $conf;
-
- if(strlen($timestamp) != 10)
- return new IXR_Error(20, 'The provided value is not a valid timestamp');
-
- $changes = array();
-
- require_once(DOKU_INC.'inc/changelog.php');
- require_once(DOKU_INC.'inc/pageutils.php');
-
- // read changes
- $lines = @file($conf['changelog']);
-
- if(empty($lines))
- return new IXR_Error(10, 'The changelog could not be read');
-
- // we start searching at the end of the list
- $lines = array_reverse($lines);
-
- // cache seen pages and skip them
- $seen = array();
-
- foreach($lines as $line) {
-
- if(empty($line)) continue; // skip empty lines
-
- $logline = parseChangelogLine($line);
-
- if($logline === false) continue;
-
- // skip seen ones
- if(isset($seen[$logline['id']])) continue;
-
- // skip minors
- if($logline['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT && ($flags & RECENTS_SKIP_MINORS)) continue;
-
- // remember in seen to skip additional sights
- $seen[$logline['id']] = 1;
-
- // check if it's a hidden page
- if(isHiddenPage($logline['id'])) continue;
-
- // check ACL
- if(auth_quickaclcheck($logline['id']) < AUTH_READ) continue;
-
- // check existance
- if((!@file_exists(wikiFN($logline['id']))) && ($flags & RECENTS_SKIP_DELETED)) continue;
-
- // check if logline is still in the queried time frame
- if($logline['date'] >= $timestamp) {
- $change['name'] = $logline['id'];
- $change['lastModified'] = new IXR_Date($logline['date']);
- $change['author'] = $logline['user'];
- $change['version'] = $logline['date'];
- array_push($changes, $change);
- } else {
- $changes = array_reverse($changes);
- return ($changes);
- }
- }
- // in case we still have nothing at this point
- return new IXR_Error(30, 'There are no changes in the specified timeframe');
- }
-
- /**
- * Returns a list of available revisions of a given wiki page
- *
- * @author Michael Klier <chi at chimeric.de>
- */
- function pageVersions($id, $first) {
- global $conf;
-
- $versions = array();
-
- if(empty($id))
- return new IXR_Error(1, 'Empty page ID');
-
- require_once(DOKU_INC.'inc/changelog.php');
-
- $revisions = getRevisions($id, $first, $conf['recent']+1);
-
- if(count($revisions)==0 && $first!=0) {
- $first=0;
- $revisions = getRevisions($id, $first, $conf['recent']+1);
- }
-
- if(count($revisions)>0 && $first==0) {
- array_unshift($revisions, ''); // include current revision
- array_pop($revisions); // remove extra log entry
- }
-
- $hasNext = false;
- if(count($revisions)>$conf['recent']) {
- $hasNext = true;
- array_pop($revisions); // remove extra log entry
- }
-
- if(!empty($revisions)) {
- foreach($revisions as $rev) {
- $file = wikiFN($id,$rev);
- $time = @filemtime($file);
- // we check if the page actually exists, if this is not the
- // case this can lead to less pages being returned than
- // specified via $conf['recent']
- if($time){
- $info = getRevisionInfo($id, $time, 1024);
- if(!empty($info)) {
- $data['user'] = $info['user'];
- $data['ip'] = $info['ip'];
- $data['type'] = $info['type'];
- $data['sum'] = $info['sum'];
- $data['modified'] = new IXR_Date($info['date']);
- $data['version'] = $info['date'];
- array_push($versions, $data);
- }
- }
- }
- return $versions;
- } else {
- return array();
- }
- }
-
- /**
- * The version of Wiki RPC API supported
- */
- function wiki_RPCVersion(){
- return 2;
- }
-}
-
-$server = new dokuwiki_xmlrpc_server();
-
-// vim:ts=4:sw=4:enc=utf-8:
+<?php
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
+
+// fix when '<?xml' isn't on the very first line
+if(isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);
+
+
+require_once(DOKU_INC.'inc/init.php');
+
+if(!$conf['xmlrpc']) {
+ die('XML-RPC server not enabled.');
+}
+
+require_once(DOKU_INC.'inc/common.php');
+require_once(DOKU_INC.'inc/auth.php');
+session_write_close(); //close session
+require_once(DOKU_INC.'inc/IXR_Library.php');
+
+
+/**
+ * Contains needed wrapper functions and registers all available
+ * XMLRPC functions.
+ */
+class dokuwiki_xmlrpc_server extends IXR_IntrospectionServer {
+ var $methods = array();
+
+ /**
+ * Constructor. Register methods and run Server
+ */
+ function dokuwiki_xmlrpc_server(){
+ $this->IXR_IntrospectionServer();
+
+ /* DokuWiki's own methods */
+ $this->addCallback(
+ 'dokuwiki.getVersion',
+ 'getVersion',
+ array('string'),
+ 'Returns the running DokuWiki version.'
+ );
+
+ /* Wiki API v2 http://www.jspwiki.org/wiki/WikiRPCInterface2 */
+ $this->addCallback(
+ 'wiki.getRPCVersionSupported',
+ 'this:wiki_RPCVersion',
+ array('int'),
+ 'Returns 2 with the supported RPC API version.'
+ );
+ $this->addCallback(
+ 'wiki.getPage',
+ 'this:rawPage',
+ array('string','string'),
+ 'Get the raw Wiki text of page, latest version.'
+ );
+ $this->addCallback(
+ 'wiki.getPageVersion',
+ 'this:rawPage',
+ array('string','string','int'),
+ 'Get the raw Wiki text of page.'
+ );
+ $this->addCallback(
+ 'wiki.getPageHTML',
+ 'this:htmlPage',
+ array('string','string'),
+ 'Return page in rendered HTML, latest version.'
+ );
+ $this->addCallback(
+ 'wiki.getPageHTMLVersion',
+ 'this:htmlPage',
+ array('string','string','int'),
+ 'Return page in rendered HTML.'
+ );
+ $this->addCallback(
+ 'wiki.getAllPages',
+ 'this:listPages',
+ array('struct'),
+ 'Returns a list of all pages. The result is an array of utf8 pagenames.'
+ );
+ $this->addCallback(
+ 'wiki.getBackLinks',
+ 'this:listBackLinks',
+ array('struct','string'),
+ 'Returns the pages that link to this page.'
+ );
+ $this->addCallback(
+ 'wiki.getPageInfo',
+ 'this:pageInfo',
+ array('struct','string'),
+ 'Returns a struct with infos about the page.'
+ );
+ $this->addCallback(
+ 'wiki.getPageInfoVersion',
+ 'this:pageInfo',
+ array('struct','string','int'),
+ 'Returns a struct with infos about the page.'
+ );
+ $this->addCallback(
+ 'wiki.getPageVersions',
+ 'this:pageVersions',
+ array('struct','string','int'),
+ 'Returns the available revisions of the page.'
+ );
+ $this->addCallback(
+ 'wiki.putPage',
+ 'this:putPage',
+ array('int', 'string', 'string', 'struct'),
+ 'Saves a wiki page.'
+ );
+ $this->addCallback(
+ 'wiki.listLinks',
+ 'this:listLinks',
+ array('struct','string'),
+ 'Lists all links contained in a wiki page.'
+ );
+ $this->addCallback(
+ 'wiki.getRecentChanges',
+ 'this:getRecentChanges',
+ array('struct','int'),
+ 'Returns a strukt about all recent changes since given timestamp.'
+ );
+
+ $this->serve();
+ }
+
+ /**
+ * Return a raw wiki page
+ */
+ function rawPage($id,$rev=''){
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return new IXR_Error(1, 'You are not allowed to read this page');
+ }
+ $text = rawWiki($id,$rev);
+ if(!$text) {
+ $data = array($id);
+ return trigger_event('HTML_PAGE_FROMTEMPLATE',$data,'pageTemplate',true);
+ } else {
+ return $text;
+ }
+ }
+
+ /**
+ * Return a wiki page rendered to html
+ */
+ function htmlPage($id,$rev=''){
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return new IXR_Error(1, 'You are not allowed to read this page');
+ }
+ return p_wiki_xhtml($id,$rev,false);
+ }
+
+ /**
+ * List all pages - we use the indexer list here
+ */
+ function listPages(){
+ require_once(DOKU_INC.'inc/fulltext.php');
+ return ft_pageLookup('');
+ }
+
+ /**
+ * Return a list of backlinks
+ */
+ function listBackLinks($id){
+ require_once(DOKU_INC.'inc/fulltext.php');
+ return ft_backlinks($id);
+ }
+
+ /**
+ * Return some basic data about a page
+ */
+ function pageInfo($id,$rev=''){
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return new IXR_Error(1, 'You are not allowed to read this page');
+ }
+ $file = wikiFN($id,$rev);
+ $time = @filemtime($file);
+ if(!$time){
+ return new IXR_Error(10, 'The requested page does not exist');
+ }
+
+ $info = getRevisionInfo($id, $time, 1024);
+
+ $data = array(
+ 'name' => $id,
+ 'lastModified' => new IXR_Date($time),
+ 'author' => (($info['user']) ? $info['user'] : $info['ip']),
+ 'version' => $time
+ );
+
+ return ($data);
+ }
+
+ /**
+ * Save a wiki page
+ *
+ * @author Michael Klier <chi at chimeric.de>
+ */
+ function putPage($id, $text, $params) {
+ global $TEXT;
+ global $lang;
+
+ $id = cleanID($id);
+ $TEXT = trim($text);
+ $sum = $params['sum'];
+ $minor = $params['minor'];
+
+ if(empty($id))
+ return new IXR_Error(1, 'Empty page ID');
+
+ if(!page_exists($id) && empty($TEXT)) {
+ return new IXR_ERROR(1, 'Refusing to write an empty new wiki page');
+ }
+
+ if(auth_quickaclcheck($id) < AUTH_EDIT)
+ return new IXR_Error(1, 'You are not allowed to edit this page');
+
+ // Check, if page is locked
+ if(checklock($id))
+ return new IXR_Error(1, 'The page is currently locked');
+
+ // SPAM check
+ if(checkwordblock())
+ return new IXR_Error(1, 'Positive wordblock check');
+
+ // autoset summary on new pages
+ if(!page_exists($id) && empty($sum)) {
+ $sum = $lang['created'];
+ }
+
+ // autoset summary on deleted pages
+ if(page_exists($id) && empty($TEXT) && empty($sum)) {
+ $sum = $lang['deleted'];
+ }
+
+ lock($id);
+
+ saveWikiText($id,$TEXT,$sum,$minor);
+
+ unlock($id);
+
+ return 0;
+ }
+
+ /**
+ * Lists all links contained in a wiki page
+ *
+ * @author Michael Klier <chi at chimeric.de>
+ */
+ function listLinks($id) {
+ if(auth_quickaclcheck($id) < AUTH_READ){
+ return new IXR_Error(1, 'You are not allowed to read this page');
+ }
+ $links = array();
+
+ // resolve page instructions
+ $ins = p_cached_instructions(wikiFN(cleanID($id)));
+
+ // instantiate new Renderer - needed for interwiki links
+ include(DOKU_INC.'inc/parser/xhtml.php');
+ $Renderer = new Doku_Renderer_xhtml();
+ $Renderer->interwiki = getInterwiki();
+
+ // parse parse instructions
+ foreach($ins as $in) {
+ $link = array();
+ switch($in[0]) {
+ case 'internallink':
+ $link['type'] = 'local';
+ $link['page'] = $in[1][0];
+ $link['href'] = wl($in[1][0]);
+ array_push($links,$link);
+ break;
+ case 'externallink':
+ $link['type'] = 'extern';
+ $link['page'] = $in[1][0];
+ $link['href'] = $in[1][0];
+ array_push($links,$link);
+ break;
+ case 'interwikilink':
+ $url = $Renderer->_resolveInterWiki($in[1][2],$in[1][3]);
+ $link['type'] = 'extern';
+ $link['page'] = $url;
+ $link['href'] = $url;
+ array_push($links,$link);
+ break;
+ }
+ }
+
+ return ($links);
+ }
+
+ /**
+ * Returns a list of recent changes since give timestamp
+ *
+ * @author Michael Klier <chi at chimeric.de>
+ */
+ function getRecentChanges($timestamp) {
+ global $conf;
+
+ if(strlen($timestamp) != 10)
+ return new IXR_Error(20, 'The provided value is not a valid timestamp');
+
+ $changes = array();
+
+ require_once(DOKU_INC.'inc/changelog.php');
+ require_once(DOKU_INC.'inc/pageutils.php');
+
+ // read changes
+ $lines = @file($conf['changelog']);
+
+ if(empty($lines))
+ return new IXR_Error(10, 'The changelog could not be read');
+
+ // we start searching at the end of the list
+ $lines = array_reverse($lines);
+
+ // cache seen pages and skip them
+ $seen = array();
+
+ foreach($lines as $line) {
+
+ if(empty($line)) continue; // skip empty lines
+
+ $logline = parseChangelogLine($line);
+
+ if($logline === false) continue;
+
+ // skip seen ones
+ if(isset($seen[$logline['id']])) continue;
+
+ // skip minors
+ if($logline['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT && ($flags & RECENTS_SKIP_MINORS)) continue;
+
+ // remember in seen to skip additional sights
+ $seen[$logline['id']] = 1;
+
+ // check if it's a hidden page
+ if(isHiddenPage($logline['id'])) continue;
+
+ // check ACL
+ if(auth_quickaclcheck($logline['id']) < AUTH_READ) continue;
+
+ // check existance
+ if((!@file_exists(wikiFN($logline['id']))) && ($flags & RECENTS_SKIP_DELETED)) continue;
+
+ // check if logline is still in the queried time frame
+ if($logline['date'] >= $timestamp) {
+ $change['name'] = $logline['id'];
+ $change['lastModified'] = new IXR_Date($logline['date']);
+ $change['author'] = $logline['user'];
+ $change['version'] = $logline['date'];
+ array_push($changes, $change);
+ } else {
+ $changes = array_reverse($changes);
+ return ($changes);
+ }
+ }
+ // in case we still have nothing at this point
+ return new IXR_Error(30, 'There are no changes in the specified timeframe');
+ }
+
+ /**
+ * Returns a list of available revisions of a given wiki page
+ *
+ * @author Michael Klier <chi at chimeric.de>
+ */
+ function pageVersions($id, $first) {
+ global $conf;
+
+ $versions = array();
+
+ if(empty($id))
+ return new IXR_Error(1, 'Empty page ID');
+
+ require_once(DOKU_INC.'inc/changelog.php');
+
+ $revisions = getRevisions($id, $first, $conf['recent']+1);
+
+ if(count($revisions)==0 && $first!=0) {
+ $first=0;
+ $revisions = getRevisions($id, $first, $conf['recent']+1);
+ }
+
+ if(count($revisions)>0 && $first==0) {
+ array_unshift($revisions, ''); // include current revision
+ array_pop($revisions); // remove extra log entry
+ }
+
+ $hasNext = false;
+ if(count($revisions)>$conf['recent']) {
+ $hasNext = true;
+ array_pop($revisions); // remove extra log entry
+ }
+
+ if(!empty($revisions)) {
+ foreach($revisions as $rev) {
+ $file = wikiFN($id,$rev);
+ $time = @filemtime($file);
+ // we check if the page actually exists, if this is not the
+ // case this can lead to less pages being returned than
+ // specified via $conf['recent']
+ if($time){
+ $info = getRevisionInfo($id, $time, 1024);
+ if(!empty($info)) {
+ $data['user'] = $info['user'];
+ $data['ip'] = $info['ip'];
+ $data['type'] = $info['type'];
+ $data['sum'] = $info['sum'];
+ $data['modified'] = new IXR_Date($info['date']);
+ $data['version'] = $info['date'];
+ array_push($versions, $data);
+ }
+ }
+ }
+ return $versions;
+ } else {
+ return array();
+ }
+ }
+
+ /**
+ * The version of Wiki RPC API supported
+ */
+ function wiki_RPCVersion(){
+ return 2;
+ }
+}
+
+$server = new dokuwiki_xmlrpc_server();
+
+// vim:ts=4:sw=4:enc=utf-8:
Modified: site/trunk/www-root/wiki/lib/images/fileicons/index.php
===================================================================
--- site/trunk/www-root/wiki/lib/images/fileicons/index.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/images/fileicons/index.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,49 +1,49 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
- lang="en" dir="ltr">
- <title>filetype icons</title>
-
- <style type="text/css">
- body {
- background-color: #ccc;
- font-family: Arial;
- }
-
- .box {
- width: 200px;
- float:left;
- padding: 0.5em;
- margin: 0;
- }
-
- .white {
- background-color: #fff;
- }
-
- .black {
- background-color: #000;
- }
- </style>
-
-</head>
-<body>
-
-<div class="white box">
-<?php
-foreach (glob('*.png') as $img) {
- echo '<img src="'.$img.'" alt="'.$img.'" title="'.$img.'" /> ';
-}
-?>
-</div>
-
-<div class="black box">
-<?php
-foreach (glob('*.png') as $img) {
- echo '<img src="'.$img.'" alt="'.$img.'" title="'.$img.'" /> ';
-}
-?>
-</div>
-
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+ lang="en" dir="ltr">
+ <title>filetype icons</title>
+
+ <style type="text/css">
+ body {
+ background-color: #ccc;
+ font-family: Arial;
+ }
+
+ .box {
+ width: 200px;
+ float:left;
+ padding: 0.5em;
+ margin: 0;
+ }
+
+ .white {
+ background-color: #fff;
+ }
+
+ .black {
+ background-color: #000;
+ }
+ </style>
+
+</head>
+<body>
+
+<div class="white box">
+<?php
+foreach (glob('*.png') as $img) {
+ echo '<img src="'.$img.'" alt="'.$img.'" title="'.$img.'" /> ';
+}
+?>
+</div>
+
+<div class="black box">
+<?php
+foreach (glob('*.png') as $img) {
+ echo '<img src="'.$img.'" alt="'.$img.'" title="'.$img.'" /> ';
+}
+?>
+</div>
+
+</body>
+</html>
Modified: site/trunk/www-root/wiki/lib/plugins/acl/admin.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/admin.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/admin.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,744 +1,744 @@
-<?php
-/**
- * ACL administration functions
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Anika Henke <a.c.henke at arcor.de> (concepts)
- * @author Frank Schubert <frank at schokilade.de> (old version)
- */
-// must be run within Dokuwiki
-if(!defined('DOKU_INC')) die();
-
-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-require_once(DOKU_PLUGIN.'admin.php');
-
-/**
- * All DokuWiki plugins to extend the admin function
- * need to inherit from this class
- */
-class admin_plugin_acl extends DokuWiki_Admin_Plugin {
- var $acl = null;
- var $ns = null;
- var $who = '';
- var $usersgroups = array();
-
-
- /**
- * return some info
- */
- function getInfo(){
- return array(
- 'author' => 'Andreas Gohr',
- 'email' => 'andi at splitbrain.org',
- 'date' => '2008-03-15',
- 'name' => 'ACL',
- 'desc' => 'Manage Page Access Control Lists',
- 'url' => 'http://wiki.splitbrain.org/wiki:acl',
- );
- }
-
- /**
- * return prompt for admin menu
- */
- function getMenuText($language) {
- return $this->getLang('admin_acl');
- }
-
- /**
- * return sort order for position in admin menu
- */
- function getMenuSort() {
- return 1;
- }
-
- /**
- * handle user request
- *
- * Initializes internal vars and handles modifications
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function handle() {
- global $AUTH_ACL;
- global $ID;
-
- // namespace given?
- if($_REQUEST['ns'] == '*'){
- $this->ns = '*';
- }else{
- $this->ns = cleanID($_REQUEST['ns']);
- }
-
- // user or group choosen?
- $who = trim($_REQUEST['acl_w']);
- if($_REQUEST['acl_t'] == '__g__' && $who){
- $this->who = '@'.ltrim($who,'@');
- }elseif($_REQUEST['acl_t'] == '__u__' && $who){
- $this->who = ltrim($who,'@');
- }elseif($_REQUEST['acl_t'] &&
- $_REQUEST['acl_t'] != '__u__' &&
- $_REQUEST['acl_t'] != '__g__'){
- $this->who = $_REQUEST['acl_t'];
- }elseif($who){
- $this->who = $who;
- }
-
- // handle modifications
- if(isset($_REQUEST['cmd'])){
- // scope for modifications
- if($this->ns){
- if($this->ns == '*'){
- $scope = '*';
- }else{
- $scope = $this->ns.':*';
- }
- }else{
- $scope = $ID;
- }
-
- if(isset($_REQUEST['cmd']['save']) && $scope && $this->who && isset($_REQUEST['acl'])){
- // handle additions or single modifications
- $this->_acl_del($scope, $this->who);
- $this->_acl_add($scope, $this->who, (int) $_REQUEST['acl']);
- }elseif(isset($_REQUEST['cmd']['del']) && $scope && $this->who){
- // handle single deletions
- $this->_acl_del($scope, $this->who);
- }elseif(isset($_REQUEST['cmd']['update'])){
- // handle update of the whole file
- foreach((array) $_REQUEST['del'] as $where => $who){
- // remove all rules marked for deletion
- unset($_REQUEST['acl'][$where][$who]);
- }
- // prepare lines
- $lines = array();
- // keep header
- foreach($AUTH_ACL as $line){
- if($line{0} == '#'){
- $lines[] = $line;
- }else{
- break;
- }
- }
- // re-add all rules
- foreach((array) $_REQUEST['acl'] as $where => $opt){
- foreach($opt as $who => $perm){
- $who = auth_nameencode($who,true);
- $lines[] = "$where\t$who\t$perm\n";
- }
- }
- // save it
- io_saveFile(DOKU_CONF.'acl.auth.php', join('',$lines));
- }
-
- // reload ACL config
- $AUTH_ACL = file(DOKU_CONF.'acl.auth.php');
- }
-
- // initialize ACL array
- $this->_init_acl_config();
- }
-
- /**
- * ACL Output function
- *
- * print a table with all significant permissions for the
- * current id
- *
- * @author Frank Schubert <frank at schokilade.de>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function html() {
- global $ID;
-
- echo '<div id="acl_manager">'.NL;
- echo '<h1>'.$this->getLang('admin_acl').'</h1>'.NL;
- echo '<div class="level1">'.NL;
-
- echo '<div id="acl__tree">'.NL;
- $this->_html_explorer($_REQUEST['ns']);
- echo '</div>'.NL;
-
- echo '<div id="acl__detail">'.NL;
- $this->_html_detail();
- echo '</div>'.NL;
- echo '</div>'.NL;
-
- echo '<div class="clearer"></div>';
- echo '<h2>'.$this->getLang('current').'</h2>'.NL;
- echo '<div class="level2">'.NL;
- $this->_html_table();
- echo '</div>'.NL;
-
- echo '</div>'.NL;
- }
-
- /**
- * returns array with set options for building links
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _get_opts($addopts=null){
- global $ID;
- $opts = array(
- 'do'=>'admin',
- 'page'=>'acl',
- );
- if($this->ns) $opts['ns'] = $this->ns;
- if($this->who) $opts['acl_w'] = $this->who;
-
- if(is_null($addopts)) return $opts;
- return array_merge($opts, $addopts);
- }
-
- /**
- * Display a tree menu to select a page or namespace
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_explorer(){
- require_once(DOKU_INC.'inc/search.php');
- global $conf;
- global $ID;
- global $lang;
-
- $dir = $conf['datadir'];
- $ns = $this->ns;
- if(empty($ns)){
- $ns = dirname(str_replace(':','/',$ID));
- if($ns == '.') $ns ='';
- }elseif($ns == '*'){
- $ns ='';
- }
- $ns = utf8_encodeFN(str_replace(':','/',$ns));
-
-
- $data = array();
- search($data,$conf['datadir'],'search_index',array('ns' => $ns));
-
-
- // wrap a list with the root level around the other namespaces
- $item = array( 'level' => 0, 'id' => '*', 'type' => 'd',
- 'open' =>'true', 'label' => '['.$lang['mediaroot'].']');
-
- echo '<ul class="acltree">';
- echo $this->_html_li_acl($item);
- echo '<div class="li">';
- echo $this->_html_list_acl($item);
- echo '</div>';
- echo html_buildlist($data,'acl',
- array($this,'_html_list_acl'),
- array($this,'_html_li_acl'));
- echo '</li>';
- echo '</ul>';
-
- }
-
- /**
- * Display the current ACL for selected where/who combination with
- * selectors and modification form
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_detail(){
- global $conf;
- global $ID;
-
- echo '<form action="'.wl().'" method="post" accept-charset="utf-8"><div class="no">'.NL;
-
- echo '<div id="acl__user">';
- echo $this->getLang('acl_perms').' ';
- $inl = $this->_html_select();
- echo '<input type="text" name="acl_w" class="edit" value="'.(($inl)?'':hsc(ltrim($this->who,'@'))).'" />'.NL;
- echo '<input type="submit" value="Select" class="button" />'.NL;
- echo '</div>'.NL;
-
- echo '<div id="acl__info">';
- $this->_html_info();
- echo '</div>';
-
- echo '<input type="hidden" name="ns" value="'.hsc($this->ns).'" />'.NL;
- echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL;
- echo '<input type="hidden" name="do" value="admin" />'.NL;
- echo '<input type="hidden" name="page" value="acl" />'.NL;
- echo '</div></form>'.NL;
- }
-
- /**
- * Print infos and editor
- */
- function _html_info(){
- global $ID;
-
- if($this->who){
- $current = $this->_get_exact_perm();
-
- // explain current permissions
- $this->_html_explain($current);
- // load editor
- $this->_html_acleditor($current);
- }else{
- echo '<p>';
- if($this->ns){
- printf($this->getLang('p_choose_ns'),hsc($this->ns));
- }else{
- printf($this->getLang('p_choose_id'),hsc($ID));
- }
- echo '</p>';
-
- echo $this->locale_xhtml('help');
- }
- }
-
- /**
- * Display the ACL editor
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_acleditor($current){
- global $lang;
-
- echo '<fieldset>';
- if(is_null($current)){
- echo '<legend>'.$this->getLang('acl_new').'</legend>';
- }else{
- echo '<legend>'.$this->getLang('acl_mod').'</legend>';
- }
-
-
- echo $this->_html_checkboxes($current,empty($this->ns),'acl');
-
- if(is_null($current)){
- echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_save'].'" />'.NL;
- }else{
- echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_update'].'" />'.NL;
- echo '<input type="submit" name="cmd[del]" class="button" value="'.$lang['btn_delete'].'" />'.NL;
- }
-
- echo '</fieldset>';
- }
-
- /**
- * Explain the currently set permissions in plain english/$lang
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_explain($current){
- global $ID;
- global $auth;
-
- $who = $this->who;
- $ns = $this->ns;
-
- // prepare where to check
- if($ns){
- if($ns == '*'){
- $check='*';
- }else{
- $check=$ns.':*';
- }
- }else{
- $check = $ID;
- }
-
- // prepare who to check
- if($who{0} == '@'){
- $user = '';
- $groups = array(ltrim($who,'@'));
- }else{
- $user = auth_nameencode($who);
- $info = $auth->getUserData($user);
- if($info === false){
- $groups = array();
- }else{
- $groups = $info['groups'];
- }
- }
-
- // check the permissions
- $perm = auth_aclcheck($check,$user,$groups);
-
- // build array of named permissions
- $names = array();
- if($perm){
- if($ns){
- if($perm >= AUTH_DELETE) $names[] = $this->getLang('acl_perm16');
- if($perm >= AUTH_UPLOAD) $names[] = $this->getLang('acl_perm8');
- if($perm >= AUTH_CREATE) $names[] = $this->getLang('acl_perm4');
- }
- if($perm >= AUTH_EDIT) $names[] = $this->getLang('acl_perm2');
- if($perm >= AUTH_READ) $names[] = $this->getLang('acl_perm1');
- $names = array_reverse($names);
- }else{
- $names[] = $this->getLang('acl_perm0');
- }
-
- // print permission explanation
- echo '<p>';
- if($user){
- if($ns){
- printf($this->getLang('p_user_ns'),hsc($who),hsc($ns),join(', ',$names));
- }else{
- printf($this->getLang('p_user_id'),hsc($who),hsc($ID),join(', ',$names));
- }
- }else{
- if($ns){
- printf($this->getLang('p_group_ns'),hsc(ltrim($who,'@')),hsc($ns),join(', ',$names));
- }else{
- printf($this->getLang('p_group_id'),hsc(ltrim($who,'@')),hsc($ID),join(', ',$names));
- }
- }
- echo '</p>';
-
- // add note if admin
- if($perm == AUTH_ADMIN){
- echo '<p>'.$this->getLang('p_isadmin').'</p>';
- }elseif(is_null($current)){
- echo '<p>'.$this->getLang('p_inherited').'</p>';
- }
- }
-
-
- /**
- * Item formatter for the tree view
- *
- * User function for html_buildlist()
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_list_acl($item){
- global $ID;
- $ret = '';
- // what to display
- if($item['label']){
- $base = $item['label'];
- }else{
- $base = ':'.$item['id'];
- $base = substr($base,strrpos($base,':')+1);
- }
-
- // highlight?
- if(($item['type']=='d' &&
- $item['id'] == $this->ns) ||
- $item['id'] == $ID) $cl = ' cur';
-
- // namespace or page?
- if($item['type']=='d'){
- if($item['open']){
- $img = DOKU_BASE.'lib/images/minus.gif';
- $alt = '−';
- }else{
- $img = DOKU_BASE.'lib/images/plus.gif';
- $alt = '+';
- }
- $ret .= '<img src="'.$img.'" alt="'.$alt.'" />';
- $ret .= '<a href="'.wl('',$this->_get_opts(array('ns'=>$item['id']))).'" class="idx_dir'.$cl.'">';
- $ret .= $base;
- $ret .= '</a>';
- }else{
- $ret .= '<a href="'.wl('',$this->_get_opts(array('id'=>$item['id'],'ns'=>''))).'" class="wikilink1'.$cl.'">';
- $ret .= noNS($item['id']);
- $ret .= '</a>';
- }
- return $ret;
- }
-
-
- function _html_li_acl($item){
- return '<li class="level'.$item['level'].'">';
- }
-
-
- /**
- * Get current ACL settings as multidim array
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _init_acl_config(){
- global $AUTH_ACL;
- global $conf;
- $acl_config=array();
- $usersgroups = array();
-
- foreach($AUTH_ACL as $line){
- $line = trim(preg_replace('/#.*$/','',$line)); //ignore comments
- if(!$line) continue;
-
- $acl = preg_split('/\s+/',$line);
- //0 is pagename, 1 is user, 2 is acl
-
- $acl[1] = rawurldecode($acl[1]);
- $acl_config[$acl[0]][$acl[1]] = $acl[2];
-
- // store non-special users and groups for later selection dialog
- $ug = $acl[1];
- if($ug == '@ALL') continue;
- if($ug == $conf['superuser']) continue;
- if($ug == $conf['manager']) continue;
- $usersgroups[] = $ug;
- }
-
- $usersgroups = array_unique($usersgroups);
- sort($usersgroups);
- uksort($acl_config,array($this,'_sort_names'));
-
- $this->acl = $acl_config;
- $this->usersgroups = $usersgroups;
- }
-
- /**
- * Custom function to sort the ACLs by namespace names
- *
- * @todo This maybe could be improved to resemble the real tree structure?
- */
- function _sort_names($a,$b){
- $ca = substr_count($a,':');
- $cb = substr_count($b,':');
- if($ca < $cb){
- return -1;
- }elseif($ca > $cb){
- return 1;
- }else{
- return strcmp($a,$b);
- }
- }
-
- /**
- * Display all currently set permissions in a table
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_table(){
- global $lang;
- global $ID;
-
- echo '<form action="'.wl().'" method="post" accept-charset="utf-8"><div class="no">'.NL;
- if($this->ns){
- echo '<input type="hidden" name="ns" value="'.hsc($this->ns).'" />'.NL;
- }else{
- echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL;
- }
- echo '<input type="hidden" name="acl_w" value="'.hsc($this->who).'" />'.NL;
- echo '<input type="hidden" name="do" value="admin" />'.NL;
- echo '<input type="hidden" name="page" value="acl" />'.NL;
- echo '<table class="inline">';
- echo '<tr>';
- echo '<th>'.$this->getLang('where').'</th>';
- echo '<th>'.$this->getLang('who').'</th>';
- echo '<th>'.$this->getLang('perm').'</th>';
- echo '<th>'.$lang['btn_delete'].'</th>';
- echo '</tr>';
- foreach($this->acl as $where => $set){
- foreach($set as $who => $perm){
- echo '<tr>';
- echo '<td>';
- if(substr($where,-1) == '*'){
- echo '<span class="aclns">'.hsc($where).'</span>';
- $ispage = false;
- }else{
- echo '<span class="aclpage">'.hsc($where).'</span>';
- $ispage = true;
- }
- echo '</td>';
-
- echo '<td>';
- if($who{0} == '@'){
- echo '<span class="aclgroup">'.hsc($who).'</span>';
- }else{
- echo '<span class="acluser">'.hsc($who).'</span>';
- }
- echo '</td>';
-
- echo '<td>';
- echo $this->_html_checkboxes($perm,$ispage,'acl['.hsc($where).']['.hsc($who).']');
- echo '</td>';
-
- echo '<td align="center">';
- echo '<input type="checkbox" name="del['.hsc($where).']" value="'.hsc($who).'" />';
- echo '</td>';
- echo '</tr>';
- }
- }
-
- echo '<tr>';
- echo '<th align="right" colspan="4">';
- echo '<input type="submit" value="'.$lang['btn_update'].'" name="cmd[update]" class="button" />';
- echo '</th>';
- echo '</tr>';
- echo '</table>';
- echo '</div></form>'.NL;
- }
-
-
- /**
- * Returns the permission which were set for exactly the given user/group
- * and page/namespace. Returns null if no exact match is available
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _get_exact_perm(){
- global $ID;
- if($this->ns){
- if($this->ns == '*'){
- $check = '*';
- }else{
- $check = $this->ns.':*';
- }
- }else{
- $check = $ID;
- }
-
- if(isset($this->acl[$check][auth_nameencode($this->who,true)])){
- return $this->acl[$check][auth_nameencode($this->who,true)];
- }else{
- return null;
- }
- }
-
- /**
- * adds new acl-entry to conf/acl.auth.php
- *
- * @author Frank Schubert <frank at schokilade.de>
- */
- function _acl_add($acl_scope, $acl_user, $acl_level){
- $acl_config = file_get_contents(DOKU_CONF.'acl.auth.php');
- $acl_user = auth_nameencode($acl_user,true);
-
- // max level for pagenames is edit
- if(strpos($acl_scope,'*') === false) {
- if($acl_level > AUTH_EDIT) $acl_level = AUTH_EDIT;
- }
-
-
- $new_acl = "$acl_scope\t$acl_user\t$acl_level\n";
-
- $new_config = $acl_config.$new_acl;
-
- return io_saveFile(DOKU_CONF.'acl.auth.php', $new_config);
- }
-
- /**
- * remove acl-entry from conf/acl.auth.php
- *
- * @author Frank Schubert <frank at schokilade.de>
- */
- function _acl_del($acl_scope, $acl_user){
- $acl_config = file(DOKU_CONF.'acl.auth.php');
- $acl_user = auth_nameencode($acl_user,true);
-
- $acl_pattern = '^'.preg_quote($acl_scope,'/').'\s+'.$acl_user.'\s+[0-8].*$';
-
- // save all non!-matching
- $new_config = preg_grep("/$acl_pattern/", $acl_config, PREG_GREP_INVERT);
-
- return io_saveFile(DOKU_CONF.'acl.auth.php', join('',$new_config));
- }
-
- /**
- * print the permission radio boxes
- *
- * @author Frank Schubert <frank at schokilade.de>
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_checkboxes($setperm,$ispage,$name){
- global $lang;
-
- static $label = 0; //number labels
- $ret = '';
-
- if($ispage && $setperm > AUTH_EDIT) $perm = AUTH_EDIT;
-
- foreach(array(AUTH_NONE,AUTH_READ,AUTH_EDIT,AUTH_CREATE,AUTH_UPLOAD,AUTH_DELETE) as $perm){
- $label += 1;
-
- //general checkbox attributes
- $atts = array( 'type' => 'radio',
- 'id' => 'pbox'.$label,
- 'name' => $name,
- 'value' => $perm );
- //dynamic attributes
- if(!is_null($setperm) && $setperm == $perm) $atts['checked'] = 'checked';
- if($ispage && $perm > AUTH_EDIT){
- $atts['disabled'] = 'disabled';
- $class = ' class="disabled"';
- }else{
- $class = '';
- }
-
- //build code
- $ret .= '<label for="pbox'.$label.'" title="'.$this->getLang('acl_perm'.$perm).'"'.$class.'>';
- $ret .= '<input '.html_attbuild($atts).' /> ';
- $ret .= $this->getLang('acl_perm'.$perm);
- $ret .= '</label>'.NL;
- }
- return $ret;
- }
-
- /**
- * Print a user/group selector (reusing already used users and groups)
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- function _html_select(){
- global $conf;
- $inlist = false;
-
- $specials = array('@ALL','@'.$conf['defaultgroup']);
- if($conf['manager'] && $conf['manager'] != '!!not set!!') $specials[] = $conf['manager'];
-
-
- if($this->who &&
- !in_array($this->who,$this->usersgroups) &&
- !in_array($this->who,$specials)){
-
- if($this->who{0} == '@'){
- $gsel = ' selected="selected"';
- }else{
- $usel = ' selected="selected"';
- }
- }else{
- $usel = '';
- $gsel = '';
- $inlist = true;
- }
-
-
- echo '<select name="acl_t" class="edit">'.NL;
- echo ' <option value="__g__" class="aclgroup"'.$gsel.'>'.$this->getLang('acl_group').':</option>'.NL;
- echo ' <option value="__u__" class="acluser"'.$usel.'>'.$this->getLang('acl_user').':</option>'.NL;
- echo ' <optgroup label=" ">'.NL;
- foreach($specials as $ug){
- if($ug == $this->who){
- $sel = ' selected="selected"';
- $inlist = true;
- }else{
- $sel = '';
- }
-
- if($ug{0} == '@'){
- echo ' <option value="'.hsc($ug).'" class="aclgroup"'.$sel.'>'.hsc($ug).'</option>'.NL;
- }else{
- echo ' <option value="'.hsc($ug).'" class="acluser"'.$sel.'>'.hsc($ug).'</option>'.NL;
- }
- }
- echo ' </optgroup>'.NL;
- echo ' <optgroup label=" ">'.NL;
- foreach($this->usersgroups as $ug){
- if($ug == $this->who){
- $sel = ' selected="selected"';
- $inlist = true;
- }else{
- $sel = '';
- }
-
- if($ug{0} == '@'){
- echo ' <option value="'.hsc($ug).'" class="aclgroup"'.$sel.'>'.hsc($ug).'</option>'.NL;
- }else{
- echo ' <option value="'.hsc($ug).'" class="acluser"'.$sel.'>'.hsc($ug).'</option>'.NL;
- }
- }
- echo ' </optgroup>'.NL;
- echo '</select>'.NL;
- return $inlist;
- }
-}
+<?php
+/**
+ * ACL administration functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Anika Henke <a.c.henke at arcor.de> (concepts)
+ * @author Frank Schubert <frank at schokilade.de> (old version)
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'admin.php');
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class admin_plugin_acl extends DokuWiki_Admin_Plugin {
+ var $acl = null;
+ var $ns = null;
+ var $who = '';
+ var $usersgroups = array();
+
+
+ /**
+ * return some info
+ */
+ function getInfo(){
+ return array(
+ 'author' => 'Andreas Gohr',
+ 'email' => 'andi at splitbrain.org',
+ 'date' => '2008-03-15',
+ 'name' => 'ACL',
+ 'desc' => 'Manage Page Access Control Lists',
+ 'url' => 'http://wiki.splitbrain.org/wiki:acl',
+ );
+ }
+
+ /**
+ * return prompt for admin menu
+ */
+ function getMenuText($language) {
+ return $this->getLang('admin_acl');
+ }
+
+ /**
+ * return sort order for position in admin menu
+ */
+ function getMenuSort() {
+ return 1;
+ }
+
+ /**
+ * handle user request
+ *
+ * Initializes internal vars and handles modifications
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function handle() {
+ global $AUTH_ACL;
+ global $ID;
+
+ // namespace given?
+ if($_REQUEST['ns'] == '*'){
+ $this->ns = '*';
+ }else{
+ $this->ns = cleanID($_REQUEST['ns']);
+ }
+
+ // user or group choosen?
+ $who = trim($_REQUEST['acl_w']);
+ if($_REQUEST['acl_t'] == '__g__' && $who){
+ $this->who = '@'.ltrim($who,'@');
+ }elseif($_REQUEST['acl_t'] == '__u__' && $who){
+ $this->who = ltrim($who,'@');
+ }elseif($_REQUEST['acl_t'] &&
+ $_REQUEST['acl_t'] != '__u__' &&
+ $_REQUEST['acl_t'] != '__g__'){
+ $this->who = $_REQUEST['acl_t'];
+ }elseif($who){
+ $this->who = $who;
+ }
+
+ // handle modifications
+ if(isset($_REQUEST['cmd'])){
+ // scope for modifications
+ if($this->ns){
+ if($this->ns == '*'){
+ $scope = '*';
+ }else{
+ $scope = $this->ns.':*';
+ }
+ }else{
+ $scope = $ID;
+ }
+
+ if(isset($_REQUEST['cmd']['save']) && $scope && $this->who && isset($_REQUEST['acl'])){
+ // handle additions or single modifications
+ $this->_acl_del($scope, $this->who);
+ $this->_acl_add($scope, $this->who, (int) $_REQUEST['acl']);
+ }elseif(isset($_REQUEST['cmd']['del']) && $scope && $this->who){
+ // handle single deletions
+ $this->_acl_del($scope, $this->who);
+ }elseif(isset($_REQUEST['cmd']['update'])){
+ // handle update of the whole file
+ foreach((array) $_REQUEST['del'] as $where => $who){
+ // remove all rules marked for deletion
+ unset($_REQUEST['acl'][$where][$who]);
+ }
+ // prepare lines
+ $lines = array();
+ // keep header
+ foreach($AUTH_ACL as $line){
+ if($line{0} == '#'){
+ $lines[] = $line;
+ }else{
+ break;
+ }
+ }
+ // re-add all rules
+ foreach((array) $_REQUEST['acl'] as $where => $opt){
+ foreach($opt as $who => $perm){
+ $who = auth_nameencode($who,true);
+ $lines[] = "$where\t$who\t$perm\n";
+ }
+ }
+ // save it
+ io_saveFile(DOKU_CONF.'acl.auth.php', join('',$lines));
+ }
+
+ // reload ACL config
+ $AUTH_ACL = file(DOKU_CONF.'acl.auth.php');
+ }
+
+ // initialize ACL array
+ $this->_init_acl_config();
+ }
+
+ /**
+ * ACL Output function
+ *
+ * print a table with all significant permissions for the
+ * current id
+ *
+ * @author Frank Schubert <frank at schokilade.de>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function html() {
+ global $ID;
+
+ echo '<div id="acl_manager">'.NL;
+ echo '<h1>'.$this->getLang('admin_acl').'</h1>'.NL;
+ echo '<div class="level1">'.NL;
+
+ echo '<div id="acl__tree">'.NL;
+ $this->_html_explorer($_REQUEST['ns']);
+ echo '</div>'.NL;
+
+ echo '<div id="acl__detail">'.NL;
+ $this->_html_detail();
+ echo '</div>'.NL;
+ echo '</div>'.NL;
+
+ echo '<div class="clearer"></div>';
+ echo '<h2>'.$this->getLang('current').'</h2>'.NL;
+ echo '<div class="level2">'.NL;
+ $this->_html_table();
+ echo '</div>'.NL;
+
+ echo '</div>'.NL;
+ }
+
+ /**
+ * returns array with set options for building links
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _get_opts($addopts=null){
+ global $ID;
+ $opts = array(
+ 'do'=>'admin',
+ 'page'=>'acl',
+ );
+ if($this->ns) $opts['ns'] = $this->ns;
+ if($this->who) $opts['acl_w'] = $this->who;
+
+ if(is_null($addopts)) return $opts;
+ return array_merge($opts, $addopts);
+ }
+
+ /**
+ * Display a tree menu to select a page or namespace
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_explorer(){
+ require_once(DOKU_INC.'inc/search.php');
+ global $conf;
+ global $ID;
+ global $lang;
+
+ $dir = $conf['datadir'];
+ $ns = $this->ns;
+ if(empty($ns)){
+ $ns = dirname(str_replace(':','/',$ID));
+ if($ns == '.') $ns ='';
+ }elseif($ns == '*'){
+ $ns ='';
+ }
+ $ns = utf8_encodeFN(str_replace(':','/',$ns));
+
+
+ $data = array();
+ search($data,$conf['datadir'],'search_index',array('ns' => $ns));
+
+
+ // wrap a list with the root level around the other namespaces
+ $item = array( 'level' => 0, 'id' => '*', 'type' => 'd',
+ 'open' =>'true', 'label' => '['.$lang['mediaroot'].']');
+
+ echo '<ul class="acltree">';
+ echo $this->_html_li_acl($item);
+ echo '<div class="li">';
+ echo $this->_html_list_acl($item);
+ echo '</div>';
+ echo html_buildlist($data,'acl',
+ array($this,'_html_list_acl'),
+ array($this,'_html_li_acl'));
+ echo '</li>';
+ echo '</ul>';
+
+ }
+
+ /**
+ * Display the current ACL for selected where/who combination with
+ * selectors and modification form
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_detail(){
+ global $conf;
+ global $ID;
+
+ echo '<form action="'.wl().'" method="post" accept-charset="utf-8"><div class="no">'.NL;
+
+ echo '<div id="acl__user">';
+ echo $this->getLang('acl_perms').' ';
+ $inl = $this->_html_select();
+ echo '<input type="text" name="acl_w" class="edit" value="'.(($inl)?'':hsc(ltrim($this->who,'@'))).'" />'.NL;
+ echo '<input type="submit" value="'.$this->getLang('btn_select').'" class="button" />'.NL;
+ echo '</div>'.NL;
+
+ echo '<div id="acl__info">';
+ $this->_html_info();
+ echo '</div>';
+
+ echo '<input type="hidden" name="ns" value="'.hsc($this->ns).'" />'.NL;
+ echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL;
+ echo '<input type="hidden" name="do" value="admin" />'.NL;
+ echo '<input type="hidden" name="page" value="acl" />'.NL;
+ echo '</div></form>'.NL;
+ }
+
+ /**
+ * Print infos and editor
+ */
+ function _html_info(){
+ global $ID;
+
+ if($this->who){
+ $current = $this->_get_exact_perm();
+
+ // explain current permissions
+ $this->_html_explain($current);
+ // load editor
+ $this->_html_acleditor($current);
+ }else{
+ echo '<p>';
+ if($this->ns){
+ printf($this->getLang('p_choose_ns'),hsc($this->ns));
+ }else{
+ printf($this->getLang('p_choose_id'),hsc($ID));
+ }
+ echo '</p>';
+
+ echo $this->locale_xhtml('help');
+ }
+ }
+
+ /**
+ * Display the ACL editor
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_acleditor($current){
+ global $lang;
+
+ echo '<fieldset>';
+ if(is_null($current)){
+ echo '<legend>'.$this->getLang('acl_new').'</legend>';
+ }else{
+ echo '<legend>'.$this->getLang('acl_mod').'</legend>';
+ }
+
+
+ echo $this->_html_checkboxes($current,empty($this->ns),'acl');
+
+ if(is_null($current)){
+ echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_save'].'" />'.NL;
+ }else{
+ echo '<input type="submit" name="cmd[save]" class="button" value="'.$lang['btn_update'].'" />'.NL;
+ echo '<input type="submit" name="cmd[del]" class="button" value="'.$lang['btn_delete'].'" />'.NL;
+ }
+
+ echo '</fieldset>';
+ }
+
+ /**
+ * Explain the currently set permissions in plain english/$lang
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_explain($current){
+ global $ID;
+ global $auth;
+
+ $who = $this->who;
+ $ns = $this->ns;
+
+ // prepare where to check
+ if($ns){
+ if($ns == '*'){
+ $check='*';
+ }else{
+ $check=$ns.':*';
+ }
+ }else{
+ $check = $ID;
+ }
+
+ // prepare who to check
+ if($who{0} == '@'){
+ $user = '';
+ $groups = array(ltrim($who,'@'));
+ }else{
+ $user = auth_nameencode($who);
+ $info = $auth->getUserData($user);
+ if($info === false){
+ $groups = array();
+ }else{
+ $groups = $info['groups'];
+ }
+ }
+
+ // check the permissions
+ $perm = auth_aclcheck($check,$user,$groups);
+
+ // build array of named permissions
+ $names = array();
+ if($perm){
+ if($ns){
+ if($perm >= AUTH_DELETE) $names[] = $this->getLang('acl_perm16');
+ if($perm >= AUTH_UPLOAD) $names[] = $this->getLang('acl_perm8');
+ if($perm >= AUTH_CREATE) $names[] = $this->getLang('acl_perm4');
+ }
+ if($perm >= AUTH_EDIT) $names[] = $this->getLang('acl_perm2');
+ if($perm >= AUTH_READ) $names[] = $this->getLang('acl_perm1');
+ $names = array_reverse($names);
+ }else{
+ $names[] = $this->getLang('acl_perm0');
+ }
+
+ // print permission explanation
+ echo '<p>';
+ if($user){
+ if($ns){
+ printf($this->getLang('p_user_ns'),hsc($who),hsc($ns),join(', ',$names));
+ }else{
+ printf($this->getLang('p_user_id'),hsc($who),hsc($ID),join(', ',$names));
+ }
+ }else{
+ if($ns){
+ printf($this->getLang('p_group_ns'),hsc(ltrim($who,'@')),hsc($ns),join(', ',$names));
+ }else{
+ printf($this->getLang('p_group_id'),hsc(ltrim($who,'@')),hsc($ID),join(', ',$names));
+ }
+ }
+ echo '</p>';
+
+ // add note if admin
+ if($perm == AUTH_ADMIN){
+ echo '<p>'.$this->getLang('p_isadmin').'</p>';
+ }elseif(is_null($current)){
+ echo '<p>'.$this->getLang('p_inherited').'</p>';
+ }
+ }
+
+
+ /**
+ * Item formatter for the tree view
+ *
+ * User function for html_buildlist()
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_list_acl($item){
+ global $ID;
+ $ret = '';
+ // what to display
+ if($item['label']){
+ $base = $item['label'];
+ }else{
+ $base = ':'.$item['id'];
+ $base = substr($base,strrpos($base,':')+1);
+ }
+
+ // highlight?
+ if(($item['type']=='d' &&
+ $item['id'] == $this->ns) ||
+ $item['id'] == $ID) $cl = ' cur';
+
+ // namespace or page?
+ if($item['type']=='d'){
+ if($item['open']){
+ $img = DOKU_BASE.'lib/images/minus.gif';
+ $alt = '−';
+ }else{
+ $img = DOKU_BASE.'lib/images/plus.gif';
+ $alt = '+';
+ }
+ $ret .= '<img src="'.$img.'" alt="'.$alt.'" />';
+ $ret .= '<a href="'.wl('',$this->_get_opts(array('ns'=>$item['id']))).'" class="idx_dir'.$cl.'">';
+ $ret .= $base;
+ $ret .= '</a>';
+ }else{
+ $ret .= '<a href="'.wl('',$this->_get_opts(array('id'=>$item['id'],'ns'=>''))).'" class="wikilink1'.$cl.'">';
+ $ret .= noNS($item['id']);
+ $ret .= '</a>';
+ }
+ return $ret;
+ }
+
+
+ function _html_li_acl($item){
+ return '<li class="level'.$item['level'].'">';
+ }
+
+
+ /**
+ * Get current ACL settings as multidim array
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _init_acl_config(){
+ global $AUTH_ACL;
+ global $conf;
+ $acl_config=array();
+ $usersgroups = array();
+
+ foreach($AUTH_ACL as $line){
+ $line = trim(preg_replace('/#.*$/','',$line)); //ignore comments
+ if(!$line) continue;
+
+ $acl = preg_split('/\s+/',$line);
+ //0 is pagename, 1 is user, 2 is acl
+
+ $acl[1] = rawurldecode($acl[1]);
+ $acl_config[$acl[0]][$acl[1]] = $acl[2];
+
+ // store non-special users and groups for later selection dialog
+ $ug = $acl[1];
+ if($ug == '@ALL') continue;
+ if($ug == $conf['superuser']) continue;
+ if($ug == $conf['manager']) continue;
+ $usersgroups[] = $ug;
+ }
+
+ $usersgroups = array_unique($usersgroups);
+ sort($usersgroups);
+ uksort($acl_config,array($this,'_sort_names'));
+
+ $this->acl = $acl_config;
+ $this->usersgroups = $usersgroups;
+ }
+
+ /**
+ * Custom function to sort the ACLs by namespace names
+ *
+ * @todo This maybe could be improved to resemble the real tree structure?
+ */
+ function _sort_names($a,$b){
+ $ca = substr_count($a,':');
+ $cb = substr_count($b,':');
+ if($ca < $cb){
+ return -1;
+ }elseif($ca > $cb){
+ return 1;
+ }else{
+ return strcmp($a,$b);
+ }
+ }
+
+ /**
+ * Display all currently set permissions in a table
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_table(){
+ global $lang;
+ global $ID;
+
+ echo '<form action="'.wl().'" method="post" accept-charset="utf-8"><div class="no">'.NL;
+ if($this->ns){
+ echo '<input type="hidden" name="ns" value="'.hsc($this->ns).'" />'.NL;
+ }else{
+ echo '<input type="hidden" name="id" value="'.hsc($ID).'" />'.NL;
+ }
+ echo '<input type="hidden" name="acl_w" value="'.hsc($this->who).'" />'.NL;
+ echo '<input type="hidden" name="do" value="admin" />'.NL;
+ echo '<input type="hidden" name="page" value="acl" />'.NL;
+ echo '<table class="inline">';
+ echo '<tr>';
+ echo '<th>'.$this->getLang('where').'</th>';
+ echo '<th>'.$this->getLang('who').'</th>';
+ echo '<th>'.$this->getLang('perm').'</th>';
+ echo '<th>'.$lang['btn_delete'].'</th>';
+ echo '</tr>';
+ foreach($this->acl as $where => $set){
+ foreach($set as $who => $perm){
+ echo '<tr>';
+ echo '<td>';
+ if(substr($where,-1) == '*'){
+ echo '<span class="aclns">'.hsc($where).'</span>';
+ $ispage = false;
+ }else{
+ echo '<span class="aclpage">'.hsc($where).'</span>';
+ $ispage = true;
+ }
+ echo '</td>';
+
+ echo '<td>';
+ if($who{0} == '@'){
+ echo '<span class="aclgroup">'.hsc($who).'</span>';
+ }else{
+ echo '<span class="acluser">'.hsc($who).'</span>';
+ }
+ echo '</td>';
+
+ echo '<td>';
+ echo $this->_html_checkboxes($perm,$ispage,'acl['.hsc($where).']['.hsc($who).']');
+ echo '</td>';
+
+ echo '<td align="center">';
+ echo '<input type="checkbox" name="del['.hsc($where).']" value="'.hsc($who).'" />';
+ echo '</td>';
+ echo '</tr>';
+ }
+ }
+
+ echo '<tr>';
+ echo '<th align="right" colspan="4">';
+ echo '<input type="submit" value="'.$lang['btn_update'].'" name="cmd[update]" class="button" />';
+ echo '</th>';
+ echo '</tr>';
+ echo '</table>';
+ echo '</div></form>'.NL;
+ }
+
+
+ /**
+ * Returns the permission which were set for exactly the given user/group
+ * and page/namespace. Returns null if no exact match is available
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _get_exact_perm(){
+ global $ID;
+ if($this->ns){
+ if($this->ns == '*'){
+ $check = '*';
+ }else{
+ $check = $this->ns.':*';
+ }
+ }else{
+ $check = $ID;
+ }
+
+ if(isset($this->acl[$check][auth_nameencode($this->who,true)])){
+ return $this->acl[$check][auth_nameencode($this->who,true)];
+ }else{
+ return null;
+ }
+ }
+
+ /**
+ * adds new acl-entry to conf/acl.auth.php
+ *
+ * @author Frank Schubert <frank at schokilade.de>
+ */
+ function _acl_add($acl_scope, $acl_user, $acl_level){
+ $acl_config = file_get_contents(DOKU_CONF.'acl.auth.php');
+ $acl_user = auth_nameencode($acl_user,true);
+
+ // max level for pagenames is edit
+ if(strpos($acl_scope,'*') === false) {
+ if($acl_level > AUTH_EDIT) $acl_level = AUTH_EDIT;
+ }
+
+
+ $new_acl = "$acl_scope\t$acl_user\t$acl_level\n";
+
+ $new_config = $acl_config.$new_acl;
+
+ return io_saveFile(DOKU_CONF.'acl.auth.php', $new_config);
+ }
+
+ /**
+ * remove acl-entry from conf/acl.auth.php
+ *
+ * @author Frank Schubert <frank at schokilade.de>
+ */
+ function _acl_del($acl_scope, $acl_user){
+ $acl_config = file(DOKU_CONF.'acl.auth.php');
+ $acl_user = auth_nameencode($acl_user,true);
+
+ $acl_pattern = '^'.preg_quote($acl_scope,'/').'\s+'.$acl_user.'\s+[0-8].*$';
+
+ // save all non!-matching
+ $new_config = preg_grep("/$acl_pattern/", $acl_config, PREG_GREP_INVERT);
+
+ return io_saveFile(DOKU_CONF.'acl.auth.php', join('',$new_config));
+ }
+
+ /**
+ * print the permission radio boxes
+ *
+ * @author Frank Schubert <frank at schokilade.de>
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_checkboxes($setperm,$ispage,$name){
+ global $lang;
+
+ static $label = 0; //number labels
+ $ret = '';
+
+ if($ispage && $setperm > AUTH_EDIT) $perm = AUTH_EDIT;
+
+ foreach(array(AUTH_NONE,AUTH_READ,AUTH_EDIT,AUTH_CREATE,AUTH_UPLOAD,AUTH_DELETE) as $perm){
+ $label += 1;
+
+ //general checkbox attributes
+ $atts = array( 'type' => 'radio',
+ 'id' => 'pbox'.$label,
+ 'name' => $name,
+ 'value' => $perm );
+ //dynamic attributes
+ if(!is_null($setperm) && $setperm == $perm) $atts['checked'] = 'checked';
+ if($ispage && $perm > AUTH_EDIT){
+ $atts['disabled'] = 'disabled';
+ $class = ' class="disabled"';
+ }else{
+ $class = '';
+ }
+
+ //build code
+ $ret .= '<label for="pbox'.$label.'" title="'.$this->getLang('acl_perm'.$perm).'"'.$class.'>';
+ $ret .= '<input '.html_attbuild($atts).' /> ';
+ $ret .= $this->getLang('acl_perm'.$perm);
+ $ret .= '</label>'.NL;
+ }
+ return $ret;
+ }
+
+ /**
+ * Print a user/group selector (reusing already used users and groups)
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ function _html_select(){
+ global $conf;
+ $inlist = false;
+
+ $specials = array('@ALL','@'.$conf['defaultgroup']);
+ if($conf['manager'] && $conf['manager'] != '!!not set!!') $specials[] = $conf['manager'];
+
+
+ if($this->who &&
+ !in_array($this->who,$this->usersgroups) &&
+ !in_array($this->who,$specials)){
+
+ if($this->who{0} == '@'){
+ $gsel = ' selected="selected"';
+ }else{
+ $usel = ' selected="selected"';
+ }
+ }else{
+ $usel = '';
+ $gsel = '';
+ $inlist = true;
+ }
+
+
+ echo '<select name="acl_t" class="edit">'.NL;
+ echo ' <option value="__g__" class="aclgroup"'.$gsel.'>'.$this->getLang('acl_group').':</option>'.NL;
+ echo ' <option value="__u__" class="acluser"'.$usel.'>'.$this->getLang('acl_user').':</option>'.NL;
+ echo ' <optgroup label=" ">'.NL;
+ foreach($specials as $ug){
+ if($ug == $this->who){
+ $sel = ' selected="selected"';
+ $inlist = true;
+ }else{
+ $sel = '';
+ }
+
+ if($ug{0} == '@'){
+ echo ' <option value="'.hsc($ug).'" class="aclgroup"'.$sel.'>'.hsc($ug).'</option>'.NL;
+ }else{
+ echo ' <option value="'.hsc($ug).'" class="acluser"'.$sel.'>'.hsc($ug).'</option>'.NL;
+ }
+ }
+ echo ' </optgroup>'.NL;
+ echo ' <optgroup label=" ">'.NL;
+ foreach($this->usersgroups as $ug){
+ if($ug == $this->who){
+ $sel = ' selected="selected"';
+ $inlist = true;
+ }else{
+ $sel = '';
+ }
+
+ if($ug{0} == '@'){
+ echo ' <option value="'.hsc($ug).'" class="aclgroup"'.$sel.'>'.hsc($ug).'</option>'.NL;
+ }else{
+ echo ' <option value="'.hsc($ug).'" class="acluser"'.$sel.'>'.hsc($ug).'</option>'.NL;
+ }
+ }
+ echo ' </optgroup>'.NL;
+ echo '</select>'.NL;
+ return $inlist;
+ }
+}
Modified: site/trunk/www-root/wiki/lib/plugins/acl/ajax.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/ajax.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/ajax.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,60 +1,60 @@
-<?php
-/**
- * AJAX call handler for ACL plugin
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-
-//fix for Opera XMLHttpRequests
-if(!count($_POST) && $HTTP_RAW_POST_DATA){
- parse_str($HTTP_RAW_POST_DATA, $_POST);
-}
-
-if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../../');
-require_once(DOKU_INC.'inc/init.php');
-require_once(DOKU_INC.'inc/common.php');
-require_once(DOKU_INC.'inc/pageutils.php');
-require_once(DOKU_INC.'inc/auth.php');
-//close sesseion
-session_write_close();
-
-$ID = getID();
-
-if(!auth_isadmin) die('for admins only');
-require_once(DOKU_INC.'inc/pluginutils.php');
-require_once(DOKU_INC.'inc/html.php');
-$acl = plugin_load('admin','acl');
-$acl->handle();
-
-$ajax = $_REQUEST['ajax'];
-header('Content-Type: text/html; charset=utf-8');
-
-if($ajax == 'info'){
- $acl->_html_info();
-}elseif($ajax == 'tree'){
- require_once(DOKU_INC.'inc/search.php');
- global $conf;
- global $ID;
-
- $dir = $conf['datadir'];
- $ns = $_REQUEST['ns'];
- if($ns == '*'){
- $ns ='';
- }
- $lvl = count(explode(':',$ns));
- $ns = utf8_encodeFN(str_replace(':','/',$ns));
-
- $data = array();
- search($data,$conf['datadir'],'search_index',array('ns' => $ns),$ns);
-
- foreach($data as $item){
- $item['level'] = $lvl+1;
- echo $acl->_html_li_acl($item);
- echo '<div class="li">';
- echo $acl->_html_list_acl($item);
- echo '</div>';
- echo '</li>';
- }
-}
-
+<?php
+/**
+ * AJAX call handler for ACL plugin
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+
+//fix for Opera XMLHttpRequests
+if(!count($_POST) && $HTTP_RAW_POST_DATA){
+ parse_str($HTTP_RAW_POST_DATA, $_POST);
+}
+
+if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../../');
+require_once(DOKU_INC.'inc/init.php');
+require_once(DOKU_INC.'inc/common.php');
+require_once(DOKU_INC.'inc/pageutils.php');
+require_once(DOKU_INC.'inc/auth.php');
+//close sesseion
+session_write_close();
+
+$ID = getID();
+
+if(!auth_isadmin) die('for admins only');
+require_once(DOKU_INC.'inc/pluginutils.php');
+require_once(DOKU_INC.'inc/html.php');
+$acl = plugin_load('admin','acl');
+$acl->handle();
+
+$ajax = $_REQUEST['ajax'];
+header('Content-Type: text/html; charset=utf-8');
+
+if($ajax == 'info'){
+ $acl->_html_info();
+}elseif($ajax == 'tree'){
+ require_once(DOKU_INC.'inc/search.php');
+ global $conf;
+ global $ID;
+
+ $dir = $conf['datadir'];
+ $ns = $_REQUEST['ns'];
+ if($ns == '*'){
+ $ns ='';
+ }
+ $lvl = count(explode(':',$ns));
+ $ns = utf8_encodeFN(str_replace(':','/',$ns));
+
+ $data = array();
+ search($data,$conf['datadir'],'search_index',array('ns' => $ns),$ns);
+
+ foreach($data as $item){
+ $item['level'] = $lvl+1;
+ echo $acl->_html_li_acl($item);
+ echo '<div class="li">';
+ echo $acl->_html_list_acl($item);
+ echo '</div>';
+ echo '</li>';
+ }
+}
+
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/ar/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/ar/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/ar/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,19 +1,19 @@
-<?php
-/**
- * Arabic language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Mostafa Hussein <mostafa at gmail.com>
- */
-$lang['admin_acl'] = 'إدارة ÙÙØ§Ø¦Ù
Ø§ÙØªØÙÙ
Ø¨Ø§ÙØ¯Ø®ÙÙ';
-$lang['acl_group'] = 'Ù
جÙ
ÙØ¹Ø©';
-$lang['acl_user'] = 'Ù
ستخدÙ
';
-$lang['acl_perms'] = 'ØªØ±Ø®ÙØµ ÙÙ';
-$lang['page'] = 'ØµÙØØ©';
-$lang['namespace'] = 'ÙØ¶Ø§Ø¡ Ø§ÙØªØ³Ù
ÙØ©';
-$lang['acl_perm1'] = 'ÙØ±Ø§Ø¡Ø©';
-$lang['acl_perm2'] = 'ØªØØ±Ùر';
-$lang['acl_perm4'] = 'Ø¥ÙØ´Ø§Ø¡';
-$lang['acl_perm8'] = 'تØÙ
ÙÙ';
-$lang['acl_perm16'] = 'Ù
سØ';
-$lang['acl_new'] = 'Ø£Ø¶Ù Ø£Ø¶Ø§ÙØ© Ø¬Ø¯ÙØ¯Ø©';
+<?php
+/**
+ * Arabic language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Mostafa Hussein <mostafa at gmail.com>
+ */
+$lang['admin_acl'] = 'إدارة ÙÙØ§Ø¦Ù
Ø§ÙØªØÙÙ
Ø¨Ø§ÙØ¯Ø®ÙÙ';
+$lang['acl_group'] = 'Ù
جÙ
ÙØ¹Ø©';
+$lang['acl_user'] = 'Ù
ستخدÙ
';
+$lang['acl_perms'] = 'ØªØ±Ø®ÙØµ ÙÙ';
+$lang['page'] = 'ØµÙØØ©';
+$lang['namespace'] = 'ÙØ¶Ø§Ø¡ Ø§ÙØªØ³Ù
ÙØ©';
+$lang['acl_perm1'] = 'ÙØ±Ø§Ø¡Ø©';
+$lang['acl_perm2'] = 'ØªØØ±Ùر';
+$lang['acl_perm4'] = 'Ø¥ÙØ´Ø§Ø¡';
+$lang['acl_perm8'] = 'تØÙ
ÙÙ';
+$lang['acl_perm16'] = 'Ù
سØ';
+$lang['acl_new'] = 'Ø£Ø¶Ù Ø£Ø¶Ø§ÙØ© Ø¬Ø¯ÙØ¯Ø©';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/bg/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/bg/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/bg/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,20 +1,20 @@
-<?php
-/**
- * bulgarian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Nikolay Vladimirov <nikolay at vladimiroff.com>
- * @author Nikolay Vladimirof <nikolay at vladimiroff.com>
- */
-$lang['admin_acl'] = 'УпÑавление на ÑпиÑÑÑиÑе за доÑÑÑп';
-$lang['acl_group'] = 'ÐÑÑпа';
-$lang['acl_user'] = 'ÐоÑÑебиÑел';
-$lang['acl_perms'] = 'ÐÑава за';
-$lang['page'] = 'СÑÑаниÑа';
-$lang['namespace'] = 'ÐменнопÑоÑÑÑанÑÑво';
-$lang['acl_perm1'] = 'ЧеÑене';
-$lang['acl_perm2'] = 'РедакÑиÑане';
-$lang['acl_perm4'] = 'СÑздаване';
-$lang['acl_perm8'] = 'ÐаÑване';
-$lang['acl_perm16'] = 'ÐзÑÑиване';
-$lang['acl_new'] = 'ÐобавÑне на ново';
+<?php
+/**
+ * bulgarian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Nikolay Vladimirov <nikolay at vladimiroff.com>
+ * @author Nikolay Vladimirof <nikolay at vladimiroff.com>
+ */
+$lang['admin_acl'] = 'УпÑавление на ÑпиÑÑÑиÑе за доÑÑÑп';
+$lang['acl_group'] = 'ÐÑÑпа';
+$lang['acl_user'] = 'ÐоÑÑебиÑел';
+$lang['acl_perms'] = 'ÐÑава за';
+$lang['page'] = 'СÑÑаниÑа';
+$lang['namespace'] = 'ÐменнопÑоÑÑÑанÑÑво';
+$lang['acl_perm1'] = 'ЧеÑене';
+$lang['acl_perm2'] = 'РедакÑиÑане';
+$lang['acl_perm4'] = 'СÑздаване';
+$lang['acl_perm8'] = 'ÐаÑване';
+$lang['acl_perm16'] = 'ÐзÑÑиване';
+$lang['acl_new'] = 'ÐобавÑне на ново';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/help.txt
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/help.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/help.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-=== Ajuda rà pida ===
-
-En aquesta pà gina podeu afegir i treure permisos per a espais i pà gines del vostre wiki.
-
-La subfinestra de l'esquerra mostra tots els espais i pà gines disponibles.
-
-El formulari de dalt us permet veure i modificar els permisos de l'usuari o grup que seleccioneu.
-
-En la taula de baix es mostren totes les regles de control d'accés que hagin estat definides. Podeu utilitzar aquesta taula per suprimir o modificar rà pidament totes les regles que vulgueu.
-
+=== Ajuda rà pida ===
+
+En aquesta pà gina podeu afegir i treure permisos per a espais i pà gines del vostre wiki.
+
+La subfinestra de l'esquerra mostra tots els espais i pà gines disponibles.
+
+El formulari de dalt us permet veure i modificar els permisos de l'usuari o grup que seleccioneu.
+
+En la taula de baix es mostren totes les regles de control d'accés que hagin estat definides. Podeu utilitzar aquesta taula per suprimir o modificar rà pidament totes les regles que vulgueu.
+
Llegir la [[doku>wiki:acl|documentació oficial sobre ACL]] us pot ajudar a entendre del tot com funciona el control d'accés en DokuWiki.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/ca/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,36 +1,36 @@
-<?php
-/**
- * catalan language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Carles Bellver <carles.bellver at cent.uji.es>
- * @author Carles Bellver <carles.bellver at gmail.com>
- * @author carles.bellver at gmail.com
- * @author carles.bellver at cent.uji.es
- */
-$lang['admin_acl'] = 'Gestió de la Llista de Control d\'Accés';
-$lang['acl_group'] = 'Grup';
-$lang['acl_user'] = 'Usuari';
-$lang['acl_perms'] = 'Permisos per a';
-$lang['page'] = 'PÃ gina';
-$lang['namespace'] = 'Espai';
-$lang['p_user_id'] = 'L\'usuari <b class="acluser">%s</b> té a hores d\'ara els permisos següents en la pà gina <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_user_ns'] = 'L\'usuari <b class="acluser">%s</b> té a hores d\'ara els permisos següents en l\'espai <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_group_id'] = 'Els membres del grup <b class="aclgroup">%s</b> tenen a hores d\'ara els permisos següents en la pà gina <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_group_ns'] = 'Els membres del grup <b class="aclgroup">%s</b> tenen a hores d\'ara els permisos següents en l\'espai <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_choose_id'] = '<b>Introduïu un usuari o grup</b> en el formulari de dalt per veure o editar els seus permisos en la pà gina <b class="aclpage">%s</b>.';
-$lang['p_choose_ns'] = '<b>Introduïu un usuari o grup</b> en el formulari de dalt per veure o editar els seus permisos en l\'espai <b class="aclns">%s</b>.';
-$lang['p_inherited'] = 'Nota: aquests permisos no s\'han definit explÃcitament, sinó que són heretats d\'altres grups o d\'espais d\'ordre superior.';
-$lang['p_isadmin'] = 'Nota: l\'usuari o grup seleccionat té sempre tots els permisos perquè ha estat configurat com a superusuari.';
-$lang['current'] = 'Regles ACL actuals';
-$lang['where'] = 'PÃ gina/espai';
-$lang['who'] = 'Usuari/grup';
-$lang['perm'] = 'Permisos';
-$lang['acl_perm0'] = 'Cap';
-$lang['acl_perm1'] = 'Lectura';
-$lang['acl_perm2'] = 'Edició';
-$lang['acl_perm4'] = 'Creació';
-$lang['acl_perm8'] = 'Penjar fitxers';
-$lang['acl_perm16'] = 'Suprimir';
-$lang['acl_new'] = 'Afegeix nova entrada';
-$lang['acl_mod'] = 'Modifica entrada';
+<?php
+/**
+ * catalan language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Carles Bellver <carles.bellver at cent.uji.es>
+ * @author Carles Bellver <carles.bellver at gmail.com>
+ * @author carles.bellver at gmail.com
+ * @author carles.bellver at cent.uji.es
+ */
+$lang['admin_acl'] = 'Gestió de la Llista de Control d\'Accés';
+$lang['acl_group'] = 'Grup';
+$lang['acl_user'] = 'Usuari';
+$lang['acl_perms'] = 'Permisos per a';
+$lang['page'] = 'PÃ gina';
+$lang['namespace'] = 'Espai';
+$lang['p_user_id'] = 'L\'usuari <b class="acluser">%s</b> té a hores d\'ara els permisos següents en la pà gina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns'] = 'L\'usuari <b class="acluser">%s</b> té a hores d\'ara els permisos següents en l\'espai <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id'] = 'Els membres del grup <b class="aclgroup">%s</b> tenen a hores d\'ara els permisos següents en la pà gina <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns'] = 'Els membres del grup <b class="aclgroup">%s</b> tenen a hores d\'ara els permisos següents en l\'espai <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id'] = '<b>Introduïu un usuari o grup</b> en el formulari de dalt per veure o editar els seus permisos en la pà gina <b class="aclpage">%s</b>.';
+$lang['p_choose_ns'] = '<b>Introduïu un usuari o grup</b> en el formulari de dalt per veure o editar els seus permisos en l\'espai <b class="aclns">%s</b>.';
+$lang['p_inherited'] = 'Nota: aquests permisos no s\'han definit explÃcitament, sinó que són heretats d\'altres grups o d\'espais d\'ordre superior.';
+$lang['p_isadmin'] = 'Nota: l\'usuari o grup seleccionat té sempre tots els permisos perquè ha estat configurat com a superusuari.';
+$lang['current'] = 'Regles ACL actuals';
+$lang['where'] = 'PÃ gina/espai';
+$lang['who'] = 'Usuari/grup';
+$lang['perm'] = 'Permisos';
+$lang['acl_perm0'] = 'Cap';
+$lang['acl_perm1'] = 'Lectura';
+$lang['acl_perm2'] = 'Edició';
+$lang['acl_perm4'] = 'Creació';
+$lang['acl_perm8'] = 'Penjar fitxers';
+$lang['acl_perm16'] = 'Suprimir';
+$lang['acl_new'] = 'Afegeix nova entrada';
+$lang['acl_mod'] = 'Modifica entrada';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/help.txt
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/help.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/help.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,12 +1,12 @@
-=== NápovÄda: ===
-
-Na této stránce můžete pÅidávat a odebÃrat oprávnÄnà na jmenné prostory a stránky Vašà wiki.
-
-Levý panel zobrazuje všechny dostupné jmenné prostory a stránky.
-
-FormuláŠvýše umožÅuje vidÄt a modifikovat oprávnÄnà vybraného uživatele nebo skupiny.
-
-V tabulce uvedené nÞe jsou zobrazeny vÅ¡echny aktuálnà pravidla pro ÅÃzenà pÅÃstupu (oprávnÄnÃ).
-Zde můžete rychle odebÃrat a mÄnit vÃce položek (oprávnÄnÃ) najednou.
-
+=== NápovÄda: ===
+
+Na této stránce můžete pÅidávat a odebÃrat oprávnÄnà na jmenné prostory a stránky Vašà wiki.
+
+Levý panel zobrazuje všechny dostupné jmenné prostory a stránky.
+
+FormuláŠvýše umožÅuje vidÄt a modifikovat oprávnÄnà vybraného uživatele nebo skupiny.
+
+V tabulce uvedené nÞe jsou zobrazeny vÅ¡echny aktuálnà pravidla pro ÅÃzenà pÅÃstupu (oprávnÄnÃ).
+Zde můžete rychle odebÃrat a mÄnit vÃce položek (oprávnÄnÃ) najednou.
+
Pro detailnÄjšà nápovÄdu si pÅeÄtÄte stránku [[doku>wiki:acl|oficiálnà dokumentaci ACL]], která Vám může pomoci plnÄ pochopit princip, jak ÅÃzenà pÅÃstupu na DokuWiki funguje.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/cs/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,34 +1,34 @@
-<?php
-/**
- * Czech language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Bohumir Zamecnik <bohumir at zamecnik.org>
- * @author Zbynek Krivka <zbynek.krivka at seznam.cz>
- */
-$lang['admin_acl'] = 'Správa pÅÃstupových práv';
-$lang['acl_group'] = 'Skupina';
-$lang['acl_user'] = 'Uživatel';
-$lang['acl_perms'] = 'Práva pro';
-$lang['page'] = 'Stránka';
-$lang['namespace'] = 'Jmenný prostor';
-$lang['p_user_id'] = 'Uživatel <b class="acluser">%s</b> má nynà na stránku <b class="aclpage">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
-$lang['p_user_ns'] = 'Uživatel <b class="acluser">%s</b> má nynà na jmenný prostor <b class="aclns">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
-$lang['p_group_id'] = 'Älenové skupiny <b class="aclgroup">%s</b> majà nynà na stránku <b class="aclpage">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
-$lang['p_group_ns'] = 'Älenové skupiny <b class="aclgroup">%s</b> majà nynà na jmenný prostor <b class="aclns">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
-$lang['p_choose_id'] = 'ProsÃm, <b>vložte uživatele nebo skupinu</b> ve formÄ uvedené výše, abyste mohli prohlÞet a editovat množinu oprávnÄnà pro stránku <b class="aclpage">%s</b>.';
-$lang['p_choose_ns'] = 'ProsÃm, <b>vložte uživatele nebo skupinu</b> ve formÄ uvedené výše, abyste mohli prohlÞet a editovat množinu oprávnÄnà pro jmenný prostor <b class="aclns">%s</b>.';
-$lang['p_inherited'] = 'Poznámka: Tato oprávnÄnà nebyla nastavena explicitnÄ, ale jsou zdÄdÄna z jiné skupiny nebo z nadÅazeného jmenného prostoru.';
-$lang['p_isadmin'] = 'Poznámka: Vybraná skupina nebo uživatel má vždy plná oprávnÄnÃ, protože je nastaven jako správce (superuser).';
-$lang['current'] = 'Aktuálnà ACL pravidla';
-$lang['where'] = 'Stránka/Jmenný prostor';
-$lang['who'] = 'Uživatel/Skupina';
-$lang['perm'] = 'OprávnÄnÃ';
-$lang['acl_perm0'] = 'Žádné';
-$lang['acl_perm1'] = 'ÄtenÃ';
-$lang['acl_perm2'] = 'Ãpravy';
-$lang['acl_perm4'] = 'VytvoÅenÃ';
-$lang['acl_perm8'] = 'Upload';
-$lang['acl_perm16'] = 'MazánÃ';
-$lang['acl_new'] = 'PÅidat novou položku';
-$lang['acl_mod'] = 'Editovat položku';
+<?php
+/**
+ * Czech language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Bohumir Zamecnik <bohumir at zamecnik.org>
+ * @author Zbynek Krivka <zbynek.krivka at seznam.cz>
+ */
+$lang['admin_acl'] = 'Správa pÅÃstupových práv';
+$lang['acl_group'] = 'Skupina';
+$lang['acl_user'] = 'Uživatel';
+$lang['acl_perms'] = 'Práva pro';
+$lang['page'] = 'Stránka';
+$lang['namespace'] = 'Jmenný prostor';
+$lang['p_user_id'] = 'Uživatel <b class="acluser">%s</b> má nynà na stránku <b class="aclpage">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
+$lang['p_user_ns'] = 'Uživatel <b class="acluser">%s</b> má nynà na jmenný prostor <b class="aclns">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
+$lang['p_group_id'] = 'Älenové skupiny <b class="aclgroup">%s</b> majà nynà na stránku <b class="aclpage">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
+$lang['p_group_ns'] = 'Älenové skupiny <b class="aclgroup">%s</b> majà nynà na jmenný prostor <b class="aclns">%s</b> následujÃcà oprávnÄnÃ: <i>%s</i>.';
+$lang['p_choose_id'] = 'ProsÃm, <b>vložte uživatele nebo skupinu</b> ve formÄ uvedené výše, abyste mohli prohlÞet a editovat množinu oprávnÄnà pro stránku <b class="aclpage">%s</b>.';
+$lang['p_choose_ns'] = 'ProsÃm, <b>vložte uživatele nebo skupinu</b> ve formÄ uvedené výše, abyste mohli prohlÞet a editovat množinu oprávnÄnà pro jmenný prostor <b class="aclns">%s</b>.';
+$lang['p_inherited'] = 'Poznámka: Tato oprávnÄnà nebyla nastavena explicitnÄ, ale jsou zdÄdÄna z jiné skupiny nebo z nadÅazeného jmenného prostoru.';
+$lang['p_isadmin'] = 'Poznámka: Vybraná skupina nebo uživatel má vždy plná oprávnÄnÃ, protože je nastaven jako správce (superuser).';
+$lang['current'] = 'Aktuálnà ACL pravidla';
+$lang['where'] = 'Stránka/Jmenný prostor';
+$lang['who'] = 'Uživatel/Skupina';
+$lang['perm'] = 'OprávnÄnÃ';
+$lang['acl_perm0'] = 'Žádné';
+$lang['acl_perm1'] = 'ÄtenÃ';
+$lang['acl_perm2'] = 'Ãpravy';
+$lang['acl_perm4'] = 'VytvoÅenÃ';
+$lang['acl_perm8'] = 'Upload';
+$lang['acl_perm16'] = 'MazánÃ';
+$lang['acl_new'] = 'PÅidat novou položku';
+$lang['acl_mod'] = 'Editovat položku';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/da/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/da/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/da/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,24 +1,30 @@
-<?php
-/**
- * Danish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author koeppe <koeppe at kazur.dk>
- * @author Jon Bendtsen <bendtsen at diku.dk>
- * @author Lars Næsbye Christensen <larsnaesbye at stud.ku.dk>
- */
-
-$lang['admin_acl'] = 'Rettighedsadministration';
-$lang['acl_group'] = 'Gruppe';
-$lang['acl_user'] = 'Bruger';
-$lang['acl_perms'] = 'Rettigheder for';
-$lang['page'] = 'Dokument';
-$lang['namespace'] = 'Navnerum';
-
-$lang['acl_perm1'] = 'Læs';
-$lang['acl_perm2'] = 'Skriv';
-$lang['acl_perm4'] = 'Opret';
-$lang['acl_perm8'] = 'Upload';
-$lang['acl_perm16'] = 'Slet';
-$lang['acl_new'] = 'Tilføj ny post';
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Danish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author koeppe <koeppe at kazur.dk>
+ * @author Jon Bendtsen <bendtsen at diku.dk>
+ * @author Lars Næsbye Christensen <larsnaesbye at stud.ku.dk>
+ * @author Kalle Sommer Nielsen <kalle at php.net>
+ */
+$lang['admin_acl'] = 'Rettighedsadministration';
+$lang['acl_group'] = 'Gruppe';
+$lang['acl_user'] = 'Bruger';
+$lang['acl_perms'] = 'Rettigheder for';
+$lang['page'] = 'Dokument';
+$lang['namespace'] = 'Navnerum';
+$lang['p_user_id'] = 'Bruger <b class="acluser">%s</b> har følgende adgang på siden <b class="aclpage">%s</b>: <i>%s</i>';
+$lang['p_isadmin'] = 'Note: Den valgte gruppe eller bruger har altid fuldt adgang fordi den er konfigueret som en super gruppe/bruger';
+$lang['current'] = 'Aktuelle ACL regler';
+$lang['where'] = 'Side/Namespace';
+$lang['who'] = 'Bruger/Gruppe';
+$lang['perm'] = 'Adgangsniveau';
+$lang['acl_perm0'] = 'Ingen';
+$lang['acl_perm1'] = 'Læs';
+$lang['acl_perm2'] = 'Skriv';
+$lang['acl_perm4'] = 'Opret';
+$lang['acl_perm8'] = 'Upload';
+$lang['acl_perm16'] = 'Slet';
+$lang['acl_new'] = 'Tilføj ny post';
+$lang['acl_mod'] = 'Ãndre post';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/de/help.txt
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/de/help.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/de/help.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-=== Kurzhilfe ===
-
-Auf dieser Seite können sie Zugriffsberechtigungen für Seiten und Namensräume festlegen und ändern.
-
-Die Liste links zeigt alle verfügbaren Namensräume und Seiten.
-
-Das Formular oben erlaubt Anzeige, Ãndern und Hinzufügen von Zugriffsregeln für einen ausgewählten Nutzer oder eine Gruppe.
-
-In der Tabelle unten werden alle bestehenden Regeln aufgeführt und können dort modifiziert oder gelöscht werden.
-
+=== Kurzhilfe ===
+
+Auf dieser Seite können sie Zugriffsberechtigungen für Seiten und Namensräume festlegen und ändern.
+
+Die Liste links zeigt alle verfügbaren Namensräume und Seiten.
+
+Das Formular oben erlaubt Anzeige, Ãndern und Hinzufügen von Zugriffsregeln für einen ausgewählten Nutzer oder eine Gruppe.
+
+In der Tabelle unten werden alle bestehenden Regeln aufgeführt und können dort modifiziert oder gelöscht werden.
+
Für ein tiefergehendes Verständnis wie Zugriffsbeschränkungen in DokuWiki funktionieren, sollten Sie die [[doku>wiki:acl|offizielle Dokumentation]] lesen.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/de/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/de/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/de/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,38 +1,39 @@
-<?php
-/**
- * german language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Christof <gagi at fin.de>
- * @author Anika Henke <henke at cosmocode.de>
- * @author Esther Brunner <esther at kaffeehaus.ch>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @author Michael Klier <chi at chimeric.de>
- */
-$lang['admin_acl'] = 'Zugangsverwaltung';
-$lang['acl_group'] = 'Gruppe';
-$lang['acl_user'] = 'Benutzer';
-$lang['acl_perms'] = 'Berechtigungen für';
-$lang['page'] = 'Seite';
-$lang['namespace'] = 'Namensraum';
-$lang['p_user_id'] = 'Nutzer <b class="acluser">%s</b> hat momentan folgende Berechtigungen für die Seite <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_user_ns'] = 'Nutzer <b class="acluser">%s</b> hat momentan folgende Berechtigungen im Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_group_id'] = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für die Seite <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_group_ns'] = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für den Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_choose_id'] = 'Bitte geben Sie in obigem Formular eine <b>einen Nutzer oder eine Gruppe</b> an, um die Berechtigungen für die Seite <b class="aclpage">%s</b> zu sehen oder zu ändern.';
-$lang['p_choose_ns'] = 'Bitte geben Sie in obigem Formular eine <b>einen Nutzer oder eine Gruppe</b> an, um die Berechtigungen für den Namensraum <b class="aclns">%s</b> zu sehen oder zu ändern.';
-$lang['p_inherited'] = 'Hinweis: Diese Berechtigungen wureden nicht explizit gesetzt sondern von anderen Gruppen oder höher liegenden Namensräumen geerbt.';
-$lang['p_isadmin'] = 'Hinweis: Die ausgewählte Gruppe oder Nutzer haben immer alle Berechtigungen das sie als Superuser konfiguriert wurden.';
-$lang['current'] = 'Momentane Zugriffsregeln';
-$lang['where'] = 'Seite/Namensraum';
-$lang['who'] = 'Nutzer/Gruppe';
-$lang['perm'] = 'Berechtigungen';
-$lang['acl_perm0'] = 'Keine';
-$lang['acl_perm1'] = 'Lesen';
-$lang['acl_perm2'] = 'Bearbeiten';
-$lang['acl_perm4'] = 'Anlegen';
-$lang['acl_perm8'] = 'Hochladen';
-$lang['acl_perm16'] = 'Entfernen';
-$lang['acl_new'] = 'Eintrag hinzufügen';
-$lang['acl_mod'] = 'Eintrag bearbeiten';
+<?php
+/**
+ * german language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Christof <gagi at fin.de>
+ * @author Anika Henke <henke at cosmocode.de>
+ * @author Esther Brunner <esther at kaffeehaus.ch>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @author Michael Klier <chi at chimeric.de>
+ */
+$lang['admin_acl'] = 'Zugangsverwaltung';
+$lang['acl_group'] = 'Gruppe';
+$lang['acl_user'] = 'Benutzer';
+$lang['acl_perms'] = 'Berechtigungen für';
+$lang['page'] = 'Seite';
+$lang['namespace'] = 'Namensraum';
+$lang['btn_select'] = 'Auswählen';
+$lang['p_user_id'] = 'Nutzer <b class="acluser">%s</b> hat momentan folgende Berechtigungen für die Seite <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns'] = 'Nutzer <b class="acluser">%s</b> hat momentan folgende Berechtigungen im Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id'] = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für die Seite <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns'] = 'Mitglieder der Gruppe <b class="aclgroup">%s</b> haben momentan folgende Berechtigungen für den Namensraum <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id'] = 'Bitte geben Sie in obigem Formular eine <b>einen Nutzer oder eine Gruppe</b> an, um die Berechtigungen für die Seite <b class="aclpage">%s</b> zu sehen oder zu ändern.';
+$lang['p_choose_ns'] = 'Bitte geben Sie in obigem Formular eine <b>einen Nutzer oder eine Gruppe</b> an, um die Berechtigungen für den Namensraum <b class="aclns">%s</b> zu sehen oder zu ändern.';
+$lang['p_inherited'] = 'Hinweis: Diese Berechtigungen wureden nicht explizit gesetzt sondern von anderen Gruppen oder höher liegenden Namensräumen geerbt.';
+$lang['p_isadmin'] = 'Hinweis: Die ausgewählte Gruppe oder Nutzer haben immer alle Berechtigungen das sie als Superuser konfiguriert wurden.';
+$lang['current'] = 'Momentane Zugriffsregeln';
+$lang['where'] = 'Seite/Namensraum';
+$lang['who'] = 'Nutzer/Gruppe';
+$lang['perm'] = 'Berechtigungen';
+$lang['acl_perm0'] = 'Keine';
+$lang['acl_perm1'] = 'Lesen';
+$lang['acl_perm2'] = 'Bearbeiten';
+$lang['acl_perm4'] = 'Anlegen';
+$lang['acl_perm8'] = 'Hochladen';
+$lang['acl_perm16'] = 'Entfernen';
+$lang['acl_new'] = 'Eintrag hinzufügen';
+$lang['acl_mod'] = 'Eintrag bearbeiten';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/el/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/el/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/el/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,26 +1,26 @@
-<?php
-/**
- * Greek language file
- *
- * Based on DokuWiki Version rc2007-05-24 english language file
- * Original english language file contents included for reference
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Anika Henke <henke at cosmocode.de>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- * @author Thanos Massias <tm at thriasio.gr>
- * @author ÎθανάÏÎ¹Î¿Ï ÎÏÎ±Î®Ï <homunculus at wana.gr>
- */
-$lang['admin_acl'] = 'ÎιαÏείÏιÏη ÎικαιÏμάÏÏν Î ÏÏÏβαÏηÏ';
-$lang['acl_group'] = 'Îμάδα';
-$lang['acl_user'] = 'ΧÏήÏÏηÏ';
-$lang['acl_perms'] = 'ÎικαιÏμαÏα για';
-$lang['page'] = 'Σελίδα';
-$lang['namespace'] = 'ΦάκελοÏ';
-$lang['acl_perm1'] = 'ÎνάγνÏÏη';
-$lang['acl_perm2'] = 'ΤÏοÏοÏοίηÏη';
-$lang['acl_perm4'] = 'ÎημιοÏ
Ïγία';
-$lang['acl_perm8'] = 'ΦÏÏÏÏÏη';
-$lang['acl_perm16'] = 'ÎιαγÏαÏή';
-$lang['acl_new'] = 'Î ÏοÏθήκη νÎÎ±Ï ÎµÎ³Î³ÏαÏήÏ';
+<?php
+/**
+ * Greek language file
+ *
+ * Based on DokuWiki Version rc2007-05-24 english language file
+ * Original english language file contents included for reference
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Anika Henke <henke at cosmocode.de>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ * @author Thanos Massias <tm at thriasio.gr>
+ * @author ÎθανάÏÎ¹Î¿Ï ÎÏÎ±Î®Ï <homunculus at wana.gr>
+ */
+$lang['admin_acl'] = 'ÎιαÏείÏιÏη ÎικαιÏμάÏÏν Î ÏÏÏβαÏηÏ';
+$lang['acl_group'] = 'Îμάδα';
+$lang['acl_user'] = 'ΧÏήÏÏηÏ';
+$lang['acl_perms'] = 'ÎικαιÏμαÏα για';
+$lang['page'] = 'Σελίδα';
+$lang['namespace'] = 'ΦάκελοÏ';
+$lang['acl_perm1'] = 'ÎνάγνÏÏη';
+$lang['acl_perm2'] = 'ΤÏοÏοÏοίηÏη';
+$lang['acl_perm4'] = 'ÎημιοÏ
Ïγία';
+$lang['acl_perm8'] = 'ΦÏÏÏÏÏη';
+$lang['acl_perm16'] = 'ÎιαγÏαÏή';
+$lang['acl_new'] = 'Î ÏοÏθήκη νÎÎ±Ï ÎµÎ³Î³ÏαÏήÏ';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/en/help.txt
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/en/help.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/en/help.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,16 +1,16 @@
-=== Quick Help: ===
-
-On this page you can add and remove permissions for namespaces and
-pages in your wiki.
-
-The left pane displays all available namespaces and pages.
-
-The form above allows you to see and modify the permissions of a
-selected user or group.
-
-In the table below all currently set access control rules are shown.
-You can use it to quickly delete or change multiple rules.
-
-Reading the [[doku>wiki:acl|official documentation on ACL]] might help
-you to fully understand how access control works in DokuWiki.
-
+=== Quick Help: ===
+
+On this page you can add and remove permissions for namespaces and
+pages in your wiki.
+
+The left pane displays all available namespaces and pages.
+
+The form above allows you to see and modify the permissions of a
+selected user or group.
+
+In the table below all currently set access control rules are shown.
+You can use it to quickly delete or change multiple rules.
+
+Reading the [[doku>wiki:acl|official documentation on ACL]] might help
+you to fully understand how access control works in DokuWiki.
+
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/en/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/en/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/en/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,43 +1,45 @@
-<?php
-/**
- * english language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- * @author Anika Henke <henke at cosmocode.de>
- * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
- */
-
-$lang['admin_acl'] = 'Access Control List Management';
-$lang['acl_group'] = 'Group';
-$lang['acl_user'] = 'User';
-$lang['acl_perms'] = 'Permissions for';
-$lang['page'] = 'Page';
-$lang['namespace'] = 'Namespace';
-
-$lang['p_user_id'] = 'User <b class="acluser">%s</b> currently has the following permissions on page <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_user_ns'] = 'User <b class="acluser">%s</b> currently has the following permissions in namespace <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_group_id'] = 'Members of group <b class="aclgroup">%s</b> currently have the following permissions on page <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_group_ns'] = 'Members of group <b class="aclgroup">%s</b> currently have the following permissions in namespace <b class="aclns">%s</b>: <i>%s</i>.';
-
-$lang['p_choose_id'] = 'Please <b>enter a user or group</b> in the form above to view or edit the permissions set for the page <b class="aclpage">%s</b>.';
-$lang['p_choose_ns'] = 'Please <b>enter a user or group</b> in the form above to view or edit the permissions set for the namespace <b class="aclns">%s</b>.';
-
-
-$lang['p_inherited'] = 'Note: Those permissions were not set explicitly but were inherited from other groups or higher namespaces.';
-$lang['p_isadmin'] = 'Note: The selected group or user has always full permissions because it is configured as superuser.';
-
-$lang['current'] = 'Current ACL Rules';
-$lang['where'] = 'Page/Namespace';
-$lang['who'] = 'User/Group';
-$lang['perm'] = 'Permissions';
-
-$lang['acl_perm0'] = 'None';
-$lang['acl_perm1'] = 'Read';
-$lang['acl_perm2'] = 'Edit';
-$lang['acl_perm4'] = 'Create';
-$lang['acl_perm8'] = 'Upload';
-$lang['acl_perm16'] = 'Delete';
-$lang['acl_new'] = 'Add new Entry';
-$lang['acl_mod'] = 'Modify Entry';
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * english language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ * @author Anika Henke <henke at cosmocode.de>
+ * @author Matthias Grimm <matthiasgrimm at users.sourceforge.net>
+ */
+
+$lang['admin_acl'] = 'Access Control List Management';
+$lang['acl_group'] = 'Group';
+$lang['acl_user'] = 'User';
+$lang['acl_perms'] = 'Permissions for';
+$lang['page'] = 'Page';
+$lang['namespace'] = 'Namespace';
+
+$lang['btn_select'] = 'Select';
+
+$lang['p_user_id'] = 'User <b class="acluser">%s</b> currently has the following permissions on page <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns'] = 'User <b class="acluser">%s</b> currently has the following permissions in namespace <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id'] = 'Members of group <b class="aclgroup">%s</b> currently have the following permissions on page <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns'] = 'Members of group <b class="aclgroup">%s</b> currently have the following permissions in namespace <b class="aclns">%s</b>: <i>%s</i>.';
+
+$lang['p_choose_id'] = 'Please <b>enter a user or group</b> in the form above to view or edit the permissions set for the page <b class="aclpage">%s</b>.';
+$lang['p_choose_ns'] = 'Please <b>enter a user or group</b> in the form above to view or edit the permissions set for the namespace <b class="aclns">%s</b>.';
+
+
+$lang['p_inherited'] = 'Note: Those permissions were not set explicitly but were inherited from other groups or higher namespaces.';
+$lang['p_isadmin'] = 'Note: The selected group or user has always full permissions because it is configured as superuser.';
+
+$lang['current'] = 'Current ACL Rules';
+$lang['where'] = 'Page/Namespace';
+$lang['who'] = 'User/Group';
+$lang['perm'] = 'Permissions';
+
+$lang['acl_perm0'] = 'None';
+$lang['acl_perm1'] = 'Read';
+$lang['acl_perm2'] = 'Edit';
+$lang['acl_perm4'] = 'Create';
+$lang['acl_perm8'] = 'Upload';
+$lang['acl_perm16'] = 'Delete';
+$lang['acl_new'] = 'Add new Entry';
+$lang['acl_mod'] = 'Modify Entry';
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/help.txt
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/help.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/help.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-=== Helpeto: ===
-
-En tiu Äi paÄo vi povas aldoni kaj forigi rajtojn por nomspacoj kaj paÄoj en via vikio.
-
-La maldekstra panelo montras Äiujn disponeblajn nomspacojn kaj paÄojn.
-
-La suba agordilo permesas al vi rigardi kaj modifi la rajtojn de elektita uzulo aÅ grupo.
-
-En la suba tabelo Äiuj aktuale difinitaj alirkontrolaj reguloj estas montritaj. Vi povas uzi Äin por rapide forigi aÅ ÅanÄi multoblajn regulojn.
-
+=== Helpeto: ===
+
+En tiu Äi paÄo vi povas aldoni kaj forigi rajtojn por nomspacoj kaj paÄoj en via vikio.
+
+La maldekstra panelo montras Äiujn disponeblajn nomspacojn kaj paÄojn.
+
+La suba agordilo permesas al vi rigardi kaj modifi la rajtojn de elektita uzulo aÅ grupo.
+
+En la suba tabelo Äiuj aktuale difinitaj alirkontrolaj reguloj estas montritaj. Vi povas uzi Äin por rapide forigi aÅ ÅanÄi multoblajn regulojn.
+
Legado de la [[doku>wiki:acl|oficiala dokumentaro pri ACL]] povus helpi vin bone kompreni kiel alirkontrolo funkcias en DokuWiki.
\ No newline at end of file
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/eo/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,33 +1,33 @@
-<?php
-/**
- * Esperantolanguage file
- *
- * @author Felipe Castro <fefcas at uol.com.br>
- * @author Felipo Kastro <fefcas at gmail.com>
- */
-$lang['admin_acl'] = 'Administrado de Alirkontrola Listo (ACL)';
-$lang['acl_group'] = 'Grupo';
-$lang['acl_user'] = 'Uzulo';
-$lang['acl_perms'] = 'Rajtoj por';
-$lang['page'] = 'PaÄo';
-$lang['namespace'] = 'Nomspaco';
-$lang['p_user_id'] = 'Uzulo <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la paÄo <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_user_ns'] = 'Uzulo <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_group_id'] = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la paÄo <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_group_ns'] = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_choose_id'] = 'Bonvole <b>enmeti uzulon aÅ grupon</b> en la suba agordilo por rigardi aÅ redakti la aron da rajtoj por la paÄo <b class="aclpage">%s</b>.';
-$lang['p_choose_ns'] = 'Bonvole <b>enmeti uzulon aÅ grupon</b> en la suba agordilo por rigardi aÅ redakti la aron da rajtoj por la nomspaco <b class="aclns">%s</b>.';
-$lang['p_inherited'] = 'Rimarko: tiuj rajtoj ne estis rekte difinitaj, sed ili estis hereditaj el aliaj pli superaj grupoj aÅ nomspacoj.';
-$lang['p_isadmin'] = 'Rimarko: la elektita grupo aÅ uzulo Äiam havas plenan rajtaron Äar Äi estas difinita kiel superuzulo.';
-$lang['current'] = 'Aktuala regularo ACL';
-$lang['where'] = 'PaÄo/Nomspaco';
-$lang['who'] = 'Uzulo/Grupo';
-$lang['perm'] = 'Rajtoj';
-$lang['acl_perm0'] = 'Nenio';
-$lang['acl_perm1'] = 'Legi';
-$lang['acl_perm2'] = 'Redakti';
-$lang['acl_perm4'] = 'Krei';
-$lang['acl_perm8'] = 'AlÅuti';
-$lang['acl_perm16'] = 'Forigi';
-$lang['acl_new'] = 'Aldoni novan Enmetaĵon';
-$lang['acl_mod'] = 'Modifi Enmetaĵon';
+<?php
+/**
+ * Esperantolanguage file
+ *
+ * @author Felipe Castro <fefcas at uol.com.br>
+ * @author Felipo Kastro <fefcas at gmail.com>
+ */
+$lang['admin_acl'] = 'Administrado de Alirkontrola Listo (ACL)';
+$lang['acl_group'] = 'Grupo';
+$lang['acl_user'] = 'Uzulo';
+$lang['acl_perms'] = 'Rajtoj por';
+$lang['page'] = 'PaÄo';
+$lang['namespace'] = 'Nomspaco';
+$lang['p_user_id'] = 'Uzulo <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la paÄo <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns'] = 'Uzulo <b class="acluser">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id'] = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la paÄo <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns'] = 'Anoj de la grupo <b class="aclgroup">%s</b> aktuale havas la jenajn rajtojn en la nomspaco <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id'] = 'Bonvole <b>enmeti uzulon aÅ grupon</b> en la suba agordilo por rigardi aÅ redakti la aron da rajtoj por la paÄo <b class="aclpage">%s</b>.';
+$lang['p_choose_ns'] = 'Bonvole <b>enmeti uzulon aÅ grupon</b> en la suba agordilo por rigardi aÅ redakti la aron da rajtoj por la nomspaco <b class="aclns">%s</b>.';
+$lang['p_inherited'] = 'Rimarko: tiuj rajtoj ne estis rekte difinitaj, sed ili estis hereditaj el aliaj pli superaj grupoj aÅ nomspacoj.';
+$lang['p_isadmin'] = 'Rimarko: la elektita grupo aÅ uzulo Äiam havas plenan rajtaron Äar Äi estas difinita kiel superuzulo.';
+$lang['current'] = 'Aktuala regularo ACL';
+$lang['where'] = 'PaÄo/Nomspaco';
+$lang['who'] = 'Uzulo/Grupo';
+$lang['perm'] = 'Rajtoj';
+$lang['acl_perm0'] = 'Nenio';
+$lang['acl_perm1'] = 'Legi';
+$lang['acl_perm2'] = 'Redakti';
+$lang['acl_perm4'] = 'Krei';
+$lang['acl_perm8'] = 'AlÅuti';
+$lang['acl_perm16'] = 'Forigi';
+$lang['acl_new'] = 'Aldoni novan Enmetaĵon';
+$lang['acl_mod'] = 'Modifi Enmetaĵon';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/es/help.txt
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/es/help.txt 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/es/help.txt 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,11 +1,11 @@
-=== Ayuda rápida: ===
-
-En esta página puede agregar o retirar permisos para los espacios de nombres y páginas en su wiki.
-
-El panel de la izquierda muiestra todos los espacios de nombres y páginas
-
-El formulario inferior permite ver y modificar los permisos del usuario o grupo elegido.
-
-En la tabla anterior se muestran todas las reglas de control de acceso vigentes Puede usarla para borrar o cambiar varias reglas rápidamente.
-
-Consultar el [[doku>wiki:acl|official documentation on ACL]] puede ayudarle a entender completamente como el control de acceso trabaja en DokuWiki.
+=== Ayuda rápida: ===
+
+En esta página puede agregar o retirar permisos para los espacios de nombres y páginas en su wiki.
+
+El panel de la izquierda muiestra todos los espacios de nombres y páginas
+
+El formulario inferior permite ver y modificar los permisos del usuario o grupo elegido.
+
+En la tabla anterior se muestran todas las reglas de control de acceso vigentes Puede usarla para borrar o cambiar varias reglas rápidamente.
+
+Consultar el [[doku>wiki:acl|official documentation on ACL]] puede ayudarle a entender completamente como el control de acceso trabaja en DokuWiki.
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/es/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/es/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/es/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,35 +1,36 @@
-<?php
-/**
- * Spanish language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Miguel Pagano <miguel.pagano at gmail.com>
- * @author Oscar M. Lage <r0sk10 at gmail.com>
- * @author Gabriel Castillo <gch at pumas.ii.unam.mx>
- */
-$lang['admin_acl'] = 'Administración de lista de control de acceso';
-$lang['acl_group'] = 'Grupo';
-$lang['acl_user'] = 'Usuario';
-$lang['acl_perms'] = 'Permiso para';
-$lang['page'] = 'Página';
-$lang['namespace'] = 'Espacio de nombres';
-$lang['p_user_id'] = 'El usuario <b class="acluser">%s</b> tiene los siguientes permisos sobre la página <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_user_ns'] = 'El usuario <b class="acluser">%s</b> tiene los siguientes permisos sobre el espacio de nombres <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_group_id'] = 'Los miembros del grupo <b class="aclgroup">%s</b> tiene los siguientes permisos sobre la página <b class="aclpage">%s</b>: <i>%s</i>.';
-$lang['p_group_ns'] = 'Los miembros del grupo <b class="aclgroup">%s</b> tiene los siguientes permisos sobre el espacio de nombres <b class="aclns">%s</b>: <i>%s</i>.';
-$lang['p_choose_id'] = 'Por favor <b>proporciones un usuario o grupo</b>en el formulario arriba mostrado para ver o editar los permisos asignados sobre la página<b class="aclpage">%s</b>.';
-$lang['p_choose_ns'] = 'Por favor <b>proporciones un usuario o grupo</b>en el formulario arriba mostrado para ver o editar los permisos asignados sobre el espacio de nombres <b class="aclns">%s</b>.';
-$lang['p_inherited'] = 'Nota: Esos permisos no fueron establecidos explicitamente sino que fueron heredados desde otros grupos o espacios de nombres superiores';
-$lang['p_isadmin'] = 'Nota: El grupo o usuario seleccionado simepres tiene permisos totales debido a que se encuentra configurado como superusuario';
-$lang['current'] = 'Reglas ACL vigentes';
-$lang['where'] = 'Pagina/Espacio de nombres';
-$lang['who'] = 'Usuario/Grupo';
-$lang['perm'] = 'Permisos';
-$lang['acl_perm0'] = 'ninguno';
-$lang['acl_perm1'] = 'Leer';
-$lang['acl_perm2'] = 'Editar';
-$lang['acl_perm4'] = 'Crear';
-$lang['acl_perm8'] = 'Subir un fichero';
-$lang['acl_perm16'] = 'Borrar';
-$lang['acl_new'] = 'Agregar una nueva entrada';
-$lang['acl_mod'] = 'Modificar una entrada';
+<?php
+/**
+ * Spanish language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Miguel Pagano <miguel.pagano at gmail.com>
+ * @author Oscar M. Lage <r0sk10 at gmail.com>
+ * @author Gabriel Castillo <gch at pumas.ii.unam.mx>
+ * @author oliver at samera.com.py
+ */
+$lang['admin_acl'] = 'Administración de lista de control de acceso';
+$lang['acl_group'] = 'Grupo';
+$lang['acl_user'] = 'Usuario';
+$lang['acl_perms'] = 'Permiso para';
+$lang['page'] = 'Página';
+$lang['namespace'] = 'Espacio de nombres';
+$lang['p_user_id'] = 'El usuario <b class="acluser">%s</b> tiene los siguientes permisos sobre la página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_user_ns'] = 'El usuario <b class="acluser">%s</b> tiene los siguientes permisos sobre el espacio de nombres <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_group_id'] = 'Los miembros del grupo <b class="aclgroup">%s</b> tiene los siguientes permisos sobre la página <b class="aclpage">%s</b>: <i>%s</i>.';
+$lang['p_group_ns'] = 'Los miembros del grupo <b class="aclgroup">%s</b> tiene los siguientes permisos sobre el espacio de nombres <b class="aclns">%s</b>: <i>%s</i>.';
+$lang['p_choose_id'] = 'Por favor <b>proporciones un usuario o grupo</b>en el formulario arriba mostrado para ver o editar los permisos asignados sobre la página<b class="aclpage">%s</b>.';
+$lang['p_choose_ns'] = 'Por favor <b>proporciones un usuario o grupo</b>en el formulario arriba mostrado para ver o editar los permisos asignados sobre el espacio de nombres <b class="aclns">%s</b>.';
+$lang['p_inherited'] = 'Nota: Esos permisos no fueron establecidos explicitamente sino que fueron heredados desde otros grupos o espacios de nombres superiores';
+$lang['p_isadmin'] = 'Nota: El grupo o usuario seleccionado simepres tiene permisos totales debido a que se encuentra configurado como superusuario';
+$lang['current'] = 'Reglas ACL vigentes';
+$lang['where'] = 'Pagina/Espacio de nombres';
+$lang['who'] = 'Usuario/Grupo';
+$lang['perm'] = 'Permisos';
+$lang['acl_perm0'] = 'ninguno';
+$lang['acl_perm1'] = 'Leer';
+$lang['acl_perm2'] = 'Editar';
+$lang['acl_perm4'] = 'Crear';
+$lang['acl_perm8'] = 'Subir un fichero';
+$lang['acl_perm16'] = 'Borrar';
+$lang['acl_new'] = 'Agregar una nueva entrada';
+$lang['acl_mod'] = 'Modificar una entrada';
Modified: site/trunk/www-root/wiki/lib/plugins/acl/lang/et/lang.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/lang/et/lang.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/lang/et/lang.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,23 +1,23 @@
-<?php
-/**
- * Estonian language file
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Oliver S6ro <seem.iges at mail.ee>
- * @author Aari Juhanson <aari at vmg.vil.ee>
- * @author Kaiko Kaur <kaiko at kultuur.edu.ee>
- */
-
-$lang['admin_acl'] = 'Ligipääsukontrolli nimekirja haldamine';
-$lang['acl_group'] = 'Grupp';
-$lang['acl_user'] = 'Kasutaja';
-$lang['acl_perms'] = 'Lubatud';
-$lang['page'] = 'leht';
-$lang['namespace'] = 'alajaotus';
-
-$lang['acl_perm1'] = 'Lugemine';
-$lang['acl_perm2'] = 'Toimetamine';
-$lang['acl_perm4'] = 'Tekitamine';
-$lang['acl_perm8'] = 'Ãles laadimine';
-$lang['acl_new'] = 'Uue kirje lisamine';
-//Setup VIM: ex: et ts=2 enc=utf-8 :
+<?php
+/**
+ * Estonian language file
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Oliver S6ro <seem.iges at mail.ee>
+ * @author Aari Juhanson <aari at vmg.vil.ee>
+ * @author Kaiko Kaur <kaiko at kultuur.edu.ee>
+ */
+
+$lang['admin_acl'] = 'Ligipääsukontrolli nimekirja haldamine';
+$lang['acl_group'] = 'Grupp';
+$lang['acl_user'] = 'Kasutaja';
+$lang['acl_perms'] = 'Lubatud';
+$lang['page'] = 'leht';
+$lang['namespace'] = 'alajaotus';
+
+$lang['acl_perm1'] = 'Lugemine';
+$lang['acl_perm2'] = 'Toimetamine';
+$lang['acl_perm4'] = 'Tekitamine';
+$lang['acl_perm8'] = 'Ãles laadimine';
+$lang['acl_new'] = 'Uue kirje lisamine';
+//Setup VIM: ex: et ts=2 enc=utf-8 :
Modified: site/trunk/www-root/wiki/lib/plugins/acl/script.js
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/script.js 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/script.js 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,161 +1,161 @@
-acl = {
- init: function(){
- this.ctl = $('acl_manager');
- if(!this.ctl) return;
-
- var sel = $('acl__user').getElementsByTagName('select')[0];
-
- addEvent(sel,'change',acl.userselhandler);
- addEvent($('acl__tree'),'click',acl.treehandler);
- addEvent($('acl__user').getElementsByTagName('input')[1],'click',acl.loadinfo);
- addEvent($('acl__user').getElementsByTagName('input')[1],'keypress',acl.loadinfo);
- },
-
-
- /**
- * Handle user dropdown
- */
- userselhandler: function(e){
- // make entry field visible/invisible
- if(this.value == '__g__' || this.value == '__u__'){
- $('acl__user').getElementsByTagName('input')[0].style.display = ''; //acl_w
- $('acl__user').getElementsByTagName('input')[1].style.display = ''; //submit
- }else{
- $('acl__user').getElementsByTagName('input')[0].style.display = 'none';
- $('acl__user').getElementsByTagName('input')[1].style.display = 'none';
- }
-
- acl.loadinfo();
- },
-
- /**
- * Load the current permission info and edit form
- *
- * @param frm - Form element with needed data
- */
- loadinfo: function(){
- // get form
- var frm = $('acl__detail').getElementsByTagName('form')[0];
-
- // prepare an AJAX call
- var ajax = new sack(DOKU_BASE + 'lib/plugins/acl/ajax.php');
- ajax.AjaxFailedAlert = '';
- ajax.encodeURIString = false;
- if(ajax.failed) return true;
-
- // prepare data
- var data = Array();
- data[0] = ajax.encVar('ns',frm.elements['ns'].value);
- data[1] = ajax.encVar('id',frm.elements['id'].value);
- data[2] = ajax.encVar('acl_t',frm.elements['acl_t'].value);
- data[3] = ajax.encVar('acl_w',frm.elements['acl_w'].value);
- data[4] = ajax.encVar('ajax','info');
-
- ajax.elementObj = $('acl__info');
-
- ajax.runAJAX(data.join('&'));
- return false;
- },
-
- /**
- * parse URL attributes into a associative array
- *
- * @todo put into global script lib?
- */
- parseatt: function(str){
- if(str[0] == '?') str = str.substr(1);
- var attributes = {};
- var all = str.split('&');
- for(var i=0; i<all.length; i++){
- var att = all[i].split('=');
- attributes[att[0]] = decodeURIComponent(att[1]);
- }
- return attributes;
- },
-
- /**
- * htmlspecialchars equivalent
- *
- * @todo put in gloabl scripts lib?
- */
- hsc: function(str) {
- str = str.replace(/&/g,"&");
- str = str.replace(/\"/g,""");
- str = str.replace(/\'/g,"'");
- str = str.replace(/</g,"<");
- str = str.replace(/>/g,">");
- return str;
- },
-
-
- /**
- * Open or close a subtree using AJAX
- *
- * @author Andreas Gohr <andi at splitbrain.org>
- */
- treetoggle: function(clicky){
- var listitem = clicky.parentNode.parentNode;
-
- // if already open, close by removing the sublist
- var sublists = listitem.getElementsByTagName('ul');
- if(sublists.length){
- listitem.removeChild(sublists[0]);
- clicky.src = DOKU_BASE+'lib/images/plus.gif';
- clicky.alt = '+';
- return false;
- }
-
- // get the enclosed link (is always the first one)
- var link = listitem.getElementsByTagName('a')[0];
-
- // prepare an AJAX call to fetch the subtree
- var ajax = new sack(DOKU_BASE + 'lib/plugins/acl/ajax.php');
- ajax.AjaxFailedAlert = '';
- ajax.encodeURIString = false;
- if(ajax.failed) return true;
-
- //prepare the new ul
- var ul = document.createElement('ul');
- listitem.appendChild(ul);
- ajax.elementObj = ul;
- ajax.runAJAX(link.search.substr(1)+'&ajax=tree');
- clicky.src = DOKU_BASE+'lib/images/minus.gif';
- return false;
- },
-
- /**
- * Handles all clicks in the tree, dispatching the right action based on the
- * clicked element
- */
- treehandler: function(e){
- if(e.target.src){ // is it an image?
- acl.treetoggle(e.target);
- } else if(e.target.href){ // is it a link?
- // remove highlighting
- var obj = getElementsByClass('cur',$('acl__tree'),'a')[0];
- if(obj) obj.className = obj.className.replace(/ cur/,'');
-
- // add new highlighting
- e.target.className += ' cur';
-
- // set new page to detail form
- var frm = $('acl__detail').getElementsByTagName('form')[0];
- if(e.target.className.search(/wikilink1/) > -1){
- frm.elements['ns'].value = '';
- frm.elements['id'].value = acl.hsc(acl.parseatt(e.target.search)['id']);
- }else if(e.target.className.search(/idx_dir/) > -1){
- frm.elements['ns'].value = acl.hsc(acl.parseatt(e.target.search)['ns']);
- frm.elements['id'].value = '';
- }
-
- acl.loadinfo();
- }
-
- e.stopPropagation();
- e.preventDefault();
- return false;
- }
-
-};
-
-addInitEvent(acl.init);
+acl = {
+ init: function(){
+ this.ctl = $('acl_manager');
+ if(!this.ctl) return;
+
+ var sel = $('acl__user').getElementsByTagName('select')[0];
+
+ addEvent(sel,'change',acl.userselhandler);
+ addEvent($('acl__tree'),'click',acl.treehandler);
+ addEvent($('acl__user').getElementsByTagName('input')[1],'click',acl.loadinfo);
+ addEvent($('acl__user').getElementsByTagName('input')[1],'keypress',acl.loadinfo);
+ },
+
+
+ /**
+ * Handle user dropdown
+ */
+ userselhandler: function(e){
+ // make entry field visible/invisible
+ if(this.value == '__g__' || this.value == '__u__'){
+ $('acl__user').getElementsByTagName('input')[0].style.display = ''; //acl_w
+ $('acl__user').getElementsByTagName('input')[1].style.display = ''; //submit
+ }else{
+ $('acl__user').getElementsByTagName('input')[0].style.display = 'none';
+ $('acl__user').getElementsByTagName('input')[1].style.display = 'none';
+ }
+
+ acl.loadinfo();
+ },
+
+ /**
+ * Load the current permission info and edit form
+ *
+ * @param frm - Form element with needed data
+ */
+ loadinfo: function(){
+ // get form
+ var frm = $('acl__detail').getElementsByTagName('form')[0];
+
+ // prepare an AJAX call
+ var ajax = new sack(DOKU_BASE + 'lib/plugins/acl/ajax.php');
+ ajax.AjaxFailedAlert = '';
+ ajax.encodeURIString = false;
+ if(ajax.failed) return true;
+
+ // prepare data
+ var data = Array();
+ data[0] = ajax.encVar('ns',frm.elements['ns'].value);
+ data[1] = ajax.encVar('id',frm.elements['id'].value);
+ data[2] = ajax.encVar('acl_t',frm.elements['acl_t'].value);
+ data[3] = ajax.encVar('acl_w',frm.elements['acl_w'].value);
+ data[4] = ajax.encVar('ajax','info');
+
+ ajax.elementObj = $('acl__info');
+
+ ajax.runAJAX(data.join('&'));
+ return false;
+ },
+
+ /**
+ * parse URL attributes into a associative array
+ *
+ * @todo put into global script lib?
+ */
+ parseatt: function(str){
+ if(str[0] == '?') str = str.substr(1);
+ var attributes = {};
+ var all = str.split('&');
+ for(var i=0; i<all.length; i++){
+ var att = all[i].split('=');
+ attributes[att[0]] = decodeURIComponent(att[1]);
+ }
+ return attributes;
+ },
+
+ /**
+ * htmlspecialchars equivalent
+ *
+ * @todo put in gloabl scripts lib?
+ */
+ hsc: function(str) {
+ str = str.replace(/&/g,"&");
+ str = str.replace(/\"/g,""");
+ str = str.replace(/\'/g,"'");
+ str = str.replace(/</g,"<");
+ str = str.replace(/>/g,">");
+ return str;
+ },
+
+
+ /**
+ * Open or close a subtree using AJAX
+ *
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+ treetoggle: function(clicky){
+ var listitem = clicky.parentNode.parentNode;
+
+ // if already open, close by removing the sublist
+ var sublists = listitem.getElementsByTagName('ul');
+ if(sublists.length){
+ listitem.removeChild(sublists[0]);
+ clicky.src = DOKU_BASE+'lib/images/plus.gif';
+ clicky.alt = '+';
+ return false;
+ }
+
+ // get the enclosed link (is always the first one)
+ var link = listitem.getElementsByTagName('a')[0];
+
+ // prepare an AJAX call to fetch the subtree
+ var ajax = new sack(DOKU_BASE + 'lib/plugins/acl/ajax.php');
+ ajax.AjaxFailedAlert = '';
+ ajax.encodeURIString = false;
+ if(ajax.failed) return true;
+
+ //prepare the new ul
+ var ul = document.createElement('ul');
+ listitem.appendChild(ul);
+ ajax.elementObj = ul;
+ ajax.runAJAX(link.search.substr(1)+'&ajax=tree');
+ clicky.src = DOKU_BASE+'lib/images/minus.gif';
+ return false;
+ },
+
+ /**
+ * Handles all clicks in the tree, dispatching the right action based on the
+ * clicked element
+ */
+ treehandler: function(e){
+ if(e.target.src){ // is it an image?
+ acl.treetoggle(e.target);
+ } else if(e.target.href){ // is it a link?
+ // remove highlighting
+ var obj = getElementsByClass('cur',$('acl__tree'),'a')[0];
+ if(obj) obj.className = obj.className.replace(/ cur/,'');
+
+ // add new highlighting
+ e.target.className += ' cur';
+
+ // set new page to detail form
+ var frm = $('acl__detail').getElementsByTagName('form')[0];
+ if(e.target.className.search(/wikilink1/) > -1){
+ frm.elements['ns'].value = '';
+ frm.elements['id'].value = acl.hsc(acl.parseatt(e.target.search)['id']);
+ }else if(e.target.className.search(/idx_dir/) > -1){
+ frm.elements['ns'].value = acl.hsc(acl.parseatt(e.target.search)['ns']);
+ frm.elements['id'].value = '';
+ }
+
+ acl.loadinfo();
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ return false;
+ }
+
+};
+
+addInitEvent(acl.init);
Modified: site/trunk/www-root/wiki/lib/plugins/acl/style.css
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/acl/style.css 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/acl/style.css 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,96 +1,96 @@
-
-div#acl_manager div#acl__tree {
- font-size: 90%;
- width: 25%;
- height: 300px;
- float: left;
- overflow: auto;
- border: 1px solid __border__;
- text-align: left;
-}
-
-div#acl_manager div#acl__tree a.cur {
- background-color: __highlight__;
- font-weight: bold;
-}
-
-div#acl_manager div#acl__tree ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-
-div#acl_manager div#acl__tree li {
- padding-left: 1em;
-}
-
-div#acl_manager div#acl__tree ul img {
- margin-right: 0.25em;
- cursor: pointer;
-}
-
-div#acl_manager div#acl__detail {
- width: 73%;
- height: 300px;
- float: right;
- overflow: auto;
-}
-
-div#acl_manager div#acl__detail fieldset {
- width: 90%;
-}
-
-div#acl_manager div#acl__detail div#acl__user {
- border: 1px solid __border__;
- padding: 0.5em;
- margin-bottom: 0.6em;
-}
-
-div#acl_manager table.inline {
- width: 100%;
- margin: 0;
-}
-
-div#acl_manager .aclgroup {
- background: transparent url(pix/group.png) 0px 1px no-repeat;
- padding: 1px 0px 1px 18px;
-}
-
-div#acl_manager .acluser {
- background: transparent url(pix/user.png) 0px 1px no-repeat;
- padding: 1px 0px 1px 18px;
-}
-
-div#acl_manager .aclpage {
- background: transparent url(pix/page.png) 0px 1px no-repeat;
- padding: 1px 0px 1px 18px;
-}
-
-div#acl_manager .aclns {
- background: transparent url(pix/ns.png) 0px 1px no-repeat;
- padding: 1px 0px 1px 18px;
-}
-
-div#acl_manager label.disabled {
- color: __text_neu__!important;
-}
-
-#acl_manager label {
- text-align: left;
- font-weight: normal;
- display: inline;
-}
-
-#acl_manager table {
- margin-left: 10%;
- width: 80%;
-}
-
-#acl_manager table tr {
- background-color: inherit;
-}
-
-#acl_manager table tr:hover {
- background-color: __background_alt__;
-}
-
+
+div#acl_manager div#acl__tree {
+ font-size: 90%;
+ width: 25%;
+ height: 300px;
+ float: left;
+ overflow: auto;
+ border: 1px solid __border__;
+ text-align: left;
+}
+
+div#acl_manager div#acl__tree a.cur {
+ background-color: __highlight__;
+ font-weight: bold;
+}
+
+div#acl_manager div#acl__tree ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+
+div#acl_manager div#acl__tree li {
+ padding-left: 1em;
+}
+
+div#acl_manager div#acl__tree ul img {
+ margin-right: 0.25em;
+ cursor: pointer;
+}
+
+div#acl_manager div#acl__detail {
+ width: 73%;
+ height: 300px;
+ float: right;
+ overflow: auto;
+}
+
+div#acl_manager div#acl__detail fieldset {
+ width: 90%;
+}
+
+div#acl_manager div#acl__detail div#acl__user {
+ border: 1px solid __border__;
+ padding: 0.5em;
+ margin-bottom: 0.6em;
+}
+
+div#acl_manager table.inline {
+ width: 100%;
+ margin: 0;
+}
+
+div#acl_manager .aclgroup {
+ background: transparent url(pix/group.png) 0px 1px no-repeat;
+ padding: 1px 0px 1px 18px;
+}
+
+div#acl_manager .acluser {
+ background: transparent url(pix/user.png) 0px 1px no-repeat;
+ padding: 1px 0px 1px 18px;
+}
+
+div#acl_manager .aclpage {
+ background: transparent url(pix/page.png) 0px 1px no-repeat;
+ padding: 1px 0px 1px 18px;
+}
+
+div#acl_manager .aclns {
+ background: transparent url(pix/ns.png) 0px 1px no-repeat;
+ padding: 1px 0px 1px 18px;
+}
+
+div#acl_manager label.disabled {
+ color: __text_neu__!important;
+}
+
+#acl_manager label {
+ text-align: left;
+ font-weight: normal;
+ display: inline;
+}
+
+#acl_manager table {
+ margin-left: 10%;
+ width: 80%;
+}
+
+#acl_manager table tr {
+ background-color: inherit;
+}
+
+#acl_manager table tr:hover {
+ background-color: __background_alt__;
+}
+
Modified: site/trunk/www-root/wiki/lib/plugins/action.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/action.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/action.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,26 +1,26 @@
-<?php
-/**
- * Action Plugin Prototype
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-// must be run within Dokuwiki
-if(!defined('DOKU_INC')) die();
-
-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-require_once(DOKU_INC.'inc/plugin.php');
-
-/**
- * All DokuWiki plugins to interfere with the event system
- * need to inherit from this class
- */
-class DokuWiki_Action_Plugin extends DokuWiki_Plugin {
-
- /**
- * Registers a callback function for a given event
- */
- function register($controller) {
- trigger_error('register() not implemented in '.get_class($this), E_USER_WARNING);
- }
-}
+<?php
+/**
+ * Action Plugin Prototype
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_INC.'inc/plugin.php');
+
+/**
+ * All DokuWiki plugins to interfere with the event system
+ * need to inherit from this class
+ */
+class DokuWiki_Action_Plugin extends DokuWiki_Plugin {
+
+ /**
+ * Registers a callback function for a given event
+ */
+ function register($controller) {
+ trigger_error('register() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+}
Modified: site/trunk/www-root/wiki/lib/plugins/admin.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/admin.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/admin.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,49 +1,49 @@
-<?php
-/**
- * Admin Plugin Prototype
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Christopher Smith <chris at jalakai.co.uk>
- */
-// must be run within Dokuwiki
-if(!defined('DOKU_INC')) die();
-
-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-require_once(DOKU_INC.'inc/plugin.php');
-
-/**
- * All DokuWiki plugins to extend the admin function
- * need to inherit from this class
- */
-class DokuWiki_Admin_Plugin extends DokuWiki_Plugin {
-
- function getMenuText($language) {
- $menutext = $this->getLang('menu');
- if (!$menutext) {
- $info = $this->getInfo();
- $menutext = $info['name'].' ...';
- }
- return $menutext;
- }
-
- function getMenuSort() {
- return 1000;
- }
-
- function handle() {
- trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
- function html() {
- trigger_error('html() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
- function forAdminOnly() {
- return true;
- }
-
- function getTOC(){
- return array();
- }
-}
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * Admin Plugin Prototype
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Christopher Smith <chris at jalakai.co.uk>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_INC.'inc/plugin.php');
+
+/**
+ * All DokuWiki plugins to extend the admin function
+ * need to inherit from this class
+ */
+class DokuWiki_Admin_Plugin extends DokuWiki_Plugin {
+
+ function getMenuText($language) {
+ $menutext = $this->getLang('menu');
+ if (!$menutext) {
+ $info = $this->getInfo();
+ $menutext = $info['name'].' ...';
+ }
+ return $menutext;
+ }
+
+ function getMenuSort() {
+ return 1000;
+ }
+
+ function handle() {
+ trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+ function html() {
+ trigger_error('html() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+ function forAdminOnly() {
+ return true;
+ }
+
+ function getTOC(){
+ return array();
+ }
+}
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/lib/plugins/syntax.php
===================================================================
--- site/trunk/www-root/wiki/lib/plugins/syntax.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/plugins/syntax.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -1,270 +1,270 @@
-<?php
-/**
- * Syntax Plugin Prototype
- *
- * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
- * @author Andreas Gohr <andi at splitbrain.org>
- */
-// must be run within Dokuwiki
-if(!defined('DOKU_INC')) die();
-
-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
-require_once(DOKU_INC.'inc/parser/parser.php');
-
-/**
- * All DokuWiki plugins to extend the parser/rendering mechanism
- * need to inherit from this class
- */
-class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode {
-
- var $allowedModesSetup = false;
- var $localised = false; // set to true by setupLocale() after loading language dependent strings
- var $lang = array(); // array to hold language dependent strings, best accessed via ->getLang()
- var $configloaded = false; // set to true by loadConfig() after loading plugin configuration variables
- var $conf = array(); // array to hold plugin settings, best accessed via ->getConf()
-
- /**
- * General Info
- *
- * Needs to return a associative array with the following values:
- *
- * author - Author of the plugin
- * email - Email address to contact the author
- * date - Last modified date of the plugin in YYYY-MM-DD format
- * name - Name of the plugin
- * desc - Short description of the plugin (Text only)
- * url - Website with more information on the plugin (eg. syntax description)
- */
- function getInfo(){
- trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
- /**
- * Syntax Type
- *
- * Needs to return one of the mode types defined in $PARSER_MODES in parser.php
- */
- function getType(){
- trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
- /**
- * Allowed Mode Types
- *
- * Defines the mode types for other dokuwiki markup that maybe nested within the
- * plugin's own markup. Needs to return an array of one or more of the mode types
- * defined in $PARSER_MODES in parser.php
- */
- function getAllowedTypes() {
- return array();
- }
-
- /**
- * Paragraph Type
- *
- * Defines how this syntax is handled regarding paragraphs. This is important
- * for correct XHTML nesting. Should return one of the following:
- *
- * 'normal' - The plugin can be used inside paragraphs
- * 'block' - Open paragraphs need to be closed before plugin output
- * 'stack' - Special case. Plugin wraps other paragraphs.
- *
- * @see Doku_Handler_Block
- */
- function getPType(){
- return 'normal';
- }
-
- /**
- * Handler to prepare matched data for the rendering process
- *
- * This function can only pass data to render() via its return value - render()
- * may be not be run during the object's current life.
- *
- * Usually you should only need the $match param.
- *
- * @param $match string The text matched by the patterns
- * @param $state int The lexer state for the match
- * @param $pos int The character position of the matched text
- * @param $handler ref Reference to the Doku_Handler object
- * @return array Return an array with all data you want to use in render
- */
- function handle($match, $state, $pos, &$handler){
- trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
- }
-
- /**
- * Handles the actual output creation.
- *
- * The function must not assume any other of the classes methods have been run
- * during the object's current life. The only reliable data it receives are its
- * parameters.
- *
- * The function should always check for the given output format and return false
- * when a format isn't supported.
- *
- * $renderer contains a reference to the renderer object which is
- * currently handling the rendering. You need to use it for writing
- * the output. How this is done depends on the renderer used (specified
- * by $format
- *
- * The contents of the $data array depends on what the handler() function above
- * created
- *
- * @param $format string output format being rendered
- * @param $renderer ref reference to the current renderer object
- * @param $data array data created by handler()
- * @return boolean rendered correctly?
- */
- function render($format, &$renderer, $data) {
- trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING);
-
- }
-
- /**
- * There should be no need to override these functions
- */
- function accepts($mode) {
-
- if (!$this->allowedModesSetup) {
- global $PARSER_MODES;
-
- $allowedModeTypes = $this->getAllowedTypes();
- foreach($allowedModeTypes as $mt) {
- $this->allowedModes = array_merge($this->allowedModes, $PARSER_MODES[$mt]);
- }
-
- $idx = array_search(substr(get_class($this), 7), (array) $this->allowedModes);
- if ($idx !== false) {
- unset($this->allowedModes[$idx]);
- }
- $this->allowedModesSetup = true;
- }
-
- return parent::accepts($mode);
- }
-
- // plugin introspection methods
- // extract from class name, format = <plugin type>_plugin_<name>[_<component name>]
- function getPluginType() { list($t) = explode('_', get_class($this), 2); return $t; }
- function getPluginName() { list($t, $p, $n) = explode('_', get_class($this), 4); return $n; }
- function getPluginComponent() { list($t, $p, $n, $c) = explode('_', get_class($this), 4); return (isset($c)?$c:''); }
-
- // localisation methods
- /**
- * getLang($id)
- *
- * use this function to access plugin language strings
- * to try to minimise unnecessary loading of the strings when the plugin doesn't require them
- * e.g. when info plugin is querying plugins for information about themselves.
- *
- * @param $id id of the string to be retrieved
- * @return string string in appropriate language or english if not available
- */
- function getLang($id) {
- if (!$this->localised) $this->setupLocale();
-
- return (isset($this->lang[$id]) ? $this->lang[$id] : '');
- }
-
- /**
- * locale_xhtml($id)
- *
- * retrieve a language dependent wiki page and pass to xhtml renderer for display
- * plugin equivalent of p_locale_xhtml()
- *
- * @param $id id of language dependent wiki page
- * @return string parsed contents of the wiki page in xhtml format
- */
- function locale_xhtml($id) {
- return p_cached_output($this->localFN($id));
- }
-
- /**
- * localFN($id)
- * prepends appropriate path for a language dependent filename
- * plugin equivalent of localFN()
- */
- function localFN($id) {
- global $conf;
- $plugin = $this->getPluginName();
- $file = DOKU_PLUGIN.$plugin.'/lang/'.$conf['lang'].'/'.$id.'.txt';
- if(!@file_exists($file)){
- //fall back to english
- $file = DOKU_PLUGIN.$plugin.'/lang/en/'.$id.'.txt';
- }
- return $file;
- }
-
- /**
- * setupLocale()
- * reads all the plugins language dependent strings into $this->lang
- * this function is automatically called by getLang()
- */
- function setupLocale() {
- if ($this->localised) return;
-
- global $conf; // definitely don't invoke "global $lang"
- $path = DOKU_PLUGIN.$this->getPluginName().'/lang/';
-
- // don't include once, in case several plugin components require the same language file
- @include($path.'en/lang.php');
- if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
-
- $this->lang = $lang;
- $this->localised = true;
- }
-
- // configuration methods
- /**
- * getConf($setting)
- *
- * use this function to access plugin configuration variables
- */
- function getConf($setting){
-
- if (!$this->configloaded){ $this->loadConfig(); }
-
- return $this->conf[$setting];
- }
-
- /**
- * loadConfig()
- * merges the plugin's default settings with any local settings
- * this function is automatically called through getConf()
- */
- function loadConfig(){
- global $conf;
-
- $defaults = $this->readDefaultSettings();
- $plugin = $this->getPluginName();
-
- foreach ($defaults as $key => $value) {
- if (isset($conf['plugin'][$plugin][$key])) continue;
- $conf['plugin'][$plugin][$key] = $value;
- }
-
- $this->configloaded = true;
- $this->conf =& $conf['plugin'][$plugin];
- }
-
- /**
- * read the plugin's default configuration settings from conf/default.php
- * this function is automatically called through getConf()
- *
- * @return array setting => value
- */
- function readDefaultSettings() {
-
- $path = DOKU_PLUGIN.$this->getPluginName().'/conf/';
- $conf = array();
-
- if (@file_exists($path.'default.php')) {
- include($path.'default.php');
- }
-
- return $conf;
- }
-
-}
-//Setup VIM: ex: et ts=4 enc=utf-8 :
+<?php
+/**
+ * Syntax Plugin Prototype
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi at splitbrain.org>
+ */
+// must be run within Dokuwiki
+if(!defined('DOKU_INC')) die();
+
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_INC.'inc/parser/parser.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode {
+
+ var $allowedModesSetup = false;
+ var $localised = false; // set to true by setupLocale() after loading language dependent strings
+ var $lang = array(); // array to hold language dependent strings, best accessed via ->getLang()
+ var $configloaded = false; // set to true by loadConfig() after loading plugin configuration variables
+ var $conf = array(); // array to hold plugin settings, best accessed via ->getConf()
+
+ /**
+ * General Info
+ *
+ * Needs to return a associative array with the following values:
+ *
+ * author - Author of the plugin
+ * email - Email address to contact the author
+ * date - Last modified date of the plugin in YYYY-MM-DD format
+ * name - Name of the plugin
+ * desc - Short description of the plugin (Text only)
+ * url - Website with more information on the plugin (eg. syntax description)
+ */
+ function getInfo(){
+ trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+ /**
+ * Syntax Type
+ *
+ * Needs to return one of the mode types defined in $PARSER_MODES in parser.php
+ */
+ function getType(){
+ trigger_error('getType() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+ /**
+ * Allowed Mode Types
+ *
+ * Defines the mode types for other dokuwiki markup that maybe nested within the
+ * plugin's own markup. Needs to return an array of one or more of the mode types
+ * defined in $PARSER_MODES in parser.php
+ */
+ function getAllowedTypes() {
+ return array();
+ }
+
+ /**
+ * Paragraph Type
+ *
+ * Defines how this syntax is handled regarding paragraphs. This is important
+ * for correct XHTML nesting. Should return one of the following:
+ *
+ * 'normal' - The plugin can be used inside paragraphs
+ * 'block' - Open paragraphs need to be closed before plugin output
+ * 'stack' - Special case. Plugin wraps other paragraphs.
+ *
+ * @see Doku_Handler_Block
+ */
+ function getPType(){
+ return 'normal';
+ }
+
+ /**
+ * Handler to prepare matched data for the rendering process
+ *
+ * This function can only pass data to render() via its return value - render()
+ * may be not be run during the object's current life.
+ *
+ * Usually you should only need the $match param.
+ *
+ * @param $match string The text matched by the patterns
+ * @param $state int The lexer state for the match
+ * @param $pos int The character position of the matched text
+ * @param $handler ref Reference to the Doku_Handler object
+ * @return array Return an array with all data you want to use in render
+ */
+ function handle($match, $state, $pos, &$handler){
+ trigger_error('handle() not implemented in '.get_class($this), E_USER_WARNING);
+ }
+
+ /**
+ * Handles the actual output creation.
+ *
+ * The function must not assume any other of the classes methods have been run
+ * during the object's current life. The only reliable data it receives are its
+ * parameters.
+ *
+ * The function should always check for the given output format and return false
+ * when a format isn't supported.
+ *
+ * $renderer contains a reference to the renderer object which is
+ * currently handling the rendering. You need to use it for writing
+ * the output. How this is done depends on the renderer used (specified
+ * by $format
+ *
+ * The contents of the $data array depends on what the handler() function above
+ * created
+ *
+ * @param $format string output format being rendered
+ * @param $renderer ref reference to the current renderer object
+ * @param $data array data created by handler()
+ * @return boolean rendered correctly?
+ */
+ function render($format, &$renderer, $data) {
+ trigger_error('render() not implemented in '.get_class($this), E_USER_WARNING);
+
+ }
+
+ /**
+ * There should be no need to override these functions
+ */
+ function accepts($mode) {
+
+ if (!$this->allowedModesSetup) {
+ global $PARSER_MODES;
+
+ $allowedModeTypes = $this->getAllowedTypes();
+ foreach($allowedModeTypes as $mt) {
+ $this->allowedModes = array_merge($this->allowedModes, $PARSER_MODES[$mt]);
+ }
+
+ $idx = array_search(substr(get_class($this), 7), (array) $this->allowedModes);
+ if ($idx !== false) {
+ unset($this->allowedModes[$idx]);
+ }
+ $this->allowedModesSetup = true;
+ }
+
+ return parent::accepts($mode);
+ }
+
+ // plugin introspection methods
+ // extract from class name, format = <plugin type>_plugin_<name>[_<component name>]
+ function getPluginType() { list($t) = explode('_', get_class($this), 2); return $t; }
+ function getPluginName() { list($t, $p, $n) = explode('_', get_class($this), 4); return $n; }
+ function getPluginComponent() { list($t, $p, $n, $c) = explode('_', get_class($this), 4); return (isset($c)?$c:''); }
+
+ // localisation methods
+ /**
+ * getLang($id)
+ *
+ * use this function to access plugin language strings
+ * to try to minimise unnecessary loading of the strings when the plugin doesn't require them
+ * e.g. when info plugin is querying plugins for information about themselves.
+ *
+ * @param $id id of the string to be retrieved
+ * @return string string in appropriate language or english if not available
+ */
+ function getLang($id) {
+ if (!$this->localised) $this->setupLocale();
+
+ return (isset($this->lang[$id]) ? $this->lang[$id] : '');
+ }
+
+ /**
+ * locale_xhtml($id)
+ *
+ * retrieve a language dependent wiki page and pass to xhtml renderer for display
+ * plugin equivalent of p_locale_xhtml()
+ *
+ * @param $id id of language dependent wiki page
+ * @return string parsed contents of the wiki page in xhtml format
+ */
+ function locale_xhtml($id) {
+ return p_cached_output($this->localFN($id));
+ }
+
+ /**
+ * localFN($id)
+ * prepends appropriate path for a language dependent filename
+ * plugin equivalent of localFN()
+ */
+ function localFN($id) {
+ global $conf;
+ $plugin = $this->getPluginName();
+ $file = DOKU_PLUGIN.$plugin.'/lang/'.$conf['lang'].'/'.$id.'.txt';
+ if(!@file_exists($file)){
+ //fall back to english
+ $file = DOKU_PLUGIN.$plugin.'/lang/en/'.$id.'.txt';
+ }
+ return $file;
+ }
+
+ /**
+ * setupLocale()
+ * reads all the plugins language dependent strings into $this->lang
+ * this function is automatically called by getLang()
+ */
+ function setupLocale() {
+ if ($this->localised) return;
+
+ global $conf; // definitely don't invoke "global $lang"
+ $path = DOKU_PLUGIN.$this->getPluginName().'/lang/';
+
+ // don't include once, in case several plugin components require the same language file
+ @include($path.'en/lang.php');
+ if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php');
+
+ $this->lang = $lang;
+ $this->localised = true;
+ }
+
+ // configuration methods
+ /**
+ * getConf($setting)
+ *
+ * use this function to access plugin configuration variables
+ */
+ function getConf($setting){
+
+ if (!$this->configloaded){ $this->loadConfig(); }
+
+ return $this->conf[$setting];
+ }
+
+ /**
+ * loadConfig()
+ * merges the plugin's default settings with any local settings
+ * this function is automatically called through getConf()
+ */
+ function loadConfig(){
+ global $conf;
+
+ $defaults = $this->readDefaultSettings();
+ $plugin = $this->getPluginName();
+
+ foreach ($defaults as $key => $value) {
+ if (isset($conf['plugin'][$plugin][$key])) continue;
+ $conf['plugin'][$plugin][$key] = $value;
+ }
+
+ $this->configloaded = true;
+ $this->conf =& $conf['plugin'][$plugin];
+ }
+
+ /**
+ * read the plugin's default configuration settings from conf/default.php
+ * this function is automatically called through getConf()
+ *
+ * @return array setting => value
+ */
+ function readDefaultSettings() {
+
+ $path = DOKU_PLUGIN.$this->getPluginName().'/conf/';
+ $conf = array();
+
+ if (@file_exists($path.'default.php')) {
+ include($path.'default.php');
+ }
+
+ return $conf;
+ }
+
+}
+//Setup VIM: ex: et ts=4 enc=utf-8 :
Modified: site/trunk/www-root/wiki/lib/tpl/spring/main.php
===================================================================
--- site/trunk/www-root/wiki/lib/tpl/spring/main.php 2008-05-17 22:50:22 UTC (rev 5903)
+++ site/trunk/www-root/wiki/lib/tpl/spring/main.php 2008-05-17 23:27:47 UTC (rev 5904)
@@ -29,7 +29,7 @@
<?php tpl_metaheaders()?>
- <link rel="shortcut icon" href="<?php echo DOKU_TPL?>images/favicon.ico" />
+ <link rel="shortcut icon" href="/tpl/favicon.ico" />
<link rel="stylesheet" media="all" type="text/css" href="/tpl/sitesheet.css" />
<?php /*old includehook*/ @include(dirname(__FILE__).'/meta.html')?>
</head>
More information about the Taspring-linux-commit
mailing list